hppa: Fix pr110279-1.c on hppa
[official-gcc.git] / gcc / ChangeLog
blob3cb2d989a4dd461bfd0bbca3148e37e4b0543a3d
1 2023-12-23  Xi Ruoyao  <xry111@xry111.site>
3         * config/loongarch/loongarch.md (rotrsi3_extend): New
4         define_insn.
6 2023-12-23  Xi Ruoyao  <xry111@xry111.site>
8         * config/loongarch/loongarch-tune.h
9         (loongarch_rtx_cost_data::movcf2gr): New field.
10         (loongarch_rtx_cost_data::movcf2gr_): New method.
11         (loongarch_rtx_cost_data::use_movcf2gr): New method.
12         * config/loongarch/loongarch-def.cc
13         (loongarch_rtx_cost_data::loongarch_rtx_cost_data): Set movcf2gr
14         to COSTS_N_INSNS (7) and movgr2cf to COSTS_N_INSNS (15), based
15         on timing on LA464.
16         (loongarch_cpu_rtx_cost_data): Set movcf2gr and movgr2cf to
17         COSTS_N_INSNS (1) for LA664.
18         (loongarch_rtx_cost_optimize_size): Set movcf2gr and movgr2cf to
19         COSTS_N_INSNS (1) + 1.
20         * config/loongarch/predicates.md (loongarch_fcmp_operator): New
21         predicate.
22         * config/loongarch/loongarch.md (movfcc): Change to
23         define_expand.
24         (movfcc_internal): New define_insn.
25         (fcc_to_<X:mode>): New define_insn.
26         (cstore<ANYF:mode>4): New define_expand.
27         * config/loongarch/loongarch.cc
28         (loongarch_hard_regno_mode_ok_uncached): Allow FCCmode in GPRs
29         and GPRs.
30         (loongarch_secondary_reload): Reload FCCmode via FPR and/or GPR.
31         (loongarch_emit_float_compare): Call gen_reg_rtx instead of
32         loongarch_allocate_fcc.
33         (loongarch_allocate_fcc): Remove.
34         (loongarch_move_to_gpr_cost): Handle FCC_REGS -> GR_REGS.
35         (loongarch_move_from_gpr_cost): Handle GR_REGS -> FCC_REGS.
36         (loongarch_register_move_cost): Handle FCC_REGS -> FCC_REGS,
37         FCC_REGS -> FP_REGS, and FP_REGS -> FCC_REGS.
39 2023-12-23  YunQiang Su  <syq@gcc.gnu.org>
41         * config/mips/driver-native.cc (host_detect_local_cpu):
42         don't add nan2008 option for -mtune=native.
44 2023-12-23  YunQiang Su  <syq@gcc.gnu.org>
46         PR target/112759
47         * config/mips/driver-native.cc (host_detect_local_cpu):
48         Put the ret to the end of args of reconcat.
50 2023-12-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
52         PR target/113112
53         * config/riscv/riscv-vector-costs.cc (max_number_of_live_regs): Refine dump information.
54         (preferred_new_lmul_p): Make PHI initial value into live regs calculation.
56 2023-12-22  Sandra Loosemore  <sandra@codesourcery.com>
58         * omp-general.cc (omp_context_name_list_prop): Remove static qualifer.
59         * omp-general.h (omp_context_name_list_prop): Declare.
60         * tree-cfg.cc (dump_function_to_file): Intercept
61         "omp declare variant base" attribute for special handling.
62         * tree-pretty-print.cc: Include omp-general.h.
63         (dump_omp_context_selector): New.
64         (print_omp_context_selector): New.
65         * tree-pretty-print.h (print_omp_context_selector): Declare.
67 2023-12-22  Jakub Jelinek  <jakub@redhat.com>
69         PR rtl-optimization/112758
70         * combine.cc (make_compopund_operation_int): Optimize AND of a SUBREG
71         based on nonzero_bits of SUBREG_REG and constant mask on
72         WORD_REGISTER_OPERATIONS targets only if it is a zero extending
73         MEM load.
75 2023-12-22  Jakub Jelinek  <jakub@redhat.com>
77         PR tree-optimization/112941
78         * symtab-thunks.cc (expand_thunk): Check aggregate_value_p regardless
79         of whether is_gimple_reg_type (restype) or not.
81 2023-12-22  Jakub Jelinek  <jakub@redhat.com>
83         PR tree-optimization/113102
84         * gimple-lower-bitint.cc (gimple_lower_bitint): Handle unreleased
85         large/huge _BitInt SSA_NAMEs.
87 2023-12-22  Jakub Jelinek  <jakub@redhat.com>
89         PR tree-optimization/113102
90         * gimple-lower-bitint.cc (bitint_large_huge::handle_cast): Only
91         use m_data[save_data_cnt] if it is non-NULL.
93 2023-12-22  Christophe Lyon  <christophe.lyon@linaro.org>
95         * Makefile.in: Allow overriding EXEPCT.
97 2023-12-22  chenxiaolong  <chenxiaolong@loongson.cn>
99         * doc/extend.texi:Add modifiers to the vector of asm in the doc.
100         * doc/md.texi:Refine the description of the modifier 'f' in the doc.
102 2023-12-21  Andrew Pinski  <quic_apinski@quicinc.com>
104         PR middle-end/112951
105         * doc/md.texi (cond_copysign): Document.
106         (cond_len_copysign): Likewise.
107         * optabs.def: Reorder cond_copysign to be before
108         cond_fmin. Likewise for cond_len_copysign.
110 2023-12-21  Andre Vieira (lists)  <andre.simoesdiasvieira@arm.com>
112         PR middle-end/113040
113         * omp-simd-clone.cc (simd_clone_adjust_argument_types): Add multiple
114         vector arguments where simdlen is larger than veclen.
116 2023-12-21  Uros Bizjak  <ubizjak@gmail.com>
118         PR target/113044
119         * config/i386/i386.md (*ashlqi_ext<mode>_1): Move from the
120         high register of the input operand.
121         (*<insn>qi_ext<mode>_1): Ditto.
123 2023-12-21  Vladimir N. Makarov  <vmakarov@redhat.com>
125         Revert:
126         2023-12-18  Vladimir N. Makarov  <vmakarov@redhat.com>
128         PR rtl-optimization/112918
129         * lra-constraints.cc (SMALL_REGISTER_CLASS_P): Move before in_class_p.
130         (in_class_p): Restrict condition for narrowing class in case of
131         allow_all_reload_class_changes_p.
132         (process_alt_operands): Pass true for
133         allow_all_reload_class_changes_p in calls of in_class_p.
134         (curr_insn_transform): Ditto for reg operand win.
136 2023-12-21  Julian Brown  <julian@codesourcery.com>
138         * gimplify.cc (omp_segregate_mapping_groups): Handle "present" groups.
139         (gimplify_scan_omp_clauses): Use mapping group functionality to
140         iterate through mapping nodes.  Remove most gimplification of
141         OMP_CLAUSE_MAP nodes from here, but still populate ctx->variables
142         splay tree.
143         (gimplify_adjust_omp_clauses): Move most gimplification of
144         OMP_CLAUSE_MAP nodes here.
146 2023-12-21  Alex Coplan  <alex.coplan@arm.com>
148         PR target/113093
149         * config/aarch64/aarch64-ldp-fusion.cc (latest_hazard_before):
150         If the insn is throwing, record the previous insn as a hazard to
151         prevent moving it from the end of the BB.
153 2023-12-21  Jakub Jelinek  <jakub@redhat.com>
155         * gimple-fold.cc (maybe_fold_comparisons_from_match_pd):
156         Use unsigned char buffers for lhs1 and lhs2 instead of allocating
157         them through XALLOCA.
158         * collect2.cc (maybe_run_lto_and_relink): Swap xcalloc arguments.
160 2023-12-21  Richard Sandiford  <richard.sandiford@arm.com>
162         PR target/113094
163         * config/aarch64/aarch64-early-ra.cc (apply_allocation): Stub
164         out instructions that are going to be deleted before iterating
165         over the rest.
167 2023-12-21  Richard Sandiford  <richard.sandiford@arm.com>
169         PR target/112948
170         * config/aarch64/aarch64-early-ra.cc (find_strided_accesses): Fix
171         cut-&-pasto.
173 2023-12-21  Jakub Jelinek  <jakub@redhat.com>
175         PR tree-optimization/112941
176         * gimple-lower-bitint.cc (gimple_lower_bitint): Disallow merging
177         a cast with multiplication, division or conversion to floating point
178         if rhs1 of the cast is result of another single use cast in the same
179         bb.
181 2023-12-21  chenxiaolong  <chenxiaolong@loongson.cn>
183         * doc/extend.texi:According to the documents submitted earlier,
184         Two problems with function return types and using the actual types
185         of parameters instead of variable names were found and fixed.
187 2023-12-21  Jiajie Chen  <c@jia.je>
189         * doc/extend.texi(__lsx_vabsd_di): remove extra `i' in name.
190         (__lsx_vfrintrm_d, __lsx_vfrintrm_s, __lsx_vfrintrne_d,
191         __lsx_vfrintrne_s, __lsx_vfrintrp_d, __lsx_vfrintrp_s, __lsx_vfrintrz_d,
192         __lsx_vfrintrz_s): fix return types.
193         (__lsx_vld, __lsx_vldi, __lsx_vldrepl_b, __lsx_vldrepl_d,
194         __lsx_vldrepl_h, __lsx_vldrepl_w, __lsx_vmaxi_b, __lsx_vmaxi_d,
195         __lsx_vmaxi_h, __lsx_vmaxi_w, __lsx_vmini_b, __lsx_vmini_d,
196         __lsx_vmini_h, __lsx_vmini_w, __lsx_vsrani_d_q, __lsx_vsrarni_d_q,
197         __lsx_vsrlni_d_q, __lsx_vsrlrni_d_q, __lsx_vssrani_d_q,
198         __lsx_vssrarni_d_q, __lsx_vssrarni_du_q, __lsx_vssrlni_d_q,
199         __lsx_vssrlrni_du_q, __lsx_vst, __lsx_vstx, __lsx_vssrani_du_q,
200         __lsx_vssrlni_du_q, __lsx_vssrlrni_d_q): add missing semicolon.
201         (__lsx_vpickve2gr_bu, __lsx_vpickve2gr_hu): fix typo in return
202         type.
203         (__lsx_vstelm_b, __lsx_vstelm_d, __lsx_vstelm_h,
204         __lsx_vstelm_w): use imm type for the last argument.
205         (__lsx_vsigncov_b, __lsx_vsigncov_h, __lsx_vsigncov_w,
206         __lsx_vsigncov_d): remove duplicate definitions.
208 2023-12-21  Jiahao Xu  <xujiahao@loongson.cn>
210         * config/loongarch/lasx.md: Use zero expansion instruction.
211         * config/loongarch/lsx.md: Ditto.
213 2023-12-21  Alexandre Oliva  <oliva@adacore.com>
215         PR target/112778
216         * builtins.cc (try_store_by_multiple_pieces): Drop obsolete
217         comment.
219 2023-12-21  Kewen Lin  <linkw@linux.ibm.com>
221         PR rtl-optimization/112995
222         * sel-sched.cc (try_replace_dest_reg): Check the validity of the
223         replaced insn before actually replacing dest in expr.
225 2023-12-21  Kewen Lin  <linkw@linux.ibm.com>
227         * dbgcnt.def (sched_block): Remove.
228         * sched-rgn.cc (schedule_region): Remove the support of debug count
229         sched_block.
231 2023-12-21  Jason Merrill  <jason@redhat.com>
233         PR c++/37722
234         * doc/extend.texi: Document that computed goto does not
235         call destructors.
237 2023-12-21  Jason Merrill  <jason@redhat.com>
239         PR c++/106213
240         * opts-common.cc (control_warning_option): Call
241         handle_generated_option for all cl_var_types.
243 2023-12-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
245         PR target/113087
246         * config/riscv/riscv-v.cc (expand_select_vl): Optimize SELECT_VL.
248 2023-12-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
250         PR target/113087
251         * config/riscv/riscv-vsetvl.cc: Disallow fusion when VL modification pollutes non AVL use.
253 2023-12-20  Rimvydas Jasinskas  <rimvydas.jas@gmail.com>
255         * doc/invoke.texi: Document the new file extensions
257 2023-12-20  Richard Sandiford  <richard.sandiford@arm.com>
259         PR rtl-optimization/111702
260         * cse.cc (set::mode): Move earlier.
261         (set::src_in_memory, set::src_volatile): Convert to bitfields.
262         (set::is_fake_set): New member variable.
263         (add_to_set): Add an is_fake_set parameter.
264         (find_sets_in_insn): Update calls accordingly.
265         (cse_insn): Do not apply REG_EQUAL notes to fake sets.  Do not
266         try to optimize them either, or validate changes to them.
268 2023-12-20  Kuan-Lin Chen  <rufus@andestech.com>
270         * config/riscv/predicates.md (move_operand): Reject symbolic operands
271         with a type SYMBOL_FORCE_TO_MEM.
272         (call_insn_operand): Support for CM_Large.
273         (pcrel_symbol_operand): New.
274         * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins): Add builtin_define
275         "__riscv_cmodel_large".
276         * config/riscv/riscv-opts.h (riscv_code_model): Add CM_LARGE.
277         * config/riscv/riscv-protos.h (riscv_symbol_type): Add
278         SYMBOL_FORCE_TO_MEM.
279         * config/riscv/riscv.cc (riscv_classify_symbol) Support CM_LARGE model.
280         (riscv_symbol_insns) Add SYMBOL_FORCE_TO_MEM.
281         (riscv_cannot_force_const_mem): Ditto.
282         (riscv_split_symbol): Ditto.
283         (riscv_force_address): Check pseudo reg available before force_reg.
284         (riscv_size_ok_for_small_data_p): Disable in CM_LARGE model.
285         (riscv_can_use_per_function_literal_pools_p): New.
286         (riscv_elf_select_rtx_section): Handle per-function literal pools.
287         (riscv_output_mi_thunk): Add riscv_in_thunk_func.
288         (riscv_option_override): Support CM_LARGE model.
289         (riscv_function_ok_for_sibcall): Disable sibcalls in CM_LARGE model.
290         (riscv_in_thunk_func): New static.
291         * config/riscv/riscv.md (unspec): Define UNSPEC_FORCE_FOR_MEM.
292         (*large_load_address): New.
293         * config/riscv/riscv.opt (code_model): New.
295 2023-12-20  Wang Pengcheng  <wangpengcheng.pp@bytedance.com>
297         * config/riscv/riscv.cc (riscv_macro_fusion_pair_p): Fix condition.
299 2023-12-20  Andre Vieira  <andre.simoesdiasvieira@arm.com>
301         PR target/112787
302         * tree-vect-generic.cc (type_for_widest_vector_mode): Change function to
303         use original vector type and check widest vector mode has at most the
304         same number of elements.
305         (get_compute_type): Pass original vector type rather than the element
306         type to type_for_widest_vector_mode and remove now obsolete check for
307         the number of elements.
309 2023-12-20  Siddhesh Poyarekar  <siddhesh@gotplt.org>
311         * tree-object-size.cc (object_size_info): Remove UNKNOWNS.
312         Drop all references to it.
313         (object_sizes_set): Move unknowns propagation code to...
314         (gimplify_size_expressions): ... here.  Also free reexamine
315         bitmap.
316         (propagate_unknowns): New parameter UNKNOWNS.  Update callers.
318 2023-12-20  Thomas Schwinge  <thomas@codesourcery.com>
320         * config/gcn/gcn.h (LIBSTDCXX): Define to "gcc".
322 2023-12-20  Richard Biener  <rguenther@suse.de>
324         * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Also handle
325         CTOR and VIEW_CONVERT up to the load when performing chain DCE.
327 2023-12-20  Xi Ruoyao  <xry111@xry111.site>
329         * config/loongarch/loongarch.cc
330         (loongarch_expand_vector_init_same): Remove "temp2" and reuse
331         "temp" instead.
332         (loongarch_expand_vector_init): Use gcc_unreachable () instead
333         of gcc_assert (0), and fix the comment for it.
335 2023-12-20  Xi Ruoyao  <xry111@xry111.site>
337         PR target/113033
338         * config/loongarch/loongarch.cc
339         (loongarch_expand_vector_init_same): Replace gen_reg_rtx +
340         emit_move_insn with force_reg.
341         (loongarch_expand_vector_init): Likewise.
343 2023-12-20  Xi Ruoyao  <xry111@xry111.site>
345         PR target/113034
346         * config/loongarch/lasx.md (UNSPEC_LASX_XVFCMP_*): Remove.
347         (lasx_xvfcmp_caf_<flasxfmt>): Remove.
348         (lasx_xvfcmp_cune_<FLASX:flasxfmt>): Remove.
349         (FSC256_UNS): Remove.
350         (fsc256): Remove.
351         (lasx_xvfcmp_<vfcond:fcc>_<FLASX:flasxfmt>): Remove.
352         (lasx_xvfcmp_<fsc256>_<FLASX:flasxfmt>): Remove.
353         * config/loongarch/lsx.md (UNSPEC_LSX_XVFCMP_*): Remove.
354         (lsx_vfcmp_caf_<flsxfmt>): Remove.
355         (lsx_vfcmp_cune_<FLSX:flsxfmt>): Remove.
356         (vfcond): Remove.
357         (fcc): Remove.
358         (FSC_UNS): Remove.
359         (fsc): Remove.
360         (lsx_vfcmp_<vfcond:fcc>_<FLSX:flsxfmt>): Remove.
361         (lsx_vfcmp_<fsc>_<FLSX:flsxfmt>): Remove.
362         * config/loongarch/simd.md
363         (fcond_simd): New define_code_iterator.
364         (<simd_isa>_<x>vfcmp_<fcond:fcond_simd>_<simdfmt>):
365         New define_insn.
366         (fcond_simd_rev): New define_code_iterator.
367         (fcond_rev_asm): New define_code_attr.
368         (<simd_isa>_<x>vfcmp_<fcond:fcond_simd_rev>_<simdfmt>):
369         New define_insn.
370         (fcond_inv): New define_code_iterator.
371         (fcond_inv_rev): New define_code_iterator.
372         (fcond_inv_rev_asm): New define_code_attr.
373         (<simd_isa>_<x>vfcmp_<fcond_inv>_<simdfmt>): New define_insn.
374         (<simd_isa>_<x>vfcmp_<fcond_inv:fcond_inv_rev>_<simdfmt>):
375         New define_insn.
376         (UNSPEC_SIMD_FCMP_CAF, UNSPEC_SIMD_FCMP_SAF,
377         UNSPEC_SIMD_FCMP_SEQ, UNSPEC_SIMD_FCMP_SUN,
378         UNSPEC_SIMD_FCMP_SUEQ, UNSPEC_SIMD_FCMP_CNE,
379         UNSPEC_SIMD_FCMP_SOR, UNSPEC_SIMD_FCMP_SUNE): New unspecs.
380         (SIMD_FCMP): New define_int_iterator.
381         (fcond_unspec): New define_int_attr.
382         (<simd_isa>_<x>vfcmp_<fcond_unspec>_<simdfmt>): New define_insn.
383         * config/loongarch/loongarch.cc (loongarch_expand_lsx_cmp):
384         Remove unneeded special cases.
386 2023-12-20  demin.han  <demin.han@starfivetech.com>
388         * config/riscv/riscv-vector-costs.cc (max_number_of_live_regs): Fix
389         max live vregs calc
390         (preferred_new_lmul_p): Ditto
392 2023-12-20  Jakub Jelinek  <jakub@redhat.com>
394         PR target/112962
395         * config/i386/i386-builtins.cc (ix86_builtins): Increase by one
396         element.
397         (def_builtin): If not -fnon-call-exceptions, set TREE_NOTHROW on
398         the builtin FUNCTION_DECL.  Add leaf attribute to DECL_ATTRIBUTES.
399         (ix86_add_new_builtins): Likewise.
401 2023-12-20  Jakub Jelinek  <jakub@redhat.com>
403         PR tree-optimization/112941
404         * gimple-lower-bitint.cc (bitint_large_huge::handle_cast): If
405         save_cast_conditional, instead of adding assignment of t4 to
406         m_data[save_data_cnt + 1] before m_gsi, add phi nodes such that
407         t4 propagates to m_bb loop.  For constant idx, use
408         m_data[save_data_cnt] rather than m_data[save_data_cnt + 1] if inside
409         of the m_bb loop.
410         (bitint_large_huge::lower_mergeable_stmt): Clear m_bb when no longer
411         expanding inside of that loop.
412         (bitint_large_huge::lower_comparison_stmt): Likewise.
413         (bitint_large_huge::lower_addsub_overflow): Likewise.
414         (bitint_large_huge::lower_mul_overflow): Likewise.
415         (bitint_large_huge::lower_bit_query): Likewise.
417 2023-12-20  Jakub Jelinek  <jakub@redhat.com>
419         * doc/invoke.texi (-Walloc-size): Add to the list of
420         warning options, remove unnecessary line-break.
421         (-Wcalloc-transposed-args): Document new warning.
423 2023-12-20  Alex Coplan  <alex.coplan@arm.com>
425         PR target/113062
426         * config/aarch64/aarch64-ldp-fusion.cc
427         (ldp_bb_info::track_access): Punt on accesses with invalid
428         register operands, move definition of mem_size closer to its
429         first use.
431 2023-12-20  Pan Li  <pan2.li@intel.com>
433         * config/riscv/riscv-v.cc (rvv_builder::npatterns_vid_diff_repeated_p):
434         New function to predicate the diff to vid is repeated or not.
435         (expand_const_vector): Add restriction
436         for the vid-diff code gen and implement general one.
438 2023-12-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
440         * config/riscv/riscv.cc (riscv_legitimize_move): Fix ICE.
442 2023-12-20  Alexandre Oliva  <oliva@adacore.com>
444         PR middle-end/112917
445         * builtins.cc (expand_bultin_stack_address): Add
446         STACK_POINTER_OFFSET.
447         * doc/extend.texi (__builtin_stack_address): Adjust.
449 2023-12-20  Alexandre Oliva  <oliva@adacore.com>
451         PR rtl-optimization/113002
452         * cfgrtl.cc (commit_one_edge_insertion): Tolerate jumps in the
453         inserted sequence during expand.
455 2023-12-20  Alexandre Oliva  <oliva@adacore.com>
457         * builtins.cc (delta_type): New template class.
458         (set_apply_args_size, get_apply_args_size): Replace with...
459         (saved_apply_args_size): ... this.
460         (set_apply_result_size, get_apply_result_size): Replace with...
461         (saved_apply_result_size): ... this.
462         (apply_args_size, apply_result_size): Adjust.
464 2023-12-20  Jeff Law  <jlaw@ventanamicro.com>
466         * config/mcore/mcore.h (CC1_SPEC): Do not set -funsigned-bitfields.
468 2023-12-20  Haochen Jiang  <haochen.jiang@intel.com>
470         * config/i386/avx512bwintrin.h: Allow 64 bit mask intrin usage
471         for -mno-evex512.
472         * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA2_EVEX512
473         for 64 bit mask builtins.
474         * config/i386/i386.cc (ix86_hard_regno_mode_ok): Allow 64 bit
475         mask register for -mno-evex512.
476         * config/i386/i386.md (SWI1248_AVX512BWDQ_64): Remove
477         TARGET_EVEX512.
478         (*zero_extendsidi2): Change isa attribute to avx512bw.
479         (kmov_isa): Ditto.
480         (*anddi_1): Ditto.
481         (*andn<mode>_1): Remove TARGET_EVEX512.
482         (*one_cmplsi2_1_zext): Change isa attribute to avx512bw.
483         (*ashl<mode>3_1): Ditto.
484         (*lshr<mode>3_1): Ditto.
485         * config/i386/sse.md (SWI1248_AVX512BWDQ): Remove TARGET_EVEX512.
486         (SWI1248_AVX512BW): Ditto.
487         (SWI1248_AVX512BWDQ2): Ditto.
488         (*knotsi_1_zext): Ditto.
489         (kunpckdi): Ditto.
490         (SWI24_MASK): Removed.
491         (vec_pack_trunc_<mode>): Change iterator from SWI24_MASK to SWI24.
492         (vec_unpacks_lo_di): Remove TARGET_EVEX512.
493         (SWI48x_MASK): Removed.
494         (vec_unpacks_hi_<mode>): Change iterator from SWI48x_MASK to SWI48x.
496 2023-12-20  Siddhesh Poyarekar  <siddhesh@gotplt.org>
498         PR tree-optimization/113012
499         * tree-object-size.cc (compute_builtin_object_size): Expand
500         comment for dynamic object sizes.
501         (collect_object_sizes_for): Always set COMPUTED bitmap for
502         dynamic object sizes.
504 2023-12-20  Alexandre Oliva  <oliva@adacore.com>
506         * ipa-strub.cc (gsi_insert_finally_seq_after_call): Likewise.
507         (pass_ipa_strub::adjust_at_calls_call): Likewise.
509 2023-12-20  Alexandre Oliva  <oliva@adacore.com>
511         * gcc.cc (process_command): Use LD_PIE_SPEC only if defined.
513 2023-12-19  Marek Polacek  <polacek@redhat.com>
515         PR tree-optimization/113069
516         * gimple-ssa-sccopy.cc (scc_discovery): Remove unused member.
518 2023-12-19  Sandra Loosemore  <sandra@codesourcery.com>
520         * omp-general.cc (vendor_properties): Add "hpe".
521         (atomic_default_mem_order_properties): Add "acquire" and "release".
522         (omp_context_selector_matches): Handle "acquire" and "release".
524 2023-12-19  Sandra Loosemore  <sandra@codesourcery.com>
526         * omp-selectors.h: New file.
527         * omp-general.h: Include omp-selectors.h.
528         (OMP_TSS_CODE, OMP_TSS_NAME): New.
529         (OMP_TS_CODE, OMP_TS_NAME): New.
530         (make_trait_set_selector, make_trait_selector): Adjust declarations.
531         (omp_construct_traits_to_codes): Likewise.
532         (omp_context_selector_set_compare): Likewise.
533         (omp_get_context_selector): Likewise.
534         (omp_get_context_selector_list): New.
535         * omp-general.cc (omp_construct_traits_to_codes): Pass length in
536         as argument instead of returning it.  Make it table-driven.
537         (omp_tss_map): New.
538         (kind_properties, vendor_properties, extension_properties): New.
539         (atomic_default_mem_order_properties): New.
540         (omp_ts_map): New.
541         (omp_check_context_selector): Simplify lookup and dispatch logic.
542         (omp_mark_declare_variant): Ignore variants with unknown construct
543         selectors.  Adjust for new representation.
544         (make_trait_set_selector, make_trait_selector): Adjust for new
545         representations.
546         (omp_context_selector_matches): Simplify dispatch logic.  Avoid
547         fixed-sized buffers and adjust call to omp_construct_traits_to_codes.
548         (omp_context_selector_props_compare): Adjust for new representations
549         and simplify dispatch logic.
550         (omp_context_selector_set_compare): Likewise.
551         (omp_context_selector_compare): Likewise.
552         (omp_get_context_selector): Adjust for new representations, and split
553         out...
554         (omp_get_context_selector_list): New function.
555         (omp_lookup_tss_code): New.
556         (omp_lookup_ts_code): New.
557         (omp_context_compute_score): Adjust for new representations.  Avoid
558         fixed-sized buffers and magic numbers.  Adjust call to
559         omp_construct_traits_to_codes.
560         * gimplify.cc (omp_construct_selector_matches): Avoid use of
561         fixed-size buffer.  Adjust call to omp_construct_traits_to_codes.
563 2023-12-19  Sandra Loosemore  <sandra@codesourcery.com>
565         * omp-general.h (OMP_TP_NAMELIST_NODE): New.
566         * omp-general.cc (omp_context_name_list_prop): Move earlier
567         in the file, and adjust for new representation.
568         (omp_check_context_selector): Adjust this too.
569         (omp_context_selector_props_compare): Likewise.
571 2023-12-19  Sandra Loosemore  <sandra@codesourcery.com>
573         * omp-general.h (OMP_TS_SCORE_NODE): New.
574         (OMP_TSS_ID, OMP_TSS_TRAIT_SELECTORS): New.
575         (OMP_TS_ID, OMP_TS_SCORE, OMP_TS_PROPERTIES): New.
576         (OMP_TP_NAME, OMP_TP_VALUE): New.
577         (make_trait_set_selector): Declare.
578         (make_trait_selector): Declare.
579         (make_trait_property): Declare.
580         (omp_constructor_traits_to_codes): Rename to
581         omp_construct_traits_to_codes.
582         * omp-general.cc (omp_constructor_traits_to_codes): Rename
583         to omp_construct_traits_to_codes.  Use new accessors.
584         (omp_check_context_selector): Use new accessors.
585         (make_trait_set_selector): New.
586         (make_trait_selector): New.
587         (make_trait_property): New.
588         (omp_context_name_list_prop): Use new accessors.
589         (omp_context_selector_matches): Use new accessors.
590         (omp_context_selector_props_compare): Use new accessors.
591         (omp_context_selector_set_compare): Use new accessors.
592         (omp_get_context_selector): Use new accessors.
593         (omp_context_compute_score): Use new accessors.
594         * gimplify.cc (omp_construct_selector_matches): Adjust for renaming
595         of omp_constructor_traits_to_codes.
597 2023-12-19  David Faust  <david.faust@oracle.com>
599         PR debug/111735
600         * btfout.cc (btf_fwd_to_enum_p): New.
601         (btf_asm_type_ref): Special case references to enum forwards.
602         (btf_asm_type): Special case enum forwards. Rename btf_size_type to
603         btf_size, and change chained ifs switching on btf_kind into else ifs.
605 2023-12-19  Richard Biener  <rguenther@suse.de>
607         PR tree-optimization/113080
608         * tree-scalar-evolution.cc (expression_expensive_p): Allow
609         a tiny bit of growth due to expansion of shared trees.
610         (final_value_replacement_loop): Add comment.
612 2023-12-19  Richard Biener  <rguenther@suse.de>
614         PR tree-optimization/113073
615         * tree-vect-stmts.cc (vectorizable_load): Properly ensure
616         to exempt only vector-size aligned overreads.
618 2023-12-19  Roger Sayle  <roger@nextmovesoftware.com>
620         * config/i386/i386-expand.cc
621         (ix86_convert_const_wide_int_to_broadcast): Remove static.
622         (ix86_expand_move): Don't attempt to convert wide constants
623         to SSE using ix86_convert_const_wide_int_to_broadcast here.
624         (ix86_split_long_move): Always un-cprop multi-word constants.
625         * config/i386/i386-expand.h
626         (ix86_convert_const_wide_int_to_broadcast): Prototype here.
627         * config/i386/i386-features.cc: Include i386-expand.h.
628         (timode_scalar_chain::convert_insn): When converting TImode to
629         V1TImode, try ix86_convert_const_wide_int_to_broadcast.
631 2023-12-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
633         * config/riscv/riscv-v.cc (expand_const_vector): Use builder.inner_mode ().
635 2023-12-19  Jakub Jelinek  <jakub@redhat.com>
637         PR target/112816
638         * config/i386/mmx.md (signbitv2sf2, signbit<mode>2): Force operands[1]
639         into a REG.
641 2023-12-19  Alex Coplan  <alex.coplan@arm.com>
643         PR target/113061
644         * config/aarch64/predicates.md (aarch64_stp_reg_operand): Fix
645         parentheses to match intent.
647 2023-12-19  Jiufu Guo  <guojiufu@linux.ibm.com>
649         PR rtl-optimization/112525
650         PR target/30271
651         * dse.cc (get_group_info): Add arg_pointer_rtx as frame_related.
652         (check_mem_read_rtx): Add parameter to indicate if it is checking mem
653         for call insn.
654         (scan_insn): Add mem checking on call usage.
656 2023-12-19  Feng Wang  <wangfeng@eswincomputing.com>
658         * config/riscv/riscv-vector-builtins-functions.def (REQUIRED_EXTENSIONS):
659                                         Add new macro for match function.
660         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FUNCTION):
661                                         Add one more parameter for macro expanding.
662         (handle_pragma_vector): Add match function calls.
663         * config/riscv/riscv-vector-builtins.h (enum required_ext):
664                                 Add enum defination for required extension.
665         (struct function_group_info): Add one more parameter for checking required-ext.
667 2023-12-18  Vladimir N. Makarov  <vmakarov@redhat.com>
669         PR rtl-optimization/112918
670         * lra-constraints.cc (SMALL_REGISTER_CLASS_P): Move before in_class_p.
671         (in_class_p): Restrict condition for narrowing class in case of
672         allow_all_reload_class_changes_p.
673         (process_alt_operands): Pass true for
674         allow_all_reload_class_changes_p in calls of in_class_p.
675         (curr_insn_transform): Ditto for reg operand win.
677 2023-12-18  Uros Bizjak  <ubizjak@gmail.com>
679         * config/i386/i386.md (redundant compare peephole2):
680         New peephole2 pattern.
682 2023-12-18  Andreas Krebbel  <krebbel@linux.ibm.com>
684         * config/s390/s390.cc (s390_encode_section_info): Replace
685         SYMBOL_REF_LOCAL_P with decl_binds_to_current_def_p.
687 2023-12-18  Andrew Pinski  <quic_apinski@quicinc.com>
689         PR tree-optimization/113054
690         * gimple-ssa-sccopy.cc: Wrap the local types
691         with an anonymous namespace.
693 2023-12-18  Richard Biener  <rguenther@suse.de>
695         PR middle-end/111975
696         * tree-pretty-print.cc (dump_generic_node): Dump
697         sizetype as __SIZETYPE__ with TDF_GIMPLE.
698         Dump unnamed vector types as T [[gnu::vector_size(n)]] with
699         TDF_GIMPLE.
700         * tree-ssa-address.cc (create_mem_ref_raw): Never generate
701         a NULL STEP when INDEX is specified.
703 2023-12-18  Gerald Pfeifer  <gerald@pfeifer.com>
705         PR target/69374
706         * doc/install.texi (Specific) <hppa*-hp-hpux10>: Remove section.
707         (Specific) <hppa*-hp-hpux11>: Remove references to GCC 2.95 and
708         3.0. Also libffi has been ported now.
710 2023-12-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
712         PR target/112432
713         * config/riscv/riscv.md (none,W21,W42,W84,W43,W86,W87): Add W0.
714         (none,W21,W42,W84,W43,W86,W87,W0): Ditto.
715         * config/riscv/vector.md: Ditto.
717 2023-12-18  Richard Biener  <rguenther@suse.de>
719         PR c/111975
720         * tree-pretty-print.cc (dump_mem_ref): Use TDF_GIMPLE path
721         also for TARGET_MEM_REF and amend it.
723 2023-12-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
725         * config/riscv/riscv.cc (riscv_regmode_natural_size): Fix ICE for
726         FIXED-VLMAX of -march=rv32gc_zve32f.
728 2023-12-18  Jakub Jelinek  <jakub@redhat.com>
730         PR tree-optimization/113013
731         * tree-object-size.cc (alloc_object_size): Return size_unknown if
732         corresponding argument(s) don't have integral type or have integral
733         type with higher precision than sizetype.  Don't check arg1 >= 0
734         uselessly.  Compare argument indexes against gimple_call_num_args
735         in unsigned type rather than int.  Formatting fixes.
737 2023-12-18  Pan Li  <pan2.li@intel.com>
739         * config/riscv/riscv-v.cc (expand_const_vector): Take step2
740         instead of step1 for second series.
742 2023-12-18  liushuyu  <liushuyu011@gmail.com>
744         * config.gcc: Add loongarch-d.o to d_target_objs for LoongArch
745         architecture.
746         * config/loongarch/t-loongarch: Add object target for loongarch-d.cc.
747         * config/loongarch/loongarch-d.cc
748         (loongarch_d_target_versions): add interface function to define builtin
749         D versions for LoongArch architecture.
750         (loongarch_d_handle_target_float_abi): add interface function to define
751         builtin D traits for LoongArch architecture.
752         (loongarch_d_register_target_info): add interface function to register
753         loongarch_d_handle_target_float_abi function.
754         * config/loongarch/loongarch-d.h
755         (loongarch_d_target_versions): add function prototype.
756         (loongarch_d_register_target_info): Likewise.
758 2023-12-18  xuli  <xuli1@eswincomputing.com>
760         * config/riscv/vector.md: Add viota avl_type attribute.
762 2023-12-18  Pan Li  <pan2.li@intel.com>
764         * config/riscv/riscv.cc (riscv_expand_mult_with_const_int):
765         Change int into HOST_WIDE_INT.
766         (riscv_legitimize_poly_move): Ditto.
768 2023-12-17  Xi Ruoyao  <xry111@xry111.site>
770         * config/loongarch/loongarch.md (alslsi3_extend): New
771         define_insn.
773 2023-12-17  Xi Ruoyao  <xry111@xry111.site>
775         PR target/112936
776         * config/loongarch/loongarch-def.cc
777         (loongarch_rtx_cost_data::loongarch_rtx_cost_data): Update
778         instruction costs per micro-benchmark results.
779         (loongarch_rtx_cost_optimize_size): Set all instruction costs
780         to (COSTS_N_INSNS (1) + 1).
781         * config/loongarch/loongarch.cc (loongarch_rtx_costs): Remove
782         special case for multiplication when optimizing for size.
783         Adjust division cost when TARGET_64BIT && !TARGET_DIV32.
784         Account the extra cost when TARGET_CHECK_ZERO_DIV and
785         optimizing for speed.
787 2023-12-17  Xi Ruoyao  <xry111@xry111.site>
789         * config/loongarch/loongarch-def.cc (rtl.h): Include.
790         (COSTS_N_INSNS): Remove the macro definition.
792 2023-12-17  Gerald Pfeifer  <gerald@pfeifer.com>
794         PR target/69374
795         * doc/install.texi (Specific) <hppa*-hp-hpux*>: Remove a note on
796         GCC 4.3.
797         Remove details on how the HP assembler, which we document as not
798         working, breaks.
799         <hppa*-hp-hpux11>: Note that only the HP linker is supported.
801 2023-12-17  Gerald Pfeifer  <gerald@pfeifer.com>
803         PR other/69374
804         * doc/install.texi (Installing GCC): Remove reference to
805         buildstat.html.
806         (Testing): Ditto.
807         (Final install): Remove section on submitting information for
808         buildstat.html. Adjust the request for feedback.
810 2023-12-16  David Malcolm  <dmalcolm@redhat.com>
812         * json.cc (print_escaped_json_string): New, taken from
813         string::print.
814         (object::print): Use it for printing keys.
815         (string::print): Move implementation to
816         print_escaped_json_string.
817         (selftest::test_writing_objects): Add a key containing
818         quote, backslash, and control characters.
820 2023-12-16  Andrew Carlotti  <andrew.carlotti@arm.com>
822         * config/aarch64/aarch64-feature-deps.h (fmv_deps_<FEAT_NAME>):
823         Define aarch64_feature_flags mask foreach FMV feature.
824         * config/aarch64/aarch64-option-extensions.def: Use new macros
825         to define FMV feature extensions.
826         * config/aarch64/aarch64.cc (aarch64_option_valid_attribute_p):
827         Check for target_version attribute after processing target
828         attribute.
829         (aarch64_fmv_feature_data): New.
830         (aarch64_parse_fmv_features): New.
831         (aarch64_process_target_version_attr): New.
832         (aarch64_option_valid_version_attribute_p): New.
833         (get_feature_mask_for_version): New.
834         (compare_feature_masks): New.
835         (aarch64_compare_version_priority): New.
836         (build_ifunc_arg_type): New.
837         (make_resolver_func): New.
838         (add_condition_to_bb): New.
839         (dispatch_function_versions): New.
840         (aarch64_generate_version_dispatcher_body): New.
841         (aarch64_get_function_versions_dispatcher): New.
842         (aarch64_common_function_versions): New.
843         (aarch64_mangle_decl_assembler_name): New.
844         (TARGET_OPTION_VALID_VERSION_ATTRIBUTE_P): New implementation.
845         (TARGET_OPTION_EXPANDED_CLONES_ATTRIBUTE): New implementation.
846         (TARGET_OPTION_FUNCTION_VERSIONS): New implementation.
847         (TARGET_COMPARE_VERSION_PRIORITY): New implementation.
848         (TARGET_GENERATE_VERSION_DISPATCHER_BODY): New implementation.
849         (TARGET_GET_FUNCTION_VERSIONS_DISPATCHER): New implementation.
850         (TARGET_MANGLE_DECL_ASSEMBLER_NAME): New implementation.
851         * config/aarch64/aarch64.h (TARGET_HAS_FMV_TARGET_ATTRIBUTE):
852         Set target macro.
853         * config/arm/aarch-common.h (enum aarch_parse_opt_result): Add
854         new value to report duplicate FMV feature.
855         * common/config/aarch64/cpuinfo.h: New file.
857 2023-12-16  Andrew Carlotti  <andrew.carlotti@arm.com>
859         * attribs.cc (decl_attributes): Pass attribute name to target.
860         (is_function_default_version): Update comment to specify
861         incompatibility with target_version attributes.
862         * cgraphclones.cc (cgraph_node::create_version_clone_with_body):
863         Call valid_version_attribute_p for target_version attributes.
864         * defaults.h (TARGET_HAS_FMV_TARGET_ATTRIBUTE): New macro.
865         * target.def (valid_version_attribute_p): New hook.
866         * doc/tm.texi.in: Add new hook.
867         * doc/tm.texi: Regenerate.
868         * multiple_target.cc (create_dispatcher_calls): Remove redundant
869         is_function_default_version check.
870         (expand_target_clones): Use target macro to pick attribute name.
871         * targhooks.cc (default_target_option_valid_version_attribute_p):
872         New.
873         * targhooks.h (default_target_option_valid_version_attribute_p):
874         New.
875         * tree.h (DECL_FUNCTION_VERSIONED): Update comment to include
876         target_version attributes.
878 2023-12-16  Andrew Carlotti  <andrew.carlotti@arm.com>
880         * common/config/aarch64/aarch64-common.cc
881         (struct aarch64_option_extension): Remove unused field.
882         (all_extensions): Ditto.
883         (aarch64_get_extension_string_for_isa_flags): Remove filtering
884         of features without native detection.
885         * config/aarch64/driver-aarch64.cc (host_detect_local_cpu):
886         Explicitly add expected features that lack cpuinfo detection.
888 2023-12-16  Andrew Carlotti  <andrew.carlotti@arm.com>
890         * common/config/aarch64/aarch64-common.cc
891         (aarch64_get_extension_string_for_isa_flags): Fix generation of
892         the "+nocrypto" extension.
893         * config/aarch64/aarch64.h (AARCH64_ISA_CRYPTO): Remove.
894         (TARGET_CRYPTO): Remove.
895         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins):
896         Don't use TARGET_CRYPTO.
898 2023-12-15  Mary Bennett  <mary.bennett@embecosm.com>
900         * config/riscv/constraints.md: CVP2 -> CV_alu_pow2.
901         * config/riscv/corev.md: Likewise.
903 2023-12-15  Mary Bennett  <mary.bennett@embecosm.com>
905         * common/config/riscv/riscv-common.cc: Add XCVelw.
906         * config/riscv/corev.def: Likewise.
907         * config/riscv/corev.md: Likewise.
908         * config/riscv/riscv-builtins.cc (AVAIL): Likewise.
909         * config/riscv/riscv-ftypes.def: Likewise.
910         * config/riscv/riscv.opt: Likewise.
911         * doc/extend.texi: Add XCVelw builtin documentation.
912         * doc/sourcebuild.texi: Likewise.
914 2023-12-15  Jeff Law  <jlaw@ventanamicro.com>
916         PR target/110201
917         * config/riscv/constraints.md (D03, DsA): Remove unused constraints.
918         * config/riscv/predicates.md (const_0_3_operand): New predicate.
919         (const_0_10_operand): Likewise.
920         * config/riscv/crypto.md (riscv_aes32dsi): Use new predicate.  Drop
921         unnecessary constraint.
922         (riscv_aes32dsmi, riscv_aes64im, riscv_aes32esi): Likewise.
923         (riscv_aes32esmi, *riscv_<sm4_op>_si): Likewise.
924         (riscv_<sm4_op>_di_extend, riscv_<sm4_op>_si): Likewise.
926 2023-12-15  Alex Coplan  <alex.coplan@arm.com>
928         * config.gcc: Add aarch64-ldp-fusion.o to extra_objs for aarch64.
929         * config/aarch64/aarch64-passes.def: Add copies of pass_ldp_fusion
930         before and after RA.
931         * config/aarch64/aarch64-protos.h (make_pass_ldp_fusion): Declare.
932         * config/aarch64/aarch64.opt (-mearly-ldp-fusion): New.
933         (-mlate-ldp-fusion): New.
934         (--param=aarch64-ldp-alias-check-limit): New.
935         (--param=aarch64-ldp-writeback): New.
936         * config/aarch64/t-aarch64: Add rule for aarch64-ldp-fusion.o.
937         * config/aarch64/aarch64-ldp-fusion.cc: New file.
938         * doc/invoke.texi (AArch64 Options): Document new
939         -m{early,late}-ldp-fusion options.
941 2023-12-15  Alex Coplan  <alex.coplan@arm.com>
943         * config/aarch64/aarch64-ldpstp.md: Abstract ldp/stp
944         representation from peepholes, allowing use of new form.
945         * config/aarch64/aarch64-modes.def (V2x4QImode): Define.
946         * config/aarch64/aarch64-protos.h
947         (aarch64_finish_ldpstp_peephole): Declare.
948         (aarch64_swap_ldrstr_operands): Delete declaration.
949         (aarch64_gen_load_pair): Adjust parameters.
950         (aarch64_gen_store_pair): Likewise.
951         * config/aarch64/aarch64-simd.md (load_pair<DREG:mode><DREG2:mode>):
952         Delete.
953         (vec_store_pair<DREG:mode><DREG2:mode>): Delete.
954         (load_pair<VQ:mode><VQ2:mode>): Delete.
955         (vec_store_pair<VQ:mode><VQ2:mode>): Delete.
956         * config/aarch64/aarch64.cc (aarch64_pair_mode_for_mode): New.
957         (aarch64_gen_store_pair): Adjust to use new unspec form of stp.
958         Drop second mem from parameters.
959         (aarch64_gen_load_pair): Likewise.
960         (aarch64_pair_mem_from_base): New.
961         (aarch64_save_callee_saves): Emit REG_CFA_OFFSET notes for
962         frame-related saves.  Adjust call to aarch64_gen_store_pair
963         (aarch64_restore_callee_saves): Adjust calls to
964         aarch64_gen_load_pair to account for change in interface.
965         (aarch64_process_components): Likewise.
966         (aarch64_classify_address): Handle 32-byte pair mems in
967         LDP_STP_N case.
968         (aarch64_print_operand): Likewise.
969         (aarch64_copy_one_block_and_progress_pointers): Adjust calls to
970         account for change in aarch64_gen_{load,store}_pair interface.
971         (aarch64_set_one_block_and_progress_pointer): Likewise.
972         (aarch64_finish_ldpstp_peephole): New.
973         (aarch64_gen_adjusted_ldpstp): Adjust to use generation helper.
974         * config/aarch64/aarch64.md (ldpstp): New attribute.
975         (load_pair_sw_<SX:mode><SX2:mode>): Delete.
976         (load_pair_dw_<DX:mode><DX2:mode>): Delete.
977         (load_pair_dw_<TX:mode><TX2:mode>): Delete.
978         (*load_pair_<ldst_sz>): New.
979         (*load_pair_16): New.
980         (store_pair_sw_<SX:mode><SX2:mode>): Delete.
981         (store_pair_dw_<DX:mode><DX2:mode>): Delete.
982         (store_pair_dw_<TX:mode><TX2:mode>): Delete.
983         (*store_pair_<ldst_sz>): New.
984         (*store_pair_16): New.
985         (*load_pair_extendsidi2_aarch64): Adjust to use new form.
986         (*zero_extendsidi2_aarch64): Likewise.
987         * config/aarch64/iterators.md (VPAIR): New.
988         * config/aarch64/predicates.md (aarch64_mem_pair_operand): Change to
989         a special predicate derived from aarch64_mem_pair_operator.
991 2023-12-15  Alex Coplan  <alex.coplan@arm.com>
993         * config/aarch64/aarch64-protos.h (aarch64_ldpstp_operand_mode_p): Declare.
994         * config/aarch64/aarch64.cc (aarch64_gen_storewb_pair): Build RTL
995         directly instead of invoking named pattern.
996         (aarch64_gen_loadwb_pair): Likewise.
997         (aarch64_ldpstp_operand_mode_p): New.
998         * config/aarch64/aarch64.md (loadwb_pair<GPI:mode>_<P:mode>): Replace with
999         ...
1000         (*loadwb_post_pair_<ldst_sz>): ... this. Generalize as described
1001         in cover letter.
1002         (loadwb_pair<GPF:mode>_<P:mode>): Delete (superseded by the
1003         above).
1004         (*loadwb_post_pair_16): New.
1005         (*loadwb_pre_pair_<ldst_sz>): New.
1006         (loadwb_pair<TX:mode>_<P:mode>): Delete.
1007         (*loadwb_pre_pair_16): New.
1008         (storewb_pair<GPI:mode>_<P:mode>): Replace with ...
1009         (*storewb_pre_pair_<ldst_sz>): ... this.  Generalize as
1010         described in cover letter.
1011         (*storewb_pre_pair_16): New.
1012         (storewb_pair<GPF:mode>_<P:mode>): Delete.
1013         (*storewb_post_pair_<ldst_sz>): New.
1014         (storewb_pair<TX:mode>_<P:mode>): Delete.
1015         (*storewb_post_pair_16): New.
1016         * config/aarch64/predicates.md (aarch64_mem_pair_operator): New.
1017         (pmode_plus_operator): New.
1018         (aarch64_ldp_reg_operand): New.
1019         (aarch64_stp_reg_operand): New.
1021 2023-12-15  Alex Coplan  <alex.coplan@arm.com>
1023         * config/aarch64/aarch64.cc (aarch64_print_address_internal): Handle SVE
1024         modes when printing ldp/stp addresses.
1026 2023-12-15  Alex Coplan  <alex.coplan@arm.com>
1028         * config/aarch64/aarch64-protos.h (aarch64_const_zero_rtx_p): New.
1029         * config/aarch64/aarch64.cc (aarch64_const_zero_rtx_p): New.
1030         Use it ...
1031         (aarch64_print_operand): ... here.  Recognize CONST0_RTXes in
1032         modes other than VOIDmode.
1034 2023-12-15  Xiao Zeng  <zengxiao@eswincomputing.com>
1036         * common/config/riscv/riscv-common.cc:
1037         (riscv_implied_info): Add zvfbfmin item.
1038         (riscv_ext_version_table): Ditto.
1039         (riscv_ext_flag_table): Ditto.
1040         * config/riscv/riscv.opt:
1041         (MASK_ZVFBFMIN): New macro.
1042         (MASK_VECTOR_ELEN_BF_16): Ditto.
1043         (TARGET_ZVFBFMIN): Ditto.
1045 2023-12-15  Wilco Dijkstra  <wilco.dijkstra@arm.com>
1047         * config/aarch64/aarch64.opt (aarch64_mops_memmove_size_threshold):
1048         Change default.
1049         * config/aarch64/aarch64.md (cpymemdi): Add a parameter.
1050         (movmemdi): Call aarch64_expand_cpymem.
1051         * config/aarch64/aarch64.cc (aarch64_copy_one_block): Rename function,
1052         simplify, support storing generated loads/stores.
1053         (aarch64_expand_cpymem): Support expansion of memmove.
1054         * config/aarch64/aarch64-protos.h (aarch64_expand_cpymem): Add bool arg.
1056 2023-12-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1058         * config/riscv/riscv-v.cc (shuffle_merge_patterns): Fix bug.
1060 2023-12-15  Jakub Jelinek  <jakub@redhat.com>
1062         * target.h (struct bitint_info): Add abi_limb_mode member, adjust
1063         comment.
1064         * target.def (bitint_type_info): Mention abi_limb_mode instead of
1065         limb_mode.
1066         * varasm.cc (output_constant): Use abi_limb_mode rather than
1067         limb_mode.
1068         * stor-layout.cc (finish_bitfield_representative): Likewise.  Assert
1069         that if precision is smaller or equal to abi_limb_mode precision or
1070         if info.big_endian is different from WORDS_BIG_ENDIAN, info.limb_mode
1071         must be the same as info.abi_limb_mode.
1072         (layout_type): Use abi_limb_mode rather than limb_mode.
1073         * gimple-fold.cc (clear_padding_bitint_needs_padding_p): Likewise.
1074         (clear_padding_type): Likewise.
1075         * config/i386/i386.cc (ix86_bitint_type_info): Also set
1076         info->abi_limb_mode.
1077         * doc/tm.texi: Regenerated.
1079 2023-12-15  Julian Brown  <julian@codesourcery.com>
1081         * gimplify.cc (extract_base_bit_offset): Add VARIABLE_OFFSET parameter.
1082         (omp_get_attachment, omp_group_last, omp_group_base,
1083         omp_directive_maps_explicitly): Add GOMP_MAP_STRUCT_UNORD support.
1084         (omp_accumulate_sibling_list): Update calls to extract_base_bit_offset.
1085         Support GOMP_MAP_STRUCT_UNORD.
1086         (omp_build_struct_sibling_lists, gimplify_scan_omp_clauses,
1087         gimplify_adjust_omp_clauses, gimplify_omp_target_update): Add
1088         GOMP_MAP_STRUCT_UNORD support.
1089         * omp-low.cc (lower_omp_target): Add GOMP_MAP_STRUCT_UNORD support.
1090         * tree-pretty-print.cc (dump_omp_clause): Likewise.
1092 2023-12-15  Alex Coplan  <alex.coplan@arm.com>
1094         PR target/112906
1095         * config/aarch64/aarch64-sve.md (@aarch64_vec_duplicate_vq<mode>_le):
1096         Use force_reload_address to reload addresses that aren't suitable for
1097         ld1rq in the pre-RA splitter.
1099 2023-12-15  Alex Coplan  <alex.coplan@arm.com>
1101         PR target/112906
1102         * emit-rtl.cc (address_reload_context::emit_autoinc): New.
1103         (force_reload_address): New.
1104         * emit-rtl.h (struct address_reload_context): Declare.
1105         (force_reload_address): Declare.
1106         * lra-constraints.cc (class lra_autoinc_reload_context): New.
1107         (emit_inc): Drop IN parameter, invoke
1108         code moved to emit-rtl.cc:address_reload_context::emit_autoinc.
1109         (curr_insn_transform): Drop redundant IN parameter in call to
1110         emit_inc.
1111         * recog.h (class recog_data_saver): New.
1113 2023-12-15  Jakub Jelinek  <jakub@redhat.com>
1115         PR tree-optimization/113024
1116         * match.pd (two conversions in a row): Simplify scalar integer
1117         sign-extension followed by truncation.
1119 2023-12-15  Jakub Jelinek  <jakub@redhat.com>
1121         PR tree-optimization/113003
1122         * gimple-lower-bitint.cc (arith_overflow_arg_kind): New function.
1123         (gimple_lower_bitint): Use it to catch .{ADD,SUB,MUL}_OVERFLOW
1124         calls with large/huge INTEGER_CST arguments.
1126 2023-12-15  Gerald Pfeifer  <gerald@pfeifer.com>
1128         * doc/install.texi (Specific) <nvptx-*-none>: Update nvptx-tools
1129         Github link.
1131 2023-12-15  Hongyu Wang  <hongyu.wang@intel.com>
1133         PR target/112824
1134         * config/i386/i386-options.cc (ix86_option_override_internal):
1135         Sync ix86_move_max/ix86_store_max with prefer_vector_width when
1136         it is explicitly set.
1138 2023-12-15  Haochen Jiang  <haochen.jiang@intel.com>
1140         * config/i386/driver-i386.cc (host_detect_local_cpu): Do not
1141         set Grand Ridge depending on RAO-INT.
1142         * config/i386/i386.h: Remove PTA_RAOINT from PTA_GRANDRIDGE.
1143         * doc/invoke.texi: Adjust documentation.
1145 2023-12-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1147         PR target/112387
1148         * config/riscv/riscv.cc: Adapt generic cost model same ARM SVE.
1150 2023-12-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1152         PR target/111153
1153         * tree-vect-loop.cc (vect_estimate_min_profitable_iters):
1154         Remove address cost for select_vl/decrement IV.
1156 2023-12-14  Andrew Pinski  <quic_apinski@quicinc.com>
1158         PR middle-end/111260
1159         * optabs.cc (emit_conditional_move): Change the modes to be
1160         equal before forcing the constant to a register.
1162 2023-12-14  Di Zhao  <dizhao@os.amperecomputing.com>
1164         PR tree-optimization/110279
1165         * doc/invoke.texi: New parameter fully-pipelined-fma.
1166         * params.opt: New parameter fully-pipelined-fma.
1167         * tree-ssa-reassoc.cc (get_mult_latency_consider_fma): Return
1168         the latency of MULT_EXPRs that can't be hidden by the FMAs.
1169         (get_reassociation_width): Search for a smaller width
1170         considering the benefit of fully pipelined FMA.
1171         (rank_ops_for_fma): Return the number of MULT_EXPRs.
1172         (reassociate_bb): Pass the number of MULT_EXPRs to
1173         get_reassociation_width; avoid calling
1174         get_reassociation_width twice.
1176 2023-12-14  Robin Dapp  <rdapp@ventanamicro.com>
1178         PR target/112999
1179         * expmed.cc (extract_bit_field_1):  Ensure better mode
1180         has fitting unit_precision.
1182 2023-12-14  Robin Dapp  <rdapp@ventanamicro.com>
1184         PR target/112773
1185         * config/riscv/autovec.md (vec_extract<mode>bi): New expander
1186         calling vec_extract<mode>qi.
1187         * config/riscv/riscv-protos.h (riscv_legitimize_poly_move):
1188         Export.
1189         (emit_vec_extract): Change argument from poly_int64 to rtx.
1190         * config/riscv/riscv-v.cc (shuffle_extract_and_slide1up_patterns):
1191         Ditto.
1192         * config/riscv/riscv.cc (riscv_legitimize_poly_move): Export.
1193         (riscv_legitimize_move): Use rtx instead of poly_int64.
1194         * expmed.cc (store_bit_field_1): Change BITSIZE to PRECISION.
1195         (extract_bit_field_1): Change BITSIZE to PRECISION and use
1196         return mode from insn_data as target mode.
1198 2023-12-14  Alex Coplan  <alex.coplan@arm.com>
1200         * doc/extend.texi: Document AArch64 Operand Modifiers.
1202 2023-12-14  Richard Biener  <rguenther@suse.de>
1204         PR tree-optimization/113018
1205         * tree-vect-slp.cc (vect_slp_check_for_roots): Only start
1206         SLP discovery from stmts with a LHS.
1208 2023-12-14  Richard Biener  <rguenther@suse.de>
1210         PR tree-optimization/112793
1211         * tree-vect-slp.cc (vect_schedule_slp_node): Already
1212         code-generated constant/external nodes are OK.
1214 2023-12-14  Richard Sandiford  <richard.sandiford@arm.com>
1216         * config/aarch64/aarch64-early-ra.cc (allocno_info::is_equiv): New
1217         member variable.
1218         (allocno_info::equiv_allocno): Replace with...
1219         (allocno_info::related_allocno): ...this member variable.
1220         (allocno_info::chain_prev): Put into an enum with...
1221         (allocno_info::last_use_point): ...this new member variable.
1222         (color_info::num_fpr_preferences): New member variable.
1223         (early_ra::m_shared_allocnos): Likewise.
1224         (allocno_info::is_shared): New member function.
1225         (allocno_info::is_equiv_to): Likewise.
1226         (early_ra::dump_allocnos): Dump sharing information.  Tweak column
1227         widths.
1228         (early_ra::fpr_preference): Check ALLOWS_NONFPR before returning -2.
1229         (early_ra::start_new_region): Handle m_shared_allocnos.
1230         (early_ra::create_allocno_group): Set related_allocno rather than
1231         equiv_allocno.
1232         (early_ra::record_allocno_use): Likewise.  Detect multiple calls
1233         for the same program point.  Update last_use_point and is_equiv.
1234         Clear is_strong_copy_src rather than is_strong_copy_dest.
1235         (early_ra::record_allocno_def): Use related_allocno rather than
1236         equiv_allocno.  Update last_use_point.
1237         (early_ra::valid_equivalence_p): Replace with...
1238         (early_ra::find_related_start): ...this new function.
1239         (early_ra::record_copy): Look for cases where a destination copy chain
1240         can be shared with the source allocno.
1241         (early_ra::find_strided_accesses): Update for equiv_allocno->
1242         related_allocno change.  Only call consider_strong_copy_src_chain
1243         at the head of a copy chain.
1244         (early_ra::is_chain_candidate): Skip shared allocnos.  Update for
1245         new representation of equivalent allocnos.
1246         (early_ra::chain_allocnos): Update for new representation of
1247         equivalent allocnos.
1248         (early_ra::try_to_chain_allocnos): Likewise.
1249         (early_ra::merge_fpr_info): New function, split out from...
1250         (early_ra::set_single_color_rep): ...here.
1251         (early_ra::form_chains): Handle shared allocnos.
1252         (early_ra::process_copies): Count the number of FPR preferences.
1253         (early_ra::cmp_decreasing_size): Rename to...
1254         (early_ra::cmp_allocation_order): ...this.  Sort equal-sized groups
1255         by the number of FPR preferences.
1256         (early_ra::finalize_allocation): Handle shared allocnos.
1257         (early_ra::process_region): Reset chain_prev as well as chain_next.
1259 2023-12-14  Alexandre Oliva  <oliva@adacore.com>
1261         PR middle-end/112938
1262         * ipa-strub.cc (pass_ipa_strub::execute): Pass volatile args
1263         by reference to internal strub wrapped bodies.
1265 2023-12-14  Alexandre Oliva  <oliva@adacore.com>
1267         PR middle-end/112938
1268         * ipa-strub.cc (pass_ipa_strub::execute): Handle promoted
1269         volatile args in internal strub.  Simplify.
1271 2023-12-14  Thomas Schwinge  <thomas@codesourcery.com>
1273         * gimple-ssa-sccopy.cc: '#define INCLUDE_ALGORITHM' instead of
1274         '#include <algorithm>'.
1276 2023-12-14  Feng Wang  <wangfeng@eswincomputing.com>
1278         Revert:
1279         2023-12-12  Feng Wang  <wangfeng@eswincomputing.com>
1281         * config/riscv/riscv-vector-builtins-functions.def (DEF_RVV_FUNCTION):
1282                                                         Add AVAIL argument.
1283         (read_vl): Using AVAIL argument default value.
1284         (vlenb): Ditto.
1285         (vsetvl): Ditto.
1286         (vsetvlmax): Ditto.
1287         (vle): Ditto.
1288         (vse): Ditto.
1289         (vlm): Ditto.
1290         (vsm): Ditto.
1291         (vlse): Ditto.
1292         (vsse): Ditto.
1293         (vluxei8): Ditto.
1294         (vluxei16): Ditto.
1295         (vluxei32): Ditto.
1296         (vluxei64): Ditto.
1297         (vloxei8): Ditto.
1298         (vloxei16): Ditto.
1299         (vloxei32): Ditto.
1300         (vloxei64): Ditto.
1301         (vsuxei8): Ditto.
1302         (vsuxei16): Ditto.
1303         (vsuxei32): Ditto.
1304         (vsuxei64): Ditto.
1305         (vsoxei8): Ditto.
1306         (vsoxei16): Ditto.
1307         (vsoxei32): Ditto.
1308         (vsoxei64): Ditto.
1309         (vleff): Ditto.
1310         (vadd): Ditto.
1311         (vsub): Ditto.
1312         (vrsub): Ditto.
1313         (vneg): Ditto.
1314         (vwaddu): Ditto.
1315         (vwsubu): Ditto.
1316         (vwadd): Ditto.
1317         (vwsub): Ditto.
1318         (vwcvt_x): Ditto.
1319         (vwcvtu_x): Ditto.
1320         (vzext): Ditto.
1321         (vsext): Ditto.
1322         (vadc): Ditto.
1323         (vmadc): Ditto.
1324         (vsbc): Ditto.
1325         (vmsbc): Ditto.
1326         (vand): Ditto.
1327         (vor): Ditto.
1328         (vxor): Ditto.
1329         (vnot): Ditto.
1330         (vsll): Ditto.
1331         (vsra): Ditto.
1332         (vsrl): Ditto.
1333         (vnsrl): Ditto.
1334         (vnsra): Ditto.
1335         (vncvt_x): Ditto.
1336         (vmseq): Ditto.
1337         (vmsne): Ditto.
1338         (vmsltu): Ditto.
1339         (vmslt): Ditto.
1340         (vmsleu): Ditto.
1341         (vmsle): Ditto.
1342         (vmsgtu): Ditto.
1343         (vmsgt): Ditto.
1344         (vmsgeu): Ditto.
1345         (vmsge): Ditto.
1346         (vminu): Ditto.
1347         (vmin): Ditto.
1348         (vmaxu): Ditto.
1349         (vmax): Ditto.
1350         (vmul): Ditto.
1351         (vmulh): Ditto.
1352         (vmulhu): Ditto.
1353         (vmulhsu): Ditto.
1354         (vdivu): Ditto.
1355         (vdiv): Ditto.
1356         (vremu): Ditto.
1357         (vrem): Ditto.
1358         (vwmul): Ditto.
1359         (vwmulu): Ditto.
1360         (vwmulsu): Ditto.
1361         (vmacc): Ditto.
1362         (vnmsac): Ditto.
1363         (vmadd): Ditto.
1364         (vnmsub): Ditto.
1365         (vwmaccu): Ditto.
1366         (vwmacc): Ditto.
1367         (vwmaccsu): Ditto.
1368         (vwmaccus): Ditto.
1369         (vmerge): Ditto.
1370         (vmv_v): Ditto.
1371         (vsaddu): Ditto.
1372         (vsadd): Ditto.
1373         (vssubu): Ditto.
1374         (vssub): Ditto.
1375         (vaaddu): Ditto.
1376         (vaadd): Ditto.
1377         (vasubu): Ditto.
1378         (vasub): Ditto.
1379         (vsmul): Ditto.
1380         (vssrl): Ditto.
1381         (vssra): Ditto.
1382         (vnclipu): Ditto.
1383         (vnclip): Ditto.
1384         (vfadd): Ditto.
1385         (vfsub): Ditto.
1386         (vfrsub): Ditto.
1387         (vfadd_frm): Ditto.
1388         (vfsub_frm): Ditto.
1389         (vfrsub_frm): Ditto.
1390         (vfwadd): Ditto.
1391         (vfwsub): Ditto.
1392         (vfwadd_frm): Ditto.
1393         (vfwsub_frm): Ditto.
1394         (vfmul): Ditto.
1395         (vfdiv): Ditto.
1396         (vfrdiv): Ditto.
1397         (vfmul_frm): Ditto.
1398         (vfdiv_frm): Ditto.
1399         (vfrdiv_frm): Ditto.
1400         (vfwmul): Ditto.
1401         (vfwmul_frm): Ditto.
1402         (vfmacc): Ditto.
1403         (vfnmsac): Ditto.
1404         (vfmadd): Ditto.
1405         (vfnmsub): Ditto.
1406         (vfnmacc): Ditto.
1407         (vfmsac): Ditto.
1408         (vfnmadd): Ditto.
1409         (vfmsub): Ditto.
1410         (vfmacc_frm): Ditto.
1411         (vfnmacc_frm): Ditto.
1412         (vfmsac_frm): Ditto.
1413         (vfnmsac_frm): Ditto.
1414         (vfmadd_frm): Ditto.
1415         (vfnmadd_frm): Ditto.
1416         (vfmsub_frm): Ditto.
1417         (vfnmsub_frm): Ditto.
1418         (vfwmacc): Ditto.
1419         (vfwnmacc): Ditto.
1420         (vfwmsac): Ditto.
1421         (vfwnmsac): Ditto.
1422         (vfwmacc_frm): Ditto.
1423         (vfwnmacc_frm): Ditto.
1424         (vfwmsac_frm): Ditto.
1425         (vfwnmsac_frm): Ditto.
1426         (vfsqrt): Ditto.
1427         (vfsqrt_frm): Ditto.
1428         (vfrsqrt7): Ditto.
1429         (vfrec7): Ditto.
1430         (vfrec7_frm): Ditto.
1431         (vfmin): Ditto.
1432         (vfmax): Ditto.
1433         (vfsgnj): Ditto.
1434         (vfsgnjn): Ditto.
1435         (vfsgnjx): Ditto.
1436         (vfneg): Ditto.
1437         (vfabs): Ditto.
1438         (vmfeq): Ditto.
1439         (vmfne): Ditto.
1440         (vmflt): Ditto.
1441         (vmfle): Ditto.
1442         (vmfgt): Ditto.
1443         (vmfge): Ditto.
1444         (vfclass): Ditto.
1445         (vfmerge): Ditto.
1446         (vfmv_v): Ditto.
1447         (vfcvt_x): Ditto.
1448         (vfcvt_xu): Ditto.
1449         (vfcvt_rtz_x): Ditto.
1450         (vfcvt_rtz_xu): Ditto.
1451         (vfcvt_f): Ditto.
1452         (vfcvt_x_frm): Ditto.
1453         (vfcvt_xu_frm): Ditto.
1454         (vfcvt_f_frm): Ditto.
1455         (vfwcvt_x): Ditto.
1456         (vfwcvt_xu): Ditto.
1457         (vfwcvt_rtz_x): Ditto.
1458         (vfwcvt_rtz_xu) Ditto.:
1459         (vfwcvt_f): Ditto.
1460         (vfwcvt_x_frm): Ditto.
1461         (vfwcvt_xu_frm) Ditto.:
1462         (vfncvt_x): Ditto.
1463         (vfncvt_xu): Ditto.
1464         (vfncvt_rtz_x): Ditto.
1465         (vfncvt_rtz_xu): Ditto.
1466         (vfncvt_f): Ditto.
1467         (vfncvt_rod_f): Ditto.
1468         (vfncvt_x_frm): Ditto.
1469         (vfncvt_xu_frm): Ditto.
1470         (vfncvt_f_frm): Ditto.
1471         (vredsum): Ditto.
1472         (vredmaxu): Ditto.
1473         (vredmax): Ditto.
1474         (vredminu): Ditto.
1475         (vredmin): Ditto.
1476         (vredand): Ditto.
1477         (vredor): Ditto.
1478         (vredxor): Ditto.
1479         (vwredsum): Ditto.
1480         (vwredsumu): Ditto.
1481         (vfredusum): Ditto.
1482         (vfredosum): Ditto.
1483         (vfredmax): Ditto.
1484         (vfredmin): Ditto.
1485         (vfredusum_frm): Ditto.
1486         (vfredosum_frm): Ditto.
1487         (vfwredosum): Ditto.
1488         (vfwredusum): Ditto.
1489         (vfwredosum_frm): Ditto.
1490         (vfwredusum_frm): Ditto.
1491         (vmand): Ditto.
1492         (vmnand): Ditto.
1493         (vmandn): Ditto.
1494         (vmxor): Ditto.
1495         (vmor): Ditto.
1496         (vmnor): Ditto.
1497         (vmorn): Ditto.
1498         (vmxnor): Ditto.
1499         (vmmv): Ditto.
1500         (vmclr): Ditto.
1501         (vmset): Ditto.
1502         (vmnot): Ditto.
1503         (vcpop): Ditto.
1504         (vfirst): Ditto.
1505         (vmsbf): Ditto.
1506         (vmsif): Ditto.
1507         (vmsof): Ditto.
1508         (viota): Ditto.
1509         (vid): Ditto.
1510         (vmv_x): Ditto.
1511         (vmv_s): Ditto.
1512         (vfmv_f): Ditto.
1513         (vfmv_s): Ditto.
1514         (vslideup): Ditto.
1515         (vslidedown): Ditto.
1516         (vslide1up): Ditto.
1517         (vslide1down): Ditto.
1518         (vfslide1up): Ditto.
1519         (vfslide1down): Ditto.
1520         (vrgather): Ditto.
1521         (vrgatherei16): Ditto.
1522         (vcompress): Ditto.
1523         (vundefined): Ditto.
1524         (vreinterpret): Ditto.
1525         (vlmul_ext): Ditto.
1526         (vlmul_trunc): Ditto.
1527         (vset): Ditto.
1528         (vget): Ditto.
1529         (vcreate): Ditto.
1530         (vlseg): Ditto.
1531         (vsseg): Ditto.
1532         (vlsseg): Ditto.
1533         (vssseg): Ditto.
1534         (vluxseg): Ditto.
1535         (vloxseg): Ditto.
1536         (vsuxseg): Ditto.
1537         (vsoxseg): Ditto.
1538         (vlsegff): Ditto.
1539         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FUNCTION): Using variadic macro.
1540         * config/riscv/riscv-vector-builtins.h (struct function_group_info):
1541                                         Add avail function interface into struct.
1542         * config/riscv/t-riscv: Add dependency
1543         * config/riscv/riscv-vector-builtins-avail.h: New file.The definition of AVAIL marco.
1545 2023-12-14  Jakub Jelinek  <jakub@redhat.com>
1547         PR tree-optimization/112994
1548         * match.pd ((t * u) / (t * v) -> (u / v)): New simplification.
1550 2023-12-14  Jakub Jelinek  <jakub@redhat.com>
1552         PR tree-optimization/112994
1553         * match.pd ((t * 2) / 2 -> t): Adjust comment to use u instead of 2.
1554         Punt without range checks if TYPE_OVERFLOW_SANITIZED.
1555         ((t * u) / v -> t * (u / v)): New simplification.
1557 2023-12-14  Filip Kastl  <fkastl@suse.cz>
1559         * Makefile.in: Added sccopy pass.
1560         * passes.def: Added sccopy pass before LTO streaming and before
1561         RTL expansion.
1562         * tree-pass.h (make_pass_sccopy): Added sccopy pass.
1563         * gimple-ssa-sccopy.cc: New file.
1565 2023-12-14  Martin Jambor  <mjambor@suse.cz>
1567         PR tree-optimization/111807
1568         * tree-sra.cc (build_ref_for_model): Allow offset smaller than
1569         model->offset when gsi is non-NULL.  Adjust function comment.
1571 2023-12-14  liuhongt  <hongtao.liu@intel.com>
1573         PR target/112992
1574         * config/i386/i386-expand.cc
1575         (ix86_convert_const_wide_int_to_broadcast): Don't convert to
1576         broadcast for vec_dup{v4di,v8si} when TARGET_AVX2 is not
1577         available.
1578         (ix86_broadcast_from_constant): Allow broadcast for V4DI/V8SI
1579         when !TARGET_AVX2 since it will be forced to memory later.
1580         (ix86_expand_vector_move): Force constant to mem for
1581         vec_dup{vssi,v4di} when TARGET_AVX2 is not available.
1583 2023-12-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1585         PR target/111153
1586         * config/riscv/riscv-protos.h (struct common_vector_cost): New struct.
1587         (struct scalable_vector_cost): Ditto.
1588         (struct cpu_vector_cost): Ditto.
1589         * config/riscv/riscv-vector-costs.cc (costs::add_stmt_cost): Add RVV
1590         builtin vectorization cost
1591         * config/riscv/riscv.cc (struct riscv_tune_param): Ditto.
1592         (get_common_costs): New function.
1593         (riscv_builtin_vectorization_cost): Ditto.
1594         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): New targethook.
1596 2023-12-13  Richard Ball  <richard.ball@arm.com>
1598         * config.gcc: Adds new header to config.
1599         * config/aarch64/aarch64-builtins.cc (enum aarch64_type_qualifiers):
1600         Moved to header file.
1601         (ENTRY): Likewise.
1602         (enum aarch64_simd_type): Likewise.
1603         (struct aarch64_simd_type_info): Remove static.
1604         (GTY): Likewise.
1605         * config/aarch64/aarch64-c.cc (aarch64_pragma_aarch64):
1606         Defines pragma for arm_neon_sve_bridge.h.
1607         * config/aarch64/aarch64-protos.h:
1608         Add handle_arm_neon_sve_bridge_h
1609         * config/aarch64/aarch64-sve-builtins-base.h: New intrinsics.
1610         * config/aarch64/aarch64-sve-builtins-base.cc
1611         (class svget_neonq_impl): New intrinsic implementation.
1612         (class svset_neonq_impl): Likewise.
1613         (class svdup_neonq_impl): Likewise.
1614         (NEON_SVE_BRIDGE_FUNCTION): New intrinsics.
1615         * config/aarch64/aarch64-sve-builtins-functions.h
1616         (NEON_SVE_BRIDGE_FUNCTION): Defines macro for NEON_SVE_BRIDGE
1617         functions.
1618         * config/aarch64/aarch64-sve-builtins-shapes.h: New shapes.
1619         * config/aarch64/aarch64-sve-builtins-shapes.cc
1620         (parse_element_type): Add NEON element types.
1621         (parse_type): Likewise.
1622         (struct get_neonq_def): Defines function shape for get_neonq.
1623         (struct set_neonq_def): Defines function shape for set_neonq.
1624         (struct dup_neonq_def): Defines function shape for dup_neonq.
1625         * config/aarch64/aarch64-sve-builtins.cc
1626         (DEF_SVE_TYPE_SUFFIX): Changed to be called through
1627         SVE_NEON macro.
1628         (DEF_SVE_NEON_TYPE_SUFFIX): Defines
1629         macro for NEON_SVE_BRIDGE type suffixes.
1630         (DEF_NEON_SVE_FUNCTION): Defines
1631         macro for NEON_SVE_BRIDGE functions.
1632         (function_resolver::infer_neon128_vector_type): Infers type suffix
1633         for overloaded functions.
1634         (handle_arm_neon_sve_bridge_h): Handles #pragma arm_neon_sve_bridge.h.
1635         * config/aarch64/aarch64-sve-builtins.def
1636         (DEF_SVE_NEON_TYPE_SUFFIX): Macro for handling neon_sve type suffixes.
1637         (bf16): Replace entry with neon-sve entry.
1638         (f16): Likewise.
1639         (f32): Likewise.
1640         (f64): Likewise.
1641         (s8): Likewise.
1642         (s16): Likewise.
1643         (s32): Likewise.
1644         (s64): Likewise.
1645         (u8): Likewise.
1646         (u16): Likewise.
1647         (u32): Likewise.
1648         (u64): Likewise.
1649         * config/aarch64/aarch64-sve-builtins.h
1650         (GCC_AARCH64_SVE_BUILTINS_H): Include aarch64-builtins.h.
1651         (ENTRY): Add aarch64_simd_type definiton.
1652         (enum aarch64_simd_type): Add neon information to type_suffix_info.
1653         (struct type_suffix_info): New function.
1654         * config/aarch64/aarch64-sve.md
1655         (@aarch64_sve_get_neonq_<mode>): New intrinsic insn for big endian.
1656         (@aarch64_sve_set_neonq_<mode>): Likewise.
1657         * config/aarch64/iterators.md: Add UNSPEC_SET_NEONQ.
1658         * config/aarch64/aarch64-builtins.h: New file.
1659         * config/aarch64/aarch64-neon-sve-bridge-builtins.def: New file.
1660         * config/aarch64/arm_neon_sve_bridge.h: New file.
1662 2023-12-13  Patrick Palka  <ppalka@redhat.com>
1664         * doc/invoke.texi (C++ Dialect Options): Document
1665         -fdiagnostics-all-candidates.
1667 2023-12-13  Julian Brown  <julian@codesourcery.com>
1669         * gimplify.cc (omp_map_clause_descriptor_p): New function.
1670         (build_omp_struct_comp_nodes, omp_get_attachment, omp_group_base): Use
1671         above function.
1672         (omp_tsort_mapping_groups): Process nodes that have
1673         OMP_CLAUSE_MAP_RUNTIME_IMPLICIT_P set after those that don't.  Add
1674         enter_exit_data parameter.
1675         (omp_resolve_clause_dependencies): Remove GOMP_MAP_TO_PSET mappings if
1676         we're mapping the whole containing derived-type variable.
1677         (omp_accumulate_sibling_list): Adjust GOMP_MAP_TO_PSET handling.
1678         Remove GOMP_MAP_ALWAYS_POINTER handling.
1679         (gimplify_scan_omp_clauses): Pass enter_exit argument to
1680         omp_tsort_mapping_groups.  Don't adjust/remove GOMP_MAP_TO_PSET
1681         mappings for derived-type components here.
1682         * tree.h (OMP_CLAUSE_RELEASE_DESCRIPTOR): New macro.
1683         * tree-pretty-print.cc (dump_omp_clause): Show
1684         OMP_CLAUSE_RELEASE_DESCRIPTOR in dump output (with
1685         GOMP_MAP_TO_PSET-like syntax).
1687 2023-12-13  Julian Brown  <julian@codesourcery.com>
1689         * gimplify.cc (build_struct_comp_nodes): Don't process
1690         GOMP_MAP_ATTACH_DETACH "middle" nodes here.
1691         (omp_mapping_group): Add REPROCESS_STRUCT and FRAGILE booleans for
1692         nested struct handling.
1693         (omp_strip_components_and_deref, omp_strip_indirections): Remove
1694         functions.
1695         (omp_get_attachment): Handle GOMP_MAP_DETACH here.
1696         (omp_group_last): Handle GOMP_MAP_*, GOMP_MAP_DETACH,
1697         GOMP_MAP_ATTACH_DETACH groups for "exit data" of reference-to-pointer
1698         component array sections.
1699         (omp_gather_mapping_groups_1): Initialise reprocess_struct and fragile
1700         fields.
1701         (omp_group_base): Handle GOMP_MAP_ATTACH_DETACH after GOMP_MAP_STRUCT.
1702         (omp_index_mapping_groups_1): Skip reprocess_struct groups.
1703         (omp_get_nonfirstprivate_group, omp_directive_maps_explicitly,
1704         omp_resolve_clause_dependencies, omp_first_chained_access_token): New
1705         functions.
1706         (omp_check_mapping_compatibility): Adjust accepted node combinations
1707         for "from" clauses using release instead of alloc.
1708         (omp_accumulate_sibling_list): Add GROUP_MAP, ADDR_TOKENS, FRAGILE_P,
1709         REPROCESSING_STRUCT, ADDED_TAIL parameters.  Use OMP address tokenizer
1710         to analyze addresses.  Reimplement nested struct handling, and
1711         implement "fragile groups".
1712         (omp_build_struct_sibling_lists): Adjust for changes to
1713         omp_accumulate_sibling_list.  Recalculate bias for ATTACH_DETACH nodes
1714         after GOMP_MAP_STRUCT nodes.
1715         (gimplify_scan_omp_clauses): Call omp_resolve_clause_dependencies.  Use
1716         OMP address tokenizer.
1717         (gimplify_adjust_omp_clauses_1): Use build_fold_indirect_ref_loc
1718         instead of build_simple_mem_ref_loc.
1719         * omp-general.cc (omp-general.h, tree-pretty-print.h): Include.
1720         (omp_addr_tokenizer): New namespace.
1721         (omp_addr_tokenizer::omp_addr_token): New.
1722         (omp_addr_tokenizer::omp_parse_component_selector,
1723         omp_addr_tokenizer::omp_parse_ref,
1724         omp_addr_tokenizer::omp_parse_pointer,
1725         omp_addr_tokenizer::omp_parse_access_method,
1726         omp_addr_tokenizer::omp_parse_access_methods,
1727         omp_addr_tokenizer::omp_parse_structure_base,
1728         omp_addr_tokenizer::omp_parse_structured_expr,
1729         omp_addr_tokenizer::omp_parse_array_expr,
1730         omp_addr_tokenizer::omp_access_chain_p,
1731         omp_addr_tokenizer::omp_accessed_addr): New functions.
1732         (omp_parse_expr, debug_omp_tokenized_addr): New functions.
1733         * omp-general.h (omp_addr_tokenizer::access_method_kinds,
1734         omp_addr_tokenizer::structure_base_kinds,
1735         omp_addr_tokenizer::token_type,
1736         omp_addr_tokenizer::omp_addr_token,
1737         omp_addr_tokenizer::omp_access_chain_p,
1738         omp_addr_tokenizer::omp_accessed_addr): New.
1739         (omp_addr_token, omp_parse_expr): New.
1740         * omp-low.cc (scan_sharing_clauses): Skip error check for references
1741         to pointers.
1742         * tree.h (OMP_CLAUSE_ATTACHMENT_MAPPING_ERASED): New macro.
1744 2023-12-13  Andrew Stubbs  <ams@codesourcery.com>
1746         * config/gcn/gcn-hsa.h (NO_XNACK): Change the defaults.
1747         * config/gcn/gcn-opts.h (enum hsaco_attr_type): Add HSACO_ATTR_DEFAULT.
1748         * config/gcn/gcn.cc (gcn_option_override): Set the default flag_xnack.
1749         * config/gcn/gcn.opt: Add -mxnack=default.
1750         * doc/invoke.texi: Document the -mxnack default.
1752 2023-12-13  Andrew Stubbs  <ams@codesourcery.com>
1754         * config/gcn/gcn-hsa.h (NO_XNACK): Ignore missing -march.
1755         (XNACKOPT): Match on/off; ignore any.
1756         * config/gcn/gcn-valu.md (gather<mode>_insn_1offset<exec>):
1757         Add xnack compatible alternatives.
1758         (gather<mode>_insn_2offsets<exec>): Likewise.
1759         * config/gcn/gcn.cc (gcn_option_override): Permit -mxnack for devices
1760         other than Fiji and gfx1030.
1761         (gcn_expand_epilogue): Remove early-clobber problems.
1762         (gcn_hsa_declare_function_name): Obey -mxnack setting.
1763         * config/gcn/gcn.md (xnack): New attribute.
1764         (enabled): Rework to include "xnack" attribute.
1765         (*movbi): Add xnack compatible alternatives.
1766         (*mov<mode>_insn): Likewise.
1767         (*mov<mode>_insn): Likewise.
1768         (*mov<mode>_insn): Likewise.
1769         (*movti_insn): Likewise.
1770         * config/gcn/gcn.opt (-mxnack): Change the default to "any".
1771         * doc/invoke.texi: Remove placeholder notice for -mxnack.
1773 2023-12-13  Andrew Carlotti  <andrew.carlotti@arm.com>
1775         * config/aarch64/x-aarch64: Add missing dependencies.
1777 2023-12-13  Roger Sayle  <roger@nextmovesoftware.com>
1778             Jeff Law  <jlaw@ventanamicro.com>
1780         * config/arc/arc.md (*extvsi_n_0): New define_insn_and_split to
1781         implement SImode sign extract using a AND, XOR and MINUS sequence.
1783 2023-12-13  Feng Wang  <wangfeng@eswincomputing.com>
1785         * common/config/riscv/riscv-common.cc: Modify implied ISA info.
1786         * config/riscv/arch-canonicalize: Add crypto vector implied info.
1788 2023-12-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1790         PR target/112929
1791         PR target/112988
1792         * config/riscv/riscv-vsetvl.cc
1793         (pre_vsetvl::compute_lcm_local_properties): Remove full available.
1794         (pre_vsetvl::pre_global_vsetvl_info): Add full available optimization.
1796 2023-12-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1798         PR target/111317
1799         * tree-vect-loop.cc (vect_estimate_min_profitable_iters): Adjust for COST for decrement IV.
1801 2023-12-13  Jakub Jelinek  <jakub@redhat.com>
1803         PR tree-optimization/112940
1804         * gimple-lower-bitint.cc (struct bitint_large_huge): Add another
1805         argument to prepare_data_in_out method defaulted to NULL_TREE.
1806         (bitint_large_huge::handle_operand): Pass another argument to
1807         prepare_data_in_out instead of emitting an assignment to set it.
1808         (bitint_large_huge::prepare_data_in_out): Add VAL_OUT argument.
1809         If non-NULL, use it as PHI argument instead of creating a new
1810         SSA_NAME.
1811         (bitint_large_huge::handle_cast): Pass rext as another argument
1812         to 2 prepare_data_in_out calls instead of emitting assignments
1813         to set them.
1815 2023-12-13  Jakub Jelinek  <jakub@redhat.com>
1817         PR middle-end/112953
1818         * attribs.cc (free_attr_data): Use delete x rather than delete[] x.
1820 2023-12-13  Jakub Jelinek  <jakub@redhat.com>
1822         PR target/112962
1823         * config/i386/i386.cc (ix86_gimple_fold_builtin): For shifts
1824         and abs without lhs replace with nop.
1826 2023-12-13  Richard Biener  <rguenther@suse.de>
1828         * emit-rtl.cc (set_mem_attributes_minus_bitpos): Preserve
1829         the offset when rewriting an exising MEM_REF base for
1830         stack slot sharing.
1832 2023-12-13  Richard Biener  <rguenther@suse.de>
1834         PR tree-optimization/112991
1835         PR tree-optimization/112961
1836         * tree-ssa-sccvn.h (do_rpo_vn): Add skip_entry_phis argument.
1837         * tree-ssa-sccvn.cc (do_rpo_vn): Likewise.
1838         (do_rpo_vn_1): Likewise, merge with auto-processing.
1839         (run_rpo_vn): Adjust.
1840         (pass_fre::execute): Likewise.
1841         * tree-if-conv.cc (tree_if_conversion): Revert last change.
1842         Value-number latch block but disable value-numbering of
1843         entry PHIs.
1844         * tree-ssa-uninit.cc (execute_early_warn_uninitialized): Adjust.
1846 2023-12-13  Richard Biener  <rguenther@suse.de>
1848         PR tree-optimization/112990
1849         * match.pd (bit_insert @0 (BIT_FIELD_REF @1 ..) ..):
1850         Restrict to vector modes after lowering.
1852 2023-12-13  Richard Biener  <rguenther@suse.de>
1854         PR middle-end/111591
1855         * cfgexpand.cc (update_alias_info_with_stack_vars): Document
1856         why not adjusting TBAA info on accesses is OK.
1858 2023-12-13  Alexandre Oliva  <oliva@adacore.com>
1860         * doc/invoke.texi (multiflags): Drop extraneous period, use
1861         @pxref instead.
1863 2023-12-13  Victor Do Nascimento  <victor.donascimento@arm.com>
1865         * config/aarch64/aarch64-builtins.cc:
1866         (AARCH64_PLD): New enum aarch64_builtins entry.
1867         (AARCH64_PLDX): Likewise.
1868         (AARCH64_PLI): Likewise.
1869         (AARCH64_PLIX): Likewise.
1870         (aarch64_init_prefetch_builtin): New.
1871         (aarch64_general_init_builtins): Call prefetch init function.
1872         (aarch64_expand_prefetch_builtin): New.
1873         (aarch64_general_expand_builtin):  Add prefetch expansion.
1874         (require_const_argument): New.
1875         * config/aarch64/aarch64.md (UNSPEC_PLDX): New.
1876         (aarch64_pldx): Likewise.
1877         * config/aarch64/arm_acle.h (__pld): Likewise.
1878         (__pli): Likewise.
1879         (__plix): Likewise.
1880         (__pldx): Likewise.
1882 2023-12-13  Kewen Lin  <linkw@linux.ibm.com>
1884         PR tree-optimization/112788
1885         * value-range.h (range_compatible_p): Workaround same type mode but
1886         different type precision issue for rs6000 scalar float types
1887         _Float128 and long double.
1889 2023-12-13  Jiufu Guo  <guojiufu@linux.ibm.com>
1891         * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Add code to use
1892         pli for 34bit constant.
1894 2023-12-13  Jiufu Guo  <guojiufu@linux.ibm.com>
1896         * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Add new
1897         parameter to record number of instructions to build the constant.
1898         (num_insns_constant_gpr): Call rs6000_emit_set_long_const to compute
1899         num_insn.
1901 2023-12-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1903         * config/riscv/riscv-vector-costs.cc (costs::analyze_loop_vinfo): New function.
1904         (costs::record_potential_vls_unrolling): Ditto.
1905         (costs::prefer_unrolled_loop): Ditto.
1906         (costs::better_main_loop_than_p): Ditto.
1907         (costs::add_stmt_cost): Ditto.
1908         * config/riscv/riscv-vector-costs.h (enum cost_type_enum): New enum.
1909         * config/riscv/t-riscv: Add new include files.
1911 2023-12-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1913         * config/riscv/riscv-vector-costs.cc (get_current_lmul): Remove it.
1914         (compute_estimated_lmul): New function.
1915         (costs::costs): Refactor.
1916         (costs::preferred_new_lmul_p): Ditto.
1917         (preferred_new_lmul_p): Ditto.
1918         (costs::better_main_loop_than_p): Ditto.
1919         * config/riscv/riscv-vector-costs.h (struct autovec_info): Remove it.
1921 2023-12-12  Martin Jambor  <mjambor@suse.cz>
1923         PR tree-optimization/112822
1924         * tree-sra.cc (load_assign_lhs_subreplacements): Invoke
1925         force_gimple_operand_gsi also when LHS has partial stores and RHS is a
1926         VIEW_CONVERT_EXPR.
1928 2023-12-12  Jason Merrill  <jason@redhat.com>
1929             Nathaniel Shead   <nathanieloshead@gmail.com>
1931         * tree-core.h (enum clobber_kind): Rename CLOBBER_EOL to
1932         CLOBBER_STORAGE_END.  Add CLOBBER_STORAGE_BEGIN,
1933         CLOBBER_OBJECT_BEGIN, CLOBBER_OBJECT_END.
1934         * gimple-lower-bitint.cc
1935         * gimple-ssa-warn-access.cc
1936         * gimplify.cc
1937         * tree-inline.cc
1938         * tree-ssa-ccp.cc: Adjust for rename.
1939         * tree-pretty-print.cc: And handle new values.
1941 2023-12-12  Szabolcs Nagy  <szabolcs.nagy@arm.com>
1943         * config/aarch64/aarch64.cc (aarch64_override_options): Update.
1944         (aarch64_handle_attr_branch_protection): Update.
1945         * config/arm/aarch-common-protos.h (aarch_parse_branch_protection):
1946         Remove.
1947         (aarch_validate_mbranch_protection): Add new argument.
1948         * config/arm/aarch-common.cc (aarch_handle_no_branch_protection):
1949         Update.
1950         (aarch_handle_standard_branch_protection): Update.
1951         (aarch_handle_pac_ret_protection): Update.
1952         (aarch_handle_pac_ret_leaf): Update.
1953         (aarch_handle_pac_ret_b_key): Update.
1954         (aarch_handle_bti_protection): Update.
1955         (aarch_parse_branch_protection): Remove.
1956         (next_tok): New.
1957         (aarch_validate_mbranch_protection): Rewrite.
1958         * config/arm/aarch-common.h (struct aarch_branch_protect_type):
1959         Add field "alone".
1960         * config/arm/arm.cc (arm_configure_build_target): Update.
1962 2023-12-12  Szabolcs Nagy  <szabolcs.nagy@arm.com>
1964         * config/aarch64/aarch64.cc (aarch64_override_options_after_change_1):
1965         Do not override branch_protection options.
1966         (aarch64_override_options): Remove accepted_branch_protection_string.
1967         * config/arm/aarch-common.cc (BRANCH_PROTECT_STR_MAX): Remove.
1968         (aarch_parse_branch_protection): Remove
1969         accepted_branch_protection_string.
1970         * config/arm/arm.cc: Likewise.
1972 2023-12-12  Richard Biener  <rguenther@suse.de>
1974         PR tree-optimization/112736
1975         * tree-vect-stmts.cc (vectorizable_load): Extend optimization
1976         to avoid peeling for gaps to handle single-element non-groups
1977         we now allow with SLP.
1979 2023-12-12  Richard Biener  <rguenther@suse.de>
1981         PR ipa/92606
1982         * ipa-icf.cc (sem_item_optimizer::merge_classes): Check
1983         both source and alias for the no_icf attribute.
1984         * doc/extend.texi (no_icf): Document variable attribute.
1986 2023-12-12  Richard Biener  <rguenther@suse.de>
1988         PR tree-optimization/112961
1989         * tree-if-conv.cc (tree_if_conversion): Instead of excluding
1990         the latch block from VN, add a fake entry edge.
1992 2023-12-12  Xi Ruoyao  <xry111@xry111.site>
1994         PR middle-end/107723
1995         * convert.cc (convert_to_integer_1) [case BUILT_IN_TRUNC]: Break
1996         early if !flag_fp_int_builtin_inexact and flag_trapping_math.
1998 2023-12-12  Pan Li  <pan2.li@intel.com>
2000         * config/riscv/riscv-avlprop.cc (avl_can_be_propagated_p):
2001         Disable the avl propogation for the vcompress.
2003 2023-12-12  Xi Ruoyao  <xry111@xry111.site>
2005         * config/loongarch/loongarch-opts.h (la_target): Move into #if
2006         for loongarch-def.h.
2007         (loongarch_init_target): Likewise.
2008         (loongarch_config_target): Likewise.
2009         (loongarch_update_gcc_opt_status): Likewise.
2011 2023-12-12  Xi Ruoyao  <xry111@xry111.site>
2013         * config/loongarch/loongarch.cc (loongarch_explicit_relocs_p):
2014         Return true for SYMBOL_PCREL64.  Return true for SYMBOL_GOT_DISP
2015         if TARGET_CMODEL_EXTREME.
2016         (loongarch_split_symbol): Check for la_opt_explicit_relocs !=
2017         EXPLICIT_RELOCS_NONE instead of TARGET_EXPLICIT_RELOCS.
2018         (loongarch_print_operand_reloc): Likewise.
2019         (loongarch_option_override_internal): Likewise.
2020         (loongarch_handle_model_attribute): Likewise.
2021         * doc/invoke.texi (-mcmodel=extreme): Update the compatibility
2022         between it and -mexplicit-relocs=.
2024 2023-12-12  Richard Biener  <rguenther@suse.de>
2026         PR tree-optimization/112939
2027         * tree-ssa-sccvn.cc (visit_phi): When all args are undefined
2028         make sure we end up with a value that was visited, otherwise
2029         fall back to .VN_TOP.
2031 2023-12-12  liuhongt  <hongtao.liu@intel.com>
2033         PR target/112891
2034         * config/i386/i386.cc (ix86_avx_u128_mode_after): Return
2035         AVX_U128_ANY if callee_abi doesn't clobber all_sse_regs to
2036         align with ix86_avx_u128_mode_needed.
2037         (ix86_avx_u128_mode_needed): Return AVX_U128_ClEAN for
2038         sibling_call.
2040 2023-12-12  Alexandre Oliva  <oliva@adacore.com>
2042         PR target/112334
2043         * builtins.h (target_builtins): Add fields for apply_args_size
2044         and apply_result_size.
2045         * builtins.cc (apply_args_size, apply_result_size): Cache
2046         results in fields rather than in static variables.
2047         (get_apply_args_size, set_apply_args_size): New.
2048         (get_apply_result_size, set_apply_result_size): New.
2050 2023-12-12  Hongyu Wang  <hongyu.wang@intel.com>
2052         PR target/112943
2053         * config/i386/i386.md (ashl<mode>3): Add TARGET_APX_NDD to
2054         ix86_expand_binary_operator call.
2055         (<insn><mode>3): Likewise for rshift.
2056         (<insn>di3): Likewise for DImode rotate.
2057         (<insn><mode>3): Likewise for SWI124 rotate.
2059 2023-12-12  Feng Wang  <wangfeng@eswincomputing.com>
2061         * config/riscv/riscv-vector-builtins-functions.def (DEF_RVV_FUNCTION):
2062                                                         Add AVAIL argument.
2063         (read_vl): Using AVAIL argument default value.
2064         (vlenb): Ditto.
2065         (vsetvl): Ditto.
2066         (vsetvlmax): Ditto.
2067         (vle): Ditto.
2068         (vse): Ditto.
2069         (vlm): Ditto.
2070         (vsm): Ditto.
2071         (vlse): Ditto.
2072         (vsse): Ditto.
2073         (vluxei8): Ditto.
2074         (vluxei16): Ditto.
2075         (vluxei32): Ditto.
2076         (vluxei64): Ditto.
2077         (vloxei8): Ditto.
2078         (vloxei16): Ditto.
2079         (vloxei32): Ditto.
2080         (vloxei64): Ditto.
2081         (vsuxei8): Ditto.
2082         (vsuxei16): Ditto.
2083         (vsuxei32): Ditto.
2084         (vsuxei64): Ditto.
2085         (vsoxei8): Ditto.
2086         (vsoxei16): Ditto.
2087         (vsoxei32): Ditto.
2088         (vsoxei64): Ditto.
2089         (vleff): Ditto.
2090         (vadd): Ditto.
2091         (vsub): Ditto.
2092         (vrsub): Ditto.
2093         (vneg): Ditto.
2094         (vwaddu): Ditto.
2095         (vwsubu): Ditto.
2096         (vwadd): Ditto.
2097         (vwsub): Ditto.
2098         (vwcvt_x): Ditto.
2099         (vwcvtu_x): Ditto.
2100         (vzext): Ditto.
2101         (vsext): Ditto.
2102         (vadc): Ditto.
2103         (vmadc): Ditto.
2104         (vsbc): Ditto.
2105         (vmsbc): Ditto.
2106         (vand): Ditto.
2107         (vor): Ditto.
2108         (vxor): Ditto.
2109         (vnot): Ditto.
2110         (vsll): Ditto.
2111         (vsra): Ditto.
2112         (vsrl): Ditto.
2113         (vnsrl): Ditto.
2114         (vnsra): Ditto.
2115         (vncvt_x): Ditto.
2116         (vmseq): Ditto.
2117         (vmsne): Ditto.
2118         (vmsltu): Ditto.
2119         (vmslt): Ditto.
2120         (vmsleu): Ditto.
2121         (vmsle): Ditto.
2122         (vmsgtu): Ditto.
2123         (vmsgt): Ditto.
2124         (vmsgeu): Ditto.
2125         (vmsge): Ditto.
2126         (vminu): Ditto.
2127         (vmin): Ditto.
2128         (vmaxu): Ditto.
2129         (vmax): Ditto.
2130         (vmul): Ditto.
2131         (vmulh): Ditto.
2132         (vmulhu): Ditto.
2133         (vmulhsu): Ditto.
2134         (vdivu): Ditto.
2135         (vdiv): Ditto.
2136         (vremu): Ditto.
2137         (vrem): Ditto.
2138         (vwmul): Ditto.
2139         (vwmulu): Ditto.
2140         (vwmulsu): Ditto.
2141         (vmacc): Ditto.
2142         (vnmsac): Ditto.
2143         (vmadd): Ditto.
2144         (vnmsub): Ditto.
2145         (vwmaccu): Ditto.
2146         (vwmacc): Ditto.
2147         (vwmaccsu): Ditto.
2148         (vwmaccus): Ditto.
2149         (vmerge): Ditto.
2150         (vmv_v): Ditto.
2151         (vsaddu): Ditto.
2152         (vsadd): Ditto.
2153         (vssubu): Ditto.
2154         (vssub): Ditto.
2155         (vaaddu): Ditto.
2156         (vaadd): Ditto.
2157         (vasubu): Ditto.
2158         (vasub): Ditto.
2159         (vsmul): Ditto.
2160         (vssrl): Ditto.
2161         (vssra): Ditto.
2162         (vnclipu): Ditto.
2163         (vnclip): Ditto.
2164         (vfadd): Ditto.
2165         (vfsub): Ditto.
2166         (vfrsub): Ditto.
2167         (vfadd_frm): Ditto.
2168         (vfsub_frm): Ditto.
2169         (vfrsub_frm): Ditto.
2170         (vfwadd): Ditto.
2171         (vfwsub): Ditto.
2172         (vfwadd_frm): Ditto.
2173         (vfwsub_frm): Ditto.
2174         (vfmul): Ditto.
2175         (vfdiv): Ditto.
2176         (vfrdiv): Ditto.
2177         (vfmul_frm): Ditto.
2178         (vfdiv_frm): Ditto.
2179         (vfrdiv_frm): Ditto.
2180         (vfwmul): Ditto.
2181         (vfwmul_frm): Ditto.
2182         (vfmacc): Ditto.
2183         (vfnmsac): Ditto.
2184         (vfmadd): Ditto.
2185         (vfnmsub): Ditto.
2186         (vfnmacc): Ditto.
2187         (vfmsac): Ditto.
2188         (vfnmadd): Ditto.
2189         (vfmsub): Ditto.
2190         (vfmacc_frm): Ditto.
2191         (vfnmacc_frm): Ditto.
2192         (vfmsac_frm): Ditto.
2193         (vfnmsac_frm): Ditto.
2194         (vfmadd_frm): Ditto.
2195         (vfnmadd_frm): Ditto.
2196         (vfmsub_frm): Ditto.
2197         (vfnmsub_frm): Ditto.
2198         (vfwmacc): Ditto.
2199         (vfwnmacc): Ditto.
2200         (vfwmsac): Ditto.
2201         (vfwnmsac): Ditto.
2202         (vfwmacc_frm): Ditto.
2203         (vfwnmacc_frm): Ditto.
2204         (vfwmsac_frm): Ditto.
2205         (vfwnmsac_frm): Ditto.
2206         (vfsqrt): Ditto.
2207         (vfsqrt_frm): Ditto.
2208         (vfrsqrt7): Ditto.
2209         (vfrec7): Ditto.
2210         (vfrec7_frm): Ditto.
2211         (vfmin): Ditto.
2212         (vfmax): Ditto.
2213         (vfsgnj): Ditto.
2214         (vfsgnjn): Ditto.
2215         (vfsgnjx): Ditto.
2216         (vfneg): Ditto.
2217         (vfabs): Ditto.
2218         (vmfeq): Ditto.
2219         (vmfne): Ditto.
2220         (vmflt): Ditto.
2221         (vmfle): Ditto.
2222         (vmfgt): Ditto.
2223         (vmfge): Ditto.
2224         (vfclass): Ditto.
2225         (vfmerge): Ditto.
2226         (vfmv_v): Ditto.
2227         (vfcvt_x): Ditto.
2228         (vfcvt_xu): Ditto.
2229         (vfcvt_rtz_x): Ditto.
2230         (vfcvt_rtz_xu): Ditto.
2231         (vfcvt_f): Ditto.
2232         (vfcvt_x_frm): Ditto.
2233         (vfcvt_xu_frm): Ditto.
2234         (vfcvt_f_frm): Ditto.
2235         (vfwcvt_x): Ditto.
2236         (vfwcvt_xu): Ditto.
2237         (vfwcvt_rtz_x): Ditto.
2238         (vfwcvt_rtz_xu) Ditto.:
2239         (vfwcvt_f): Ditto.
2240         (vfwcvt_x_frm): Ditto.
2241         (vfwcvt_xu_frm) Ditto.:
2242         (vfncvt_x): Ditto.
2243         (vfncvt_xu): Ditto.
2244         (vfncvt_rtz_x): Ditto.
2245         (vfncvt_rtz_xu): Ditto.
2246         (vfncvt_f): Ditto.
2247         (vfncvt_rod_f): Ditto.
2248         (vfncvt_x_frm): Ditto.
2249         (vfncvt_xu_frm): Ditto.
2250         (vfncvt_f_frm): Ditto.
2251         (vredsum): Ditto.
2252         (vredmaxu): Ditto.
2253         (vredmax): Ditto.
2254         (vredminu): Ditto.
2255         (vredmin): Ditto.
2256         (vredand): Ditto.
2257         (vredor): Ditto.
2258         (vredxor): Ditto.
2259         (vwredsum): Ditto.
2260         (vwredsumu): Ditto.
2261         (vfredusum): Ditto.
2262         (vfredosum): Ditto.
2263         (vfredmax): Ditto.
2264         (vfredmin): Ditto.
2265         (vfredusum_frm): Ditto.
2266         (vfredosum_frm): Ditto.
2267         (vfwredosum): Ditto.
2268         (vfwredusum): Ditto.
2269         (vfwredosum_frm): Ditto.
2270         (vfwredusum_frm): Ditto.
2271         (vmand): Ditto.
2272         (vmnand): Ditto.
2273         (vmandn): Ditto.
2274         (vmxor): Ditto.
2275         (vmor): Ditto.
2276         (vmnor): Ditto.
2277         (vmorn): Ditto.
2278         (vmxnor): Ditto.
2279         (vmmv): Ditto.
2280         (vmclr): Ditto.
2281         (vmset): Ditto.
2282         (vmnot): Ditto.
2283         (vcpop): Ditto.
2284         (vfirst): Ditto.
2285         (vmsbf): Ditto.
2286         (vmsif): Ditto.
2287         (vmsof): Ditto.
2288         (viota): Ditto.
2289         (vid): Ditto.
2290         (vmv_x): Ditto.
2291         (vmv_s): Ditto.
2292         (vfmv_f): Ditto.
2293         (vfmv_s): Ditto.
2294         (vslideup): Ditto.
2295         (vslidedown): Ditto.
2296         (vslide1up): Ditto.
2297         (vslide1down): Ditto.
2298         (vfslide1up): Ditto.
2299         (vfslide1down): Ditto.
2300         (vrgather): Ditto.
2301         (vrgatherei16): Ditto.
2302         (vcompress): Ditto.
2303         (vundefined): Ditto.
2304         (vreinterpret): Ditto.
2305         (vlmul_ext): Ditto.
2306         (vlmul_trunc): Ditto.
2307         (vset): Ditto.
2308         (vget): Ditto.
2309         (vcreate): Ditto.
2310         (vlseg): Ditto.
2311         (vsseg): Ditto.
2312         (vlsseg): Ditto.
2313         (vssseg): Ditto.
2314         (vluxseg): Ditto.
2315         (vloxseg): Ditto.
2316         (vsuxseg): Ditto.
2317         (vsoxseg): Ditto.
2318         (vlsegff): Ditto.
2319         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FUNCTION): Using variadic macro.
2320         * config/riscv/riscv-vector-builtins.h (struct function_group_info):
2321                                         Add avail function interface into struct.
2322         * config/riscv/t-riscv: Add dependency
2323         * config/riscv/riscv-vector-builtins-avail.h: New file.The definition of AVAIL marco.
2325 2023-12-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2327         * config/riscv/riscv-protos.h (estimated_poly_value): New function.
2328         * config/riscv/riscv-v.cc (estimated_poly_value): Ditto.
2329         * config/riscv/riscv.cc (riscv_estimated_poly_value): Move RVV POLY
2330         VALUE estimation to riscv-v.cc
2332 2023-12-12  Yang Yujie  <yangyujie@loongson.cn>
2334         * config/loongarch/loongarch.cc: Do not restore the saved eh_return
2335         data registers ($r4-$r7) for a normal return of a function that calls
2336         __builtin_eh_return elsewhere.
2337         * config/loongarch/loongarch-protos.h: Same.
2338         * config/loongarch/loongarch.md: Same.
2340 2023-12-11  Richard Sandiford  <richard.sandiford@arm.com>
2342         * recog.cc (constrain_operands): Pass VOIDmode to
2343         strict_memory_address_p for 'p' constraints in asms.
2344         * rtl-ssa/changes.cc (recog_level2): Skip redundant constrain_operands
2345         for asms.
2347 2023-12-11  Jason Merrill  <jason@redhat.com>
2349         * common.opt: Add comment.
2351 2023-12-11  Alexandre Oliva  <oliva@adacore.com>
2353         PR middle-end/112784
2354         * expr.cc (emit_block_move_via_loop): Call int_mode_for_size
2355         for maybe-too-wide sizes.
2356         (emit_block_cmp_via_loop): Likewise.
2358 2023-12-11  Alexandre Oliva  <oliva@adacore.com>
2360         PR target/112778
2361         * builtins.cc (can_store_by_multiple_pieces): New.
2362         (try_store_by_multiple_pieces): Call it.
2364 2023-12-11  Alexandre Oliva  <oliva@adacore.com>
2366         PR target/112804
2367         * builtins.cc (try_store_by_multiple_pieces): Use ptr's mode
2368         for the increment.
2370 2023-12-11  Alexandre Oliva  <oliva@adacore.com>
2372         * doc/invoke.texi (multiflags): Add period after @xref to
2373         silence warning.
2375 2023-12-11  Alexandre Oliva  <oliva@adacore.com>
2377         * config/rl78/rl78.cc (TARGET_HAVE_STRUB_SUPPORT_FOR): Disable.
2379 2023-12-11  Alexandre Oliva  <oliva@adacore.com>
2381         * ipa-strub.cc (pass_ipa_strub::execute): Check that we don't
2382         add indirection to pointer parameters, and document attribute
2383         access non-interactions.
2385 2023-12-11  Roger Sayle  <roger@nextmovesoftware.com>
2387         PR rtl-optimization/112380
2388         * combine.cc (expand_field_assignment): Check if gen_lowpart
2389         returned a CLOBBER, and avoid calling gen_simplify_binary with
2390         it if so.
2392 2023-12-11  Andrew Pinski  <quic_apinski@quicinc.com>
2394         PR target/111867
2395         * config/aarch64/aarch64.cc (aarch64_float_const_representable_p): For BFmode,
2396         only accept +0.0.
2398 2023-12-11  Andrew Pinski  <quic_apinski@quicinc.com>
2400         PR tree-optimization/111972
2401         PR tree-optimization/110637
2402         * match.pd (`(convert)(zeroone !=/== CST)`): Match
2403         and simplify to ((convert)zeroone){,^1}.
2404         * fold-const.cc (fold_binary_loc): Remove
2405         transformation of `(~a) & 1` and `(a ^ 1) & 1`
2406         into `(convert)(a == 0)`.
2408 2023-12-11  Andrew Pinski  <quic_apinski@quicinc.com>
2410         PR middle-end/112935
2411         * expr.cc (expand_expr_real_2): Use
2412         gimple_zero_one_valued_p instead of tree_nonzero_bits
2413         to find boolean defined expressions.
2415 2023-12-11  Mikael Pettersson  <mikpelinux@gmail.com>
2417         PR target/112413
2418         * config/m68k/linux.h (ASM_RETURN_CASE_JUMP): For
2419         TARGET_LONG_JUMP_TABLE_OFFSETS, reference the jump table
2420         via its label.
2421         * config/m68k/m68kelf.h (ASM_RETURN_CASE_JUMP): Likewise.
2422         * config/m68k/netbsd-elf.h (ASM_RETURN_CASE_JUMP): Likewise.
2424 2023-12-11  Andre Vieira  <andre.simoesdiasvieira@arm.com>
2426         * config/aarch64/aarch64.cc (lane_size): New function.
2427         (aarch64_simd_clone_compute_vecsize_and_simdlen): Determine simdlen according to NDS rule
2428         and reject combination of simdlen and types that lead to vectors larger than 128bits.
2430 2023-12-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2432         * rtl-ssa/insns.cc (function_info::record_use): Add !ordered_p case.
2434 2023-12-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2436         * config/riscv/riscv-v.cc (get_gather_index_mode): New function.
2437         (shuffle_series_patterns): Robostify shuffle index.
2438         (shuffle_generic_patterns): Ditto.
2440 2023-12-11  Victor Do Nascimento  <victor.donascimento@arm.com>
2442         * config/aarch64/arm_neon.h (vldap1_lane_u64): Add
2443         `const' to `__builtin_aarch64_simd_di *' cast.
2444         (vldap1q_lane_u64): Likewise.
2445         (vldap1_lane_s64): Cast __src to `const __builtin_aarch64_simd_di *'.
2446         (vldap1q_lane_s64): Likewise.
2447         (vldap1_lane_f64): Cast __src to `const __builtin_aarch64_simd_df *'.
2448         (vldap1q_lane_f64): Cast __src to `const __builtin_aarch64_simd_df *'.
2449         (vldap1_lane_p64): Add `const' to `__builtin_aarch64_simd_di *' cast.
2450         (vldap1q_lane_p64): Add `const' to `__builtin_aarch64_simd_di *' cast.
2451         (vstl1_lane_u64): remove stray `const'.
2452         (vstl1_lane_s64): Cast __src to `__builtin_aarch64_simd_di *'.
2453         (vstl1q_lane_s64): Likewise.
2454         (vstl1_lane_f64): Cast __src to `const __builtin_aarch64_simd_df *'.
2455         (vstl1q_lane_f64): Likewise.
2457 2023-12-11  Robin Dapp  <rdapp@ventanamicro.com>
2459         PR target/112853
2460         * config/riscv/riscv-v.cc (expand_const_vector):  Fix step
2461         calculation.
2462         (modulo_sel_indices): Also perform modulo for variable-length
2463         constants.
2464         (shuffle_series): Recognize series permutations.
2465         (expand_vec_perm_const_1): Add shuffle_series.
2467 2023-12-11  liuhongt  <hongtao.liu@intel.com>
2469         * match.pd (VCE (a cmp b ? -1 : 0) < 0) ? c : d ---> (VCE ((a
2470         cmp b) ? (VCE:c) : (VCE:d))): New gimple simplication.
2472 2023-12-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2474         PR target/112431
2475         * config/riscv/vector.md: Support highest overlap for wv instructions.
2477 2023-12-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2479         * config/riscv/riscv-vsetvl.cc (extract_single_source): Fix ICE.
2481 2023-12-11  Jakub Jelinek  <jakub@redhat.com>
2483         * doc/extend.texi (__sync_fetch_and_add, __sync_fetch_and_sub,
2484         __sync_fetch_and_or, __sync_fetch_and_and, __sync_fetch_and_xor,
2485         __sync_fetch_and_nand, __sync_add_and_fetch, __sync_sub_and_fetch,
2486         __sync_or_and_fetch, __sync_and_and_fetch, __sync_xor_and_fetch,
2487         __sync_nand_and_fetch, __sync_bool_compare_and_swap,
2488         __sync_val_compare_and_swap, __sync_lock_test_and_set,
2489         __sync_lock_release, __atomic_load_n, __atomic_load, __atomic_store_n,
2490         __atomic_store, __atomic_exchange_n, __atomic_exchange,
2491         __atomic_compare_exchange_n, __atomic_compare_exchange,
2492         __atomic_add_fetch, __atomic_sub_fetch, __atomic_and_fetch,
2493         __atomic_xor_fetch, __atomic_or_fetch, __atomic_nand_fetch,
2494         __atomic_fetch_add, __atomic_fetch_sub, __atomic_fetch_and,
2495         __atomic_fetch_xor, __atomic_fetch_or, __atomic_fetch_nand,
2496         __atomic_test_and_set, __atomic_clear, __atomic_thread_fence,
2497         __atomic_signal_fence, __atomic_always_lock_free,
2498         __atomic_is_lock_free, __builtin_add_overflow,
2499         __builtin_sadd_overflow, __builtin_saddl_overflow,
2500         __builtin_saddll_overflow, __builtin_uadd_overflow,
2501         __builtin_uaddl_overflow, __builtin_uaddll_overflow,
2502         __builtin_sub_overflow, __builtin_ssub_overflow,
2503         __builtin_ssubl_overflow, __builtin_ssubll_overflow,
2504         __builtin_usub_overflow, __builtin_usubl_overflow,
2505         __builtin_usubll_overflow, __builtin_mul_overflow,
2506         __builtin_smul_overflow, __builtin_smull_overflow,
2507         __builtin_smulll_overflow, __builtin_umul_overflow,
2508         __builtin_umull_overflow, __builtin_umulll_overflow,
2509         __builtin_add_overflow_p, __builtin_sub_overflow_p,
2510         __builtin_mul_overflow_p, __builtin_addc, __builtin_addcl,
2511         __builtin_addcll, __builtin_subc, __builtin_subcl, __builtin_subcll,
2512         __builtin_alloca, __builtin_alloca_with_align,
2513         __builtin_alloca_with_align_and_max, __builtin_speculation_safe_value,
2514         __builtin_nan, __builtin_nand32, __builtin_nand64, __builtin_nand128,
2515         __builtin_nanf, __builtin_nanl, __builtin_nanf@var{n},
2516         __builtin_nanf@var{n}x, __builtin_nans, __builtin_nansd32,
2517         __builtin_nansd64, __builtin_nansd128, __builtin_nansf,
2518         __builtin_nansl, __builtin_nansf@var{n}, __builtin_nansf@var{n}x,
2519         __builtin_ffs, __builtin_clz, __builtin_ctz, __builtin_clrsb,
2520         __builtin_popcount, __builtin_parity, __builtin_bswap16,
2521         __builtin_bswap32, __builtin_bswap64, __builtin_bswap128,
2522         __builtin_extend_pointer, __builtin_goacc_parlevel_id,
2523         __builtin_goacc_parlevel_size, vec_clrl, vec_clrr, vec_mulh, vec_mul,
2524         vec_div, vec_dive, vec_mod, __builtin_rx_mvtc): Use @var{...} around
2525         parameter names.
2526         (vec_rl, vec_sl, vec_sr, vec_sra): Likewise.  Use @var{...} also
2527         around A, B and R in description.
2529 2023-12-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2531         * config/riscv/riscv-selftests.cc (riscv_run_selftests):
2532         Remove poly self test when FIXED-VLMAX.
2534 2023-12-11  Fei Gao  <gaofei@eswincomputing.com>
2535             Xiao Zeng <zengxiao@eswincomputing.com>
2537         * ifcvt.cc (noce_cond_zero_binary_op_supported): Add support for AND.
2538         (noce_bbs_ok_for_cond_zero_arith): Likewise.
2539         (noce_try_cond_zero_arith): Likewise.
2541 2023-12-11  liuhongt  <hongtao.liu@intel.com>
2543         PR target/112904
2544         * config/i386/mmx.md (*xop_pcmov_<mode>): New define_insn.
2546 2023-12-11  Haochen Gui  <guihaoc@gcc.gnu.org>
2548         PR target/112707
2549         * config/rs6000/rs6000.h (TARGET_FCTID): Define.
2550         * config/rs6000/rs6000.md (lrint<mode>di2): Add guard TARGET_FCTID.
2551         * (lround<mode>di2): Replace TARGET_FPRND with TARGET_FCTID.
2553 2023-12-11  Haochen Gui  <guihaoc@gcc.gnu.org>
2555         PR target/112707
2556         * config/rs6000/rs6000.md (expand lrint<mode>si2): New.
2557         (insn lrint<mode>si2): Rename to...
2558         (*lrint<mode>si): ...this.
2559         (lrint<mode>si_di): New.
2561 2023-12-10  Fei Gao  <gaofei@eswincomputing.com>
2562             Xiao Zeng <zengxiao@eswincomputing.com>
2564         * ifcvt.cc (noce_cond_zero_binary_op_supported): Add support for shift
2565         like op.
2567 2023-12-10  Richard Sandiford  <richard.sandiford@arm.com>
2569         PR target/112931
2570         PR target/112933
2571         * config/aarch64/aarch64-protos.h (aarch64_sve_reinterpret): Declare.
2572         * config/aarch64/aarch64.cc (aarch64_sve_reinterpret): New function.
2573         * config/aarch64/aarch64-sve-builtins-sme.cc (svread_za_impl::expand)
2574         (svwrite_za_impl::expand): Use it to cast the SVE register to the
2575         right mode.
2577 2023-12-10  Richard Sandiford  <richard.sandiford@arm.com>
2579         PR target/112930
2580         * config/aarch64/aarch64.cc (aarch64_sme_mode_switch_regs::add_reg):
2581         Force specific SVE modes for single registers as well as structures.
2583 2023-12-10  Jason Merrill  <jason@redhat.com>
2585         * doc/invoke.texi (-fpermissive): Mention ObjC++ for -Wnarrowing.
2587 2023-12-10  Jeff Law  <jlaw@ventanamicro.com>
2589         * config/h8300/addsub.md (uaddv<mode>4, usubv<mode>4): New expanders.
2590         (uaddv): New define_insn_and_split plus post-reload pattern.
2592 2023-12-10  Jeff Law  <jlaw@ventanamicro.com>
2594         * config/h8300/h8300-protos.h (use_extvsi): Prototype.
2595         * config/h8300/combiner.md: Two new define_insn_and_split patterns
2596         to implement signed bitfield extractions.
2597         * config/h8300/h8300.cc (use_extvsi): New function.
2599 2023-12-10  Jeff Law  <jlaw@ventanamicro.com>
2601         * config/h8300/combiner.md (single bit signed bitfield extraction): Fix
2602         length computation when the bit we want is in the low half word.
2604 2023-12-10  Jeff Law  <jlaw@ventanamicro.com>
2606         * config/h8300/h8300.cc (compute_a_shift_length): Fix computation
2607         of logical shifts on the H8/SX.
2609 2023-12-09  Jakub Jelinek  <jakub@redhat.com>
2611         PR tree-optimization/112887
2612         * tree-ssa-phiopt.cc (hoist_adjacent_loads): Change type of
2613         param_align, param_align_bits, offset1, offset2, size2 and align1
2614         variables from int or unsigned int to unsigned HOST_WIDE_INT.
2616 2023-12-09  Costas Argyris  <costas.argyris@gmail.com>
2617             Jakub Jelinek  <jakub@redhat.com>
2619         PR driver/93019
2620         * gcc.cc (driver::finalize): Call XDELETEVEC on mdswitches before
2621         clearing it.
2623 2023-12-09  Jakub Jelinek  <jakub@redhat.com>
2625         * attribs.h (any_nonignored_attribute_p): Declare.
2626         * attribs.cc (any_nonignored_attribute_p): New function.
2628 2023-12-09  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2630         PR target/112932
2631         * config/riscv/vector.md (movmisalign<mode>): Fix VLSmode bugs.
2633 2023-12-09  Alexandre Oliva  <oliva@adacore.com>
2635         * tree-emutls.cc: Include diagnostic-core.h.
2636         (pass_ipa_lower_emutls::gate): Skip if errors were seen.
2638 2023-12-08  Vladimir N. Makarov  <vmakarov@redhat.com>
2640         PR rtl-optimization/112875
2641         * lra-eliminations.cc (lra_eliminate_regs_1): Change an assert.
2642         Add ASM_OPERANDS case.
2644 2023-12-08  Robin Dapp  <rdapp@ventanamicro.com>
2646         PR target/112109
2647         * config/riscv/riscv-protos.h (expand_strcmp): Declare.
2648         * config/riscv/riscv-string.cc (riscv_expand_strcmp): Add
2649         strategy handling and delegation to scalar and vector expanders.
2650         (expand_strcmp): Vectorized implementation.
2651         * config/riscv/riscv.md: Add TARGET_VECTOR to strcmp and strncmp
2652         expander.
2654 2023-12-08  Robin Dapp  <rdapp@ventanamicro.com>
2656         PR target/112109
2657         * config/riscv/riscv-protos.h (expand_rawmemchr): Add strlen
2658         parameter.
2659         * config/riscv/riscv-string.cc (riscv_expand_strlen): Call
2660         rawmemchr.
2661         (expand_rawmemchr): Add strlen handling.
2662         * config/riscv/riscv.md: Add TARGET_VECTOR to strlen expander.
2664 2023-12-08  Richard Sandiford  <richard.sandiford@arm.com>
2666         * config/aarch64/aarch64-early-ra.cc (allocno_info::chain_next):
2667         Put into an enum with...
2668         (allocno_info::last_def_point): ...new member variable.
2669         (allocno_info::m_current_bb_point): New member variable.
2670         (likely_operand_match_p): Switch based on get_constraint_type,
2671         rather than based on rtx code.  Handle relaxed and special memory
2672         constraints.
2673         (early_ra::record_copy): Allow the source of an equivalence to be
2674         assigned to more than once.
2675         (early_ra::record_allocno_use): Invalidate any previous equivalence.
2676         Initialize last_def_point.
2677         (early_ra::record_allocno_def): Set last_def_point.
2678         (early_ra::valid_equivalence_p): New function, split out from...
2679         (early_ra::record_copy): ...here.  Use last_def_point to handle
2680         source registers that have a later definition.
2681         (make_pass_aarch64_early_ra): Fix comment.
2683 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
2685         Revert:
2686         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
2688         * config/arm/arm_neon.h
2689         (vld1q_u8_x2, vld1q_u16_x2, vld1q_u32_x2, vld1q_u64_x2): New.
2690         (vld1q_s8_x2, vld1q_s16_x2, vld1q_s32_x2, vld1q_s64_x2): New.
2691         (vld1q_f16_x2, vld1q_f32_x2): New.
2692         (vld1q_p8_x2, vld1q_p16_x2, vld1q_p64_x2): New.
2693         (vld1q_bf16_x2): New.
2694         * config/arm/arm_neon_builtins.def (vld1_x2): New entries.
2695         * config/arm/neon.md (vld1_x2<mode>): New.
2697 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
2699         Revert:
2700         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
2702         * config/arm/arm_neon.h
2703         (vld1q_u8_x3, vld1q_u16_x3, vld1q_u32_x3, vld1q_u64_x3): New.
2704         (vld1q_s8_x3, vld1q_s16_x3, vld1q_s32_x3, vld1q_s64_x3): New.
2705         (vld1q_f16_x3, vld1q_f32_x3): New.
2706         (vld1q_p8_x3, vld1q_p16_x3, vld1q_p64_x3): New.
2707         (vld1q_bf16_x3): New.
2708         * config/arm/arm_neon_builtins.def (vld1_x3): New entries.
2709         * config/arm/neon.md (vld1_x3<mode>): New.
2711 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
2713         Revert:
2714         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
2716         * config/arm/arm_neon.h
2717         (vld1q_u8_x4, vld1q_u16_x4, vld1q_u32_x4, vld1q_u64_x4): New.
2718         (vld1q_s8_x4, vld1q_s16_x4, vld1q_s32_x4, vld1q_s64_x4): New.
2719         (vld1q_f16_x4, vld1q_f32_x4): New.
2720         (vld1q_p8_x4, vld1q_p16_x4, vld1q_p64_x4): New.
2721         (vld1q_bf16_x4): New.
2722         * config/arm/arm_neon_builtins.def (vld1_x4): New entries.
2723         * config/arm/neon.md (vld1_x4<mode>): New.
2725 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
2727         Revert:
2728         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
2730         * config/arm/arm_neon.h
2731         (vst1_u8_x2, vst1_u16_x2, vst1_u32_x2, vst1_u64_x2): New.
2732         (vst1_s8_x2, vst1_s16_x2, vst1_s32_x2, vst1_s64_x2): New.
2733         (vst1_f16_x2, vst1_f32_x2): New.
2734         (vst1_p8_x2, vst1_p16_x2, vst1_p64_x2): New.
2735         (vst1_bf16_x2): New.
2736         * config/arm/arm_neon_builtins.def (vst1_x2): New entries.
2737         * config/arm/neon.md (vst1_x2<mode>): New.
2739 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
2741         Revert:
2742         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
2744         * config/arm/arm_neon.h
2745         (vst1_u8_x3, vst1_u16_x3, vst1_u32_x3, vst1_u64_x3): New.
2746         (vst1_s8_x3, vst1_s16_x3, vst1_s32_x3, vst1_s64_x3): New.
2747         (vst1_f16_x3, vst1_f32_x3): New.
2748         (vst1_p8_x3, vst1_p16_x3, vst1_p64_x3): New.
2749         (vst1_bf16_x3): New.
2750         * config/arm/arm_neon_builtins.def (vst1_x3): New entries.
2751         * config/arm/neon.md (vst1_x3<mode>): New.
2753 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
2755         Revert:
2756         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
2758         * config/arm/arm_neon.h
2759         (vst1_u8_x4, vst1_u16_x4, vst1_u32_x4, vst1_u64_x4): New.
2760         (vst1_s8_x4, vst1_s16_x4, vst1_s32_x4, vst1_s64_x4): New.
2761         (vst1_f16_x4, vst1_f32_x4): New.
2762         (vst1_p8_x4, vst1_p16_x4, vst1_p64_x4): New.
2763         (vst1_bf16_x4): New.
2764         * config/arm/arm_neon_builtins.def (vst1_x4): New entries.
2765         * config/arm/neon.md (vst1_x4<mode>): New.
2767 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
2769         Revert:
2770         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
2772         * config/arm/arm_neon.h
2773         (vst1q_u8_x2, vst1q_u16_x2, vst1q_u32_x2, vst1q_u64_x2): New.
2774         (vst1q_s8_x2, vst1q_s16_x2, vst1q_s32_x2, vst1q_s64_x2): New.
2775         (vst1q_f16_x2, vst1q_f32_x2): New.
2776         (vst1q_p8_x2, vst1q_p16_x2, vst1q_p64_x2): New.
2777         (vst1q_bf16_x2): New.
2778         * config/arm/arm_neon_builtins.def (vst1q_x2): New entries.
2779         * config/arm/neon.md
2780         (neon_vst1<VMEMX2_q>_x2<VDQX:mode>): Updated from
2781         neon_vst1_x2<mode>.
2782         * config/arm/iterators.md (VMEMX2): New mode iterator.
2783         (VMEMX2_q): New mode attribute.
2785 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
2787         Revert:
2788         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
2790         * config/arm/arm_neon.h
2791         (vst1q_u8_x3, vst1q_u16_x3, vst1q_u32_x3, vst1q_u64_x3): New.
2792         (vst1q_s8_x3, vst1q_s16_x3, vst1q_s32_x3, vst1q_s64_x3): New.
2793         (vst1q_f16_x3, vst1q_f32_x3): New.
2794         (vst1q_p8_x3, vst1q_p16_x3, vst1q_p64_x3): New.
2795         (vst1q_bf16_x3): New.
2796         * config/arm/arm_neon_builtins.def (vst1q_x3): New entries.
2797         * config/arm/neon.md (neon_vst1q_x3<mode>): New.
2799 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
2801         Revert:
2802         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
2804         * config/arm/arm_neon.h
2805         (vst1q_u8_x4, vst1q_u16_x4, vst1q_u32_x4, vst1q_u64_x4): New.
2806         (vst1q_s8_x4, vst1q_s16_x4, vst1q_s32_x4, vst1q_s64_x4): New.
2807         (vst1q_f16_x4, vst1q_f32_x4): New.
2808         (vst1q_p8_x4, vst1q_p16_x4, vst1q_p64_x4): New.
2809         (vst1q_bf16_x4): New.
2810         * config/arm/arm_neon_builtins.def (vst1q_x4): New entries.
2811         * config/arm/neon.md (neon_vst1q_x4<mode>): New.
2813 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
2815         Revert:
2816         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
2818         * config/arm/arm_neon.h
2819         (vld1_u8_x2, vld1_u16_x2, vld1_u32_x2, vld1_u64_x2): New
2820         (vld1_s8_x2, vld1_s16_x2, vld1_s32_x2, vld1_s64_x2): New.
2821         (vld1_f16_x2, vld1_f32_x2): New.
2822         (vld1_p8_x2, vld1_p16_x2, vld1_p64_x2): New.
2823         (vld1_bf16_x2): New.
2824         (vld1q_types_x2): Updated to use vld1q_x2 from
2825         arm_neon_builtins.def
2826         * config/arm/arm_neon_builtins.def
2827         (vld1_x2): Updated entries.
2828         (vld1q_x2): New entries, but comes from the old vld1_x2
2829         * config/arm/neon.md
2830         (neon_vld1<VMEMX2_q>_x2<VDQX:mode>): Updated
2831         from neon_vld1_x2<mode>.
2833 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
2835         Revert:
2836         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
2838         * config/arm/arm_neon.h
2839         (vld1_u8_x3, vld1_u16_x3, vld1_u32_x3, vld1_u64_x3): New
2840         (vld1_s8_x3, vld1_s16_x3, vld1_s32_x3, vld1_s64_x3): New.
2841         (vld1_f16_x3, vld1_f32_x3): New.
2842         (vld1_p8_x3, vld1_p16_x3, vld1_p64_x3): New.
2843         (vld1_bf16_x3): New.
2844         (vld1q_types_x3): Updated to use vld1q_x3 from
2845         arm_neon_builtins.def
2846         * config/arm/arm_neon_builtins.def
2847         (vld1_x3): Updated entries.
2848         (vld1q_x3): New entries, but comes from the old vld1_x2
2849         * config/arm/neon.md (neon_vld1q_x3<mode>): Updated from
2850         neon_vld1_x3<mode>.
2852 2023-12-08  Richard Earnshaw  <rearnsha@arm.com>
2854         Revert:
2855         2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
2857         * config/arm/arm_neon.h
2858         (vld1_u8_x4, vld1_u16_x4, vld1_u32_x4, vld1_u64_x4): New
2859         (vld1_s8_x4, vld1_s16_x4, vld1_s32_x4, vld1_s64_x4): New.
2860         (vld1_f16_x4, vld1_f32_x4): New.
2861         (vld1_p8_x4, vld1_p16_x4, vld1_p64_x4): New.
2862         (vld1_bf16_x4): New.
2863         (vld1q_types_x4): Updated to use vld1q_x4
2864         from arm_neon_builtins.def
2865         * config/arm/arm_neon_builtins.def
2866         (vld1_x4): Updated entries.
2867         (vld1q_x4): New entries, but comes from the old vld1_x2
2868         * config/arm/neon.md (neon_vld1q_x4<mode>):
2869         Updated from neon_vld1_x4<mode>.
2871 2023-12-08  Tobias Burnus  <tobias@codesourcery.com>
2873         * builtin-types.def (BT_FN_PTR_PTR_SIZE_PTRMODE_PTRMODE): New.
2874         * omp-builtins.def (BUILT_IN_GOMP_REALLOC): New.
2875         * builtins.cc (builtin_fnspec): Handle it.
2876         * gimple-ssa-warn-access.cc (fndecl_alloc_p,
2877         matching_alloc_calls_p): Likewise.
2878         * gimple.cc (nonfreeing_call_p): Likewise.
2879         * predict.cc (expr_expected_value_1): Likewise.
2880         * tree-ssa-ccp.cc (evaluate_stmt): Likewise.
2881         * tree.cc (fndecl_dealloc_argno): Likewise.
2883 2023-12-08  Richard Biener  <rguenther@suse.de>
2885         PR tree-optimization/112909
2886         * tree-ssa-uninit.cc (find_uninit_use): Look through a
2887         single level of SSA name copies with single use.
2889 2023-12-08  Jiahao Xu  <xujiahao@loongson.cn>
2891         * config/loongarch/loongarch.cc (loongarch_try_expand_lsx_vshuf_const): Use
2892         simplify_gen_subreg instead of gen_rtx_SUBREG.
2893         (loongarch_expand_vec_perm_const_2): Ditto.
2894         (loongarch_expand_vec_cond_expr): Ditto.
2896 2023-12-08  Jiahao Xu  <xujiahao@loongson.cn>
2898         * config/loongarch/loongarch.cc (loongarch_vector_costs::determine_suggested_unroll_factor):
2899         If m_has_recip is true, uf return 1.
2900         (loongarch_vector_costs::add_stmt_cost): Detect the use of approximate instruction sequence.
2902 2023-12-08  Jiahao Xu  <xujiahao@loongson.cn>
2904         * config/loongarch/genopts/loongarch.opt.in (recip_mask): New variable.
2905         (-mrecip, -mrecip): New options.
2906         * config/loongarch/lasx.md (div<mode>3): New expander.
2907         (*div<mode>3): Rename.
2908         (sqrt<mode>2): New expander.
2909         (*sqrt<mode>2): Rename.
2910         (rsqrt<mode>2): New expander.
2911         * config/loongarch/loongarch-protos.h (loongarch_emit_swrsqrtsf): New prototype.
2912         (loongarch_emit_swdivsf): Ditto.
2913         * config/loongarch/loongarch.cc (loongarch_option_override_internal): Set
2914         recip_mask for -mrecip and -mrecip= options.
2915         (loongarch_emit_swrsqrtsf): New function.
2916         (loongarch_emit_swdivsf): Ditto.
2917         * config/loongarch/loongarch.h (RECIP_MASK_NONE, RECIP_MASK_DIV, RECIP_MASK_SQRT
2918         RECIP_MASK_RSQRT, RECIP_MASK_VEC_DIV, RECIP_MASK_VEC_SQRT, RECIP_MASK_VEC_RSQRT
2919         RECIP_MASK_ALL): New bitmasks.
2920         (TARGET_RECIP_DIV, TARGET_RECIP_SQRT, TARGET_RECIP_RSQRT, TARGET_RECIP_VEC_DIV
2921         TARGET_RECIP_VEC_SQRT, TARGET_RECIP_VEC_RSQRT): New tests.
2922         * config/loongarch/loongarch.md (sqrt<mode>2): New expander.
2923         (*sqrt<mode>2): Rename.
2924         (rsqrt<mode>2): New expander.
2925         * config/loongarch/loongarch.opt (recip_mask): New variable.
2926         (-mrecip, -mrecip): New options.
2927         * config/loongarch/lsx.md (div<mode>3): New expander.
2928         (*div<mode>3): Rename.
2929         (sqrt<mode>2): New expander.
2930         (*sqrt<mode>2): Rename.
2931         (rsqrt<mode>2): New expander.
2932         * config/loongarch/predicates.md (reg_or_vecotr_1_operand): New predicate.
2933         * doc/invoke.texi (LoongArch Options): Document new options.
2935 2023-12-08  Jiahao Xu  <xujiahao@loongson.cn>
2937         * config/loongarch/lasx.md (lasx_xvfrecip_<flasxfmt>): Renamed to ..
2938         (recip<mode>3): .. this.
2939         * config/loongarch/loongarch-builtins.cc (CODE_FOR_lsx_vfrecip_d): Redefine
2940         to new pattern name.
2941         (CODE_FOR_lsx_vfrecip_s): Ditto.
2942         (CODE_FOR_lasx_xvfrecip_d): Ditto.
2943         (CODE_FOR_lasx_xvfrecip_s): Ditto.
2944         (loongarch_expand_builtin_direct): For the vector recip instructions, construct a
2945         temporary parameter const1_vector.
2946         * config/loongarch/lsx.md (lsx_vfrecip_<flsxfmt>): Renamed to ..
2947         (recip<mode>3): .. this.
2948         * config/loongarch/predicates.md (const_vector_1_operand): New predicate.
2950 2023-12-08  Jiahao Xu  <xujiahao@loongson.cn>
2952         * config/loongarch/lasx.md (lasx_xvfrsqrt_<flasxfmt>): Renamed to ..
2953         (rsqrt<mode>2): .. this.
2954         * config/loongarch/loongarch-builtins.cc
2955         (CODE_FOR_lsx_vfrsqrt_d): Redefine to standard pattern name.
2956         (CODE_FOR_lsx_vfrsqrt_s): Ditto.
2957         (CODE_FOR_lasx_xvfrsqrt_d): Ditto.
2958         (CODE_FOR_lasx_xvfrsqrt_s): Ditto.
2959         * config/loongarch/loongarch.cc (use_rsqrt_p): New function.
2960         (loongarch_optab_supported_p): Ditto.
2961         (TARGET_OPTAB_SUPPORTED_P): New hook.
2962         * config/loongarch/loongarch.md (*rsqrt<mode>a): Remove.
2963         (*rsqrt<mode>2): New insn pattern.
2964         (*rsqrt<mode>b): Remove.
2965         * config/loongarch/lsx.md (lsx_vfrsqrt_<flsxfmt>): Renamed to ..
2966         (rsqrt<mode>2): .. this.
2968 2023-12-08  Jiahao Xu  <xujiahao@loongson.cn>
2970         * config/loongarch/genopts/isa-evolution.in (fecipe): Add.
2971         * config/loongarch/larchintrin.h (__frecipe_s): New intrinsic.
2972         (__frecipe_d): Ditto.
2973         (__frsqrte_s): Ditto.
2974         (__frsqrte_d): Ditto.
2975         * config/loongarch/lasx.md (lasx_xvfrecipe_<flasxfmt>): New insn pattern.
2976         (lasx_xvfrsqrte_<flasxfmt>): Ditto.
2977         * config/loongarch/lasxintrin.h (__lasx_xvfrecipe_s): New intrinsic.
2978         (__lasx_xvfrecipe_d): Ditto.
2979         (__lasx_xvfrsqrte_s): Ditto.
2980         (__lasx_xvfrsqrte_d): Ditto.
2981         * config/loongarch/loongarch-builtins.cc (AVAIL_ALL): Add predicates.
2982         (LSX_EXT_BUILTIN): New macro.
2983         (LASX_EXT_BUILTIN): Ditto.
2984         * config/loongarch/loongarch-cpucfg-map.h: Regenerate.
2985         * config/loongarch/loongarch-c.cc: Add builtin macro "__loongarch_frecipe".
2986         * config/loongarch/loongarch-def.cc: Regenerate.
2987         * config/loongarch/loongarch-str.h (OPTSTR_FRECIPE): Regenerate.
2988         * config/loongarch/loongarch.cc (loongarch_asm_code_end): Dump status for TARGET_FRECIPE.
2989         * config/loongarch/loongarch.md (loongarch_frecipe_<fmt>): New insn pattern.
2990         (loongarch_frsqrte_<fmt>): Ditto.
2991         * config/loongarch/loongarch.opt: Regenerate.
2992         * config/loongarch/lsx.md (lsx_vfrecipe_<flsxfmt>): New insn pattern.
2993         (lsx_vfrsqrte_<flsxfmt>): Ditto.
2994         * config/loongarch/lsxintrin.h (__lsx_vfrecipe_s): New intrinsic.
2995         (__lsx_vfrecipe_d): Ditto.
2996         (__lsx_vfrsqrte_s): Ditto.
2997         (__lsx_vfrsqrte_d): Ditto.
2998         * doc/extend.texi: Add documentation for LoongArch new builtins and intrinsics.
3000 2023-12-08  Richard Biener  <rguenther@suse.de>
3002         * tree-outof-ssa.cc (rewrite_out_of_ssa): Dump GIMPLE once only,
3003         after final IL adjustments.
3005 2023-12-08  Pan Li  <pan2.li@intel.com>
3007         * config/riscv/vector-iterators.md: Replace RVVM2SI to RVVM2SF
3008         for mode attr V_F2DI_CONVERT_BRIDGE.
3010 2023-12-08  Jiahao Xu  <xujiahao@loongson.cn>
3012         * config/loongarch/lasx.md (xorsign<mode>3): New expander.
3013         * config/loongarch/loongarch.cc (loongarch_can_change_mode_class): Allow
3014         conversion between LSX vector mode and scalar fp mode.
3015         * config/loongarch/loongarch.md (@xorsign<mode>3): New expander.
3016         * config/loongarch/lsx.md (@xorsign<mode>3): Ditto.
3018 2023-12-08  Jakub Jelinek  <jakub@redhat.com>
3020         PR tree-optimization/112902
3021         * gimple-lower-bitint.cc (gimple_lower_bitint): For a narrowing
3022         or same precision cast don't set SSA_NAME_VERSION in m_names only
3023         if use_stmt is mergeable_op or fall through into the check that
3024         use is a store or rhs1 is not mergeable or other reasons prevent
3025         merging.
3027 2023-12-08  Jakub Jelinek  <jakub@redhat.com>
3029         PR tree-optimization/112901
3030         * vr-values.cc
3031         (simplify_using_ranges::simplify_float_conversion_using_ranges):
3032         Return false if rhs1 has BITINT_TYPE type with BLKmode TYPE_MODE.
3034 2023-12-08  Jakub Jelinek  <jakub@redhat.com>
3036         PR middle-end/112411
3037         * haifa-sched.cc (extend_h_i_d): Use 3U instead of 3 in
3038         3 * get_max_uid () / 2 calculation.
3040 2023-12-08  Lulu Cheng  <chenglulu@loongson.cn>
3042         * config/loongarch/genopts/loongarch-strings: Delete STR_ISA_BASE_LA64V110.
3043         * config/loongarch/genopts/loongarch.opt.in: Likewise.
3044         * config/loongarch/loongarch-cpu.cc (ISA_BASE_LA64V110_FEATURES): Delete macro.
3045         (fill_native_cpu_config): Define a new variable hw_isa_evolution record the
3046         extended instruction set support read from cpucfg.
3047         * config/loongarch/loongarch-def.cc: Set evolution at initialization.
3048         * config/loongarch/loongarch-def.h (ISA_BASE_LA64V100): Delete.
3049         (ISA_BASE_LA64V110): Likewise.
3050         (N_ISA_BASE_TYPES): Likewise.
3051         (defined): Likewise.
3052         * config/loongarch/loongarch-opts.cc: Likewise.
3053         * config/loongarch/loongarch-opts.h (TARGET_64BIT): Likewise.
3054         (ISA_BASE_IS_LA64V110): Likewise.
3055         * config/loongarch/loongarch-str.h (STR_ISA_BASE_LA64V110): Likewise.
3056         * config/loongarch/loongarch.opt: Regenerate.
3058 2023-12-08  Xi Ruoyao  <xry111@xry111.site>
3060         * config/loongarch/loongarch-def.h: Remove extern "C".
3061         (loongarch_isa_base_strings): Declare as loongarch_def_array
3062         instead of plain array.
3063         (loongarch_isa_ext_strings): Likewise.
3064         (loongarch_abi_base_strings): Likewise.
3065         (loongarch_abi_ext_strings): Likewise.
3066         (loongarch_cmodel_strings): Likewise.
3067         (loongarch_cpu_strings): Likewise.
3068         (loongarch_cpu_default_isa): Likewise.
3069         (loongarch_cpu_issue_rate): Likewise.
3070         (loongarch_cpu_multipass_dfa_lookahead): Likewise.
3071         (loongarch_cpu_cache): Likewise.
3072         (loongarch_cpu_align): Likewise.
3073         (loongarch_cpu_rtx_cost_data): Likewise.
3074         (loongarch_isa): Add a constructor and field setter functions.
3075         * config/loongarch/loongarch-opts.h (loongarch-defs.h): Do not
3076         include for target libraries.
3077         * config/loongarch/loongarch-opts.cc: Comment code that doesn't
3078         run and causes compilation errors.
3079         * config/loongarch/loongarch-tune.h (LOONGARCH_TUNE_H): Likewise.
3080         (struct loongarch_rtx_cost_data): Likewise.
3081         (struct loongarch_cache): Likewise.
3082         (struct loongarch_align): Likewise.
3083         * config/loongarch/t-loongarch: Compile loongarch-def.cc with the
3084         C++ compiler.
3085         * config/loongarch/loongarch-def-array.h: New file for a
3086         std:array like data structure with position setter function.
3087         * config/loongarch/loongarch-def.c: Rename to ...
3088         * config/loongarch/loongarch-def.cc: ... here.
3089         (loongarch_cpu_strings): Define as loongarch_def_array instead
3090         of plain array.
3091         (loongarch_cpu_default_isa): Likewise.
3092         (loongarch_cpu_cache): Likewise.
3093         (loongarch_cpu_align): Likewise.
3094         (loongarch_cpu_rtx_cost_data): Likewise.
3095         (loongarch_cpu_issue_rate): Likewise.
3096         (loongarch_cpu_multipass_dfa_lookahead): Likewise.
3097         (loongarch_isa_base_strings): Likewise.
3098         (loongarch_isa_ext_strings): Likewise.
3099         (loongarch_abi_base_strings): Likewise.
3100         (loongarch_abi_ext_strings): Likewise.
3101         (loongarch_cmodel_strings): Likewise.
3102         (abi_minimal_isa): Likewise.
3103         (loongarch_rtx_cost_optimize_size): Use field setter functions
3104         instead of designated initializers.
3105         (loongarch_rtx_cost_data): Implement default constructor.
3107 2023-12-08  Jakub Jelinek  <jakub@redhat.com>
3109         PR middle-end/112411
3110         * params.opt (-param=min-nondebug-insn-uid=): Add
3111         IntegerRange(0, 1073741824).
3112         * lra.cc (check_and_expand_insn_recog_data): Use 3U rather than 3
3113         in * 3 / 2 computation and if the result is smaller or equal to
3114         index, use index + 1.
3116 2023-12-08  Haochen Jiang  <haochen.jiang@intel.com>
3118         * config/i386/driver-i386.cc (host_detect_local_cpu):
3119         Do not append "-mno-" for Xeon Phi ISAs.
3120         * config/i386/i386-options.cc (ix86_option_override_internal):
3121         Emit a warning for KNL/KNM targets.
3122         * config/i386/i386.opt: Emit a warning for Xeon Phi ISAs.
3124 2023-12-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3126         * config/riscv/riscv-vector-costs.cc (costs::better_main_loop_than_p):
3127         Remove redundant check.
3129 2023-12-08  Hao Liu  <hliu@os.amperecomputing.com>
3131         PR tree-optimization/112774
3132         * tree-pretty-print.cc: if nonwrapping flag is set, chrec will be
3133         printed with additional <nw> info.
3134         * tree-scalar-evolution.cc: add record_nonwrapping_chrec and
3135         nonwrapping_chrec_p to set and check the new flag respectively.
3136         * tree-scalar-evolution.h: Likewise.
3137         * tree-ssa-loop-niter.cc (idx_infer_loop_bounds,
3138         infer_loop_bounds_from_pointer_arith, infer_loop_bounds_from_signedness,
3139         scev_probably_wraps_p): call record_nonwrapping_chrec before
3140         record_nonwrapping_iv, call nonwrapping_chrec_p to check the flag is
3141         set and return false from scev_probably_wraps_p.
3142         * tree-vect-loop.cc (vect_analyze_loop): call
3143         free_numbers_of_iterations_estimates explicitly.
3144         * tree-core.h: document the nothrow_flag usage in CHREC_NOWRAP
3145         * tree.h: add CHREC_NOWRAP(NODE), base.nothrow_flag is used to
3146         represent the nonwrapping info.
3148 2023-12-08  Fei Gao  <gaofei@eswincomputing.com>
3150         * ifcvt.cc (noce_try_cond_zero_arith): New function.
3151         (noce_emit_czero, get_base_reg): Likewise.
3152         (noce_cond_zero_binary_op_supported): Likewise.
3153         (noce_bbs_ok_for_cond_zero_arith): Likewise.
3154         (noce_process_if_block): Use noce_try_cond_zero_arith.
3155         Co-authored-by: Xiao Zeng<zengxiao@eswincomputing.com>
3157 2023-12-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3159         * config/riscv/riscv-protos.h (expand_vec_series): Adapt function.
3160         * config/riscv/riscv-v.cc (rvv_builder::double_steps_npatterns_p): New function.
3161         (expand_vec_series): Adapt function.
3162         (expand_const_vector): Support new interleave vector with different step.
3164 2023-12-07  Richard Sandiford  <richard.sandiford@arm.com>
3166         PR rtl-optimization/106694
3167         PR rtl-optimization/109078
3168         PR rtl-optimization/109391
3169         * config.gcc: Add aarch64-early-ra.o for AArch64 targets.
3170         * config/aarch64/t-aarch64 (aarch64-early-ra.o): New rule.
3171         * config/aarch64/aarch64-opts.h (aarch64_early_ra_scope): New enum.
3172         * config/aarch64/aarch64.opt (mearly_ra): New option.
3173         * doc/invoke.texi: Document it.
3174         * common/config/aarch64/aarch64-common.cc
3175         (aarch_option_optimization_table): Use -mearly-ra=strided by
3176         default for -O2 and above.
3177         * config/aarch64/aarch64-passes.def (pass_aarch64_early_ra): New pass.
3178         * config/aarch64/aarch64-protos.h (aarch64_strided_registers_p)
3179         (make_pass_aarch64_early_ra): Declare.
3180         * config/aarch64/aarch64-sme.md (@aarch64_sme_lut<LUTI_BITS><mode>):
3181         Add a stride_type attribute.
3182         (@aarch64_sme_lut<LUTI_BITS><mode>_strided2): New pattern.
3183         (@aarch64_sme_lut<LUTI_BITS><mode>_strided4): Likewise.
3184         * config/aarch64/aarch64-sve-builtins-base.cc (svld1_impl::expand)
3185         (svldnt1_impl::expand, svst1_impl::expand, svstn1_impl::expand): Handle
3186         new way of defining multi-register loads and stores.
3187         * config/aarch64/aarch64-sve.md (@aarch64_ld1<SVE_FULLx24:mode>)
3188         (@aarch64_ldnt1<SVE_FULLx24:mode>, @aarch64_st1<SVE_FULLx24:mode>)
3189         (@aarch64_stnt1<SVE_FULLx24:mode>): Delete.
3190         * config/aarch64/aarch64-sve2.md (@aarch64_<LD1_COUNT:optab><mode>)
3191         (@aarch64_<LD1_COUNT:optab><mode>_strided2): New patterns.
3192         (@aarch64_<LD1_COUNT:optab><mode>_strided4): Likewise.
3193         (@aarch64_<ST1_COUNT:optab><mode>): Likewise.
3194         (@aarch64_<ST1_COUNT:optab><mode>_strided2): Likewise.
3195         (@aarch64_<ST1_COUNT:optab><mode>_strided4): Likewise.
3196         * config/aarch64/aarch64.cc (aarch64_strided_registers_p): New
3197         function.
3198         * config/aarch64/aarch64.md (UNSPEC_LD1_SVE_COUNT): Delete.
3199         (UNSPEC_ST1_SVE_COUNT, UNSPEC_LDNT1_SVE_COUNT): Likewise.
3200         (UNSPEC_STNT1_SVE_COUNT): Likewise.
3201         (stride_type): New attribute.
3202         * config/aarch64/constraints.md (Uwd, Uwt): New constraints.
3203         * config/aarch64/iterators.md (UNSPEC_LD1_COUNT, UNSPEC_LDNT1_COUNT)
3204         (UNSPEC_ST1_COUNT, UNSPEC_STNT1_COUNT): New unspecs.
3205         (optab): Handle them.
3206         (LD1_COUNT, ST1_COUNT): New iterators.
3207         * config/aarch64/aarch64-early-ra.cc: New file.
3209 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
3211         * config/arm/arm_neon.h
3212         (vld1_u8_x4, vld1_u16_x4, vld1_u32_x4, vld1_u64_x4): New
3213         (vld1_s8_x4, vld1_s16_x4, vld1_s32_x4, vld1_s64_x4): New.
3214         (vld1_f16_x4, vld1_f32_x4): New.
3215         (vld1_p8_x4, vld1_p16_x4, vld1_p64_x4): New.
3216         (vld1_bf16_x4): New.
3217         (vld1q_types_x4): Updated to use vld1q_x4
3218         from arm_neon_builtins.def
3219         * config/arm/arm_neon_builtins.def
3220         (vld1_x4): Updated entries.
3221         (vld1q_x4): New entries, but comes from the old vld1_x2
3222         * config/arm/neon.md (neon_vld1q_x4<mode>):
3223         Updated from neon_vld1_x4<mode>.
3225 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
3227         * config/arm/arm_neon.h
3228         (vld1_u8_x3, vld1_u16_x3, vld1_u32_x3, vld1_u64_x3): New
3229         (vld1_s8_x3, vld1_s16_x3, vld1_s32_x3, vld1_s64_x3): New.
3230         (vld1_f16_x3, vld1_f32_x3): New.
3231         (vld1_p8_x3, vld1_p16_x3, vld1_p64_x3): New.
3232         (vld1_bf16_x3): New.
3233         (vld1q_types_x3): Updated to use vld1q_x3 from
3234         arm_neon_builtins.def
3235         * config/arm/arm_neon_builtins.def
3236         (vld1_x3): Updated entries.
3237         (vld1q_x3): New entries, but comes from the old vld1_x2
3238         * config/arm/neon.md (neon_vld1q_x3<mode>): Updated from
3239         neon_vld1_x3<mode>.
3241 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
3243         * config/arm/arm_neon.h
3244         (vld1_u8_x2, vld1_u16_x2, vld1_u32_x2, vld1_u64_x2): New
3245         (vld1_s8_x2, vld1_s16_x2, vld1_s32_x2, vld1_s64_x2): New.
3246         (vld1_f16_x2, vld1_f32_x2): New.
3247         (vld1_p8_x2, vld1_p16_x2, vld1_p64_x2): New.
3248         (vld1_bf16_x2): New.
3249         (vld1q_types_x2): Updated to use vld1q_x2 from
3250         arm_neon_builtins.def
3251         * config/arm/arm_neon_builtins.def
3252         (vld1_x2): Updated entries.
3253         (vld1q_x2): New entries, but comes from the old vld1_x2
3254         * config/arm/neon.md
3255         (neon_vld1<VMEMX2_q>_x2<VDQX:mode>): Updated
3256         from neon_vld1_x2<mode>.
3258 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
3260         * config/arm/arm_neon.h
3261         (vst1q_u8_x4, vst1q_u16_x4, vst1q_u32_x4, vst1q_u64_x4): New.
3262         (vst1q_s8_x4, vst1q_s16_x4, vst1q_s32_x4, vst1q_s64_x4): New.
3263         (vst1q_f16_x4, vst1q_f32_x4): New.
3264         (vst1q_p8_x4, vst1q_p16_x4, vst1q_p64_x4): New.
3265         (vst1q_bf16_x4): New.
3266         * config/arm/arm_neon_builtins.def (vst1q_x4): New entries.
3267         * config/arm/neon.md (neon_vst1q_x4<mode>): New.
3269 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
3271         * config/arm/arm_neon.h
3272         (vst1q_u8_x3, vst1q_u16_x3, vst1q_u32_x3, vst1q_u64_x3): New.
3273         (vst1q_s8_x3, vst1q_s16_x3, vst1q_s32_x3, vst1q_s64_x3): New.
3274         (vst1q_f16_x3, vst1q_f32_x3): New.
3275         (vst1q_p8_x3, vst1q_p16_x3, vst1q_p64_x3): New.
3276         (vst1q_bf16_x3): New.
3277         * config/arm/arm_neon_builtins.def (vst1q_x3): New entries.
3278         * config/arm/neon.md (neon_vst1q_x3<mode>): New.
3280 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
3282         * config/arm/arm_neon.h
3283         (vst1q_u8_x2, vst1q_u16_x2, vst1q_u32_x2, vst1q_u64_x2): New.
3284         (vst1q_s8_x2, vst1q_s16_x2, vst1q_s32_x2, vst1q_s64_x2): New.
3285         (vst1q_f16_x2, vst1q_f32_x2): New.
3286         (vst1q_p8_x2, vst1q_p16_x2, vst1q_p64_x2): New.
3287         (vst1q_bf16_x2): New.
3288         * config/arm/arm_neon_builtins.def (vst1q_x2): New entries.
3289         * config/arm/neon.md
3290         (neon_vst1<VMEMX2_q>_x2<VDQX:mode>): Updated from
3291         neon_vst1_x2<mode>.
3292         * config/arm/iterators.md (VMEMX2): New mode iterator.
3293         (VMEMX2_q): New mode attribute.
3295 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
3297         * config/arm/arm_neon.h
3298         (vst1_u8_x4, vst1_u16_x4, vst1_u32_x4, vst1_u64_x4): New.
3299         (vst1_s8_x4, vst1_s16_x4, vst1_s32_x4, vst1_s64_x4): New.
3300         (vst1_f16_x4, vst1_f32_x4): New.
3301         (vst1_p8_x4, vst1_p16_x4, vst1_p64_x4): New.
3302         (vst1_bf16_x4): New.
3303         * config/arm/arm_neon_builtins.def (vst1_x4): New entries.
3304         * config/arm/neon.md (vst1_x4<mode>): New.
3306 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
3308         * config/arm/arm_neon.h
3309         (vst1_u8_x3, vst1_u16_x3, vst1_u32_x3, vst1_u64_x3): New.
3310         (vst1_s8_x3, vst1_s16_x3, vst1_s32_x3, vst1_s64_x3): New.
3311         (vst1_f16_x3, vst1_f32_x3): New.
3312         (vst1_p8_x3, vst1_p16_x3, vst1_p64_x3): New.
3313         (vst1_bf16_x3): New.
3314         * config/arm/arm_neon_builtins.def (vst1_x3): New entries.
3315         * config/arm/neon.md (vst1_x3<mode>): New.
3317 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
3319         * config/arm/arm_neon.h
3320         (vst1_u8_x2, vst1_u16_x2, vst1_u32_x2, vst1_u64_x2): New.
3321         (vst1_s8_x2, vst1_s16_x2, vst1_s32_x2, vst1_s64_x2): New.
3322         (vst1_f16_x2, vst1_f32_x2): New.
3323         (vst1_p8_x2, vst1_p16_x2, vst1_p64_x2): New.
3324         (vst1_bf16_x2): New.
3325         * config/arm/arm_neon_builtins.def (vst1_x2): New entries.
3326         * config/arm/neon.md (vst1_x2<mode>): New.
3328 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
3330         * config/arm/arm_neon.h
3331         (vld1q_u8_x4, vld1q_u16_x4, vld1q_u32_x4, vld1q_u64_x4): New.
3332         (vld1q_s8_x4, vld1q_s16_x4, vld1q_s32_x4, vld1q_s64_x4): New.
3333         (vld1q_f16_x4, vld1q_f32_x4): New.
3334         (vld1q_p8_x4, vld1q_p16_x4, vld1q_p64_x4): New.
3335         (vld1q_bf16_x4): New.
3336         * config/arm/arm_neon_builtins.def (vld1_x4): New entries.
3337         * config/arm/neon.md (vld1_x4<mode>): New.
3339 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
3341         * config/arm/arm_neon.h
3342         (vld1q_u8_x3, vld1q_u16_x3, vld1q_u32_x3, vld1q_u64_x3): New.
3343         (vld1q_s8_x3, vld1q_s16_x3, vld1q_s32_x3, vld1q_s64_x3): New.
3344         (vld1q_f16_x3, vld1q_f32_x3): New.
3345         (vld1q_p8_x3, vld1q_p16_x3, vld1q_p64_x3): New.
3346         (vld1q_bf16_x3): New.
3347         * config/arm/arm_neon_builtins.def (vld1_x3): New entries.
3348         * config/arm/neon.md (vld1_x3<mode>): New.
3350 2023-12-07  Ezra Sitorus  <ezra.sitorus@arm.com>
3352         * config/arm/arm_neon.h
3353         (vld1q_u8_x2, vld1q_u16_x2, vld1q_u32_x2, vld1q_u64_x2): New.
3354         (vld1q_s8_x2, vld1q_s16_x2, vld1q_s32_x2, vld1q_s64_x2): New.
3355         (vld1q_f16_x2, vld1q_f32_x2): New.
3356         (vld1q_p8_x2, vld1q_p16_x2, vld1q_p64_x2): New.
3357         (vld1q_bf16_x2): New.
3358         * config/arm/arm_neon_builtins.def (vld1_x2): New entries.
3359         * config/arm/neon.md (vld1_x2<mode>): New.
3361 2023-12-07  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
3363         * config/s390/vecintrin.h (vec_step): Expand vec_step to
3364         __builtin_s390_vec_step.
3366 2023-12-07  Alexandre Oliva  <oliva@adacore.com>
3368         * target.def (have_strub_support_for): New hook.
3369         * doc/tm.texi.in: Document it.
3370         * doc/tm.texi: Rebuild.
3371         * ipa-strub.cc: Include target.h.
3372         (strub_target_support_p): New.
3373         (can_strub_p): Call it.  Test for no flag_split_stack.
3374         (pass_ipa_strub::adjust_at_calls_call): Check for target
3375         support.
3376         * config/nvptx/nvptx.cc (TARGET_HAVE_STRUB_SUPPORT_FOR):
3377         Disable.
3378         * doc/sourcebuild.texi (strub): Document new effective
3379         target.
3381 2023-12-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3383         * config/riscv/riscv-avlprop.cc (simplify_replace_avl): New function.
3384         (simplify_replace_vlmax_avl): Fix bug.
3385         * config/riscv/t-riscv: Add a new include file.
3387 2023-12-07  Christoph Müllner  <christoph.muellner@vrull.eu>
3389         * config/riscv/thead.cc (th_memidx_classify_address_index):
3390         Require TARGET_XTHEADMEMIDX for FP modes.
3391         * config/riscv/thead.md: Require TARGET_XTHEADMEMIDX for all
3392         XTheadFMemIdx pattern.
3394 2023-12-07  Jakub Jelinek  <jakub@redhat.com>
3396         PR middle-end/112881
3397         * expr.cc (count_type_elements): Handle BITINT_TYPE like INTEGER_TYPE.
3399 2023-12-07  Jakub Jelinek  <jakub@redhat.com>
3401         PR tree-optimization/112880
3402         * tree-ssa-dce.cc (maybe_optimize_arith_overflow): Use
3403         unsigned_type_for instead of conditionally calling
3404         build_nonstandard_integer_type.
3406 2023-12-07  Victor Do Nascimento  <victor.donascimento@arm.com>
3408         * config/aarch64/arm_neon.h (vldap1_lane_u64): New.
3409         (vldap1q_lane_u64): Likewise.
3410         (vldap1_lane_s64): Likewise.
3411         (vldap1q_lane_s64): Likewise.
3412         (vldap1_lane_f64): Likewise.
3413         (vldap1q_lane_f64): Likewise.
3414         (vldap1_lane_p64): Likewise.
3415         (vldap1q_lane_p64): Likewise.
3416         (vstl1_lane_u64): Likewise.
3417         (vstl1q_lane_u64): Likewise.
3418         (vstl1_lane_s64): Likewise.
3419         (vstl1q_lane_s64): Likewise.
3420         (vstl1_lane_f64): Likewise.
3421         (vstl1q_lane_f64): Likewise.
3422         (vstl1_lane_p64): Likewise.
3423         (vstl1q_lane_p64): Likewise.
3425 2023-12-07  Victor Do Nascimento  <victor.donascimento@arm.com>
3427         * config/aarch64/aarch64-simd-builtins.def
3428         (vec_ldap1_lane): New.
3429         (vec_stl1_lane): Likewise.
3430         * config/aarch64/aarch64-simd.md
3431         (aarch64_vec_stl1_lanes<mode>_lane<Vel>): New.
3432         (aarch64_vec_stl1_lane<mode>): Likewise.
3433         (aarch64_vec_ldap1_lanes<mode>_lane<Vel>): Likewise.
3434         (aarch64_vec_ldap1_lane<mode>): Likewise.
3435         * config/aarch64/aarch64.md (UNSPEC_LDAP1_LANE): New.
3436         (UNSPEC_STL1_LANE): Likewise.
3438 2023-12-07  Victor Do Nascimento  <victor.donascimento@arm.com>
3440         * config/aarch64/iterators.md (V12DIF): New.
3441         (V12DUP): Likewise.
3442         (VEL): Add support for all V12DIF-associated modes.
3443         (Vetype): Add support for V1DI and V1DF.
3444         (Vel): Likewise.
3446 2023-12-07  Victor Do Nascimento  <victor.donascimento@arm.com>
3448         * config/aarch64/aarch64-option-extensions.def (rcpc3): New.
3449         * config/aarch64/aarch64.h (AARCH64_ISA_RCPC3): Likewise.
3450         (TARGET_RCPC3): Likewise.
3451         * doc/invoke.texi (rcpc3): Document feature in AArch64 Options.
3453 2023-12-07  Hongyu Wang  <hongyu.wang@intel.com>
3455         * config/i386/i386-expand.cc (ix86_split_ashl_ndd): New
3456         function to split NDD form lshift.
3457         (ix86_split_rshift_ndd): Likewise for l/ashiftrt.
3458         * config/i386/i386-protos.h (ix86_split_ashl_ndd): New
3459         prototype.
3460         (ix86_split_rshift_ndd): Likewise.
3461         * config/i386/i386.md (ashl<mode>3_doubleword): Add NDD
3462         alternative, call ndd split function when operands[0]
3463         not equal to operands[1].
3464         (define_split for doubleword lshift): Likewise.
3465         (define_peephole for doubleword lshift): Likewise.
3466         (<insn><mode>3_doubleword): Likewise for l/ashiftrt.
3467         (define_split for doubleword l/ashiftrt): Likewise.
3468         (define_peephole for doubleword l/ashiftrt): Likewise.
3470 2023-12-07  Hongyu Wang  <hongyu.wang@intel.com>
3472         * config/i386/i386.md (*mov<mode>cc_noc): Extend with new constraints
3473         to support NDD.
3474         (*movsicc_noc_zext): Likewise.
3475         (*movsicc_noc_zext_1): Likewise.
3476         (*movqicc_noc): Likewise.
3478 2023-12-07  Hongyu Wang  <hongyu.wang@intel.com>
3480         * config/i386/i386.md (x86_64_shld_ndd): New define_insn.
3481         (x86_64_shld_ndd_1): Likewise.
3482         (*x86_64_shld_ndd_2): Likewise.
3483         (x86_shld_ndd): Likewise.
3484         (x86_shld_ndd_1): Likewise.
3485         (*x86_shld_ndd_2): Likewise.
3486         (x86_64_shrd_ndd): Likewise.
3487         (x86_64_shrd_ndd_1): Likewise.
3488         (*x86_64_shrd_ndd_2): Likewise.
3489         (x86_shrd_ndd): Likewise.
3490         (x86_shrd_ndd_1): Likewise.
3491         (*x86_shrd_ndd_2): Likewise.
3492         (*x86_64_shld_shrd_1_nozext): Adjust codegen under TARGET_APX_NDD.
3493         (*x86_shld_shrd_1_nozext): Likewise.
3494         (*x86_64_shrd_shld_1_nozext): Likewise.
3495         (*x86_shrd_shld_1_nozext): Likewise.
3497 2023-12-07  Hongyu Wang  <hongyu.wang@intel.com>
3499         * config/i386/i386.md (*<insn><mode>3_1): Extend with a new
3500         alternative to support NDD for SI/DI rotate, and adjust output
3501         template.
3502         (*<insn>si3_1_zext): Likewise.
3503         (*<insn><mode>3_1): Likewise for QI/HI modes.
3504         (rcrsi2): Likewise, and use nonimmediate_operand for operands[1]
3505         to accept memory input for NDD alternative.
3506         (rcrdi2): Likewise.
3508 2023-12-07  Hongyu Wang  <hongyu.wang@intel.com>
3510         * config/i386/i386.md (ashr<mode>3_cvt): Extend with new
3511         alternatives to support NDD, and adjust output templates.
3512         (*ashr<mode>3_1): Likewise for SI/DI mode.
3513         (*lshr<mode>3_1): Likewise.
3514         (*<insn>si3_1_zext): Likewise.
3515         (*ashr<mode>3_1): Likewise for QI/HI mode.
3516         (*lshrqi3_1): Likewise.
3517         (*lshrhi3_1): Likewise.
3518         (<insn><mode>3_cmp): Likewise.
3519         (*<insn><mode>3_cconly): Likewise.
3520         (*ashrsi3_cvt_zext): Likewise, and use nonimmediate_operand for
3521         operands[1] to accept memory input for NDD alternative.
3522         (*highpartdisi2): Likewise.
3523         (*<insn>si3_cmp_zext): Likewise.
3524         (<insn><mode>3_carry): Likewise.
3526 2023-12-07  Hongyu Wang  <hongyu.wang@intel.com>
3528         * config/i386/i386.md (*ashl<mode>3_1): Extend with new
3529         alternatives to support NDD, limit the new alternative to
3530         generate sal only, and adjust output template for NDD.
3531         (*ashlsi3_1_zext): Likewise.
3532         (*ashlhi3_1): Likewise.
3533         (*ashlqi3_1): Likewise.
3534         (*ashl<mode>3_cmp): Likewise.
3535         (*ashlsi3_cmp_zext): Likewise, and use nonimmediate_operand for
3536         operands[1] to accept memory input for NDD alternative.
3537         (*ashl<mode>3_cconly): Likewise.
3538         (*ashl<dwi>3_doubleword_highpart): Adjust codegen for NDD.
3540 2023-12-07  Kong Lingling  <lingling.kong@intel.com>
3542         * config/i386/i386.md (<code><mode>3): Add new alternative for NDD
3543         and adjust output templates.
3544         (*<code><mode>_1): Likewise.
3545         (*<code>qi_1): Likewise.
3546         (*notxor<mode>_1): Likewise.
3547         (*<code>si_1_zext): Likewise.
3548         (*notxorqi_1): Likewise.
3549         (*<code><mode>_2): Likewise.
3550         (*<code>si_2_zext): Likewise.
3551         (*<code>si_2_zext_imm): Likewise.
3552         (*<code>si_1_zext_imm): Likewise, and use nonimmediate_operand for
3553         operands[1] to accept memory input for NDD alternative.
3554         (*one_cmplsi2_2_zext): Likewise.
3555         (define_split for *one_cmplsi2_2_zext): Use nonimmediate_operand for
3556         operands[3].
3557         (*<code><dwi>3_doubleword): Add NDD constraints, adopt '&' to NDD dest
3558         and emit move for optimized case if operands[0] != operands[1] or
3559         operands[4] != operands[5].
3560         (define_split for QI highpart OR/XOR): Prohibit splitter to split NDD
3561         form OR/XOR insn to <any_logic:code>qi_ext<mode>_3.
3562         (define_split for QI strict_lowpart optimization): Prohibit splitter to
3563         split NDD form AND insn to *<code><mode>3_1_slp.
3565 2023-12-07  Kong Lingling  <lingling.kong@intel.com>
3567         * config/i386/i386.md (and<mode>3): Add NDD alternatives and adjust
3568         output template.
3569         (*anddi_1): Likewise.
3570         (*and<mode>_1): Likewise.
3571         (*andqi_1): Likewise.
3572         (*andsi_1_zext): Likewise.
3573         (*anddi_2): Likewise.
3574         (*andsi_2_zext): Likewise.
3575         (*andqi_2_maybe_si): Likewise.
3576         (*and<mode>_2): Likewise.
3577         (*and<dwi>3_doubleword): Add NDD alternative, adopt '&' to NDD dest and
3578         emit move for optimized case if operands[0] not equal to operands[1].
3579         (define_split for QI highpart AND): Prohibit splitter to split NDD
3580         form AND insn to <any_logic:code>qi_ext<mode>_3.
3581         (define_split for QI strict_lowpart optimization): Prohibit splitter to
3582         split NDD form AND insn to *<code><mode>3_1_slp.
3583         (define_split for zero_extend and optimization): Prohibit splitter to
3584         split NDD form AND insn to zero_extend insn.
3586 2023-12-07  Kong Lingling  <lingling.kong@intel.com>
3588         * config/i386/i386.md (one_cmpl<mode>2): Add new constraints for NDD
3589         and adjust output template.
3590         (*one_cmpl<mode>2_1): Likewise.
3591         (*one_cmplqi2_1): Likewise.
3592         (*one_cmpl<dwi>2_doubleword): Likewise, and adopt '&' to NDD dest.
3593         (*one_cmpl<mode>2_2): Likewise.
3594         (*one_cmplsi2_1_zext): Likewise, and use nonimmediate_operand for
3595         operands[1] to accept memory input for NDD alternative.
3597 2023-12-07  Kong Lingling  <lingling.kong@intel.com>
3599         * config/i386/i386-expand.cc (ix86_expand_unary_operator): Add use_ndd
3600         parameter and adjust for NDD.
3601         * config/i386/i386-protos.h: Add use_ndd parameter for
3602         ix86_unary_operator_ok and ix86_expand_unary_operator.
3603         * config/i386/i386.cc (ix86_unary_operator_ok): Add use_ndd parameter
3604         and adjust for NDD.
3605         * config/i386/i386.md (neg<mode>2): Add new constraint for NDD and
3606         adjust output template.
3607         (*neg<mode>_1): Likewise.
3608         (*neg<dwi>2_doubleword): Likewise and adopt '&' to NDD dest.
3609         (*neg<mode>_2): Likewise.
3610         (*neg<mode>_ccc_1): Likewise.
3611         (*neg<mode>_ccc_2): Likewise.
3612         (*negsi_1_zext): Likewise, and use nonimmediate_operand for operands[1]
3613         to accept memory input for NDD alternatives.
3614         (*negsi_2_zext): Likewise.
3616 2023-12-07  Kong Lingling  <lingling.kong@intel.com>
3618         * config/i386/i386.md (*sub<dwi>3_doubleword): Add new alternative for
3619         NDD, adopt '&' modifier to NDD dest and emit move when operands[0] not
3620         equal to operands[1].
3621         (*sub<dwi>3_doubleword_zext): Likewise.
3622         (*subv<dwi>4_doubleword): Likewise.
3623         (*subv<dwi>4_doubleword_1): Likewise.
3624         (*subv<mode>4_overflow_1): Add NDD alternatives and adjust output
3625         templates.
3626         (*subv<mode>4_overflow_2): Likewise.
3627         (@sub<mode>3_carry): Likewise.
3628         (*addsi3_carry_zext_0r): Likewise, and use nonimmediate_operand for
3629         operands[1] to accept memory input for NDD alternative.
3630         (*subsi3_carry_zext): Likewise.
3631         (subborrow<mode>): Parse TARGET_APX_NDD to ix86_binary_operator_ok.
3632         (subborrow<mode>_0): Likewise.
3633         (*sub<mode>3_eq): Likewise.
3634         (*sub<mode>3_ne): Likewise.
3635         (*sub<mode>3_eq_1): Likewise.
3637 2023-12-07  Kong Lingling  <lingling.kong@intel.com>
3639         * config/i386/i386-expand.cc (ix86_fixup_binary_operands_no_copy):
3640         Add use_ndd parameter and parse it.
3641         * config/i386/i386-protos.h (ix86_fixup_binary_operands_no_copy):
3642         Change define.
3643         * config/i386/i386.md (sub<mode>3): Add new alternatives for NDD
3644         and adjust output templates.
3645         (*sub<mode>_1): Likewise.
3646         (*sub<mode>_2): Likewise.
3647         (subv<mode>4): Likewise.
3648         (*subv<mode>4): Likewise.
3649         (subv<mode>4_1): Likewise.
3650         (usubv<mode>4): Likewise.
3651         (*sub<mode>_3): Likewise.
3652         (*subsi_1_zext): Likewise, and use nonimmediate_operand for operands[1]
3653         to accept memory input for NDD alternatives.
3654         (*subsi_2_zext): Likewise.
3655         (*subsi_3_zext): Likewise.
3657 2023-12-07  Kong Lingling  <lingling.kong@intel.com>
3659         * config/i386/i386.md (*add<dwi>3_doubleword): Add ndd alternatives,
3660         adopt '&' to ndd dest and move operands[1] to operands[0] when they are
3661         not equal.
3662         (*add<dwi>3_doubleword_cc_overflow_1): Likewise.
3663         (*addv<dwi>4_doubleword): Likewise.
3664         (*addv<dwi>4_doubleword_1): Likewise.
3665         (*add<dwi>3_doubleword_zext): Likewise.
3666         (addv<mode>4_overflow_1): Add ndd alternatives.
3667         (*addv<mode>4_overflow_2): Likewise.
3668         (@add<mode>3_carry): Likewise.
3669         (*add<mode>3_carry_0): Likewise.
3670         (*addsi3_carry_zext): Likewise.
3671         (addcarry<mode>): Likewise.
3672         (addcarry<mode>_0): Likewise.
3673         (*addcarry<mode>_1): Likewise.
3674         (*add<mode>3_eq): Likewise.
3675         (*add<mode>3_ne): Likewise.
3676         (*addsi3_carry_zext_0): Likewise, and use nonimmediate_operand for
3677         operands[1] to accept memory input for NDD alternative.
3679 2023-12-07  Hongyu Wang  <hongyu.wang@intel.com>
3681         * config/i386/constraints.md (je): New constraint.
3682         * config/i386/i386-protos.h (x86_poff_operand_p): New function to
3683         check any *POFF constant in operand.
3684         * config/i386/i386.cc (x86_poff_operand_p): New prototype.
3685         * config/i386/i386.md (*add<mode>_1): Split out je alternative for add.
3687 2023-12-07  Kong Lingling  <lingling.kong@intel.com>
3689         * config/i386/i386.md: (addsi_1_zext): Add new alternatives for
3690         NDD and adjust output templates.
3691         (*add<mode>_2): Likewise.
3692         (*addsi_2_zext): Likewise.
3693         (*add<mode>_3): Likewise.
3694         (*addsi_3_zext): Likewise.
3695         (*adddi_4): Likewise.
3696         (*add<mode>_4): Likewise.
3697         (*add<mode>_5): Likewise.
3698         (*addv<mode>4): Likewise.
3699         (*addv<mode>4_1): Likewise.
3700         (*add<mode>3_cconly_overflow_1): Likewise.
3701         (*add<mode>3_cc_overflow_1): Likewise.
3702         (*addsi3_zext_cc_overflow_1): Likewise.
3703         (*add<mode>3_cconly_overflow_2): Likewise.
3704         (*add<mode>3_cc_overflow_2): Likewise.
3705         (*addsi3_zext_cc_overflow_2): Likewise.
3707 2023-12-07  Kong Lingling  <lingling.kong@intel.com>
3709         * config/i386/i386-expand.cc (ix86_fixup_binary_operands): Add
3710         new use_ndd flag to check whether ndd can be used for this binop
3711         and adjust operand emit.
3712         (ix86_binary_operator_ok): Likewise.
3713         (ix86_expand_binary_operator): Likewise, and void postreload
3714         expand generate lea pattern when use_ndd is explicit parsed.
3715         * config/i386/i386-options.cc (ix86_option_override_internal):
3716         Prohibit apx subfeatures when not in 64bit mode.
3717         * config/i386/i386-protos.h (ix86_binary_operator_ok):
3718         Add use_ndd flag.
3719         (ix86_fixup_binary_operand): Likewise.
3720         (ix86_expand_binary_operand): Likewise.
3721         * config/i386/i386.md (*add<mode>_1): Extend with new alternatives
3722         to support NDD, and adjust output template.
3723         (*addhi_1): Likewise.
3724         (*addqi_1): Likewise.
3726 2023-12-07  David Malcolm  <dmalcolm@redhat.com>
3728         PR analyzer/103546
3729         PR analyzer/112850
3730         * doc/invoke.texi: Add -Wanalyzer-symbol-too-complex.
3732 2023-12-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3734         * config/riscv/riscv-vsetvl.cc (extract_single_source): new function.
3735         (pre_vsetvl::compute_lcm_local_properties): Fix ICE.
3737 2023-12-06  Victor Do Nascimento  <victor.donascimento@arm.com>
3739         * config/aarch64/aarch64-builtins.cc (AARCH64_RSR128): New
3740         `enum aarch64_builtins' value.
3741         (AARCH64_WSR128): Likewise.
3742         (aarch64_init_rwsr_builtins): Init `__builtin_aarch64_rsr128'
3743         and `__builtin_aarch64_wsr128' builtins.
3744         (aarch64_expand_rwsr_builtin): Extend function to handle
3745         `__builtin_aarch64_{rsr|wsr}128'.
3746         * config/aarch64/aarch64-protos.h (aarch64_retrieve_sysreg):
3747         Update function signature.
3748         * config/aarch64/aarch64.cc (F_REG_128): New.
3749         (aarch64_retrieve_sysreg): Add 128-bit register mode check.
3750         * config/aarch64/aarch64.md (UNSPEC_SYSREG_RTI): New.
3751         (UNSPEC_SYSREG_WTI): Likewise.
3752         (aarch64_read_sysregti): Likewise.
3753         (aarch64_write_sysregti): Likewise.
3754         * config/aarch64/arm_acle.h (__arm_rsr128): New.
3755         (__arm_wsr128): Likewise.
3757 2023-12-06  Victor Do Nascimento  <victor.donascimento@arm.com>
3759         * config/aarch64/aarch64-sys-regs.def: Copy from Binutils.
3761 2023-12-06  Victor Do Nascimento  <victor.donascimento@arm.com>
3763         * config/aarch64/aarch64-option-extensions.def (gcs): New.
3764         * config/aarch64/aarch64.h (AARCH64_ISA_GCS): New.
3765         (TARGET_THE):  Likewise.
3766         * doc/invoke.texi (AArch64 Options): Describe GCS.
3768 2023-12-06  Victor Do Nascimento  <victor.donascimento@arm.com>
3770         * config/aarch64/aarch64-c.cc (__ARM_FEATURE_SYSREG128): New.
3771         * config/aarch64/aarch64-arches.def (armv8.9-a): New.
3772         (armv9.4-a): Likewise.
3773         * config/aarch64/aarch64-option-extensions.def (d128): Likewise.
3774         (the): Likewise.
3775         * config/aarch64/aarch64.h (AARCH64_ISA_V9_4A): Likewise.
3776         (AARCH64_ISA_V8_9A): Likewise.
3777         (TARGET_ARMV9_4): Likewise.
3778         (AARCH64_ISA_D128): Likewise.
3779         (AARCH64_ISA_THE): Likewise.
3780         (TARGET_D128): Likewise.
3781         * doc/invoke.texi (AArch64 Options): Document new -march flags
3782         and extensions.
3784 2023-12-06  Eric Gallager  <egallager@gcc.gnu.org>
3786         * Makefile.in: Remove qmtest-related targets.
3788 2023-12-06  David Malcolm  <dmalcolm@redhat.com>
3790         * common.opt (fdiagnostics-json-formatting): New.
3791         * diagnostic-format-json.cc: Add "formatted" boolean
3792         to json_output_format and subclasses, and to the
3793         diagnostic_output_format_init_json_* functions.  Use it when
3794         printing JSON.
3795         * diagnostic-format-sarif.cc: Likewise for sarif_builder,
3796         sarif_output_format, and the various
3797         diagnostic_output_format_init_sarif_* functions.
3798         * diagnostic.cc (diagnostic_output_format_init): Add
3799         "json_formatting" boolean and pass on to the various cases.
3800         * diagnostic.h (diagnostic_output_format_init): Add
3801         "json_formatted" param.
3802         (diagnostic_output_format_init_json_stderr): Add "formatted" param
3803         (diagnostic_output_format_init_json_file): Likewise.
3804         (diagnostic_output_format_init_sarif_stderr): Likewise.
3805         (diagnostic_output_format_init_sarif_file): Likewise.
3806         (diagnostic_output_format_init_sarif_stream): Likewise.
3807         * doc/invoke.texi (-fdiagnostics-format=json): Remove discussion
3808         about JSON output needing formatting.
3809         (-fno-diagnostics-json-formatting): Add.
3810         * gcc.cc (driver_handle_option): Use
3811         opts->x_flag_diagnostics_json_formatting.
3812         * gcov.cc (generate_results): Pass "false" for new formatting
3813         option when printing json.
3814         * json.cc (value::dump): Add new "formatted" param.
3815         (object::print): Likewise, using it to add whitespace to format
3816         the JSON output.
3817         (array::print): Likewise.
3818         (float_number::print): Add new "formatted" param.
3819         (integer_number::print): Likewise.
3820         (string::print): Likewise.
3821         (literal::print): Likewise.
3822         (selftest::assert_print_eq): Add "formatted" param.
3823         (ASSERT_PRINT_EQ): Add "FORMATTED" param.
3824         (selftest::test_writing_objects): Test both formatted and
3825         unformatted printing.
3826         (selftest::test_writing_arrays): Likewise.
3827         (selftest::test_writing_float_numbers): Update for new param of
3828         ASSERT_PRINT_EQ.
3829         (selftest::test_writing_integer_numbers): Likewise.
3830         (selftest::test_writing_strings): Likewise.
3831         (selftest::test_writing_literals): Likewise.
3832         (selftest::test_formatting): New.
3833         (selftest::json_cc_tests): Call it.
3834         * json.h (value::print): Add "formatted" param.
3835         (value::dump): Likewise.
3836         (object::print): Likewise.
3837         (array::print): Likewise.
3838         (float_number::print): Likewise.
3839         (integer_number::print): Likewise.
3840         (string::print): Likewise.
3841         (literal::print): Likewise.
3842         * optinfo-emit-json.cc (optrecord_json_writer::write): Pass
3843         "false" for new formatting option when printing json.
3844         (selftest::test_building_json_from_dump_calls): Likewise.
3845         * opts.cc (common_handle_option): Use
3846         opts->x_flag_diagnostics_json_formatting.
3848 2023-12-06  David Malcolm  <dmalcolm@redhat.com>
3850         * diagnostic-format-json.cc (on_begin_diagnostic): Convert param
3851         to const reference.
3852         (on_end_diagnostic): Likewise.
3853         (json_output_format::on_end_diagnostic): Likewise.
3854         * diagnostic-format-sarif.cc
3855         (sarif_invocation::add_notification_for_ice): Likewise.
3856         (sarif_result::on_nested_diagnostic): Likewise.
3857         (sarif_ice_notification::sarif_ice_notification): Likewise.
3858         (sarif_builder::end_diagnostic): Likewise.
3859         (sarif_builder::make_result_object): Likewise.
3860         (make_reporting_descriptor_object_for_warning): Likewise.
3861         (sarif_builder::make_locations_arr): Likewise.
3862         (sarif_output_format::on_begin_diagnostic): Likewise.
3863         (sarif_output_format::on_end_diagnostic): Likewise.
3864         * diagnostic.cc (default_diagnostic_starter): Make diagnostic_info
3865         param const.
3866         (default_diagnostic_finalizer): Likewise.
3867         (diagnostic_context::report_diagnostic): Pass diagnostic by
3868         reference to on_{begin,end}_diagnostic.
3869         (diagnostic_text_output_format::on_begin_diagnostic): Convert
3870         param to const reference.
3871         (diagnostic_text_output_format::on_end_diagnostic): Likewise.
3872         * diagnostic.h (diagnostic_starter_fn): Make diagnostic_info param
3873         const.
3874         (diagnostic_finalizer_fn): Likeewise.
3875         (diagnostic_output_format::on_begin_diagnostic): Convert param to
3876         const reference.
3877         (diagnostic_output_format::on_end_diagnostic): Likewise.
3878         (diagnostic_text_output_format::on_begin_diagnostic): Likewise.
3879         (diagnostic_text_output_format::on_end_diagnostic): Likewise.
3880         (default_diagnostic_starter): Make diagnostic_info param const.
3881         (default_diagnostic_finalizer): Likewise.
3882         * langhooks-def.h (lhd_print_error_function): Make diagnostic_info
3883         param const.
3884         * langhooks.cc (lhd_print_error_function): Likewise.
3885         * langhooks.h (lang_hooks::print_error_function): Likewise.
3886         * tree-diagnostic.cc (diagnostic_report_current_function):
3887         Likewise.
3888         (default_tree_diagnostic_starter): Likewise.
3889         (virt_loc_aware_diagnostic_finalizer): Likewise.
3890         * tree-diagnostic.h (diagnostic_report_current_function):
3891         Likewise.
3892         (virt_loc_aware_diagnostic_finalizer): Likewise.
3894 2023-12-06  Andrew Stubbs  <ams@codesourcery.com>
3896         * config/gcn/gcn-builtins.def (DISPATCH_PTR): New built-in.
3897         * config/gcn/gcn.cc (gcn_init_machine_status): Disable global
3898         addressing.
3899         (gcn_expand_builtin_1): Implement GCN_BUILTIN_DISPATCH_PTR.
3901 2023-12-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3903         PR target/112855
3904         * config/riscv/riscv-vsetvl.cc
3905         (pre_vsetvl::compute_lcm_local_properties): Fix transparant LCM data.
3906         (pre_vsetvl::earliest_fuse_vsetvl_info): Disable earliest fusion for unrelated edge.
3908 2023-12-06  Marek Polacek  <polacek@redhat.com>
3910         PR target/112762
3911         * config/linux.h: Redefine TARGET_FORTIFY_SOURCE_DEFAULT_LEVEL for
3912         glibc only.
3914 2023-12-06  Victor Do Nascimento  <victor.donascimento@arm.com>
3916         * config/aarch64/aarch64.cc
3917         (aarch64_test_sysreg_encoding_clashes): New.
3918         (aarch64_run_selftests): add call to
3919         aarch64_test_sysreg_encoding_clashes selftest.
3921 2023-12-06  Victor Do Nascimento  <victor.donascimento@arm.com>
3923         * config/aarch64/aarch64-builtins.cc (aarch64_general_check_builtin_call):
3924         New.
3925         * config/aarch64/aarch64-c.cc (aarch64_check_builtin_call):
3926         Add `aarch64_general_check_builtin_call' call.
3927         * config/aarch64/aarch64-protos.h (aarch64_general_check_builtin_call):
3928         New.
3930 2023-12-06  Victor Do Nascimento  <victor.donascimento@arm.com>
3932         * config/aarch64/aarch64-builtins.cc (enum aarch64_builtins):
3933         Add enums for new builtins.
3934         (aarch64_init_rwsr_builtins): New.
3935         (aarch64_general_init_builtins): Call aarch64_init_rwsr_builtins.
3936         (aarch64_expand_rwsr_builtin):  New.
3937         (aarch64_general_expand_builtin): Call aarch64_general_expand_builtin.
3938         * config/aarch64/aarch64.md (read_sysregdi): New insn_and_split.
3939         (write_sysregdi): Likewise.
3940         * config/aarch64/arm_acle.h (__arm_rsr): New.
3941         (__arm_rsrp): Likewise.
3942         (__arm_rsr64): Likewise.
3943         (__arm_rsrf): Likewise.
3944         (__arm_rsrf64): Likewise.
3945         (__arm_wsr): Likewise.
3946         (__arm_wsrp): Likewise.
3947         (__arm_wsr64): Likewise.
3948         (__arm_wsrf): Likewise.
3949         (__arm_wsrf64): Likewise.
3951 2023-12-06  Victor Do Nascimento  <victor.donascimento@arm.com>
3953         * config/aarch64/aarch64-protos.h (aarch64_valid_sysreg_name_p): New.
3954         (aarch64_retrieve_sysreg): Likewise.
3955         * config/aarch64/aarch64.cc (is_implem_def_reg): Likewise.
3956         (aarch64_valid_sysreg_name_p): Likewise.
3957         (aarch64_retrieve_sysreg): Likewise.
3958         (aarch64_register_sysreg): Likewise.
3959         (aarch64_init_sysregs): Likewise.
3960         (aarch64_lookup_sysreg_map): Likewise.
3961         * config/aarch64/predicates.md (aarch64_sysreg_string): New.
3963 2023-12-06  Victor Do Nascimento  <victor.donascimento@arm.com>
3965         * config/aarch64/aarch64.cc (sysreg_t): New.
3966         (aarch64_sysregs): Likewise.
3967         (AARCH64_FEATURE): Likewise.
3968         (AARCH64_FEATURES): Likewise.
3969         (AARCH64_NO_FEATURES): Likewise.
3970         * config/aarch64/aarch64.h (AARCH64_ISA_V8A): Add missing
3971         ISA flag.
3972         (AARCH64_ISA_V8_1A): Likewise.
3973         (AARCH64_ISA_V8_7A): Likewise.
3974         (AARCH64_ISA_V8_8A): Likewise.
3975         (AARCH64_NO_FEATURES): Likewise.
3976         (AARCH64_FL_RAS): New ISA flag alias.
3977         (AARCH64_FL_LOR): Likewise.
3978         (AARCH64_FL_PAN): Likewise.
3979         (AARCH64_FL_AMU): Likewise.
3980         (AARCH64_FL_SCXTNUM): Likewise.
3981         (AARCH64_FL_ID_PFR2): Likewise.
3982         (F_DEPRECATED): New.
3983         (F_REG_READ): Likewise.
3984         (F_REG_WRITE): Likewise.
3985         (F_ARCHEXT): Likewise.
3986         (F_REG_ALIAS): Likewise.
3988 2023-12-06  Victor Do Nascimento  <victor.donascimento@arm.com>
3990         * config/aarch64/aarch64-sys-regs.def: New.
3992 2023-12-06  Robin Dapp  <rdapp@ventanamicro.com>
3994         PR target/112854
3995         PR target/112872
3996         * config/riscv/autovec.md (vec_init<mode>qi): New expander.
3998 2023-12-06  Jakub Jelinek  <jakub@redhat.com>
4000         PR rtl-optimization/112760
4001         * config/i386/i386-passes.def (pass_insert_vzeroupper): Insert
4002         after pass_postreload_cse rather than pass_reload.
4003         * config/i386/i386-features.cc (rest_of_handle_insert_vzeroupper):
4004         Adjust comment for it.
4006 2023-12-06  Jakub Jelinek  <jakub@redhat.com>
4008         PR tree-optimization/112809
4009         * gimple-lower-bitint.cc (bitint_large_huge::lower_mergeable_stmt): For
4010         separate_ext in kind == bitint_prec_huge mode if rem == 0, create for
4011         i == cnt - 1 the loop rather than using size_int (end).
4013 2023-12-06  Jakub Jelinek  <jakub@redhat.com>
4015         * gcc.cc (driver_handle_option): Add /* FALLTHROUGH */ comment
4016         between OPT_pie and OPT_r cases.
4018 2023-12-06  Tobias Burnus  <tobias@codesourcery.com>
4020         * tsystem.h (calloc, realloc): Declare when inhibit_libc.
4022 2023-12-06  Richard Biener  <rguenther@suse.de>
4024         PR tree-optimization/112843
4025         * tree-ssa-operands.cc (update_stmt_operands): Do not call
4026         update_stmt from ranger.
4027         * value-query.h (range_query::update_stmt): Remove.
4028         * gimple-range.h (gimple_ranger::update_stmt): Likewise.
4029         * gimple-range.cc (gimple_ranger::update_stmt): Likewise.
4031 2023-12-06  xuli  <xuli1@eswincomputing.com>
4033         * config/riscv/riscv.md: Remove.
4035 2023-12-06  Alexandre Oliva  <oliva@adacore.com>
4037         * Makefile.in (OBJS): Add ipa-strub.o.
4038         (GTFILES): Add ipa-strub.cc.
4039         * builtins.def (BUILT_IN_STACK_ADDRESS): New.
4040         (BUILT_IN___STRUB_ENTER): New.
4041         (BUILT_IN___STRUB_UPDATE): New.
4042         (BUILT_IN___STRUB_LEAVE): New.
4043         * builtins.cc: Include ipa-strub.h.
4044         (STACK_STOPS, STACK_UNSIGNED): Define.
4045         (expand_builtin_stack_address): New.
4046         (expand_builtin_strub_enter): New.
4047         (expand_builtin_strub_update): New.
4048         (expand_builtin_strub_leave): New.
4049         (expand_builtin): Call them.
4050         * common.opt (fstrub=*): New options.
4051         * doc/extend.texi (strub): New type attribute.
4052         (__builtin_stack_address): New function.
4053         (Stack Scrubbing): New section.
4054         * doc/invoke.texi (-fstrub=*): New options.
4055         (-fdump-ipa-*): New passes.
4056         * gengtype-lex.l: Ignore multi-line pp-directives.
4057         * ipa-inline.cc: Include ipa-strub.h.
4058         (can_inline_edge_p): Test strub_inlinable_to_p.
4059         * ipa-split.cc: Include ipa-strub.h.
4060         (execute_split_functions): Test strub_splittable_p.
4061         * ipa-strub.cc, ipa-strub.h: New.
4062         * passes.def: Add strub_mode and strub passes.
4063         * tree-cfg.cc (gimple_verify_flow_info): Note on debug stmts.
4064         * tree-pass.h (make_pass_ipa_strub_mode): Declare.
4065         (make_pass_ipa_strub): Declare.
4066         (make_pass_ipa_function_and_variable_visibility): Fix
4067         formatting.
4068         * tree-ssa-ccp.cc (optimize_stack_restore): Keep restores
4069         before strub leave.
4070         * attribs.cc: Include ipa-strub.h.
4071         (decl_attributes): Support applying attributes to function
4072         type, rather than pointer type, at handler's request.
4073         (comp_type_attributes): Combine strub_comptypes and target
4074         comp_type results.
4075         * doc/tm.texi.in (TARGET_STRUB_USE_DYNAMIC_ARRAY): New.
4076         (TARGET_STRUB_MAY_USE_MEMSET): New.
4077         * doc/tm.texi: Rebuilt.
4078         * cgraph.h (symtab_node::reset): Add preserve_comdat_group
4079         param, with a default.
4080         * cgraphunit.cc (symtab_node::reset): Use it.
4082 2023-12-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4084         PR target/112851
4085         PR target/112852
4086         * config/riscv/riscv-v.cc (vls_mode_valid_p): Block VLSmodes according
4087         TARGET_MAX_LMUL and BITS_PER_RISCV_VECTOR.
4089 2023-12-05  David Faust  <david.faust@oracle.com>
4091         PR debug/112849
4092         * btfout.cc (btf_collect_datasec): Avoid incorrectly creating an
4093         entry in a BTF_KIND_DATASEC record for extern variable decls without
4094         a known section.
4096 2023-12-05  Jakub Jelinek  <jakub@redhat.com>
4098         PR target/112606
4099         * config/rs6000/rs6000.md (copysign<mode>3): Change predicate
4100         of the last argument from gpc_reg_operand to any_operand.  If
4101         operands[2] is CONST_DOUBLE, emit abs or neg abs depending on
4102         its sign, otherwise if it doesn't satisfy gpc_reg_operand,
4103         force it to REG using copy_to_mode_reg.
4105 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
4107         * attribs.cc (handle_ignored_attributes_option): Add extra
4108         braces to work around PR 16333 in older compilers.
4109         * config/aarch64/aarch64.cc (aarch64_gnu_attribute_table): Likewise.
4110         (aarch64_arm_attribute_table): Likewise.
4111         * config/arm/arm.cc (arm_gnu_attribute_table): Likewise.
4112         * config/i386/i386-options.cc (ix86_gnu_attribute_table): Likewise.
4113         * config/ia64/ia64.cc (ia64_gnu_attribute_table): Likewise.
4114         * config/rs6000/rs6000.cc (rs6000_gnu_attribute_table): Likewise.
4115         * target-def.h (TARGET_GNU_ATTRIBUTES): Likewise.
4116         * genhooks.cc (emit_init_macros): Likewise, when emitting the
4117         instantiation of TARGET_ATTRIBUTE_TABLE.
4118         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Likewise, when
4119         instantiating LANG_HOOKS_ATTRIBUTE_TABLE.
4120         (LANG_HOOKS_ATTRIBUTE_TABLE): Define to be empty by default.
4121         * target.def (attribute_table): Likewise.
4123 2023-12-05  Richard Biener  <rguenther@suse.de>
4125         PR middle-end/112860
4126         * passes.cc (should_skip_pass_p): Do not skip ISEL.
4128 2023-12-05  Richard Biener  <rguenther@suse.de>
4130         PR sanitizer/111736
4131         * asan.cc (asan_protect_global): Do not protect globals
4132         in non-generic address-space.
4134 2023-12-05  Richard Biener  <rguenther@suse.de>
4136         PR ipa/92606
4137         * ipa-icf.cc (sem_variable::equals_wpa): Compare address-spaces.
4139 2023-12-05  Richard Biener  <rguenther@suse.de>
4141         PR middle-end/112830
4142         * gimplify.cc (gimplify_modify_expr): Avoid turning aggregate
4143         copy of non-generic address-spaces to memcpy.
4144         (gimplify_modify_expr_to_memcpy): Assert we are dealing with
4145         a copy inside the generic address-space.
4146         (gimplify_modify_expr_to_memset): Likewise.
4147         * tree-cfg.cc (verify_gimple_assign_single): Allow
4148         WITH_SIZE_EXPR as part of the RHS of an assignment.
4149         * builtins.cc (get_memory_address): Assert we are dealing
4150         with the generic address-space.
4151         * tree-ssa-dce.cc (ref_may_be_aliased): Handle WITH_SIZE_EXPR.
4153 2023-12-05  Richard Biener  <rguenther@suse.de>
4155         PR tree-optimization/109689
4156         PR tree-optimization/112856
4157         * cfgloopmanip.h (unloop_loops): Adjust API.
4158         * tree-ssa-loop-ivcanon.cc (unloop_loops): Take edges_to_remove
4159         as parameter.
4160         (canonicalize_induction_variables): Adjust.
4161         (tree_unroll_loops_completely): Likewise.
4162         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Rewrite into
4163         LC SSA if we unlooped some loops and we are in LC SSA.
4165 2023-12-05  Jakub Jelinek  <jakub@redhat.com>
4167         PR target/112845
4168         * config/i386/i386.md (movabsq $(i32 << shift), r64 peephole2): FAIL
4169         if the new immediate is ix86_endbr_immediate_operand.
4171 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
4173         * config/aarch64/aarch64.h (TARGET_STREAMING_SME2): New macro.
4174         (P_ALIASES): Likewise.
4175         (REGISTER_NAMES): Add pn aliases of the predicate registers.
4176         (W8_W11_REGNUM_P): New macro.
4177         (W8_W11_REGS): New register class.
4178         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
4179         * config/aarch64/aarch64.cc (aarch64_print_operand): Add support
4180         for %K, which prints a predicate as a counter.  Handle tuples of
4181         predicates.
4182         (aarch64_regno_regclass): Handle W8_W11_REGS.
4183         (aarch64_class_max_nregs): Likewise.
4184         * config/aarch64/constraints.md (Uci, Uw2, Uw4): New constraints.
4185         (x, y): Move further up file.
4186         (Uph): Redefine as the high predicate registers, renaming the old
4187         constraint to...
4188         (Uih): ...this.
4189         * config/aarch64/predicates.md (const_0_to_7_operand): New predicate.
4190         (const_0_to_4_step_4_operand, const_0_to_6_step_2_operand): Likewise.
4191         (const_0_to_12_step_4_operand, const_0_to_14_step_2_operand): Likewise.
4192         (aarch64_simd_shift_imm_qi): Use const_0_to_7_operand.
4193         * config/aarch64/iterators.md (VNx16SI_ONLY, VNx8SI_ONLY)
4194         (VNx8DI_ONLY, SVE_FULL_BHSIx2, SVE_FULL_HF, SVE_FULL_SIx2_SDIx4)
4195         (SVE_FULL_BHS, SVE_FULLx24, SVE_DIx24, SVE_BHSx24, SVE_Ix24)
4196         (SVE_Fx24, SVE_SFx24, SME_ZA_BIx24, SME_ZA_BHIx124, SME_ZA_BHIx24)
4197         (SME_ZA_HFx124, SME_ZA_HFx24, SME_ZA_HIx124, SME_ZA_HIx24)
4198         (SME_ZA_SDIx24, SME_ZA_SDFx24): New mode iterators.
4199         (UNSPEC_REVD, UNSPEC_CNTP_C, UNSPEC_PEXT, UNSPEC_PEXTx2): New unspecs.
4200         (UNSPEC_PSEL, UNSPEC_PTRUE_C, UNSPEC_SQRSHR, UNSPEC_SQRSHRN)
4201         (UNSPEC_SQRSHRU, UNSPEC_SQRSHRUN, UNSPEC_UQRSHR, UNSPEC_UQRSHRN)
4202         (UNSPEC_UZP, UNSPEC_UZPQ, UNSPEC_ZIP, UNSPEC_ZIPQ, UNSPEC_BFMLSLB)
4203         (UNSPEC_BFMLSLT, UNSPEC_FCVTN, UNSPEC_FDOT, UNSPEC_SQCVT): Likewise.
4204         (UNSPEC_SQCVTN, UNSPEC_SQCVTU, UNSPEC_SQCVTUN, UNSPEC_UQCVT): Likewise.
4205         (UNSPEC_SME_ADD, UNSPEC_SME_ADD_WRITE, UNSPEC_SME_BMOPA): Likewise.
4206         (UNSPEC_SME_BMOPS, UNSPEC_SME_FADD, UNSPEC_SME_FDOT, UNSPEC_SME_FVDOT)
4207         (UNSPEC_SME_FMLA, UNSPEC_SME_FMLS, UNSPEC_SME_FSUB, UNSPEC_SME_READ)
4208         (UNSPEC_SME_SDOT, UNSPEC_SME_SVDOT, UNSPEC_SME_SMLA, UNSPEC_SME_SMLS)
4209         (UNSPEC_SME_SUB, UNSPEC_SME_SUB_WRITE, UNSPEC_SME_SUDOT): Likewise.
4210         (UNSPEC_SME_SUVDOT, UNSPEC_SME_UDOT, UNSPEC_SME_UVDOT): Likewise.
4211         (UNSPEC_SME_UMLA, UNSPEC_SME_UMLS, UNSPEC_SME_USDOT): Likewise.
4212         (UNSPEC_SME_USVDOT, UNSPEC_SME_WRITE): Likewise.
4213         (Vetype, VNARROW, V2XWIDE, Ventype, V_INT_EQUIV, v_int_equiv)
4214         (VSINGLE, vsingle, b): Add tuple modes.
4215         (v2xwide, za32_offset_range, za64_offset_range, za32_long)
4216         (za32_last_offset, vg_modifier, z_suffix, aligned_operand)
4217         (aligned_fpr): New mode attributes.
4218         (SVE_INT_BINARY_MULTI, SVE_INT_BINARY_SINGLE, SVE_INT_BINARY_MULTI)
4219         (SVE_FP_BINARY_MULTI): New int iterators.
4220         (SVE_BFLOAT_TERNARY_LONG): Add UNSPEC_BFMLSLB and UNSPEC_BFMLSLT.
4221         (SVE_BFLOAT_TERNARY_LONG_LANE): Likewise.
4222         (SVE_WHILE_ORDER, SVE2_INT_SHIFT_IMM_NARROWxN, SVE_QCVTxN)
4223         (SVE2_SFx24_UNARY, SVE2_x24_PERMUTE, SVE2_x24_PERMUTEQ)
4224         (UNSPEC_REVD_ONLY, SME2_INT_MOP, SME2_BMOP, SME_BINARY_SLICE_SDI)
4225         (SME_BINARY_SLICE_SDF, SME_BINARY_WRITE_SLICE_SDI, SME_INT_DOTPROD)
4226         (SME_INT_DOTPROD_LANE, SME_FP_DOTPROD, SME_FP_DOTPROD_LANE)
4227         (SME_INT_TERNARY_SLICE, SME_FP_TERNARY_SLICE, BHSD_BITS)
4228         (LUTI_BITS): New int iterators.
4229         (optab, sve_int_op): Handle the new unspecs.
4230         (sme_int_op, has_16bit_form): New int attributes.
4231         (bits_etype): Handle 64.
4232         * config/aarch64/aarch64.md (UNSPEC_LD1_SVE_COUNT): New unspec.
4233         (UNSPEC_ST1_SVE_COUNT, UNSPEC_LDNT1_SVE_COUNT): Likewise.
4234         (UNSPEC_STNT1_SVE_COUNT): Likewise.
4235         * config/aarch64/atomics.md (cas_short_expected_imm): Use Uhi
4236         rather than Uph for HImode immediates.
4237         * config/aarch64/aarch64-sve.md (@aarch64_ld1<SVE_FULLx24:mode>)
4238         (@aarch64_ldnt1<SVE_FULLx24:mode>, @aarch64_st1<SVE_FULLx24:mode>)
4239         (@aarch64_stnt1<SVE_FULLx24:mode>): New patterns.
4240         (@aarch64_<sur>dot_prod_lane<vsi2qi>): Extend to...
4241         (@aarch64_<sur>dot_prod_lane<SVE_FULL_SDI:mode><SVE_FULL_BHI:mode>)
4242         (@aarch64_<sur>dot_prod_lane<VNx4SI_ONLY:mode><VNx16QI_ONLY:mode>):
4243         ...these new patterns.
4244         (SVE_WHILE_B, SVE_WHILE_B_X2, SVE_WHILE_C): New constants.  Add
4245         SVE_WHILE_B to existing while patterns.
4246         * config/aarch64/aarch64-sve2.md (@aarch64_sve_ptrue_c<BHSD_BITS>)
4247         (@aarch64_sve_pext<BHSD_BITS>, @aarch64_sve_pext<BHSD_BITS>x2)
4248         (@aarch64_sve_psel<BHSD_BITS>, *aarch64_sve_psel<BHSD_BITS>_plus)
4249         (@aarch64_sve_cntp_c<BHSD_BITS>, <frint_pattern><mode>2)
4250         (<optab><mode>3, *<optab><mode>3, @aarch64_sve_single_<optab><mode>)
4251         (@aarch64_sve_<sve_int_op><mode>): New patterns.
4252         (@aarch64_sve_single_<sve_int_op><mode>, @aarch64_sve_<su>clamp<mode>)
4253         (*aarch64_sve_<su>clamp<mode>_x, @aarch64_sve_<su>clamp_single<mode>)
4254         (@aarch64_sve_fclamp<mode>, *aarch64_sve_fclamp<mode>_x)
4255         (@aarch64_sve_fclamp_single<mode>, <optab><mode><v2xwide>2)
4256         (@aarch64_sve_<sur>dotvnx4sivnx8hi): New patterns.
4257         (@aarch64_sve_<maxmin_uns_op><mode>): Likewise.
4258         (*aarch64_sve_<maxmin_uns_op><mode>): Likewise.
4259         (@aarch64_sve_single_<maxmin_uns_op><mode>): Likewise.
4260         (aarch64_sve_fdotvnx4sfvnx8hf): Likewise.
4261         (aarch64_fdot_prod_lanevnx4sfvnx8hf): Likewise.
4262         (@aarch64_sve_<optab><VNx16QI_ONLY:mode><VNx16SI_ONLY:mode>): Likewise.
4263         (@aarch64_sve_<optab><VNx8HI_ONLY:mode><VNx8SI_ONLY:mode>): Likewise.
4264         (@aarch64_sve_<optab><VNx8HI_ONLY:mode><VNx8DI_ONLY:mode>): Likewise.
4265         (truncvnx8sf<mode>2, @aarch64_sve_cvtn<mode>): Likewise.
4266         (<optab><v_int_equiv><mode>2, <optab><mode><v_int_equiv>2): Likewise.
4267         (@aarch64_sve_sel<mode>): Likewise.
4268         (@aarch64_sve_while<while_optab_cmp>_b<BHSD_BITS>_x2): Likewise.
4269         (@aarch64_sve_while<while_optab_cmp>_c<BHSD_BITS>): Likewise.
4270         (@aarch64_pred_<optab><mode>, @cond_<optab><mode>): Likewise.
4271         (@aarch64_sve_<optab><mode>): Likewise.
4272         * config/aarch64/aarch64-sme.md (@aarch64_sme_<optab><mode><mode>)
4273         (*aarch64_sme_<optab><mode><mode>_plus, @aarch64_sme_read<mode>)
4274         (*aarch64_sme_read<mode>_plus, @aarch64_sme_write<mode>): New patterns.
4275         (*aarch64_sme_write<mode>_plus aarch64_sme_zero_zt0): Likewise.
4276         (@aarch64_sme_<optab><mode>, *aarch64_sme_<optab><mode>_plus)
4277         (@aarch64_sme_single_<optab><mode>): Likewise.
4278         (*aarch64_sme_single_<optab><mode>_plus): Likewise.
4279         (@aarch64_sme_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>)
4280         (*aarch64_sme_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>_plus)
4281         (@aarch64_sme_single_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>)
4282         (*aarch64_sme_single_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>_plus)
4283         (@aarch64_sme_single_sudot<VNx4SI_ONLY:mode><SME_ZA_BIx24:mode>)
4284         (*aarch64_sme_single_sudot<VNx4SI_ONLY:mode><SME_ZA_BIx24:mode>_plus)
4285         (@aarch64_sme_lane_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>)
4286         (*aarch64_sme_lane_<optab><SME_ZA_SDI:mode><SME_ZA_BHIx24:mode>_plus)
4287         (@aarch64_sme_<optab><VNx4SI_ONLY:mode><SVE_FULL_BHI:mode>)
4288         (*aarch64_sme_<optab><VNx4SI_ONLY:mode><SVE_FULL_BHI:mode>_plus)
4289         (@aarch64_sme_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx24:mode>)
4290         (*aarch64_sme_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx24:mode>_plus)
4291         (@aarch64_sme_single_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx24:mode>)
4292         (*aarch64_sme_single_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx24:mode>_plus)
4293         (@aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx124:mode>)
4294         (*aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_BHIx124:mode>)
4295         (@aarch64_sme_<optab><VNx2DI_ONLY:mode><VNx8HI_ONLY:mode>)
4296         (*aarch64_sme_<optab><VNx2DI_ONLY:mode><VNx8HI_ONLY:mode>_plus)
4297         (@aarch64_sme_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx24:mode>)
4298         (*aarch64_sme_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx24:mode>_plus)
4299         (@aarch64_sme_single_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx24:mode>)
4300         (*aarch64_sme_single_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx24:mode>_plus)
4301         (@aarch64_sme_lane_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx124:mode>)
4302         (*aarch64_sme_lane_<optab><VNx2DI_ONLY:mode><SME_ZA_HIx124:mode>)
4303         (@aarch64_sme_<optab><VNx4SI_ONLY:mode><VNx8HI_ONLY:mode>)
4304         (@aarch64_sme_<optab><VNx4SI_ONLY:mode><VNx4SI_ONLY:mode>)
4305         (@aarch64_sme_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>)
4306         (*aarch64_sme_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>_plus)
4307         (@aarch64_sme_single_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>)
4308         (*aarch64_sme_single_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>_plus)
4309         (@aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>)
4310         (*aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx24:mode>_plus)
4311         (@aarch64_sme_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>)
4312         (*aarch64_sme_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>_plus)
4313         (@aarch64_sme_single_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>)
4314         (*aarch64_sme_single_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>_plus)
4315         (@aarch64_sme_lane_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>)
4316         (*aarch64_sme_lane_<optab><SME_ZA_SDF_I:mode><SME_ZA_SDFx24:mode>)
4317         (@aarch64_sme_<optab><VNx4SI_ONLY:mode><SVE_FULL_HF:mode>)
4318         (*aarch64_sme_<optab><VNx4SI_ONLY:mode><SVE_FULL_HF:mode>_plus)
4319         (@aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx124:mode>)
4320         (*aarch64_sme_lane_<optab><VNx4SI_ONLY:mode><SME_ZA_HFx124:mode>)
4321         (@aarch64_sme_lut<LUTI_BITS><mode>): Likewise.
4322         (UNSPEC_SME_LUTI): New unspec.
4323         * config/aarch64/aarch64-sve-builtins.def (single): New mode suffix.
4324         (c8, c16, c32, c64): New type suffixes.
4325         (vg1x2, vg1x4, vg2, vg2x1, vg2x2, vg2x4, vg4, vg4x1, vg4x2)
4326         (vg4x4): New group suffixes.
4327         * config/aarch64/aarch64-sve-builtins.h (CP_READ_ZT0)
4328         (CP_WRITE_ZT0): New constants.
4329         (get_svbool_t): Delete.
4330         (function_resolver::report_mismatched_num_vectors): New member
4331         function.
4332         (function_resolver::resolve_conversion): Likewise.
4333         (function_resolver::infer_predicate_type): Likewise.
4334         (function_resolver::infer_64bit_scalar_integer_pair): Likewise.
4335         (function_resolver::require_matching_predicate_type): Likewise.
4336         (function_resolver::require_nonscalar_type): Likewise.
4337         (function_resolver::finish_opt_single_resolution): Likewise.
4338         (function_resolver::require_derived_vector_type): Add an
4339         expected_num_vectors parameter.
4340         (function_expander::map_to_rtx_codes): Add an extra parameter
4341         for unconditional FP unspecs.
4342         (function_instance::gp_type_index): New member function.
4343         (function_instance::gp_type): Likewise.
4344         (function_instance::gp_mode): Handle multi-vector operations.
4345         * config/aarch64/aarch64-sve-builtins.cc (TYPES_all_count)
4346         (TYPES_all_pred_count, TYPES_c, TYPES_bhs_data, TYPES_bhs_widen)
4347         (TYPES_hs_data, TYPES_cvt_h_s_float, TYPES_cvt_s_s, TYPES_qcvt_x2)
4348         (TYPES_qcvt_x4, TYPES_qrshr_x2, TYPES_qrshru_x2, TYPES_qrshr_x4)
4349         (TYPES_qrshru_x4, TYPES_while_x, TYPES_while_x_c, TYPES_s_narrow_fsu)
4350         (TYPES_za_s_b_signed, TYPES_za_s_b_unsigned, TYPES_za_s_b_integer)
4351         (TYPES_za_s_h_integer, TYPES_za_s_h_data, TYPES_za_s_unsigned)
4352         (TYPES_za_s_float, TYPES_za_s_data, TYPES_za_d_h_integer): New type
4353         macros.
4354         (groups_x2, groups_x12, groups_x4, groups_x24, groups_x124)
4355         (groups_vg1x2, groups_vg1x4, groups_vg1x24, groups_vg2, groups_vg4)
4356         (groups_vg24): New group arrays.
4357         (function_instance::reads_global_state_p): Handle CP_READ_ZT0.
4358         (function_instance::modifies_global_state_p): Handle CP_WRITE_ZT0.
4359         (add_shared_state_attribute): Handle zt0 state.
4360         (function_builder::add_overloaded_functions): Skip MODE_single
4361         for non-tuple groups.
4362         (function_resolver::report_mismatched_num_vectors): New function.
4363         (function_resolver::resolve_to): Add a fallback error message for
4364         the general two-type case.
4365         (function_resolver::resolve_conversion): New function.
4366         (function_resolver::infer_predicate_type): Likewise.
4367         (function_resolver::infer_64bit_scalar_integer_pair): Likewise.
4368         (function_resolver::require_matching_predicate_type): Likewise.
4369         (function_resolver::require_matching_vector_type): Specifically
4370         diagnose mismatched vector counts.
4371         (function_resolver::require_derived_vector_type): Add an
4372         expected_num_vectors parameter.  Extend to handle cases where
4373         tuples are expected.
4374         (function_resolver::require_nonscalar_type): New function.
4375         (function_resolver::check_gp_argument): Use gp_type_index rather
4376         than hard-coding VECTOR_TYPE_svbool_t.
4377         (function_resolver::finish_opt_single_resolution): New function.
4378         (function_checker::require_immediate_either_or): Remove hard-coded
4379         constants.
4380         (function_expander::direct_optab_handler): New function.
4381         (function_expander::use_pred_x_insn): Only add a strictness flag
4382         is the insn has an operand for it.
4383         (function_expander::map_to_rtx_codes): Take an unconditional
4384         FP unspec as an extra parameter.  Handle tuples and MODE_single.
4385         (function_expander::map_to_unspecs): Handle tuples and MODE_single.
4386         * config/aarch64/aarch64-sve-builtins-functions.h (read_zt0)
4387         (write_zt0): New typedefs.
4388         (full_width_access::memory_vector): Use the function's
4389         vectors_per_tuple.
4390         (rtx_code_function_base): Add an optional unconditional FP unspec.
4391         (rtx_code_function::expand): Update accordingly.
4392         (rtx_code_function_rotated::expand): Likewise.
4393         (unspec_based_function_exact_insn::expand): Use tuple_mode instead
4394         of vector_mode.
4395         (unspec_based_uncond_function): New typedef.
4396         (cond_or_uncond_unspec_function): New class.
4397         (sme_1mode_function::expand): Handle single forms.
4398         (sme_2mode_function_t): Likewise, adding a template parameter for them.
4399         (sme_2mode_function): Update accordingly.
4400         (sme_2mode_lane_function): New typedef.
4401         (multireg_permute): New class.
4402         (class integer_conversion): Likewise.
4403         (while_comparison::expand): Handle svcount_t and svboolx2_t results.
4404         * config/aarch64/aarch64-sve-builtins-shapes.h
4405         (binary_int_opt_single_n, binary_opt_single_n, binary_single)
4406         (binary_za_slice_lane, binary_za_slice_int_opt_single)
4407         (binary_za_slice_opt_single, binary_za_slice_uint_opt_single)
4408         (binaryx, clamp, compare_scalar_count, count_pred_c)
4409         (dot_za_slice_int_lane, dot_za_slice_lane, dot_za_slice_uint_lane)
4410         (extract_pred, inherent_zt, ldr_zt, read_za, read_za_slice)
4411         (select_pred, shift_right_imm_narrowxn, storexn, str_zt)
4412         (unary_convertxn, unary_za_slice, unaryxn, write_za)
4413         (write_za_slice): Declare.
4414         * config/aarch64/aarch64-sve-builtins-shapes.cc
4415         (za_group_is_pure_overload): New function.
4416         (apply_predication): Use the function's gp_type for the predicate,
4417         instead of hard-coding the use of svbool_t.
4418         (parse_element_type): Add support for "c" (svcount_t).
4419         (parse_type): Add support for "c0" and "c1" (conversion destination
4420         and source types).
4421         (binary_za_slice_lane_base): New class.
4422         (binary_za_slice_opt_single_base): Likewise.
4423         (load_contiguous_base::resolve): Pass the group suffix to r.resolve.
4424         (luti_lane_zt_base): New class.
4425         (binary_int_opt_single_n, binary_opt_single_n, binary_single)
4426         (binary_za_slice_lane, binary_za_slice_int_opt_single)
4427         (binary_za_slice_opt_single, binary_za_slice_uint_opt_single)
4428         (binaryx, clamp): New shapes.
4429         (compare_scalar_def::build): Allow the return type to be a tuple.
4430         (compare_scalar_def::expand): Pass the group suffix to r.resolve.
4431         (compare_scalar_count, count_pred_c, dot_za_slice_int_lane)
4432         (dot_za_slice_lane, dot_za_slice_uint_lane, extract_pred, inherent_zt)
4433         (ldr_zt, read_za, read_za_slice, select_pred, shift_right_imm_narrowxn)
4434         (storexn, str_zt): New shapes.
4435         (ternary_qq_lane_def, ternary_qq_opt_n_def): Replace with...
4436         (ternary_qq_or_011_lane_def, ternary_qq_opt_n_or_011_def): ...these
4437         new classes.  Allow a second suffix that specifies the type of the
4438         second vector argument, and that is used to derive the third.
4439         (unary_def::build): Extend to handle tuple types.
4440         (unary_convert_def::build): Use the new c0 and c1 format specifiers.
4441         (unary_convertxn, unary_za_slice, unaryxn, write_za): New shapes.
4442         (write_za_slice): Likewise.
4443         * config/aarch64/aarch64-sve-builtins-base.cc (svbic_impl::expand)
4444         (svext_bhw_impl::expand): Update call to map_to_rtx_costs.
4445         (svcntp_impl::expand): Handle svcount_t variants.
4446         (svcvt_impl::expand): Handle unpredicated conversions separately,
4447         dealing with tuples.
4448         (svdot_impl::expand): Handle 2-way dot products.
4449         (svdotprod_lane_impl::expand): Likewise.
4450         (svld1_impl::fold): Punt on tuple loads.
4451         (svld1_impl::expand): Handle tuple loads.
4452         (svldnt1_impl::expand): Likewise.
4453         (svpfalse_impl::fold): Punt on svcount_t forms.
4454         (svptrue_impl::fold): Likewise.
4455         (svptrue_impl::expand): Handle svcount_t forms.
4456         (svrint_impl): New class.
4457         (svsel_impl::fold): Punt on tuple forms.
4458         (svsel_impl::expand): Handle tuple forms.
4459         (svst1_impl::fold): Punt on tuple loads.
4460         (svst1_impl::expand): Handle tuple loads.
4461         (svstnt1_impl::expand): Likewise.
4462         (svwhilelx_impl::fold): Punt on tuple forms.
4463         (svdot_lane): Use UNSPEC_FDOT.
4464         (svmax, svmaxnm, svmin, svminmm): Add unconditional FP unspecs.
4465         (rinta, rinti, rintm, rintn, rintp, rintx, rintz): Use svrint_impl.
4466         * config/aarch64/aarch64-sve-builtins-base.def (svcreate2, svget2)
4467         (svset2, svundef2): Add _b variants.
4468         (svcvt): Use unary_convertxn.
4469         (svdot): Use ternary_qq_opt_n_or_011.
4470         (svdot_lane): Use ternary_qq_or_011_lane.
4471         (svmax, svmaxnm, svmin, svminnm): Use binary_opt_single_n.
4472         (svpfalse): Add a form that returns svcount_t results.
4473         (svrinta, svrintm, svrintn, svrintp): Use unaryxn.
4474         (svsel): Use binaryxn.
4475         (svst1, svstnt1): Use storexn.
4476         * config/aarch64/aarch64-sve-builtins-sme.h
4477         (svadd_za, svadd_write_za, svbmopa_za, svbmops_za, svdot_za)
4478         (svdot_lane_za, svldr_zt, svluti2_lane_zt, svluti4_lane_zt)
4479         (svmla_za, svmla_lane_za, svmls_za, svmls_lane_za, svread_za)
4480         (svstr_zt, svsub_za, svsub_write_za, svsudot_za, svsudot_lane_za)
4481         (svsuvdot_lane_za, svusdot_za, svusdot_lane_za, svusvdot_lane_za)
4482         (svvdot_lane_za, svwrite_za, svzero_zt): Declare.
4483         * config/aarch64/aarch64-sve-builtins-sme.cc (load_store_za_base):
4484         Rename to...
4485         (load_store_za_zt0_base): ...this and extend to tuples.
4486         (load_za_base, store_za_base): Update accordingly.
4487         (expand_ldr_str_zt0): New function.
4488         (svldr_zt_impl, svluti_lane_zt_impl, svread_za_impl, svstr_zt_impl)
4489         (svsudot_za_impl, svwrite_za_impl, svzero_zt_impl): New classes.
4490         (svadd_za, svadd_write_za, svbmopa_za, svbmops_za, svdot_za)
4491         (svdot_lane_za, svldr_zt, svluti2_lane_zt, svluti4_lane_zt)
4492         (svmla_za, svmla_lane_za, svmls_za, svmls_lane_za, svread_za)
4493         (svstr_zt, svsub_za, svsub_write_za, svsudot_za, svsudot_lane_za)
4494         (svsuvdot_lane_za, svusdot_za, svusdot_lane_za, svusvdot_lane_za)
4495         (svvdot_lane_za, svwrite_za, svzero_zt): New functions.
4496         * config/aarch64/aarch64-sve-builtins-sme.def: Add SME2 intrinsics.
4497         * config/aarch64/aarch64-sve-builtins-sve2.h
4498         (svbfmlslb, svbfmlslb_lane, svbfmlslt, svbfmlslt_lane, svclamp)
4499         (svcvtn, svpext, svpsel, svqcvt, svqcvtn, svqrshr, svqrshrn)
4500         (svqrshru, svqrshrun, svrevd, svunpk, svuzp, svuzpq, svzip)
4501         (svzipq): Declare.
4502         * config/aarch64/aarch64-sve-builtins-sve2.cc (svclamp_impl)
4503         (svcvtn_impl, svpext_impl, svpsel_impl): New classes.
4504         (svqrshl_impl::fold): Update for change to svrshl shape.
4505         (svrshl_impl::fold): Punt on tuple forms.
4506         (svsqadd_impl::expand): Update call to map_to_rtx_codes.
4507         (svunpk_impl): New class.
4508         (svbfmlslb, svbfmlslb_lane, svbfmlslt, svbfmlslt_lane, svclamp)
4509         (svcvtn, svpext, svpsel, svqcvt, svqcvtn, svqrshr, svqrshrn)
4510         (svqrshru, svqrshrun, svrevd, svunpk, svuzp, svuzpq, svzip)
4511         (svzipq): New functions.
4512         * config/aarch64/aarch64-sve-builtins-sve2.def: Add SME2 intrinsics.
4513         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Define
4514         or undefine __ARM_FEATURE_SME2.
4516 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
4518         * config/aarch64/aarch64.md (ZT0_REGNUM): New constant.
4519         (LAST_FAKE_REGNUM): Bump to include it.
4520         * config/aarch64/aarch64.h (FIXED_REGISTERS): Add an entry for ZT0.
4521         (CALL_REALLY_USED_REGISTERS, REGISTER_NAMES): Likewise.
4522         (REG_CLASS_CONTENTS): Likewise.
4523         (machine_function): Add zt0_save_buffer.
4524         (CUMULATIVE_ARGS): Add shared_zt0_flags;
4525         * config/aarch64/aarch64.cc (aarch64_check_state_string): Handle zt0.
4526         (aarch64_fntype_pstate_za, aarch64_fndecl_pstate_za): Likewise.
4527         (aarch64_function_arg): Add the shared ZT0 flags as an extra
4528         limb of the parallel.
4529         (aarch64_init_cumulative_args): Initialize shared_zt0_flags.
4530         (aarch64_extra_live_on_entry): Handle ZT0_REGNUM.
4531         (aarch64_epilogue_uses): Likewise.
4532         (aarch64_get_zt0_save_buffer, aarch64_save_zt0): New functions.
4533         (aarch64_restore_zt0): Likewise.
4534         (aarch64_start_call_args): Reject calls to functions that share
4535         ZT0 from functions that have no ZT0 state.  Save ZT0 around shared-ZA
4536         calls that do not share ZT0.
4537         (aarch64_expand_call): Handle ZT0.  Reject calls to functions that
4538         share ZT0 but not ZA from functions with ZA state.
4539         (aarch64_end_call_args): Restore ZT0 after calls to shared-ZA functions
4540         that do not share ZT0.
4541         (aarch64_set_current_function): Require +sme2 for functions that
4542         have ZT0 state.
4543         (aarch64_function_attribute_inlinable_p): Don't allow functions to
4544         be inlined if they have local zt0 state.
4545         (AARCH64_IPA_CLOBBERS_ZT0): New constant.
4546         (aarch64_update_ipa_fn_target_info): Record asms that clobber ZT0.
4547         (aarch64_can_inline_p): Don't inline callees that clobber ZT0
4548         into functions that have ZT0 state.
4549         (aarch64_comp_type_attributes): Check for compatible ZT0 sharing.
4550         (aarch64_optimize_mode_switching): Use mode switching if the
4551         function has ZT0 state.
4552         (aarch64_mode_emit_local_sme_state): Save and restore ZT0 around
4553         calls to private-ZA functions.
4554         (aarch64_mode_needed_local_sme_state): Require ZA to be active
4555         for instructions that access ZT0.
4556         (aarch64_mode_entry): Mark ZA as dead on entry if the function
4557         only shares state other than "za" itself.
4558         (aarch64_mode_exit): Likewise mark ZA as dead on return.
4559         (aarch64_md_asm_adjust): Extend handling of ZA clobbers to ZT0.
4560         * config/aarch64/aarch64-c.cc (aarch64_define_unconditional_macros):
4561         Define __ARM_STATE_ZT0.
4562         * config/aarch64/aarch64-sme.md (UNSPECV_ASM_UPDATE_ZT0): New unspecv.
4563         (aarch64_asm_update_zt0): New insn.
4564         (UNSPEC_RESTORE_ZT0): New unspec.
4565         (aarch64_sme_ldr_zt0, aarch64_restore_zt0): New insns.
4566         (aarch64_sme_str_zt0): Likewise.
4568 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
4570         * config/aarch64/aarch64-modes.def (VNx32BI): New mode.
4571         * config/aarch64/aarch64-protos.h (aarch64_split_double_move): Declare.
4572         * config/aarch64/aarch64-sve-builtins.cc
4573         (register_tuple_type): Handle tuples of predicates.
4574         (handle_arm_sve_h): Define svboolx2_t as a pair of two svbool_ts.
4575         * config/aarch64/aarch64-sve.md (movvnx32bi): New insn.
4576         * config/aarch64/aarch64.cc
4577         (pure_scalable_type_info::piece::get_rtx): Use VNx32BI for pairs
4578         of predicates.
4579         (pure_scalable_type_info::add_piece): Don't try to form pairs of
4580         predicates.
4581         (VEC_STRUCT): Generalize comment.
4582         (aarch64_classify_vector_mode): Handle VNx32BI.
4583         (aarch64_array_mode): Likewise.  Return BLKmode for arrays of
4584         predicates that have no associated mode, rather than allowing
4585         an integer mode to be chosen.
4586         (aarch64_hard_regno_nregs): Handle VNx32BI.
4587         (aarch64_hard_regno_mode_ok): Likewise.
4588         (aarch64_split_double_move): New function, split out from...
4589         (aarch64_split_128bit_move): ...here.
4590         (aarch64_ptrue_reg): Tighten assert to aarch64_sve_pred_mode_p.
4591         (aarch64_pfalse_reg): Likewise.
4592         (aarch64_sve_same_pred_for_ptest_p): Likewise.
4593         (aarch64_sme_mode_switch_regs::add_reg): Handle VNx32BI.
4594         (aarch64_expand_mov_immediate): Restrict handling of boolean vector
4595         constants to single-predicate modes.
4596         (aarch64_classify_address): Handle VNx32BI, ensuring that both halves
4597         can be addressed.
4598         (aarch64_class_max_nregs): Handle VNx32BI.
4599         (aarch64_member_type_forces_blk): Don't for BLKmode for svboolx2_t.
4600         (aarch64_simd_valid_immediate): Allow all-zeros and all-ones for
4601         VNx32BI.
4602         (aarch64_mov_operand_p): Restrict predicate constant canonicalization
4603         to single-predicate modes.
4604         (aarch64_evpc_ext): Generalize exclusion to all predicate modes.
4605         (aarch64_evpc_rev_local, aarch64_evpc_dup): Likewise.
4606         * config/aarch64/constraints.md (PR_REGS): New predicate.
4608 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
4610         * config/aarch64/aarch64-sve-builtins-base.cc
4611         (svreinterpret_impl::fold): Handle reinterprets between svbool_t
4612         and svcount_t.
4613         (svreinterpret_impl::expand): Likewise.
4614         * config/aarch64/aarch64-sve-builtins-base.def (svreinterpret): Add
4615         b<->c forms.
4616         * config/aarch64/aarch64-sve-builtins.cc (TYPES_reinterpret_b): New
4617         type suffix list.
4618         (wrap_type_in_struct, register_type_decl): New functions, split out
4619         from...
4620         (register_tuple_type): ...here.
4621         (register_builtin_types): Handle svcount_t.
4622         (handle_arm_sve_h): Don't create tuples of svcount_t.
4623         * config/aarch64/aarch64-sve-builtins.def (svcount_t): New type.
4624         (c): New type suffix.
4625         * config/aarch64/aarch64-sve-builtins.h (TYPE_count): New type class.
4627 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
4629         * doc/invoke.texi: Document +sme2.
4630         * doc/sourcebuild.texi: Document aarch64_sme2.
4631         * config/aarch64/aarch64-option-extensions.def (AARCH64_OPT_EXTENSION):
4632         Add sme2.
4633         * config/aarch64/aarch64.h (AARCH64_ISA_SME2, TARGET_SME2): New macros.
4635 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
4637         * config/aarch64/aarch64.cc (aarch64_function_ok_for_sibcall):
4638         Enforce PSTATE.SM and PSTATE.ZA restrictions.
4639         (aarch64_expand_epilogue): Save and restore the arguments
4640         to a sibcall around any change to PSTATE.SM.
4642 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
4644         * config/aarch64/aarch64.cc: Include symbol-summary.h, ipa-prop.h,
4645         and ipa-fnsummary.h
4646         (aarch64_function_attribute_inlinable_p): New function.
4647         (AARCH64_IPA_SM_FIXED, AARCH64_IPA_CLOBBERS_ZA): New constants.
4648         (aarch64_need_ipa_fn_target_info): New function.
4649         (aarch64_update_ipa_fn_target_info): Likewise.
4650         (aarch64_can_inline_p): Restrict the previous ISA flag checks
4651         to non-modal features.  Prevent callees that require a particular
4652         PSTATE.SM state from being inlined into callers that can't guarantee
4653         that state.  Also prevent callees that have ZA state from being
4654         inlined into callers that don't.  Finally, prevent callees that
4655         clobber ZA from being inlined into callers that have ZA state.
4656         (TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P): Define.
4657         (TARGET_NEED_IPA_FN_TARGET_INFO): Likewise.
4658         (TARGET_UPDATE_IPA_FN_TARGET_INFO): Likewise.
4660 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
4662         * config/aarch64/aarch64.cc: Include except.h
4663         (aarch64_sme_mode_switch_regs::add_call_preserved_reg): New function.
4664         (aarch64_sme_mode_switch_regs::add_call_preserved_regs): Likewise.
4665         (aarch64_need_old_pstate_sm): Return true if the function has
4666         a nonlocal-goto or exception receiver.
4667         (aarch64_switch_pstate_sm_for_landing_pad): New function.
4668         (aarch64_switch_pstate_sm_for_jump): Likewise.
4669         (pass_switch_pstate_sm::gate): Enable the pass for all
4670         streaming and streaming-compatible functions.
4671         (pass_switch_pstate_sm::execute): Handle non-local gotos and their
4672         receivers.  Handle exception handler entry points.
4674 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
4676         * config/aarch64/aarch64.cc (aarch64_arm_attribute_table): Add
4677         arm::locally_streaming.
4678         (aarch64_fndecl_is_locally_streaming): New function.
4679         (aarch64_fndecl_sm_state): Handle locally-streaming functions.
4680         (aarch64_cfun_enables_pstate_sm): New function.
4681         (aarch64_add_offset): Add an argument that specifies whether
4682         the streaming vector length should be used instead of the
4683         prevailing one.
4684         (aarch64_split_add_offset, aarch64_add_sp, aarch64_sub_sp): Likewise.
4685         (aarch64_allocate_and_probe_stack_space): Likewise.
4686         (aarch64_expand_mov_immediate): Update calls accordingly.
4687         (aarch64_need_old_pstate_sm): Return true for locally-streaming
4688         streaming-compatible functions.
4689         (aarch64_layout_frame): Force all call-preserved Z and P registers
4690         to be saved and restored if the function switches PSTATE.SM in the
4691         prologue.
4692         (aarch64_get_separate_components): Disable shrink-wrapping of
4693         such Z and P saves and restores.
4694         (aarch64_use_late_prologue_epilogue): New function.
4695         (aarch64_expand_prologue): Measure SVE lengths in the streaming
4696         vector length for locally-streaming functions, then emit code
4697         to enable streaming mode.
4698         (aarch64_expand_epilogue): Likewise in reverse.
4699         (TARGET_USE_LATE_PROLOGUE_EPILOGUE): Define.
4700         * config/aarch64/aarch64-c.cc (aarch64_define_unconditional_macros):
4701         Define __arm_locally_streaming.
4703 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
4705         * doc/invoke.texi: Document +sme-i16i64 and +sme-f64f64.
4706         * config.gcc (aarch64*-*-*): Add arm_sme.h to the list of headers
4707         to install and aarch64-sve-builtins-sme.o to the list of objects
4708         to build.
4709         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Define
4710         or undefine TARGET_SME, TARGET_SME_I16I64 and TARGET_SME_F64F64.
4711         (aarch64_pragma_aarch64): Handle arm_sme.h.
4712         * config/aarch64/aarch64-option-extensions.def (sme-i16i64)
4713         (sme-f64f64): New extensions.
4714         * config/aarch64/aarch64-protos.h (aarch64_sme_vq_immediate)
4715         (aarch64_addsvl_addspl_immediate_p, aarch64_output_addsvl_addspl)
4716         (aarch64_output_sme_zero_za): Declare.
4717         (aarch64_output_move_struct): Delete.
4718         (aarch64_sme_ldr_vnum_offset): Declare.
4719         (aarch64_sve::handle_arm_sme_h): Likewise.
4720         * config/aarch64/aarch64.h (AARCH64_ISA_SM_ON): New macro.
4721         (AARCH64_ISA_SME_I16I64, AARCH64_ISA_SME_F64F64): Likewise.
4722         (TARGET_STREAMING, TARGET_STREAMING_SME): Likewise.
4723         (TARGET_SME_I16I64, TARGET_SME_F64F64): Likewise.
4724         * config/aarch64/aarch64.cc (aarch64_sve_rdvl_factor_p): Rename to...
4725         (aarch64_sve_rdvl_addvl_factor_p): ...this.
4726         (aarch64_sve_rdvl_immediate_p): Update accordingly.
4727         (aarch64_rdsvl_immediate_p, aarch64_add_offset): Likewise.
4728         (aarch64_sme_vq_immediate): Likewise.  Make public.
4729         (aarch64_sve_addpl_factor_p): New function.
4730         (aarch64_sve_addvl_addpl_immediate_p): Use
4731         aarch64_sve_rdvl_addvl_factor_p and aarch64_sve_addpl_factor_p.
4732         (aarch64_addsvl_addspl_immediate_p): New function.
4733         (aarch64_output_addsvl_addspl): Likewise.
4734         (aarch64_cannot_force_const_mem): Return true for RDSVL immediates.
4735         (aarch64_classify_index): Handle .Q scaling for VNx1TImode.
4736         (aarch64_classify_address): Likewise for vnum offsets.
4737         (aarch64_output_sme_zero_za): New function.
4738         (aarch64_sme_ldr_vnum_offset_p): Likewise.
4739         * config/aarch64/predicates.md (aarch64_addsvl_addspl_immediate):
4740         New predicate.
4741         (aarch64_pluslong_operand): Include it for SME.
4742         * config/aarch64/constraints.md (Ucj, Uav): New constraints.
4743         * config/aarch64/iterators.md (VNx1TI_ONLY): New mode iterator.
4744         (SME_ZA_I, SME_ZA_SDI, SME_ZA_SDF_I, SME_MOP_BHI): Likewise.
4745         (SME_MOP_HSDF): Likewise.
4746         (UNSPEC_SME_ADDHA, UNSPEC_SME_ADDVA, UNSPEC_SME_FMOPA)
4747         (UNSPEC_SME_FMOPS, UNSPEC_SME_LD1_HOR, UNSPEC_SME_LD1_VER)
4748         (UNSPEC_SME_READ_HOR, UNSPEC_SME_READ_VER, UNSPEC_SME_SMOPA)
4749         (UNSPEC_SME_SMOPS, UNSPEC_SME_ST1_HOR, UNSPEC_SME_ST1_VER)
4750         (UNSPEC_SME_SUMOPA, UNSPEC_SME_SUMOPS, UNSPEC_SME_UMOPA)
4751         (UNSPEC_SME_UMOPS, UNSPEC_SME_USMOPA, UNSPEC_SME_USMOPS)
4752         (UNSPEC_SME_WRITE_HOR, UNSPEC_SME_WRITE_VER): New unspecs.
4753         (elem_bits): Handle x2 and x4 structure modes, plus VNx1TI.
4754         (Vetype, Vesize, VPRED): Handle VNx1TI.
4755         (b): New mode attribute.
4756         (SME_LD1, SME_READ, SME_ST1, SME_WRITE, SME_BINARY_SDI, SME_INT_MOP)
4757         (SME_FP_MOP): New int iterators.
4758         (optab): Handle SME unspecs.
4759         (hv): New int attribute.
4760         * config/aarch64/aarch64.md (*add<mode>3_aarch64): Handle ADDSVL
4761         and ADDSPL.
4762         * config/aarch64/aarch64-sme.md (UNSPEC_SME_LDR): New unspec.
4763         (@aarch64_sme_<optab><mode>, @aarch64_sme_<optab><mode>_plus)
4764         (aarch64_sme_ldr0, @aarch64_sme_ldrn<mode>): New patterns.
4765         (UNSPEC_SME_STR): New unspec.
4766         (@aarch64_sme_<optab><mode>, @aarch64_sme_<optab><mode>_plus)
4767         (aarch64_sme_str0, @aarch64_sme_strn<mode>): New patterns.
4768         (@aarch64_sme_<optab><v_int_container><mode>): Likewise.
4769         (*aarch64_sme_<optab><v_int_container><mode>_plus): Likewise.
4770         (@aarch64_sme_<optab><VNx1TI_ONLY:mode><SVE_FULL:mode>): Likewise.
4771         (@aarch64_sme_<optab><v_int_container><mode>): Likewise.
4772         (*aarch64_sme_<optab><v_int_container><mode>_plus): Likewise.
4773         (@aarch64_sme_<optab><VNx1TI_ONLY:mode><SVE_FULL:mode>): Likewise.
4774         (UNSPEC_SME_ZERO): New unspec.
4775         (aarch64_sme_zero): New pattern.
4776         (@aarch64_sme_<SME_BINARY_SDI:optab><mode>): Likewise.
4777         (@aarch64_sme_<SME_INT_MOP:optab><mode>): Likewise.
4778         (@aarch64_sme_<SME_FP_MOP:optab><mode>): Likewise.
4779         * config/aarch64/aarch64-sve-builtins.def: Add ZA type suffixes.
4780         Include aarch64-sve-builtins-sme.def.
4781         (DEF_SME_ZA_FUNCTION): New macro.
4782         * config/aarch64/aarch64-sve-builtins.h (CP_READ_ZA): New call
4783         property.
4784         (CP_WRITE_ZA): Likewise.
4785         (PRED_za_m): New predication type.
4786         (type_suffix_index): Handle DEF_SME_ZA_SUFFIX.
4787         (type_suffix_info): Add vector_p and za_p fields.
4788         (function_instance::num_za_tiles): New member function.
4789         (function_builder::get_attributes): Add an aarch64_feature_flags
4790         argument.
4791         (function_expander::get_contiguous_base): Take a base argument
4792         number, a vnum argument number, and an argument that indicates
4793         whether the vnum parameter is a factor of the SME vector length
4794         or the prevailing vector length.
4795         (function_expander::add_integer_operand): Take a poly_int64.
4796         (sve_switcher::sve_switcher): Take a base set of flags.
4797         (sme_switcher): New class.
4798         (scalar_types): Add a null entry for NUM_VECTOR_TYPES.
4799         * config/aarch64/aarch64-sve-builtins.cc: Include
4800         aarch64-sve-builtins-sme.h.
4801         (pred_suffixes): Add an entry for PRED_za_m.
4802         (type_suffixes): Initialize vector_p and za_p.  Handle ZA suffixes.
4803         (TYPES_all_za, TYPES_d_za, TYPES_za_bhsd_data, TYPES_za_all_data)
4804         (TYPES_za_s_integer, TYPES_za_d_integer, TYPES_mop_base)
4805         (TYPES_mop_base_signed, TYPES_mop_base_unsigned, TYPES_mop_i16i64)
4806         (TYPES_mop_i16i64_signed, TYPES_mop_i16i64_unsigned, TYPES_za): New
4807         type suffix macros.
4808         (preds_m, preds_za_m): New predication lists.
4809         (function_groups): Handle DEF_SME_ZA_FUNCTION.
4810         (scalar_types): Add an entry for NUM_VECTOR_TYPES.
4811         (find_type_suffix_for_scalar_type): Check positively for vectors
4812         rather than negatively for predicates.
4813         (check_required_extensions): Handle PSTATE.SM and PSTATE.ZA
4814         requirements.
4815         (report_out_of_range): Handle the case where the minimum and
4816         maximum are the same.
4817         (function_instance::reads_global_state_p): Return true for functions
4818         that read ZA.
4819         (function_instance::modifies_global_state_p): Return true for functions
4820         that write to ZA.
4821         (sve_switcher::sve_switcher): Add a base flags argument.
4822         (function_builder::get_name): Handle "__arm_" prefixes.
4823         (add_attribute): Add an overload that takes a namespaces.
4824         (add_shared_state_attribute): New function.
4825         (function_builder::get_attributes): Take the required feature flags
4826         as argument.  Add streaming and ZA attributes where appropriate.
4827         (function_builder::add_unique_function): Update calls accordingly.
4828         (function_resolver::check_gp_argument): Assert that the predication
4829         isn't ZA _m predication.
4830         (function_checker::function_checker): Don't bias the argument
4831         number for ZA _m predication.
4832         (function_expander::get_contiguous_base): Add arguments that
4833         specify the base argument number, the vnum argument number,
4834         and an argument that indicates whether the vnum parameter is
4835         a factor of the SME vector length or the prevailing vector length.
4836         Handle the SME case.
4837         (function_expander::add_input_operand): Handle pmode_register_operand.
4838         (function_expander::add_integer_operand): Take a poly_int64.
4839         (init_builtins): Call handle_arm_sme_h for LTO.
4840         (handle_arm_sve_h): Skip SME intrinsics.
4841         (handle_arm_sme_h): New function.
4842         * config/aarch64/aarch64-sve-builtins-functions.h
4843         (read_write_za, write_za): New classes.
4844         (unspec_based_sme_function, za_arith_function): New using aliases.
4845         (quiet_za_arith_function): Likewise.
4846         * config/aarch64/aarch64-sve-builtins-shapes.h
4847         (binary_za_int_m, binary_za_m, binary_za_uint_m, bool_inherent)
4848         (inherent_za, inherent_mask_za, ldr_za, load_za, read_za_m, store_za)
4849         (str_za, unary_za_m, write_za_m): Declare.
4850         * config/aarch64/aarch64-sve-builtins-shapes.cc (apply_predication):
4851         Expect za_m functions to have an existing governing predicate.
4852         (binary_za_m_base, binary_za_int_m_def, binary_za_m_def): New classes.
4853         (binary_za_uint_m_def, bool_inherent_def, inherent_za_def): Likewise.
4854         (inherent_mask_za_def, ldr_za_def, load_za_def, read_za_m_def)
4855         (store_za_def, str_za_def, unary_za_m_def, write_za_m_def): Likewise.
4856         * config/aarch64/arm_sme.h: New file.
4857         * config/aarch64/aarch64-sve-builtins-sme.h: Likewise.
4858         * config/aarch64/aarch64-sve-builtins-sme.cc: Likewise.
4859         * config/aarch64/aarch64-sve-builtins-sme.def: Likewise.
4860         * config/aarch64/t-aarch64 (aarch64-sve-builtins.o): Depend on
4861         aarch64-sve-builtins-sme.def and aarch64-sve-builtins-sme.h.
4862         (aarch64-sve-builtins-sme.o): New rule.
4864 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
4866         * config/aarch64/aarch64-sve-builtins.h
4867         (function_shape::has_merge_argument_p): New member function.
4868         * config/aarch64/aarch64-sve-builtins.cc:
4869         (function_resolver::check_gp_argument): Use it.
4870         (function_expander::get_fallback_value): Likewise.
4871         * config/aarch64/aarch64-sve-builtins-shapes.cc
4872         (apply_predication): Likewise.
4873         (unary_convert_narrowt_def::has_merge_argument_p): New function.
4875 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
4877         * config/aarch64/aarch64-sve-builtins-functions.h
4878         (unspec_based_function_base): Allow type suffix 1 to determine
4879         the mode of the operation.
4880         (unspec_based_function): Update accordingly.
4881         (unspec_based_fused_function): Likewise.
4882         (unspec_based_fused_lane_function): Likewise.
4884 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
4886         * config/aarch64/aarch64-modes.def: Add VNx1TI.
4888 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
4890         * config/aarch64/aarch64.h (W12_W15_REGNUM_P): New macro.
4891         (W12_W15_REGS): New register class.
4892         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Add entries for it.
4893         * config/aarch64/aarch64.cc (aarch64_regno_regclass)
4894         (aarch64_class_max_nregs, aarch64_register_move_cost): Handle
4895         W12_W15_REGS.
4897 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
4899         * config/aarch64/aarch64-isa-modes.def (ZA_ON): New ISA mode.
4900         * config/aarch64/aarch64-protos.h (aarch64_rdsvl_immediate_p)
4901         (aarch64_output_rdsvl, aarch64_optimize_mode_switching)
4902         (aarch64_restore_za): Declare.
4903         * config/aarch64/constraints.md (UsR): New constraint.
4904         * config/aarch64/aarch64.md (LOWERING_REGNUM, TPIDR_BLOCK_REGNUM)
4905         (SME_STATE_REGNUM, TPIDR2_SETUP_REGNUM, ZA_FREE_REGNUM)
4906         (ZA_SAVED_REGNUM, ZA_REGNUM, FIRST_FAKE_REGNUM): New constants.
4907         (LAST_FAKE_REGNUM): Likewise.
4908         (UNSPEC_SAVE_NZCV, UNSPEC_RESTORE_NZCV, UNSPEC_SME_VQ): New unspecs.
4909         (arches): Add sme.
4910         (arch_enabled): Handle it.
4911         (*cb<optab><mode>1): Rename to...
4912         (aarch64_cb<optab><mode>1): ...this.
4913         (*movsi_aarch64): Add an alternative for RDSVL.
4914         (*movdi_aarch64): Likewise.
4915         (aarch64_save_nzcv, aarch64_restore_nzcv): New insns.
4916         * config/aarch64/aarch64-sme.md (UNSPEC_SMSTOP_ZA)
4917         (UNSPEC_INITIAL_ZERO_ZA, UNSPEC_TPIDR2_SAVE, UNSPEC_TPIDR2_RESTORE)
4918         (UNSPEC_READ_TPIDR2, UNSPEC_WRITE_TPIDR2, UNSPEC_SETUP_LOCAL_TPIDR2)
4919         (UNSPEC_RESTORE_ZA, UNSPEC_START_PRIVATE_ZA_CALL): New unspecs.
4920         (UNSPEC_END_PRIVATE_ZA_CALL, UNSPEC_COMMIT_LAZY_SAVE): Likewise.
4921         (UNSPECV_ASM_UPDATE_ZA): New unspecv.
4922         (aarch64_tpidr2_save, aarch64_smstart_za, aarch64_smstop_za)
4923         (aarch64_initial_zero_za, aarch64_setup_local_tpidr2)
4924         (aarch64_clear_tpidr2, aarch64_write_tpidr2, aarch64_read_tpidr2)
4925         (aarch64_tpidr2_restore, aarch64_restore_za, aarch64_asm_update_za)
4926         (aarch64_start_private_za_call, aarch64_end_private_za_call)
4927         (aarch64_commit_lazy_save): New patterns.
4928         * config/aarch64/aarch64.h (AARCH64_ISA_ZA_ON, TARGET_ZA): New macros.
4929         (FIXED_REGISTERS, REGISTER_NAMES): Add the new fake ZA registers.
4930         (CALL_USED_REGISTERS): Replace with...
4931         (CALL_REALLY_USED_REGISTERS): ...this and add the fake ZA registers.
4932         (FIRST_PSEUDO_REGISTER): Bump to include the fake ZA registers.
4933         (FAKE_REGS): New register class.
4934         (REG_CLASS_NAMES): Update accordingly.
4935         (REG_CLASS_CONTENTS): Likewise.
4936         (machine_function::tpidr2_block): New member variable.
4937         (machine_function::tpidr2_block_ptr): Likewise.
4938         (machine_function::za_save_buffer): Likewise.
4939         (machine_function::next_asm_update_za_id): Likewise.
4940         (CUMULATIVE_ARGS::shared_za_flags): Likewise.
4941         (aarch64_mode_entity, aarch64_local_sme_state): New enums.
4942         (aarch64_tristate_mode): Likewise.
4943         (OPTIMIZE_MODE_SWITCHING, NUM_MODES_FOR_MODE_SWITCHING): Define.
4944         * config/aarch64/aarch64.cc (AARCH64_STATE_SHARED, AARCH64_STATE_IN)
4945         (AARCH64_STATE_OUT): New constants.
4946         (aarch64_attribute_shared_state_flags): New function.
4947         (aarch64_lookup_shared_state_flags, aarch64_fndecl_has_new_state)
4948         (aarch64_check_state_string, cmp_string_csts): Likewise.
4949         (aarch64_merge_string_arguments, aarch64_check_arm_new_against_type)
4950         (handle_arm_new, handle_arm_shared): Likewise.
4951         (handle_arm_new_za_attribute): New
4952         (aarch64_arm_attribute_table): Add new, preserves, in, out, and inout.
4953         (aarch64_hard_regno_nregs): Handle FAKE_REGS.
4954         (aarch64_hard_regno_mode_ok): Likewise.
4955         (aarch64_fntype_shared_flags, aarch64_fntype_pstate_za): New functions.
4956         (aarch64_fntype_isa_mode): Include aarch64_fntype_pstate_za.
4957         (aarch64_fndecl_has_state, aarch64_fndecl_pstate_za): New functions.
4958         (aarch64_fndecl_isa_mode): Include aarch64_fndecl_pstate_za.
4959         (aarch64_cfun_incoming_pstate_za, aarch64_cfun_shared_flags)
4960         (aarch64_cfun_has_new_state, aarch64_cfun_has_state): New functions.
4961         (aarch64_sme_vq_immediate, aarch64_sme_vq_unspec_p): Likewise.
4962         (aarch64_rdsvl_immediate_p, aarch64_output_rdsvl): Likewise.
4963         (aarch64_expand_mov_immediate): Handle RDSVL immediates.
4964         (aarch64_function_arg): Add the ZA sharing flags as a third limb
4965         of the PARALLEL.
4966         (aarch64_init_cumulative_args): Record the ZA sharing flags.
4967         (aarch64_extra_live_on_entry): New function.  Handle the new
4968         ZA-related fake registers.
4969         (aarch64_epilogue_uses): Handle the new ZA-related fake registers.
4970         (aarch64_cannot_force_const_mem): Handle UNSPEC_SME_VQ constants.
4971         (aarch64_get_tpidr2_block, aarch64_get_tpidr2_ptr): New functions.
4972         (aarch64_init_tpidr2_block, aarch64_restore_za): Likewise.
4973         (aarch64_layout_frame): Check whether the current function creates
4974         new ZA state.  Record that it clobbers LR if so.
4975         (aarch64_expand_prologue): Handle functions that create new ZA state.
4976         (aarch64_expand_epilogue): Likewise.
4977         (aarch64_create_tpidr2_block): New function.
4978         (aarch64_restore_za): Likewise.
4979         (aarch64_start_call_args): Disallow calls to shared-ZA functions
4980         from functions that have no ZA state.  Emit a marker instruction
4981         before calls to private-ZA functions from functions that have
4982         SME state.
4983         (aarch64_expand_call): Add return registers for state that is
4984         managed via attributes.  Record the use and clobber information
4985         for the ZA registers.
4986         (aarch64_end_call_args): New function.
4987         (aarch64_regno_regclass): Handle FAKE_REGS.
4988         (aarch64_class_max_nregs): Likewise.
4989         (aarch64_override_options_internal): Require TARGET_SME for
4990         functions that have ZA state.
4991         (aarch64_conditional_register_usage): Handle FAKE_REGS.
4992         (aarch64_mov_operand_p): Handle RDSVL immediates.
4993         (aarch64_comp_type_attributes): Check that the ZA sharing flags
4994         are equal.
4995         (aarch64_merge_decl_attributes): New function.
4996         (aarch64_optimize_mode_switching, aarch64_mode_emit_za_save_buffer)
4997         (aarch64_mode_emit_local_sme_state, aarch64_mode_emit):  Likewise.
4998         (aarch64_insn_references_sme_state_p): Likewise.
4999         (aarch64_mode_needed_local_sme_state): Likewise.
5000         (aarch64_mode_needed_za_save_buffer, aarch64_mode_needed): Likewise.
5001         (aarch64_mode_after_local_sme_state, aarch64_mode_after): Likewise.
5002         (aarch64_local_sme_confluence, aarch64_mode_confluence): Likewise.
5003         (aarch64_one_shot_backprop, aarch64_local_sme_backprop): Likewise.
5004         (aarch64_mode_backprop, aarch64_mode_entry): Likewise.
5005         (aarch64_mode_exit, aarch64_mode_eh_handler): Likewise.
5006         (aarch64_mode_priority, aarch64_md_asm_adjust): Likewise.
5007         (TARGET_END_CALL_ARGS, TARGET_MERGE_DECL_ATTRIBUTES): Define.
5008         (TARGET_MODE_EMIT, TARGET_MODE_NEEDED, TARGET_MODE_AFTER): Likewise.
5009         (TARGET_MODE_CONFLUENCE, TARGET_MODE_BACKPROP): Likewise.
5010         (TARGET_MODE_ENTRY, TARGET_MODE_EXIT): Likewise.
5011         (TARGET_MODE_EH_HANDLER, TARGET_MODE_PRIORITY): Likewise.
5012         (TARGET_EXTRA_LIVE_ON_ENTRY): Likewise.
5013         (TARGET_MD_ASM_ADJUST): Use aarch64_md_asm_adjust.
5014         * config/aarch64/aarch64-c.cc (aarch64_define_unconditional_macros):
5015         Define __arm_new, __arm_preserves,__arm_in, __arm_out, and __arm_inout.
5017 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
5019         * config/aarch64/aarch64-passes.def
5020         (pass_late_thread_prologue_and_epilogue): New pass.
5021         * config/aarch64/aarch64-sme.md: New file.
5022         * config/aarch64/aarch64.md: Include it.
5023         (*tb<optab><mode>1): Rename to...
5024         (@aarch64_tb<optab><mode>): ...this.
5025         (call, call_value, sibcall, sibcall_value): Don't require operand 2
5026         to be a CONST_INT.
5027         * config/aarch64/aarch64-protos.h (aarch64_emit_call_insn): Return
5028         the insn.
5029         (make_pass_switch_sm_state): Declare.
5030         * config/aarch64/aarch64.h (TARGET_STREAMING_COMPATIBLE): New macro.
5031         (CALL_USED_REGISTER): Mark VG as call-preserved.
5032         (aarch64_frame::old_svcr_offset): New member variable.
5033         (machine_function::call_switches_sm_state): Likewise.
5034         (CUMULATIVE_ARGS::num_sme_mode_switch_args): Likewise.
5035         (CUMULATIVE_ARGS::sme_mode_switch_args): Likewise.
5036         * config/aarch64/aarch64.cc: Include tree-pass.h and cfgbuild.h.
5037         (aarch64_cfun_incoming_pstate_sm): New function.
5038         (aarch64_call_switches_pstate_sm): Likewise.
5039         (aarch64_reg_save_mode): Return DImode for VG_REGNUM.
5040         (aarch64_callee_isa_mode): New function.
5041         (aarch64_insn_callee_isa_mode): Likewise.
5042         (aarch64_guard_switch_pstate_sm): Likewise.
5043         (aarch64_switch_pstate_sm): Likewise.
5044         (aarch64_sme_mode_switch_regs): New class.
5045         (aarch64_record_sme_mode_switch_args): New function.
5046         (aarch64_finish_sme_mode_switch_args): Likewise.
5047         (aarch64_function_arg): Handle the end marker by returning a
5048         PARALLEL that contains the ABI cookie that we used previously
5049         alongside the result of aarch64_finish_sme_mode_switch_args.
5050         (aarch64_init_cumulative_args): Initialize num_sme_mode_switch_args.
5051         (aarch64_function_arg_advance): If a call would switch SM state,
5052         record all argument registers that would need to be saved around
5053         the mode switch.
5054         (aarch64_need_old_pstate_sm): New function.
5055         (aarch64_layout_frame): Decide whether the frame needs to store the
5056         incoming value of PSTATE.SM and allocate a save slot for it if so.
5057         If a function switches SME state, arrange to save the old value
5058         of the DWARF VG register.  Handle the case where this is the only
5059         register save slot above the FP.
5060         (aarch64_save_callee_saves): Handles saves of the DWARF VG register.
5061         (aarch64_get_separate_components): Prevent such saves from being
5062         shrink-wrapped.
5063         (aarch64_old_svcr_mem): New function.
5064         (aarch64_read_old_svcr): Likewise.
5065         (aarch64_guard_switch_pstate_sm): Likewise.
5066         (aarch64_expand_prologue): Handle saves of the DWARF VG register.
5067         Initialize any SVCR save slot.
5068         (aarch64_expand_call): Allow the cookie to be PARALLEL that contains
5069         both the UNSPEC_CALLEE_ABI value and a list of registers that need
5070         to be preserved across a change to PSTATE.SM.  If the call does
5071         involve such a change to PSTATE.SM, record the registers that
5072         would be clobbered by this process.  Also emit an instruction
5073         to mark the temporary change in VG.  Update call_switches_pstate_sm.
5074         (aarch64_emit_call_insn): Return the emitted instruction.
5075         (aarch64_frame_pointer_required): New function.
5076         (aarch64_conditional_register_usage): Prevent VG_REGNUM from being
5077         treated as a register operand.
5078         (aarch64_switch_pstate_sm_for_call): New function.
5079         (pass_data_switch_pstate_sm): New pass variable.
5080         (pass_switch_pstate_sm): New pass class.
5081         (make_pass_switch_pstate_sm): New function.
5082         (TARGET_FRAME_POINTER_REQUIRED): Define.
5083         * config/aarch64/t-aarch64 (s-check-sve-md): Add aarch64-sme.md.
5085 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
5087         * config/aarch64/aarch64.h (TARGET_NON_STREAMING): New macro.
5088         (TARGET_SVE2_AES, TARGET_SVE2_BITPERM): Use it.
5089         (TARGET_SVE2_SHA3, TARGET_SVE2_SM4): Likewise.
5090         * config/aarch64/aarch64-sve-builtins-base.def: Separate out
5091         the functions that require PSTATE.SM to be 0 and guard them
5092         with AARCH64_FL_SM_OFF.
5093         * config/aarch64/aarch64-sve-builtins-sve2.def: Likewise.
5094         * config/aarch64/aarch64-sve-builtins.cc (check_required_extensions):
5095         Enforce AARCH64_FL_SM_OFF requirements.
5096         * config/aarch64/aarch64-sve.md (aarch64_wrffr): Require
5097         TARGET_NON_STREAMING
5098         (aarch64_rdffr, aarch64_rdffr_z, *aarch64_rdffr_z_ptest): Likewise.
5099         (*aarch64_rdffr_ptest, *aarch64_rdffr_z_cc, *aarch64_rdffr_cc)
5100         (@aarch64_ld<fn>f1<mode>): Likewise.
5101         (@aarch64_ld<fn>f1_<ANY_EXTEND:optab><SVE_HSDI:mode><SVE_PARTIAL_I:mode>)
5102         (gather_load<mode><v_int_container>): Likewise
5103         (mask_gather_load<mode><v_int_container>): Likewise.
5104         (mask_gather_load<mode><v_int_container>): Likewise.
5105         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
5106         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
5107         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
5108         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>)
5109         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
5110         <SVE_2BHSI:mode>): Likewise.
5111         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
5112         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked)
5113         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
5114         <SVE_2BHSI:mode>_sxtw): Likewise.
5115         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
5116         <SVE_2BHSI:mode>_uxtw): Likewise.
5117         (@aarch64_ldff1_gather<mode>, @aarch64_ldff1_gather<mode>): Likewise.
5118         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
5119         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
5120         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
5121         <VNx4_NARROW:mode>): Likewise.
5122         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
5123         <VNx2_NARROW:mode>): Likewise.
5124         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
5125         <VNx2_NARROW:mode>_sxtw): Likewise.
5126         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
5127         <VNx2_NARROW:mode>_uxtw): Likewise.
5128         (@aarch64_sve_gather_prefetch<SVE_FULL_I:mode><VNx4SI_ONLY:mode>)
5129         (@aarch64_sve_gather_prefetch<SVE_FULL_I:mode><VNx2DI_ONLY:mode>)
5130         (*aarch64_sve_gather_prefetch<SVE_FULL_I:mode><VNx2DI_ONLY:mode>_sxtw)
5131         (*aarch64_sve_gather_prefetch<SVE_FULL_I:mode><VNx2DI_ONLY:mode>_uxtw)
5132         (scatter_store<mode><v_int_container>): Likewise.
5133         (mask_scatter_store<mode><v_int_container>): Likewise.
5134         (*mask_scatter_store<mode><v_int_container>_<su>xtw_unpacked)
5135         (*mask_scatter_store<mode><v_int_container>_sxtw): Likewise.
5136         (*mask_scatter_store<mode><v_int_container>_uxtw): Likewise.
5137         (@aarch64_scatter_store_trunc<VNx4_NARROW:mode><VNx4_WIDE:mode>)
5138         (@aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>)
5139         (*aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>_sxtw)
5140         (*aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>_uxtw)
5141         (@aarch64_sve_ld1ro<mode>, @aarch64_adr<mode>): Likewise.
5142         (*aarch64_adr_sxtw, *aarch64_adr_uxtw_unspec): Likewise.
5143         (*aarch64_adr_uxtw_and, @aarch64_adr<mode>_shift): Likewise.
5144         (*aarch64_adr<mode>_shift, *aarch64_adr_shift_sxtw): Likewise.
5145         (*aarch64_adr_shift_uxtw, @aarch64_sve_add_<optab><vsi2qi>): Likewise.
5146         (@aarch64_sve_<sve_fp_op><mode>, fold_left_plus_<mode>): Likewise.
5147         (mask_fold_left_plus_<mode>, @aarch64_sve_compact<mode>): Likewise.
5148         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>)
5149         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
5150         <SVE_PARTIAL_I:mode>): Likewise.
5151         (@aarch64_sve2_histcnt<mode>, @aarch64_sve2_histseg<mode>): Likewise.
5152         (@aarch64_pred_<SVE2_MATCH:sve_int_op><mode>): Likewise.
5153         (*aarch64_pred_<SVE2_MATCH:sve_int_op><mode>_cc): Likewise.
5154         (*aarch64_pred_<SVE2_MATCH:sve_int_op><mode>_ptest): Likewise.
5155         * config/aarch64/iterators.md (SVE_FP_UNARY_INT): Make FEXPA
5156         depend on TARGET_NON_STREAMING.
5157         (SVE_BFLOAT_TERNARY_LONG): Likewise BFMMLA.
5159 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
5161         * config/aarch64/aarch64.h (TARGET_BASE_SIMD): New macro.
5162         (TARGET_SIMD): Require PSTATE.SM to be 0.
5163         (AARCH64_ISA_SM_OFF): New macro.
5164         * config/aarch64/aarch64.cc (aarch64_array_mode_supported_p):
5165         Allow Advanced SIMD structure modes for TARGET_BASE_SIMD.
5166         (aarch64_print_operand): Support '%Z'.
5167         (aarch64_secondary_reload): Expect SVE moves to be used for
5168         Advanced SIMD modes if SVE is enabled and non-streaming
5169         Advanced SIMD isn't.
5170         (aarch64_register_move_cost): Likewise.
5171         (aarch64_simd_container_mode): Extend Advanced SIMD mode
5172         handling to TARGET_BASE_SIMD.
5173         (aarch64_expand_cpymem): Expand commentary.
5174         * config/aarch64/aarch64.md (arches): Add base_simd and nobase_simd.
5175         (arch_enabled): Handle it.
5176         (*mov<mode>_aarch64): Extend UMOV alternative to TARGET_BASE_SIMD.
5177         (*movti_aarch64): Use an SVE move instruction if non-streaming
5178         SIMD isn't available.
5179         (*mov<TFD:mode>_aarch64): Likewise.
5180         (load_pair_dw_tftf): Extend to TARGET_BASE_SIMD.
5181         (store_pair_dw_tftf): Likewise.
5182         (loadwb_pair<TX:mode>_<P:mode>): Likewise.
5183         (storewb_pair<TX:mode>_<P:mode>): Likewise.
5184         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
5185         Allow UMOV in streaming mode.
5186         (*aarch64_simd_mov<VQMOV:mode>): Use an SVE move instruction
5187         if non-streaming SIMD isn't available.
5188         (aarch64_store_lane0<mode>): Depend on TARGET_FLOAT rather than
5189         TARGET_SIMD.
5190         (aarch64_simd_mov_from_<mode>low): Likewise.  Use fmov if
5191         Advanced SIMD is completely disabled.
5192         (aarch64_simd_mov_from_<mode>high): Use SVE EXT instructions if
5193         non-streaming SIMD isn't available.
5195 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
5197         * doc/invoke.texi: Document SME.
5198         * doc/sourcebuild.texi: Document aarch64_sve.
5199         * config/aarch64/aarch64-option-extensions.def (sme): Define.
5200         * config/aarch64/aarch64.h (AARCH64_ISA_SME): New macro.
5201         (TARGET_SME): Likewise.
5202         * config/aarch64/aarch64.cc (aarch64_override_options_internal):
5203         Ensure that SME is present when compiling streaming code.
5205 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
5207         * config/aarch64/aarch64-isa-modes.def: New file.
5208         * config/aarch64/aarch64.h: Include it in the feature enumerations.
5209         (AARCH64_FL_SM_STATE, AARCH64_FL_ISA_MODES): New constants.
5210         (AARCH64_FL_DEFAULT_ISA_MODE): Likewise.
5211         (AARCH64_ISA_MODE): New macro.
5212         (CUMULATIVE_ARGS): Add an isa_mode field.
5213         * config/aarch64/aarch64-protos.h (aarch64_gen_callee_cookie): Declare.
5214         (aarch64_tlsdesc_abi_id): Return an arm_pcs.
5215         * config/aarch64/aarch64.cc (attr_streaming_exclusions)
5216         (aarch64_gnu_attributes, aarch64_gnu_attribute_table)
5217         (aarch64_arm_attributes, aarch64_arm_attribute_table): New tables.
5218         (aarch64_attribute_table): Redefine to include the gnu and arm
5219         attributes.
5220         (aarch64_fntype_pstate_sm, aarch64_fntype_isa_mode): New functions.
5221         (aarch64_fndecl_pstate_sm, aarch64_fndecl_isa_mode): Likewise.
5222         (aarch64_gen_callee_cookie, aarch64_callee_abi): Likewise.
5223         (aarch64_insn_callee_cookie, aarch64_insn_callee_abi): Use them.
5224         (aarch64_function_arg, aarch64_output_mi_thunk): Likewise.
5225         (aarch64_init_cumulative_args): Initialize the isa_mode field.
5226         (aarch64_output_mi_thunk): Use aarch64_gen_callee_cookie to get
5227         the ABI cookie.
5228         (aarch64_override_options): Add the ISA mode to the feature set.
5229         (aarch64_temporary_target::copy_from_fndecl): Likewise.
5230         (aarch64_fndecl_options, aarch64_handle_attr_arch): Likewise.
5231         (aarch64_set_current_function): Maintain the correct ISA mode.
5232         (aarch64_tlsdesc_abi_id): Return an arm_pcs.
5233         (aarch64_comp_type_attributes): Handle arm::streaming and
5234         arm::streaming_compatible.
5235         * config/aarch64/aarch64-c.cc (aarch64_define_unconditional_macros):
5236         Define __arm_streaming and __arm_streaming_compatible.
5237         * config/aarch64/aarch64.md (tlsdesc_small_<mode>): Use
5238         aarch64_gen_callee_cookie to get the ABI cookie.
5239         * config/aarch64/t-aarch64 (TM_H): Add all feature-related .def files.
5241 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
5243         * config/aarch64/aarch64-sve-builtins-base.cc
5244         (svreinterpret_impl::fold): Punt on tuple forms.
5245         (svreinterpret_impl::expand): Use tuple_mode instead of vector_mode.
5246         * config/aarch64/aarch64-sve-builtins-base.def (svreinterpret):
5247         Extend to x1234 groups.
5248         * config/aarch64/aarch64-sve-builtins-functions.h
5249         (multi_vector_function::vectors_per_tuple): If the function has
5250         a group suffix, get the number of vectors from there.
5251         * config/aarch64/aarch64-sve-builtins-shapes.h (reinterpret): Declare.
5252         * config/aarch64/aarch64-sve-builtins-shapes.cc (reinterpret_def)
5253         (reinterpret): New function shape.
5254         * config/aarch64/aarch64-sve-builtins.cc (function_groups): Handle
5255         DEF_SVE_FUNCTION_GS.
5256         * config/aarch64/aarch64-sve-builtins.def (DEF_SVE_FUNCTION_GS): New
5257         macro.
5258         (DEF_SVE_FUNCTION): Forward to DEF_SVE_FUNCTION_GS by default.
5259         * config/aarch64/aarch64-sve-builtins.h
5260         (function_instance::tuple_mode): New member function.
5261         (function_base::vectors_per_tuple): Take the function instance
5262         as argument and get the number from the group suffix.
5263         (function_instance::vectors_per_tuple): Update accordingly.
5264         * config/aarch64/iterators.md (SVE_FULLx2, SVE_FULLx3, SVE_FULLx4)
5265         (SVE_ALL_STRUCT): New mode iterators.
5266         (SVE_STRUCT): Redefine in terms of SVE_FULL*.
5267         * config/aarch64/aarch64-sve.md (@aarch64_sve_reinterpret<mode>)
5268         (*aarch64_sve_reinterpret<mode>): Extend to SVE structure modes.
5270 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
5272         * config/aarch64/aarch64-sve-builtins.cc
5273         (function_resolver::require_derived_vector_type): Add a specific
5274         error message for the case in which the caller wants a single
5275         vector whose element type matches a previous tuyple argument.
5277 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
5279         * config/aarch64/aarch64-sve-builtins.h
5280         (function_resolver::lookup_form): Add an overload that takes
5281         an sve_type rather than type and group suffixes.
5282         (function_resolver::resolve_to): Likewise.
5283         (function_resolver::infer_vector_or_tuple_type): Return an sve_type.
5284         (function_resolver::infer_tuple_type): Likewise.
5285         (function_resolver::require_matching_vector_type): Take an sve_type
5286         rather than a type_suffix_index.
5287         (function_resolver::require_derived_vector_type): Likewise.
5288         * config/aarch64/aarch64-sve-builtins.cc (num_vectors_to_group):
5289         New function.
5290         (function_resolver::lookup_form): Add an overload that takes
5291         an sve_type rather than type and group suffixes.
5292         (function_resolver::resolve_to): Likewise.
5293         (function_resolver::infer_vector_or_tuple_type): Return an sve_type.
5294         (function_resolver::infer_tuple_type): Likewise.
5295         (function_resolver::infer_vector_type): Update accordingly.
5296         (function_resolver::require_matching_vector_type): Take an sve_type
5297         rather than a type_suffix_index.
5298         (function_resolver::require_derived_vector_type): Likewise.
5299         * config/aarch64/aarch64-sve-builtins-shapes.cc (get_def::resolve)
5300         (set_def::resolve, store_def::resolve, tbl_tuple_def::resolve): Update
5301         calls accordingly.
5303 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
5305         * config/aarch64/aarch64-sve-builtins.h
5306         (function_resolver::require_matching_vector_type): Add a parameter
5307         that specifies the number of the earlier argument that is being
5308         matched against.
5309         * config/aarch64/aarch64-sve-builtins.cc
5310         (function_resolver::require_matching_vector_type): Likewise.
5311         (require_derived_vector_type): Update calls accordingly.
5312         (function_resolver::resolve_unary): Likewise.
5313         (function_resolver::resolve_uniform): Likewise.
5314         (function_resolver::resolve_uniform_opt_n): Likewise.
5315         * config/aarch64/aarch64-sve-builtins-shapes.cc
5316         (binary_long_lane_def::resolve): Likewise.
5317         (clast_def::resolve, ternary_uint_def::resolve): Likewise.
5319 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
5321         * config/aarch64/aarch64-sve-builtins.h
5322         (function_resolver::infer_sve_type): New member function.
5323         (function_resolver::report_incorrect_num_vectors): Likewise.
5324         * config/aarch64/aarch64-sve-builtins.cc
5325         (function_resolver::infer_sve_type): New function,.
5326         (function_resolver::report_incorrect_num_vectors): New function,
5327         split out from...
5328         (function_resolver::infer_vector_or_tuple_type): ...here.  Use
5329         infer_sve_type.
5331 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
5333         * config/aarch64/aarch64-sve-builtins.h (sve_type): New struct.
5334         (sve_type::operator==): New function.
5335         (function_resolver::get_vector_type): Delete.
5336         (function_resolver::report_no_such_form): Take an sve_type rather
5337         than a type_suffix_index.
5338         * config/aarch64/aarch64-sve-builtins.cc (get_vector_type): New
5339         function.
5340         (function_resolver::get_vector_type): Delete.
5341         (function_resolver::report_no_such_form): Take an sve_type rather
5342         than a type_suffix_index.
5343         (find_sve_type): New function, split out from...
5344         (function_resolver::infer_vector_or_tuple_type): ...here.
5346 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
5348         * config/aarch64/aarch64-sve-builtins-shapes.cc (build_one): Take
5349         a group suffix index parameter.
5350         (build_32_64, build_all): Update accordingly.  Iterate over all
5351         group suffixes.
5352         * config/aarch64/aarch64-sve-builtins-sve2.cc (svqrshl_impl::fold)
5353         (svqshl_impl::fold, svrshl_impl::fold): Update function_instance
5354         constructors.
5355         * config/aarch64/aarch64-sve-builtins.cc (group_suffixes): New array.
5356         (groups_none): New constant.
5357         (function_groups): Initialize the groups field.
5358         (function_instance::hash): Hash the group index.
5359         (function_builder::get_name): Add the group suffix.
5360         (function_builder::add_overloaded_functions): Iterate over all
5361         group suffixes.
5362         (function_resolver::lookup_form): Take a group suffix parameter.
5363         (function_resolver::resolve_to): Likewise.
5364         * config/aarch64/aarch64-sve-builtins.def (DEF_SVE_GROUP_SUFFIX): New
5365         macro.
5366         (x2, x3, x4): New group suffixes.
5367         * config/aarch64/aarch64-sve-builtins.h (group_suffix_index): New enum.
5368         (group_suffix_info): New structure.
5369         (function_group_info::groups): New member variable.
5370         (function_instance::group_suffix_id): Likewise.
5371         (group_suffixes): New array.
5372         (function_instance::operator==): Compare the group suffixes.
5373         (function_instance::group_suffix): New function.
5375 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
5377         * config/aarch64/aarch64-sve-builtins.cc (function_groups): Remove
5378         implied requirement on SVE.
5379         * config/aarch64/aarch64-sve-builtins-base.def: Explicitly require SVE.
5380         * config/aarch64/aarch64-sve-builtins-sve2.def: Likewise.
5382 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
5384         * config/aarch64/aarch64-protos.h (aarch64_sve_rdvl_immediate_p)
5385         (aarch64_output_sve_rdvl): Declare.
5386         * config/aarch64/aarch64.cc (aarch64_sve_cnt_factor_p): New
5387         function, split out from...
5388         (aarch64_sve_cnt_immediate_p): ...here.
5389         (aarch64_sve_rdvl_factor_p): New function.
5390         (aarch64_sve_rdvl_immediate_p): Likewise.
5391         (aarch64_output_sve_rdvl): Likewise.
5392         (aarch64_offset_temporaries): Rewrite the SVE handling to use RDVL
5393         for some cases.
5394         (aarch64_expand_mov_immediate): Handle RDVL immediates.
5395         (aarch64_mov_operand_p): Likewise.
5396         * config/aarch64/constraints.md (Usr): New constraint.
5397         * config/aarch64/aarch64.md (*mov<SHORT:mode>_aarch64): Add an RDVL
5398         alternative.
5399         (*movsi_aarch64, *movdi_aarch64): Likewise.
5401 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
5403         * config/aarch64/aarch64-sve-builtins.h:
5404         (function_checker::require_immediate_lane_index): Add an argument
5405         for the index of the indexed vector argument.
5406         * config/aarch64/aarch64-sve-builtins.cc
5407         (function_checker::require_immediate_lane_index): Likewise.
5408         * config/aarch64/aarch64-sve-builtins-shapes.cc
5409         (ternary_bfloat_lane_base::check): Update accordingly.
5410         (ternary_qq_lane_base::check): Likewise.
5411         (binary_lane_def::check): Likewise.
5412         (binary_long_lane_def::check): Likewise.
5413         (ternary_lane_def::check): Likewise.
5414         (ternary_lane_rotate_def::check): Likewise.
5415         (ternary_long_lane_def::check): Likewise.
5416         (ternary_qq_lane_rotate_def::check): Likewise.
5418 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
5420         * target.def (md_asm_adjust): Add a uses parameter.
5421         * doc/tm.texi: Regenerate.
5422         * cfgexpand.cc (expand_asm_loc): Update call to md_asm_adjust.
5423         Handle any USEs created by the target.
5424         (expand_asm_stmt): Likewise.
5425         * recog.cc (asm_noperands): Handle asms with USEs.
5426         (decode_asm_operands): Likewise.
5427         * config/arm/aarch-common-protos.h (arm_md_asm_adjust): Add uses
5428         parameter.
5429         * config/arm/aarch-common.cc (arm_md_asm_adjust): Likewise.
5430         * config/arm/arm.cc (thumb1_md_asm_adjust): Likewise.
5431         * config/avr/avr.cc (avr_md_asm_adjust): Likewise.
5432         * config/cris/cris.cc (cris_md_asm_adjust): Likewise.
5433         * config/i386/i386.cc (ix86_md_asm_adjust): Likewise.
5434         * config/mn10300/mn10300.cc (mn10300_md_asm_adjust): Likewise.
5435         * config/nds32/nds32.cc (nds32_md_asm_adjust): Likewise.
5436         * config/pdp11/pdp11.cc (pdp11_md_asm_adjust): Likewise.
5437         * config/rs6000/rs6000.cc (rs6000_md_asm_adjust): Likewise.
5438         * config/s390/s390.cc (s390_md_asm_adjust): Likewise.
5439         * config/vax/vax.cc (vax_md_asm_adjust): Likewise.
5440         * config/visium/visium.cc (visium_md_asm_adjust): Likewise.
5442 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
5444         * doc/tm.texi.in: Add TARGET_START_CALL_ARGS.
5445         * doc/tm.texi: Regenerate.
5446         * target.def (start_call_args): New hook.
5447         (call_args, end_call_args): Add a parameter for the cumulative
5448         argument information.
5449         * hooks.h (hook_void_rtx_tree): Delete.
5450         * hooks.cc (hook_void_rtx_tree): Likewise.
5451         * targhooks.h (hook_void_CUMULATIVE_ARGS): Declare.
5452         (hook_void_CUMULATIVE_ARGS_rtx_tree): Likewise.
5453         * targhooks.cc (hook_void_CUMULATIVE_ARGS): New function.
5454         (hook_void_CUMULATIVE_ARGS_rtx_tree): Likewise.
5455         * calls.cc (expand_call): Call start_call_args before computing
5456         and storing stack parameters.  Pass the cumulative argument
5457         information to call_args and end_call_args.
5458         (emit_library_call_value_1): Likewise.
5459         * config/nvptx/nvptx.cc (nvptx_call_args): Add a cumulative
5460         argument parameter.
5461         (nvptx_end_call_args): Likewise.
5463 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
5465         * doc/tm.texi.in: Add TARGET_EMIT_EPILOGUE_FOR_SIBCALL.
5466         * doc/tm.texi: Regenerate.
5467         * target.def (emit_epilogue_for_sibcall): New hook.
5468         * calls.cc (can_implement_as_sibling_call_p): Use it.
5469         * function.cc (thread_prologue_and_epilogue_insns): Likewise.
5470         (reposition_prologue_and_epilogue_notes): Likewise.
5471         * config/aarch64/aarch64-protos.h (aarch64_expand_epilogue): Take
5472         an rtx_call_insn * rather than a bool.
5473         * config/aarch64/aarch64.cc (aarch64_expand_epilogue): Likewise.
5474         (TARGET_EMIT_EPILOGUE_FOR_SIBCALL): Define.
5475         * config/aarch64/aarch64.md (epilogue): Update call.
5476         (sibcall_epilogue): Delete.
5478 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
5480         * target.def (use_late_prologue_epilogue): New hook.
5481         * doc/tm.texi.in: Add TARGET_USE_LATE_PROLOGUE_EPILOGUE.
5482         * doc/tm.texi: Regenerate.
5483         * passes.def (pass_late_thread_prologue_and_epilogue): New pass.
5484         * tree-pass.h (make_pass_late_thread_prologue_and_epilogue): Declare.
5485         * function.cc (pass_thread_prologue_and_epilogue::gate): New function.
5486         (pass_data_late_thread_prologue_and_epilogue): New pass variable.
5487         (pass_late_thread_prologue_and_epilogue): New pass class.
5488         (make_pass_late_thread_prologue_and_epilogue): New function.
5490 2023-12-05  Kito Cheng  <kito.cheng@sifive.com>
5492         * common/config/riscv/riscv-common.cc
5493         (riscv_subset_list::check_conflict_ext): Check zcd conflicts
5494         with zcmt and zcmp.
5496 2023-12-05  Richard Sandiford  <richard.sandiford@arm.com>
5498         PR rtl-optimization/112278
5499         * lra-int.h (lra_update_biggest_mode): New function.
5500         * lra-coalesce.cc (merge_pseudos): Use it.
5501         * lra-lives.cc (process_bb_lives): Likewise.
5502         * lra.cc (new_insn_reg): Likewise.
5504 2023-12-05  Jakub Jelinek  <jakub@redhat.com>
5506         PR tree-optimization/112843
5507         * gimple-lower-bitint.cc (gimple_lower_bitint): Change lhs of stmt
5508         to lhs2 before building and inserting lhs = (cast) lhs2; assignment.
5509         Adjust stmt operands before adjusting lhs.
5511 2023-12-05  xuli  <xuli1@eswincomputing.com>
5513         * config/riscv/riscv-v.cc (sew64_scalar_helper): Bugfix.
5515 2023-12-05  Jakub Jelinek  <jakub@redhat.com>
5517         PR target/112816
5518         * config/i386/sse.md ((eq (eq (lshiftrt x elt_bits-1) 0) 0)): New
5519         splitter to turn psrld $31; pcmpeq; pcmpeq into psrad $31.
5521 2023-12-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5523         * config/riscv/autovec.md: Add blocker.
5524         * config/riscv/riscv-protos.h (gather_scatter_valid_offset_p): New function.
5525         * config/riscv/riscv-v.cc (gather_scatter_valid_offset_p): Ditto.
5527 2023-12-05  Richard Biener  <rguenther@suse.de>
5529         PR tree-optimization/112827
5530         PR tree-optimization/112848
5531         * tree-scalar-evolution.cc (final_value_replacement_loop):
5532         Compute the insert location for each insert.
5534 2023-12-05  liuhongt  <hongtao.liu@intel.com>
5536         * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
5537         Count sse_reg/gpr_regs for components not loaded from memory.
5538         (ix86_vector_costs:ix86_vector_costs): New constructor.
5539         (ix86_vector_costs::m_num_gpr_needed[3]): New private memeber.
5540         (ix86_vector_costs::m_num_sse_needed[3]): Ditto.
5541         (ix86_vector_costs::finish_cost): Estimate overall register
5542         pressure cost.
5543         (ix86_vector_costs::ix86_vect_estimate_reg_pressure): New
5544         function.
5546 2023-12-05  liuhongt  <hongtao.liu@intel.com>
5548         * config/i386/sse.md (udot_prodv64qi): New expander.
5549         (udot_prod<mode>): Emulates with VEC_UNPACKU_EXPR +
5550         DOT_PROD (short, int).
5552 2023-12-05  Marek Polacek  <polacek@redhat.com>
5554         PR c++/107687
5555         PR c++/110997
5556         * doc/invoke.texi: Document -fno-immediate-escalation.
5558 2023-12-04  Andrew Pinski  <quic_apinski@quicinc.com>
5560         * match.pd (zero_one_valued_p): For convert
5561         make sure type is not a signed 1-bit integer.
5563 2023-12-04  Jeff Law  <jlaw@ventanamicro.com>
5565         * config/microblaze/microblaze.md (movhi): Use %i for half-word
5566         loads to properly select between lhu/lhui.
5568 2023-12-04  Robin Dapp  <rdapp@ventanamicro.com>
5570         * config/riscv/riscv-string.cc (expand_rawmemchr): Increment
5571         source address by vl * element_size.
5573 2023-12-04  Robin Dapp  <rdapp@ventanamicro.com>
5575         * config/riscv/riscv-opts.h (enum riscv_stringop_strategy_enum):
5576         Rename...
5577         (enum stringop_strategy_enum): ... to this.
5578         * config/riscv/riscv-string.cc (riscv_expand_block_move): New
5579         wrapper expander handling the strategies and delegation.
5580         (riscv_expand_block_move_scalar): Rename function and make
5581         static.
5582         (expand_block_move): Remove strategy handling.
5583         * config/riscv/riscv.md: Call expander wrapper.
5584         * config/riscv/riscv.opt: Rename.
5586 2023-12-04  Richard Biener  <rguenther@suse.de>
5588         PR middle-end/112785
5589         * function.h (get_new_clique): New inline function handling
5590         last_clique overflow.
5591         * cfgrtl.cc (duplicate_insn_chain): Use it.
5592         * tree-cfg.cc (gimple_duplicate_bb): Likewise.
5593         * tree-inline.cc (remap_dependence_clique): Likewise.
5595 2023-12-04  Christoph Müllner  <christoph.muellner@vrull.eu>
5597         PR target/112650
5598         * doc/invoke.texi: Document riscv-strcmp-inline-limit.
5600 2023-12-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5602         PR target/112431
5603         * config/riscv/vector.md: Fix incorrect overlap in v0.
5605 2023-12-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5607         PR target/112431
5608         * config/riscv/vector.md: Add highest-number overlap support.
5610 2023-12-04  Richard Biener  <rguenther@suse.de>
5612         PR tree-optimization/112818
5613         * tree-vect-stmts.cc (vectorizable_bswap): Check input and
5614         output vector types have the same size.
5616 2023-12-04  Richard Biener  <rguenther@suse.de>
5618         PR tree-optimization/112827
5619         * tree-scalar-evolution.cc (final_value_replacement_loop):
5620         Do not release SSA name but keep a dead initialization around.
5622 2023-12-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5624         PR target/112431
5625         * config/riscv/vector.md: Remove earlyclobber from widen reduction.
5627 2023-12-04  Indu Bhagat  <indu.bhagat@oracle.com>
5629         PR debug/112656
5630         * btfout.cc (btf_asm_type): Fixup ctti_name for all
5631         BTF types of kind BTF_KIND_FUNC_PROTO.
5633 2023-12-04  Indu Bhagat  <indu.bhagat@oracle.com>
5635         PR debug/112768
5636         * btfout.cc (get_btf_type_name): New definition.
5637         (btf_collect_datasec): Update dtd_name to the original type name
5638         string.
5639         (btf_asm_type_ref): Use the new get_btf_type_name function
5640         instead.
5641         (btf_asm_type): Likewise.
5642         (btf_asm_func_type): Likewise.
5644 2023-12-04  Jakub Jelinek  <jakub@redhat.com>
5646         PR target/112837
5647         * config/i386/i386.cc (ix86_elim_entry_set_got): Before checking
5648         for UNSPEC_SET_GOT check that SET_SRC is UNSPEC.  Use SET_SRC and
5649         SET_DEST macros instead of XEXP, rename vec variable to set.
5651 2023-12-04  Jakub Jelinek  <jakub@redhat.com>
5653         PR target/112816
5654         * config/i386/sse.md (signbit<mode>2): Force operands[1] into a REG.
5656 2023-12-04  Feng Wang  <wangfeng@eswincomputing.com>
5658         * common/config/riscv/riscv-common.cc: Add zvkb ISA info.
5659         * config/riscv/riscv.opt: Add Mask(ZVKB)
5661 2023-12-04  Fei Gao  <gaofei@eswincomputing.com>
5662             Xiao Zeng <zengxiao@eswincomputing.com>
5664         * config/riscv/riscv.md (*mov<GPR:mode><X:mode>cc):move to sfb.md
5665         * config/riscv/sfb.md: New file.
5667 2023-12-04  Kito Cheng  <kito.cheng@sifive.com>
5669         * config/riscv/riscv-cores.def: Add sifive-x280.
5670         * doc/invoke.texi (RISC-V Options): Add sifive-x280
5672 2023-12-04  Kito Cheng  <kito.cheng@sifive.com>
5674         * common/config/riscv/riscv-common.cc (riscv_implied_predicator_t): New.
5675         (riscv_implied_info_t::riscv_implied_info_t): New.
5676         (riscv_implied_info_t::match): New.
5677         (riscv_implied_info): New entry for zcf.
5678         (riscv_subset_list::handle_implied_ext): Use
5679         riscv_implied_info_t::match.
5680         (riscv_subset_list::check_implied_ext): Ditto.
5681         (riscv_subset_list::handle_combine_ext): Ditto.
5682         (riscv_subset_list::parse): Move zcf implication handling to
5683         riscv_implied_infos.
5685 2023-12-04  Kito Cheng  <kito.cheng@sifive.com>
5687         * common/config/riscv/riscv-common.cc
5688         (riscv_subset_list::check_conflict_ext): New.
5689         (riscv_subset_list::parse): Move checking conflict ext. to
5690         check_conflict_ext.
5691         * config/riscv/riscv-subset.h:
5692         Add riscv_subset_list::check_conflict_ext.
5694 2023-12-04  Hu, Lin1  <lin1.hu@intel.com>
5696         * common/config/i386/cpuinfo.h (get_available_features): Move USER_MSR
5697         to the correct location.
5699 2023-12-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5701         * config/riscv/riscv.md: Rostify the constraints.
5703 2023-12-04  chenxiaolong  <chenxiaolong@loongson.cn>
5705         * doc/extend.texi: Add information about the intrinsic function of the vector
5706         instruction.
5708 2023-12-03  Jakub Jelinek  <jakub@redhat.com>
5710         PR middle-end/112807
5711         * gimple-lower-bitint.cc (bitint_large_huge::lower_addsub_overflow):
5712         When choosing type0 and type1 types, if prec3 has small/middle bitint
5713         kind, use maximum of type0 and type1's precision instead of prec3.
5715 2023-12-03  Jeff Law  <jlaw@ventanamicro.com>
5717         * config/frv/frv.h (TRANSFER_FROM_TRAMPOLINE): Add prototype for exit.
5719 2023-12-02  Richard Sandiford  <richard.sandiford@arm.com>
5721         * attribs.cc (comp_type_attributes): Pass the full TREE_PURPOSE
5722         to lookup_attribute_spec, rather than just the name.
5723         (remove_attributes_matching): Likewise.
5725 2023-12-02  Richard Sandiford  <richard.sandiford@arm.com>
5727         * attribs.cc (find_same_attribute): New function.
5728         (decl_attributes, comp_type_attributes): Use it when looking
5729         up one list's attributes in another list.
5731 2023-12-02  Richard Sandiford  <richard.sandiford@arm.com>
5733         * Makefile.in (GTFILES): Add attribs.cc.
5734         * attribs.cc (gnu_namespace_cache): New variable.
5735         (get_gnu_namespace): New function.
5736         (lookup_attribute_spec): Use it instead of get_identifier ("gnu").
5737         (get_attribute_namespace, attribs_cc_tests): Likewise.
5739 2023-12-02  Richard Sandiford  <richard.sandiford@arm.com>
5741         * attribs.h (scoped_attribute_specs): New structure.
5742         (register_scoped_attributes): Take a reference to a
5743         scoped_attribute_specs instead of separate namespace and array
5744         parameters.
5745         * plugin.h (register_scoped_attributes): Likewise.
5746         * attribs.cc (register_scoped_attributes): Likewise.
5747         (attribute_tables): Change into an array of scoped_attribute_specs
5748         pointers.  Reduce to 1 element for frontends and 1 element for targets.
5749         (empty_attribute_table): Delete.
5750         (check_attribute_tables): Update for changes to attribute_tables.
5751         Use a hash_set to identify duplicates.
5752         (handle_ignored_attributes_option): Update for above changes.
5753         (init_attributes): Likewise.
5754         (excl_pair): Delete.
5755         (test_attribute_exclusions): Update for above changes.  Don't
5756         enforce symmetry for standard attributes in the top-level namespace.
5757         * langhooks-def.h (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE): Delete.
5758         (LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE): Likewise.
5759         (LANG_HOOKS_INITIALIZER): Update accordingly.
5760         (LANG_HOOKS_ATTRIBUTE_TABLE): Define to an empty constructor.
5761         * langhooks.h (lang_hooks::common_attribute_table): Delete.
5762         (lang_hooks::format_attribute_table): Likewise.
5763         (lang_hooks::attribute_table): Redefine to an array of
5764         scoped_attribute_specs pointers.
5765         * target-def.h (TARGET_GNU_ATTRIBUTES): New macro.
5766         * target.def (attribute_spec): Redefine to return an array of
5767         scoped_attribute_specs pointers.
5768         * tree-inline.cc (function_attribute_inlinable_p): Update accordingly.
5769         * doc/tm.texi: Regenerate.
5770         * config/aarch64/aarch64.cc (aarch64_attribute_table): Define using
5771         TARGET_GNU_ATTRIBUTES.
5772         * config/alpha/alpha.cc (vms_attribute_table): Likewise.
5773         * config/avr/avr.cc (avr_attribute_table): Likewise.
5774         * config/bfin/bfin.cc (bfin_attribute_table): Likewise.
5775         * config/bpf/bpf.cc (bpf_attribute_table): Likewise.
5776         * config/csky/csky.cc (csky_attribute_table): Likewise.
5777         * config/epiphany/epiphany.cc (epiphany_attribute_table): Likewise.
5778         * config/gcn/gcn.cc (gcn_attribute_table): Likewise.
5779         * config/h8300/h8300.cc (h8300_attribute_table): Likewise.
5780         * config/loongarch/loongarch.cc (loongarch_attribute_table): Likewise.
5781         * config/m32c/m32c.cc (m32c_attribute_table): Likewise.
5782         * config/m32r/m32r.cc (m32r_attribute_table): Likewise.
5783         * config/m68k/m68k.cc (m68k_attribute_table): Likewise.
5784         * config/mcore/mcore.cc (mcore_attribute_table): Likewise.
5785         * config/microblaze/microblaze.cc (microblaze_attribute_table):
5786         Likewise.
5787         * config/mips/mips.cc (mips_attribute_table): Likewise.
5788         * config/msp430/msp430.cc (msp430_attribute_table): Likewise.
5789         * config/nds32/nds32.cc (nds32_attribute_table): Likewise.
5790         * config/nvptx/nvptx.cc (nvptx_attribute_table): Likewise.
5791         * config/riscv/riscv.cc (riscv_attribute_table): Likewise.
5792         * config/rl78/rl78.cc (rl78_attribute_table): Likewise.
5793         * config/rx/rx.cc (rx_attribute_table): Likewise.
5794         * config/s390/s390.cc (s390_attribute_table): Likewise.
5795         * config/sh/sh.cc (sh_attribute_table): Likewise.
5796         * config/sparc/sparc.cc (sparc_attribute_table): Likewise.
5797         * config/stormy16/stormy16.cc (xstormy16_attribute_table): Likewise.
5798         * config/v850/v850.cc (v850_attribute_table): Likewise.
5799         * config/visium/visium.cc (visium_attribute_table): Likewise.
5800         * config/arc/arc.cc (arc_attribute_table): Likewise.  Move further
5801         down file.
5802         * config/arm/arm.cc (arm_attribute_table): Update for above changes,
5803         using...
5804         (arm_gnu_attributes, arm_gnu_attribute_table): ...these new globals.
5805         * config/i386/i386-options.h (ix86_attribute_table): Delete.
5806         (ix86_gnu_attribute_table): Declare.
5807         * config/i386/i386-options.cc (ix86_attribute_table): Replace with...
5808         (ix86_gnu_attributes, ix86_gnu_attribute_table): ...these two globals.
5809         * config/i386/i386.cc (ix86_attribute_table): Define as an array of
5810         scoped_attribute_specs pointers.
5811         * config/ia64/ia64.cc (ia64_attribute_table): Update for above changes,
5812         using...
5813         (ia64_gnu_attributes, ia64_gnu_attribute_table): ...these new globals.
5814         * config/rs6000/rs6000.cc (rs6000_attribute_table): Update for above
5815         changes, using...
5816         (rs6000_gnu_attributes, rs6000_gnu_attribute_table): ...these new
5817         globals.
5819 2023-12-02  Roger Sayle  <roger@nextmovesoftware.com>
5821         * config/riscv/riscv-vsetvl.cc (csetvl_info::parse_insn): Rename
5822         local variable from demand_flags to dflags, to avoid conflicting
5823         with (enumeration) type of the same name.
5825 2023-12-02  Li Wei  <liwei@loongson.cn>
5827         * config/loongarch/loongarch.cc (loongarch_is_odd_extraction):
5828         Supplementary function prototype.
5829         (loongarch_is_even_extraction): Adjust.
5830         (loongarch_try_expand_lsx_vshuf_const): Adjust.
5831         (loongarch_is_extraction_permutation): Adjust.
5832         (loongarch_expand_vec_perm_const_2): Adjust.
5834 2023-12-02  Li Wei  <liwei@loongson.cn>
5836         * config/loongarch/loongarch.md (v2di): Used to simplify the
5837         following templates.
5838         (popcount<mode>2): New.
5840 2023-12-02  Li Wei  <liwei@loongson.cn>
5842         * config/loongarch/loongarch.h (CTZ_DEFINED_VALUE_AT_ZERO): Add
5843         description.
5844         (CLZ_DEFINED_VALUE_AT_ZERO): Remove duplicate definition.
5846 2023-12-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5848         PR target/112801
5849         * config/riscv/vector.md: Add !TARGET_64BIT.
5851 2023-12-02  Pan Li  <pan2.li@intel.com>
5853         PR target/112743
5854         * config/riscv/riscv.cc (riscv_legitimize_move): Take the
5855         exist (U *mode) and handle DFmode like DImode when EEW is
5856         32bits for ZVE32F.
5858 2023-12-01  Andrew MacLeod  <amacleod@redhat.com>
5860         * gimple-range-fold.h (range_compatible_p): Relocate.
5861         * value-range.h (range_compatible_p): Here.
5862         * range-op-mixed.h (operand_equal::operand_check_p): Call
5863         range_compatible_p rather than comparing precision.
5864         (operand_not_equal::operand_check_p): Ditto.
5865         (operand_not_lt::operand_check_p): Ditto.
5866         (operand_not_le::operand_check_p): Ditto.
5867         (operand_not_gt::operand_check_p): Ditto.
5868         (operand_not_ge::operand_check_p): Ditto.
5869         (operand_plus::operand_check_p): Ditto.
5870         (operand_abs::operand_check_p): Ditto.
5871         (operand_minus::operand_check_p): Ditto.
5872         (operand_negate::operand_check_p): Ditto.
5873         (operand_mult::operand_check_p): Ditto.
5874         (operand_bitwise_not::operand_check_p): Ditto.
5875         (operand_bitwise_xor::operand_check_p): Ditto.
5876         (operand_bitwise_and::operand_check_p): Ditto.
5877         (operand_bitwise_or::operand_check_p): Ditto.
5878         (operand_min::operand_check_p): Ditto.
5879         (operand_max::operand_check_p): Ditto.
5880         * range-op.cc (operand_lshift::operand_check_p): Ditto.
5881         (operand_rshift::operand_check_p): Ditto.
5882         (operand_logical_and::operand_check_p): Ditto.
5883         (operand_logical_or::operand_check_p): Ditto.
5884         (operand_logical_not::operand_check_p): Ditto.
5886 2023-12-01  Vladimir N. Makarov  <vmakarov@redhat.com>
5888         PR target/112445
5889         * lra.h (lra): Add one more arg.
5890         * lra-int.h (lra_verbose, lra_dump_insns): New externals.
5891         (lra_dump_insns_if_possible): Ditto.
5892         * lra.cc (lra_dump_insns): Dump all insns.
5893         (lra_dump_insns_if_possible):  Dump all insns for lra_verbose >= 7.
5894         (lra_verbose): New global.
5895         (lra): Add new arg.  Setup lra_verbose from its value.
5896         * lra-assigns.cc (lra_split_hard_reg_for): Dump insns if rtl
5897         was changed.
5898         * lra-remat.cc (lra_remat): Dump insns if rtl was changed.
5899         * lra-constraints.cc (lra_inheritance): Dump insns.
5900         (lra_constraints, lra_undo_inheritance): Dump insns if rtl
5901         was changed.
5902         (remove_inheritance_pseudos): Use restore reg if it is set up.
5903         * ira.cc: (lra): Pass internal_flag_ira_verbose.
5905 2023-12-01  Jakub Jelinek  <jakub@redhat.com>
5907         * doc/extend.texi (__builtin_addc, __builtin_addcl, __builtin_addcll,
5908         __builtin_subc, __builtin_subcl, __builtin_subcll,
5909         __builtin_stdc_bit_width, __builtin_stdc_count_ones,
5910         __builtin_stdc_count_zeros, __builtin_stdc_first_leading_one,
5911         __builtin_stdc_first_leading_zero, __builtin_stdc_first_trailing_one,
5912         __builtin_stdc_first_trailing_zero, __builtin_stdc_has_single_bit,
5913         __builtin_stdc_leading_ones, __builtin_stdc_leading_zeros,
5914         __builtin_stdc_trailing_ones, __builtin_stdc_trailing_zeros,
5915         __builtin_nvptx_brev, __builtin_nvptx_brevll, __builtin_darn,
5916         __builtin_darn_raw, __builtin_ia32_vec_ext_v2di,
5917         __builtin_ia32_crc32qi, __builtin_ia32_crc32hi,
5918         __builtin_ia32_crc32si, __builtin_ia32_crc32di): Put {}s around
5919         return type with spaces in it.
5920         (__builtin_rx_mvfachi, __builtin_rx_mvfacmi): Remove superfluous
5921         whitespace.
5923 2023-12-01  David Malcolm  <dmalcolm@redhat.com>
5925         * diagnostic-core.h (emit_diagnostic_valist): New overload decl.
5926         * diagnostic-format-sarif.cc (sarif_builder::make_result_object):
5927         When we have metadata, call its maybe_add_sarif_properties vfunc.
5928         * diagnostic-metadata.h (class sarif_object): Forward decl.
5929         (diagnostic_metadata::~diagnostic_metadata): New.
5930         (diagnostic_metadata::maybe_add_sarif_properties): New vfunc.
5931         * diagnostic.cc (emit_diagnostic_valist): New overload.
5933 2023-12-01  David Malcolm  <dmalcolm@redhat.com>
5935         PR analyzer/103533
5936         * doc/extend.texi: Remove stray reference to
5937         -fanalyzer-checker=taint.
5939 2023-12-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5941         PR target/112431
5942         * config/riscv/vector.md: Support highpart overlap for vx/vf.
5944 2023-12-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5946         PR target/112431
5947         * config/riscv/vector.md: Support highpart overlap for indexed load.
5949 2023-12-01  Richard Biener  <rguenther@suse.de>
5951         * tree-vectorizer.h (vect_get_vec_defs): Re-order arguments.
5952         * tree-vect-stmts.cc (vect_get_vec_defs): Likewise.
5953         (vectorizable_condition): Update caller.
5954         (vectorizable_comparison_1): Likewise.
5955         (vectorizable_conversion): Specify the vector type to be
5956         used for invariant/external defs.
5957         * tree-vect-loop.cc (vect_transform_reduction): Update caller.
5959 2023-12-01  Jakub Jelinek  <jakub@redhat.com>
5961         PR middle-end/112770
5962         * gimple-lower-bitint.cc (gimple_lower_bitint): When adjusting
5963         lhs of middle _BitInt setter which ends bb, insert cast on
5964         the fallthru edge rather than after stmt.
5966 2023-12-01  Jakub Jelinek  <jakub@redhat.com>
5968         PR middle-end/112771
5969         * gimple-lower-bitint.cc (bitint_large_huge::handle_operand_addr):
5970         Use mp = 1 if it is zero.
5972 2023-12-01  Jose E. Marchesi  <jose.marchesi@oracle.com>
5974         * config/bpf/bpf.cc (bpf_asm_named_section): New function.
5975         (TARGET_ASM_NAMED_SECTION): Set to bpf_asm_named_section.
5977 2023-12-01  Di Zhao  <dizhao@os.amperecomputing.com>
5979         * config/aarch64/aarch64-tuning-flags.def
5980         (AARCH64_EXTRA_TUNING_OPTION): New tuning option to avoid
5981         cross-loop FMA.
5982         * config/aarch64/aarch64.cc
5983         (aarch64_override_options_internal): Set
5984         param_avoid_fma_max_bits according to tuning option.
5985         * config/aarch64/tuning_models/ampere1.h (ampere1_tunings):
5986         Modify tunings related with FMA.
5987         * config/aarch64/tuning_models/ampere1a.h (ampere1a_tunings):
5988         Likewise.
5989         * config/aarch64/tuning_models/ampere1b.h (ampere1b_tunings):
5990         Likewise.
5992 2023-12-01  Richard Sandiford  <richard.sandiford@arm.com>
5994         * config/aarch64/aarch64-sve-builtins.h
5995         (function_expander::result_mode): New member function.
5996         * config/aarch64/aarch64-sve-builtins-base.cc
5997         (svld234_impl::expand): Use it.
5998         * config/aarch64/aarch64-sve-builtins.cc
5999         (function_expander::get_reg_target): Likewise.
6001 2023-12-01  Jakub Jelinek  <jakub@redhat.com>
6003         * gimple-lower-bitint.cc (range_to_prec): Don't return -1 for
6004         signed types.
6005         (bitint_large_huge::lower_addsub_overflow): Fix up computation of
6006         prec2.
6007         (bitint_large_huge::lower_mul_overflow): Likewise.
6009 2023-12-01  Jakub Jelinek  <jakub@redhat.com>
6011         * gimple-lower-bitint.cc (bitint_large_huge::finish_arith_overflow):
6012         When replacing use_stmt which is gsi_stmt (m_gsi), update m_gsi to
6013         the new statement.
6015 2023-12-01  Jakub Jelinek  <jakub@redhat.com>
6017         PR middle-end/112750
6018         * gimple-lower-bitint.cc (bitint_large_huge::lower_addsub_overflow):
6019         Use NE_EXPR rather than EQ_EXPR for g2 if !single_comparison and
6020         adjust probabilities.
6022 2023-12-01  Xi Ruoyao  <xry111@xry111.site>
6024         * doc/install.texi: Deem srcdir == objdir broken, but objdir
6025         as a subdirectory of srcdir fine.
6027 2023-12-01  Juergen Christ  <jchrist@linux.ibm.com>
6029         PR target/112753
6030         * config/s390/s390.cc (s390_md_asm_adjust): Return after dealing
6031         with the outputs, if no further processing of long doubles is
6032         required.
6034 2023-12-01  Jakub Jelinek  <jakub@redhat.com>
6036         PR target/112725
6037         * config/s390/s390.cc (s390_invalid_arg_for_unprototyped_fn): Return
6038         NULL for __builtin_classify_type calls with vector arguments.
6040 2023-12-01  Florian Weimer  <fweimer@redhat.com>
6042         * doc/invoke.texi (Warning Options): Document
6043         -Wdeclaration-missing-parameter-type.
6045 2023-12-01  Florian Weimer  <fweimer@redhat.com>
6047         * doc/invoke.texi (Warning Options): Document changes.
6049 2023-12-01  Florian Weimer  <fweimer@redhat.com>
6051         * doc/invoke.texi (Warning Options): Document that
6052         -Wreturn-mismatch is a permerror in C99 and later.
6054 2023-12-01  Florian Weimer  <fweimer@redhat.com>
6056         PR c/91093
6057         PR c/96284
6058         * doc/invoke.texi (Warning Options): Document changes.
6060 2023-12-01  Florian Weimer  <fweimer@redhat.com>
6062         * doc/invoke.texi (Warning Options): Document changes.
6064 2023-12-01  Florian Weimer  <fweimer@redhat.com>
6066         * doc/invoke.texi (Warning Options): Document changes.
6068 2023-12-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6070         PR target/112776
6071         * config/riscv/riscv-vsetvl.cc (pre_vsetvl::pre_global_vsetvl_info): Fix ratio.
6073 2023-11-30  Wilco Dijkstra  <wilco.dijkstra@arm.com>
6075         PR target/111404
6076         * config/aarch64/aarch64.cc (aarch64_split_compare_and_swap):
6077         For 128-bit store the loaded value and loop if needed.
6079 2023-11-30  Wilco Dijkstra  <wilco.dijkstra@arm.com>
6081         PR target/103100
6082         * config/aarch64/aarch64.md (cpymemdi): Remove pattern condition.
6083         (setmemdi): Likewise.
6084         * config/aarch64/aarch64.cc (aarch64_expand_cpymem): Support
6085         strict-align.  Cleanup condition for using MOPS.
6086         (aarch64_expand_setmem): Likewise.
6088 2023-11-30  Richard Biener  <rguenther@suse.de>
6090         PR tree-optimization/112767
6091         * tree-scalar-evolution.cc (final_value_replacement_loop):
6092         Propagate constants to immediate uses immediately.
6094 2023-11-30  Richard Biener  <rguenther@suse.de>
6096         PR tree-optimization/112766
6097         * gimple-predicate-analysis.cc (find_var_cmp_const):
6098         Support continuing the iteration and report every candidate.
6099         (uninit_analysis::overlap): Iterate over all flag var
6100         candidates.
6102 2023-11-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6104         PR target/112431
6105         * config/riscv/vector.md: Add widening overlap of vf2/vf4.
6107 2023-11-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6109         PR target/112431
6110         * config/riscv/vector.md: Remove earlyclobber for wx/wf instructions.
6112 2023-11-30  Jakub Jelinek  <jakub@redhat.com>
6114         PR middle-end/112733
6115         * wide-int.cc (wi::mul_internal): Don't allocate twice as much
6116         space for u, v and r as needed.
6117         (divmod_internal_2): Change return type from void to int, for n == 1
6118         return 1, otherwise before writing b_dividend into b_remainder set
6119         n to MIN (n, m) and at the end return it.
6120         (wi::divmod_internal): Don't allocate 4 times as much space for
6121         b_quotient, b_remainder, b_dividend and b_divisor.  Set n to
6122         result of divmod_internal_2.
6123         (wide_int_cc_tests): Add test for unsigned widest_int
6124         wi::multiple_of_p of 1 and -128.
6126 2023-11-30  liuhongt  <hongtao.liu@intel.com>
6128         * config/i386/sse.md (sdot_prodv64qi): New expander.
6129         (sseunpackmodelower): New mode attr.
6130         (sdot_prod<mode>): Emulate sdot_prodv*qi with sodt_prov*hi
6131         when TARGET_VNNIINT8 is not available.
6133 2023-11-30  liuhongt  <hongtao.liu@intel.com>
6135         * config/i386/sse.md: (reduc_plus_scal_<mode>): Use
6136         vec_extract_lo instead of subreg.
6137         (reduc_<code>_scal_<mode>): Ditto.
6138         (reduc_<code>_scal_<mode>): Ditto.
6139         (reduc_<code>_scal_<mode>): Ditto.
6140         (reduc_<code>_scal_<mode>): Ditto.
6142 2023-11-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6144         PR target/112431
6145         * config/riscv/vector.md: Add widenning overlap.
6147 2023-11-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6149         * config/riscv/constraints.md (TARGET_VECTOR ? V_REGS : NO_REGS): Fix constraint.
6150         * config/riscv/riscv.md (no,W21,W42,W84,W41,W81,W82): Rename vconstraint into group_overlap.
6151         (no,yes): Ditto.
6152         (none,W21,W42,W84,W43,W86,W87): Ditto.
6153         * config/riscv/vector.md: Ditto.
6155 2023-11-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6157         * config/riscv/vector.md: Support highpart overlap for vext.vf2
6159 2023-11-29  Philipp Tomsich  <philipp.tomsich@vrull.eu>
6161         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add ampere-1b
6162         * config/aarch64/aarch64-cost-tables.h: Add ampere1b_extra_costs
6163         * config/aarch64/aarch64-tune.md: Regenerate
6164         * config/aarch64/aarch64.cc: Include ampere1b tuning model
6165         * doc/invoke.texi: Document -mcpu=ampere1b
6166         * config/aarch64/tuning_models/ampere1b.h: New file.
6168 2023-11-29  David Faust  <david.faust@oracle.com>
6170         * config/bpf/bpf.h (ASM_COMMENT_START): Change from ';' to '#'.
6172 2023-11-29  Jakub Jelinek  <jakub@redhat.com>
6174         PR target/112725
6175         * config/rs6000/rs6000.cc (invalid_arg_for_unprototyped_fn): Return
6176         NULL for __builtin_classify_type calls with vector arguments.
6178 2023-11-29  Andrew MacLeod  <amacleod@redhat.com>
6180         PR tree-optimization/111922
6181         * ipa-cp.cc (ipa_vr_operation_and_type_effects): Check the
6182         operands are valid before calling fold_range.
6184 2023-11-29  Andrew MacLeod  <amacleod@redhat.com>
6186         * range-op-mixed.h (operator_equal::operand_check_p): New.
6187         (operator_not_equal::operand_check_p): New.
6188         (operator_lt::operand_check_p): New.
6189         (operator_le::operand_check_p): New.
6190         (operator_gt::operand_check_p): New.
6191         (operator_ge::operand_check_p): New.
6192         (operator_plus::operand_check_p): New.
6193         (operator_abs::operand_check_p): New.
6194         (operator_minus::operand_check_p): New.
6195         (operator_negate::operand_check_p): New.
6196         (operator_mult::operand_check_p): New.
6197         (operator_bitwise_not::operand_check_p): New.
6198         (operator_bitwise_xor::operand_check_p): New.
6199         (operator_bitwise_and::operand_check_p): New.
6200         (operator_bitwise_or::operand_check_p): New.
6201         (operator_min::operand_check_p): New.
6202         (operator_max::operand_check_p): New.
6203         * range-op.cc (range_op_handler::fold_range): Check operand
6204         parameter types.
6205         (range_op_handler::op1_range): Ditto.
6206         (range_op_handler::op2_range): Ditto.
6207         (range_op_handler::operand_check_p): New.
6208         (range_operator::operand_check_p): New.
6209         (operator_lshift::operand_check_p): New.
6210         (operator_rshift::operand_check_p): New.
6211         (operator_logical_and::operand_check_p): New.
6212         (operator_logical_or::operand_check_p): New.
6213         (operator_logical_not::operand_check_p): New.
6214         * range-op.h (range_operator::operand_check_p): New.
6215         (range_op_handler::operand_check_p): New.
6217 2023-11-29  Martin Jambor  <mjambor@suse.cz>
6219         PR tree-optimization/112711
6220         PR tree-optimization/112721
6221         * tree-sra.cc (build_access_from_call_arg): New parameter
6222         CAN_BE_RETURNED, disqualify any candidate passed by reference if it is
6223         true.  Adjust leading comment.
6224         (scan_function): Pass appropriate value to CAN_BE_RETURNED of
6225         build_access_from_call_arg.
6227 2023-11-29  Thomas Schwinge  <thomas@codesourcery.com>
6229         * doc/sourcebuild.texi (Final Actions): Document
6230         'only_for_offload_target' wrapper.
6232 2023-11-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
6234         PR testsuite/112729
6235         * doc/sourcebuild.texi (Effective-Target Keywords, Environment
6236         attributes): Document cfi.
6238 2023-11-29  Richard Biener  <rguenther@suse.de>
6240         PR middle-end/110237
6241         * internal-fn.cc (expand_partial_load_optab_fn): Clear
6242         MEM_EXPR and MEM_OFFSET.
6243         (expand_partial_store_optab_fn): Likewise.
6245 2023-11-29  Jakub Jelinek  <jakub@redhat.com>
6247         PR middle-end/112733
6248         * fold-const.cc (multiple_of_p): Pass SIGNED rather than
6249         UNSIGNED for wi::multiple_of_p on widest_int arguments.
6251 2023-11-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6252             kito-cheng  <kito.cheng@sifive.com>
6253             kito-cheng  <kito.cheng@gmail.com>
6255         PR target/112431
6256         * config/riscv/constraints.md (TARGET_VECTOR ? V_REGS : NO_REGS): New register filters.
6257         * config/riscv/riscv.md (no,W21,W42,W84,W41,W81,W82): Ditto.
6258         (no,yes): Ditto.
6259         * config/riscv/vector.md: Support highpart register overlap for vwcvt.
6261 2023-11-29  xuli  <xuli1@eswincomputing.com>
6263         * config/riscv/riscv.cc (riscv_option_override): Eliminate warning.
6265 2023-11-29  Jakub Jelinek  <jakub@redhat.com>
6267         PR bootstrap/111601
6268         * fold-mem-offsets.cc (get_uses): Ignore DEBUG_INSN uses.  Otherwise,
6269         punt if use is in a different basic block from INSN or appears before
6270         INSN in the same basic block.  Formatting fixes.
6271         (get_single_def_in_bb): Formatting fixes.
6272         (fold_offsets_1, pass_fold_mem_offsets::execute): Comment formatting
6273         fixes.
6275 2023-11-29  Xi Ruoyao  <xry111@xry111.site>
6277         * config/loongarch/simd.md (LSX_SCALAR_FRINT): New int iterator.
6278         (VLSX_FOR_FMODE): New mode attribute.
6279         (<simd_for_scalar_frint_pattern><mode>2): New expander,
6280         expanding to vreplvei.{w/d} + frint{rp/rz/rm/rne}.{s.d}.
6282 2023-11-29  Xi Ruoyao  <xry111@xry111.site>
6284         * config/loongarch/loongarch.md (lrint_allow_inexact): Remove.
6285         (<lrint_pattern><ANYF:mode><ANYFI:mode>2): Check if <LRINT>
6286         == UNSPEC_FTINT instead of <lrint_allow_inexact>.
6288 2023-11-29  Xi Ruoyao  <xry111@xry111.site>
6290         * config/loongarch/lsx.md (bitimm): Move to ...
6291         (UNSPEC_LSX_VROTR): Remove.
6292         (lsx_vrotr_<lsxfmt>): Remove.
6293         (lsx_vrotri_<lsxfmt>): Remove.
6294         * config/loongarch/lasx.md (UNSPEC_LASX_XVROTR): Remove.
6295         (lsx_vrotr_<lsxfmt>): Remove.
6296         (lsx_vrotri_<lsxfmt>): Remove.
6297         * config/loongarch/simd.md (bitimm): ... here.  Expand it to
6298         cover LASX modes.
6299         (vrotr<mode>3): New define_insn.
6300         (vrotri<mode>3): New define_insn.
6301         * config/loongarch/loongarch-builtins.cc:
6302         (CODE_FOR_lsx_vrotr_b): Use standard pattern name.
6303         (CODE_FOR_lsx_vrotr_h): Likewise.
6304         (CODE_FOR_lsx_vrotr_w): Likewise.
6305         (CODE_FOR_lsx_vrotr_d): Likewise.
6306         (CODE_FOR_lasx_xvrotr_b): Likewise.
6307         (CODE_FOR_lasx_xvrotr_h): Likewise.
6308         (CODE_FOR_lasx_xvrotr_w): Likewise.
6309         (CODE_FOR_lasx_xvrotr_d): Likewise.
6310         (CODE_FOR_lsx_vrotri_b): Define to standard pattern name.
6311         (CODE_FOR_lsx_vrotri_h): Likewise.
6312         (CODE_FOR_lsx_vrotri_w): Likewise.
6313         (CODE_FOR_lsx_vrotri_d): Likewise.
6314         (CODE_FOR_lasx_xvrotri_b): Likewise.
6315         (CODE_FOR_lasx_xvrotri_h): Likewise.
6316         (CODE_FOR_lasx_xvrotri_w): Likewise.
6317         (CODE_FOR_lasx_xvrotri_d): Likewise.
6319 2023-11-29  Xi Ruoyao  <xry111@xry111.site>
6321         * config/loongarch/simd.md (muh): New code attribute mapping
6322         any_extend to smul_highpart or umul_highpart.
6323         (<su>mul<mode>3_highpart): New define_insn.
6324         * config/loongarch/lsx.md (UNSPEC_LSX_VMUH_S): Remove.
6325         (UNSPEC_LSX_VMUH_U): Remove.
6326         (lsx_vmuh_s_<lsxfmt>): Remove.
6327         (lsx_vmuh_u_<lsxfmt>): Remove.
6328         * config/loongarch/lasx.md (UNSPEC_LASX_XVMUH_S): Remove.
6329         (UNSPEC_LASX_XVMUH_U): Remove.
6330         (lasx_xvmuh_s_<lasxfmt>): Remove.
6331         (lasx_xvmuh_u_<lasxfmt>): Remove.
6332         * config/loongarch/loongarch-builtins.cc (CODE_FOR_lsx_vmuh_b):
6333         Redefine to standard pattern name.
6334         (CODE_FOR_lsx_vmuh_h): Likewise.
6335         (CODE_FOR_lsx_vmuh_w): Likewise.
6336         (CODE_FOR_lsx_vmuh_d): Likewise.
6337         (CODE_FOR_lsx_vmuh_bu): Likewise.
6338         (CODE_FOR_lsx_vmuh_hu): Likewise.
6339         (CODE_FOR_lsx_vmuh_wu): Likewise.
6340         (CODE_FOR_lsx_vmuh_du): Likewise.
6341         (CODE_FOR_lasx_xvmuh_b): Likewise.
6342         (CODE_FOR_lasx_xvmuh_h): Likewise.
6343         (CODE_FOR_lasx_xvmuh_w): Likewise.
6344         (CODE_FOR_lasx_xvmuh_d): Likewise.
6345         (CODE_FOR_lasx_xvmuh_bu): Likewise.
6346         (CODE_FOR_lasx_xvmuh_hu): Likewise.
6347         (CODE_FOR_lasx_xvmuh_wu): Likewise.
6348         (CODE_FOR_lasx_xvmuh_du): Likewise.
6350 2023-11-29  Xi Ruoyao  <xry111@xry111.site>
6352         PR target/112578
6353         * config/loongarch/lsx.md (UNSPEC_LSX_VFTINT_S,
6354         UNSPEC_LSX_VFTINTRNE, UNSPEC_LSX_VFTINTRP,
6355         UNSPEC_LSX_VFTINTRM, UNSPEC_LSX_VFRINTRNE_S,
6356         UNSPEC_LSX_VFRINTRNE_D, UNSPEC_LSX_VFRINTRZ_S,
6357         UNSPEC_LSX_VFRINTRZ_D, UNSPEC_LSX_VFRINTRP_S,
6358         UNSPEC_LSX_VFRINTRP_D, UNSPEC_LSX_VFRINTRM_S,
6359         UNSPEC_LSX_VFRINTRM_D): Remove.
6360         (ILSX, FLSX): Move into ...
6361         (VIMODE): Move into ...
6362         (FRINT_S, FRINT_D): Remove.
6363         (frint_pattern_s, frint_pattern_d, frint_suffix): Remove.
6364         (lsx_vfrint_<flsxfmt>, lsx_vftint_s_<ilsxfmt>_<flsxfmt>,
6365         lsx_vftintrne_w_s, lsx_vftintrne_l_d, lsx_vftintrp_w_s,
6366         lsx_vftintrp_l_d, lsx_vftintrm_w_s, lsx_vftintrm_l_d,
6367         lsx_vfrintrne_s, lsx_vfrintrne_d, lsx_vfrintrz_s,
6368         lsx_vfrintrz_d, lsx_vfrintrp_s, lsx_vfrintrp_d,
6369         lsx_vfrintrm_s, lsx_vfrintrm_d,
6370         <FRINT_S:frint_pattern_s>v4sf2,
6371         <FRINT_D:frint_pattern_d>v2df2, round<mode>2,
6372         fix_trunc<mode>2): Remove.
6373         * config/loongarch/lasx.md: Likewise.
6374         * config/loongarch/simd.md: New file.
6375         (ILSX, ILASX, FLSX, FLASX, VIMODE): ... here.
6376         (IVEC, FVEC): New mode iterators.
6377         (VIMODE): ... here.  Extend it to work for all LSX/LASX vector
6378         modes.
6379         (x, wu, simd_isa, WVEC, vimode, simdfmt, simdifmt_for_f,
6380         elebits): New mode attributes.
6381         (UNSPEC_SIMD_FRINTRP, UNSPEC_SIMD_FRINTRZ, UNSPEC_SIMD_FRINT,
6382         UNSPEC_SIMD_FRINTRM, UNSPEC_SIMD_FRINTRNE): New unspecs.
6383         (SIMD_FRINT): New int iterator.
6384         (simd_frint_rounding, simd_frint_pattern): New int attributes.
6385         (<simd_isa>_<x>vfrint<simd_frint_rounding>_<simdfmt>): New
6386         define_insn template for frint instructions.
6387         (<simd_isa>_<x>vftint<simd_frint_rounding>_<simdifmt_for_f>_<simdfmt>):
6388         Likewise, but for ftint instructions.
6389         (<simd_frint_pattern><mode>2): New define_expand with
6390         flag_fp_int_builtin_inexact checked.
6391         (l<simd_frint_pattern><mode><vimode>2): Likewise.
6392         (ftrunc<mode>2): New define_expand.  It does not require
6393         flag_fp_int_builtin_inexact.
6394         (fix_trunc<mode><vimode>2): New define_insn_and_split.  It does
6395         not require flag_fp_int_builtin_inexact.
6396         (include): Add lsx.md and lasx.md.
6397         * config/loongarch/loongarch.md (include): Include simd.md,
6398         instead of including lsx.md and lasx.md directly.
6399         * config/loongarch/loongarch-builtins.cc
6400         (CODE_FOR_lsx_vftint_w_s, CODE_FOR_lsx_vftint_l_d,
6401         CODE_FOR_lasx_xvftint_w_s, CODE_FOR_lasx_xvftint_l_d):
6402         Remove.
6404 2023-11-29  Alexandre Oliva  <oliva@adacore.com>
6406         * doc/extend.texi (hardbool): New type attribute.
6407         * doc/invoke.texi (-ftrivial-auto-var-init): Document
6408         representation vs values.
6410 2023-11-29  Alexandre Oliva  <oliva@adacore.com>
6412         * expr.cc (emit_block_move_hints): Take ctz of len.  Obey
6413         -finline-stringops.  Use oriented or sized loop.
6414         (emit_block_move): Take ctz of len, and pass it on.
6415         (emit_block_move_via_sized_loop): New.
6416         (emit_block_move_via_oriented_loop): New.
6417         (emit_block_move_via_loop): Take incr.  Move an incr-sized
6418         block per iteration.
6419         (emit_block_cmp_via_cmpmem): Take ctz of len.  Obey
6420         -finline-stringops.
6421         (emit_block_cmp_via_loop): New.
6422         * expr.h (emit_block_move): Add ctz of len defaulting to zero.
6423         (emit_block_move_hints): Likewise.
6424         (emit_block_cmp_hints): Likewise.
6425         * builtins.cc (expand_builtin_memory_copy_args): Pass ctz of
6426         len to emit_block_move_hints.
6427         (try_store_by_multiple_pieces): Support starting with a loop.
6428         (expand_builtin_memcmp): Pass ctz of len to
6429         emit_block_cmp_hints.
6430         (expand_builtin): Allow inline expansion of memset, memcpy,
6431         memmove and memcmp if requested.
6432         * common.opt (finline-stringops): New.
6433         (ilsop_fn): New enum.
6434         * flag-types.h (enum ilsop_fn): New.
6435         * doc/invoke.texi (-finline-stringops): Add.
6437 2023-11-29  Pan Li  <pan2.li@intel.com>
6439         PR target/112743
6440         * config/riscv/riscv-string.cc (expand_block_move): Add
6441         precondition check for exact_div.
6443 2023-11-28  Roger Sayle  <roger@nextmovesoftware.com>
6445         * config/arc/arc.md: Make output template whitespace consistent.
6447 2023-11-28  Jose E. Marchesi  <jose.marchesi@oracle.com>
6449         * varasm.cc (assemble_external_libcall): Refer in assert only ifdef
6450         ASM_OUTPUT_EXTERNAL.
6452 2023-11-28  Andrew Pinski  <quic_apinski@quicinc.com>
6454         PR tree-optimization/112738
6455         * match.pd (`(nop_convert)-(convert)a`): Reject
6456         when the outer type is boolean.
6458 2023-11-28  Richard Biener  <rguenther@suse.de>
6460         PR middle-end/112732
6461         * tree.cc (build_opaque_vector_type): Reset TYPE_ALIAS_SET
6462         of the newly built type.
6464 2023-11-28  Uros Bizjak  <ubizjak@gmail.com>
6466         PR target/112494
6467         * config/i386/i386.md (cmpstrnqi_1): Set FLAGS_REG to its previous
6468         value when operand 2 equals zero.
6469         (*cmpstrnqi_1): Ditto.
6470         (*cmpstrnqi_1 peephole2): Ditto.
6472 2023-11-28  Cupertino Miranda  <cupertino.miranda@oracle.com>
6474         Revert:
6475         2023-11-28  Cupertino Miranda  <cupertino.miranda@oracle.com>
6477         * config/bpf/bpf.cc (bpf_output_call): Report error in case the
6478         function call is for a builtin.
6479         (bpf_external_libcall): Added target hook to detect and report
6480         error when other external calls that are not builtins.
6482 2023-11-28  Jose E. Marchesi  <jose.marchesi@oracle.com>
6484         PR target/109253
6485         * varasm.cc (pending_libcall_symbols): New variable.
6486         (process_pending_assemble_externals): Process
6487         pending_libcall_symbols.
6488         (assemble_external_libcall): Defer emitting external libcall
6489         symbols to process_pending_assemble_externals.
6491 2023-11-28  Cupertino Miranda  <cupertino.miranda@oracle.com>
6493         * btfout.cc (btf_calc_num_vbytes): Fixed logic for enum64.
6494         (btf_asm_enum_const): Corrected logic for enum64 and smaller
6495         than 4 bytes values.
6497 2023-11-28  Cupertino Miranda  <cupertino.miranda@oracle.com>
6499         * config/bpf/bpf.cc (bpf_output_call): Report error in case the
6500         function call is for a builtin.
6501         (bpf_external_libcall): Added target hook to detect and report
6502         error when other external calls that are not builtins.
6504 2023-11-28  Cupertino Miranda  <cupertino.miranda@oracle.com>
6506         * config/bpf/bpf.cc (bpf_use_by_pieces_infrastructure_p): Added
6507         function to bypass default behaviour.
6508         * config/bpf/bpf.h (COMPARE_MAX_PIECES): Defined to 1024 bytes.
6510 2023-11-28  Cupertino Miranda  <cupertino.miranda@oracle.com>
6512         * config/bpf/core-builtins.cc (core_mark_as_access_index):
6513         Corrected check.
6515 2023-11-28  Cupertino Miranda  <cupertino.miranda@oracle.com>
6517         * config/bpf/core-builtins.cc
6518         (bpf_resolve_overloaded_core_builtin): Removed call.
6519         (execute_lower_bpf_core): Added all to remove_parser_plugin.
6521 2023-11-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6523         PR target/112694
6524         * config/riscv/riscv-v.cc (expand_vec_perm_const): Disallow poly size (1, 1) VLA SLP.
6526 2023-11-28  Jakub Jelinek  <jakub@redhat.com>
6528         PR tree-optimization/112719
6529         * match.pd (parity(X)^parity(Y) -> parity(X^Y)): Handle case of
6530         mismatched types.
6531         * gimple-match-exports.cc (build_call_internal): Add special-case for
6532         bit query ifns on large/huge BITINT_TYPE before bitint lowering.
6534 2023-11-28  Jakub Jelinek  <jakub@redhat.com>
6536         PR tree-optimization/112719
6537         * match.pd (popcount (X) + popcount (Y) -> POPCOUNT (X | Y)): Deal
6538         with argument types with different precisions.
6540 2023-11-28  David Malcolm  <dmalcolm@redhat.com>
6542         PR analyzer/109077
6543         * Makefile.in (PLUGIN_HEADERS): Add analyzer headers.
6544         (install-plugin): Keep the directory structure for files in
6545         "analyzer".
6547 2023-11-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6549         PR target/112713
6550         * config/riscv/riscv-vsetvl.cc (pre_vsetvl::compute_lcm_local_properties): Fix regression.
6552 2023-11-28  David Malcolm  <dmalcolm@redhat.com>
6554         * diagnostic-show-locus.cc (layout::maybe_add_location_range):
6555         Don't print annotation lines for ranges when there's no column
6556         info.
6557         (selftest::test_one_liner_no_column): New.
6558         (selftest::test_diagnostic_show_locus_one_liner): Call it.
6560 2023-11-28  David Malcolm  <dmalcolm@redhat.com>
6562         * diagnostic.cc (diagnostic_get_location_text): Convert to...
6563         (diagnostic_context::get_location_text): ...this, and convert
6564         return type from char * to label_text.
6565         (diagnostic_build_prefix): Update for above change.
6566         (default_diagnostic_start_span_fn): Likewise.
6567         (selftest::assert_location_text): Likewise.
6568         * diagnostic.h (diagnostic_context::get_location_text): New decl.
6570 2023-11-27  Andrew Pinski  <quic_apinski@quicinc.com>
6572         * config/aarch64/aarch64.cc (aarch64_if_then_else_costs):
6573         Handle csinv/csinc case of 1/-1.
6575 2023-11-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
6576             Richard Sandiford  <richard.sandiford@arm.com>
6578         PR middle-end/111754
6579         * fold-const.cc (fold_vec_perm_cst): Set result's encoding to sel's
6580         encoding, and set res_nelts_per_pattern to 2 if sel contains stepped
6581         sequence but input vectors do not.
6582         (test_nunits_min_2): New test Case 8.
6583         (test_nunits_min_4): New tests Case 8 and Case 9.
6585 2023-11-27  Szabolcs Nagy  <szabolcs.nagy@arm.com>
6587         * config/aarch64/aarch64.cc (aarch64_needs_frame_chain): Do not
6588         force frame chain for eh_return.
6590 2023-11-27  Szabolcs Nagy  <szabolcs.nagy@arm.com>
6592         * config/aarch64/aarch64-protos.h (aarch64_eh_return_handler_rtx):
6593         Remove.
6594         * config/aarch64/aarch64.cc (aarch64_return_address_signing_enabled):
6595         Sign return address even in functions with eh_return.
6596         (aarch64_expand_epilogue): Conditionally return with br or ret.
6597         (aarch64_eh_return_handler_rtx): Remove.
6598         * config/aarch64/aarch64.h (EH_RETURN_TAKEN_RTX): Define.
6599         (EH_RETURN_STACKADJ_RTX): Change to R5.
6600         (EH_RETURN_HANDLER_RTX): Change to R6.
6601         * df-scan.cc: Handle EH_RETURN_TAKEN_RTX.
6602         * doc/tm.texi: Regenerate.
6603         * doc/tm.texi.in: Document EH_RETURN_TAKEN_RTX.
6604         * except.cc (expand_eh_return): Handle EH_RETURN_TAKEN_RTX.
6606 2023-11-27  Thomas Schwinge  <thomas@codesourcery.com>
6608         * config.gcc <amdgcn-*-amdhsa> (extra_gcc_objs): Don't set.
6609         * config/gcn/driver-gcn.cc: Remove.
6610         * config/gcn/gcn-hsa.h (ASM_SPEC, EXTRA_SPEC_FUNCTIONS): Remove
6611         'last_arg' spec function.
6612         * config/gcn/t-gcn-hsa (driver-gcn.o): Remove.
6614 2023-11-27  Thomas Schwinge  <thomas@codesourcery.com>
6616         PR target/112669
6617         * config/gcn/gcn.opt (march=, mtune=): Tag as 'Negative' of
6618         themselves.
6620 2023-11-27  Samuel Thibault  <samuel.thibault@gnu.org>
6622         * config/i386/gnu.h: Use PIE_SPEC, add static-pie case.
6623         * config/i386/gnu64.h: Use PIE_SPEC, add static-pie case.
6625 2023-11-27  Samuel Thibault  <samuel.thibault@gnu.org>
6627         * config/i386/t-gnu64: New file.
6628         * config.gcc [x86_64-*-gnu*]: Add i386/t-gnu64 to
6629         tmake_file.
6631 2023-11-27  Richard Sandiford  <richard.sandiford@arm.com>
6633         PR target/106326
6634         * config/aarch64/aarch64-sve-builtins.h (is_ptrue): Declare.
6635         * config/aarch64/aarch64-sve-builtins.cc (is_ptrue): New function.
6636         (gimple_folder::redirect_pred_x): Likewise.
6637         (gimple_folder::fold): Use it.
6639 2023-11-27  Richard Sandiford  <richard.sandiford@arm.com>
6641         * config/aarch64/aarch64-sve-builtins.h (vector_cst_all_same): Declare.
6642         * config/aarch64/aarch64-sve-builtins.cc (vector_cst_all_same): New
6643         function, a generalized replacement of...
6644         * config/aarch64/aarch64-sve-builtins-base.cc
6645         (svlast_impl::vect_all_same): ...this.
6646         (svlast_impl::fold): Update accordingly.
6648 2023-11-27  Richard Biener  <rguenther@suse.de>
6650         PR tree-optimization/112653
6651         * gimple-ssa.h (gimple_df): Add escaped_return solution.
6652         * tree-ssa.cc (init_tree_ssa): Reset it.
6653         (delete_tree_ssa): Likewise.
6654         * tree-ssa-structalias.cc (escaped_return_id): New.
6655         (find_func_aliases): Handle non-IPA return stmts by
6656         adding to ESCAPED_RETURN.
6657         (set_uids_in_ptset): Adjust HEAP escaping to also cover
6658         escapes through return.
6659         (init_base_vars): Initialize ESCAPED_RETURN.
6660         (compute_points_to_sets): Replace ESCAPED post-processing
6661         with recording the ESCAPED_RETURN solution.
6662         * tree-ssa-alias.cc (ref_may_alias_global_p_1): Check
6663         the ESCAPED_RETUNR solution.
6664         (dump_alias_info): Dump it.
6665         * cfgexpand.cc (update_alias_info_with_stack_vars): Update it.
6666         * ipa-icf.cc (sem_item_optimizer::fixup_points_to_sets):
6667         Likewise.
6668         * tree-inline.cc (expand_call_inline): Reset it.
6669         * tree-parloops.cc (parallelize_loops): Likewise.
6670         * tree-sra.cc (maybe_add_sra_candidate): Check it.
6672 2023-11-27  Richard Biener  <rguenther@suse.de>
6673             Richard Sandiford  <richard.sandiford@arm.com>
6675         PR tree-optimization/112661
6676         * tree-vect-slp.cc (vect_get_and_check_slp_defs): Defer duplicate-and-
6677         interleave test to...
6678         (vect_build_slp_tree_2): ...here, once we have all the operands.
6679         Skip the test for uniform vectors.
6680         (vect_create_constant_vectors): Detect uniform vectors.  Avoid
6681         redundant conversions in that case.  Use gimple_build_vector_from_val
6682         to build the vector.
6684 2023-11-27  Richard Sandiford  <richard.sandiford@arm.com>
6686         * attribs.cc (excl_hash_traits): Delete.
6687         (test_attribute_exclusions): Use pair_hash and nofree_string_hash
6688         instead.
6690 2023-11-27  Andrew Stubbs  <ams@codesourcery.com>
6692         * config/gcn/gcn.cc (gcn_vectorize_vec_perm_const): Disallow TImode.
6694 2023-11-27  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
6696         * config/s390/s390-builtin-types.def (BT_FN_UV8HI_UV8HI_UINT):
6697         Add missing builtin type.
6699 2023-11-27  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
6701         * config/s390/s390-builtin-types.def: Remove types.
6702         * config/s390/s390-builtins.def (O_U64): Remove 64-bit literal support.
6703         Don't restrict s390_vec_rli and s390_verll[bhfg] to immediates.
6704         * config/s390/s390.cc (s390_const_operand_ok): Remove 64-bit
6705         literal support.
6707 2023-11-27  Alex Coplan  <alex.coplan@arm.com>
6708             Iain Sandoe  <iain@sandoe.co.uk>
6710         PR c++/60512
6711         * doc/cpp.texi: Document __has_{feature,extension}.
6713 2023-11-27  Richard Biener  <rguenther@suse.de>
6715         PR tree-optimization/112706
6716         * match.pd (ptr + o ==/!=/- ptr + o'): New patterns.
6718 2023-11-27  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
6720         * config/s390/s390-builtin-types.def: Add/remove types.
6721         * config/s390/s390-builtins.def
6722         (s390_vclfnhs,s390_vclfnls,s390_vcrnfs,s390_vcfn,s390_vcnf):
6723         Replace type V8HI with UV8HI.
6725 2023-11-27  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
6727         * config/s390/s390-builtins.def
6728         (s390_vcefb,s390_vcdgb,s390_vcelfb,s390_vcdlgb,s390_vcfeb,s390_vcgdb,
6729         s390_vclfeb,s390_vclgdb): Remove flags for non-existing operands
6730         2 and 3.
6732 2023-11-27  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
6734         * config/s390/s390.md (*cmphi_ccu): For immediate operand 1 make
6735         use of constraint n instead of D and chop of high bits in the
6736         output template.
6738 2023-11-27  Jakub Jelinek  <jakub@redhat.com>
6740         PR target/112300
6741         * config.gcc (mips*-sde-elf*): Append to tm_defines rather than
6742         overwriting them.
6744 2023-11-27  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6746         * config/riscv/autovec.md
6747         (mask_len_gather_load<RATIO1:mode><RATIO1:mode>):
6748         Remove gather_scatter_valid_offset_mode_p.
6749         (mask_len_gather_load<mode><mode>): Ditto.
6750         (mask_len_scatter_store<RATIO1:mode><RATIO1:mode>): Ditto.
6751         (mask_len_scatter_store<mode><mode>): Ditto.
6752         * config/riscv/predicates.md (const_1_or_8_operand): New predicate.
6753         (vector_gs_scale_operand_64): Remove.
6754         * config/riscv/riscv-protos.h (gather_scatter_valid_offset_mode_p): Remove.
6755         * config/riscv/riscv-v.cc (expand_gather_scatter): Refine code.
6756         (gather_scatter_valid_offset_mode_p): Remove.
6757         * config/riscv/vector-iterators.md: Fix iterator bugs.
6759 2023-11-27  Tsukasa OI  <research_trasio@irq.a4lg.com>
6761         * common/config/riscv/riscv-common.cc
6762         (riscv_ext_version_table): Set version to ratified 2.0.
6763         (riscv_subset_list::parse_std_ext): Allow RV64E.
6764         * config.gcc: Parse base ISA 'rv64e' and ABI 'lp64e'.
6765         * config/riscv/arch-canonicalize: Parse base ISA 'rv64e'.
6766         * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins):
6767         Define different macro per XLEN.  Add handling for ABI_LP64E.
6768         * config/riscv/riscv-d.cc (riscv_d_handle_target_float_abi):
6769         Add handling for ABI_LP64E.
6770         * config/riscv/riscv-opts.h (enum riscv_abi_type): Add ABI_LP64E.
6771         * config/riscv/riscv.cc (riscv_option_override): Enhance error
6772         handling to support RV64E and LP64E.
6773         (riscv_conditional_register_usage): Change "RV32E" in a comment
6774         to "RV32E/RV64E".
6775         * config/riscv/riscv.h
6776         (UNITS_PER_FP_ARG): Add handling for ABI_LP64E.
6777         (STACK_BOUNDARY): Ditto.
6778         (ABI_STACK_BOUNDARY): Ditto.
6779         (MAX_ARGS_IN_REGISTERS): Ditto.
6780         (ABI_SPEC): Add support for "lp64e".
6781         * config/riscv/riscv.opt: Parse -mabi=lp64e as ABI_LP64E.
6782         * doc/invoke.texi: Add documentation of the LP64E ABI.
6784 2023-11-27  Jose E. Marchesi  <jose.marchesi@oracle.com>
6786         * config/bpf/bpf-helpers.h: Remove.
6787         * config.gcc: Adapt accordingly.
6789 2023-11-27  Guo Jie  <guojie@loongson.cn>
6791         * config/loongarch/loongarch.cc (loongarch_split_plus_constant):
6792         avoid left shift of negative value -0x8000.
6794 2023-11-27  Guo Jie  <guojie@loongson.cn>
6796         * config/loongarch/loongarch.cc
6797         (enum loongarch_load_imm_method): Add new method.
6798         (loongarch_build_integer): Add relevant implementations for
6799         new method.
6800         (loongarch_move_integer): Ditto.
6802 2023-11-26  Alexander Monakov  <amonakov@ispras.ru>
6804         * sort.cc: Use 'sorting networks' in comments.
6806 2023-11-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6808         PR target/112599
6809         * config/riscv/riscv-avlprop.cc (avl_can_be_propagated_p): Add slidedown.
6810         (vlmax_ta_p): Ditto.
6811         (pass_avlprop::get_vlmax_ta_preferred_avl): Ditto.
6813 2023-11-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6815         * config/riscv/riscv-avlprop.cc (alv_can_be_propagated_p): Fix typo.
6816         (avl_can_be_propagated_p): Ditto.
6817         (vlmax_ta_p): Ditto.
6819 2023-11-25  Gerald Pfeifer  <gerald@pfeifer.com>
6821         PR other/69374
6822         * doc/install.texi (Downloading the source): Sort the list of
6823         front ends and add D, Go, and Modula-2.
6825 2023-11-25  Gerald Pfeifer  <gerald@pfeifer.com>
6827         PR target/69374
6828         * doc/install.texi (Specific) <*-*-freebsd*>: Remove older
6829         contents referencing GCC 4.x.
6831 2023-11-25  Gerald Pfeifer  <gerald@pfeifer.com>
6833         * doc/standards.texi (Standards): Update ISO C++ reference.
6835 2023-11-25  Jakub Jelinek  <jakub@redhat.com>
6837         PR target/111408
6838         * config/i386/i386.md (*jcc_bt<mode>_mask,
6839         *jcc_bt<SWI48:mode>_mask_1): Add (const_int 0) as expected
6840         second operand of bt_comparison_operator.
6842 2023-11-25  Andrew Pinski  <pinskia@gmail.com>
6843             Jakub Jelinek  <jakub@redhat.com>
6845         PR target/109977
6846         * config/aarch64/aarch64-simd.md (aarch64_simd_stp<mode>): Use <vwcore>
6847         rather than %<vw> for alternative with r constraint on input operand.
6849 2023-11-24  Tobias Burnus  <tobias@codesourcery.com>
6851         * doc/install.texi (amdgcn-*-amdhsa): Fix URL to ROCm;
6852         change 'in the future' to 'in LLVM 18'.
6854 2023-11-24  John David Anglin  <danglin@gcc.gnu.org>
6856         * config/pa/pa.cc (pa_emit_move_sequence): Use INT14_OK_STRICT
6857         in a couple of places.
6859 2023-11-24  Martin Jambor  <mjambor@suse.cz>
6861         PR middle-end/109849
6862         * tree-sra.cc (passed_by_ref_in_call): New.
6863         (sra_initialize): Allocate passed_by_ref_in_call.
6864         (sra_deinitialize): Free passed_by_ref_in_call.
6865         (create_access): Add decl pool candidates only if they are not
6866         already candidates.
6867         (build_access_from_expr_1): Bail out on ADDR_EXPRs.
6868         (build_access_from_call_arg): New function.
6869         (asm_visit_addr): Rename to scan_visit_addr, change the
6870         disqualification dump message.
6871         (scan_function): Check taken addresses for all non-call statements,
6872         including phi nodes.  Process all call arguments, including the static
6873         chain, build_access_from_call_arg.
6874         (maybe_add_sra_candidate): Relax need_to_live_in_memory check to allow
6875         non-escaped local variables.
6876         (sort_and_splice_var_accesses): Disallow smaller-than-precision
6877         replacements for aggregates passed by reference to functions.
6878         (sra_modify_expr): Use a separate stmt iterator for adding satements
6879         before the processed statement and after it.
6880         (enum out_edge_check): New type.
6881         (abnormal_edge_after_stmt_p): New function.
6882         (sra_modify_call_arg): New function.
6883         (sra_modify_assign): Adjust calls to sra_modify_expr.
6884         (sra_modify_function_body): Likewise, use sra_modify_call_arg to
6885         process call arguments, including the static chain.
6887 2023-11-24  Uros Bizjak  <ubizjak@gmail.com>
6889         PR target/112686
6890         * config/i386/i386.cc (ix86_expand_split_stack_prologue): Load
6891         function address to a register for ix86_cmodel == CM_LARGE.
6893 2023-11-24  Tobias Burnus  <tobias@codesourcery.com>
6895         * doc/invoke.texi (-Wopenmp): Add.
6896         * gimplify.cc (gimplify_omp_for): Add OPT_Wopenmp to warning_at.
6897         * omp-expand.cc (expand_omp_ordered_sink): Likewise.
6898         * omp-general.cc (omp_check_context_selector): Likewise.
6899         * omp-low.cc (scan_omp_for, check_omp_nesting_restrictions,
6900         lower_omp_ordered_clauses): Likewise.
6901         * omp-simd-clone.cc (simd_clone_clauses_extract): Likewise.
6903 2023-11-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6905         PR target/112694
6906         * config/riscv/riscv-v.cc (preferred_simd_mode): Allow poly_int (1,1) vectors.
6908 2023-11-24  Alexander Monakov  <amonakov@ispras.ru>
6910         * config.in: Regenerate.
6911         * configure: Regenerate.
6912         * configure.ac: Delete manual checks for old Valgrind headers.
6913         * system.h (VALGRIND_MAKE_MEM_NOACCESS): Delete.
6914         (VALGRIND_MAKE_MEM_DEFINED): Delete.
6915         (VALGRIND_MAKE_MEM_UNDEFINED): Delete.
6916         (VALGRIND_MALLOCLIKE_BLOCK): Delete.
6917         (VALGRIND_FREELIKE_BLOCK): Delete.
6919 2023-11-24  Jakub Jelinek  <jakub@redhat.com>
6921         PR target/112681
6922         * config/i386/i386-expand.cc (ix86_expand_branch): Use
6923         ix86_expand_vector_logical_operator to expand vector XOR rather than
6924         gen_rtx_SET on gen_rtx_XOR.
6926 2023-11-24  Alex Coplan  <alex.coplan@arm.com>
6928         * rtl-ssa/access-utils.h (filter_accesses): New.
6929         (remove_regno_access): New.
6930         (check_remove_regno_access): New.
6931         * rtl-ssa/accesses.cc (rtl_ssa::remove_note_accesses_base): Use
6932         new filter_accesses helper.
6934 2023-11-24  Alex Coplan  <alex.coplan@arm.com>
6936         * rtl-ssa/accesses.cc (function_info::create_set): New.
6937         * rtl-ssa/accesses.h (access_info::is_temporary): New.
6938         * rtl-ssa/changes.cc (move_insn): Handle new (temporary) insns.
6939         (function_info::finalize_new_accesses): Handle new/temporary
6940         user-created accesses.
6941         (function_info::apply_changes_to_insn): Ensure m_is_temp flag
6942         on new insns gets cleared.
6943         (function_info::change_insns): Handle new/temporary insns.
6944         (function_info::create_insn): New.
6945         * rtl-ssa/changes.h (class insn_change): Make function_info a
6946         friend class.
6947         * rtl-ssa/functions.h (function_info): Declare new entry points:
6948         create_set, create_insn.  Declare new change_alloc helper.
6949         * rtl-ssa/insns.cc (insn_info::print_full): Identify temporary insns in
6950         dump.
6951         * rtl-ssa/insns.h (insn_info): Add new m_is_temp flag and accompanying
6952         is_temporary accessor.
6953         * rtl-ssa/internals.inl (insn_info::insn_info): Initialize m_is_temp to
6954         false.
6955         * rtl-ssa/member-fns.inl (function_info::change_alloc): New.
6956         * rtl-ssa/movement.h (restrict_movement_for_defs_ignoring): Add
6957         handling for temporary defs.
6959 2023-11-24  Jakub Jelinek  <jakub@redhat.com>
6961         PR tree-optimization/112673
6962         * match.pd (bit_field_ref (vce @0) -> bit_field_ref @0): Only simplify
6963         if either @0 doesn't have scalar integral type or if it has mode
6964         precision.
6966 2023-11-24  Jakub Jelinek  <jakub@redhat.com>
6968         PR middle-end/112679
6969         * gimple-lower-bitint.cc (gimple_lower_bitint): Also stop first loop on
6970         floating point SSA_NAME set in FLOAT_EXPR assignment from BITINT_TYPE
6971         INTEGER_CST.  Set has_large_huge for those if that BITINT_TYPE is large
6972         or huge.  Set kind to such FLOAT_EXPR assignment rhs1 BITINT_TYPE's kind.
6974 2023-11-24  Richard Biener  <rguenther@suse.de>
6976         PR tree-optimization/112677
6977         * tree-vect-loop.cc (vectorizable_reduction): Use alloca
6978         to allocate vectype_op.
6980 2023-11-24  Haochen Gui  <guihaoc@gcc.gnu.org>
6982         * expr.cc (by_pieces_ninsns): Include by pieces compare when
6983         do the adjustment for overlap operations.  Replace mov_optab
6984         checks with gcc assertion.
6986 2023-11-24  Jakub Jelinek  <jakub@redhat.com>
6988         PR middle-end/112668
6989         * gimple-iterator.h (gsi_end, gsi_end_bb): New inline functions.
6990         * gimple-lower-bitint.cc (bitint_large_huge::handle_cast): After
6991         temporarily adding statements after m_init_gsi, update m_init_gsi
6992         such that later additions after it will be after the added statements.
6993         (bitint_large_huge::handle_load): Likewise.  When splitting
6994         gsi_bb (m_init_gsi) basic block, update m_preheader_bb if needed
6995         and update saved m_gsi as well if needed.
6996         (bitint_large_huge::lower_mergeable_stmt,
6997         bitint_large_huge::lower_comparison_stmt,
6998         bitint_large_huge::lower_mul_overflow,
6999         bitint_large_huge::lower_bit_query): Use gsi_end_bb.
7001 2023-11-24  Jakub Jelinek  <jakub@redhat.com>
7003         PR c++/112619
7004         * tree.cc (try_catch_may_fallthru): If second operand of
7005         TRY_CATCH_EXPR is not a STATEMENT_LIST, handle it as if it was a
7006         STATEMENT_LIST containing a single statement.
7008 2023-11-24  Richard Biener  <rguenther@suse.de>
7010         PR tree-optimization/112344
7011         * tree-chrec.cc (chrec_apply): Only use an unsigned add
7012         when the overall increment doesn't fit the signed type.
7014 2023-11-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7016         PR target/112599
7017         * config/riscv/riscv-v.cc (shuffle_extract_and_slide1up_patterns): New function.
7018         (expand_vec_perm_const_1): Add new optimization.
7020 2023-11-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7022         * config/riscv/riscv-v.cc (shuffle_bswap_pattern): Disable for NUNIT < 4.
7024 2023-11-24  Haochen Jiang  <haochen.jiang@intel.com>
7026         PR target/112643
7027         * config/i386/driver-i386.cc (check_avx10_avx512_features):
7028         Renamed to ...
7029         (check_avx512_features): this and remove avx10 check.
7030         (host_detect_local_cpu): Never append -mno-avx10.1-{256,512} to
7031         avoid emitting warnings when building GCC with native arch.
7032         * config/i386/i386-builtin.def (BDESC): Add missing AVX512VL for
7033         128/256 bit builtin for AVX512VP2INTERSECT.
7034         * config/i386/i386-options.cc (ix86_option_override_internal):
7035         Also check whether the AVX512 flags is set when trying to reset.
7036         * config/i386/i386.h
7037         (PTA_SKYLAKE_AVX512): Add missing PTA_EVEX512.
7038         (PTA_ZNVER4): Ditto.
7040 2023-11-23  Georg-Johann Lay  <avr@gjlay.de>
7042         PR target/86776
7043         * config/avr/avr.cc (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define
7044         to speculation_safe_value_not_needed.
7046 2023-11-23  Marek Polacek  <polacek@redhat.com>
7048         * common.opt (Whardened, fhardened): New options.
7049         * config.in: Regenerate.
7050         * config/bpf/bpf.cc: Include "opts.h".
7051         (bpf_option_override): If flag_stack_protector_set_by_fhardened_p, do
7052         not inform that -fstack-protector does not work.
7053         * config/i386/i386-options.cc (ix86_option_override_internal): When
7054         -fhardened, maybe enable -fcf-protection=full.
7055         * config/linux-protos.h (linux_fortify_source_default_level): Declare.
7056         * config/linux.cc (linux_fortify_source_default_level): New.
7057         * config/linux.h (TARGET_FORTIFY_SOURCE_DEFAULT_LEVEL): Redefine.
7058         * configure: Regenerate.
7059         * configure.ac: Check if the linker supports '-z now' and '-z relro'.
7060         Check if -fhardened is supported on $target_os.
7061         * doc/invoke.texi: Document -fhardened and -Whardened.
7062         * doc/tm.texi: Regenerate.
7063         * doc/tm.texi.in (TARGET_FORTIFY_SOURCE_DEFAULT_LEVEL): Add.
7064         * gcc.cc (driver_handle_option): Remember if any link options or -static
7065         were specified on the command line.
7066         (process_command): When -fhardened, maybe enable -pie and
7067         -Wl,-z,relro,-z,now.
7068         * opts.cc (flag_stack_protector_set_by_fhardened_p): New global.
7069         (finish_options): When -fhardened, enable
7070         -ftrivial-auto-var-init=zero and -fstack-protector-strong.
7071         (print_help_hardened): New.
7072         (print_help): Call it.
7073         * opts.h (flag_stack_protector_set_by_fhardened_p): Declare.
7074         * target.def (fortify_source_default_level): New target hook.
7075         * targhooks.cc (default_fortify_source_default_level): New.
7076         * targhooks.h (default_fortify_source_default_level): Declare.
7077         * toplev.cc (process_options): When -fhardened, enable
7078         -fstack-clash-protection.  If flag_stack_protector_set_by_fhardened_p,
7079         do not warn that -fstack-protector not supported for this target.
7080         Don't enable -fhardened when !HAVE_FHARDENED_SUPPORT.
7082 2023-11-23  Christophe Lyon  <christophe.lyon@linaro.org>
7084         * config/arm/arm-mve-builtins-functions.h
7085         (full_width_access::memory_vector_mode): Add default clause.
7087 2023-11-23  Uros Bizjak  <ubizjak@gmail.com>
7089         PR target/112672
7090         * config/i386/i386.md (parityhi2):
7091         Use temporary register in the call to gen_parityhi2_cmp.
7093 2023-11-23  Uros Bizjak  <ubizjak@gmail.com>
7095         PR target/89316
7096         * config/i386/i386.cc (ix86_expand_split_stack_prologue): Obtain
7097         scratch regno when flag_force_indirect_call is set.  On 64-bit
7098         targets, call __morestack_large_model when  flag_force_indirect_call
7099         is set and on 32-bit targets with -fpic, manually expand PIC sequence
7100         to call __morestack.  Move the function address to an indirect
7101         call scratch register.
7103 2023-11-23  Sebastian Huber  <sebastian.huber@embedded-brains.de>
7105         PR tree-optimization/112678
7106         * tree-profile.cc (tree_profiling): Do not use atomic operations
7107         for -fprofile-update=single.
7109 2023-11-23  Juergen Christ  <jchrist@linux.ibm.com>
7111         * config/s390/s390-c.cc (s390_cpu_cpp_builtins): Define
7112         __GCC_ASM_FLAG_OUTPUTS__.
7113         * config/s390/s390.cc (s390_canonicalize_comparison): More
7114         UNSPEC_CC_TO_INT cases.
7115         (s390_md_asm_adjust): Implement flags output.
7116         * config/s390/s390.md (ccstore4): Allow mask operands.
7117         * doc/extend.texi: Document flags output.
7119 2023-11-23  Juergen Christ  <jchrist@linux.ibm.com>
7121         * config/s390/s390.md: Split TImode loads.
7123 2023-11-23  Juergen Christ  <jchrist@linux.ibm.com>
7125         * config/s390/vector.md: (*vec_extract) Fix.
7127 2023-11-23  Di Zhao  <dizhao@os.amperecomputing.com>
7129         * tree-ssa-reassoc.cc (get_reassociation_width): check
7130         for loop dependent FMAs.
7131         (reassociate_bb): For 3 ops, refine the condition to call
7132         swap_ops_for_binary_stmt.
7134 2023-11-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7136         * config/riscv/riscv-protos.h (emit_vec_extract): New function.
7137         * config/riscv/riscv-v.cc (emit_vec_extract): Ditto.
7138         * config/riscv/riscv.cc (riscv_legitimize_move): Refine codes.
7140 2023-11-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7142         PR target/112599
7143         PR target/112670
7144         * config/riscv/riscv-avlprop.cc (alv_can_be_propagated_p): New function.
7145         (vlmax_ta_p): Disable vrgather AVL propagation.
7147 2023-11-23  Jakub Jelinek  <jakub@redhat.com>
7149         PR middle-end/112336
7150         * expr.cc (EXTEND_BITINT): Don't call reduce_to_bit_field_precision
7151         if modifier is EXPAND_INITIALIZER.
7153 2023-11-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7155         * config/riscv/riscv-v.cc (emit_vlmax_gather_insn): Refine codes.
7156         (emit_vlmax_masked_gather_mu_insn): Ditto.
7157         (modulo_sel_indices): Ditto.
7158         (expand_vec_perm): Ditto.
7159         (shuffle_generic_patterns): Ditto.
7161 2023-11-23  Jakub Jelinek  <jakub@redhat.com>
7163         * doc/extend.texi (__builtin_stdc_bit_ceil, __builtin_stdc_bit_floor,
7164         __builtin_stdc_bit_width, __builtin_stdc_count_ones,
7165         __builtin_stdc_count_zeros, __builtin_stdc_first_leading_one,
7166         __builtin_stdc_first_leading_zero, __builtin_stdc_first_trailing_one,
7167         __builtin_stdc_first_trailing_zero, __builtin_stdc_has_single_bit,
7168         __builtin_stdc_leading_ones, __builtin_stdc_leading_zeros,
7169         __builtin_stdc_trailing_ones, __builtin_stdc_trailing_zeros): Document.
7171 2023-11-23  Richard Biener  <rguenther@suse.de>
7173         PR middle-end/32667
7174         * doc/md.texi (cpymem): Document that exact overlap of source
7175         and destination needs to work.
7176         * doc/standards.texi (ffreestanding): Mention memcpy is required
7177         to handle the exact overlap case.
7179 2023-11-23  Jakub Jelinek  <jakub@redhat.com>
7181         PR c++/110348
7182         * doc/invoke.texi (-Wno-c++26-extensions): Document.
7184 2023-11-23  Manolis Tsamis  <manolis.tsamis@vrull.eu>
7186         * ifcvt.cc (noce_convert_multiple_sets_1): Remove old code.
7188 2023-11-23  Pan Li  <pan2.li@intel.com>
7190         PR target/111720
7191         * dse.cc (get_stored_val): Allow vector mode if read size is
7192         less than or equal to stored size.
7194 2023-11-23  Costas Argyris  <costas.argyris@gmail.com>
7196         * configure.ac: Handle new --enable-win32-utf8-manifest
7197         option.
7198         * config.host: allow win32 utf8 manifest to be disabled
7199         by user.
7200         * configure: Regenerate.
7202 2023-11-22  John David Anglin  <danglin@gcc.gnu.org>
7204         PR target/112592
7205         * config/pa/pa.h (MAX_FIXED_MODE_SIZE): Define.
7207 2023-11-22  John David Anglin  <danglin@gcc.gnu.org>
7209         PR target/112617
7210         * config/pa/predicates.md (integer_store_memory_operand): Return
7211         true for REG+D addresses when reload_in_progress is true.
7213 2023-11-22  Richard Biener  <rguenther@suse.de>
7215         PR tree-optimization/112344
7216         * tree-chrec.cc (chrec_apply): Perform the overall increment
7217         calculation and increment in an unsigned type.
7219 2023-11-22  Andrew Stubbs  <ams@codesourcery.com>
7221         * config/gcn/gcn-valu.md (*mov<mode>_4reg): Disparage AVGPR use when a
7222         reload is required.
7224 2023-11-22  Vladimir N. Makarov  <vmakarov@redhat.com>
7226         PR rtl-optimization/112610
7227         * ira-costs.cc: (find_costs_and_classes): Remove arg.
7228         Use ira_dump_file for printing.
7229         (print_allocno_costs, print_pseudo_costs): Ditto.
7230         (ira_costs): Adjust call of find_costs_and_classes.
7231         (ira_set_pseudo_classes): Set up and restore ira_dump_file.
7233 2023-11-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7235         PR target/112598
7236         * config/riscv/riscv-v.cc (shuffle_compress_patterns): Fix vcompress bug.
7238 2023-11-22  Tamar Christina  <tamar.christina@arm.com>
7240         * config/aarch64/aarch64-simd.md
7241         (aarch64_uaddw<mode>_<PERM_EXTEND:perm_hilo>_zip,
7242         aarch64_usubw<mode>_<PERM_EXTEND:perm_hilo>_zip): Split into...
7243         (aarch64_uaddw<mode>_lo_zip, aarch64_uaddw<mode>_hi_zip,
7244         "aarch64_usubw<mode>_lo_zip, "aarch64_usubw<mode>_hi_zip): ... This.
7245         * config/aarch64/iterators.md (PERM_EXTEND, perm_index): Remove.
7246         (perm_hilo): Remove UNSPEC_ZIP1, UNSPEC_ZIP2.
7248 2023-11-22  Christophe Lyon  <christophe.lyon@linaro.org>
7250         * config/arm/arm-mve-builtins.cc
7251         (function_resolver::infer_pointer_type): Remove spurious line.
7253 2023-11-22  Xi Ruoyao  <xry111@xry111.site>
7255         * config/loongarch/lsx.md (vec_perm<mode:LSX>): Make the
7256         selector VIMODE.
7257         * config/loongarch/loongarch.cc (loongarch_expand_vec_perm):
7258         Use the mode of the selector (instead of the shuffled vector)
7259         for truncating it.  Operate on subregs in the selector mode if
7260         the shuffled vector has a different mode (i. e. it's a
7261         floating-point vector).
7263 2023-11-22  Hongyu Wang  <hongyu.wang@intel.com>
7265         * config/i386/i386.md (push2_di): Adjust operand order for AT&T
7266         syntax.
7267         (pop2_di): Likewise.
7268         (push2p_di): Likewise.
7269         (pop2p_di): Likewise.
7271 2023-11-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7273         PR target/112598
7274         * config/riscv/riscv-v.cc (emit_vlmax_gather_insn): Adapt the priority.
7275         (shuffle_generic_patterns): Fix permutation indice bug.
7276         * config/riscv/vector-iterators.md: Fix VEI16 bug.
7278 2023-11-22  liuhongt  <hongtao.liu@intel.com>
7280         * config/i386/sse.md (cbranch<mode>4): Extend to Vector
7281         HI/QImode.
7283 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
7285         PR target/111815
7286         * config/vax/vax.cc (index_term_p): Only accept the index scaler
7287         as the RHS operand to ASHIFT.
7289 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
7291         * config/riscv/predicates.md (order_operator): Remove predicate.
7292         * config/riscv/riscv.cc (riscv_rtx_costs): Update accordingly.
7293         * config/riscv/riscv.md (*branch<mode>, *mov<GPR:mode><X:mode>cc)
7294         (cstore<mode>4): Likewise.
7296 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
7298         * config/riscv/riscv-protos.h (riscv_expand_float_scc): Add
7299         `invert_ptr' parameter.
7300         * config/riscv/riscv.cc (riscv_emit_float_compare): Add NE
7301         inversion handling.
7302         (riscv_expand_float_scc): Pass `invert_ptr' through to
7303         `riscv_emit_float_compare'.
7304         (riscv_expand_conditional_move): Pass `&invert' to
7305         `riscv_expand_float_scc'.
7306         * config/riscv/riscv.md (add<mode>cc): Likewise.
7308 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
7310         * config/riscv/riscv.cc (riscv_emit_float_compare) <NE>: Handle
7311         separately.
7312         <EQ, LE, LT, GE, GT>: Return operands supplied as is.
7313         (riscv_emit_binary): Call `riscv_emit_binary' directly rather
7314         than going through a temporary register for word-mode targets.
7315         (riscv_expand_conditional_branch): Canonicalize the comparison
7316         if not against constant zero.
7318 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
7320         * config/riscv/predicates.md (ne_operator): New predicate.
7321         * config/riscv/riscv.cc (riscv_insn_cost): Handle branches on a
7322         floating-point condition.
7323         * config/riscv/riscv.md (@cbranch<mode>4): Rename expander to...
7324         (@cbranch<ANYF:mode>4): ... this.  Only expand the RTX via
7325         `riscv_expand_conditional_branch' for `!signed_order_operator'
7326         operators, otherwise let it through.
7327         (*cbranch<ANYF:mode>4, *cbranch<ANYF:mode>4): New insns and
7328         splitters.
7330 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
7332         * config/riscv/riscv.cc (riscv_expand_conditional_move): Don't
7333         bail out in floating-point conditions.
7335 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
7337         * config/riscv/riscv.cc (riscv_expand_float_scc): Suppress the
7338         use of SUBREG if the conditional-set target is word-mode.
7340 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
7342         * config/riscv/riscv.md (add<mode>cc): New expander.
7344 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
7346         * config/riscv/predicates.md (movcc_operand): New predicate.
7347         * config/riscv/riscv.cc (riscv_expand_conditional_move): Handle
7348         generic targets.
7349         * config/riscv/riscv.md (mov<mode>cc): Likewise.
7350         * config/riscv/riscv.opt (mmovcc): New option.
7351         * doc/invoke.texi (Option Summary): Document it.
7353 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
7355         * config/riscv/riscv-protos.h (riscv_emit_unary): New prototype.
7356         * config/riscv/riscv.cc (riscv_emit_unary): New function.
7358 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
7360         * config/riscv/riscv.cc (riscv_expand_conditional_move): Unify
7361         conditional-move handling across all the relevant targets.
7363 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
7365         * config/riscv/riscv.cc (riscv_expand_conditional_move): Also
7366         accept constants for T-Head data input operands.
7368 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
7370         * config/riscv/riscv.cc (riscv_expand_conditional_move): Also
7371         accept constants for T-Head comparison operands.
7373 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
7375         * config/riscv/riscv.cc (riscv_expand_conditional_move): Remove
7376         the check for operand 1 being constant 0 in the Ventana/Zicond
7377         case for equality comparisons.
7379 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
7381         * config/riscv/riscv.cc (riscv_expand_conditional_move): Also
7382         invert the condition for GEU and LEU.
7384 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
7386         * config/riscv/riscv.cc (riscv_insn_cost): New function.
7387         (riscv_max_noce_ifcvt_seq_cost): Likewise.
7388         (riscv_noce_conversion_profitable_p): Likewise.
7389         (TARGET_INSN_COST): New macro.
7390         (TARGET_MAX_NOCE_IFCVT_SEQ_COST): New macro.
7391         (TARGET_NOCE_CONVERSION_PROFITABLE_P): New macro.
7393 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
7395         * config/riscv/riscv.cc (riscv_expand_conditional_move): Remove
7396         extraneous variable for EQ vs NE operation selection.
7398 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
7400         * config/riscv/riscv.cc (riscv_expand_conditional_move): Use
7401         `nullptr' rather than 0 to initialize a pointer.
7403 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
7405         * config/riscv/riscv.cc (riscv_expand_conditional_move): Use
7406         `mode0' and `mode1' for `GET_MODE (op0)' and `GET_MODE (op1)'.
7408 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
7410         * config/riscv/riscv.cc (riscv_expand_conditional_move): Use
7411         `mode' for `GET_MODE (dest)' throughout.
7413 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
7415         * config/riscv/riscv.cc (riscv_emit_int_compare): Bail out if
7416         NEED_EQ_NE_P but the comparison is neither EQ nor NE.
7418 2023-11-22  Maciej W. Rozycki  <macro@embecosm.com>
7420         * config/riscv/riscv.md (mov<mode>cc): Move comment on SFB
7421         patterns over to...
7422         (*mov<GPR:mode><X:mode>cc): ... here.
7424 2023-11-21  Robin Dapp  <rdapp@ventanamicro.com>
7426         PR middle-end/112406
7427         * tree-vect-loop.cc (vectorize_fold_left_reduction): Allow
7428         reduction index != 1.
7429         (vect_transform_reduction): Handle reduction index != 1.
7431 2023-11-21  Richard Sandiford  <richard.sandiford@arm.com>
7433         * common.md (aligned_register_operand): New predicate.
7435 2023-11-21  Richard Sandiford  <richard.sandiford@arm.com>
7437         * ira-int.h (ira_allocno): Add a register_filters field.
7438         (ALLOCNO_REGISTER_FILTERS): New macro.
7439         (ALLOCNO_SET_REGISTER_FILTERS): Likewise.
7440         * ira-build.cc (ira_create_allocno): Initialize register_filters.
7441         (create_cap_allocno): Propagate register_filters.
7442         (propagate_allocno_info): Likewise.
7443         (propagate_some_info_from_allocno): Likewise.
7444         * ira-lives.cc (process_register_constraint_filters): New function.
7445         (process_bb_node_lives): Use it to record register filter
7446         information.
7447         * ira-color.cc (assign_hard_reg): Check register filters.
7448         (improve_allocation, fast_allocation): Likewise.
7450 2023-11-21  Richard Sandiford  <richard.sandiford@arm.com>
7452         * lra-constraints.cc (process_alt_operands): Check register filters.
7454 2023-11-21  Richard Sandiford  <richard.sandiford@arm.com>
7456         * recog.h (operand_alternative): Add a register_filters field.
7457         (alternative_register_filters): New function.
7458         * recog.cc (preprocess_constraints): Calculate the filters field.
7459         (constrain_operands): Check register filters.
7461 2023-11-21  Richard Sandiford  <richard.sandiford@arm.com>
7463         * rtl.def (DEFINE_REGISTER_CONSTRAINT): Add an optional filter
7464         operand.
7465         * doc/md.texi (define_register_constraint): Document it.
7466         * doc/tm.texi.in: Reference it in discussion about aligned registers.
7467         * doc/tm.texi: Regenerate.
7468         * gensupport.h (register_filters, get_register_filter_id): Declare.
7469         * gensupport.cc (register_filter_map, register_filters): New variables.
7470         (get_register_filter_id): New function.
7471         (process_define_register_constraint): Likewise.
7472         (process_rtx): Pass define_register_constraints to
7473         process_define_register_constraint.
7474         * genconfig.cc (main): Emit a definition of NUM_REGISTER_FILTERS.
7475         * genpreds.cc (constraint_data): Add a filter field.
7476         (add_constraint): Update accordingly.
7477         (process_define_register_constraint): Pass the filter operand.
7478         (write_init_reg_class_start_regs): New function.
7479         (write_get_register_filter): Likewise.
7480         (write_get_register_filter_id): Likewise.
7481         (write_tm_preds_h): Write a definition of target_constraints,
7482         plus helpers to test its contents.  Write the get_register_filter*
7483         functions.
7484         (write_insn_preds_c): Write init_reg_class_start_regs.
7485         * reginfo.cc (init_reg_class_start_regs): Declare.
7486         (init_reg_sets): Call it.
7487         * target-globals.h (this_target_constraints): Declare.
7488         (target_globals): Add a constraints field.
7489         (restore_target_globals): Update accordingly.
7490         * target-globals.cc: Include tm_p.h.
7491         (default_target_globals): Initialize the constraints field.
7492         (save_target_globals): Handle the constraints field.
7493         (target_globals::~target_globals): Likewise.
7495 2023-11-21  Richard Biener  <rguenther@suse.de>
7497         PR tree-optimization/112623
7498         * tree-ssa-forwprop.cc (simplify_vector_constructor):
7499         Check the source mode of the insn for vector pack/unpacks.
7501 2023-11-21  Richard Biener  <rguenther@suse.de>
7503         * tree-vect-loop.cc (vect_analyze_loop_2): Move check
7504         of VF against max_vf until VF is final.
7506 2023-11-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7508         PR target/112598
7509         * config/riscv/riscv.cc (riscv_const_insns): Disallow DI CONST_VECTOR on RV32.
7511 2023-11-21  Tamar Christina  <tamar.christina@arm.com>
7513         * config/aarch64/aarch64.cc (aarch64_override_options): Rework warnings.
7515 2023-11-21  Tamar Christina  <tamar.christina@arm.com>
7517         PR target/111370
7518         * config/aarch64/aarch64-arches.def (armv9-a, armv9.1-a, armv9.2-a,
7519         armv9.3-a): Update to generic-armv9-a.
7520         * config/aarch64/aarch64-cores.def (generic-armv9-a): New.
7521         * config/aarch64/aarch64-tune.md: Regenerate.
7522         * config/aarch64/aarch64.cc: Include generic_armv9_a.h.
7523         * config/aarch64/tuning_models/generic_armv9_a.h: New file.
7525 2023-11-21  Tamar Christina  <tamar.christina@arm.com>
7527         PR target/111370
7528         * config/aarch64/aarch64-arches.def (armv8-9, armv8-a, armv8.1-a,
7529         armv8.2-a, armv8.3-a, armv8.4-a, armv8.5-a, armv8.6-a, armv8.7-a,
7530         armv8.8-a): Update to generic_armv8_a.
7531         * config/aarch64/aarch64-cores.def (generic-armv8-a): New.
7532         * config/aarch64/aarch64-tune.md: Regenerate.
7533         * config/aarch64/aarch64.cc: Include generic_armv8_a.h
7534         * config/aarch64/aarch64.h (TARGET_CPU_DEFAULT): Change to
7535         TARGET_CPU_generic_armv8_a.
7536         * config/aarch64/tuning_models/generic_armv8_a.h: New file.
7538 2023-11-21  Tamar Christina  <tamar.christina@arm.com>
7540         PR target/111370
7541         * config/aarch64/aarch64-cores.def: Add generic.
7542         * config/aarch64/aarch64-opts.h (enum aarch64_proc): Remove generic.
7543         * config/aarch64/aarch64-tune.md: Regenerate
7544         * config/aarch64/aarch64.cc (all_cores): Remove generic
7545         * config/aarch64/aarch64.h (enum target_cpus): Remove
7546         TARGET_CPU_generic.
7548 2023-11-21  Tamar Christina  <tamar.christina@arm.com>
7550         PR target/111370
7551         * config/aarch64/aarch64.cc (generic_addrcost_table,
7552         exynosm1_addrcost_table,
7553         xgene1_addrcost_table,
7554         thunderx2t99_addrcost_table,
7555         thunderx3t110_addrcost_table,
7556         tsv110_addrcost_table,
7557         qdf24xx_addrcost_table,
7558         a64fx_addrcost_table,
7559         neoversev1_addrcost_table,
7560         neoversen2_addrcost_table,
7561         neoversev2_addrcost_table,
7562         generic_regmove_cost,
7563         cortexa57_regmove_cost,
7564         cortexa53_regmove_cost,
7565         exynosm1_regmove_cost,
7566         thunderx_regmove_cost,
7567         xgene1_regmove_cost,
7568         qdf24xx_regmove_cost,
7569         thunderx2t99_regmove_cost,
7570         thunderx3t110_regmove_cost,
7571         tsv110_regmove_cost,
7572         a64fx_regmove_cost,
7573         neoversen2_regmove_cost,
7574         neoversev1_regmove_cost,
7575         neoversev2_regmove_cost,
7576         generic_vector_cost,
7577         a64fx_vector_cost,
7578         qdf24xx_vector_cost,
7579         thunderx_vector_cost,
7580         tsv110_vector_cost,
7581         cortexa57_vector_cost,
7582         exynosm1_vector_cost,
7583         xgene1_vector_cost,
7584         thunderx2t99_vector_cost,
7585         thunderx3t110_vector_cost,
7586         ampere1_vector_cost,
7587         generic_branch_cost,
7588         generic_tunings,
7589         cortexa35_tunings,
7590         cortexa53_tunings,
7591         cortexa57_tunings,
7592         cortexa72_tunings,
7593         cortexa73_tunings,
7594         exynosm1_tunings,
7595         thunderxt88_tunings,
7596         thunderx_tunings,
7597         tsv110_tunings,
7598         xgene1_tunings,
7599         emag_tunings,
7600         qdf24xx_tunings,
7601         saphira_tunings,
7602         thunderx2t99_tunings,
7603         thunderx3t110_tunings,
7604         neoversen1_tunings,
7605         ampere1_tunings,
7606         ampere1a_tunings,
7607         neoversev1_vector_cost,
7608         neoversev1_tunings,
7609         neoverse512tvb_vector_cost,
7610         neoverse512tvb_tunings,
7611         neoversen2_vector_cost,
7612         neoversen2_tunings,
7613         neoversev2_vector_cost,
7614         neoversev2_tunings
7615         a64fx_tunings): Split into own files.
7616         * config/aarch64/tuning_models/a64fx.h: New file.
7617         * config/aarch64/tuning_models/ampere1.h: New file.
7618         * config/aarch64/tuning_models/ampere1a.h: New file.
7619         * config/aarch64/tuning_models/cortexa35.h: New file.
7620         * config/aarch64/tuning_models/cortexa53.h: New file.
7621         * config/aarch64/tuning_models/cortexa57.h: New file.
7622         * config/aarch64/tuning_models/cortexa72.h: New file.
7623         * config/aarch64/tuning_models/cortexa73.h: New file.
7624         * config/aarch64/tuning_models/emag.h: New file.
7625         * config/aarch64/tuning_models/exynosm1.h: New file.
7626         * config/aarch64/tuning_models/generic.h: New file.
7627         * config/aarch64/tuning_models/neoverse512tvb.h: New file.
7628         * config/aarch64/tuning_models/neoversen1.h: New file.
7629         * config/aarch64/tuning_models/neoversen2.h: New file.
7630         * config/aarch64/tuning_models/neoversev1.h: New file.
7631         * config/aarch64/tuning_models/neoversev2.h: New file.
7632         * config/aarch64/tuning_models/qdf24xx.h: New file.
7633         * config/aarch64/tuning_models/saphira.h: New file.
7634         * config/aarch64/tuning_models/thunderx.h: New file.
7635         * config/aarch64/tuning_models/thunderx2t99.h: New file.
7636         * config/aarch64/tuning_models/thunderx3t110.h: New file.
7637         * config/aarch64/tuning_models/thunderxt88.h: New file.
7638         * config/aarch64/tuning_models/tsv110.h: New file.
7639         * config/aarch64/tuning_models/xgene1.h: New file.
7641 2023-11-21  Tamar Christina  <tamar.christina@arm.com>
7643         * config/aarch64/aarch64-simd.md (vec_unpack<su>_lo_<mode,
7644         vec_unpack<su>_lo_<mode): Split into...
7645         (vec_unpacku_lo_<mode, vec_unpacks_lo_<mode,
7646         vec_unpacku_lo_<mode, vec_unpacks_lo_<mode): ...These.
7647         (aarch64_usubw<mode>_<PERM_EXTEND:perm_hilo>_zip): New.
7648         (aarch64_uaddw<mode>_<PERM_EXTEND:perm_hilo>_zip): New.
7649         * config/aarch64/iterators.md (PERM_EXTEND, perm_index): New.
7650         (perm_hilo): Add UNSPEC_ZIP1, UNSPEC_ZIP2.
7652 2023-11-21  Tamar Christina  <tamar.christina@arm.com>
7654         * config/aarch64/aarch64.cc (aarch64_adjust_stmt_cost): Guard mla.
7655         (aarch64_vector_costs::count_ops): Likewise.
7657 2023-11-21  Sebastian Huber  <sebastian.huber@embedded-brains.de>
7659         PR middle-end/112634
7660         * tree-profile.cc (gen_assign_counter_update): Cast the unsigned result type of
7661         __atomic_add_fetch() to the signed counter type.
7662         (gen_counter_update): Fix formatting.
7664 2023-11-21  Jakub Jelinek  <jakub@redhat.com>
7666         * tree-profile.cc (gen_counter_update, tree_profiling): Formatting
7667         fixes.
7669 2023-11-21  Jakub Jelinek  <jakub@redhat.com>
7671         PR middle-end/112639
7672         * builtins.cc (fold_builtin_bit_query): If arg0 has side-effects, arg1
7673         is specified but cleared, call save_expr on arg0.
7675 2023-11-21  Hongyu Wang  <hongyu.wang@intel.com>
7677         * config/i386/i386-expand.h (gen_push): Add default bool
7678         parameter.
7679         (gen_pop): Likewise.
7680         * config/i386/i386-opts.h (enum apx_features): Add apx_ppx, add
7681         it to apx_all.
7682         * config/i386/i386.cc (ix86_emit_restore_reg_using_pop): Add
7683         ppx_p parameter for function declaration.
7684         (gen_push2): Add ppx_p parameter, emit push2p if ppx_p is true.
7685         (gen_push): Likewise.
7686         (ix86_emit_restore_reg_using_pop2): Likewise for pop2p.
7687         (ix86_emit_save_regs): Emit pushp/push2p under TARGET_APX_PPX.
7688         (ix86_emit_restore_reg_using_pop): Add ppx_p, emit popp insn
7689         and adjust cfi when ppx_p is ture.
7690         (ix86_emit_restore_reg_using_pop2): Add ppx_p and parse to its
7691         callee.
7692         (ix86_emit_restore_regs_using_pop2): Likewise.
7693         (ix86_expand_epilogue): Parse TARGET_APX_PPX to
7694         ix86_emit_restore_reg_using_pop.
7695         * config/i386/i386.h (TARGET_APX_PPX): New.
7696         * config/i386/i386.md (UNSPEC_APX_PPX): New unspec.
7697         (pushp_di): New define_insn.
7698         (popp_di): Likewise.
7699         (push2p_di): Likewise.
7700         (pop2p_di): Likewise.
7701         * config/i386/i386.opt: Add apx_ppx enum.
7703 2023-11-21  Richard Biener  <rguenther@suse.de>
7705         PR tree-optimization/111970
7706         * tree-vect-stmts.cc (vectorizable_load): Fix offset calculation
7707         for SLP gather load.
7708         (vectorizable_store): Likewise for SLP scatter store.
7710 2023-11-21  Xi Ruoyao  <xry111@xry111.site>
7712         * config/loongarch/loongarch-def.h (stdint.h): Guard with #if to
7713         exclude it for target libraries.
7714         (loongarch_isa_base_features): Likewise.
7715         (loongarch_isa): Likewise.
7716         (loongarch_abi): Likewise.
7717         (loongarch_target): Likewise.
7718         (loongarch_cpu_default_isa): Likewise.
7720 2023-11-21  liuhongt  <hongtao.liu@intel.com>
7722         PR target/112325
7723         * config/i386/i386-expand.cc (emit_reduc_half): Hanlde
7724         V8QImode.
7725         * config/i386/mmx.md (reduc_<code>_scal_<mode>): New expander.
7726         (reduc_<code>_scal_v4qi): Ditto.
7728 2023-11-20  Marc Poulhiès  <dkm@kataplop.net>
7730         * config/nvptx/nvptx.h (struct machine_function): Fix typo in variadic.
7731         * config/nvptx/nvptx.cc (nvptx_function_arg_advance): Adjust to use fixed name.
7732         (nvptx_declare_function_name): Likewise.
7733         (nvptx_call_args): Likewise.
7734         (nvptx_expand_call): Likewise.
7736 2023-11-20  Sebastian Huber  <sebastian.huber@embedded-brains.de>
7738         * tree-profile.cc (gen_counter_update): Use unshare_expr() for the
7739         counter expression in the second gimple_build_assign().
7741 2023-11-20  Jan Hubicka  <jh@suse.cz>
7743         * cgraph.cc (add_detected_attribute_1): New function.
7744         (cgraph_node::add_detected_attribute): Likewise.
7745         * cgraph.h (cgraph_node::add_detected_attribute): Declare.
7746         * common.opt: Add -Wsuggest-attribute=returns_nonnull.
7747         * doc/invoke.texi: Document new flag.
7748         * gimple-range-fold.cc (fold_using_range::range_of_call):
7749         Use known reutrn value ranges.
7750         * ipa-prop.cc (struct ipa_return_value_summary): New type.
7751         (class ipa_return_value_sum_t): New type.
7752         (ipa_return_value_sum): New summary.
7753         (ipa_record_return_value_range): New function.
7754         (ipa_return_value_range): New function.
7755         * ipa-prop.h (ipa_return_value_range): Declare.
7756         (ipa_record_return_value_range): Declare.
7757         * ipa-pure-const.cc (warn_function_returns_nonnull): New funcion.
7758         * ipa-utils.h (warn_function_returns_nonnull): Declare.
7759         * symbol-summary.h: Fix comment.
7760         * tree-vrp.cc (execute_ranger_vrp): Record return values.
7762 2023-11-20  Richard Biener  <rguenther@suse.de>
7764         PR tree-optimization/112618
7765         * tree-vect-loop.cc (vect_transform_loop_stmt): For not
7766         relevant and unused .MASK_CALL make sure we remove the
7767         scalar stmt.
7769 2023-11-20  Richard Biener  <rguenther@suse.de>
7771         PR tree-optimization/112281
7772         * tree-loop-distribution.cc
7773         (loop_distribution::pg_add_dependence_edges): For = in the
7774         innermost common loop record a partition conflict.
7776 2023-11-20  Richard Biener  <rguenther@suse.de>
7778         PR middle-end/112622
7779         * convert.cc (convert_to_real_1): Use element_precision
7780         where a vector type might appear.  Provide specific
7781         diagnostic for unexpected vector argument.
7783 2023-11-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7785         PR target/112597
7786         * config/riscv/vector-iterators.md: Remove VDEMOTE and VMDEMOTE.
7787         * config/riscv/vector.md: Fix slide1 intermediate mode bug.
7789 2023-11-20  Robin Dapp  <rdapp@ventanamicro.com>
7791         * config/riscv/riscv-v.cc (gather_scatter_valid_offset_mode_p):
7792         Add check for XLEN == 32.
7793         * config/riscv/vector-iterators.md: Change VLS part of the
7794         demote iterator to 2x elements modes
7795         * config/riscv/vector.md: Adjust iterators and insn conditions.
7797 2023-11-20  Christophe Lyon  <christophe.lyon@linaro.org>
7799         * config/arm/arm-mve-builtins-base.cc (vld1_impl, vld1q)
7800         (vst1_impl, vst1q): New.
7801         * config/arm/arm-mve-builtins-base.def (vld1q, vst1q): New.
7802         * config/arm/arm-mve-builtins-base.h (vld1q, vst1q): New.
7803         * config/arm/arm_mve.h
7804         (vld1q): Delete.
7805         (vst1q): Delete.
7806         (vld1q_s8): Delete.
7807         (vld1q_s32): Delete.
7808         (vld1q_s16): Delete.
7809         (vld1q_u8): Delete.
7810         (vld1q_u32): Delete.
7811         (vld1q_u16): Delete.
7812         (vld1q_f32): Delete.
7813         (vld1q_f16): Delete.
7814         (vst1q_f32): Delete.
7815         (vst1q_f16): Delete.
7816         (vst1q_s8): Delete.
7817         (vst1q_s32): Delete.
7818         (vst1q_s16): Delete.
7819         (vst1q_u8): Delete.
7820         (vst1q_u32): Delete.
7821         (vst1q_u16): Delete.
7822         (__arm_vld1q_s8): Delete.
7823         (__arm_vld1q_s32): Delete.
7824         (__arm_vld1q_s16): Delete.
7825         (__arm_vld1q_u8): Delete.
7826         (__arm_vld1q_u32): Delete.
7827         (__arm_vld1q_u16): Delete.
7828         (__arm_vst1q_s8): Delete.
7829         (__arm_vst1q_s32): Delete.
7830         (__arm_vst1q_s16): Delete.
7831         (__arm_vst1q_u8): Delete.
7832         (__arm_vst1q_u32): Delete.
7833         (__arm_vst1q_u16): Delete.
7834         (__arm_vld1q_f32): Delete.
7835         (__arm_vld1q_f16): Delete.
7836         (__arm_vst1q_f32): Delete.
7837         (__arm_vst1q_f16): Delete.
7838         (__arm_vld1q): Delete.
7839         (__arm_vst1q): Delete.
7840         * config/arm/mve.md (mve_vld1q_f<mode>): Rename into ...
7841         (@mve_vld1q_f<mode>): ... this.
7842         (mve_vld1q_<supf><mode>): Rename into ...
7843         (@mve_vld1q_<supf><mode>) ... this.
7844         (mve_vst1q_f<mode>): Rename into ...
7845         (@mve_vst1q_f<mode>): ... this.
7846         (mve_vst1q_<supf><mode>): Rename into ...
7847         (@mve_vst1q_<supf><mode>) ... this.
7849 2023-11-20  Christophe Lyon  <christophe.lyon@linaro.org>
7851         * config/arm/arm-mve-builtins-shapes.cc (load, store): New.
7852         * config/arm/arm-mve-builtins-shapes.h (load, store): New.
7854 2023-11-20  Christophe Lyon  <christophe.lyon@linaro.org>
7856         * config/arm/arm-mve-builtins-functions.h (multi_vector_function)
7857         (full_width_access): New classes.
7858         * config/arm/arm-mve-builtins.cc
7859         (find_type_suffix_for_scalar_type, infer_pointer_type)
7860         (require_pointer_type, get_contiguous_base, add_mem_operand)
7861         (add_fixed_operand, use_contiguous_load_insn)
7862         (use_contiguous_store_insn): New.
7863         * config/arm/arm-mve-builtins.h (memory_vector_mode)
7864         (infer_pointer_type, require_pointer_type, get_contiguous_base)
7865         (add_mem_operand)
7866         (add_fixed_operand, use_contiguous_load_insn)
7867         (use_contiguous_store_insn): New.
7869 2023-11-20  Christophe Lyon  <christophe.lyon@linaro.org>
7871         * config/arm/arm-mve-builtins-shapes.cc (build_const_pointer):
7872         New.
7873         (parse_type): Add support for '_', 'al' and 'as'.
7874         * config/arm/arm-mve-builtins.h (function_instance): Add
7875         memory_scalar_type.
7876         (function_base): Likewise.
7878 2023-11-20  Christophe Lyon  <christophe.lyon@linaro.org>
7880         * config/arm/arm-builtins.cc (arm_init_simd_builtin_types): Fix
7881         initialization of arm_simd_types[].eltype.
7882         * config/arm/arm-mve-builtins.def (DEF_MVE_TYPE): Fix scalar
7883         types.
7885 2023-11-20  Jakub Jelinek  <jakub@redhat.com>
7887         * typeclass.h (enum type_class): Add vector_type_class.
7888         * builtins.cc (type_to_class): Return vector_type_class for
7889         VECTOR_TYPE.
7890         * doc/extend.texi (__builtin_classify_type): Mention bit-precise
7891         integer types and vector types.
7893 2023-11-20  Robin Dapp  <rdapp@ventanamicro.com>
7895         PR middle-end/112406
7896         * tree-vect-patterns.cc (vect_recog_mask_conversion_pattern):
7897         Convert masks for conditional operations as well.
7899 2023-11-20  Jakub Jelinek  <jakub@redhat.com>
7901         PR tree-optimization/90693
7902         * tree-ssa-math-opts.cc (match_single_bit_test): Mark POPCOUNT with
7903         result only used in equality comparison against 1 with direct optab
7904         support as .POPCOUNT call with 2 arguments.
7905         * internal-fn.h (expand_POPCOUNT): Declare.
7906         * internal-fn.def (DEF_INTERNAL_INT_EXT_FN): New macro, document it,
7907         undefine at the end.
7908         (POPCOUNT): Use it instead of DEF_INTERNAL_INT_FN.
7909         * internal-fn.cc (DEF_INTERNAL_INT_EXT_FN): Define to nothing before
7910         inclusion to define expanders.
7911         (expand_POPCOUNT): New function.
7913 2023-11-20  Jakub Jelinek  <jakub@redhat.com>
7915         PR tree-optimization/90693
7916         * tree-ssa-math-opts.cc (match_single_bit_test): New function.
7917         (math_opts_dom_walker::after_dom_children): Call it for EQ_EXPR
7918         and NE_EXPR assignments and GIMPLE_CONDs.
7920 2023-11-20  Jakub Jelinek  <jakub@redhat.com>
7922         * internal-fn.def: Document missing DEF_INTERNAL* macros and make sure
7923         they are all undefined at the end.
7924         * internal-fn.cc (lookup_hilo_internal_fn, lookup_evenodd_internal_fn,
7925         widening_fn_p, get_len_internal_fn): Don't undef DEF_INTERNAL_*FN
7926         macros after inclusion of internal-fn.def.
7928 2023-11-20  Haochen Jiang  <haochen.jiang@intel.com>
7930         * common/config/i386/cpuinfo.h (get_available_features):
7931         Add avx10_set and version and detect avx10.1.
7932         (cpu_indicator_init): Handle avx10.1-512.
7933         * common/config/i386/i386-common.cc
7934         (OPTION_MASK_ISA2_AVX10_1_256_SET): New.
7935         (OPTION_MASK_ISA2_AVX10_1_256_SET): Ditto.
7936         (OPTION_MASK_ISA2_AVX10_1_512_UNSET): Ditto.
7937         (OPTION_MASK_ISA2_AVX10_1_512_UNSET): Ditto.
7938         (OPTION_MASK_ISA2_AVX2_UNSET): Modify for AVX10.1.
7939         (ix86_handle_option): Handle -mavx10.1-256 and -mavx10.1-512.
7940         Add indicator for explicit no-avx512 and no-avx10.1 options.
7941         * common/config/i386/i386-cpuinfo.h (enum processor_features):
7942         Add FEATURE_AVX10_1_256 and FEATURE_AVX10_1_512.
7943         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
7944         AVX10_1_256 and AVX10_1_512.
7945         * config/i386/cpuid.h (bit_AVX10): New.
7946         (bit_AVX10_256): Ditto.
7947         (bit_AVX10_512): Ditto.
7948         * config/i386/driver-i386.cc (check_avx10_avx512_features): New.
7949         (host_detect_local_cpu): Do not append "-mno-" options under
7950         specific scenarios to avoid emitting a warning.
7951         * config/i386/i386-isa.def
7952         (EVEX512): Add DEF_PTA(EVEX512).
7953         (AVX10_1_256): Add DEF_PTA(AVX10_1_256).
7954         (AVX10_1_512): Add DEF_PTA(AVX10_1_512).
7955         * config/i386/i386-options.cc (isa2_opts): Add -mavx10.1-256 and
7956         -mavx10.1-512.
7957         (ix86_function_specific_save): Save explicit no indicator.
7958         (ix86_function_specific_restore): Restore explicit no indicator.
7959         (ix86_valid_target_attribute_inner_p): Handle avx10.1, avx10.1-256 and
7960         avx10.1-512.
7961         (ix86_valid_target_attribute_tree): Handle avx512 function
7962         attributes with avx10.1 command line option.
7963         (ix86_option_override_internal): Handle AVX10.1 options.
7964         * config/i386/i386.h: Add PTA_EVEX512 for AVX512 target
7965         machines.
7966         * config/i386/i386.opt: Add variable ix86_no_avx512_explicit and
7967         ix86_no_avx10_1_explicit, option -mavx10.1, -mavx10.1-256 and
7968         -mavx10.1-512.
7969         * doc/extend.texi: Document avx10.1, avx10.1-256 and avx10.1-512.
7970         * doc/invoke.texi: Document -mavx10.1, -mavx10.1-256 and -mavx10.1-512.
7971         * doc/sourcebuild.texi: Document target avx10.1, avx10.1-256
7972         and avx10.1-512.
7974 2023-11-20  liuhongt  <hongtao.liu@intel.com>
7976         PR target/112325
7977         * config/i386/sse.md (reduc_<code>_scal_<mode>): New expander.
7978         (REDUC_ANY_LOGIC_MODE): New iterator.
7979         (REDUC_PLUS_MODE): Extend to VxHI/SI/DImode.
7980         (REDUC_SSE_PLUS_MODE): Ditto.
7982 2023-11-20  xuli  <xuli1@eswincomputing.com>
7984         PR target/112537
7985         * config/riscv/riscv-opts.h (enum riscv_stringop_strategy_enum): Strategy enum.
7986         * config/riscv/riscv-string.cc (riscv_expand_block_move): Disabled based on options.
7987         (expand_block_move): Ditto.
7988         * config/riscv/riscv.opt: Add -mmemcpy-strategy=.
7990 2023-11-20  Lulu Cheng  <chenglulu@loongson.cn>
7992         * config/loongarch/gnu-user.h (MUSL_ABI_SPEC): Modify suffix.
7994 2023-11-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7996         * config/riscv/riscv-v.cc (emit_vlmax_insn_lra): Optimize constant AVL.
7998 2023-11-19  Philipp Tomsich  <philipp.tomsich@vrull.eu>
8000         * config/riscv/riscv-protos.h (extract_base_offset_in_addr): Prototype.
8001         * config/riscv/riscv.cc (riscv_fusion_pairs): New enum.
8002         (riscv_tune_param): Add fusible_ops field.
8003         (riscv_tune_param_rocket_tune_info): Initialize new field.
8004         (riscv_tune_param_sifive_7_tune_info): Likewise.
8005         (thead_c906_tune_info): Likewise.
8006         (generic_oo_tune_info): Likewise.
8007         (optimize_size_tune_info): Likewise.
8008         (riscv_macro_fusion_p): New function.
8009         (riscv_fusion_enabled_p): Likewise.
8010         (riscv_macro_fusion_pair_p): Likewise.
8011         (TARGET_SCHED_MACRO_FUSION_P): Define.
8012         (TARGET_SCHED_MACRO_FUSION_PAIR_P): Likewise.
8013         (extract_base_offset_in_addr): Moved into riscv.cc from...
8014         * config/riscv/thead.cc: Here.
8015         Co-authored-by: Raphael Zinsly <rzinsly@ventanamicro.com>
8016         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
8018 2023-11-19  Jeff Law  <jlaw@ventanamicro.com>
8020         * config/c6x/c6x.md (mvilc): Add mode to UNSPEC source.
8021         * config/mips/mips.md (rdhwr_synci_step_<mode>): Likewise.
8022         * config/riscv/riscv.md (riscv_frcsr, riscv_frflags): Likewise.
8023         * config/s390/s390.md (@split_stack_call<mode>): Likewise.
8024         (@split_stack_cond_call<mode>): Likewise.
8025         * config/sh/sh.md (sp_switch_1): Likewise.
8027 2023-11-19  David Malcolm  <dmalcolm@redhat.com>
8029         * diagnostic.h: Include "rich-location.h".
8030         * edit-context.h (class fixit_hint): New forward decl.
8031         * gcc-rich-location.h: Include "rich-location.h".
8032         * genmatch.cc: Likewise.
8033         * pretty-print.h: Likewise.
8035 2023-11-19  David Malcolm  <dmalcolm@redhat.com>
8037         * Makefile.in (CPPLIB_H): Add libcpp/include/rich-location.h.
8038         * coretypes.h (class rich_location): New forward decl.
8040 2023-11-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8042         * config/riscv/riscv-v.cc (expand_tuple_move): Fix bug.
8044 2023-11-19  David Malcolm  <dmalcolm@redhat.com>
8046         PR analyzer/107573
8047         * doc/invoke.texi: Add -Wanalyzer-undefined-behavior-strtok.
8049 2023-11-18  Xi Ruoyao  <xry111@xry111.site>
8051         * config/loongarch/predicates.md (const_call_insn_operand):
8052         Remove buggy "HAVE_AS_SUPPORT_CALL36" conditions.  Change "1" to
8053         "true" to make the coding style consistent.
8055 2023-11-18  Xi Ruoyao  <xry111@xry111.site>
8057         * config/loongarch/genopts/isa-evolution.in: (lam-bh, lamcas):
8058         Add.
8059         * config/loongarch/loongarch-str.h: Regenerate.
8060         * config/loongarch/loongarch.opt: Regenerate.
8061         * config/loongarch/loongarch-cpucfg-map.h: Regenerate.
8062         * config/loongarch/loongarch-cpu.cc
8063         (ISA_BASE_LA64V110_FEATURES): Include OPTION_MASK_ISA_LAM_BH
8064         and OPTION_MASK_ISA_LAMCAS.
8065         * config/loongarch/sync.md (atomic_add<mode:SHORT>): Use
8066         TARGET_LAM_BH instead of ISA_BASE_IS_LA64V110.  Remove empty
8067         lines from assembly output.
8068         (atomic_exchange<mode>_short): Likewise.
8069         (atomic_exchange<mode:SHORT>): Likewise.
8070         (atomic_fetch_add<mode>_short): Likewise.
8071         (atomic_fetch_add<mode:SHORT>): Likewise.
8072         (atomic_cas_value_strong<mode>_amcas): Use TARGET_LAMCAS instead
8073         of ISA_BASE_IS_LA64V110.
8074         (atomic_compare_and_swap<mode>): Likewise.
8075         (atomic_compare_and_swap<mode:GPR>): Likewise.
8076         (atomic_compare_and_swap<mode:SHORT>): Likewise.
8077         * config/loongarch/loongarch.cc (loongarch_asm_code_end): Dump
8078         status if -mlam-bh and -mlamcas if -fverbose-asm.
8080 2023-11-18  Xi Ruoyao  <xry111@xry111.site>
8082         * config/loongarch/loongarch.cc (loongarch_print_operand): Don't
8083         print dbar 0x700 if TARGET_LD_SEQ_SA.
8084         * config/loongarch/sync.md (atomic_load<mode>): Likewise.
8086 2023-11-18  Xi Ruoyao  <xry111@xry111.site>
8088         * config/loongarch/loongarch.md (DIV): New mode iterator.
8089         (<optab:ANY_DIV><mode:GPR>3): Don't expand if TARGET_DIV32.
8090         (<optab:ANY_DIV>di3_fake): Disable if TARGET_DIV32.
8091         (*<optab:ANY_DIV><mode:GPR>3): Allow SImode if TARGET_DIV32.
8092         (<optab:ANY_DIV>si3_extended): New insn if TARGET_DIV32.
8094 2023-11-18  Xi Ruoyao  <xry111@xry111.site>
8096         * config/loongarch/loongarch-def.h:
8097         (loongarch_isa_base_features): Declare.  Define it in ...
8098         * config/loongarch/loongarch-cpu.cc
8099         (loongarch_isa_base_features): ... here.
8100         (fill_native_cpu_config): If we know the base ISA of the CPU
8101         model from PRID, use it instead of la64 (v1.0).  Check if all
8102         expected features of this base ISA is available, emit a warning
8103         if not.
8104         * config/loongarch/loongarch-opts.cc (config_target_isa): Enable
8105         the features implied by the base ISA if not -march=native.
8107 2023-11-18  Xi Ruoyao  <xry111@xry111.site>
8109         * config/loongarch/genopts/isa-evolution.in: New data file.
8110         * config/loongarch/genopts/genstr.sh: Translate info in
8111         isa-evolution.in when generating loongarch-str.h, loongarch.opt,
8112         and loongarch-cpucfg-map.h.
8113         * config/loongarch/genopts/loongarch.opt.in (isa_evolution):
8114         New variable.
8115         * config/loongarch/t-loongarch: (loongarch-cpucfg-map.h): New
8116         rule.
8117         (loongarch-str.h): Depend on isa-evolution.in.
8118         (loongarch.opt): Depend on isa-evolution.in.
8119         (loongarch-cpu.o): Depend on loongarch-cpucfg-map.h.
8120         * config/loongarch/loongarch-str.h: Regenerate.
8121         * config/loongarch/loongarch-def.h (loongarch_isa):  Add field
8122         for evolution features.  Add helper function to enable features
8123         in this field.
8124         Probe native CPU capability and save the corresponding options
8125         into preset.
8126         * config/loongarch/loongarch-cpu.cc (fill_native_cpu_config):
8127         Probe native CPU capability and save the corresponding options
8128         into preset.
8129         (cache_cpucfg): Simplify with C++11-style for loop.
8130         (cpucfg_useful_idx, N_CPUCFG_WORDS): Move to ...
8131         * config/loongarch/loongarch.cc
8132         (loongarch_option_override_internal): Enable the ISA evolution
8133         feature options implied by -march and not explicitly disabled.
8134         (loongarch_asm_code_end): New function, print ISA information as
8135         comments in the assembly if -fverbose-asm.  It makes easier to
8136         debug things like -march=native.
8137         (TARGET_ASM_CODE_END): Define.
8138         * config/loongarch/loongarch.opt: Regenerate.
8139         * config/loongarch/loongarch-cpucfg-map.h: Generate.
8140         (cpucfg_useful_idx, N_CPUCFG_WORDS) ... here.
8142 2023-11-18  Xi Ruoyao  <xry111@xry111.site>
8144         * config/loongarch/genopts/loongarch-strings:
8145         (STR_ISA_BASE_LA64V110): Add.
8146         * config/loongarch/genopts/loongarch.opt.in:
8147         (ISA_BASE_LA64V110): Add.
8148         * config/loongarch/loongarch-def.c
8149         (loongarch_isa_base_strings): Initialize [ISA_BASE_LA64V110]
8150         to STR_ISA_BASE_LA64V110.
8151         * config/loongarch/loongarch.opt: Regenerate.
8152         * config/loongarch/loongarch-str.h: Regenerate.
8154 2023-11-18  Sebastian Huber  <sebastian.huber@embedded-brains.de>
8156         * doc/invoke.texi (-fprofile-update): Clarify default method.  Document
8157         the atomic method behaviour.
8158         * tree-profile.cc (enum counter_update_method): New.
8159         (counter_update): Likewise.
8160         (gen_counter_update): Use counter_update_method.  Split the
8161         atomic counter update in two 32-bit atomic operations if
8162         necessary.
8163         (tree_profiling): Select counter_update_method.
8165 2023-11-18  Sebastian Huber  <sebastian.huber@embedded-brains.de>
8167         * tree-profile.cc (gen_assign_counter_update): New.
8168         (gen_counter_update): Likewise.
8169         (gimple_gen_edge_profiler): Use gen_counter_update().
8170         (gimple_gen_time_profiler): Likewise.
8172 2023-11-18  Sebastian Huber  <sebastian.huber@embedded-brains.de>
8174         * config/rtems.h (TARGET_HAVE_LIBATOMIC): Define.
8175         * doc/tm.texi: Regenerate.
8176         * doc/tm.texi.in (TARGET_HAVE_LIBATOMIC): Add.
8177         * target.def (have_libatomic): New.
8179 2023-11-18  Sebastian Huber  <sebastian.huber@embedded-brains.de>
8181         Revert:
8182         2023-11-18  Sebastian Huber  <sebastian.huber@embedded-brains.de>
8184         * config/sparc/rtemself.h (SPARC_GCOV_TYPE_SIZE): Define.
8185         * config/sparc/sparc.c (sparc_gcov_type_size): New.
8186         (TARGET_GCOV_TYPE_SIZE): Redefine if SPARC_GCOV_TYPE_SIZE is defined.
8187         * coverage.c (get_gcov_type): Use targetm.gcov_type_size().
8188         * doc/tm.texi (TARGET_GCOV_TYPE_SIZE): Add hook under "Misc".
8189         * doc/tm.texi.in: Regenerate.
8190         * target.def (gcov_type_size): New target hook.
8191         * targhooks.c (default_gcov_type_size): New.
8192         * targhooks.h (default_gcov_type_size): Declare.
8193         * tree-profile.c (gimple_gen_edge_profiler): Use precision of
8194         gcov_type_node.
8195         (gimple_gen_time_profiler): Likewise.
8197 2023-11-18  Kito Cheng  <kito.cheng@sifive.com>
8199         * config/riscv/riscv-target-attr.cc
8200         (riscv_target_attr_parser::parse_arch): Use char[] for
8201         std::unique_ptr to prevent mismatched new delete issue.
8202         (riscv_process_one_target_attr): Ditto.
8203         (riscv_process_target_attr): Ditto.
8205 2023-11-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8207         * config/riscv/vector-iterators.md: Refactor iterators.
8209 2023-11-18  Lulu Cheng  <chenglulu@loongson.cn>
8211         * config/loongarch/sync.md (atomic_load<mode>): New template.
8213 2023-11-18  Lulu Cheng  <chenglulu@loongson.cn>
8215         * config/loongarch/loongarch-def.h: Add comments.
8216         * config/loongarch/loongarch-opts.h (ISA_BASE_IS_LA64V110): Define macro.
8217         * config/loongarch/loongarch.cc (loongarch_memmodel_needs_rel_acq_fence):
8218         Remove redundant code implementations.
8219         * config/loongarch/sync.md (d): Added QI, HI support.
8220         (atomic_add<mode>): New template.
8221         (atomic_exchange<mode>_short): Likewise.
8222         (atomic_cas_value_strong<mode>_amcas): Likewise..
8223         (atomic_fetch_add<mode>_short): Likewise.
8225 2023-11-18  Lulu Cheng  <chenglulu@loongson.cn>
8227         * config.gcc: Support LA664.
8228         * config/loongarch/genopts/loongarch-strings: Likewise.
8229         * config/loongarch/genopts/loongarch.opt.in: Likewise.
8230         * config/loongarch/loongarch-cpu.cc (fill_native_cpu_config): Likewise.
8231         * config/loongarch/loongarch-def.c: Likewise.
8232         * config/loongarch/loongarch-def.h (N_ISA_BASE_TYPES): Likewise.
8233         (ISA_BASE_LA64V110): Define macro.
8234         (N_ARCH_TYPES): Update value.
8235         (N_TUNE_TYPES): Update value.
8236         (CPU_LA664): New macro.
8237         * config/loongarch/loongarch-opts.cc (isa_default_abi): Likewise.
8238         (isa_base_compat_p): Likewise.
8239         * config/loongarch/loongarch-opts.h (TARGET_64BIT): This parameter is enabled
8240         when la_target.isa.base is equal to ISA_BASE_LA64V100 or ISA_BASE_LA64V110.
8241         (TARGET_uARCH_LA664): Define macro.
8242         * config/loongarch/loongarch-str.h (STR_CPU_LA664): Likewise.
8243         * config/loongarch/loongarch.cc (loongarch_cpu_sched_reassociation_width):
8244         Add LA664 support.
8245         * config/loongarch/loongarch.opt: Regenerate.
8247 2023-11-18  Lulu Cheng  <chenglulu@loongson.cn>
8248             Xi Ruoyao  <xry111@xry111.site>
8250         * config.in: Regenerate.
8251         * config/loongarch/loongarch-opts.h (HAVE_AS_SUPPORT_CALL36): Define macro.
8252         * config/loongarch/loongarch.cc (loongarch_legitimize_call_address):
8253         If binutils supports call36, the function call is not split over expand.
8254         * config/loongarch/loongarch.md: Add call36 generation code.
8255         * config/loongarch/predicates.md: Likewise.
8256         * configure: Regenerate.
8257         * configure.ac: Check whether binutils supports call36.
8259 2023-11-18  David Malcolm  <dmalcolm@redhat.com>
8261         PR analyzer/106147
8262         * Makefile.in (ANALYZER_OBJS): Add analyzer/infinite-loop.o.
8263         * doc/invoke.texi: Add -fdump-analyzer-infinite-loop and
8264         -Wanalyzer-infinite-loop.  Add missing CWE link for
8265         -Wanalyzer-infinite-recursion.
8266         * timevar.def (TV_ANALYZER_INFINITE_LOOPS): New.
8268 2023-11-17  Robin Dapp  <rdapp@ventanamicro.com>
8270         PR middle-end/112406
8271         PR middle-end/112552
8272         * tree-vect-loop.cc (vect_transform_reduction): Pass truth
8273         vectype for mask operand.
8275 2023-11-17  Jakub Jelinek  <jakub@redhat.com>
8277         PR c++/107571
8278         * gimplify.cc (expand_FALLTHROUGH_r): Use wi->removed_stmt after
8279         gsi_remove, change the way of passing fallthrough stmt at the end
8280         of sequence to expand_FALLTHROUGH.  Diagnose IFN_FALLTHROUGH
8281         with GF_CALL_NOTHROW flag.
8282         (expand_FALLTHROUGH): Change loc into array of 2 location_t elts,
8283         don't test wi.callback_result, instead check whether first
8284         elt is not UNKNOWN_LOCATION and in that case pedwarn with the
8285         second location.
8286         * gimple-walk.cc (walk_gimple_seq_mod): Clear wi->removed_stmt
8287         after the flag has been used.
8288         * internal-fn.def (FALLTHROUGH): Mention in comment the special
8289         meaning of the TREE_NOTHROW/GF_CALL_NOTHROW flag on the calls.
8291 2023-11-17  Jakub Jelinek  <jakub@redhat.com>
8293         PR tree-optimization/112566
8294         PR tree-optimization/83171
8295         * match.pd (ctz(ext(X)) -> ctz(X), popcount(zext(X)) -> popcount(X),
8296         parity(ext(X)) -> parity(X), ffs(ext(X)) -> ffs(X)): New
8297         simplifications.
8298         ( __builtin_ffs (X) == 0 -> X == 0): Use FFS rather than
8299         BUILT_IN_FFS BUILT_IN_FFSL BUILT_IN_FFSLL BUILT_IN_FFSIMAX.
8301 2023-11-17  Jakub Jelinek  <jakub@redhat.com>
8303         PR tree-optimization/112374
8304         * tree-vect-loop.cc (check_reduction_path): Perform the cond_fn_p
8305         special case only if op_use_stmt == use_stmt, use as_a rather than
8306         dyn_cast in that case.
8308 2023-11-17  Richard Biener  <rguenther@suse.de>
8310         Revert:
8311         2023-11-14  Richard Biener  <rguenther@suse.de>
8313         PR tree-optimization/112281
8314         * tree-loop-distribution.cc (pg_add_dependence_edges):
8315         Preserve stmt order when the innermost loop has exact
8316         overlap.
8318 2023-11-17  Georg-Johann Lay  <avr@gjlay.de>
8320         PR target/53372
8321         * config/avr/avr.cc (avr_asm_named_section) [AVR_SECTION_PROGMEM]:
8322         Only return some .progmem*.data section if the user did not
8323         specify a section attribute.
8324         (avr_section_type_flags) [avr_progmem_p]: Unset SECTION_NOTYPE
8325         in returned section flags.
8327 2023-11-17  Xi Ruoyao  <xry111@xry111.site>
8329         * config/loongarch/lsx.md (copysign<mode>3): Allow operand[2] to
8330         be an reg_or_vector_same_val_operand.  If it's a const vector
8331         with same negative elements, expand the copysign with a bitset
8332         instruction.  Otherwise, force it into an register.
8333         * config/loongarch/lasx.md (copysign<mode>3): Likewise.
8335 2023-11-17  Haochen Gui  <guihaoc@gcc.gnu.org>
8337         PR target/111449
8338         * config/rs6000/vsx.md (*vsx_le_mem_to_mem_mov_ti): New.
8340 2023-11-17  Haochen Gui  <guihaoc@gcc.gnu.org>
8342         PR target/111449
8343         * config/rs6000/altivec.md (cbranchv16qi4): New expand pattern.
8344         * config/rs6000/rs6000.cc (rs6000_generate_compare): Generate
8345         insn sequence for V16QImode equality compare.
8346         * config/rs6000/rs6000.h (MOVE_MAX_PIECES): Define.
8347         (STORE_MAX_PIECES): Define.
8349 2023-11-17  Li Wei  <liwei@loongson.cn>
8351         * config/loongarch/loongarch.h (CLZ_DEFINED_VALUE_AT_ZERO):
8352         Implement.
8353         (CTZ_DEFINED_VALUE_AT_ZERO): Same.
8355 2023-11-17  Richard Biener  <rguenther@suse.de>
8357         * dwarf2out.cc (add_AT_die_ref): Assert we do not add
8358         a self-ref DW_AT_abstract_origin or DW_AT_specification.
8360 2023-11-17  Jiahao Xu  <xujiahao@loongson.cn>
8362         * config/loongarch/loongarch.cc
8363         (loongarch_builtin_vectorization_cost): Adjust.
8365 2023-11-16  Andrew Pinski  <pinskia@gmail.com>
8367         PR rtl-optimization/112483
8368         * simplify-rtx.cc (simplify_binary_operation_1) <case COPYSIGN>:
8369         Call simplify_unary_operation for NEG instead of
8370         simplify_gen_unary.
8372 2023-11-16  Edwin Lu  <ewlu@rivosinc.com>
8374         PR target/111557
8375         * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins): update macro name
8377 2023-11-16  Uros Bizjak  <ubizjak@gmail.com>
8379         PR target/78904
8380         * config/i386/i386.md (*addqi_ext2<mode>_0):
8381         New define_insn_and_split pattern.
8382         (*subqi_ext2<mode>_0): Ditto.
8383         (*<code>qi_ext2<mode>_0): Ditto.
8385 2023-11-16  John David Anglin  <danglin@gcc.gnu.org>
8387         PR rtl-optimization/112415
8388         * config/pa/pa.cc (pa_legitimate_address_p): Allow 14-bit
8389         displacements before reload.  Simplify logic flow.  Revise
8390         comments.
8391         * config/pa/pa.h (TARGET_ELF64): New define.
8392         (INT14_OK_STRICT): Update define and comment.
8393         * config/pa/pa64-linux.h (TARGET_ELF64): Define.
8394         * config/pa/predicates.md (base14_operand): Don't check
8395         alignment of short displacements.
8396         (integer_store_memory_operand): Don't return true when
8397         reload_in_progress is true.  Remove INT_5_BITS check.
8398         (floating_point_store_memory_operand): Don't return true when
8399         reload_in_progress is true.  Use INT14_OK_STRICT to check
8400         whether long displacements are always okay.
8402 2023-11-16  Uros Bizjak  <ubizjak@gmail.com>
8404         PR target/112567
8405         * config/i386/i386.md (*<any_logic:code>qi_ext<mode>_1_slp):
8406         Fix generation of invalid RTX in split pattern.
8408 2023-11-16  David Malcolm  <dmalcolm@redhat.com>
8410         * diagnostic.cc (diagnostic_context::set_option_hooks): Add
8411         "lang_mask" param.
8412         * diagnostic.h (diagnostic_context::option_enabled_p): Update for
8413         move of m_lang_mask.
8414         (diagnostic_context::set_option_hooks): Add "lang_mask" param.
8415         (diagnostic_context::get_lang_mask): New.
8416         (diagnostic_context::m_lang_mask): Move into m_option_callbacks,
8417         thus making private.
8418         * lto-wrapper.cc (main): Update for new lang_mask param of
8419         set_option_hooks.
8420         * toplev.cc (init_asm_output): Use get_lang_mask.
8421         (general_init): Move initialization of global_dc's lang_mask to
8422         new lang_mask param of set_option_hooks.
8424 2023-11-16  Tamar Christina  <tamar.christina@arm.com>
8426         PR tree-optimization/111878
8427         * tree-vect-loop-manip.cc (find_loop_location): Skip edges check if
8428         latch incorrect.
8430 2023-11-16  Kito Cheng  <kito.cheng@sifive.com>
8432         * config.gcc (riscv): Add riscv-target-attr.o.
8433         * config/riscv/riscv-protos.h (riscv_declare_function_size) New.
8434         (riscv_option_valid_attribute_p): New.
8435         (riscv_override_options_internal): New.
8436         (struct riscv_tune_info): New.
8437         (riscv_parse_tune): New.
8438         * config/riscv/riscv-target-attr.cc
8439         (class riscv_target_attr_parser): New.
8440         (struct riscv_attribute_info): New.
8441         (riscv_attributes): New.
8442         (riscv_target_attr_parser::parse_arch): New.
8443         (riscv_target_attr_parser::handle_arch): New.
8444         (riscv_target_attr_parser::handle_cpu): New.
8445         (riscv_target_attr_parser::handle_tune): New.
8446         (riscv_target_attr_parser::update_settings): New.
8447         (riscv_process_one_target_attr): New.
8448         (num_occurences_in_str): New.
8449         (riscv_process_target_attr): New.
8450         (riscv_option_valid_attribute_p): New.
8451         * config/riscv/riscv.cc: Include target-globals.h and
8452         riscv-subset.h.
8453         (struct riscv_tune_info): Move to riscv-protos.h.
8454         (get_tune_str): New.
8455         (riscv_parse_tune): New parameter null_p.
8456         (riscv_declare_function_size): New.
8457         (riscv_option_override): Build target_option_default_node and
8458         target_option_current_node.
8459         (riscv_save_restore_target_globals): New.
8460         (riscv_option_restore): New.
8461         (riscv_previous_fndecl): New.
8462         (riscv_set_current_function): Apply the target attribute.
8463         (TARGET_OPTION_RESTORE): Define.
8464         (TARGET_OPTION_VALID_ATTRIBUTE_P): Ditto.
8465         * config/riscv/riscv.h (SWITCHABLE_TARGET): Define to 1.
8466         (ASM_DECLARE_FUNCTION_SIZE) Define.
8467         * config/riscv/riscv.opt (mtune=): Add Save attribute.
8468         (mcpu=): Ditto.
8469         (mcmodel=): Ditto.
8470         * config/riscv/t-riscv: Add build rule for riscv-target-attr.o
8471         * doc/extend.texi: Add doc for target attribute.
8473 2023-11-16  Kito Cheng  <kito.cheng@sifive.com>
8475         PR target/112478
8476         * config/riscv/riscv.cc (riscv_save_return_addr_reg_p): Check ra
8477         is ever lived.
8479 2023-11-16  liuhongt  <hongtao.liu@intel.com>
8481         PR target/112532
8482         * config/i386/mmx.md (*vec_dup<mode>): Extend for V4HI and
8483         V2HI.
8485 2023-11-16  Jakub Jelinek  <jakub@redhat.com>
8487         PR target/112526
8488         * config/i386/i386.md
8489         (mov imm,%rax; mov %rdi,%rdx; mulx %rax -> mov imm,%rdx; mulx %rdi):
8490         Verify in define_peephole2 that operands[2] dies or is overwritten
8491         at the end of multiplication.
8493 2023-11-16  Jakub Jelinek  <jakub@redhat.com>
8495         PR tree-optimization/112536
8496         * tree-vect-slp.cc (arg0_map): New variable.
8497         (vect_get_operand_map): For IFN_CLZ or IFN_CTZ, return arg0_map.
8499 2023-11-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8501         PR middle-end/112554
8502         * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
8503         Clear SELECT_VL_P for non-partial vectorization.
8505 2023-11-16  Hongyu Wang  <hongyu.wang@intel.com>
8507         * config/i386/sse.md (vec_extract_hi_<mode>): Add noavx512vl
8508         alternative with attr addr gpr16 and "jm" constraint.
8509         (vec_extract_hi_<mode>): Likewise for SF vector modes.
8510         (@vec_extract_hi_<mode>): Likewise.
8511         (*vec_extractv2ti): Likewise.
8512         (vec_set_hi_<mode><mask_name>): Likewise.
8513         * config/i386/mmx.md (@sse4_1_insertps_<mode>): Correct gpr16 attr for
8514         each alternative.
8516 2023-11-15  Uros Bizjak  <ubizjak@gmail.com>
8518         PR target/78904
8519         * config/i386/i386.md (*movstrictqi_ext<mode>_1): New insn pattern.
8520         (*addqi_ext<mode>_2_slp): New define_insn_and_split pattern.
8521         (*subqi_ext<mode>_2_slp): Ditto.
8522         (*<any_logic:code>qi_ext<mode>_2_slp): Ditto.
8524 2023-11-15  Patrick O'Neill  <patrick@rivosinc.com>
8526         * common/config/riscv/riscv-common.cc
8527         (riscv_subset_list::parse_std_ext): Emit an error and skip to
8528         the next extension when a non-canonical ordering is detected.
8530 2023-11-15  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
8532         * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text):
8533         Revert using the macro CAN_HAVE_LOCATION_P.
8535 2023-11-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8537         PR target/112447
8538         * config/riscv/riscv-vsetvl.cc (pre_vsetvl::emit_vsetvl): Insert
8539         local vsetvl info before LCM suggested one.
8540         Tested-by: Patrick O'Neill <patrick@rivosinc.com> # pre-commit-CI #679
8541         Co-developed-by: Vineet Gupta <vineetg@rivosinc.com>
8543 2023-11-15  Vineet Gupta  <vineetg@rivosinc.com>
8545         * config/riscv/riscv.cc (riscv_sign_extend_if_not_subreg_prom): New.
8546         * (riscv_extend_comparands): Call New function on operands.
8548 2023-11-15  Uros Bizjak  <ubizjak@gmail.com>
8550         * config/i386/i386.md (*addqi_ext<mode>_1_slp):
8551         Add "&& " before "reload_completed" in split condition.
8552         (*subqi_ext<mode>_1_slp): Ditto.
8553         (*<any_logic:code>qi_ext<mode>_1_slp): Ditto.
8555 2023-11-15  Uros Bizjak  <ubizjak@gmail.com>
8557         PR target/112540
8558         * config/i386/i386.md (*addqi_ext<mode>_1_slp):
8559         Correct operand numbers in split pattern.  Replace !Q constraint
8560         of operand 1 with !qm.  Add insn constrain.
8561         (*subqi_ext<mode>_1_slp): Ditto.
8562         (*<any_logic:code>qi_ext<mode>_1_slp): Ditto.
8564 2023-11-15  Thomas Schwinge  <thomas@codesourcery.com>
8566         * doc/extend.texi (Nvidia PTX Built-in Functions): Fix
8567         copy'n'paste-o in '__builtin_nvptx_brev' description.
8569 2023-11-15  Roger Sayle  <roger@nextmovesoftware.com>
8570             Thomas Schwinge  <thomas@codesourcery.com>
8572         * config/nvptx/nvptx.md (UNSPEC_BITREV): Delete.
8573         (bitrev<mode>2): Represent using bitreverse.
8575 2023-11-15  Andrew Stubbs  <ams@codesourcery.com>
8576             Andrew Jenner   <andrew@codesourcery.com>
8578         * config/gcn/constraints.md: Add "a" AVGPR constraint.
8579         * config/gcn/gcn-valu.md (*mov<mode>): Add AVGPR alternatives.
8580         (*mov<mode>_4reg): Likewise.
8581         (@mov<mode>_sgprbase): Likewise.
8582         (gather<mode>_insn_1offset<exec>): Likewise.
8583         (gather<mode>_insn_1offset_ds<exec>): Likewise.
8584         (gather<mode>_insn_2offsets<exec>): Likewise.
8585         (scatter<mode>_expr<exec_scatter>): Likewise.
8586         (scatter<mode>_insn_1offset_ds<exec_scatter>): Likewise.
8587         (scatter<mode>_insn_2offsets<exec_scatter>): Likewise.
8588         * config/gcn/gcn.cc (MAX_NORMAL_AVGPR_COUNT): Define.
8589         (gcn_class_max_nregs): Handle AVGPR_REGS and ALL_VGPR_REGS.
8590         (gcn_hard_regno_mode_ok): Likewise.
8591         (gcn_regno_reg_class): Likewise.
8592         (gcn_spill_class): Allow spilling to AVGPRs on TARGET_CDNA1_PLUS.
8593         (gcn_sgpr_move_p): Handle AVGPRs.
8594         (gcn_secondary_reload): Reload AVGPRs via VGPRs.
8595         (gcn_conditional_register_usage): Handle AVGPRs.
8596         (gcn_vgpr_equivalent_register_operand): New function.
8597         (gcn_valid_move_p): Check for validity of AVGPR moves.
8598         (gcn_compute_frame_offsets): Handle AVGPRs.
8599         (gcn_memory_move_cost): Likewise.
8600         (gcn_register_move_cost): Likewise.
8601         (gcn_vmem_insn_p): Handle TYPE_VOP3P_MAI.
8602         (gcn_md_reorg): Handle AVGPRs.
8603         (gcn_hsa_declare_function_name): Likewise.
8604         (print_reg): Likewise.
8605         (gcn_dwarf_register_number): Likewise.
8606         * config/gcn/gcn.h (FIRST_AVGPR_REG): Define.
8607         (AVGPR_REGNO): Define.
8608         (LAST_AVGPR_REG): Define.
8609         (SOFT_ARG_REG): Update.
8610         (FRAME_POINTER_REGNUM): Update.
8611         (DWARF_LINK_REGISTER): Update.
8612         (FIRST_PSEUDO_REGISTER): Update.
8613         (AVGPR_REGNO_P): Define.
8614         (enum reg_class): Add AVGPR_REGS and ALL_VGPR_REGS.
8615         (REG_CLASS_CONTENTS): Add new register classes and add entries for
8616         AVGPRs to all classes.
8617         (REGISTER_NAMES): Add AVGPRs.
8618         * config/gcn/gcn.md (FIRST_AVGPR_REG, LAST_AVGPR_REG): Define.
8619         (AP_REGNUM, FP_REGNUM): Update.
8620         (define_attr "type"): Add vop3p_mai.
8621         (define_attr "unit"): Handle vop3p_mai.
8622         (define_attr "gcn_version"): Add "cdna2".
8623         (define_attr "enabled"): Handle cdna2.
8624         (*mov<mode>_insn): Add AVGPR alternatives.
8625         (*movti_insn): Likewise.
8626         * config/gcn/mkoffload.cc (isa_has_combined_avgprs): New.
8627         (process_asm): Process avgpr_count.
8628         * config/gcn/predicates.md (gcn_avgpr_register_operand): New.
8629         (gcn_avgpr_hard_register_operand): New.
8630         * doc/md.texi: Document the "a" constraint.
8632 2023-11-15  Andrew Stubbs  <ams@codesourcery.com>
8634         * config/gcn/gcn-valu.md (mov<mode>_sgprbase): Add @ modifier.
8635         (reload_in<mode>): Delete.
8636         (reload_out<mode>): Delete.
8637         * config/gcn/gcn.cc (CODE_FOR): Delete.
8638         (get_code_for_##PREFIX##vN##SUFFIX): Delete.
8639         (CODE_FOR_OP): Delete.
8640         (get_code_for_##PREFIX): Delete.
8641         (gcn_secondary_reload): Replace "get_code_for" with "code_for".
8643 2023-11-15  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
8645         * config/s390/t-s390: Generate s390-gen-builtins.h without
8646         linemarkers.
8648 2023-11-15  Richard Biener  <rguenther@suse.de>
8650         PR tree-optimization/112282
8651         * tree-if-conv.cc (ifcvt_hoist_invariants): Only hoist from
8652         the loop header.
8654 2023-11-15  Richard Biener  <rguenther@suse.de>
8656         * tree-vect-slp.cc (vect_slp_region): Also clear visited flag when
8657         we skipped an instance due to -fdbg-cnt.
8659 2023-11-15  Xi Ruoyao  <xry111@xry111.site>
8661         * config/loongarch/loongarch.cc
8662         (loongarch_memmodel_needs_release_fence): Remove.
8663         (loongarch_cas_failure_memorder_needs_acquire): New static
8664         function.
8665         (loongarch_print_operand): Redefine 'G' for the barrier on CAS
8666         failure.
8667         * config/loongarch/sync.md (atomic_cas_value_strong<mode>):
8668         Remove the redundant barrier before the LL instruction, and
8669         emit an acquire barrier on failure if needed by
8670         failure_memorder.
8671         (atomic_cas_value_cmp_and_7_<mode>): Likewise.
8672         (atomic_cas_value_add_7_<mode>): Remove the unnecessary barrier
8673         before the LL instruction.
8674         (atomic_cas_value_sub_7_<mode>): Likewise.
8675         (atomic_cas_value_and_7_<mode>): Likewise.
8676         (atomic_cas_value_xor_7_<mode>): Likewise.
8677         (atomic_cas_value_or_7_<mode>): Likewise.
8678         (atomic_cas_value_nand_7_<mode>): Likewise.
8679         (atomic_cas_value_exchange_7_<mode>): Likewise.
8681 2023-11-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8683         * config/riscv/riscv-v.cc (expand_vector_init_trailing_same_elem): New function.
8684         (expand_vec_init): Add trailing optimization.
8686 2023-11-15  Pan Li  <pan2.li@intel.com>
8688         * config/riscv/riscv-v.cc (rvv_builder::get_merge_scalar_mask):
8689         Add inner_mode mask arg for mask int mode.
8690         (get_repeating_sequence_dup_machine_mode): Add mask_bit_mode arg
8691         to get the good enough vector int mode on precision.
8692         (expand_vector_init_merge_repeating_sequence): Pass required args
8693         to above func.
8695 2023-11-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8697         PR target/112535
8698         * config/riscv/riscv.cc (riscv_legitimate_address_p): Disallow RVV modes base address.
8700 2023-11-15  David Malcolm  <dmalcolm@redhat.com>
8702         * json.cc (selftest::assert_print_eq): Add "loc" param and use
8703         ASSERT_STREQ_AT.
8704         (ASSERT_PRINT_EQ): New macro.
8705         (selftest::test_writing_objects): Use ASSERT_PRINT_EQ to capture
8706         source location of assertion.
8707         (selftest::test_writing_arrays): Likewise.
8708         (selftest::test_writing_float_numbers): Likewise.
8709         (selftest::test_writing_integer_numbers): Likewise.
8710         (selftest::test_writing_strings): Likewise.
8711         (selftest::test_writing_literals): Likewise.
8713 2023-11-14  David Malcolm  <dmalcolm@redhat.com>
8715         PR analyzer/103533
8716         * doc/invoke.texi (Static Analyzer Options): Add the six
8717         -Wanalyzer-tainted-* warnings.  Update documentation of each
8718         warning to reflect removed requirement to use
8719         -fanalyzer-checker=taint.  Remove discussion of
8720         -fanalyzer-checker=taint.
8722 2023-11-14  David Malcolm  <dmalcolm@redhat.com>
8724         * diagnostic-format-json.cc
8725         (json_output_format::on_end_diagnostic): Update calls to m_context
8726         callbacks to use member functions; tighten up scopes.
8727         * diagnostic-format-sarif.cc (sarif_builder::make_result_object):
8728         Likewise.
8729         (sarif_builder::make_reporting_descriptor_object_for_warning):
8730         Likewise.
8731         * diagnostic.cc (diagnostic_context::initialize): Update for
8732         callbacks being moved into m_option_callbacks and being renamed.
8733         (diagnostic_context::set_option_hooks): New.
8734         (diagnostic_option_classifier::classify_diagnostic): Update call
8735         to global_dc->m_option_enabled to use option_enabled_p.
8736         (diagnostic_context::print_option_information): Update calls to
8737         m_context callbacks to use member functions; tighten up scopes.
8738         (diagnostic_context::diagnostic_enabled): Likewise.
8739         * diagnostic.h (diagnostic_option_enabled_cb): New typedef.
8740         (diagnostic_make_option_name_cb): New typedef.
8741         (diagnostic_make_option_url_cb): New typedef.
8742         (diagnostic_context::option_enabled_p): New.
8743         (diagnostic_context::make_option_name): New.
8744         (diagnostic_context::make_option_url): New.
8745         (diagnostic_context::set_option_hooks): New decl.
8746         (diagnostic_context::m_option_enabled): Rename to
8747         m_option_enabled_cb and move within m_option_callbacks, using
8748         typedef.
8749         (diagnostic_context::m_option_state): Move within
8750         m_option_callbacks.
8751         (diagnostic_context::m_option_name): Rename to
8752         m_make_option_name_cb and move within m_option_callbacks, using
8753         typedef.
8754         (diagnostic_context::m_get_option_url): Likewise, renaming to
8755         m_make_option_url_cb.
8756         * lto-wrapper.cc (print_lto_docs_link): Update call to m_context
8757         callback to use member function.
8758         (main): Use diagnostic_context::set_option_hooks.
8759         * opts-diagnostic.h (option_name): Make context param const.
8760         (get_option_url): Likewise.
8761         * opts.cc (option_name): Likewise.
8762         (get_option_url): Likewise.
8763         * toplev.cc (general_init): Use
8764         diagnostic_context::set_option_hooks.
8766 2023-11-14  David Malcolm  <dmalcolm@redhat.com>
8768         * selftest-diagnostic.cc
8769         (test_diagnostic_context::test_diagnostic_context): Use
8770         diagnostic_start_span.
8771         * tree-diagnostic-path.cc (struct event_range): Likewise.
8773 2023-11-14  David Malcolm  <dmalcolm@redhat.com>
8775         * diagnostic-show-locus.cc (diagnostic_context::show_locus):
8776         Update for renaming of text callbacks fields.
8777         * diagnostic.cc (diagnostic_context::initialize): Likewise.
8778         * diagnostic.h (class diagnostic_context): Add "friend" for
8779         accessors to m_text_callbacks.
8780         (diagnostic_context::m_text_callbacks): Make private, and add an
8781         "m_" prefix to field names.
8782         (diagnostic_starter): Convert from macro to inline function.
8783         (diagnostic_start_span): New.
8784         (diagnostic_finalizer): Convert from macro to inline function.
8786 2023-11-14  David Malcolm  <dmalcolm@redhat.com>
8788         * diagnostic.h (diagnostic_ready_p): Convert from macro to inline
8789         function.
8791 2023-11-14  Uros Bizjak  <ubizjak@gmail.com>
8793         PR target/78904
8794         * config/i386/i386.md (*addqi_ext<mode>_1_slp):
8795         New define_insn_and_split pattern.
8796         (*subqi_ext<mode>_1_slp): Ditto.
8797         (*<any_logic:code>qi_ext<mode>_1_slp): Ditto.
8799 2023-11-14  Andrew Stubbs  <ams@codesourcery.com>
8801         PR target/112481
8802         * expr.cc (store_constructor): Use OPTAB_WIDEN for mask adjustment.
8804 2023-11-14  David Malcolm  <dmalcolm@redhat.com>
8806         * diagnostic-format-sarif.cc (sarif_builder::get_sarif_column):
8807         Use m_context's file_cache.
8808         (sarif_builder::maybe_make_artifact_content_object): Likewise.
8809         (sarif_builder::get_source_lines): Likewise.
8810         * diagnostic-show-locus.cc
8811         (exploc_with_display_col::exploc_with_display_col): Add file_cache
8812         param.
8813         (layout::m_file_cache): New field.
8814         (make_range): Add file_cache param.
8815         (selftest::test_layout_range_for_single_point): Create and use a
8816         temporary file_cache.
8817         (selftest::test_layout_range_for_single_line): Likewise.
8818         (selftest::test_layout_range_for_multiple_lines): Likewise.
8819         (layout::layout): Initialize m_file_cache from the context and use it.
8820         (layout::maybe_add_location_range): Use m_file_cache.
8821         (layout::calculate_x_offset_display): Likewise.
8822         (get_affected_range): Add file_cache param.
8823         (get_printed_columns): Likewise.
8824         (line_corrections::line_corrections): Likewwise.
8825         (line_corrections::m_file_cache): New field.
8826         (source_line::source_line): Add file_cache param.
8827         (line_corrections::add_hint): Use m_file_cache.
8828         (layout::print_trailing_fixits): Likewise.
8829         (layout::print_line): Likewise.
8830         (selftest::test_layout_x_offset_display_utf8): Create and use a
8831         temporary file_cache.
8832         (selftest::test_layout_x_offset_display_tab): Likewise.
8833         (selftest::test_diagnostic_show_locus_one_liner_utf8): Likewise.
8834         (selftest::test_add_location_if_nearby): Pass global_dc's
8835         file_cache to temp_source_file ctor.
8836         (selftest::test_overlapped_fixit_printing): Create and use a
8837         temporary file_cache.
8838         (selftest::test_overlapped_fixit_printing_utf8): Likewise.
8839         (selftest::test_overlapped_fixit_printing_2): Use dc's file_cache.
8840         * diagnostic.cc (diagnostic_context::initialize): Always create a
8841         file_cache.
8842         (diagnostic_context::initialize_input_context): Assume
8843         m_file_cache has already been created.
8844         (diagnostic_context::create_edit_context): Pass m_file_cache to
8845         edit_context.
8846         (convert_column_unit): Add file_cache param.
8847         (diagnostic_context::converted_column): Use context's file_cache.
8848         (print_parseable_fixits): Add file_cache param.
8849         (diagnostic_context::report_diagnostic): Use context's file_cache.
8850         (selftest::test_print_parseable_fixits_none): Create and use a
8851         temporary file_cache.
8852         (selftest::test_print_parseable_fixits_insert): Likewise.
8853         (selftest::test_print_parseable_fixits_remove): Likewise.
8854         (selftest::test_print_parseable_fixits_replace): Likewise.
8855         (selftest::test_print_parseable_fixits_bytes_vs_display_columns):
8856         Likewise.
8857         * diagnostic.h (diagnostic_context::file_cache_init): Delete.
8858         (diagnostic_context::get_file_cache): Convert return type from
8859         pointer to reference.
8860         * edit-context.cc (edited_file::get_file_cache): New.
8861         (edited_file::m_edit_context): New.
8862         (edit_context::edit_context): Add file_cache param.
8863         (edit_context::get_or_insert_file): Pass this to edited_file's
8864         ctor.
8865         (edited_file::edited_file): Add edit_context param.
8866         (edited_file::print_content): Use get_file_cache.
8867         (edited_file::print_diff_hunk): Likewise.
8868         (edited_file::print_run_of_changed_lines): Likewise.
8869         (edited_file::get_or_insert_line): Likewise.
8870         (edited_file::get_num_lines): Likewise.
8871         (edited_line::edited_line): Pass in file_cache and use it.
8872         (selftest::test_get_content): Create and use a
8873         temporary file_cache.
8874         (selftest::test_applying_fixits_insert_before): Likewise.
8875         (selftest::test_applying_fixits_insert_after): Likewise.
8876         (selftest::test_applying_fixits_insert_after_at_line_end):
8877         Likewise.
8878         (selftest::test_applying_fixits_insert_after_failure): Likewise.
8879         (selftest::test_applying_fixits_insert_containing_newline):
8880         Likewise.
8881         (selftest::test_applying_fixits_growing_replace): Likewise.
8882         (selftest::test_applying_fixits_shrinking_replace): Likewise.
8883         (selftest::test_applying_fixits_replace_containing_newline):
8884         Likewise.
8885         (selftest::test_applying_fixits_remove): Likewise.
8886         (selftest::test_applying_fixits_multiple): Likewise.
8887         (selftest::test_applying_fixits_multiple_lines): Likewise.
8888         (selftest::test_applying_fixits_modernize_named_init): Likewise.
8889         (selftest::test_applying_fixits_modernize_named_init): Likewise.
8890         (selftest::test_applying_fixits_unreadable_file): Likewise.
8891         (selftest::test_applying_fixits_line_out_of_range): Likewise.
8892         (selftest::test_applying_fixits_column_validation): Likewise.
8893         (selftest::test_applying_fixits_column_validation): Likewise.
8894         (selftest::test_applying_fixits_column_validation): Likewise.
8895         (selftest::test_applying_fixits_column_validation): Likewise.
8896         * edit-context.h (edit_context::edit_context): Add file_cache
8897         param.
8898         (edit_context::get_file_cache): New.
8899         (edit_context::m_file_cache): New.
8900         * final.cc: Include "diagnostic.h".
8901         (asm_show_source): Use global_dc's file_cache.
8902         * gcc-rich-location.cc (blank_line_before_p): Add file_cache
8903         param.
8904         (use_new_line): Likewise.
8905         (gcc_rich_location::add_fixit_insert_formatted): Use global dc's
8906         file_cache.
8907         * input.cc (diagnostic_file_cache_init): Delete.
8908         (diagnostic_context::file_cache_init): Delete.
8909         (diagnostics_file_cache_forcibly_evict_file): Delete.
8910         (file_cache::missing_trailing_newline_p): New.
8911         (file_cache::evicted_cache_tab_entry): Don't call
8912         diagnostic_file_cache_init.
8913         (location_get_source_line): Delete.
8914         (get_source_text_between): Add file_cache param.
8915         (get_source_file_content): Delete.
8916         (location_missing_trailing_newline): Delete.
8917         (location_compute_display_column): Add file_cache param.
8918         (dump_location_info): Create and use temporary file_cache.
8919         (get_substring_ranges_for_loc): Add file_cache param.
8920         (get_location_within_string): Likewise.
8921         (get_source_range_for_char): Likewise.
8922         (get_num_source_ranges_for_substring): Likewise.
8923         (selftest::test_reading_source_line): Create and use temporary
8924         file_cache.
8925         (selftest::lexer_test::m_file_cache): New field.
8926         (selftest::assert_char_at_range): Use test.m_file_cache.
8927         (selftest::assert_num_substring_ranges): Likewise.
8928         (selftest::assert_has_no_substring_ranges): Likewise.
8929         (selftest::test_lexer_string_locations_concatenation_2): Likewise.
8930         * input.h (class file_cache): New forward decl.
8931         (location_compute_display_column): Add file_cache param.
8932         (location_get_source_line): Delete.
8933         (get_source_text_between): Add file_cache param.
8934         (get_source_file_content): Delete.
8935         (location_missing_trailing_newline): Delete.
8936         (file_cache::missing_trailing_newline_p): New decl.
8937         (diagnostics_file_cache_forcibly_evict_file): Delete.
8938         * selftest.cc (named_temp_file::named_temp_file): Add file_cache
8939         param.
8940         (named_temp_file::~named_temp_file): Optionally evict the file
8941         from the given file_cache.
8942         (temp_source_file::temp_source_file): Add file_cache param.
8943         * selftest.h (class file_cache): New forward decl.
8944         (named_temp_file::named_temp_file): Add file_cache param.
8945         (named_temp_file::m_file_cache): New field.
8946         (temp_source_file::temp_source_file): Add file_cache param.
8947         * substring-locations.h (get_location_within_string): Add
8948         file_cache param.
8950 2023-11-14  David Malcolm  <dmalcolm@redhat.com>
8952         * diagnostic-format-json.cc: Use type-specific "set_*" functions
8953         of json::object to avoid naked new of json value subclasses.
8954         * diagnostic-format-sarif.cc: Likewise.
8955         * gcov.cc: Likewise.
8956         * json.cc (object::set_string): New.
8957         (object::set_integer): New.
8958         (object::set_float): New.
8959         (object::set_bool): New.
8960         (selftest::test_writing_objects): Use object::set_string.
8961         * json.h (object::set_string): New decl.
8962         (object::set_integer): New decl.
8963         (object::set_float): New decl.
8964         (object::set_bool): New decl.
8965         * optinfo-emit-json.cc: Use type-specific "set_*" functions of
8966         json::object to avoid naked new of json value subclasses.
8967         * timevar.cc: Likewise.
8968         * tree-diagnostic-path.cc: Likewise.
8970 2023-11-14  Andrew MacLeod  <amacleod@redhat.com>
8972         PR tree-optimization/112509
8973         * tree-vrp.cc (find_case_label_range): Create range from case labels.
8975 2023-11-14  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
8977         * config/s390/s390-builtin-types.def: Add/remove types.
8978         * config/s390/s390-builtins.def (s390_vec_scatter_element_flt):
8979         The type for the offset should be UV4SI instead of V4SF.
8981 2023-11-14  Saurabh Jha  <saurabh.jha@arm.com>
8983         PR target/112337
8984         * config/arm/arm.cc (mve_vector_mem_operand): Add a REG_P check for INC
8985         and DEC operations.
8987 2023-11-14  Richard Biener  <rguenther@suse.de>
8989         PR tree-optimization/111233
8990         PR tree-optimization/111652
8991         PR tree-optimization/111727
8992         PR tree-optimization/111838
8993         PR tree-optimization/112113
8994         * tree-ssa-loop-split.cc (patch_loop_exit): Get the new
8995         guard code instead of the old guard stmt.
8996         (split_loop): Adjust.
8998 2023-11-14  Richard Biener  <rguenther@suse.de>
9000         * tree-loop-distribution.cc (loop_distribution::data_dep_in_cycle_p):
9001         Consider all loops in the nest when looking for
9002         lambda_vector_zerop.
9004 2023-11-14  Richard Biener  <rguenther@suse.de>
9006         PR tree-optimization/112281
9007         * tree-loop-distribution.cc (pg_add_dependence_edges):
9008         Preserve stmt order when the innermost loop has exact
9009         overlap.
9011 2023-11-14  Jakub Jelinek  <jakub@redhat.com>
9013         PR target/112523
9014         PR ada/112514
9015         * config/i386/i386.md (<insn><dwi>3_doubleword_lowpart): Move
9016         operands[1] aka low part of input rather than operands[3] aka high
9017         part of input to output if not the same register.
9019 2023-11-14  Andreas Krebbel  <krebbel@linux.ibm.com>
9021         * config.gcc: Add s390-gen-builtins.h to target_gtfiles.
9022         * config/s390/s390-builtins.h (s390_builtin_types)
9023         (s390_builtin_fn_types, s390_builtin_decls): Add GTY marker.
9024         * config/s390/t-s390 (EXTRA_GTYPE_DEPS): Add s390-gen-builtins.h.
9025         Add build rule for s390-gen-builtins.h.
9027 2023-11-14  Andreas Krebbel  <krebbel@linux.ibm.com>
9029         * config/s390/s390-c.cc (s390_fn_types_compatible): Add a check
9030         for error_mark_node.
9032 2023-11-14  Jakub Jelinek  <jakub@redhat.com>
9034         PR c/111309
9035         * builtins.def (BUILT_IN_CLZG, BUILT_IN_CTZG, BUILT_IN_CLRSBG,
9036         BUILT_IN_FFSG, BUILT_IN_PARITYG, BUILT_IN_POPCOUNTG): New
9037         builtins.
9038         * builtins.cc (fold_builtin_bit_query): New function.
9039         (fold_builtin_1): Use it for
9040         BUILT_IN_{CLZ,CTZ,CLRSB,FFS,PARITY,POPCOUNT}G.
9041         (fold_builtin_2): Use it for BUILT_IN_{CLZ,CTZ}G.
9042         * fold-const-call.cc: Fix comment typo on tm.h inclusion.
9043         (fold_const_call_ss): Handle
9044         CFN_BUILT_IN_{CLZ,CTZ,CLRSB,FFS,PARITY,POPCOUNT}G.
9045         (fold_const_call_sss): New function.
9046         (fold_const_call_1): Call it for 2 argument functions returning
9047         scalar when passed 2 INTEGER_CSTs.
9048         * genmatch.cc (cmp_operand): For function calls also compare
9049         number of arguments.
9050         (fns_cmp): New function.
9051         (dt_node::gen_kids): Sort fns and generic_fns.
9052         (dt_node::gen_kids_1): Handle fns with the same id but different
9053         number of arguments.
9054         * match.pd (CLZ simplifications): Drop checks for defined behavior
9055         at zero.  Add variant of simplifications for IFN_CLZ with 2 arguments.
9056         (CTZ simplifications): Drop checks for defined behavior at zero,
9057         don't optimize precisions above MAX_FIXED_MODE_SIZE.  Add variant of
9058         simplifications for IFN_CTZ with 2 arguments.
9059         (a != 0 ? CLZ(a) : CST -> .CLZ(a)): Use TREE_TYPE (@3) instead of
9060         type, add BITINT_TYPE handling, create 2 argument IFN_CLZ rather than
9061         one argument.  Add variant for matching CLZ with 2 arguments.
9062         (a != 0 ? CTZ(a) : CST -> .CTZ(a)): Similarly.
9063         * gimple-lower-bitint.cc (bitint_large_huge::lower_bit_query): New
9064         method.
9065         (bitint_large_huge::lower_call): Use it for IFN_{CLZ,CTZ,CLRSB,FFS}
9066         and IFN_{PARITY,POPCOUNT} calls.
9067         * gimple-range-op.cc (cfn_clz::fold_range): Don't check
9068         CLZ_DEFINED_VALUE_AT_ZERO for m_gimple_call_internal_p, instead
9069         assume defined value at zero if the call has 2 arguments and use
9070         second argument value for that case.
9071         (cfn_ctz::fold_range): Similarly.
9072         (gimple_range_op_handler::maybe_builtin_call): Use op_cfn_clz_internal
9073         or op_cfn_ctz_internal only if internal fn call has 2 arguments and
9074         set m_op2 in that case.
9075         * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern,
9076         vect_recog_popcount_clz_ctz_ffs_pattern): For value defined at zero
9077         use second argument of calls if present, otherwise assume UB at zero,
9078         create 2 argument .CLZ/.CTZ calls if needed.
9079         * tree-vect-stmts.cc (vectorizable_call): Handle 2 argument .CLZ/.CTZ
9080         calls.
9081         * tree-ssa-loop-niter.cc (build_cltz_expr): Create 2 argument
9082         .CLZ/.CTZ calls if needed.
9083         * tree-ssa-forwprop.cc (simplify_count_trailing_zeroes): Create 2
9084         argument .CTZ calls if needed.
9085         * tree-ssa-phiopt.cc (cond_removal_in_builtin_zero_pattern): Handle
9086         2 argument .CLZ/.CTZ calls, handle BITINT_TYPE, create 2 argument
9087         .CLZ/.CTZ calls.
9088         * doc/extend.texi (__builtin_clzg, __builtin_ctzg, __builtin_clrsbg,
9089         __builtin_ffsg, __builtin_parityg, __builtin_popcountg): Document.
9091 2023-11-14  Xi Ruoyao  <xry111@xry111.site>
9093         PR target/112330
9094         * config/loongarch/genopts/loongarch.opt.in: Add
9095         -m[no]-pass-relax-to-as.  Change the default of -m[no]-relax to
9096         account conditional branch relaxation support status.
9097         * config/loongarch/loongarch.opt: Regenerate.
9098         * configure.ac (gcc_cv_as_loongarch_cond_branch_relax): Check if
9099         the assembler supports conditional branch relaxation.
9100         * configure: Regenerate.
9101         * config.in: Regenerate.  Note that there are some unrelated
9102         changes introduced by r14-5424 (which does not contain a
9103         config.in regeneration).
9104         * config/loongarch/loongarch-opts.h
9105         (HAVE_AS_COND_BRANCH_RELAXATION): Define to 0 if not defined.
9106         * config/loongarch/loongarch-driver.h (ASM_MRELAX_DEFAULT):
9107         Define.
9108         (ASM_MRELAX_SPEC): Define.
9109         (ASM_SPEC): Use ASM_MRELAX_SPEC instead of "%{mno-relax}".
9110         * config/loongarch/loongarch.cc: Take the setting of
9111         -m[no-]relax into account when determining the default of
9112         -mexplicit-relocs=.
9113         * doc/invoke.texi: Document -m[no-]relax and
9114         -m[no-]pass-mrelax-to-as for LoongArch.  Update the default
9115         value of -mexplicit-relocs=.
9117 2023-11-14  liuhongt  <hongtao.liu@intel.com>
9119         PR tree-optimization/112496
9120         * tree-vect-loop.cc (vectorizable_nonlinear_induction): Return
9121         false when !tree_nop_conversion_p (TREE_TYPE (vectype),
9122         TREE_TYPE (init_expr)).
9124 2023-11-14  Xi Ruoyao  <xry111@xry111.site>
9126         * config/loongarch/sync.md (mem_thread_fence): Remove redundant
9127         check.
9128         (mem_thread_fence_1): Emit finer-grained DBAR hints for
9129         different memory models, instead of 0.
9131 2023-11-14  Jakub Jelinek  <jakub@redhat.com>
9133         PR middle-end/112511
9134         * tree.cc (type_contains_placeholder_1): Handle BITINT_TYPE like
9135         INTEGER_TYPE.
9137 2023-11-14  Jakub Jelinek  <jakub@redhat.com>
9138             Hu, Lin1  <lin1.hu@intel.com>
9140         PR target/112435
9141         * config/i386/sse.md (avx512vl_shuf_<shuffletype>32x4_1<mask_name>,
9142         <mask_codefor>avx512dq_shuf_<shuffletype>64x2_1<mask_name>): Add
9143         alternative with just x instead of v constraints and xjm instead of
9144         vm and use vblendps as optimization only with that alternative.
9146 2023-11-14  liuhongt  <hongtao.liu@intel.com>
9148         PR tree-optimization/105735
9149         PR tree-optimization/111972
9150         * tree-scalar-evolution.cc
9151         (analyze_and_compute_bitop_with_inv_effect): Handle bitop with
9152         INTEGER_CST.
9154 2023-11-13  Arsen Arsenović  <arsen@aarsen.me>
9156         * configure: Regenerate.
9157         * aclocal.m4: Regenerate.
9158         * Makefile.in (LIBDEPS): Remove (potential) ./ prefix from
9159         LIBINTL_DEP.
9160         * doc/install.texi: Document new (notable) flags added by the
9161         optional gettext tree and by AM_GNU_GETTEXT.  Document libintl/libc
9162         with gettext dependency.
9164 2023-11-13  Uros Bizjak  <ubizjak@gmail.com>
9166         * config/i386/i386-expand.h (gen_pushfl): New prototype.
9167         (gen_popfl): Ditto.
9168         * config/i386/i386-expand.cc (ix86_expand_builtin)
9169         [case IX86_BUILTIN_READ_FLAGS]: Use gen_pushfl.
9170         [case IX86_BUILTIN_WRITE_FLAGS]: Use gen_popfl.
9171         * config/i386/i386.cc (gen_pushfl): New function.
9172         (gen_popfl): Ditto.
9173         * config/i386/i386.md (unspec): Add UNSPEC_PUSHFL and UNSPEC_POPFL.
9174         (@pushfl<mode>2): Rename from *pushfl<mode>2.
9175         Rewrite as unspec using UNSPEC_PUSHFL.
9176         (@popfl<mode>1): Rename from *popfl<mode>1.
9177         Rewrite as unspec using UNSPEC_POPFL.
9179 2023-11-13  Uros Bizjak  <ubizjak@gmail.com>
9181         PR target/112494
9182         * config/i386/i386.cc (ix86_cc_mode) [default]: Return CCmode.
9184 2023-11-13  Robin Dapp  <rdapp@ventanamicro.com>
9186         * config/riscv/riscv-vsetvl.cc (source_equal_p): Use pointer
9187         equality for REG_EQUAL.
9189 2023-11-13  Richard Biener  <rguenther@suse.de>
9191         PR tree-optimization/112495
9192         * tree-data-ref.cc (runtime_alias_check_p): Reject checks
9193         between different address spaces.
9195 2023-11-13  Richard Biener  <rguenther@suse.de>
9197         PR middle-end/112487
9198         * tree-inline.cc (setup_one_parameter): When the parameter
9199         is unused only insert a debug bind when there's not a gross
9200         mismatch in value and declared parameter type.  Do not assert
9201         there effectively isn't.
9203 2023-11-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9205         * config/riscv/riscv-v.cc
9206         (rvv_builder::combine_sequence_use_merge_profitable_p): New function.
9207         (expand_vector_init_merge_combine_sequence): Ditto.
9208         (expand_vec_init): Adapt for new optimization.
9210 2023-11-13  liuhongt  <hongtao.liu@intel.com>
9212         * config/i386/i386-expand.cc
9213         (ix86_expand_vector_init_duplicate): Handle V4HF/V4BF and
9214         V2HF/V2BF.
9215         (ix86_expand_vector_init_one_nonzero): Ditto.
9216         (ix86_expand_vector_init_one_var): Ditto.
9217         (ix86_expand_vector_init_general): Ditto.
9218         (ix86_expand_vector_set_var): Ditto.
9219         (ix86_expand_vector_set): Ditto.
9220         (ix86_expand_vector_extract): Ditto.
9221         * config/i386/mmx.md
9222         (mmxdoublevecmode): Extend to V4HF/V4BF/V2HF/V2BF.
9223         (*mmx_pinsrw): Extend to V4FI_64, add a new alternative (&x,
9224         x, x), add a new define_split after the pattern.
9225         (*mmx_pextrw<mode>): New define_insn.
9226         (mmx_pshufw_1): Rename to ..
9227         (mmx_pshufw<mode>_1): .. this, extend to V4FI_64.
9228         (*mmx_pblendw64): Extend to V4FI_64.
9229         (*vec_dup<mode>): New define_insn.
9230         (vec_setv4hi): Rename to ..
9231         (vec_set<mode>): .. this, and extend to V4FI_64
9232         (vec_extractv4hihi): Rename to ..
9233         (vec_extract<mode><mmxscalarmodelower>): .. this, and extend
9234         to V4FI_64.
9235         (vec_init<mode><mmxscalarmodelower>): New define_insn.
9236         (*pinsrw): Extend to V2FI_32, add a new alternative (&x,
9237         x, x), and add a new define_split after it.
9238         (*pextrw<mode>): New define_insn.
9239         (vec_setv2hi): Rename to ..
9240         (vec_set<mode>): .. this, extend to V2FI_32.
9241         (vec_extractv2hihi): Rename to ..
9242         (vec_extract<mode><mmxscalarmodelower>): .. this, extend to
9243         V2FI_32.
9244         (*punpckwd): Extend to V2FI_32.
9245         (*pshufw_1): Rename to ..
9246         (*pshufw<mode>_1): .. this, extend to V2FI_32.
9247         (vec_initv2hihi): Rename to ..
9248         (vec_init<mode><mmxscalarmodelower>): .. this, and extend to
9249         V2FI_32.
9250         (*vec_dup<mode>): New define_insn.
9251         * config/i386/sse.md (*vec_extract<mode>): Refine constraint
9252         from v to Yw.
9254 2023-11-13  Roger Sayle  <roger@nextmovesoftware.com>
9256         * config/arc/arc.md (UNSPEC_ARC_CC_NEZ): New UNSPEC that
9257         represents the carry flag being set if the operand is non-zero.
9258         (adc_f): New define_insn representing adc with updated flags.
9259         (ashrdi3): New define_expand that only handles shifts by 1.
9260         (ashrdi3_cnt1): New pre-reload define_insn_and_split.
9261         (lshrdi3): New define_expand that only handles shifts by 1.
9262         (lshrdi3_cnt1): New pre-reload define_insn_and_split.
9263         (rrcsi2): New define_insn for rrc (SImode rotate right through carry).
9264         (rrcsi2_carry): Likewise for rrc.f, as above but updating flags.
9265         (rotldi3): New define_expand that only handles rotates by 1.
9266         (rotldi3_cnt1): New pre-reload define_insn_and_split.
9267         (rotrdi3): New define_expand that only handles rotates by 1.
9268         (rotrdi3_cnt1): New pre-reload define_insn_and_split.
9269         (lshrsi3_cnt1_carry): New define_insn for lsr.f.
9270         (ashrsi3_cnt1_carry): New define_insn for asr.f.
9271         (btst_0_carry): New define_insn for asr.f without result.
9273 2023-11-13  Roger Sayle  <roger@nextmovesoftware.com>
9275         * config/arc/arc.cc (TARGET_FOLD_BUILTIN): Define to
9276         arc_fold_builtin.
9277         (arc_fold_builtin): New function.  Convert ARC_BUILTIN_SWAP
9278         into a rotate.  Evaluate ARC_BUILTIN_NORM and
9279         ARC_BUILTIN_NORMW of constant arguments.
9280         * config/arc/arc.md (UNSPEC_ARC_SWAP): Delete.
9281         (normw): Make output template/assembler whitespace consistent.
9282         (swap): Remove define_insn, only use of SWAP UNSPEC.
9283         * config/arc/builtins.def: Tweak indentation.
9284         (SWAP): Expand using rotlsi2_cnt16 instead of using swap.
9286 2023-11-13  Roger Sayle  <roger@nextmovesoftware.com>
9288         * config/i386/i386.md (<insn><dwi>3_doubleword_lowpart): New
9289         define_insn_and_split to optimize register usage of doubleword
9290         right shifts followed by truncation.
9292 2023-11-13  Jakub Jelinek  <jakub@redhat.com>
9294         * config/i386/constraints.md: Remove j constraint letter from list of
9295         unused letters.
9297 2023-11-13  Xi Ruoyao  <xry111@xry111.site>
9299         PR rtl-optimization/112483
9300         * simplify-rtx.cc (simplify_binary_operation_1) <case COPYSIGN>:
9301         Fix the simplification of (fcopysign x, NEGATIVE_CONST).
9303 2023-11-13  Jakub Jelinek  <jakub@redhat.com>
9305         PR tree-optimization/111967
9306         * gimple-range-cache.cc (block_range_cache::set_bb_range): Grow
9307         m_ssa_ranges to num_ssa_names rather than num_ssa_names + 1.
9308         (block_range_cache::dump): Iterate from 1 rather than 0.  Don't use
9309         ssa_name (x) unless m_ssa_ranges[x] is non-NULL.  Iterate to
9310         m_ssa_ranges.length () rather than num_ssa_names.
9312 2023-11-13  Xi Ruoyao  <xry111@xry111.site>
9314         * config/loongarch/loongarch.md (LD_AT_LEAST_32_BIT): New mode
9315         iterator.
9316         (ST_ANY): New mode iterator.
9317         (define_peephole2): Use LD_AT_LEAST_32_BIT instead of GPR and
9318         ST_ANY instead of QHWD for applicable patterns.
9320 2023-11-13  Xi Ruoyao  <xry111@xry111.site>
9322         PR target/112476
9323         * config/loongarch/loongarch.cc
9324         (loongarch_expand_vec_cond_mask_expr): Call simplify_gen_subreg
9325         instead of gen_rtx_SUBREG.
9327 2023-11-13  Pan Li  <pan2.li@intel.com>
9329         * config/riscv/autovec.md: Add bridge mode to lrint and lround
9330         pattern.
9331         * config/riscv/riscv-protos.h (expand_vec_lrint): Add new arg
9332         bridge machine mode.
9333         (expand_vec_lround): Ditto.
9334         * config/riscv/riscv-v.cc (emit_vec_widden_cvt_f_f): New helper
9335         func impl to emit vfwcvt.f.f.
9336         (emit_vec_rounding_to_integer): Handle the HF to DI rounding
9337         with the bridge mode.
9338         (expand_vec_lrint): Reorder the args.
9339         (expand_vec_lround): Ditto.
9340         (expand_vec_lceil): Ditto.
9341         (expand_vec_lfloor): Ditto.
9342         * config/riscv/vector-iterators.md: Add vector HFmode and bridge
9343         mode for converting to DI.
9345 2023-11-12  Jeff Law  <jlaw@ventanamicro.com>
9347         Revert:
9348         2023-11-11  Jin Ma  <jinma@linux.alibaba.com>
9350         * haifa-sched.cc (use_or_clobber_starts_range_p): New.
9351         (prune_ready_list): USE or CLOBBER should delay execution
9352         if it starts a new live range.
9354 2023-11-12  Uros Bizjak  <ubizjak@gmail.com>
9356         * config/i386/i386.md (*stack_protect_set_4s_<mode>_di):
9357         Remove alternative 0.
9359 2023-11-11  Eric Botcazou  <ebotcazou@adacore.com>
9361         * ipa-cp.cc (print_ipcp_constant_value): Move to...
9362         (values_equal_for_ipcp_p): Deal with VAR_DECLs from the
9363         constant pool.
9364         * ipa-prop.cc (ipa_print_constant_value): ...here.  Likewise.
9365         (ipa_print_node_jump_functions_for_edge): Call the function
9366         ipa_print_constant_value to print IPA_JF_CONST elements.
9368 2023-11-11  Jin Ma  <jinma@linux.alibaba.com>
9370         * haifa-sched.cc (use_or_clobber_starts_range_p): New.
9371         (prune_ready_list): USE or CLOBBER should delay execution
9372         if it starts a new live range.
9374 2023-11-11  Jakub Jelinek  <jakub@redhat.com>
9376         PR middle-end/112430
9377         * tree-ssa-math-opts.cc (match_uaddc_usubc): Remove temp_stmts in the
9378         order they were pushed rather than in reverse order.  Call
9379         release_defs after gsi_remove.
9381 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
9383         * target.def (mode_switching.backprop): New hook.
9384         * doc/tm.texi.in (TARGET_MODE_BACKPROP): New @hook.
9385         * doc/tm.texi: Regenerate.
9386         * mode-switching.cc (struct bb_info): Add single_succ.
9387         (confluence_info): Add transp field.
9388         (single_succ_confluence_n, single_succ_transfer): New functions.
9389         (backprop_confluence_n, backprop_transfer): Likewise.
9390         (optimize_mode_switching): Use them.  Push mode transitions onto
9391         a block's incoming edges, if the backprop hook requires it.
9393 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
9395         * target.def (mode_switching.confluence): New hook.
9396         * doc/tm.texi (TARGET_MODE_CONFLUENCE): New @hook.
9397         * doc/tm.texi.in: Regenerate.
9398         * mode-switching.cc (confluence_info): New variable.
9399         (mode_confluence, forward_confluence_n, forward_transfer): New
9400         functions.
9401         (optimize_mode_switching): Use them to calculate mode_in when
9402         TARGET_MODE_CONFLUENCE is defined.
9404 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
9406         * mode-switching.cc (commit_mode_sets): Use 1-based edge aux values.
9408 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
9410         * target.def (mode_switching.after): Add a regs_live parameter.
9411         * doc/tm.texi: Regenerate.
9412         * config/epiphany/epiphany-protos.h (epiphany_mode_after): Update
9413         accordingly.
9414         * config/epiphany/epiphany.cc (epiphany_mode_needed): Likewise.
9415         (epiphany_mode_after): Likewise.
9416         * config/i386/i386.cc (ix86_mode_after): Likewise.
9417         * config/riscv/riscv.cc (riscv_mode_after): Likewise.
9418         * config/sh/sh.cc (sh_mode_after): Likewise.
9419         * mode-switching.cc (optimize_mode_switching): Likewise.
9421 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
9423         * target.def (mode_switching.needed): Add a regs_live parameter.
9424         * doc/tm.texi: Regenerate.
9425         * config/epiphany/epiphany-protos.h (epiphany_mode_needed): Update
9426         accordingly.
9427         * config/epiphany/epiphany.cc (epiphany_mode_needed): Likewise.
9428         * config/epiphany/mode-switch-use.cc (insert_uses): Likewise.
9429         * config/i386/i386.cc (ix86_mode_needed): Likewise.
9430         * config/riscv/riscv.cc (riscv_mode_needed): Likewise.
9431         * config/sh/sh.cc (sh_mode_needed): Likewise.
9432         * mode-switching.cc (optimize_mode_switching): Likewise.
9433         (create_pre_exit): Likewise, using the DF simulate functions
9434         to calculate the required information.
9436 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
9438         * target.def (mode_switching.eh_handler): New hook.
9439         * doc/tm.texi.in (TARGET_MODE_EH_HANDLER): New @hook.
9440         * doc/tm.texi: Regenerate.
9441         * mode-switching.cc (optimize_mode_switching): Use eh_handler
9442         to get the mode on entry to an exception handler.
9444 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
9446         * mode-switching.cc (optimize_mode_switching): Mark the exit
9447         block as nontransparent if it requires a specific mode.
9448         Handle the entry and exit mode as sibling rather than nested
9449         concepts.  Remove outdated comment.
9451 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
9453         * mode-switching.cc (optimize_mode_switching): Initially
9454         compute transparency in a bit-per-block bitmap.
9456 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
9458         * mode-switching.cc (seginfo): Add a prev_mode field.
9459         (new_seginfo): Take and initialize the prev_mode.
9460         (optimize_mode_switching): Update calls accordingly.
9461         Use the recorded modes during the emit phase, rather than
9462         computing one on the fly.
9464 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
9466         * mode-switching.cc (add_seginfo): Replace head pointer with
9467         a pointer to the tail pointer.
9468         (optimize_mode_switching): Update calls accordingly.
9470 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
9472         * mode-switching.cc (optimize_mode_switching): Call
9473         df_note_add_problem.
9475 2023-11-11  Richard Sandiford  <richard.sandiford@arm.com>
9477         * target.def: Tweak documentation of mode-switching hooks.
9478         * doc/tm.texi.in (OPTIMIZE_MODE_SWITCHING): Tweak documentation.
9479         (NUM_MODES_FOR_MODE_SWITCHING): Likewise.
9480         * doc/tm.texi: Regenerate.
9482 2023-11-11  Martin Uecker  <uecker@tugraz.at>
9484         PR c/110815
9485         PR c/112428
9486         * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
9487         remove warning for parameters declared with `static`.
9489 2023-11-11  Joern Rennecke  <joern.rennecke@embecosm.com>
9491         * doc/sourcebuild.texi (Scan the assembly output): Document change.
9493 2023-11-10  Mao  <sray@live.com>
9495         PR middle-end/110983
9496         * doc/invoke.texi (Option Summary): Add -fpatchable-function-entry.
9498 2023-11-10  Maciej W. Rozycki  <macro@embecosm.com>
9500         * config/riscv/riscv.md (length): Fix indentation for branch and
9501         jump length calculation expressions.
9503 2023-11-10  Eric Botcazou  <ebotcazou@adacore.com>
9505         * fold-const.cc (operand_compare::operand_equal_p) <CONSTRUCTOR>:
9506         Deal with nonempty constant CONSTRUCTORs.
9507         (operand_compare::hash_operand) <CONSTRUCTOR>: Hash DECL_FIELD_OFFSET
9508         and DECL_FIELD_BIT_OFFSET for FIELD_DECLs.
9510 2023-11-10  Vladimir N. Makarov  <vmakarov@redhat.com>
9512         PR target/112337
9513         * ira-costs.cc: (validate_autoinc_and_mem_addr_p): New function.
9514         (equiv_can_be_consumed_p): Use it.
9516 2023-11-10  Richard Sandiford  <richard.sandiford@arm.com>
9518         * read-rtl.cc (md_reader::read_mapping): Allow iterators to
9519         include other iterators.
9520         * doc/md.texi: Document the change.
9521         * config/aarch64/iterators.md (DREG2, VQ2, TX2, DX2, SX2): Include
9522         the iterator that is being duplicated, rather than reproducing it.
9523         (VSTRUCT_D): Redefine using VSTRUCT_[234]D.
9524         (VSTRUCT_Q): Likewise VSTRUCT_[234]Q.
9525         (VSTRUCT_2QD, VSTRUCT_3QD, VSTRUCT_4QD, VSTRUCT_QD): Redefine using
9526         the individual D and Q iterators.
9528 2023-11-10  Uros Bizjak  <ubizjak@gmail.com>
9530         * config/i386/i386.md (stack_protect_set_1 peephole2):
9531         Explicitly check operand 2 for word_mode.
9532         (stack_protect_set_1 peephole2 #2): Ditto.
9533         (stack_protect_set_2 peephole2): Ditto.
9534         (stack_protect_set_3 peephole2): Ditto.
9535         (*stack_protect_set_4z_<mode>_di): New insn patter.
9536         (*stack_protect_set_4s_<mode>_di): Ditto.
9537         (stack_protect_set_4 peephole2): New peephole2 pattern to
9538         substitute stack protector scratch register clear with unrelated
9539         register initialization involving zero/sign-extend instruction.
9541 2023-11-10  Uros Bizjak  <ubizjak@gmail.com>
9543         * config/i386/i386.md (shift): Use SAL insted of SLL
9544         for ashift insn mnemonic.
9546 2023-11-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9548         PR tree-optimization/112438
9549         * tree-vect-loop.cc (vectorizable_induction): Bugfix when
9550         LOOP_VINFO_USING_SELECT_VL_P.
9552 2023-11-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9554         * config/riscv/riscv-protos.h (enum insn_type): New enum.
9555         * config/riscv/riscv-v.cc
9556         (rvv_builder::combine_sequence_use_slideup_profitable_p): New function.
9557         (expand_vector_init_slideup_combine_sequence): Ditto.
9558         (expand_vec_init): Add slideup combine optimization.
9560 2023-11-10  Robin Dapp  <rdapp@ventanamicro.com>
9562         PR tree-optimization/112464
9563         * tree-vect-loop.cc (vectorize_fold_left_reduction): Use
9564         vect_orig_stmt on scalar_dest_def_info.
9566 2023-11-10  Jin Ma  <jinma@linux.alibaba.com>
9568         * config/riscv/riscv.cc (riscv_for_each_saved_reg): Place the interrupt
9569         operation before the XTheadMemPair.
9571 2023-11-10  Richard Biener  <rguenther@suse.de>
9573         PR tree-optimization/110221
9574         * tree-vect-slp.cc (vect_schedule_slp_node): When loop
9575         masking / len is applied make sure to not schedule
9576         intenal defs outside of the loop.
9578 2023-11-10  Andrew Stubbs  <ams@codesourcery.com>
9580         * expr.cc (store_constructor): Add "and" operation to uniform mask
9581         generation.
9583 2023-11-10  Andrew Stubbs  <ams@codesourcery.com>
9585         PR target/112308
9586         * config/gcn/gcn-valu.md (add<mode>3<exec_clobber>): Fix B constraint
9587         and switch to the new format.
9588         (add<mode>3_dup<exec_clobber>): Likewise.
9589         (add<mode>3_vcc<exec_vcc>): Likewise.
9590         (add<mode>3_vcc_dup<exec_vcc>): Likewise.
9591         (add<mode>3_vcc_zext_dup): Likewise.
9592         (add<mode>3_vcc_zext_dup_exec): Likewise.
9593         (add<mode>3_vcc_zext_dup2): Likewise.
9594         (add<mode>3_vcc_zext_dup2_exec): Likewise.
9596 2023-11-10  Richard Biener  <rguenther@suse.de>
9598         PR middle-end/112469
9599         * match.pd (cond ? op a : b -> .COND_op (cond, a, b)): Add
9600         missing view_converts.
9602 2023-11-10  Andrew Stubbs  <ams@codesourcery.com>
9604         * config/gcn/gcn.cc (gcn_expand_reduc_scalar): Add clobber to DImode
9605         min/max instructions.
9607 2023-11-10  Chenghui Pan  <panchenghui@loongson.cn>
9609         * config/loongarch/lsx.md: Fix instruction name typo in
9610         lsx_vreplgr2vr_<lsxfmt_f> template.
9612 2023-11-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9614         * config/riscv/autovec.md (vec_init<mode><vel>): Split patterns.
9616 2023-11-10  Pan Li  <pan2.li@intel.com>
9618         Revert:
9619         2023-11-10  Pan Li  <pan2.li@intel.com>
9620         * config/riscv/riscv-v.cc (expand_vector_init_trailing_same_elem):
9621         New fun impl to expand the insn when trailing same elements.
9622         (expand_vec_init): Try trailing same elements when vec_init.
9624 2023-11-10  Pan Li  <pan2.li@intel.com>
9626         * config/riscv/riscv-v.cc (expand_vector_init_trailing_same_elem):
9627         New fun impl to expand the insn when trailing same elements.
9628         (expand_vec_init): Try trailing same elements when vec_init.
9630 2023-11-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9632         * config/riscv/autovec-opt.md (*cond_copysign<mode>): Remove.
9633         * config/riscv/autovec.md (cond_copysign<mode>): New pattern.
9635 2023-11-10  Pan Li  <pan2.li@intel.com>
9637         PR target/112432
9638         * internal-fn.def (LRINT): Add FLOATN support.
9639         (LROUND): Ditto.
9640         (LLRINT): Ditto.
9641         (LLROUND): Ditto.
9643 2023-11-10  Jeff Law  <jlaw@ventanamicro.com>
9645         * config/h8300/combiner.md (single bit sign_extract): Avoid recently
9646         added patterns for H8/SX.
9647         (single bit zero_extract): New patterns.
9649 2023-11-10  liuhongt  <hongtao.liu@intel.com>
9651         PR target/112443
9652         * config/i386/sse.md (*avx2_pcmp<mode>3_4): Fix swap condition
9653         from LT to GT since there's not in the pattern.
9654         (*avx2_pcmp<mode>3_5): Ditto.
9656 2023-11-10  Jose E. Marchesi  <jose.marchesi@oracle.com>
9658         * config/bpf/bpf.cc (bpf_print_register): Accept modifier code 'W'
9659         to force emitting register names using the wN form.
9660         * config/bpf/bpf.md (*mulsidi3_zeroextend): Force operands to
9661         always use wN written form in pseudo-C assembly syntax.
9663 2023-11-09  David Malcolm  <dmalcolm@redhat.com>
9665         * diagnostic-show-locus.cc (layout::m_line_table): New field.
9666         (compatible_locations_p): Convert to...
9667         (layout::compatible_locations_p): ...this, replacing uses of
9668         line_table global with m_line_table.
9669         (layout::layout): Convert "richloc" param from a pointer to a
9670         const reference.  Initialize m_line_table member.
9671         (layout::maybe_add_location_range):  Replace uses of line_table
9672         global with m_line_table.  Pass the latter to
9673         linemap_client_expand_location_to_spelling_point.
9674         (layout::print_leading_fixits): Pass m_line_table to
9675         affects_line_p.
9676         (layout::print_trailing_fixits): Likewise.
9677         (gcc_rich_location::add_location_if_nearby): Update for change
9678         to layout ctor params.
9679         (diagnostic_show_locus): Convert to...
9680         (diagnostic_context::maybe_show_locus): ...this, converting
9681         richloc param from a pointer to a const reference.  Make "loc"
9682         const.  Split out printing part of function to...
9683         (diagnostic_context::show_locus): ...this.
9684         (selftest::test_offset_impl): Update for change to layout ctor
9685         params.
9686         (selftest::test_layout_x_offset_display_utf8): Likewise.
9687         (selftest::test_layout_x_offset_display_tab): Likewise.
9688         (selftest::test_tab_expansion): Likewise.
9689         * diagnostic.h (diagnostic_context::maybe_show_locus): New decl.
9690         (diagnostic_context::show_locus): New decl.
9691         (diagnostic_show_locus): Convert from a decl to an inline function.
9692         * gdbinit.in (break-on-diagnostic): Update from a breakpoint
9693         on diagnostic_show_locus to one on
9694         diagnostic_context::maybe_show_locus.
9695         * genmatch.cc (linemap_client_expand_location_to_spelling_point):
9696         Add "set" param and use it in place of line_table global.
9697         * input.cc (expand_location_1): Likewise.
9698         (expand_location): Update for new param of expand_location_1.
9699         (expand_location_to_spelling_point): Likewise.
9700         (linemap_client_expand_location_to_spelling_point): Add "set"
9701         param and use it in place of line_table global.
9702         * tree-diagnostic-path.cc (event_range::print): Pass line_table
9703         for new param of linemap_client_expand_location_to_spelling_point.
9705 2023-11-09  Uros Bizjak  <ubizjak@gmail.com>
9707         * config/i386/i386.md (@stack_protect_set_1_<PTR:mode>_<W:mode>):
9708         Use W mode iterator instead of SWI48.  Output MOV instead of XOR
9709         for TARGET_USE_MOV0.
9710         (stack_protect_set_1 peephole2): Use integer modes with
9711         mode size <= word mode size for operand 3.
9712         (stack_protect_set_1 peephole2 #2): New peephole2 pattern to
9713         substitute stack protector scratch register clear with unrelated
9714         register initialization, originally in front of stack
9715         protector sequence.
9716         (*stack_protect_set_3_<PTR:mode>_<SWI48:mode>): New insn pattern.
9717         (stack_protect_set_1 peephole2): New peephole2 pattern to
9718         substitute stack protector scratch register clear with unrelated
9719         register initialization involving LEA instruction.
9721 2023-11-09  Vladimir N. Makarov  <vmakarov@redhat.com>
9723         PR rtl-optimization/110215
9724         * ira-lives.cc: (add_conflict_from_region_landing_pads): New
9725         function.
9726         (process_bb_node_lives): Use it.
9728 2023-11-09  Alexandre Oliva  <oliva@adacore.com>
9730         * config/i386/i386.cc (symbolic_base_address_p,
9731         base_address_p): New, factored out from...
9732         (extract_base_offset_in_addr): ... here and extended to
9733         recognize REG+GOTOFF, as in gcc.target/i386/sse2-load-multi.c
9734         and sse2-store-multi.c with PIE enabled by default.
9736 2023-11-09  Tamar Christina  <tamar.christina@arm.com>
9738         PR tree-optimization/109154
9739         * config/aarch64/aarch64-sve.md (cond_copysign<mode>): New.
9741 2023-11-09  Tamar Christina  <tamar.christina@arm.com>
9743         PR tree-optimization/109154
9744         * config/aarch64/aarch64.md (copysign<GPF:mode>3): Handle
9745         copysign (x, -1).
9746         * config/aarch64/aarch64-simd.md (copysign<mode>3): Likewise.
9747         * config/aarch64/aarch64-sve.md (copysign<mode>3): Likewise.
9749 2023-11-09  Tamar Christina  <tamar.christina@arm.com>
9751         PR tree-optimization/109154
9752         * config/aarch64/aarch64.md (<optab><mode>3): Add SVE split case.
9753         * config/aarch64/aarch64-simd.md (ior<mode>3<vczle><vczbe>): Likewise.
9754         * config/aarch64/predicates.md(aarch64_orr_imm_sve_advsimd): New.
9756 2023-11-09  Tamar Christina  <tamar.christina@arm.com>
9758         PR tree-optimization/109154
9759         * config/aarch64/aarch64.md (*mov<mode>_aarch64, *movsi_aarch64,
9760         *movdi_aarch64): Add new w -> Z case.
9761         * config/aarch64/iterators.md (Vbtype): Add QI and HI.
9763 2023-11-09  Tamar Christina  <tamar.christina@arm.com>
9765         PR tree-optimization/109154
9766         * config/aarch64/aarch64-protos.h (aarch64_simd_special_constant_p,
9767         aarch64_maybe_generate_simd_constant): New.
9768         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VQMOV:mode>,
9769         *aarch64_simd_mov<VDMOV:mode>): Add new coden for special constants.
9770         * config/aarch64/aarch64.cc (aarch64_extract_vec_duplicate_wide_int):
9771         Take optional mode.
9772         (aarch64_simd_special_constant_p,
9773         aarch64_maybe_generate_simd_constant): New.
9774         * config/aarch64/aarch64.md (*movdi_aarch64): Add new codegen for
9775         special constants.
9776         * config/aarch64/constraints.md (Dx): new.
9778 2023-11-09  Tamar Christina  <tamar.christina@arm.com>
9780         PR tree-optimization/109154
9781         * internal-fn.def (COPYSIGN): New.
9782         * match.pd (UNCOND_BINARY, COND_BINARY): Map IFN_COPYSIGN to
9783         IFN_COND_COPYSIGN.
9784         * optabs.def (cond_copysign_optab, cond_len_copysign_optab): New.
9786 2023-11-09  Tamar Christina  <tamar.christina@arm.com>
9788         PR tree-optimization/109154
9789         * match.pd: Add new neg+abs rule, remove inverse copysign rule.
9791 2023-11-09  Tamar Christina  <tamar.christina@arm.com>
9793         PR tree-optimization/109154
9794         * match.pd: expand existing copysign optimizations.
9796 2023-11-09  Tatsuyuki Ishi  <ishitatsuyuki@gmail.com>
9798         PR driver/111605
9799         * collect2.cc (main): Do not prepend target triple to
9800         -fuse-ld=lld,mold.
9802 2023-11-09  Richard Biener  <rguenther@suse.de>
9804         PR tree-optimization/111133
9805         * tree-vect-stmts.cc (vect_build_scatter_store_calls):
9806         Remove and refactor to ...
9807         (vect_build_one_scatter_store_call): ... this new function.
9808         (vectorizable_store): Use vect_check_scalar_mask to record
9809         the SLP node for the mask operand.  Code generate scatters
9810         with builtin decls from the main scatter vectorization
9811         path and prepare that for SLP.
9812         * tree-vect-slp.cc (vect_get_operand_map): Do not look
9813         at the VDEF to decide between scatter or gather since that
9814         doesn't work for patterns.  Use the LHS being an SSA_NAME
9815         or not instead.
9817 2023-11-09  Pan Li  <pan2.li@intel.com>
9819         * config/riscv/riscv.cc (riscv_frm_emit_after_bb_end): Only
9820         perform once emit when at least one succ edge is abnormal.
9822 2023-11-09  Richard Biener  <rguenther@suse.de>
9824         * tree-vect-loop.cc (vect_verify_full_masking_avx512):
9825         Check we have integer mode masks as required by
9826         vect_get_loop_mask.
9828 2023-11-09  Richard Biener  <rguenther@suse.de>
9830         PR tree-optimization/112444
9831         * tree-ssa-sccvn.cc (visit_phi): Avoid using not visited
9832         defs as undefined vals.
9834 2023-11-09  YunQiang Su  <yunqiang.su@cipunited.com>
9836         * config/mips/mips.cc(mips_option_override): Set mips_abs to
9837         2008, if mips_abs is default and mips_nan is 2008.
9839 2023-11-09  Florian Weimer  <fweimer@redhat.com>
9841         * doc/invoke.texi (Warning Options): Document
9842         -Wreturn-mismatch.  Update -Wreturn-type documentation.
9844 2023-11-09  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
9846         * config/s390/s390.md: Remove UNSPEC_VEC_ELTSWAP.
9847         * config/s390/vector.md (eltswapv16qi): New expander.
9848         (*eltswapv16qi): New insn and splitter.
9849         (eltswapv8hi): New insn and splitter.
9850         (eltswap<mode>): New insn and splitter for modes V_HW_4 as well
9851         as V_HW_2.
9852         * config/s390/vx-builtins.md (eltswap<mode>): Remove.
9853         (*eltswapv16qi): Remove.
9854         (*eltswap<mode>): Remove.
9855         (*eltswap<mode>_emu): Remove.
9857 2023-11-09  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
9859         * config/s390/s390.cc (expand_perm_with_rot): Remove.
9860         (expand_perm_reverse_elements): New.
9861         (expand_perm_with_vster): Remove.
9862         (expand_perm_with_vstbrq): Remove.
9863         (vectorize_vec_perm_const_1): Replace removed functions with new
9864         one.
9866 2023-11-09  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
9868         * config/s390/s390.cc (expand_perm_with_merge): Deal with cases
9869         where vmr{l,h} are still applicable if the operands are swapped.
9870         (expand_perm_with_vpdi): Likewise for vpdi.
9872 2023-11-09  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
9874         * config/s390/s390.md (VX_CONV_INT): Remove iterator.
9875         (gf): Add float mappings.
9876         (TOINT, toint): New attribute.
9877         (*fixuns_trunc<VX_CONV_BFP:mode><VX_CONV_INT:mode>2_z13):
9878         Remove.
9879         (*fixuns_trunc<mode><toint>2_z13): Add.
9880         (*fix_trunc<VX_CONV_BFP:mode><VX_CONV_INT:mode>2_bfp_z13):
9881         Remove.
9882         (*fix_trunc<mode><toint>2_bfp_z13): Add.
9883         (*floatuns<VX_CONV_INT:mode><VX_CONV_BFP:mode>2_z13): Remove.
9884         (*floatuns<toint><mode>2_z13): Add.
9885         * config/s390/vector.md (VX_VEC_CONV_INT): Remove iterator.
9886         (float<VX_VEC_CONV_INT:mode><VX_VEC_CONV_BFP:mode>2): Remove.
9887         (float<tointvec><mode>2): Add.
9888         (floatuns<VX_VEC_CONV_INT:mode><VX_VEC_CONV_BFP:mode>2): Remove.
9889         (floatuns<tointvec><mode>2): Add.
9890         (fix_trunc<VX_VEC_CONV_BFP:mode><VX_VEC_CONV_INT:mode>2):
9891         Remove.
9892         (fix_trunc<mode><tointvec>2): Add.
9893         (fixuns_trunc<VX_VEC_CONV_BFP:mode><VX_VEC_CONV_INT:mode>2):
9894         Remove.
9895         (fixuns_trunc<VX_VEC_CONV_BFP:mode><tointvec>2): Add.
9897 2023-11-09  Jakub Jelinek  <jakub@redhat.com>
9899         PR c/112339
9900         * attribs.cc (attribute_ignored_p): Only return true for
9901         attr_namespace_ignored_p if as is NULL.
9902         (decl_attributes): Never add ignored attributes.
9904 2023-11-09  Jin Ma  <jinma@linux.alibaba.com>
9906         * config/riscv/bitmanip.md: Avoid the conflict between
9907         zbb and xtheadmemidx in patterns.
9909 2023-11-09  Richard Biener  <rguenther@suse.de>
9911         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Record
9912         to the correct simd_clone_info.
9914 2023-11-09  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9916         * config/riscv/riscv-vector-costs.cc (costs::preferred_new_lmul_p): Fix ICE.
9918 2023-11-09  Alexandre Oliva  <oliva@adacore.com>
9920         * tree-cfg.cc (assign_discriminators): Handle debug stmts.
9922 2023-11-08  Uros Bizjak  <ubizjak@gmail.com>
9924         PR target/82524
9925         * config/i386/i386.md (*add<mode>_1_slp):
9926         Split insn only for unmatched operand 0.
9927         (*sub<mode>_1_slp): Ditto.
9928         (*<any_logic:code><mode>_1_slp): Merge pattern from "*and<mode>_1_slp"
9929         and "*<any_logic:code><mode>_1_slp" using any_logic code iterator.
9930         Split insn only for unmatched operand 0.
9931         (*neg<mode>1_slp): Split insn only for unmatched operand 0.
9932         (*one_cmpl<mode>_1_slp): Ditto.
9933         (*ashl<mode>3_1_slp): Ditto.
9934         (*<any_shiftrt:insn><mode>_1_slp): Ditto.
9935         (*<any_rotate:insn><mode>_1_slp): Ditto.
9936         (*addqi_ext<mode>_1): Redefine as define_insn_and_split.  Add
9937         alternative 1 and split insn after reload for unmatched operand 0.
9938         (*<plusminus:insn>qi_ext<mode>_2): Merge pattern from
9939         "*addqi_ext<mode>_2" and "*subqi_ext<mode>_2" using plusminus code
9940         iterator. Redefine as define_insn_and_split.  Add alternative 1
9941         and split insn after reload for unmatched operand 0.
9942         (*subqi_ext<mode>_1): Redefine as define_insn_and_split.  Add
9943         alternative 1 and split insn after reload for unmatched operand 0.
9944         (*<any_logic:code>qi_ext<mode>_0): Merge pattern from
9945         "*andqi_ext<mode>_0" and and "*<any_logic:code>qi_ext<mode>_0" using
9946         any_logic code iterator.
9947         (*<any_logic:code>qi_ext<mode>_1): Merge pattern from
9948         "*andqi_ext<mode>_1" and "*<any_logic:code>qi_ext<mode>_1" using
9949         any_logic code iterator. Redefine as define_insn_and_split.  Add
9950         alternative 1 and split insn after reload for unmatched operand 0.
9951         (*<any_logic:code>qi_ext<mode>_1_cc): Merge pattern from
9952         "*andqi_ext<mode>_1_cc" and "*xorqi_ext<mode>_1_cc" using any_logic
9953         code iterator. Redefine as define_insn_and_split.  Add alternative 1
9954         and split insn after reload for unmatched operand 0.
9955         (*<any_logic:code>qi_ext<mode>_2): Merge pattern from
9956         "*andqi_ext<mode>_2" and "*<any_or:code>qi_ext<mode>_2" using
9957         any_logic code iterator. Redefine as define_insn_and_split.  Add
9958         alternative 1 and split insn after reload for unmatched operand 0.
9959         (*<any_logic:code>qi_ext<mode>_3): Redefine as define_insn_and_split.
9960         Add alternative 1 and split insn after reload for unmatched operand 0.
9961         (*negqi_ext<mode>_1): Rename from "*negqi_ext<mode>_2".  Add
9962         alternative 1 and split insn after reload for unmatched operand 0.
9963         (*one_cmplqi_ext<mode>_1): Ditto.
9964         (*ashlqi_ext<mode>_1): Ditto.
9965         (*<any_shiftrt:insn>qi_ext<mode>_1): Ditto.
9967 2023-11-08  Richard Biener  <rguenther@suse.de>
9969         * tree-vect-stmts.cc (vectorizable_load): Adjust offset
9970         vector gathering for SLP of emulated gathers.
9972 2023-11-08  Richard Biener  <rguenther@suse.de>
9974         * tree-vectorizer.h (vect_slp_child_index_for_operand):
9975         Add gatherscatter_p argument.
9976         * tree-vect-slp.cc (vect_slp_child_index_for_operand): Likewise.
9977         Pass it on.
9978         * tree-vect-stmts.cc (vect_check_store_rhs): Turn the rhs
9979         argument into an output, also output the SLP node associated
9980         with it.
9981         (vectorizable_simd_clone_call): Adjust.
9982         (vectorizable_store): Likewise.
9983         (vectorizable_load): Likewise.
9985 2023-11-08  Richard Biener  <rguenther@suse.de>
9987         * tree-vect-stmts.cc (vectorizable_load): Use the correct
9988         vectorized mask operand.
9990 2023-11-08  Lehua Ding  <lehua.ding@rivai.ai>
9992         * config/riscv/vector.md (*vsetvldi_no_side_effects_si_extend):
9993         New combine pattern.
9995 2023-11-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9997         * config/riscv/riscv-vsetvl.cc: Fix ICE.
9999 2023-11-08  xuli  <xuli1@eswincomputing.com>
10001         * config/riscv/riscv-c.cc (riscv_check_builtin_call): Eliminate warning.
10003 2023-11-08  Hongyu Wang  <hongyu.wang@intel.com>
10005         PR target/112394
10006         * config/i386/constraints.md (jc): New constraint that prohibits
10007         EGPR on -mno-avx.
10008         * config/i386/i386.md (*movdi_internal): Change r constraint
10009         corresponds to Yd.
10010         (*movti_internal): Likewise.
10012 2023-11-08  Florian Weimer  <fweimer@redhat.com>
10014         * doc/invoke.texi (Warning Options): Mention C diagnostics
10015         for -fpermissive.
10017 2023-11-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10019         PR target/112092
10020         * config/riscv/riscv-vector-builtins-bases.cc: Normalize the vsetvls.
10022 2023-11-08  Haochen Jiang  <haochen.jiang@intel.com>
10024         PR target/111907
10025         * config/i386/i386.md (avx_noavx512vl): New definition for isa
10026         attribute.
10027         * config/i386/sse.md (*andnot<mode>3): Change isa attribute from
10028         avx_noavx512f to avx_noavx512vl.
10030 2023-11-07  Pan Li  <pan2.li@intel.com>
10032         * config/riscv/autovec.md: Remove the size check of lfloor.
10033         * config/riscv/riscv-v.cc (expand_vec_lfloor): Leverage
10034         emit_vec_rounding_to_integer for floor.
10036 2023-11-07  Robin Dapp  <rdapp@ventanamicro.com>
10038         PR tree-optimization/112361
10039         PR target/112359
10040         PR middle-end/112406
10041         * tree-if-conv.cc (convert_scalar_cond_reduction): Remember if
10042         loop was versioned and only then create COND_OPs.
10043         (predicate_scalar_phi): Do not create COND_OP when not
10044         vectorizing.
10045         * tree-vect-loop.cc (vect_expand_fold_left): Re-create
10046         VEC_COND_EXPR.
10047         (vectorize_fold_left_reduction): Pass mask to
10048         vect_expand_fold_left.
10050 2023-11-07  Uros Bizjak  <ubizjak@gmail.com>
10052         * config/i386/predicates.md ("flags_reg_operand"):
10053         Make predicate special to avoid automatic mode checks.
10055 2023-11-07  Martin Jambor  <mjambor@suse.cz>
10057         * configure: Regenerate.
10059 2023-11-07  Kwok Cheung Yeung  <kcy@codesourcery.com>
10061         * lto-cgraph.cc (enum LTO_symtab_tags): Add tag for indirect
10062         functions.
10063         (output_offload_tables): Write indirect functions.
10064         (input_offload_tables): read indirect functions.
10065         * lto-section-names.h (OFFLOAD_IND_FUNC_TABLE_SECTION_NAME): New.
10066         * omp-builtins.def (BUILT_IN_GOMP_TARGET_MAP_INDIRECT_PTR): New.
10067         * omp-offload.cc (offload_ind_funcs): New.
10068         (omp_discover_implicit_declare_target): Add functions marked with
10069         'omp declare target indirect' to indirect functions list.
10070         (omp_finish_file): Add indirect functions to section for offload
10071         indirect functions.
10072         (execute_omp_device_lower): Redirect indirect calls on target by
10073         passing function pointer to BUILT_IN_GOMP_TARGET_MAP_INDIRECT_PTR.
10074         (pass_omp_device_lower::gate): Run pass_omp_device_lower if
10075         indirect functions are present on an accelerator device.
10076         * omp-offload.h (offload_ind_funcs): New.
10077         * tree-core.h (omp_clause_code): Add OMP_CLAUSE_INDIRECT.
10078         * tree.cc (omp_clause_num_ops): Add entry for OMP_CLAUSE_INDIRECT.
10079         (omp_clause_code_name): Likewise.
10080         * tree.h (OMP_CLAUSE_INDIRECT_EXPR): New.
10081         * config/gcn/mkoffload.cc (process_asm): Process offload_ind_funcs
10082         section.  Count number of indirect functions.
10083         (process_obj): Emit number of indirect functions.
10084         * config/nvptx/mkoffload.cc (ind_func_ids, ind_funcs_tail): New.
10085         (process): Emit offload_ind_func_table in PTX code.  Emit indirect
10086         function names and count in image.
10087         * config/nvptx/nvptx.cc (nvptx_record_offload_symbol): Mark
10088         indirect functions in PTX code with IND_FUNC_MAP.
10090 2023-11-07  Tobias Burnus  <tobias@codesourcery.com>
10092         * doc/invoke.texi (-fopenmp, -fopenmp-simd): Adjust wording for
10093         attribute syntax supported also in C.
10095 2023-11-07  Richard Sandiford  <richard.sandiford@arm.com>
10097         * config/aarch64/aarch64.cc (aarch64_print_operand): Add a %Z
10098         modifier for SVE registers.
10100 2023-11-07  Joseph Myers  <joseph@codesourcery.com>
10102         * builtins.def (DEF_C2X_BUILTIN): Rename to DEF_C23_BUILTIN and
10103         use flag_isoc23 and function_c23_misc.
10104         * config/rl78/rl78.cc (rl78_option_override): Compare
10105         lang_hooks.name with "GNU C23" not "GNU C2X".
10106         * coretypes.h (function_c2x_misc): Rename to function_c23_misc.
10107         * doc/cpp.texi (@code{__has_attribute}): Refer to C23 instead of
10108         C2x.
10109         * doc/extend.texi: Likewise.
10110         * doc/invoke.texi: Likewise.
10111         * dwarf2out.cc (highest_c_language, gen_compile_unit_die): Compare
10112         against and return "GNU C23" language string instead of "GNU C2X".
10113         * ginclude/float.h: Refer to C23 instead of C2X in comments.
10114         * ginclude/stdint-gcc.h: Likewise.
10115         * glimits.h: Likewise.
10116         * tree.h: Likewise.
10118 2023-11-07  Alexandre Oliva  <oliva@adacore.com>
10120         * doc/sourcebuild.texi (opt_mstrict_align): New target.
10122 2023-11-07  Lehua Ding  <lehua.ding@rivai.ai>
10124         * config/riscv/autovec-opt.md (*cond_len_<optab><v_double_trunc><mode>):
10125         New combine pattern.
10126         (*cond_len_<optab><v_quad_trunc><mode>): Ditto.
10127         (*cond_len_<optab><v_oct_trunc><mode>): Ditto.
10128         (*cond_len_extend<v_double_trunc><mode>): Ditto.
10129         (*cond_len_widen_reduc_plus_scal_<mode>): Ditto.
10131 2023-11-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10133         PR target/112399
10134         * config/riscv/riscv-avlprop.cc
10135         (pass_avlprop::get_vlmax_ta_preferred_avl): Enhance AVL propagation.
10136         * config/riscv/t-riscv: Add new include.
10138 2023-11-07  Pan Li  <pan2.li@intel.com>
10140         * config/riscv/autovec.md: Remove the size check of lceil.l
10141         * config/riscv/riscv-v.cc (expand_vec_lceil):  Leverage
10142         emit_vec_rounding_to_integer for ceil.
10144 2023-11-06  John David Anglin  <danglin@gcc.gnu.org>
10146         * config/pa/pa.cc (pa_asm_trampoline_template): Fix typo.
10148 2023-11-06  John David Anglin  <danglin@gcc.gnu.org>
10150         * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Define to 1.
10152 2023-11-06  David Malcolm  <dmalcolm@redhat.com>
10154         * diagnostic-show-locus.cc (class colorizer): Take just a
10155         pretty_printer rather than a diagnostic_context.
10156         (layout::layout): Make context param a const reference,
10157         and pretty_printer param non-optional.
10158         (layout::m_context): Drop field.
10159         (layout::m_options): New field.
10160         (layout::m_colorize_source_p): Drop field.
10161         (layout::m_show_labels_p): Drop field.
10162         (layout::m_show_line_numbers_p): Drop field.
10163         (layout::print_gap_in_line_numbering): Use m_options.
10164         (layout::calculate_line_spans): Likewise.
10165         (layout::calculate_linenum_width): Likewise.
10166         (layout::calculate_x_offset_display): Likewise.
10167         (layout::print_source_line): Likewise.
10168         (layout::start_annotation_line): Likewise.
10169         (layout::print_annotation_line): Likewise.
10170         (layout::print_line): Likewise.
10171         (gcc_rich_location::add_location_if_nearby): Update for changes to
10172         layout ctor.
10173         (diagnostic_show_locus): Likewise.
10174         (selftest::test_offset_impl): Likewise.
10175         (selftest::test_layout_x_offset_display_utf8): Likewise.
10176         (selftest::test_layout_x_offset_display_tab): Likewise.
10177         (selftest::test_tab_expansion): Likewise.
10178         * diagnostic.h (diagnostic_context::m_source_printing): Move
10179         declaration of struct outside diagnostic_context as...
10180         (struct diagnostic_source_printing_options)... this.
10182 2023-11-06  David Malcolm  <dmalcolm@redhat.com>
10184         * diagnostic.cc (diagnostic_context::push_diagnostics): Convert
10185         to...
10186         (diagnostic_option_classifier::push): ...this.
10187         (diagnostic_context::pop_diagnostics): Convert to...
10188         (diagnostic_option_classifier::pop): ...this.
10189         (diagnostic_context::initialize): Move code to...
10190         (diagnostic_option_classifier::init): ...this new function.
10191         (diagnostic_context::finish): Move code to...
10192         (diagnostic_option_classifier::fini): ...this new function.
10193         (diagnostic_context::classify_diagnostic): Convert to...
10194         (diagnostic_option_classifier::classify_diagnostic): ...this.
10195         (diagnostic_context::update_effective_level_from_pragmas): Convert
10196         to...
10197         (diagnostic_option_classifier::update_effective_level_from_pragmas):
10198         ...this.
10199         (diagnostic_context::diagnostic_enabled): Update for refactoring.
10200         * diagnostic.h (struct diagnostic_classification_change_t): Move into...
10201         (class diagnostic_option_classifier): ...this new class.
10202         (diagnostic_context::option_unspecified_p): Update for move of
10203         fields into m_option_classifier.
10204         (diagnostic_context::classify_diagnostic): Likewise.
10205         (diagnostic_context::push_diagnostics): Likewise.
10206         (diagnostic_context::pop_diagnostics): Likewise.
10207         (diagnostic_context::update_effective_level_from_pragmas): Delete.
10208         (diagnostic_context::m_classify_diagnostic): Move into class
10209         diagnostic_option_classifier.
10210         (diagnostic_context::m_option_classifier): Likewise.
10211         (diagnostic_context::m_classification_history): Likewise.
10212         (diagnostic_context::m_n_classification_history): Likewise.
10213         (diagnostic_context::m_push_list): Likewise.
10214         (diagnostic_context::m_n_push): Likewise.
10215         (diagnostic_context::m_option_classifier): New.
10217 2023-11-06  David Malcolm  <dmalcolm@redhat.com>
10219         * diagnostic.cc (diagnostic_context::set_urlifier): New.
10220         * diagnostic.h (diagnostic_context::set_urlifier): New decl.
10221         (diagnostic_context::m_urlifier): Make private.
10222         * gcc.cc (driver::global_initializations): Use set_urlifier rather
10223         than directly setting field.
10224         * toplev.cc (general_init): Likewise.
10226 2023-11-06  David Malcolm  <dmalcolm@redhat.com>
10228         * diagnostic.cc (diagnostic_context::check_max_errors): Replace
10229         uses of diagnostic_kind_count with simple field acesss.
10230         (diagnostic_context::report_diagnostic): Likewise.
10231         (diagnostic_text_output_format::~diagnostic_text_output_format):
10232         Replace use of diagnostic_kind_count with
10233         diagnostic_context::diagnostic_count.
10234         * diagnostic.h (diagnostic_kind_count): Delete.
10235         (errorcount): Replace use of diagnostic_kind_count with
10236         diagnostic_context::diagnostic_count.
10237         (warningcount): Likewise.
10238         (werrorcount): Likewise.
10239         (sorrycount): Likewise.
10241 2023-11-06  Christophe Lyon  <christophe.lyon@linaro.org>
10243         * doc/sourcebuild.texi (Other attributes): Document thread_fence
10244         effective-target.
10246 2023-11-06  Uros Bizjak  <ubizjak@gmail.com>
10248         * config/i386/constraints.md (Bc): Remove constraint.
10249         (Bn): Rewrite to use x86_extended_reg_mentioned_p predicate.
10250         * config/i386/i386.cc (ix86_memory_address_reg_class):
10251         Do not limit processing to TARGET_APX_EGPR.  Exit early for
10252         NULL insn.  Do not check recog_data.insn before calling
10253         extract_insn_cached.
10254         (ix86_insn_base_reg_class): Handle ADDR_GPR8.
10255         (ix86_regno_ok_for_insn_base_p): Ditto.
10256         (ix86_insn_index_reg_class): Ditto.
10257         * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64):
10258         Remove insn pattern and corresponding peephole2 pattern.
10259         (*cmpi_ext<mode>_1): Remove (m,Q) alternative.
10260         Change (QBc,Q) alternative to (QBn,Q).  Add "addr" attribute.
10261         (*cmpqi_ext<mode>_3_mem_rex64): Remove insn pattern
10262         and corresponding peephole2 pattern.
10263         (*cmpi_ext<mode>_3): Remove (Q,m) alternative.
10264         Change (Q,QnBc) alternative to (Q,QnBn).  Add "addr" attribute.
10265         (*extzvqi_mem_rex64): Remove insn pattern and
10266         corresponding peephole2 pattern.
10267         (*extzvqi): Remove (Q,m) alternative.  Change (Q,QnBc)
10268         alternative to (Q,QnBn).  Add "addr" attribute.
10269         (*insvqi_1_mem_rex64): Remove insn pattern and
10270         corresponding peephole2 pattern.
10271         (*insvqi_1): Remove (Q,m) alternative.  Change (Q,QnBc)
10272         alternative to (Q,QnBn).  Add "addr" attribute.
10273         (@insv<mode>_1): Ditto.
10274         (*addqi_ext<mode>_0): Remove (m,0,Q) alternative.  Change (QBc,0,Q)
10275         alternative to (QBn,0,Q).  Add "addr" attribute.
10276         (*subqi_ext<mode>_0): Ditto.
10277         (*andqi_ext<mode>_0): Ditto.
10278         (*<any_or:code>qi_ext<mode>_0): Ditto.
10279         (*addqi_ext<mode>_1): Remove (Q,0,m) alternative.  Change (Q,0,QnBc)
10280         alternative to (Q,0,QnBn).  Add "addr" attribute.
10281         (*andqi_ext<mode>_1): Ditto.
10282         (*andqi_ext<mode>_1_cc): Ditto.
10283         (*<any_or:code>qi_ext<mode>_1): Ditto.
10284         (*xorqi_ext<mode>_1_cc): Ditto.
10285         * config/i386/predicates.md (nonimm_x64constmem_operand):
10286         Remove predicate.
10287         (general_x64constmem_operand): Ditto.
10288         (norex_memory_operand): Ditto.
10290 2023-11-06  Joseph Myers  <joseph@codesourcery.com>
10292         PR c/107954
10293         * doc/cpp.texi (__STDC_VERSION__): Refer to -std=c23 and
10294         -std=gnu23 instead of -std=c2x and -std=gnu2x.
10295         * doc/extend.texi (Attribute Syntax): Refer to C23 and -std=c23
10296         instead of C2x and -std=c2x.
10297         * doc/invoke.texi (-Wc11-c23-compat, -std=c23, -std=gnu23)
10298         (-std=iso9899:2024): Document, with -Wc11-c2x-compat, -std=c2x and
10299         -std=gnu2x as deprecated aliases.  Update descriptions of C23.
10300         * doc/standards.texi (Standards): Describe C23 with C2X as an old
10301         name.
10303 2023-11-06  Thomas Schwinge  <thomas@codesourcery.com>
10305         * config/nvptx/nvptx.h (MAKE_DECL_ONE_ONLY): Define.
10307 2023-11-06  Richard Biener  <rguenther@suse.de>
10309         PR tree-optimization/112405
10310         * tree-vect-stmts.cc (vectorizable_simd_clone_call):
10311         Properly handle invariant and/or loop mask passing.
10313 2023-11-06  Pan Li  <pan2.li@intel.com>
10315         * config/riscv/autovec.md: Remove the size check of lround.
10316         * config/riscv/riscv-v.cc (expand_vec_lround): Leverage
10317         emit_vec_rounding_to_integer for round.
10319 2023-11-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10321         * config/riscv/predicates.md: Adapt predicate.
10322         * config/riscv/riscv-protos.h (can_be_broadcasted_p): New function.
10323         * config/riscv/riscv-v.cc (can_be_broadcasted_p): Ditto.
10324         * config/riscv/vector.md (vec_duplicate<mode>): New pattern.
10325         (*vec_duplicate<mode>): Adapt vec_duplicate insn pattern.
10327 2023-11-06  Richard Biener  <rguenther@suse.de>
10329         PR tree-optimization/111950
10330         * tree-vect-loop-manip.cc (slpeel_duplicate_current_defs_from_edges):
10331         Remove.
10332         (find_guard_arg): Likewise.
10333         (slpeel_update_phi_nodes_for_guard2): Likewise.
10334         (slpeel_tree_duplicate_loop_to_edge_cfg): Remove calls to
10335         slpeel_duplicate_current_defs_from_edges, do not elide
10336         LC-PHIs for invariant values.
10337         (vect_do_peeling): Materialize PHI arguments for the edge
10338         around the epilog from the PHI defs of the main loop exit.
10340 2023-11-06  Richard Biener  <rguenther@suse.de>
10342         PR tree-optimization/112404
10343         * tree-vectorizer.h (get_mask_type_for_scalar_type): Declare
10344         overload with SLP node argument.
10345         * tree-vect-stmts.cc (get_mask_type_for_scalar_type): Implement it.
10346         (vect_check_scalar_mask): Use it.
10347         * tree-vect-slp.cc (vect_gather_slp_loads): Properly identify
10348         loads also for nodes with children, like .MASK_LOAD.
10349         * tree-vect-loop.cc (vect_analyze_loop_2): Look at the
10350         representative for load nodes and check whether it is a grouped
10351         access before looking for load-lanes support.
10353 2023-11-06  Robin Dapp  <rdapp@ventanamicro.com>
10355         PR tree-optimization/111760
10356         * config/riscv/autovec.md (vcond_mask_len_<mode><vm>): Add
10357         expander.
10358         * config/riscv/riscv-protos.h (enum insn_type): Add.
10359         * config/riscv/riscv-v.cc (needs_fp_rounding): Add !pred_mov.
10360         * doc/md.texi: Add vcond_mask_len.
10361         * gimple-match-exports.cc (maybe_resimplify_conditional_op):
10362         Create VCOND_MASK_LEN when length masking.
10363         * gimple-match.h (gimple_match_op::gimple_match_op): Always
10364         initialize len and bias.
10365         * internal-fn.cc (vec_cond_mask_len_direct): Add.
10366         (direct_vec_cond_mask_len_optab_supported_p): Add.
10367         (internal_fn_len_index): Add VCOND_MASK_LEN.
10368         (internal_fn_mask_index): Ditto.
10369         * internal-fn.def (VCOND_MASK_LEN): New internal function.
10370         * match.pd: Combine unconditional unary, binary and ternary
10371         operations into the respective COND_LEN operations.
10372         * optabs.def (OPTAB_D): Add vcond_mask_len optab.
10374 2023-11-06  Richard Sandiford  <richard.sandiford@arm.com>
10376         * explow.cc (align_dynamic_address): Do nothing if the required
10377         alignment is a byte.
10379 2023-11-06  Richard Sandiford  <richard.sandiford@arm.com>
10381         * function.h (get_stack_dynamic_offset): Declare.
10382         * function.cc (get_stack_dynamic_offset): New function,
10383         split out from...
10384         (get_stack_dynamic_offset): ...here.
10385         * explow.cc (allocate_dynamic_stack_space): Handle calls made
10386         after virtual registers have been instantiated.
10388 2023-11-06  liuhongt  <hongtao.liu@intel.com>
10390         PR target/112393
10391         * config/i386/i386-expand.cc (ix86_expand_vec_perm_vpermt2):
10392         Avoid generating RTL code when d->testing_p.
10394 2023-11-06  Richard Biener  <rguenther@suse.de>
10396         PR tree-optimization/112369
10397         * tree.cc (strip_float_extensions): Use element_precision.
10399 2023-11-06  Richard Biener  <rguenther@suse.de>
10401         PR middle-end/112296
10402         * doc/extend.texi (__builtin_constant_p): Clarify that
10403         side-effects are discarded.
10405 2023-11-06  Kewen Lin  <linkw@linux.ibm.com>
10407         PR target/111828
10408         * config.in: Regenerate.
10409         * config/rs6000/rs6000.cc (rs6000_update_ipa_fn_target_info): Guard
10410         inline asm handling under !HAVE_AS_POWER10_HTM.
10411         * configure: Regenerate.
10412         * configure.ac: Detect assembler support for HTM insns at power10.
10414 2023-11-06  xuli  <xuli1@eswincomputing.com>
10415             Pan Li  <pan2.li@intel.com>
10417         * config/riscv/riscv-c.cc (riscv_resolve_overloaded_builtin): New function for the hook.
10418         (riscv_register_pragmas): Register the hook.
10419         * config/riscv/riscv-protos.h (resolve_overloaded_builtin): New decl.
10420         * config/riscv/riscv-vector-builtins-bases.cc: New function impl.
10421         * config/riscv/riscv-vector-builtins-shapes.cc (build_one): Register overloaded function.
10422         * config/riscv/riscv-vector-builtins.cc (struct non_overloaded_registered_function_hasher):
10423         New hash table.
10424         (function_builder::add_function): Add overloaded arg.
10425         (function_builder::add_unique_function): Map overloaded function to non-overloaded function.
10426         (function_builder::add_overloaded_function): New API impl.
10427         (registered_function::overloaded_hash): Calculate hash value.
10428         (has_vxrm_or_frm_p): New function impl.
10429         (non_overloaded_registered_function_hasher::hash): Ditto.
10430         (non_overloaded_registered_function_hasher::equal): Ditto.
10431         (handle_pragma_vector): Allocate space for hash table.
10432         (resolve_overloaded_builtin): New function impl.
10433         * config/riscv/riscv-vector-builtins.h (function_base::may_require_frm_p): Ditto.
10434         (function_base::may_require_vxrm_p): Ditto.
10436 2023-11-06  Haochen Jiang  <haochen.jiang@intel.com>
10438         PR target/111889
10439         * config/i386/avx512bf16intrin.h: Push no-evex512 target.
10440         * config/i386/avx512bf16vlintrin.h: Ditto.
10441         * config/i386/avx512bitalgvlintrin.h: Ditto.
10442         * config/i386/avx512bwintrin.h: Ditto.
10443         * config/i386/avx512dqintrin.h: Ditto.
10444         * config/i386/avx512fintrin.h: Ditto.
10445         * config/i386/avx512fp16intrin.h: Ditto.
10446         * config/i386/avx512fp16vlintrin.h: Ditto.
10447         * config/i386/avx512ifmavlintrin.h: Ditto.
10448         * config/i386/avx512vbmi2vlintrin.h: Ditto.
10449         * config/i386/avx512vbmivlintrin.h: Ditto.
10450         * config/i386/avx512vlbwintrin.h: Ditto.
10451         * config/i386/avx512vldqintrin.h: Ditto.
10452         * config/i386/avx512vlintrin.h: Ditto.
10453         * config/i386/avx512vnnivlintrin.h: Ditto.
10454         * config/i386/avx512vp2intersectvlintrin.h: Ditto.
10455         * config/i386/avx512vpopcntdqvlintrin.h: Ditto.
10457 2023-11-06  Haochen Jiang  <haochen.jiang@intel.com>
10459         * config/i386/avx512bf16vlintrin.h
10460         (_mm_avx512_castsi128_ps): New.
10461         (_mm256_avx512_castsi256_ps): Ditto.
10462         (_mm_avx512_slli_epi32): Ditto.
10463         (_mm256_avx512_slli_epi32): Ditto.
10464         (_mm_avx512_cvtepi16_epi32): Ditto.
10465         (_mm256_avx512_cvtepi16_epi32): Ditto.
10466         (__attribute__): Change intrin call.
10467         * config/i386/avx512bwintrin.h
10468         (_mm_avx512_set_epi32): New.
10469         (_mm_avx512_set_epi16): Ditto.
10470         (_mm_avx512_set_epi8): Ditto.
10471         (__attribute__): Change intrin call.
10472         * config/i386/avx512fp16intrin.h: Ditto.
10473         * config/i386/avx512fp16vlintrin.h
10474         (_mm_avx512_set1_ps): New.
10475         (_mm256_avx512_set1_ps): Ditto.
10476         (_mm_avx512_and_si128): Ditto.
10477         (_mm256_avx512_and_si256): Ditto.
10478         (__attribute__): Change intrin call.
10479         * config/i386/avx512vlbwintrin.h
10480         (_mm_avx512_set1_epi32): New.
10481         (_mm_avx512_set1_epi16): Ditto.
10482         (_mm_avx512_set1_epi8): Ditto.
10483         (_mm256_avx512_set_epi16): Ditto.
10484         (_mm256_avx512_set_epi8): Ditto.
10485         (_mm256_avx512_set1_epi16): Ditto.
10486         (_mm256_avx512_set1_epi32): Ditto.
10487         (_mm256_avx512_set1_epi8): Ditto.
10488         (_mm_avx512_max_epi16): Ditto.
10489         (_mm_avx512_min_epi16): Ditto.
10490         (_mm_avx512_max_epu16): Ditto.
10491         (_mm_avx512_min_epu16): Ditto.
10492         (_mm_avx512_max_epi8): Ditto.
10493         (_mm_avx512_min_epi8): Ditto.
10494         (_mm_avx512_max_epu8): Ditto.
10495         (_mm_avx512_min_epu8): Ditto.
10496         (_mm256_avx512_max_epi16): Ditto.
10497         (_mm256_avx512_min_epi16): Ditto.
10498         (_mm256_avx512_max_epu16): Ditto.
10499         (_mm256_avx512_min_epu16): Ditto.
10500         (_mm256_avx512_insertf128_ps): Ditto.
10501         (_mm256_avx512_extractf128_pd): Ditto.
10502         (_mm256_avx512_extracti128_si256): Ditto.
10503         (_MM256_AVX512_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
10504         (_MM256_AVX512_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
10505         (_MM256_AVX512_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
10506         (_MM256_AVX512_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
10507         (__attribute__): Change intrin call.
10509 2023-11-06  Haochen Jiang  <haochen.jiang@intel.com>
10511         * config/i386/avx512bf16vlintrin.h: Change intrin call.
10512         * config/i386/avx512fintrin.h
10513         (_mm_avx512_undefined_ps): New.
10514         (_mm_avx512_undefined_pd): Ditto.
10515         (__attribute__): Change intrin call.
10516         * config/i386/avx512vbmivlintrin.h: Ditto.
10517         * config/i386/avx512vlbwintrin.h: Ditto.
10518         * config/i386/avx512vldqintrin.h: Ditto.
10519         * config/i386/avx512vlintrin.h
10520         (_mm_avx512_undefined_si128): New.
10521         (_mm256_avx512_undefined_ps): Ditto.
10522         (_mm256_avx512_undefined_pd): Ditto.
10523         (_mm256_avx512_undefined_si256): Ditto.
10524         (__attribute__): Change intrin call.
10526 2023-11-06  Haochen Jiang  <haochen.jiang@intel.com>
10528         * config/i386/avx512bitalgvlintrin.h: Change intrin call.
10529         * config/i386/avx512dqintrin.h: Ditto.
10530         * config/i386/avx512fintrin.h:
10531         (_mm_avx512_setzero_ps): New.
10532         (_mm_avx512_setzero_pd): Ditto.
10533         (__attribute__): Change intrin call.
10534         * config/i386/avx512fp16intrin.h: Ditto.
10535         * config/i386/avx512fp16vlintrin.h: Ditto.
10536         * config/i386/avx512vbmi2vlintrin.h: Ditto.
10537         * config/i386/avx512vbmivlintrin.h: Ditto.
10538         * config/i386/avx512vlbwintrin.h: Ditto.
10539         * config/i386/avx512vldqintrin.h: Ditto.
10540         * config/i386/avx512vlintrin.h
10541         (_mm_avx512_setzero_si128): New.
10542         (_mm256_avx512_setzero_pd): Ditto.
10543         (_mm256_avx512_setzero_ps): Ditto.
10544         (_mm256_avx512_setzero_si256): Ditto.
10545         (__attribute__): Change intrin call.
10546         * config/i386/avx512vpopcntdqvlintrin.h: Ditto.
10547         * config/i386/gfniintrin.h: Ditto.
10549 2023-11-05  Uros Bizjak  <ubizjak@gmail.com>
10551         * config/i386/i386.h (enum reg_class): Add LEGACY_INDEX_REGS.
10552         Rename LEGACY_REGS to LEGACY_GENERAL_REGS.
10553         (REG_CLASS_NAMES): Ditto.
10554         (REG_CLASS_CONTENTS): Ditto.
10555         * config/i386/constraints.md ("R"): Update for rename.
10557 2023-11-05  Richard Sandiford  <richard.sandiford@arm.com>
10559         * mode-switching.cc: Remove unused forward references.
10560         (seginfo): Remove bbnum.
10561         (new_seginfo): Remove associated argument.
10562         (optimize_mode_switching): Update calls accordingly.
10564 2023-11-05  Richard Sandiford  <richard.sandiford@arm.com>
10566         * read-rtl.cc (read_rtx_operand): Avoid spinning endlessly for
10567         invalid [...] operands.
10569 2023-11-05  Richard Sandiford  <richard.sandiford@arm.com>
10571         PR target/112105
10572         * config/aarch64/aarch64.cc (aarch64_modes_compatible_p): New
10573         function, with the core logic extracted from...
10574         (aarch64_can_change_mode_class): ...here.  Extend the previous rules
10575         to allow changes between partial SVE modes and other modes if
10576         the other mode is no bigger than an element, and if no other rule
10577         prevents it.  Use the aarch64_modes_tieable_p handling of
10578         partial Advanced SIMD structure modes.
10579         (aarch64_modes_tieable_p): Use aarch64_modes_compatible_p.
10580         Allow all vector mode ties that it allows.
10582 2023-11-05  Pan Li  <pan2.li@intel.com>
10584         * config/riscv/autovec.md: Remove the size check of lrint.
10585         * config/riscv/riscv-v.cc (emit_vec_narrow_cvt_x_f): New help
10586         emit func impl.
10587         (emit_vec_widden_cvt_x_f): New help emit func impl.
10588         (emit_vec_rounding_to_integer): New func impl to emit the
10589         rounding from FP to integer.
10590         (expand_vec_lrint): Leverage emit_vec_rounding_to_integer.
10591         * config/riscv/vector.md: Take V_VLSF for vfncvt.
10593 2023-11-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10595         * config/riscv/vector.md: Fix bug.
10597 2023-11-04  Sergei Trofimovich  <siarheit@google.com>
10599         PR bootstrap/112379
10600         * gcc-urlifier.cc (get_url_suffix_for_quoted_text): Mark as
10601         ATTRIBUTE_UNUSED.
10603 2023-11-04  Pan Li  <pan2.li@intel.com>
10605         * config/riscv/vector-iterators.md: Remove HF modes.
10607 2023-11-04  David Malcolm  <dmalcolm@redhat.com>
10609         * diagnostic.cc: Include "pretty-print-urlifier.h".
10610         (diagnostic_context::initialize): Initialize m_urlifier.
10611         (diagnostic_context::finish): Clean up m_urlifier
10612         (diagnostic_report::diagnostic): m_urlifier to pp_format.
10613         * diagnostic.h (diagnostic_context::m_urlifier): New field.
10614         * gcc-urlifier.cc: New file.
10615         * gcc-urlifier.def: New file.
10616         * gcc-urlifier.h: New file.
10617         * gcc.cc: Include "gcc-urlifier.h".
10618         (driver::global_initializations): Initialize global_dc->m_urlifier.
10619         * pretty-print-urlifier.h: New file.
10620         * pretty-print.cc: Include "pretty-print-urlifier.h".
10621         (obstack_append_string): New.
10622         (urlify_quoted_string): New.
10623         (pp_format): Add "urlifier" param and use it to implement optional
10624         urlification of quoted text strings.
10625         (pp_output_formatted_text): Make buffer a const pointer.
10626         (selftest::pp_printf_with_urlifier): New.
10627         (selftest::test_urlification): New.
10628         (selftest::pretty_print_cc_tests): Call it.
10629         * pretty-print.h (class urlifier): New forward declaration.
10630         (pp_format): Add optional urlifier param.
10631         * selftest-run-tests.cc (selftest::run_tests): Call
10632         selftest::gcc_urlifier_cc_tests .
10633         * selftest.h (selftest::gcc_urlifier_cc_tests): New decl.
10634         * toplev.cc: Include "gcc-urlifier.h".
10635         (general_init): Initialize global_dc->m_urlifier.
10637 2023-11-04  David Malcolm  <dmalcolm@redhat.com>
10639         * Makefile.in (GCC_OBJS): Add gcc-urlifier.o.
10640         (OBJS): Likewise.
10642 2023-11-04  David Malcolm  <dmalcolm@redhat.com>
10644         * common.opt (fdiagnostics-text-art-charset=): Remove refererence
10645         to diagnostic-text-art.h.
10646         * coretypes.h (struct diagnostic_context): Replace forward decl
10647         with...
10648         (class diagnostic_context): ...this.
10649         * diagnostic-format-json.cc: Update for changes to
10650         diagnostic_context.
10651         * diagnostic-format-sarif.cc: Likewise.
10652         * diagnostic-show-locus.cc: Likewise.
10653         * diagnostic-text-art.h: Deleted file, moving content...
10654         (enum diagnostic_text_art_charset): ...to diagnostic.h,
10655         (DIAGNOSTICS_TEXT_ART_CHARSET_DEFAULT): ...deleting,
10656         (diagnostics_text_art_charset_init): ...deleting in favor of
10657         diagnostic_context::set_text_art_charset.
10658         * diagnostic.cc: Remove include of "diagnostic-text-art.h".
10659         (pedantic_warning_kind): Update for field renaming.
10660         (permissive_error_kind): Likewise.
10661         (permissive_error_option): Likewise.
10662         (diagnostic_initialize): Convert to...
10663         (diagnostic_context::initialize): ...this, updating for field
10664         renamings.
10665         (diagnostic_color_init): Convert to...
10666         (diagnostic_context::color_init): ...this.
10667         (diagnostic_urls_init): Convert to...
10668         (diagnostic_context::urls_init): ...this.
10669         (diagnostic_initialize_input_context): Convert to...
10670         (diagnostic_context::initialize_input_context): ...this.
10671         (diagnostic_finish): Convert to...
10672         (diagnostic_context::finish): ...this, updating for field
10673         renamings.
10674         (diagnostic_context::set_output_format): New.
10675         (diagnostic_context::set_client_data_hooks): New.
10676         (diagnostic_context::create_edit_context): New.
10677         (diagnostic_converted_column): Convert to...
10678         (diagnostic_context::converted_column): ...this.
10679         (diagnostic_get_location_text): Update for field renaming.
10680         (diagnostic_check_max_errors): Convert to...
10681         (diagnostic_context::check_max_errors): ...this, updating for
10682         field renamings.
10683         (diagnostic_action_after_output): Convert to...
10684         (diagnostic_context::action_after_output): ...this, updating for
10685         field renamings.
10686         (last_module_changed_p): Delete.
10687         (set_last_module): Delete.
10688         (includes_seen): Convert to...
10689         (diagnostic_context::includes_seen_p): ...this, updating for field
10690         renamings.
10691         (diagnostic_report_current_module): Convert to...
10692         (diagnostic_context::report_current_module): ...this, updating for
10693         field renamings, and replacing uses of last_module_changed_p and
10694         set_last_module to simple field accesses.
10695         (diagnostic_show_any_path): Convert to...
10696         (diagnostic_context::show_any_path): ...this.
10697         (diagnostic_classify_diagnostic): Convert to...
10698         (diagnostic_context::classify_diagnostic): ...this, updating for
10699         field renamings.
10700         (diagnostic_push_diagnostics): Convert to...
10701         (diagnostic_context::push_diagnostics): ...this, updating for field
10702         renamings.
10703         (diagnostic_pop_diagnostics): Convert to...
10704         (diagnostic_context::pop_diagnostics): ...this, updating for field
10705         renamings.
10706         (get_any_inlining_info): Convert to...
10707         (diagnostic_context::get_any_inlining_info): ...this, updating for
10708         field renamings.
10709         (update_effective_level_from_pragmas): Convert to...
10710         (diagnostic_context::update_effective_level_from_pragmas):
10711         ...this, updating for field renamings.
10712         (print_any_cwe): Convert to...
10713         (diagnostic_context::print_any_cwe): ...this.
10714         (print_any_rules): Convert to...
10715         (diagnostic_context::print_any_rules): ...this.
10716         (print_option_information): Convert to...
10717         (diagnostic_context::print_option_information): ...this, updating
10718         for field renamings.
10719         (diagnostic_enabled): Convert to...
10720         (diagnostic_context::diagnostic_enabled): ...this, updating for
10721         field renamings.
10722         (warning_enabled_at): Convert to...
10723         (diagnostic_context::warning_enabled_at): ...this.
10724         (diagnostic_report_diagnostic): Convert to...
10725         (diagnostic_context::report_diagnostic): ...this, updating for
10726         field renamings and conversions to member functions.
10727         (diagnostic_append_note): Update for field renaming.
10728         (diagnostic_impl): Use diagnostic_context::report_diagnostic
10729         directly.
10730         (diagnostic_n_impl): Likewise.
10731         (diagnostic_emit_diagram): Convert to...
10732         (diagnostic_context::emit_diagram): ...this, updating for field
10733         renamings.
10734         (error_recursion): Convert to...
10735         (diagnostic_context::error_recursion): ...this.
10736         (diagnostic_text_output_format::~diagnostic_text_output_format):
10737         Use accessor.
10738         (diagnostics_text_art_charset_init): Convert to...
10739         (diagnostic_context::set_text_art_charset): ...this.
10740         (assert_location_text): Update for field renamings.
10741         * diagnostic.h (enum diagnostic_text_art_charset): Move here from
10742         diagnostic-text-art.h.
10743         (struct diagnostic_context): Convert to...
10744         (class diagnostic_context): ...this.
10745         (diagnostic_context::ice_handler_callback_t): New typedef.
10746         (diagnostic_context::set_locations_callback_t): New typedef.
10747         (diagnostic_context::initialize): New decl.
10748         (diagnostic_context::color_init): New decl.
10749         (diagnostic_context::urls_init): New decl.
10750         (diagnostic_context::file_cache_init): New decl.
10751         (diagnostic_context::finish): New decl.
10752         (diagnostic_context::set_set_locations_callback): New.
10753         (diagnostic_context::initialize_input_context): New decl.
10754         (diagnostic_context::warning_enabled_at): New decl.
10755         (diagnostic_context::option_unspecified_p): New.
10756         (diagnostic_context::report_diagnostic): New decl.
10757         (diagnostic_context::report_current_module): New decl.
10758         (diagnostic_context::check_max_errors): New decl.
10759         (diagnostic_context::action_after_output): New decl.
10760         (diagnostic_context::classify_diagnostic): New decl.
10761         (diagnostic_context::push_diagnostics): New decl.
10762         (diagnostic_context::pop_diagnostics): New decl.
10763         (diagnostic_context::emit_diagram): New decl.
10764         (diagnostic_context::set_output_format): New decl.
10765         (diagnostic_context::set_text_art_charset): New decl.
10766         (diagnostic_context::set_client_data_hooks): New decl.
10767         (diagnostic_context::create_edit_context): New decl.
10768         (diagnostic_context::set_warning_as_error_requested): New.
10769         (diagnostic_context::set_report_bug): New.
10770         (diagnostic_context::set_extra_output_kind): New.
10771         (diagnostic_context::set_show_cwe): New.
10772         (diagnostic_context::set_show_rules): New.
10773         (diagnostic_context::set_path_format): New.
10774         (diagnostic_context::set_show_path_depths): New.
10775         (diagnostic_context::set_show_option_requested): New.
10776         (diagnostic_context::set_max_errors): New.
10777         (diagnostic_context::set_escape_format): New.
10778         (diagnostic_context::set_ice_handler_callback): New.
10779         (diagnostic_context::warning_as_error_requested_p): New.
10780         (diagnostic_context::show_path_depths_p): New.
10781         (diagnostic_context::get_path_format): New.
10782         (diagnostic_context::get_escape_format): New.
10783         (diagnostic_context::get_file_cache): New.
10784         (diagnostic_context::get_edit_context): New.
10785         (diagnostic_context::get_client_data_hooks): New.
10786         (diagnostic_context::get_diagram_theme): New.
10787         (diagnostic_context::converted_column): New decl.
10788         (diagnostic_context::diagnostic_count): New.
10789         (diagnostic_context::includes_seen_p): New decl.
10790         (diagnostic_context::print_any_cwe): New decl.
10791         (diagnostic_context::print_any_rules): New decl.
10792         (diagnostic_context::print_option_information): New decl.
10793         (diagnostic_context::show_any_path): New decl.
10794         (diagnostic_context::error_recursion): New decl.
10795         (diagnostic_context::diagnostic_enabled): New decl.
10796         (diagnostic_context::get_any_inlining_info): New decl.
10797         (diagnostic_context::update_effective_level_from_pragmas): New
10798         decl.
10799         (diagnostic_context::m_file_cache): Make private.
10800         (diagnostic_context::diagnostic_count): Rename to...
10801         (diagnostic_context::m_diagnostic_count): ...this and make
10802         private.
10803         (diagnostic_context::warning_as_error_requested): Rename to...
10804         (diagnostic_context::m_warning_as_error_requested): ...this and
10805         make private.
10806         (diagnostic_context::n_opts): Rename to...
10807         (diagnostic_context::m_n_opts): ...this and make private.
10808         (diagnostic_context::classify_diagnostic): Rename to...
10809         (diagnostic_context::m_classify_diagnostic): ...this and make
10810         private.
10811         (diagnostic_context::classification_history): Rename to...
10812         (diagnostic_context::m_classification_history): ...this and make
10813         private.
10814         (diagnostic_context::n_classification_history): Rename to...
10815         (diagnostic_context::m_n_classification_history): ...this and make
10816         private.
10817         (diagnostic_context::push_list): Rename to...
10818         (diagnostic_context::m_push_list): ...this and make private.
10819         (diagnostic_context::n_push): Rename to...
10820         (diagnostic_context::m_n_push): ...this and make private.
10821         (diagnostic_context::show_cwe): Rename to...
10822         (diagnostic_context::m_show_cwe): ...this and make private.
10823         (diagnostic_context::show_rules): Rename to...
10824         (diagnostic_context::m_show_rules): ...this and make private.
10825         (diagnostic_context::path_format): Rename to...
10826         (diagnostic_context::m_path_format): ...this and make private.
10827         (diagnostic_context::show_path_depths): Rename to...
10828         (diagnostic_context::m_show_path_depths): ...this and make
10829         private.
10830         (diagnostic_context::show_option_requested): Rename to...
10831         (diagnostic_context::m_show_option_requested): ...this and make
10832         private.
10833         (diagnostic_context::abort_on_error): Rename to...
10834         (diagnostic_context::m_abort_on_error): ...this.
10835         (diagnostic_context::show_column): Rename to...
10836         (diagnostic_context::m_show_column): ...this.
10837         (diagnostic_context::pedantic_errors): Rename to...
10838         (diagnostic_context::m_pedantic_errors): ...this.
10839         (diagnostic_context::permissive): Rename to...
10840         (diagnostic_context::m_permissive): ...this.
10841         (diagnostic_context::opt_permissive): Rename to...
10842         (diagnostic_context::m_opt_permissive): ...this.
10843         (diagnostic_context::fatal_errors): Rename to...
10844         (diagnostic_context::m_fatal_errors): ...this.
10845         (diagnostic_context::dc_inhibit_warnings): Rename to...
10846         (diagnostic_context::m_inhibit_warnings): ...this.
10847         (diagnostic_context::dc_warn_system_headers): Rename to...
10848         (diagnostic_context::m_warn_system_headers): ...this.
10849         (diagnostic_context::max_errors): Rename to...
10850         (diagnostic_context::m_max_errors): ...this and make private.
10851         (diagnostic_context::internal_error): Rename to...
10852         (diagnostic_context::m_internal_error): ...this.
10853         (diagnostic_context::option_enabled): Rename to...
10854         (diagnostic_context::m_option_enabled): ...this.
10855         (diagnostic_context::option_state): Rename to...
10856         (diagnostic_context::m_option_state): ...this.
10857         (diagnostic_context::option_name): Rename to...
10858         (diagnostic_context::m_option_name): ...this.
10859         (diagnostic_context::get_option_url): Rename to...
10860         (diagnostic_context::m_get_option_url): ...this.
10861         (diagnostic_context::print_path): Rename to...
10862         (diagnostic_context::m_print_path): ...this.
10863         (diagnostic_context::make_json_for_path): Rename to...
10864         (diagnostic_context::m_make_json_for_path): ...this.
10865         (diagnostic_context::x_data): Rename to...
10866         (diagnostic_context::m_client_aux_data): ...this.
10867         (diagnostic_context::last_location): Rename to...
10868         (diagnostic_context::m_last_location): ...this.
10869         (diagnostic_context::last_module): Rename to...
10870         (diagnostic_context::m_last_module): ...this and make private.
10871         (diagnostic_context::lock): Rename to...
10872         (diagnostic_context::m_lock): ...this and make private.
10873         (diagnostic_context::lang_mask): Rename to...
10874         (diagnostic_context::m_lang_mask): ...this.
10875         (diagnostic_context::inhibit_notes_p): Rename to...
10876         (diagnostic_context::m_inhibit_notes_p): ...this.
10877         (diagnostic_context::report_bug): Rename to...
10878         (diagnostic_context::m_report_bug): ...this and make private.
10879         (diagnostic_context::extra_output_kind): Rename to...
10880         (diagnostic_context::m_extra_output_kind): ...this and make
10881         private.
10882         (diagnostic_context::column_unit): Rename to...
10883         (diagnostic_context::m_column_unit): ...this and make private.
10884         (diagnostic_context::column_origin): Rename to...
10885         (diagnostic_context::m_column_origin): ...this and make private.
10886         (diagnostic_context::tabstop): Rename to...
10887         (diagnostic_context::m_tabstop): ...this and make private.
10888         (diagnostic_context::escape_format): Rename to...
10889         (diagnostic_context::m_escape_format): ...this and make private.
10890         (diagnostic_context::edit_context_ptr): Rename to...
10891         (diagnostic_context::m_edit_context_ptr): ...this and make
10892         private.
10893         (diagnostic_context::set_locations_cb): Rename to...
10894         (diagnostic_context::m_set_locations_cb): ...this and make
10895         private.
10896         (diagnostic_context::ice_handler_cb): Rename to...
10897         (diagnostic_context::m_ice_handler_cb): ...this and make private.
10898         (diagnostic_context::includes_seen): Rename to...
10899         (diagnostic_context::m_includes_seen): ...this and make private.
10900         (diagnostic_inhibit_notes): Update for field renaming.
10901         (diagnostic_context_auxiliary_data): Likewise.
10902         (diagnostic_abort_on_error): Convert from macro to inline function
10903         and update for field renaming.
10904         (diagnostic_kind_count): Convert from macro to inline function and
10905         use diagnostic_count accessor.
10906         (diagnostic_report_warnings_p): Update for field renaming.
10907         (diagnostic_initialize): Convert decl to inline function calling
10908         into diagnostic_context.
10909         (diagnostic_color_init): Likewise.
10910         (diagnostic_urls_init): Likewise.
10911         (diagnostic_urls_init): Likewise.
10912         (diagnostic_finish): Likewise.
10913         (diagnostic_report_current_module): Likewise.
10914         (diagnostic_show_any_path): Delete decl.
10915         (diagnostic_initialize_input_context): Convert decl to inline
10916         function calling into diagnostic_context.
10917         (diagnostic_classify_diagnostic): Likewise.
10918         (diagnostic_push_diagnostics): Likewise.
10919         (diagnostic_pop_diagnostics): Likewise.
10920         (diagnostic_report_diagnostic): Likewise.
10921         (diagnostic_action_after_output): Likewise.
10922         (diagnostic_check_max_errors): Likewise.
10923         (diagnostic_file_cache_fini): Delete decl.
10924         (diagnostic_converted_column): Delete decl.
10925         (warning_enabled_at): Convert decl to inline function calling into
10926         diagnostic_context.
10927         (option_unspecified_p): New.
10928         (diagnostic_emit_diagram): Delete decl.
10929         * gcc.cc: Remove include of "diagnostic-text-art.h".
10930         Update for changes to diagnostic_context.
10931         * input.cc (diagnostic_file_cache_init): Move implementation
10932         to...
10933         (diagnostic_context::file_cache_init): ...this new member
10934         function.
10935         (diagnostic_file_cache_fini): Delete.
10936         (diagnostics_file_cache_forcibly_evict_file): Update for
10937         m_file_cache becoming private.
10938         (location_get_source_line): Likewise.
10939         (get_source_file_content): Likewise.
10940         (location_missing_trailing_newline): Likewise.
10941         * input.h (diagnostics_file_cache_fini): Delete.
10942         * langhooks.cc: Update for changes to diagnostic_context.
10943         * lto-wrapper.cc: Likewise.
10944         * opts.cc: Remove include of "diagnostic-text-art.h".
10945         Update for changes to diagnostic_context.
10946         * selftest-diagnostic.cc: Update for changes to
10947         diagnostic_context.
10948         * toplev.cc: Likewise.
10949         * tree-diagnostic-path.cc: Likewise.
10950         * tree-diagnostic.cc: Likewise.
10952 2023-11-03  Martin Uecker  <uecker@tugraz.at>
10954         PR c/98541
10955         * gimple-ssa-warn-access.cc
10956         (pass_waccess::maybe_check_access_sizes): For VLA bounds
10957         in parameters, only warn about null pointers with 'static'.
10959 2023-11-03  Andre Vieira  <andre.simoesdiasvieira@arm.com>
10961         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Allow unmasked
10962         calls to use masked simdclones.
10964 2023-11-03  David Malcolm  <dmalcolm@redhat.com>
10966         * diagnostic.cc (diagnostic_initialize): Update for consolidation
10967         of group-based fields.
10968         (diagnostic_report_diagnostic): Likewise.
10969         (diagnostic_context::begin_group): New, based on body of
10970         auto_diagnostic_group's ctor.
10971         (diagnostic_context::end_group): New, based on body of
10972         auto_diagnostic_group's dtor.
10973         (auto_diagnostic_group::auto_diagnostic_group): Convert to a call
10974         to begin_group.
10975         (auto_diagnostic_group::~auto_diagnostic_group): Convert to a call
10976         to end_group.
10977         * diagnostic.h (diagnostic_context::begin_group): New decl.
10978         (diagnostic_context::end_group): New decl.
10979         (diagnostic_context::diagnostic_group_nesting_depth): Rename to...
10980         (diagnostic_context::m_diagnostic_groups.m_nesting_depth):
10981         ...this.
10982         (diagnostic_context::diagnostic_group_emission_count): Rename
10983         to...
10984         (diagnostic_context::m_diagnostic_groups::m_emission_count):
10985         ...this.
10987 2023-11-03  Andrew MacLeod  <amacleod@redhat.com>
10989         PR tree-optimization/111766
10990         * range-op.cc (operator_equal::fold_range): Check constants
10991         against the bitmask.
10992         (operator_not_equal::fold_range): Ditto.
10993         * value-range.h (irange_bitmask::member_p): New.
10995 2023-11-03  Andrew MacLeod  <amacleod@redhat.com>
10997         * value-range.cc (irange_bitmask::adjust_range): New.
10998         (irange::intersect_bitmask): Call adjust_range.
10999         * value-range.h (irange_bitmask::adjust_range): New prototype.
11001 2023-11-03  Uros Bizjak  <ubizjak@gmail.com>
11003         * config/i386/i386.cc (ix86_memory_address_use_extended_reg_class_p):
11004         Rename to ...
11005         (ix86_memory_address_reg_class): ... this.  Generalize address
11006         register class handling to allow multiple address register classes.
11007         Return maximal class for unrecognized instructions.  Improve comments.
11008         (ix86_insn_base_reg_class): Rewrite to handle
11009         multiple address register classes.
11010         (ix86_regno_ok_for_insn_base_p): Ditto.
11011         (ix86_insn_index_reg_class): Ditto.
11012         * config/i386/i386.md: Rename "gpr32" attribute to "addr"
11013         and substitute its values with "0" -> "gpr16", "1" -> "*".
11014         (addr): New attribute to limit allowed address register set.
11015         (gpr32): Remove.
11016         * config/i386/mmx.md: Rename "gpr32" attribute to "addr"
11017         and substitute its values with "0" -> "gpr16", "1" -> "*".
11018         * config/i386/sse.md: Ditto.
11020 2023-11-03  Richard Biener  <rguenther@suse.de>
11022         * tree-vect-loop.cc (vectorizable_live_operation): Simplify
11023         LC PHI replacement.
11025 2023-11-03  Roger Sayle  <roger@nextmovesoftware.com>
11027         * config/arc/arc.md (addsi3): Fix GNU-style code formatting.
11028         (adddi3): Change define_expand to generate a *adddi3.
11029         (*adddi3): New define_insn_and_split to lower DImode additions
11030         during the split1 pass (after combine and before reload).
11031         (ashldi3): New define_expand to (only) generate *ashldi3_cnt1
11032         for DImode left shifts by a single bit.
11033         (*ashldi3_cnt1): New define_insn_and_split to lower DImode
11034         left shifts by one bit to an *adddi3.
11036 2023-11-03  Richard Sandiford  <richard.sandiford@arm.com>
11038         * config/aarch64/aarch64.md (*cmov_uxtw_insn_insv): Remove
11039         can_create_pseudo_p condition.
11041 2023-11-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11043         * tree-vect-slp.cc (vect_get_and_check_slp_defs): Support SLP for dummy mask -1.
11044         * tree-vect-stmts.cc (vectorizable_load): Ditto.
11046 2023-11-03  Richard Biener  <rguenther@suse.de>
11048         PR tree-optimization/112366
11049         * tree-vect-loop.cc (vectorizable_live_operation): Remove
11050         assert.
11052 2023-11-03  Richard Biener  <rguenther@suse.de>
11054         PR tree-optimization/112310
11055         * tree-ssa-pre.cc (do_hoist_insertion): Keep the union
11056         of expressions, validate dependences are contained within
11057         the hoistable set before hoisting.
11059 2023-11-03  Pan Li  <pan2.li@intel.com>
11061         * config/riscv/autovec.md (lrint<mode><v_i_l_ll_convert>2): Remove.
11062         (lround<mode><v_i_l_ll_convert>2): Ditto.
11063         (lceil<mode><v_i_l_ll_convert>2): Ditto.
11064         (lfloor<mode><v_i_l_ll_convert>2): Ditto.
11065         (lrint<mode><v_f2si_convert>2): New pattern for cvt from
11066         FP to SI.
11067         (lround<mode><v_f2si_convert>2): Ditto.
11068         (lceil<mode><v_f2si_convert>2): Ditto.
11069         (lfloor<mode><v_f2si_convert>2): Ditto.
11070         (lrint<mode><v_f2di_convert>2): New pattern for cvt from
11071         FP to DI.
11072         (lround<mode><v_f2di_convert>2): Ditto.
11073         (lceil<mode><v_f2di_convert>2): Ditto.
11074         (lfloor<mode><v_f2di_convert>2): Ditto.
11075         * config/riscv/vector-iterators.md: Renew iterators for both
11076         the SI and DI.
11078 2023-11-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11080         PR target/112326
11081         * config/riscv/riscv-avlprop.cc (get_insn_vtype_mode): New function.
11082         (simplify_replace_vlmax_avl): Ditto.
11083         (pass_avlprop::execute): Add immediate AVL simplification.
11084         * config/riscv/riscv-protos.h (imm_avl_p): Rename.
11085         * config/riscv/riscv-v.cc (const_vlmax_p): Ditto.
11086         (imm_avl_p): Ditto.
11087         (emit_vlmax_insn): Adapt for new interface name.
11088         * config/riscv/vector.md (mode_idx): New attribute.
11090 2023-11-03  Pan Li  <pan2.li@intel.com>
11092         Revert:
11093         2023-11-02  Pan Li  <pan2.li@intel.com>
11095         * config/riscv/autovec.md (lrint<mode><v_i_l_ll_convert>2): Remove.
11096         (lround<mode><v_i_l_ll_convert>2): Ditto.
11097         (lceil<mode><v_i_l_ll_convert>2): Ditto.
11098         (lfloor<mode><v_i_l_ll_convert>2): Ditto.
11099         (lrint<mode><v_f2si_convert>2): New pattern for cvt from
11100         FP to SI.
11101         (lround<mode><v_f2si_convert>2): Ditto.
11102         (lceil<mode><v_f2si_convert>2): Ditto.
11103         (lfloor<mode><v_f2si_convert>2): Ditto.
11104         (lrint<mode><v_f2di_convert>2): New pattern for cvt from
11105         FP to DI.
11106         (lround<mode><v_f2di_convert>2): Ditto.
11107         (lceil<mode><v_f2di_convert>2): Ditto.
11108         (lfloor<mode><v_f2di_convert>2): Ditto.
11109         * config/riscv/vector-iterators.md: Renew iterators for both
11110         the SI and DI.
11112 2023-11-02  Edwin Lu  <ewlu@rivosinc.com>
11114         * config/riscv/riscv.cc (riscv_sched_variable_issue): add disabled assert
11116 2023-11-02  Jeff Law  <jlaw@ventanamicro.com>
11118         * config/h8300/combiner.md: Add new patterns for single bit
11119         sign extractions.
11121 2023-11-02  Pan Li  <pan2.li@intel.com>
11123         * config/riscv/autovec.md (lrint<mode><v_i_l_ll_convert>2): Remove.
11124         (lround<mode><v_i_l_ll_convert>2): Ditto.
11125         (lceil<mode><v_i_l_ll_convert>2): Ditto.
11126         (lfloor<mode><v_i_l_ll_convert>2): Ditto.
11127         (lrint<mode><v_f2si_convert>2): New pattern for cvt from
11128         FP to SI.
11129         (lround<mode><v_f2si_convert>2): Ditto.
11130         (lceil<mode><v_f2si_convert>2): Ditto.
11131         (lfloor<mode><v_f2si_convert>2): Ditto.
11132         (lrint<mode><v_f2di_convert>2): New pattern for cvt from
11133         FP to DI.
11134         (lround<mode><v_f2di_convert>2): Ditto.
11135         (lceil<mode><v_f2di_convert>2): Ditto.
11136         (lfloor<mode><v_f2di_convert>2): Ditto.
11137         * config/riscv/vector-iterators.md: Renew iterators for both
11138         the SI and DI.
11140 2023-11-02  Sam James  <sam@gentoo.org>
11142         * doc/passes.texi (Dead code elimination): Explicitly say 'lifetime'
11143         as this has become the standard term for what we're doing here.
11145 2023-11-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11147         * config/riscv/riscv-avlprop.cc
11148         (pass_avlprop::get_vlmax_ta_preferred_avl): Don't allow
11149         non-real insn AVL propation.
11151 2023-11-02  Robin Dapp  <rdapp@ventanamicro.com>
11153         PR middle-end/111401
11154         * internal-fn.cc (internal_fn_else_index): New function.
11155         * internal-fn.h (internal_fn_else_index): Define.
11156         * tree-if-conv.cc (convert_scalar_cond_reduction): Emit COND_OP
11157         if supported.
11158         (predicate_scalar_phi): Add whitespace.
11159         * tree-vect-loop.cc (fold_left_reduction_fn): Add IFN_COND_OP.
11160         (neutral_op_for_reduction): Return -0 for PLUS.
11161         (check_reduction_path): Don't count else operand in COND_OP.
11162         (vect_is_simple_reduction): Ditto.
11163         (vect_create_epilog_for_reduction): Fix whitespace.
11164         (vectorize_fold_left_reduction): Add COND_OP handling.
11165         (vectorizable_reduction): Don't count else operand in COND_OP.
11166         (vect_transform_reduction): Add COND_OP handling.
11167         * tree-vectorizer.h (neutral_op_for_reduction): Add default
11168         parameter.
11170 2023-11-02  Richard Biener  <rguenther@suse.de>
11172         PR tree-optimization/112320
11173         * gimple-fold.h (rewrite_to_defined_overflow): New overload
11174         for in-place operation.
11175         * gimple-fold.cc (rewrite_to_defined_overflow): Add stmt
11176         iterator argument to worker, define separate API for
11177         in-place and not in-place operation.
11178         * tree-if-conv.cc (predicate_statements): Simplify.
11179         * tree-scalar-evolution.cc (final_value_replacement_loop):
11180         Likewise.
11181         * tree-ssa-ifcombine.cc (pass_tree_ifcombine::execute): Adjust.
11182         * tree-ssa-reassoc.cc (update_range_test): Likewise.
11184 2023-11-02  Uros Bizjak  <ubizjak@gmail.com>
11186         * config/i386/i386.md: Move stack protector patterns
11187         above mov $0,%reg -> xor %reg,%reg peephole2 pattern.
11189 2023-11-02  liuhongt  <hongtao.liu@intel.com>
11191         * config/i386/mmx.md (cmlav4hf4): New expander.
11192         (cmla_conjv4hf4): Ditto.
11193         (cmulv4hf3): Ditto.
11194         (cmul_conjv4hf3): Ditto.
11196 2023-11-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11198         * config/riscv/vector.md: Fix redundant codes in attributes.
11200 2023-11-02  xuli  <xuli1@eswincomputing.com>
11202         * config/riscv/riscv-vector-builtins-bases.cc: Expand non-tuple intrinsics.
11203         * config/riscv/riscv-vector-builtins-functions.def (vcreate): Define non-tuple intrinsics.
11204         * config/riscv/riscv-vector-builtins-shapes.cc (struct vcreate_def): Ditto.
11205         * config/riscv/riscv-vector-builtins.cc: Add arg types.
11207 2023-11-02  Pan Li  <pan2.li@intel.com>
11209         * tree-vect-stmts.cc (vectorizable_internal_function): Add type
11210         size check for vectype_out doesn't participating for optab query.
11211         (vectorizable_call): Remove the type size check.
11213 2023-11-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11215         PR target/112327
11216         * config/riscv/vector.md: Add '0'.
11218 2023-11-01  Roger Sayle  <roger@nextmovesoftware.com>
11220         PR target/110551
11221         * config/i386/i386.md (*bmi2_umul<mode><dwi>3_1): Tidy condition
11222         as operands[2] with predicate register_operand must be !MEM_P.
11223         (peephole2): Optimize a mulx followed by a register-to-register
11224         move, to place result in the correct destination if possible.
11226 2023-11-01  Patrick O'Neill  <patrick@rivosinc.com>
11228         * config/riscv/sync.md:  Use riscv_subword_address function to
11229         calculate the address and shift in atomic_test_and_set.
11231 2023-11-01  Vineet Gupta  <vineetg@rivosinc.com>
11233         * config/riscv/riscv.cc (riscv_promote_function_mode): Fix mode
11234         returned for libcall case.
11236 2023-11-01  Martin Uecker  <uecker@tugraz.at>
11238         PR c/71219
11239         * doc/invoke.texi: Document -Walloc-size option.
11241 2023-11-01  Edwin Lu  <ewlu@rivosinc.com>
11243         * genautomata.cc (write_automata): move endif
11245 2023-11-01  Andre Vieira  <andre.simoesdiasvieira@arm.com>
11247         * omp-simd-clone.cc (simd_clone_adjust_return_type): Hoist out code to
11248         create return array and don't return new type.
11249         (simd_clone_adjust_argument_types): Hoist out code that creates
11250         ipa_param_body_adjustments and don't return them.
11251         (simd_clone_adjust): Call TARGET_SIMD_CLONE_ADJUST after return and
11252         argument types have been vectorized, create adjustments and return array
11253         after the hook.
11254         (expand_simd_clones): Call TARGET_SIMD_CLONE_ADJUST after return and
11255         argument types have been vectorized.
11257 2023-11-01  Uros Bizjak  <ubizjak@gmail.com>
11259         PR target/112332
11260         * config/i386/i386.md (stack_protexct_set_2 peephole2):
11261         Use general_gr_operand as operand 4 predicate.
11263 2023-11-01  Uros Bizjak  <ubizjak@gmail.com>
11265         * config/i386/i386.md (stack_protect_set): Explicitly
11266         generate scratch register in word mode.
11267         (@stack_protect_set_1_<mode>): Rename to ...
11268         (@stack_protect_set_1_<PTR:mode>_<SWI48:mode>): ... this.
11269         Use SWI48 mode iterator to match scratch register.
11270         (stack_protexct_set_1 peephole2): Use PTR, W and SWI48 mode
11271         iterators to match peephole sequence.  Use general_operand
11272         predicate for operand 4.  Allow different operand 2 and operand 3
11273         registers and use peep2_reg_dead_p to ensure new scratch
11274         register is dead before peephole seqeunce. Use peep2_reg_dead_p
11275         to ensure old scratch register is dead after peephole sequence.
11276         (*stack_protect_set_2_<mode>): Rename to ...
11277         (*stack_protect_set_2_<mode>_si): .. this.
11278         (*stack_protect_set_3): Rename to ...
11279         (*stack_protect_set_2_<mode>_di): ... this.
11280         Use PTR mode iterator to match stack protector memory move.
11281         Use earlyclobber for all alternatives of operand 1.
11282         (stack_protexct_set_2 peephole2): Use PTR, W and SWI48 mode
11283         iterators to match peephole sequence.  Use general_operand
11284         predicate for operand 4.  Allow different operand 2 and operand 3
11285         registers and use peep2_reg_dead_p to ensure new scratch
11286         register is dead before peephole seqeunce. Use peep2_reg_dead_p
11287         to ensure old scratch register is dead after peephole sequence.
11289 2023-11-01  xuli  <xuli1@eswincomputing.com>
11291         * config/riscv/riscv-vector-builtins-functions.def (vundefined): Add vundefine
11292         intrinsics for tuple types.
11293         * config/riscv/riscv-vector-builtins.cc: Ditto.
11294         * config/riscv/vector.md (@vundefined<mode>): Ditto.
11296 2023-11-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11298         * tree-vect-slp.cc (vect_build_slp_tree_1): Fix whitespace.
11300 2023-10-31  David Malcolm  <dmalcolm@redhat.com>
11302         * Makefile.in (ANALYZER_OBJS): Add analyzer/record-layout.o.
11304 2023-10-31  David Malcolm  <dmalcolm@redhat.com>
11306         * input.cc (dump_location_info): Update for removal of
11307         MACRO_MAP_EXPANSION_POINT_LOCATION.
11308         * tree-diagnostic.cc (maybe_unwind_expanded_macro_loc):
11309         Likewise.
11311 2023-10-31  David Malcolm  <dmalcolm@redhat.com>
11313         * opts.cc (get_option_url): Update comment; the requirement to
11314         pass DOCUMENTATION_ROOT_URL's value via -D was removed in
11315         r10-8065-ge33a1eae25b8a8.
11317 2023-10-31  David Malcolm  <dmalcolm@redhat.com>
11319         * pretty-print.cc (pretty_printer::pretty_printer): Initialize
11320         m_skipping_null_url.
11321         (pp_begin_url): Handle URL being null.
11322         (pp_end_url): Likewise.
11323         (selftest::test_null_urls): New.
11324         (selftest::pretty_print_cc_tests): Call it.
11325         * pretty-print.h (pretty_printer::m_skipping_null_url): New.
11327 2023-10-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11329         * tree-vect-slp.cc (vect_get_operand_map): Add MASK_LEN_GATHER_LOAD.
11330         (vect_build_slp_tree_1): Ditto.
11331         (vect_build_slp_tree_2): Ditto.
11333 2023-10-31  Cupertino Miranda  <cupertino.miranda@oracle.com>
11335         * config/bpf/bpf-passes.def (pass_lower_bpf_core): Added pass.
11336         * config/bpf/bpf-protos.h: Added prototype for new pass.
11337         * config/bpf/bpf.cc (bpf_delegitimize_address): New function.
11338         * config/bpf/bpf.md (mov_reloc_core<MM:mode>): Prefixed
11339         name with '*'.
11340         * config/bpf/core-builtins.cc (cr_builtins) Added access_node to
11341         struct.
11342         (is_attr_preserve_access): Improved check.
11343         (core_field_info): Make use of root_for_core_field_info
11344         function.
11345         (process_field_expr): Adapted to new functions.
11346         (pack_type): Small improvement.
11347         (bpf_handle_plugin_finish_type): Adapted to GTY(()).
11348         (bpf_init_core_builtins): Changed to new function names.
11349         (construct_builtin_core_reloc): Improved implementation.
11350         (bpf_resolve_overloaded_core_builtin): Changed how
11351         __builtin_preserve_access_index is converted.
11352         (compute_field_expr): Corrected implementation. Added
11353         access_node argument.
11354         (bpf_core_get_index): Added valid argument.
11355         (root_for_core_field_info, pack_field_expr)
11356         (core_expr_with_field_expr_plus_base, make_core_safe_access_index)
11357         (replace_core_access_index_comp_expr, maybe_get_base_for_field_expr)
11358         (core_access_clean, core_is_access_index, core_mark_as_access_index)
11359         (make_gimple_core_safe_access_index, execute_lower_bpf_core)
11360         (make_pass_lower_bpf_core): Added functions.
11361         (pass_data_lower_bpf_core): New pass struct.
11362         (pass_lower_bpf_core): New gimple_opt_pass class.
11363         (pack_field_expr_for_preserve_field)
11364         (bpf_replace_core_move_operands): Removed function.
11365         (bpf_enum_value_kind): Added GTY(()).
11366         * config/bpf/core-builtins.h (bpf_field_info_kind, bpf_type_id_kind)
11367         (bpf_type_info_kind, bpf_enum_value_kind): New enum.
11368         * config/bpf/t-bpf: Added pass bpf-passes.def to PASSES_EXTRA.
11370 2023-10-31  Neal Frager  <neal.frager@amd.com>
11372         * config/microblaze/microblaze.cc: Fix mcpu version check.
11374 2023-10-31  Patrick O'Neill  <patrick@rivosinc.com>
11376         * config/riscv/sync-rvwmo.md (atomic_load_rvwmo<mode>): Remove
11377         TARGET_ATOMIC constraint
11378         (atomic_store_rvwmo<mode>): Ditto.
11379         * config/riscv/sync-ztso.md (atomic_load_ztso<mode>): Ditto.
11380         (atomic_store_ztso<mode>): Ditto.
11381         * config/riscv/sync.md (atomic_load<mode>): Ditto.
11382         (atomic_store<mode>): Ditto.
11384 2023-10-31  Christoph Müllner  <christoph.muellner@vrull.eu>
11386         * config/riscv/riscv.cc (riscv_index_reg_class):
11387         Return GR_REGS for XTheadFMemIdx.
11388         (riscv_regno_ok_for_index_p): Add support for XTheadFMemIdx.
11389         * config/riscv/riscv.h (HARDFP_REG_P): New macro.
11390         * config/riscv/thead.cc (is_fmemidx_mode): New function.
11391         (th_memidx_classify_address_index): Add support for XTheadFMemIdx.
11392         (th_fmemidx_output_index): New function.
11393         (th_output_move): Add support for XTheadFMemIdx.
11394         * config/riscv/thead.md (TH_M_ANYF): New mode iterator.
11395         (TH_M_NOEXTF): Likewise.
11396         (*th_fmemidx_movsf_hardfloat): New INSN.
11397         (*th_fmemidx_movdf_hardfloat_rv64): Likewise.
11398         (*th_fmemidx_I_a): Likewise.
11399         (*th_fmemidx_I_c): Likewise.
11400         (*th_fmemidx_US_a): Likewise.
11401         (*th_fmemidx_US_c): Likewise.
11402         (*th_fmemidx_UZ_a): Likewise.
11403         (*th_fmemidx_UZ_c): Likewise.
11405 2023-10-31  Christoph Müllner  <christoph.muellner@vrull.eu>
11407         * config/riscv/constraints.md (th_m_mia): New constraint.
11408         (th_m_mib): Likewise.
11409         (th_m_mir): Likewise.
11410         (th_m_miu): Likewise.
11411         * config/riscv/riscv-protos.h (enum riscv_address_type):
11412         Add new address types ADDRESS_REG_REG, ADDRESS_REG_UREG,
11413         and ADDRESS_REG_WB and their documentation.
11414         (struct riscv_address_info): Add new field 'shift' and
11415         document the field usage for the new address types.
11416         (riscv_valid_base_register_p): New prototype.
11417         (th_memidx_legitimate_modify_p): Likewise.
11418         (th_memidx_legitimate_index_p): Likewise.
11419         (th_classify_address): Likewise.
11420         (th_output_move): Likewise.
11421         (th_print_operand_address): Likewise.
11422         * config/riscv/riscv.cc (riscv_index_reg_class):
11423         Return GR_REGS for XTheadMemIdx.
11424         (riscv_regno_ok_for_index_p): Add support for XTheadMemIdx.
11425         (riscv_classify_address): Call th_classify_address() on top.
11426         (riscv_output_move): Call th_output_move() on top.
11427         (riscv_print_operand_address): Call th_print_operand_address()
11428         on top.
11429         * config/riscv/riscv.h (HAVE_POST_MODIFY_DISP): New macro.
11430         (HAVE_PRE_MODIFY_DISP): Likewise.
11431         * config/riscv/riscv.md (zero_extendqi<SUPERQI:mode>2): Disable
11432         for XTheadMemIdx.
11433         (*zero_extendqi<SUPERQI:mode>2_internal): Convert to expand,
11434         create INSN with same name and disable it for XTheadMemIdx.
11435         (extendsidi2): Likewise.
11436         (*extendsidi2_internal): Disable for XTheadMemIdx.
11437         * config/riscv/thead.cc (valid_signed_immediate): New helper
11438         function.
11439         (th_memidx_classify_address_modify): New function.
11440         (th_memidx_legitimate_modify_p): Likewise.
11441         (th_memidx_output_modify): Likewise.
11442         (is_memidx_mode): Likewise.
11443         (th_memidx_classify_address_index): Likewise.
11444         (th_memidx_legitimate_index_p): Likewise.
11445         (th_memidx_output_index): Likewise.
11446         (th_classify_address): Likewise.
11447         (th_output_move): Likewise.
11448         (th_print_operand_address): Likewise.
11449         * config/riscv/thead.md (*th_memidx_operand): New splitter.
11450         (*th_memidx_zero_extendqi<SUPERQI:mode>2): New INSN.
11451         (*th_memidx_extendsidi2): Likewise.
11452         (*th_memidx_zero_extendsidi2): Likewise.
11453         (*th_memidx_zero_extendhi<GPR:mode>2): Likewise.
11454         (*th_memidx_extend<SHORT:mode><SUPERQI:mode>2): Likewise.
11455         (*th_memidx_bb_zero_extendsidi2): Likewise.
11456         (*th_memidx_bb_zero_extendhi<GPR:mode>2): Likewise.
11457         (*th_memidx_bb_extendhi<GPR:mode>2): Likewise.
11458         (*th_memidx_bb_extendqi<SUPERQI:mode>2): Likewise.
11459         (TH_M_ANYI): New mode iterator.
11460         (TH_M_NOEXTI): Likewise.
11461         (*th_memidx_I_a): New combiner optimization.
11462         (*th_memidx_I_b): Likewise.
11463         (*th_memidx_I_c): Likewise.
11464         (*th_memidx_US_a): Likewise.
11465         (*th_memidx_US_b): Likewise.
11466         (*th_memidx_US_c): Likewise.
11467         (*th_memidx_UZ_a): Likewise.
11468         (*th_memidx_UZ_b): Likewise.
11469         (*th_memidx_UZ_c): Likewise.
11471 2023-10-31  Carl Love  <cel@us.ibm.com>
11473         * doc/extend.texi (__builtin_bcdsub_le, __builtin_bcdsub_ge): Add
11474         documentation for the builti-ins.
11476 2023-10-31  Vladimir N. Makarov  <vmakarov@redhat.com>
11478         PR rtl-optimization/111971
11479         * lra-constraints.cc: (process_alt_operands): Don't check start
11480         hard regs for regs originated from register variables.
11482 2023-10-31  Robin Dapp  <rdapp@ventanamicro.com>
11484         * config/riscv/autovec.md (<ieee_fmaxmin_op><mode>3): fmax/fmin
11485         expanders.
11486         (cond_<ieee_fmaxmin_op><mode>): Ditto.
11487         (cond_len_<ieee_fmaxmin_op><mode>): Ditto.
11488         (reduc_fmax_scal_<mode>): Ditto.
11489         (reduc_fmin_scal_<mode>): Ditto.
11490         * config/riscv/riscv-v.cc (needs_fp_rounding): Add fmin/fmax.
11491         * config/riscv/vector-iterators.md (fmin): New UNSPEC.
11492         (UNSPEC_VFMIN): Ditto.
11493         * config/riscv/vector.md (@pred_<ieee_fmaxmin_op><mode>): Add
11494         UNSPEC insn patterns.
11495         (@pred_<ieee_fmaxmin_op><mode>_scalar): Ditto.
11497 2023-10-31  Robin Dapp  <rdapp@ventanamicro.com>
11499         PR bootstrap/84402
11500         PR target/111600
11501         * Makefile.in: Handle split insn-emit.cc.
11502         * configure: Regenerate.
11503         * configure.ac: Add --with-insnemit-partitions.
11504         * genemit.cc (output_peephole2_scratches): Print to file instead
11505         of stdout.
11506         (print_code): Ditto.
11507         (gen_rtx_scratch): Ditto.
11508         (gen_exp): Ditto.
11509         (gen_emit_seq): Ditto.
11510         (emit_c_code): Ditto.
11511         (gen_insn): Ditto.
11512         (gen_expand): Ditto.
11513         (gen_split): Ditto.
11514         (output_add_clobbers): Ditto.
11515         (output_added_clobbers_hard_reg_p): Ditto.
11516         (print_overload_arguments): Ditto.
11517         (print_overload_test): Ditto.
11518         (handle_overloaded_code_for): Ditto.
11519         (handle_overloaded_gen): Ditto.
11520         (print_header): New function.
11521         (handle_arg): New function.
11522         (main): Split output into 10 files.
11523         * gensupport.cc (count_patterns): New function.
11524         * gensupport.h (count_patterns): Define.
11525         * read-md.cc (md_reader::print_md_ptr_loc): Add file argument.
11526         * read-md.h (class md_reader): Change definition.
11528 2023-10-31  Alexandre Oliva  <oliva@adacore.com>
11530         PR tree-optimization/111943
11531         * gimple-harden-control-flow.cc: Adjust copyright year.
11532         (rt_bb_visited): Add vfalse and vtrue data members.
11533         Zero-initialize them in the ctor.
11534         (rt_bb_visited::insert_exit_check_on_edge): Upon encountering
11535         abnormal edges, insert initializers for vfalse and vtrue on
11536         entry, and insert the check sequence guarded by a conditional
11537         in the dest block.
11539 2023-10-31  Richard Biener  <rguenther@suse.de>
11541         PR tree-optimization/112305
11542         * tree-scalar-evolution.h (expression_expensive): Adjust.
11543         * tree-scalar-evolution.cc (expression_expensive): Record
11544         when we see a COND_EXPR.
11545         (final_value_replacement_loop): When the replacement contains
11546         a COND_EXPR, rewrite it to defined overflow.
11547         * tree-ssa-loop-ivopts.cc (may_eliminate_iv): Adjust.
11549 2023-10-31  Xi Ruoyao  <xry111@xry111.site>
11551         PR target/112299
11552         * config/loongarch/loongarch-opts.h (HAVE_AS_TLS): Define to 0
11553         if not defined yet.
11555 2023-10-31  Lehua Ding  <lehua.ding@rivai.ai>
11557         * gimple-match.h (gimple_match_op::gimple_match_op):
11558         Add interfaces for more arguments.
11559         (gimple_match_op::set_op): Add interfaces for more arguments.
11560         * match.pd: Add support of combining cond_len_op + vec_cond
11562 2023-10-31  Haochen Jiang  <haochen.jiang@intel.com>
11564         * config/i386/avx512cdintrin.h (target): Push evex512 for
11565         avx512cd.
11566         * config/i386/avx512vlintrin.h (target): Split avx512cdvl part
11567         out from avx512vl.
11568         * config/i386/i386-builtin.def (BDESC): Do not check evex512
11569         for builtins not needed.
11571 2023-10-31  Lehua Ding  <lehua.ding@rivai.ai>
11573         * config/riscv/autovec.md (<float_cvt><mode><vnnconvert>2):
11574         Change to define_expand.
11576 2023-10-31  liuhongt  <hongtao.liu@intel.com>
11578         PR target/112276
11579         * config/i386/mmx.md (*mmx_pblendvb_v8qi_1): Change
11580         define_split to define_insn_and_split to handle
11581         immediate_operand for comparison.
11582         (*mmx_pblendvb_v8qi_2): Ditto.
11583         (*mmx_pblendvb_<mode>_1): Ditto.
11584         (*mmx_pblendvb_v4qi_2): Ditto.
11585         (<code><mode>3): Remove define_split after it.
11586         (<code>v8qi3): Ditto.
11587         (<code><mode>3): Ditto.
11588         (<ode>v2hi3): Ditto.
11590 2023-10-31  Andrew Pinski  <pinskia@gmail.com>
11592         * match.pd (`a == 1 ? b : a OP b`): New pattern.
11593         (`a == -1 ? b : a & b`): New pattern.
11595 2023-10-31  Andrew Pinski  <pinskia@gmail.com>
11597         * match.pd: (`a == 0 ? b : b + a`,
11598         `a == 0 ? b : b - a`): New patterns.
11600 2023-10-31  Neal Frager  <neal.frager@amd.com>
11602         * config/microblaze/microblaze.cc: Fix mcpu version check.
11604 2023-10-30  Mayshao  <mayshao-oc@zhaoxin.com>
11606         * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Recognize yongfeng.
11607         * common/config/i386/i386-common.cc: Add yongfeng.
11608         * common/config/i386/i386-cpuinfo.h (enum processor_subtypes):
11609         Add ZHAOXIN_FAM7H_YONGFENG.
11610         * config.gcc: Add yongfeng.
11611         * config/i386/driver-i386.cc (host_detect_local_cpu):
11612         Let -march=native recognize yongfeng processors.
11613         * config/i386/i386-c.cc (ix86_target_macros_internal): Add yongfeng.
11614         * config/i386/i386-options.cc (m_YONGFENG): New definition.
11615         (m_ZHAOXIN): Ditto.
11616         * config/i386/i386.h (enum processor_type): Add PROCESSOR_YONGFENG.
11617         * config/i386/i386.md: Add yongfeng.
11618         * config/i386/lujiazui.md: Fix typo.
11619         * config/i386/x86-tune-costs.h (struct processor_costs):
11620         Add yongfeng costs.
11621         * config/i386/x86-tune-sched.cc (ix86_issue_rate): Add yongfeng.
11622         (ix86_adjust_cost): Ditto.
11623         * config/i386/x86-tune.def (X86_TUNE_SCHEDULE): Replace
11624         m_LUJIAZUI with m_ZHAOXIN.
11625         (X86_TUNE_PARTIAL_REG_DEPENDENCY): Ditto.
11626         (X86_TUNE_SSE_PARTIAL_REG_DEPENDENCY): Ditto.
11627         (X86_TUNE_SSE_PARTIAL_REG_FP_CONVERTS_DEPENDENCY): Ditto.
11628         (X86_TUNE_SSE_PARTIAL_REG_CONVERTS_DEPENDENCY): Ditto.
11629         (X86_TUNE_MOVX): Ditto.
11630         (X86_TUNE_MEMORY_MISMATCH_STALL): Ditto.
11631         (X86_TUNE_FUSE_CMP_AND_BRANCH_32): Ditto.
11632         (X86_TUNE_FUSE_CMP_AND_BRANCH_64): Ditto.
11633         (X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS): Ditto.
11634         (X86_TUNE_FUSE_ALU_AND_BRANCH): Ditto.
11635         (X86_TUNE_ACCUMULATE_OUTGOING_ARGS): Ditto.
11636         (X86_TUNE_USE_LEAVE): Ditto.
11637         (X86_TUNE_PUSH_MEMORY): Ditto.
11638         (X86_TUNE_LCP_STALL): Ditto.
11639         (X86_TUNE_INTEGER_DFMODE_MOVES): Ditto.
11640         (X86_TUNE_OPT_AGU): Ditto.
11641         (X86_TUNE_PREFER_KNOWN_REP_MOVSB_STOSB): Ditto.
11642         (X86_TUNE_MISALIGNED_MOVE_STRING_PRO_EPILOGUES): Ditto.
11643         (X86_TUNE_USE_SAHF): Ditto.
11644         (X86_TUNE_USE_BT): Ditto.
11645         (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI): Ditto.
11646         (X86_TUNE_ONE_IF_CONV_INSN): Ditto.
11647         (X86_TUNE_AVOID_MFENCE): Ditto.
11648         (X86_TUNE_EXPAND_ABS): Ditto.
11649         (X86_TUNE_USE_SIMODE_FIOP): Ditto.
11650         (X86_TUNE_USE_FFREEP): Ditto.
11651         (X86_TUNE_EXT_80387_CONSTANTS): Ditto.
11652         (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL): Ditto.
11653         (X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Ditto.
11654         (X86_TUNE_SSE_TYPELESS_STORES): Ditto.
11655         (X86_TUNE_SSE_LOAD0_BY_PXOR): Ditto.
11656         (X86_TUNE_USE_GATHER_2PARTS): Add m_YONGFENG.
11657         (X86_TUNE_USE_GATHER_4PARTS): Ditto.
11658         (X86_TUNE_USE_GATHER_8PARTS): Ditto.
11659         (X86_TUNE_AVOID_128FMA_CHAINS): Ditto.
11660         * doc/extend.texi: Add details about yongfeng.
11661         * doc/invoke.texi: Ditto.
11662         * config/i386/yongfeng.md: New file to describe yongfeng processor.
11664 2023-10-30  Martin Jambor  <mjambor@suse.cz>
11666         PR ipa/111157
11667         * ipa-prop.h (struct ipa_argagg_value): Newf flag killed.
11668         * ipa-modref.cc (ipcp_argagg_and_kill_overlap_p): New function.
11669         (update_signature): Mark any any IPA-CP aggregate constants at
11670         positions known to be killed as killed.  Move check that there is
11671         clone_info after this pruning.
11672         * ipa-cp.cc (ipa_argagg_value_list::dump): Dump the killed flag.
11673         (ipa_argagg_value_list::push_adjusted_values): Clear the new flag.
11674         (push_agg_values_from_plats): Likewise.
11675         (ipa_push_agg_values_from_jfunc): Likewise.
11676         (estimate_local_effects): Likewise.
11677         (push_agg_values_for_index_from_edge): Likewise.
11678         * ipa-prop.cc (write_ipcp_transformation_info): Stream the killed
11679         flag.
11680         (read_ipcp_transformation_info): Likewise.
11681         (ipcp_get_aggregate_const): Update comment, assert that encountered
11682         record does not have killed flag set.
11683         (ipcp_transform_function): Prune all aggregate constants with killed
11684         set.
11686 2023-10-30  Martin Jambor  <mjambor@suse.cz>
11688         PR ipa/111157
11689         * ipa-prop.h (ipcp_transformation): New member function template
11690         remove_argaggs_if.
11691         * ipa-sra.cc (zap_useless_ipcp_results): Use remove_argaggs_if to
11692         filter aggreagate constants.
11694 2023-10-30  Roger Sayle  <roger@nextmovesoftware.com>
11696         PR middle-end/101955
11697         * config/arc/arc.md (*extvsi_1_0): New define_insn_and_split
11698         to convert sign extract of the least significant bit into an
11699         AND $1 then a NEG when !TARGET_BARREL_SHIFTER.
11701 2023-10-30  Roger Sayle  <roger@nextmovesoftware.com>
11703         * config/arc/arc.cc (arc_rtx_costs): Improve cost estimates.
11704         Provide reasonable values for SHIFTS and ROTATES by constant
11705         bit counts depending upon TARGET_BARREL_SHIFTER.
11706         (arc_insn_cost): Use insn attributes if the instruction is
11707         recognized.  Avoid calling get_attr_length for type "multi",
11708         i.e. define_insn_and_split patterns without explicit type.
11709         Fall-back to set_rtx_cost for single_set and pattern_cost
11710         otherwise.
11711         * config/arc/arc.h (COSTS_N_BYTES): Define helper macro.
11712         (BRANCH_COST): Improve/correct definition.
11713         (LOGICAL_OP_NON_SHORT_CIRCUIT): Preserve previous behavior.
11715 2023-10-30  Roger Sayle  <roger@nextmovesoftware.com>
11717         * config/arc/arc.cc (arc_split_ashl): Use lsl16 on TARGET_SWAP.
11718         (arc_split_ashr): Use swap and sign-extend on TARGET_SWAP.
11719         (arc_split_lshr): Use lsr16 on TARGET_SWAP.
11720         (arc_split_rotl): Use swap on TARGET_SWAP.
11721         (arc_split_rotr): Likewise.
11722         * config/arc/arc.md (ANY_ROTATE): New code iterator.
11723         (<ANY_ROTATE>si2_cnt16): New define_insn for alternate form of
11724         swap instruction on TARGET_SWAP.
11725         (ashlsi2_cnt16): Rename from *ashlsi16_cnt16 and move earlier.
11726         (lshrsi2_cnt16): New define_insn for LSR16 instruction.
11727         (*ashlsi2_cnt16): See above.
11729 2023-10-30  Richard Ball  <richard.ball@arm.com>
11731         * config/arm/aout.h: Change to use the Lrtx label.
11732         * config/arm/arm.h (CASE_VECTOR_PC_RELATIVE): Remove arm targets
11733         from (!target_pure_code) condition.
11734         (ADDR_VEC_ALIGN): Add align for tables in rodata section.
11735         * config/arm/arm.cc (arm_output_casesi): Alter the function to include
11736         .Lrtx label and remove adr instructions.
11737         * config/arm/arm.md
11738         (arm_casesi_internal): Use force_reg to generate ldr instructions that
11739         would otherwise be out of range, and change rtl to accommodate force reg.
11740         Additionally remove unnecessary register temp.
11741         (casesi): Remove pure code check for Arm.
11742         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Remove arm
11743         targets from JUMP_TABLES_IN_TEXT_SECTION definition.
11745 2023-10-30  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
11747         PR target/106907
11748         * config/rs6000/rs6000.cc (altivec_expand_vec_perm_const): Change bitwise
11749         xor to an equality and fix comment indentation.
11751 2023-10-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11753         * config/riscv/riscv-protos.h (sew64_scalar_helper): Fix bug.
11754         * config/riscv/riscv-v.cc (sew64_scalar_helper): Ditto.
11755         * config/riscv/vector.md: Ditto.
11757 2023-10-30  liuhongt  <hongtao.liu@intel.com>
11759         PR target/104610
11760         * config/i386/i386-expand.cc (ix86_expand_branch): Handle
11761         512-bit vector with vpcmpeq + kortest.
11762         * config/i386/i386.md (cbranchxi4): New expander.
11763         * config/i386/sse.md: (cbranch<mode>4): Extend to V16SImode
11764         and V8DImode.
11766 2023-10-30  Haochen Gui  <guihaoc@gcc.gnu.org>
11768         PR target/111449
11769         * expr.cc (qi_vector_mode_supported_p): Rename to...
11770         (by_pieces_mode_supported_p): ...this, and extends it to do
11771         the checking for both scalar and vector mode.
11772         (widest_fixed_size_mode_for_size): Call
11773         by_pieces_mode_supported_p to examine the mode.
11774         (op_by_pieces_d::smallest_fixed_size_mode_for_size): Likewise.
11776 2023-10-29  Martin Uecker  <uecker@tugraz.at>
11778         PR tree-optimization/109334
11779         * tree-object-size.cc (parm_object_size): Allow size
11780         computation for implicit access attributes.
11782 2023-10-29  Max Filippov  <jcmvbkbc@gmail.com>
11784         * config/xtensa/xtensa.h (TARGET_SALT): Change HW version from
11785         260000 (which corresponds to RF-2014.0) to 270000 (which
11786         corresponds to RG-2015.0, the release where salt/saltu opcodes
11787         were introduced).
11789 2023-10-29  Pan Li  <pan2.li@intel.com>
11791         * config/riscv/riscv-avlprop.cc (pass_avlprop::execute): Use
11792         reference type to prevent copying.
11794 2023-10-27  Vladimir N. Makarov  <vmakarov@redhat.com>
11796         PR rtl-optimization/112107
11797         * ira-costs.cc: (calculate_equiv_gains): Use NONDEBUG_INSN_P
11798         instead of INSN_P.
11800 2023-10-27  Andrew Stubbs  <ams@codesourcery.com>
11802         PR target/112088
11803         * config/gcn/gcn.cc (gcn_expand_epilogue): Fix kernel epilogue register
11804         conflict.
11806 2023-10-27  Andrew Stubbs  <ams@codesourcery.com>
11808         * config/gcn/gcn-valu.md
11809         (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): Mention "operands" in
11810         condition to silence the warnings.
11811         (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): Likewise.
11812         * config/gcn/gcn.md (*movti_insn): Likewise.
11814 2023-10-27  Richard Sandiford  <richard.sandiford@arm.com>
11816         * recog.cc (insn_propagation::apply_to_pattern_1): Handle shared
11817         ASM_OPERANDS.
11819 2023-10-27  Yangyu Chen  <chenyangyu@isrc.iscas.ac.cn>
11821         * config/riscv/riscv.cc (rocket_tune_info): Fix int_div cost.
11822         (sifive_7_tune_info, thead_c906_tune_info): Likewise.
11824 2023-10-27  Robin Dapp  <rdapp@ventanamicro.com>
11826         * config/riscv/autovec.md (rawmemchr<ANYI:mode>): New expander.
11827         * config/riscv/riscv-protos.h (gen_no_side_effects_vsetvl_rtx):
11828         Define.
11829         (expand_rawmemchr): Define.
11830         * config/riscv/riscv-v.cc (force_vector_length_operand): Remove
11831         static.
11832         (expand_block_move): Move from here...
11833         * config/riscv/riscv-string.cc (expand_block_move): ...to here.
11834         (expand_rawmemchr): Add vectorized expander.
11835         * internal-fn.cc (expand_RAWMEMCHR): Fix typo.
11837 2023-10-27  Vladimir N. Makarov  <vmakarov@redhat.com>
11839         * ira-costs.cc: (get_equiv_regno, calculate_equiv_gains):
11840         Process reg equivalence invariants.
11842 2023-10-27  Uros Bizjak  <ubizjak@gmail.com>
11844         * config/i386/x86-tune.def (X86_TUNE_PARTIAL_MEMORY_READ_STALL):
11845         i386: Fiy typo in "partial_memory_read_stall" tune option.
11847 2023-10-27  Victor Do Nascimento  <victor.donascimento@arm.com>
11849         * config/aarch64/aarch64.cc (aarch64_print_operand): Add
11850         support for CONST_STRING.
11852 2023-10-27  Roger Sayle  <roger@nextmovesoftware.com>
11854         PR target/110551
11855         * config/i386/i386.md (<u>mul<mode><dwi>3): Make operands 1 and
11856         2 take "regiser_operand" and "nonimmediate_operand" respectively.
11857         (<u>mulqihi3): Likewise.
11858         (*bmi2_umul<mode><dwi>3_1): Operand 2 needs to be register_operand
11859         matching the %d constraint.  Use umul_highpart RTX to represent
11860         the highpart multiplication.
11861         (*umul<mode><dwi>3_1):  Operand 2 should use regiser_operand
11862         predicate, and "a" rather than "0" as operands 0 and 2 have
11863         different modes.
11864         (define_split): For mul to mulx conversion, use the new
11865         umul_highpart RTX representation.
11866         (*mul<mode><dwi>3_1):  Operand 1 should be register_operand
11867         and the constraint %a as operands 0 and 1 have different modes.
11868         (*<u>mulqihi3_1): Operand 1 should be register_operand matching
11869         the constraint %0.
11870         (define_peephole2): Providing widening multiplication variants
11871         of the peephole2s that tweak highpart multiplication register
11872         allocation.
11874 2023-10-27  Lewis Hyatt  <lhyatt@gmail.com>
11876         PR preprocessor/87299
11877         * toplev.cc (no_backend): New static global.
11878         (finalize): Remove argument no_backend, which is now a
11879         static global.
11880         (process_options): Likewise.
11881         (do_compile): Likewise.
11882         (target_reinit): Don't do anything in preprocess-only mode.
11883         (toplev::main): Adapt to no_backend change.
11884         (toplev::finalize): Likewise.
11886 2023-10-27  Andrew Pinski  <apinski@marvell.com>
11888         PR tree-optimization/101590
11889         PR tree-optimization/94884
11890         * match.pd (`(X BIT_OP Y) CMP X`): New pattern.
11892 2023-10-27  liuhongt  <hongtao.liu@intel.com>
11894         PR target/103861
11895         * config/i386/i386-expand.cc (ix86_expand_sse_movcc): Handle
11896         V2HF/V2BF/V4HF/V4BFmode.
11897         * config/i386/i386.cc (ix86_get_mask_mode): Return QImode when
11898         data_mode is V4HF/V2HFmode.
11899         * config/i386/mmx.md (vec_cmpv4hfqi): New expander.
11900         (vcond_mask_<mode>v4hi): Ditto.
11901         (vcond_mask_<mode>qi): Ditto.
11902         (vec_cmpv2hfqi): Ditto.
11903         (vcond_mask_<mode>v2hi): Ditto.
11904         (mmx_plendvb_<mode>): Add 2 combine splitters after the
11905         patterns.
11906         (mmx_pblendvb_v8qi): Ditto.
11907         (<code>v2hi3): Add a combine splitter after the pattern.
11908         (<code><mode>3): Ditto.
11909         (<code>v8qi3): Ditto.
11910         (<code><mode>3): Ditto.
11911         * config/i386/sse.md (vcond<mode><mode>): Merge this with ..
11912         (vcond<sseintvecmodelower><mode>): .. this into ..
11913         (vcond<VI2HFBF_AVX512VL:mode><VHF_AVX512VL:mode>): .. this,
11914         and extend to V8BF/V16BF/V32BFmode.
11916 2023-10-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11918         * config/riscv/riscv-opts.h (TARGET_MAX_LMUL): New macro.
11919         * config/riscv/riscv-v.cc (preferred_simd_mode): Adapt macro.
11920         (autovectorize_vector_modes): Ditto.
11921         (can_find_related_mode_p): Ditto.
11923 2023-10-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
11925         PR target/111318
11926         PR target/111888
11927         * config.gcc: Add AVL propagation pass.
11928         * config/riscv/riscv-passes.def (INSERT_PASS_AFTER): Ditto.
11929         * config/riscv/riscv-protos.h (make_pass_avlprop): Ditto.
11930         * config/riscv/t-riscv: Ditto.
11931         * config/riscv/riscv-avlprop.cc: New file.
11933 2023-10-26  David Malcolm  <dmalcolm@redhat.com>
11935         * doc/extend.texi (Common Function Attributes): Add
11936         null_terminated_string_arg.
11938 2023-10-26  Andrew Pinski  <pinskia@gmail.com>
11940         PR tree-optimization/111957
11941         * match.pd (`a != C1 ? abs(a) : C2`): New pattern.
11943 2023-10-26  Aldy Hernandez  <aldyh@redhat.com>
11945         * range-op-float.cc (range_operator::fold_range): Delete unused
11946         variable.
11948 2023-10-26  Aldy Hernandez  <aldyh@redhat.com>
11950         * range-op-float.cc (range_operator::fold_range): Remove
11951         superfluous code.
11952         (range_operator::rv_fold): Remove unneeded arguments.
11953         (operator_plus::rv_fold): Same.
11954         (operator_minus::rv_fold): Same.
11955         (operator_mult::rv_fold): Same.
11956         (operator_div::rv_fold): Same.
11957         * range-op-mixed.h: Remove lb, ub, and maybe_nan arguments from
11958         rv_fold methods.
11959         * range-op.h: Same.
11961 2023-10-26  Aldy Hernandez  <aldyh@redhat.com>
11963         * range-op-float.cc (range_operator::fold_range): Pass frange
11964         argument to rv_fold.
11965         (range_operator::rv_fold): Add frange argument.
11966         (operator_plus::rv_fold): Same.
11967         (operator_minus::rv_fold): Same.
11968         (operator_mult::rv_fold): Same.
11969         (operator_div::rv_fold): Same.
11970         * range-op-mixed.h: Add frange argument to rv_fold methods.
11971         * range-op.h: Same.
11973 2023-10-26  Richard Ball  <richard.ball@arm.com>
11975         * config/arm/aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Add table output
11976         for different machine modes for arm.
11977         * config/arm/arm-protos.h (arm_output_casesi): New prototype.
11978         * config/arm/arm.h (CASE_VECTOR_PC_RELATIVE): Make arm use
11979         ASM_OUTPUT_ADDR_DIFF_ELT.
11980         (CASE_VECTOR_SHORTEN_MODE): Change table size calculation for
11981         TARGET_ARM.
11982         (LABEL_ALIGN_AFTER_BARRIER): Change to accommodate .p2align 2
11983         for TARGET_ARM.
11984         * config/arm/arm.cc (arm_output_casesi): New function.
11985         * config/arm/arm.md (arm_casesi_internal): Change casesi expand
11986         and insn.
11987         for arm to use new function arm_output_casesi.
11989 2023-10-26  Iain Sandoe  <iain@sandoe.co.uk>
11991         * config/darwin.h
11992         (darwin_label_is_anonymous_local_objc_name): Make metadata names
11993         linker-visibile for GNU objective C.
11995 2023-10-26  Vladimir N. Makarov  <vmakarov@redhat.com>
11997         * dwarf2out.cc (reg_loc_descriptor): Use lra_eliminate_regs when
11998         LRA is used.
11999         * ira-costs.cc: Include regset.h.
12000         (equiv_can_be_consumed_p, get_equiv_regno, calculate_equiv_gains):
12001         New functions.
12002         (find_costs_and_classes): Call calculate_equiv_gains and redefine
12003         mem_cost of pseudos with equivs when LRA is used.
12004         * var-tracking.cc: Include ira.h and lra.h.
12005         (vt_initialize): Use lra_eliminate_regs when LRA is used.
12007 2023-10-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12009         * doc/md.texi: Adapt COND_LEN pseudo code.
12011 2023-10-26  Roger Sayle  <roger@nextmovesoftware.com>
12012             Richard Biener  <rguenther@suse.de>
12014         PR rtl-optimization/91865
12015         * combine.cc (make_compound_operation): Avoid creating a
12016         ZERO_EXTEND of a ZERO_EXTEND.
12018 2023-10-26  Jiahao Xu  <xujiahao@loongson.cn>
12020         * config/loongarch/lasx.md (vcond_mask_<ILASX:mode><ILASX:mode>): Change to
12021         (vcond_mask_<mode><mode256_i>): this.
12022         * config/loongarch/lsx.md (vcond_mask_<ILSX:mode><ILSX:mode>): Change to
12023         (vcond_mask_<mode><mode_i>): this.
12025 2023-10-26  Thomas Schwinge  <thomas@codesourcery.com>
12027         * ipa-icf.cc (sem_item::target_supports_symbol_aliases_p):
12028         'gcc_checking_assert (TARGET_SUPPORTS_ALIASES);' before
12029         'return true;'.
12030         * ipa-visibility.cc (function_and_variable_visibility): Change
12031         '#ifdef ASM_OUTPUT_DEF' to 'if (TARGET_SUPPORTS_ALIASES)'.
12032         * varasm.cc (output_constant_pool_contents)
12033         [#ifdef ASM_OUTPUT_DEF]:
12034         'gcc_checking_assert (TARGET_SUPPORTS_ALIASES);'.
12035         (do_assemble_alias) [#ifdef ASM_OUTPUT_DEF]:
12036         'if (!TARGET_SUPPORTS_ALIASES)',
12037         'gcc_checking_assert (seen_error ());'.
12038         (assemble_alias): Change '#if !defined (ASM_OUTPUT_DEF)' to
12039         'if (!TARGET_SUPPORTS_ALIASES)'.
12040         (default_asm_output_anchor):
12041         'gcc_checking_assert (TARGET_SUPPORTS_ALIASES);'.
12043 2023-10-26  Alexandre Oliva  <oliva@adacore.com>
12045         PR tree-optimization/111520
12046         * gimple-harden-conditionals.cc
12047         (pass_harden_compares::execute): Set EH edge probability and
12048         EH block execution count.
12050 2023-10-26  Alexandre Oliva  <oliva@adacore.com>
12052         * tree-eh.h (make_eh_edges): Rename to...
12053         (make_eh_edge): ... this.
12054         * tree-eh.cc: Likewise.  Adjust all callers...
12055         * gimple-harden-conditionals.cc: ... here, ...
12056         * gimple-harden-control-flow.cc: ... here, ...
12057         * tree-cfg.cc: ... here, ...
12058         * tree-inline.cc: ... and here.
12060 2023-10-25  Iain Sandoe  <iain@sandoe.co.uk>
12062         * config/darwin.cc (darwin_override_options): Handle fPIE.
12064 2023-10-25  Iain Sandoe  <iain@sandoe.co.uk>
12066         * config.gcc: Use -E to to sed to indicate that we are using
12067         extended REs.
12069 2023-10-25  Jason Merrill  <jason@redhat.com>
12071         * tree-core.h (struct tree_base): Update address_space comment.
12073 2023-10-25  Wilco Dijkstra  <wilco.dijkstra@arm.com>
12075         * config/aarch64/aarch64.cc (aarch64_internal_mov_immediate)
12076         Add support for immediates using MOV/EOR bitmask.
12078 2023-10-25  Uros Bizjak  <ubizjak@gmail.com>
12080         PR target/111698
12081         * config/i386/x86-tune.def (X86_TUNE_PARTIAL_MEMORY_READ_STALL):
12082         New tune.
12083         * config/i386/i386.h (TARGET_PARTIAL_MEMORY_READ_STALL): New macro.
12084         * config/i386/i386.md: New peephole pattern to narrow test
12085         instructions with immediate operands that test memory locations
12086         for zero.
12088 2023-10-25  Andrew MacLeod  <amacleod@redhat.com>
12090         * value-range.cc (irange::union_append): New.
12091         (irange::union_): Call union_append when appropriate.
12092         * value-range.h (irange::union_append): New prototype.
12094 2023-10-25  Chenghui Pan  <panchenghui@loongson.cn>
12096         * config/loongarch/lasxintrin.h (__lasx_xvftintrnel_l_s): Fix comments.
12097         (__lasx_xvfrintrne_s): Ditto.
12098         (__lasx_xvfrintrne_d): Ditto.
12099         (__lasx_xvfrintrz_s): Ditto.
12100         (__lasx_xvfrintrz_d): Ditto.
12101         (__lasx_xvfrintrp_s): Ditto.
12102         (__lasx_xvfrintrp_d): Ditto.
12103         (__lasx_xvfrintrm_s): Ditto.
12104         (__lasx_xvfrintrm_d): Ditto.
12105         * config/loongarch/lsxintrin.h (__lsx_vftintrneh_l_s): Ditto.
12106         (__lsx_vfrintrne_s): Ditto.
12107         (__lsx_vfrintrne_d): Ditto.
12108         (__lsx_vfrintrz_s): Ditto.
12109         (__lsx_vfrintrz_d): Ditto.
12110         (__lsx_vfrintrp_s): Ditto.
12111         (__lsx_vfrintrp_d): Ditto.
12112         (__lsx_vfrintrm_s): Ditto.
12113         (__lsx_vfrintrm_d): Ditto.
12115 2023-10-25  chenxiaolong  <chenxiaolong@loongson.cn>
12117         * config/loongarch/loongarch.md (get_thread_pointer<mode>):Adds the
12118         instruction template corresponding to the __builtin_thread_pointer
12119         function.
12120         * doc/extend.texi:Add the __builtin_thread_pointer function support
12121         description to the documentation.
12123 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
12125         * Makefile.in (OBJS): Add rtl-ssa/movement.o.
12126         * rtl-ssa/access-utils.h (accesses_include_nonfixed_hard_registers)
12127         (single_set_info): New functions.
12128         (remove_uses_of_def, accesses_reference_same_resource): Declare.
12129         (insn_clobbers_resources): Likewise.
12130         * rtl-ssa/accesses.cc (rtl_ssa::remove_uses_of_def): New function.
12131         (rtl_ssa::accesses_reference_same_resource): Likewise.
12132         (rtl_ssa::insn_clobbers_resources): Likewise.
12133         * rtl-ssa/movement.h (can_move_insn_p): Declare.
12134         * rtl-ssa/movement.cc: New file.
12136 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
12138         * rtl-ssa/functions.h (function_info::remains_available_at_insn):
12139         New member function.
12140         * rtl-ssa/accesses.cc (function_info::remains_available_at_insn):
12141         Likewise.
12142         (function_info::make_use_available): Avoid false negatives for
12143         queries within an EBB.
12145 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
12147         * rtl-ssa/changes.cc: Include sreal.h.
12148         (rtl_ssa::changes_are_worthwhile): When optimizing for speed,
12149         scale the cost of each instruction by its execution frequency.
12151 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
12153         * rtl-ssa/access-utils.h (next_call_clobbers): New function.
12154         (is_single_dominating_def, remains_available_on_exit): Replace with...
12155         * rtl-ssa/functions.h (function_info::is_single_dominating_def)
12156         (function_info::remains_available_on_exit): ...these new member
12157         functions.
12158         (function_info::m_clobbered_by_calls): New member variable.
12159         * rtl-ssa/functions.cc (function_info::function_info): Explicitly
12160         initialize m_clobbered_by_calls.
12161         * rtl-ssa/insns.cc (function_info::record_call_clobbers): Update
12162         m_clobbered_by_calls for each call-clobber note.
12163         * rtl-ssa/member-fns.inl (function_info::is_single_dominating_def):
12164         New function.  Check for call clobbers.
12165         * rtl-ssa/accesses.cc (function_info::remains_available_on_exit):
12166         Likewise.
12168 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
12170         * rtl-ssa/internals.h (build_info::exit_block_dominator): New
12171         member variable.
12172         * rtl-ssa/blocks.cc (build_info::build_info): Initialize it.
12173         (bb_walker::bb_walker): Use it, moving the computation of the
12174         dominator to...
12175         (function_info::process_all_blocks): ...here.
12176         (function_info::place_phis): Add dominance frontiers for the
12177         exit block.
12179 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
12181         * rtl-ssa/functions.h (function_info::process_uses_of_deleted_def):
12182         New member function.
12183         * rtl-ssa/changes.cc (function_info::process_uses_of_deleted_def):
12184         Likewise.
12185         (function_info::change_insns): Use it.
12187 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
12189         * rtl-ssa/changes.cc (function_info::finalize_new_accesses):
12190         If a change describes a set of memory, ensure that that set
12191         is kept, regardless of the insn pattern.
12193 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
12195         * rtl-ssa/changes.cc (function_info::apply_changes_to_insn): Remove
12196         call to add_reg_unused_notes and instead...
12197         (function_info::change_insns): ...use a separate loop here.
12199 2023-10-25  Richard Sandiford  <richard.sandiford@arm.com>
12201         * rtl-ssa/blocks.cc (function_info::add_artificial_accesses): Force
12202         global registers to be live on exit.  Handle any block with zero
12203         successors like an exit block.
12205 2023-10-25  Thomas Schwinge  <thomas@codesourcery.com>
12207         * omp-oacc-kernels-decompose.cc (omp_oacc_kernels_decompose_1):
12208         Handle 'OMP_CLAUSE_SELF' like 'OMP_CLAUSE_IF'.
12209         * omp-expand.cc (expand_omp_target): Handle 'OMP_CLAUSE_SELF' for
12210         'GF_OMP_TARGET_KIND_OACC_DATA_KERNELS'.
12212 2023-10-25  Thomas Schwinge  <thomas@codesourcery.com>
12214         * tree-core.h (omp_clause_code): Move 'OMP_CLAUSE_SELF' after
12215         'OMP_CLAUSE_IF'.
12216         * tree-pretty-print.cc (dump_omp_clause): Adjust.
12217         * tree.cc (omp_clause_num_ops, omp_clause_code_name): Likewise.
12218         * tree.h: Likewise.
12220 2023-10-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12222         * config/riscv/riscv-protos.h (has_vl_op): Export from riscv-vsetvl to riscv-v
12223         (tail_agnostic_p): Ditto.
12224         (validate_change_or_fail): Ditto.
12225         (nonvlmax_avl_type_p): Ditto.
12226         (vlmax_avl_p): Ditto.
12227         (get_sew): Ditto.
12228         (enum vlmul_type): Ditto.
12229         (count_regno_occurrences): Ditto.
12230         * config/riscv/riscv-v.cc (has_vl_op): Ditto.
12231         (get_default_ta): Ditto.
12232         (tail_agnostic_p): Ditto.
12233         (validate_change_or_fail): Ditto.
12234         (nonvlmax_avl_type_p): Ditto.
12235         (vlmax_avl_p): Ditto.
12236         (get_sew): Ditto.
12237         (enum vlmul_type): Ditto.
12238         (get_vlmul): Ditto.
12239         (count_regno_occurrences): Ditto.
12240         * config/riscv/riscv-vsetvl.cc (vlmax_avl_p): Ditto.
12241         (has_vl_op): Ditto.
12242         (get_sew): Ditto.
12243         (get_vlmul): Ditto.
12244         (get_default_ta): Ditto.
12245         (tail_agnostic_p): Ditto.
12246         (count_regno_occurrences): Ditto.
12247         (validate_change_or_fail): Ditto.
12249 2023-10-25  Chung-Lin Tang  <cltang@codesourcery.com>
12251         * gimplify.cc (gimplify_scan_omp_clauses): Add OMP_CLAUSE_SELF case.
12252         (gimplify_adjust_omp_clauses): Likewise.
12253         * omp-expand.cc (expand_omp_target): Add OMP_CLAUSE_SELF expansion code,
12254         * omp-low.cc (scan_sharing_clauses): Add OMP_CLAUSE_SELF case.
12255         * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_SELF enum.
12256         * tree-nested.cc (convert_nonlocal_omp_clauses): Add OMP_CLAUSE_SELF
12257         case.
12258         (convert_local_omp_clauses): Likewise.
12259         * tree-pretty-print.cc (dump_omp_clause): Add OMP_CLAUSE_SELF case.
12260         * tree.cc (omp_clause_num_ops): Add OMP_CLAUSE_SELF entry.
12261         (omp_clause_code_name): Likewise.
12262         * tree.h (OMP_CLAUSE_SELF_EXPR): New macro.
12264 2023-10-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12266         * config/riscv/riscv-protos.h (vlmax_avl_type_p): New function.
12267         * config/riscv/riscv-v.cc (vlmax_avl_type_p): Ditto.
12268         * config/riscv/riscv-vsetvl.cc (get_avl): Adapt function.
12269         * config/riscv/vector.md: Change avl_type into avl_type_idx.
12271 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
12273         * recog.cc (constrain_operands): Remove UNARY_P handling.
12274         * reload.cc (find_reloads): Likewise.
12276 2023-10-24  Jose E. Marchesi  <jose.marchesi@oracle.com>
12278         * gcov-io.h: Fix record length encoding in comment.
12280 2023-10-24  Roger Sayle  <roger@nextmovesoftware.com>
12282         * config/i386/i386-features.cc (compute_convert_gain): Provide
12283         more accurate values (sizes) for inter-unit moves with -Os.
12285 2023-10-24  Roger Sayle  <roger@nextmovesoftware.com>
12286             Claudiu Zissulescu  <claziss@gmail.com>
12288         * config/arc/arc-protos.h (output_shift): Rename to...
12289         (output_shift_loop): Tweak API to take an explicit rtx_code.
12290         (arc_split_ashl): Prototype new function here.
12291         (arc_split_ashr): Likewise.
12292         (arc_split_lshr): Likewise.
12293         (arc_split_rotl): Likewise.
12294         (arc_split_rotr): Likewise.
12295         * config/arc/arc.cc (output_shift): Delete local prototype.  Rename.
12296         (output_shift_loop): New function replacing output_shift to output
12297         a zero overheap loop for SImode shifts and rotates on ARC targets
12298         without barrel shifter (i.e. no hardware support for these insns).
12299         (arc_split_ashl): New helper function to split *ashlsi3_nobs.
12300         (arc_split_ashr): New helper function to split *ashrsi3_nobs.
12301         (arc_split_lshr): New helper function to split *lshrsi3_nobs.
12302         (arc_split_rotl): New helper function to split *rotlsi3_nobs.
12303         (arc_split_rotr): New helper function to split *rotrsi3_nobs.
12304         (arc_print_operand): Correct whitespace.
12305         (arc_rtx_costs): Likewise.
12306         (hwloop_optimize): Likewise.
12307         * config/arc/arc.md (ANY_SHIFT_ROTATE): New define_code_iterator.
12308         (define_code_attr insn): New code attribute to map to pattern name.
12309         (<ANY_SHIFT_ROTATE>si3): New expander unifying previous ashlsi3,
12310         ashrsi3 and lshrsi3 define_expands.  Adds rotlsi3 and rotrsi3.
12311         (*<ANY_SHIFT_ROTATE>si3_nobs): New define_insn_and_split that
12312         unifies the previous *ashlsi3_nobs, *ashrsi3_nobs and *lshrsi3_nobs.
12313         We now call arc_split_<insn> in arc.cc to implement each split.
12314         (shift_si3): Delete define_insn, all shifts/rotates are now split.
12315         (shift_si3_loop): Rename to...
12316         (<insn>si3_loop): define_insn to handle loop implementations of
12317         SImode shifts and rotates, calling ouput_shift_loop for template.
12318         (rotrsi3): Rename to...
12319         (*rotrsi3_insn): define_insn for TARGET_BARREL_SHIFTER's ror.
12320         (*rotlsi3): New define_insn_and_split to transform left rotates
12321         into right rotates before reload.
12322         (rotlsi3_cnt1): New define_insn_and_split to implement a left
12323         rotate by one bit using an add.f followed by an adc.
12324         * config/arc/predicates.md (shiftr4_operator): Delete.
12326 2023-10-24  Claudiu Zissulescu  <claziss@gmail.com>
12328         * config/arc/arc.md (mulsi3_700): Update pattern.
12329         (mulsi3_v2): Likewise.
12330         * config/arc/predicates.md (mpy_dest_reg_operand): Remove it.
12332 2023-10-24  Andrew Pinski  <pinskia@gmail.com>
12334         PR tree-optimization/104376
12335         PR tree-optimization/101541
12336         * tree-ssa-phiopt.cc (factor_out_conditional_operation):
12337         Allow nop conversions even if it is defined by a statement
12338         inside the conditional.
12340 2023-10-24  Andrew Pinski  <pinskia@gmail.com>
12342         PR tree-optimization/111913
12343         * match.pd (`popcount(X&Y) + popcount(X|Y)`): Add the resulting
12344         type for popcount.
12346 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
12348         * rtl-ssa/blocks.cc (function_info::create_degenerate_phi): Check
12349         whether the requested phi already exists.
12351 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
12353         * rtl-ssa.h: Include cfgbuild.h.
12354         * rtl-ssa/movement.h (can_insert_after): Replace is_jump with the
12355         more comprehensive control_flow_insn_p.
12357 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
12359         * rtl-ssa/changes.cc (function_info::perform_pending_updates): Check
12360         whether an insn has been replaced by a note.
12362 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
12364         * rtl-ssa/member-fns.inl (first_any_insn_use): Handle null
12365         m_first_use.
12367 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
12369         * config/i386/i386-expand.cc (ix86_split_mmx_punpck): Allow the
12370         destination to be wider than the sources.  Take the mode from the
12371         first source.
12372         (ix86_expand_sse_extend): Pass the destination directly to
12373         ix86_split_mmx_punpck, rather than using a fresh register that
12374         is half the size.
12376 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
12378         * config/i386/predicates.md (aeswidekl_operation): Protect
12379         REGNO check with REG_P.
12381 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
12383         * config/aarch64/aarch64.cc (aarch64_insn_cost): New function.
12384         (TARGET_INSN_COST): Define.
12386 2023-10-24  Richard Sandiford  <richard.sandiford@arm.com>
12388         * config/aarch64/atomics.md (aarch64_atomic_exchange<mode>): Require
12389         !TARGET_LSE.
12391 2023-10-24  xuli  <xuli1@eswincomputing.com>
12393         PR target/111935
12394         * config/riscv/riscv-vector-builtins-bases.cc: fix bug.
12396 2023-10-24  Mark Harmstone  <mark@harmstone.com>
12398         * opts.cc (debug_type_names): Remove stabs and xcoff.
12399         (df_set_names): Adjust.
12401 2023-10-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12403         PR target/111947
12404         * config/riscv/riscv-vsetvl.cc (pre_vsetvl::compute_lcm_local_properties): Add REGNO check.
12406 2023-10-23  Lewis Hyatt  <lhyatt@gmail.com>
12408         PR preprocessor/36887
12409         * toplev.h (ident_hash_extra): Declare...
12410         * stringpool.cc (ident_hash_extra): ...this new global variable.
12411         (init_stringpool): Handle ident_hash_extra as well as ident_hash.
12412         (ggc_mark_stringpool): Likewise.
12413         (ggc_purge_stringpool): Likewise.
12414         (struct string_pool_data_extra): New struct.
12415         (spd2): New GC root variable.
12416         (gt_pch_save_stringpool): Use spd2 to handle ident_hash_extra,
12417         analogous to how spd is used to handle ident_hash.
12418         (gt_pch_restore_stringpool): Likewise.
12420 2023-10-23  Robin Dapp  <rdapp@ventanamicro.com>
12422         PR tree-optimization/111794
12423         * tree-vect-stmts.cc (vectorizable_assignment): Add
12424         same-precision exception for dest and source.
12426 2023-10-23  Robin Dapp  <rdapp@ventanamicro.com>
12428         * config/riscv/autovec.md (popcount<mode>2): New expander.
12429         * config/riscv/riscv-protos.h (expand_popcount): Define.
12430         * config/riscv/riscv-v.cc (expand_popcount): Vectorize popcount
12431         with the WWG algorithm.
12433 2023-10-23  Richard Biener  <rguenther@suse.de>
12435         PR tree-optimization/111916
12436         * tree-sra.cc (sra_modify_assign): Do not lower all
12437         BIT_FIELD_REF reads that are sra_handled_bf_read_p.
12439 2023-10-23  Richard Biener  <rguenther@suse.de>
12441         PR tree-optimization/111915
12442         * tree-vect-slp.cc (vect_build_slp_tree_1): Check all
12443         accesses are either grouped or not.
12445 2023-10-23  Richard Biener  <rguenther@suse.de>
12447         PR ipa/111914
12448         * tree-inline.cc (setup_one_parameter): Move code emitting
12449         a dummy load when not optimizing ...
12450         (initialize_inlined_parameters): ... here to after when
12451         we remapped the parameter type.
12453 2023-10-23  Oleg Endo  <olegendo@gcc.gnu.org>
12455         PR target/111001
12456         * config/sh/sh_treg_combine.cc (sh_treg_combine::record_set_of_reg):
12457         Skip over nop move insns.
12459 2023-10-23  Tamar Christina  <tamar.christina@arm.com>
12461         PR tree-optimization/111860
12462         * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg):
12463         Drop .MEM nodes only.
12465 2023-10-23  Andrew Pinski  <apinski@marvell.com>
12467         * match.pd (`(A - B) CMP 0 ? (A - B) : (B - A)`):
12468         New patterns.
12470 2023-10-23  Andrew Pinski  <pinskia@gmail.com>
12472         * convert.cc (convert_to_pointer_1): Return error_mark_node
12473         after an error.
12474         (convert_to_real_1): Likewise.
12475         (convert_to_integer_1): Likewise.
12476         (convert_to_complex_1): Likewise.
12478 2023-10-23  Andrew Pinski  <pinskia@gmail.com>
12480         PR c/111903
12481         * convert.cc (convert_to_complex_1): Return
12482         error_mark_node if either convert was an error
12483         when converting from a scalar.
12485 2023-10-23  Richard Biener  <rguenther@suse.de>
12487         PR tree-optimization/111917
12488         * tree-ssa-loop-unswitch.cc (hoist_guard): Always insert
12489         new conditional after last stmt.
12491 2023-10-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12493         PR target/111927
12494         * config/riscv/riscv-vsetvl.cc: Fix bug.
12496 2023-10-23  Pan Li  <pan2.li@intel.com>
12498         * config/riscv/riscv-v.cc (emit_vec_cvt_x_f_rtz): Add insn type
12499         arg.
12500         (expand_vec_trunc): Take MA instead of MU for cvt_x_f_rtz.
12502 2023-10-23  Xi Ruoyao  <xry111@xry111.site>
12504         * doc/invoke.texi (-mexplicit-relocs=style): Document.
12505         (-mexplicit-relocs): Document as an alias of
12506         -mexplicit-relocs=always.
12507         (-mno-explicit-relocs): Document as an alias of
12508         -mexplicit-relocs=none.
12509         (-mcmodel=extreme): Mention -mexplicit-relocs=always instead of
12510         -mexplicit-relocs.
12512 2023-10-23  Xi Ruoyao  <xry111@xry111.site>
12514         * config/loongarch/predicates.md (symbolic_pcrel_operand): New
12515         predicate.
12516         * config/loongarch/loongarch.md (define_peephole2): Optimize
12517         la.local + ld/st to pcalau12i + ld/st if the address is only used
12518         once if -mexplicit-relocs=auto and -mcmodel=normal or medium.
12520 2023-10-23  Xi Ruoyao  <xry111@xry111.site>
12522         * config/loongarch/loongarch.cc (loongarch_explicit_relocs_p):
12523         Return true for TLS symbol types if -mexplicit-relocs=auto.
12524         (loongarch_call_tls_get_addr): Replace TARGET_EXPLICIT_RELOCS
12525         with la_opt_explicit_relocs != EXPLICIT_RELOCS_NONE.
12526         (loongarch_legitimize_tls_address): Likewise.
12527         * config/loongarch/loongarch.md (@tls_low<mode>): Remove
12528         TARGET_EXPLICIT_RELOCS from insn condition.
12530 2023-10-23  Xi Ruoyao  <xry111@xry111.site>
12532         * config/loongarch/loongarch-protos.h
12533         (loongarch_explicit_relocs_p): Declare new function.
12534         * config/loongarch/loongarch.cc (loongarch_explicit_relocs_p):
12535         Implement.
12536         (loongarch_symbol_insns): Call loongarch_explicit_relocs_p for
12537         SYMBOL_GOT_DISP, instead of using TARGET_EXPLICIT_RELOCS.
12538         (loongarch_split_symbol): Call loongarch_explicit_relocs_p for
12539         deciding if return early, instead of using
12540         TARGET_EXPLICIT_RELOCS.
12541         (loongarch_output_move): CAll loongarch_explicit_relocs_p
12542         instead of using TARGET_EXPLICIT_RELOCS.
12543         * config/loongarch/loongarch.md (*low<mode>): Remove
12544         TARGET_EXPLICIT_RELOCS from insn condition.
12545         (@ld_from_got<mode>): Likewise.
12546         * config/loongarch/predicates.md (move_operand): Call
12547         loongarch_explicit_relocs_p instead of using
12548         TARGET_EXPLICIT_RELOCS.
12550 2023-10-23  Xi Ruoyao  <xry111@xry111.site>
12552         * config/loongarch/genopts/loongarch-strings: Add strings for
12553         -mexplicit-relocs={auto,none,always}.
12554         * config/loongarch/genopts/loongarch.opt.in: Add options for
12555         -mexplicit-relocs={auto,none,always}.
12556         * config/loongarch/loongarch-str.h: Regenerate.
12557         * config/loongarch/loongarch.opt: Regenerate.
12558         * config/loongarch/loongarch-def.h
12559         (EXPLICIT_RELOCS_AUTO): Define.
12560         (EXPLICIT_RELOCS_NONE): Define.
12561         (EXPLICIT_RELOCS_ALWAYS): Define.
12562         (N_EXPLICIT_RELOCS_TYPES): Define.
12563         * config/loongarch/loongarch.cc
12564         (loongarch_option_override_internal): Error out if the old-style
12565         -m[no-]explicit-relocs option is used with
12566         -mexplicit-relocs={auto,none,always} together.  Map
12567         -mno-explicit-relocs to -mexplicit-relocs=none and
12568         -mexplicit-relocs to -mexplicit-relocs=always for backward
12569         compatibility.  Set a proper default for -mexplicit-relocs=
12570         based on configure-time probed linker capability.  Update a
12571         diagnostic message to mention -mexplicit-relocs=always instead
12572         of the old-style -mexplicit-relocs.
12573         (loongarch_handle_model_attribute): Update a diagnostic message
12574         to mention -mexplicit-relocs=always instead of the old-style
12575         -mexplicit-relocs.
12576         * config/loongarch/loongarch.h (TARGET_EXPLICIT_RELOCS): Define.
12578 2023-10-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12580         * config/riscv/riscv-vsetvl.cc (pre_vsetvl::fuse_local_vsetvl_info): Fix typo.
12581         (pre_vsetvl::pre_global_vsetvl_info): Ditto.
12583 2023-10-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12585         * config/riscv/vector.md: Fix avl_type attribute of tuple mov<mode>.
12587 2023-10-23  Kewen Lin  <linkw@linux.ibm.com>
12589         PR tree-optimization/111784
12590         * tree-vect-stmts.cc (vectorizable_store): Adjust costing way for
12591         adjacent vector stores, by costing them with the total number
12592         rather than costing them one by one.
12593         (vectorizable_load): Adjust costing way for adjacent vector
12594         loads, by costing them with the total number rather than costing
12595         them one by one.
12597 2023-10-23  Haochen Jiang  <haochen.jiang@intel.com>
12599         PR target/111753
12600         * config/i386/i386.cc (ix86_standard_x87sse_constant_load_p):
12601         Do not split to xmm16+ when !TARGET_AVX512VL.
12603 2023-10-23  Pan Li  <pan2.li@intel.com>
12605         * config/riscv/riscv-protos.h (enum insn_type): Add new type
12606         values.
12607         * config/riscv/riscv-v.cc (emit_vec_cvt_x_f): Add undef merge
12608         operand handling.
12609         (expand_vec_ceil): Take MA instead of MU for tmp register.
12610         (expand_vec_floor): Ditto.
12611         (expand_vec_nearbyint): Ditto.
12612         (expand_vec_rint): Ditto.
12613         (expand_vec_round): Ditto.
12614         (expand_vec_roundeven): Ditto.
12616 2023-10-23  Lulu Cheng  <chenglulu@loongson.cn>
12618         * config/loongarch/loongarch.h (CLEAR_INSN_CACHE): New definition.
12620 2023-10-23  Haochen Gui  <guihaoc@gcc.gnu.org>
12622         PR target/111449
12623         * expr.cc (can_use_qi_vectors): New function to return true if
12624         we know how to implement OP using vectors of bytes.
12625         (qi_vector_mode_supported_p): New function to check if optabs
12626         exists for the mode and certain by pieces operations.
12627         (widest_fixed_size_mode_for_size): Replace the second argument
12628         with the type of by pieces operations.  Call can_use_qi_vectors
12629         and qi_vector_mode_supported_p to do the check.  Call
12630         scalar_mode_supported_p to check if the scalar mode is supported.
12631         (by_pieces_ninsns): Pass the type of by pieces operation to
12632         widest_fixed_size_mode_for_size.
12633         (class op_by_pieces_d): Remove m_qi_vector_mode.  Add m_op to
12634         record the type of by pieces operations.
12635         (op_by_pieces_d::op_by_pieces_d): Change last argument to the
12636         type of by pieces operations, initialize m_op with it.  Pass
12637         m_op to function widest_fixed_size_mode_for_size.
12638         (op_by_pieces_d::get_usable_mode): Pass m_op to function
12639         widest_fixed_size_mode_for_size.
12640         (op_by_pieces_d::smallest_fixed_size_mode_for_size): Call
12641         can_use_qi_vectors and qi_vector_mode_supported_p to do the
12642         check.
12643         (op_by_pieces_d::run): Pass m_op to function
12644         widest_fixed_size_mode_for_size.
12645         (move_by_pieces_d::move_by_pieces_d): Set m_op to MOVE_BY_PIECES.
12646         (store_by_pieces_d::store_by_pieces_d): Set m_op with the op.
12647         (can_store_by_pieces): Pass the type of by pieces operations to
12648         widest_fixed_size_mode_for_size.
12649         (clear_by_pieces): Initialize class store_by_pieces_d with
12650         CLEAR_BY_PIECES.
12651         (compare_by_pieces_d::compare_by_pieces_d): Set m_op to
12652         COMPARE_BY_PIECES.
12654 2023-10-23  liuhongt  <hongtao.liu@intel.com>
12656         PR tree-optimization/111820
12657         PR tree-optimization/111833
12658         * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p): Give
12659         up vectorization for nonlinear iv vect_step_op_mul when
12660         step_expr is not exact_log2 and niters is greater than
12661         TYPE_PRECISION (TREE_TYPE (step_expr)). Also don't vectorize
12662         for nagative niters_skip which will be used by fully masked
12663         loop.
12664         (vect_can_advance_ivs_p): Pass whole phi_info to
12665         vect_can_peel_nonlinear_iv_p.
12666         * tree-vect-loop.cc (vect_peel_nonlinear_iv_init): Optimize
12667         init_expr * pow (step_expr, skipn) to init_expr
12668         << (log2 (step_expr) * skipn) when step_expr is exact_log2.
12670 2023-10-23  liuhongt  <hongtao.liu@intel.com>
12672         * config/i386/mmx.md (mmx_pinsrw): Remove.
12674 2023-10-22  Andrew Pinski  <pinskia@gmail.com>
12676         PR target/110986
12677         * config/aarch64/aarch64.md (*cmov<mode>_insn_insv): New pattern.
12678         (*cmov_uxtw_insn_insv): Likewise.
12680 2023-10-22  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
12682         * doc/invoke.texi: Document the new -nodefaultrpaths option.
12683         * doc/install.texi: Document the new --with-darwin-extra-rpath
12684         option.
12686 2023-10-22  Iain Sandoe  <iain@sandoe.co.uk>
12688         * Makefile.in: set ENABLE_DARWIN_AT_RPATH in site.tmp.
12690 2023-10-22  Iain Sandoe  <iain@sandoe.co.uk>
12692         * configure.ac: Add --with-darwin-extra-rpath option.
12693         * config/darwin.h: Handle DARWIN_EXTRA_RPATH.
12694         * config.in: Regenerate.
12695         * configure: Regenerate.
12697 2023-10-22  Iain Sandoe  <iain@sandoe.co.uk>
12699         * aclocal.m4: Regenerate.
12700         * configure: Regenerate.
12701         * configure.ac: Handle Darwin rpaths.
12702         * config/darwin.h: Handle Darwin rpaths.
12703         * config/darwin.opt: Handle Darwin rpaths.
12704         * Makefile.in:  Handle Darwin rpaths.
12706 2023-10-22  Iain Sandoe  <iain@sandoe.co.uk>
12708         * gcc.cc (RUNPATH_OPTION): New.
12709         (do_spec_1): Provide '%P' as a spec to insert rpaths for
12710         each compiler startfile path.
12712 2023-10-22  Andrew Burgess  <andrew.burgess@embecosm.com>
12713             Maxim Blinov  <maxim.blinov@embecosm.com>
12714             Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
12715             Iain Sandoe  <iain@sandoe.co.uk>
12717         * config.gcc: Default to heap trampolines on macOS 11 and above.
12718         * config/i386/darwin.h: Define X86_CUSTOM_FUNCTION_TEST.
12719         * config/i386/i386.h: Define X86_CUSTOM_FUNCTION_TEST.
12720         * config/i386/i386.cc: Use X86_CUSTOM_FUNCTION_TEST.
12722 2023-10-22  Andrew Burgess  <andrew.burgess@embecosm.com>
12723             Maxim Blinov  <maxim.blinov@embecosm.com>
12724             Iain Sandoe  <iain@sandoe.co.uk>
12725             Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
12727         * builtins.def (BUILT_IN_NESTED_PTR_CREATED): Define.
12728         (BUILT_IN_NESTED_PTR_DELETED): Ditto.
12729         * common.opt (ftrampoline-impl): Add option to control
12730         generation of trampoline instantiation (heap or stack).
12731         * coretypes.h: Define enum trampoline_impl.
12732         * tree-nested.cc (convert_tramp_reference_op): Don't bother calling
12733         __builtin_adjust_trampoline for heap trampolines.
12734         (finalize_nesting_tree_1): Emit calls to
12735         __builtin_nested_...{created,deleted} if we're generating with
12736         -ftrampoline-impl=heap.
12737         * tree.cc (build_common_builtin_nodes): Build
12738         __builtin_nested_...{created,deleted}.
12739         * doc/invoke.texi (-ftrampoline-impl): Document.
12741 2023-10-22  Tsukasa OI  <research_trasio@irq.a4lg.com>
12743         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
12744         Prohibit 'E' and 'H' combinations.
12746 2023-10-22  Tsukasa OI  <research_trasio@irq.a4lg.com>
12748         * common/config/riscv/riscv-common.cc (riscv_ext_version_table):
12749         Change version number of the 'Zfa' extension to 1.0.
12751 2023-10-21  Pan Li  <pan2.li@intel.com>
12753         PR target/111857
12754         * config/riscv/riscv-opts.h (TARGET_VECTOR_VLS): Remove.
12755         * config/riscv/riscv-protos.h (vls_mode_valid_p): New func decl.
12756         * config/riscv/riscv-v.cc (autovectorize_vector_modes): Replace
12757         macro reference to func.
12758         (vls_mode_valid_p): New func impl for vls mode valid or not.
12759         * config/riscv/riscv-vector-switch.def (VLS_ENTRY): Replace
12760         macro reference to func.
12761         * config/riscv/vector-iterators.md: Ditto.
12763 2023-10-20  Roger Sayle  <roger@nextmovesoftware.com>
12764             Uros Bizjak  <ubizjak@gmail.com>
12766         PR middle-end/101955
12767         PR tree-optimization/106245
12768         * config/i386/i386.md (*extv<mode>_1_0): New define_insn_and_split.
12770 2023-10-20  David Edelsohn  <dje.gcc@gmail.com>
12772         * gimple-harden-control-flow.cc: Include memmodel.h.
12774 2023-10-20  David Edelsohn  <dje.gcc@gmail.com>
12776         * gimple-harden-control-flow.cc: Include tm_p.h.
12778 2023-10-20  Andre Vieira  <andre.simoesdiasvieira@arm.com>
12780         PR tree-optimization/111882
12781         * tree-if-conv.cc (get_bitfield_rep): Return NULL_TREE for bitfields
12782         with non-constant offsets.
12784 2023-10-20  Tamar Christina  <tamar.christina@arm.com>
12786         PR tree-optimization/111866
12787         * tree-vect-loop-manip.cc (vect_do_peeling): Pass null as vinfo to
12788         vect_set_loop_condition during prolog peeling.
12790 2023-10-20  Richard Biener  <rguenther@suse.de>
12792         PR tree-optimization/111445
12793         * tree-scalar-evolution.cc (simple_iv_with_niters):
12794         Add missing check for a sign-conversion.
12796 2023-10-20  Richard Biener  <rguenther@suse.de>
12798         PR tree-optimization/110243
12799         PR tree-optimization/111336
12800         * tree-ssa-loop-ivopts.cc (strip_offset_1): Rewrite
12801         operations with undefined behavior on overflow to
12802         unsigned arithmetic.
12804 2023-10-20  Richard Biener  <rguenther@suse.de>
12806         PR tree-optimization/111891
12807         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Fix
12808         assert.
12810 2023-10-20  Andrew Stubbs  <ams@codesourcery.com>
12812         * config.gcc: Allow --with-arch=gfx1030.
12813         * config/gcn/gcn-hsa.h (NO_XNACK): gfx1030 does not support xnack.
12814         (ASM_SPEC): gfx1030 needs -mattr=+wavefrontsize64 set.
12815         * config/gcn/gcn-opts.h (enum processor_type): Add PROCESSOR_GFX1030.
12816         (TARGET_GFX1030): New.
12817         (TARGET_RDNA2): New.
12818         * config/gcn/gcn-valu.md (@dpp_move<mode>): Disable for RDNA2.
12819         (addc<mode>3<exec_vcc>): Add RDNA2 syntax variant.
12820         (subc<mode>3<exec_vcc>): Likewise.
12821         (<convop><mode><vndi>2_exec): Add RDNA2 alternatives.
12822         (vec_cmp<mode>di): Likewise.
12823         (vec_cmp<u><mode>di): Likewise.
12824         (vec_cmp<mode>di_exec): Likewise.
12825         (vec_cmp<u><mode>di_exec): Likewise.
12826         (vec_cmp<mode>di_dup): Likewise.
12827         (vec_cmp<mode>di_dup_exec): Likewise.
12828         (reduc_<reduc_op>_scal_<mode>): Disable for RDNA2.
12829         (*<reduc_op>_dpp_shr_<mode>): Likewise.
12830         (*plus_carry_dpp_shr_<mode>): Likewise.
12831         (*plus_carry_in_dpp_shr_<mode>): Likewise.
12832         * config/gcn/gcn.cc (gcn_option_override): Recognise gfx1030.
12833         (gcn_global_address_p): RDNA2 only allows smaller offsets.
12834         (gcn_addr_space_legitimate_address_p): Likewise.
12835         (gcn_omp_device_kind_arch_isa): Recognise gfx1030.
12836         (gcn_expand_epilogue): Use VGPRs instead of SGPRs.
12837         (output_file_start): Configure gfx1030.
12838         * config/gcn/gcn.h (TARGET_CPU_CPP_BUILTINS): Add __RDNA2__;
12839         (ASSEMBLER_DIALECT): New.
12840         * config/gcn/gcn.md (rdna): New define_attr.
12841         (enabled): Use "rdna" attribute.
12842         (gcn_return): Remove s_dcache_wb.
12843         (addcsi3_scalar): Add RDNA2 syntax variant.
12844         (addcsi3_scalar_zero): Likewise.
12845         (addptrdi3): Likewise.
12846         (mulsi3): v_mul_lo_i32 should be v_mul_lo_u32 on all ISA.
12847         (*memory_barrier): Add RDNA2 syntax variant.
12848         (atomic_load<mode>): Add RDNA2 cache control variants, and disable
12849         scalar atomics for RDNA2.
12850         (atomic_store<mode>): Likewise.
12851         (atomic_exchange<mode>): Likewise.
12852         * config/gcn/gcn.opt (gpu_type): Add gfx1030.
12853         * config/gcn/mkoffload.cc (EF_AMDGPU_MACH_AMDGCN_GFX1030): New.
12854         (main): Recognise -march=gfx1030.
12855         * config/gcn/t-omp-device: Add gfx1030 isa.
12857 2023-10-20  Richard Biener  <rguenther@suse.de>
12859         PR tree-optimization/111000
12860         * stor-layout.h (element_precision): Move ..
12861         * tree.h (element_precision): .. here.
12862         * tree-ssa-loop-im.cc (movement_possibility_1): Restrict
12863         motion of shifts and rotates.
12865 2023-10-20  Alexandre Oliva  <oliva@adacore.com>
12867         * tree-core.h (ECF_XTHROW): New macro.
12868         * tree.cc (set_call_expr): Add expected_throw attribute when
12869         ECF_XTHROW is set.
12870         (build_common_builtin_node): Add ECF_XTHROW to
12871         __cxa_end_cleanup and _Unwind_Resume or _Unwind_SjLj_Resume.
12872         * calls.cc (flags_from_decl_or_type): Check for expected_throw
12873         attribute to set ECF_XTHROW.
12874         * gimple.cc (gimple_build_call_from_tree): Propagate
12875         ECF_XTHROW from decl flags to gimple call...
12876         (gimple_call_flags): ... and back.
12877         * gimple.h (GF_CALL_XTHROW): New gf_mask flag.
12878         (gimple_call_set_expected_throw): New.
12879         (gimple_call_expected_throw_p): New.
12880         * Makefile.in (OBJS): Add gimple-harden-control-flow.o.
12881         * builtins.def (BUILT_IN___HARDCFR_CHECK): New.
12882         * common.opt (fharden-control-flow-redundancy): New.
12883         (-fhardcfr-check-returning-calls): New.
12884         (-fhardcfr-check-exceptions): New.
12885         (-fhardcfr-check-noreturn-calls=*): New.
12886         (Enum hardcfr_check_noreturn_calls): New.
12887         (fhardcfr-skip-leaf): New.
12888         * doc/invoke.texi: Document them.
12889         (hardcfr-max-blocks, hardcfr-max-inline-blocks): New params.
12890         * flag-types.h (enum hardcfr_noret): New.
12891         * gimple-harden-control-flow.cc: New.
12892         * params.opt (-param=hardcfr-max-blocks=): New.
12893         (-param=hradcfr-max-inline-blocks=): New.
12894         * passes.def (pass_harden_control_flow_redundancy): Add.
12895         * tree-pass.h (make_pass_harden_control_flow_redundancy):
12896         Declare.
12897         * doc/extend.texi: Document expected_throw attribute.
12899 2023-10-20  Alex Coplan  <alex.coplan@arm.com>
12901         * rtl-ssa/changes.cc (function_info::change_insns): Ensure we call
12902         ::remove_insn on deleted insns.
12904 2023-10-20  Richard Biener  <rguenther@suse.de>
12906         * doc/generic.texi ({L,R}ROTATE_EXPR): Document.
12908 2023-10-20  Oleg Endo  <olegendo@gcc.gnu.org>
12910         PR target/101177
12911         * config/sh/sh.md (unnamed split pattern): Fix comparison of
12912         find_regno_note result.
12914 2023-10-20  Richard Biener  <rguenther@suse.de>
12916         * tree-vect-loop.cc (update_epilogue_loop_vinfo): Rewrite
12917         both STMT_VINFO_GATHER_SCATTER_P and VMAT_GATHER_SCATTER
12918         stmt refs.
12920 2023-10-20  Richard Biener  <rguenther@suse.de>
12922         * tree-vect-slp.cc (off_map, off_op0_map, off_arg2_map,
12923         off_arg3_arg2_map): New.
12924         (vect_get_operand_map): Get flag whether the stmt was
12925         recognized as gather or scatter and use the above
12926         accordingly.
12927         (vect_get_and_check_slp_defs): Adjust.
12928         (vect_build_slp_tree_2): Likewise.
12930 2023-10-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12932         * config/riscv/riscv-vsetvl.cc (pre_vsetvl::fuse_local_vsetvl_info): Rename variables.
12933         (pre_vsetvl::pre_global_vsetvl_info): Ditto.
12934         (pre_vsetvl::emit_vsetvl): Ditto.
12936 2023-10-20  Tamar Christina  <tamar.christina@arm.com>
12937              Andre Vieira  <andre.simoesdiasvieira@arm.com>
12939         * tree-if-conv.cc (if_convertible_loop_p_1): Move check from here ...
12940         (get_loop_body_if_conv_order): ... to here.
12941         (if_convertible_loop_p): Remove single_exit check.
12942         (tree_if_conversion): Move single_exit check to if-conversion part and
12943         support multiple exits.
12945 2023-10-20  Tamar Christina  <tamar.christina@arm.com>
12946              Andre Vieira  <andre.simoesdiasvieira@arm.com>
12948         * tree-vect-patterns.cc (vect_init_pattern_stmt): Copy STMT_VINFO_TYPE
12949         from original statement.
12950         (vect_recog_bitfield_ref_pattern): Support bitfields in gcond.
12952 2023-10-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12954         PR target/111848
12955         * config/riscv/riscv-selftests.cc (run_const_vector_selftests): Adapt selftest.
12956         * config/riscv/riscv-v.cc (expand_const_vector): Change it into vec_duplicate splitter.
12958 2023-10-20  Lehua Ding  <lehua.ding@rivai.ai>
12960         PR target/111037
12961         PR target/111234
12962         PR target/111725
12963         * config/riscv/riscv-vsetvl.cc (bitmap_union_of_preds_with_entry): New.
12964         (debug): Removed.
12965         (compute_reaching_defintion): New.
12966         (enum vsetvl_type): Moved.
12967         (vlmax_avl_p): Moved.
12968         (enum emit_type): Moved.
12969         (vlmul_to_str): Moved.
12970         (vlmax_avl_insn_p): Removed.
12971         (policy_to_str): Moved.
12972         (loop_basic_block_p): Removed.
12973         (valid_sew_p): Removed.
12974         (vsetvl_insn_p): Moved.
12975         (vsetvl_vtype_change_only_p): Removed.
12976         (after_or_same_p): Removed.
12977         (before_p): Removed.
12978         (anticipatable_occurrence_p): Removed.
12979         (available_occurrence_p): Removed.
12980         (insn_should_be_added_p): Removed.
12981         (get_all_sets): Moved.
12982         (get_same_bb_set): Moved.
12983         (gen_vsetvl_pat): Removed.
12984         (calculate_vlmul): Moved.
12985         (get_max_int_sew): New.
12986         (emit_vsetvl_insn): Removed.
12987         (get_max_float_sew): New.
12988         (eliminate_insn): Removed.
12989         (insert_vsetvl): Removed.
12990         (count_regno_occurrences): Moved.
12991         (get_vl_vtype_info): Removed.
12992         (enum def_type): Moved.
12993         (validate_change_or_fail): Moved.
12994         (change_insn): Removed.
12995         (get_all_real_uses): Moved.
12996         (get_forward_read_vl_insn): Removed.
12997         (get_backward_fault_first_load_insn): Removed.
12998         (change_vsetvl_insn): Removed.
12999         (avl_source_has_vsetvl_p): Removed.
13000         (source_equal_p): Moved.
13001         (calculate_sew): Removed.
13002         (same_equiv_note_p): Moved.
13003         (get_expr_id): New.
13004         (incompatible_avl_p): Removed.
13005         (get_regno): New.
13006         (different_sew_p): Removed.
13007         (get_bb_index): New.
13008         (different_lmul_p): Removed.
13009         (has_no_uses): Moved.
13010         (different_ratio_p): Removed.
13011         (different_tail_policy_p): Removed.
13012         (different_mask_policy_p): Removed.
13013         (possible_zero_avl_p): Removed.
13014         (enum demand_flags): New.
13015         (second_ratio_invalid_for_first_sew_p): Removed.
13016         (second_ratio_invalid_for_first_lmul_p): Removed.
13017         (enum class): New.
13018         (float_insn_valid_sew_p): Removed.
13019         (second_sew_less_than_first_sew_p): Removed.
13020         (first_sew_less_than_second_sew_p): Removed.
13021         (class vsetvl_info): New.
13022         (compare_lmul): Removed.
13023         (second_lmul_less_than_first_lmul_p): Removed.
13024         (second_ratio_less_than_first_ratio_p): Removed.
13025         (DEF_INCOMPATIBLE_COND): Removed.
13026         (greatest_sew): Removed.
13027         (first_sew): Removed.
13028         (second_sew): Removed.
13029         (first_vlmul): Removed.
13030         (second_vlmul): Removed.
13031         (first_ratio): Removed.
13032         (second_ratio): Removed.
13033         (vlmul_for_first_sew_second_ratio): Removed.
13034         (vlmul_for_greatest_sew_second_ratio): Removed.
13035         (ratio_for_second_sew_first_vlmul): Removed.
13036         (class vsetvl_block_info): New.
13037         (DEF_SEW_LMUL_FUSE_RULE): New.
13038         (always_unavailable): Removed.
13039         (avl_unavailable_p): Removed.
13040         (class demand_system): New.
13041         (sew_unavailable_p): Removed.
13042         (lmul_unavailable_p): Removed.
13043         (ge_sew_unavailable_p): Removed.
13044         (ge_sew_lmul_unavailable_p): Removed.
13045         (ge_sew_ratio_unavailable_p): Removed.
13046         (DEF_UNAVAILABLE_COND): Removed.
13047         (same_sew_lmul_demand_p): Removed.
13048         (propagate_avl_across_demands_p): Removed.
13049         (reg_available_p): Removed.
13050         (support_relaxed_compatible_p): Removed.
13051         (demands_can_be_fused_p): Removed.
13052         (earliest_pred_can_be_fused_p): Removed.
13053         (vsetvl_dominated_by_p): Removed.
13054         (avl_info::avl_info): Removed.
13055         (avl_info::single_source_equal_p): Removed.
13056         (avl_info::multiple_source_equal_p): Removed.
13057         (DEF_SEW_LMUL_RULE): New.
13058         (avl_info::operator=): Removed.
13059         (avl_info::operator==): Removed.
13060         (DEF_POLICY_RULE): New.
13061         (avl_info::operator!=): Removed.
13062         (avl_info::has_non_zero_avl): Removed.
13063         (vl_vtype_info::vl_vtype_info): Removed.
13064         (vl_vtype_info::operator==): Removed.
13065         (DEF_AVL_RULE): New.
13066         (vl_vtype_info::operator!=): Removed.
13067         (vl_vtype_info::same_avl_p): Removed.
13068         (vl_vtype_info::same_vtype_p): Removed.
13069         (vl_vtype_info::same_vlmax_p): Removed.
13070         (vector_insn_info::operator>=): Removed.
13071         (vector_insn_info::operator==): Removed.
13072         (class pre_vsetvl): New.
13073         (vector_insn_info::parse_insn): Removed.
13074         (vector_insn_info::compatible_p): Removed.
13075         (vector_insn_info::skip_avl_compatible_p): Removed.
13076         (vector_insn_info::compatible_avl_p): Removed.
13077         (vector_insn_info::compatible_vtype_p): Removed.
13078         (vector_insn_info::available_p): Removed.
13079         (vector_insn_info::fuse_avl): Removed.
13080         (vector_insn_info::fuse_sew_lmul): Removed.
13081         (vector_insn_info::fuse_tail_policy): Removed.
13082         (vector_insn_info::fuse_mask_policy): Removed.
13083         (vector_insn_info::local_merge): Removed.
13084         (vector_insn_info::global_merge): Removed.
13085         (vector_insn_info::get_avl_or_vl_reg): Removed.
13086         (vector_insn_info::update_fault_first_load_avl): Removed.
13087         (vector_insn_info::dump): Removed.
13088         (vector_infos_manager::vector_infos_manager): Removed.
13089         (vector_infos_manager::create_expr): Removed.
13090         (vector_infos_manager::get_expr_id): Removed.
13091         (vector_infos_manager::all_same_ratio_p): Removed.
13092         (vector_infos_manager::all_avail_in_compatible_p): Removed.
13093         (vector_infos_manager::all_same_avl_p): Removed.
13094         (vector_infos_manager::expr_set_num): Removed.
13095         (vector_infos_manager::release): Removed.
13096         (vector_infos_manager::create_bitmap_vectors): Removed.
13097         (vector_infos_manager::free_bitmap_vectors): Removed.
13098         (vector_infos_manager::dump): Removed.
13099         (class pass_vsetvl): Adjust.
13100         (pass_vsetvl::get_vector_info): Removed.
13101         (pass_vsetvl::get_block_info): Removed.
13102         (pass_vsetvl::update_vector_info): Removed.
13103         (pass_vsetvl::update_block_info): Removed.
13104         (pre_vsetvl::compute_avl_def_data): New.
13105         (pass_vsetvl::simple_vsetvl): Removed.
13106         (pass_vsetvl::compute_local_backward_infos): Removed.
13107         (pass_vsetvl::need_vsetvl): Removed.
13108         (pass_vsetvl::transfer_before): Removed.
13109         (pass_vsetvl::transfer_after): Removed.
13110         (pre_vsetvl::compute_vsetvl_def_data): New.
13111         (pass_vsetvl::emit_local_forward_vsetvls): Removed.
13112         (pass_vsetvl::prune_expressions): Removed.
13113         (pass_vsetvl::compute_local_properties): Removed.
13114         (pre_vsetvl::compute_lcm_local_properties): New.
13115         (pass_vsetvl::earliest_fusion): Removed.
13116         (pre_vsetvl::fuse_local_vsetvl_info): New.
13117         (pass_vsetvl::vsetvl_fusion): Removed.
13118         (pass_vsetvl::can_refine_vsetvl_p): Removed.
13119         (pre_vsetvl::earliest_fuse_vsetvl_info): New.
13120         (pass_vsetvl::refine_vsetvls): Removed.
13121         (pass_vsetvl::cleanup_vsetvls): Removed.
13122         (pass_vsetvl::commit_vsetvls): Removed.
13123         (pass_vsetvl::pre_vsetvl): Removed.
13124         (pass_vsetvl::get_vsetvl_at_end): Removed.
13125         (local_avl_compatible_p): Removed.
13126         (pass_vsetvl::local_eliminate_vsetvl_insn): Removed.
13127         (pre_vsetvl::pre_global_vsetvl_info): New.
13128         (get_first_vsetvl_before_rvv_insns): Removed.
13129         (pass_vsetvl::global_eliminate_vsetvl_insn): Removed.
13130         (pre_vsetvl::emit_vsetvl): New.
13131         (pass_vsetvl::ssa_post_optimization): Removed.
13132         (pre_vsetvl::cleaup): New.
13133         (pre_vsetvl::remove_avl_operand): New.
13134         (pass_vsetvl::df_post_optimization): Removed.
13135         (pre_vsetvl::remove_unused_dest_operand): New.
13136         (pass_vsetvl::init): Removed.
13137         (pass_vsetvl::done): Removed.
13138         (pass_vsetvl::compute_probabilities): Removed.
13139         (pass_vsetvl::lazy_vsetvl): Adjust.
13140         (pass_vsetvl::execute): Adjust.
13141         * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Removed.
13142         (DEF_SEW_LMUL_RULE): New.
13143         (DEF_SEW_LMUL_FUSE_RULE): Removed.
13144         (DEF_POLICY_RULE): New.
13145         (DEF_UNAVAILABLE_COND): Removed
13146         (DEF_AVL_RULE): New demand type.
13147         (sew_lmul): New demand type.
13148         (ratio_only): New demand type.
13149         (sew_only): New demand type.
13150         (ge_sew): New demand type.
13151         (ratio_and_ge_sew): New demand type.
13152         (tail_mask_policy): New demand type.
13153         (tail_policy_only): New demand type.
13154         (mask_policy_only): New demand type.
13155         (ignore_policy): New demand type.
13156         (avl): New demand type.
13157         (non_zero_avl): New demand type.
13158         (ignore_avl): New demand type.
13159         * config/riscv/t-riscv: Removed riscv-vsetvl.h
13160         * config/riscv/riscv-vsetvl.h: Removed.
13162 2023-10-20  Alexandre Oliva  <oliva@adacore.com>
13164         * tree-eh.cc (make_eh_edges): Return the new edge.
13165         * tree-eh.h (make_eh_edges): Likewise.
13167 2023-10-19  Marek Polacek  <polacek@redhat.com>
13169         * doc/contrib.texi: Add entry for Patrick Palka.
13171 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
13173         * omp-simd-clone.cc (simd_clone_adjust_argument_types): Make function
13174         compatible with mask parameters in clone.
13175         * tree-vect-stmts.cc (vect_build_all_ones_mask): Allow vector boolean
13176         typed masks.
13177         (vectorizable_simd_clone_call): Enable the use of masked clones in
13178         fully masked loops.
13180 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
13182         PR tree-optimization/110485
13183         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Disable partial
13184         vectors usage if a notinbranch simdclone has been selected.
13186 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
13188         * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Special case
13189         simd clone calls and only use types that are mapped to vectors.
13190         (simd_clone_call_p): New helper function.
13192 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
13194         * tree-parloops.cc (try_transform_to_exit_first_loop_alt): Accept
13195         poly NIT and ALT_BOUND.
13197 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
13199         * tree-parloops.cc (create_loop_fn): Copy specific target and
13200         optimization options to clone.
13202 2023-10-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
13204         * omp-simd-clone.cc (simd_clone_subparts): Remove.
13205         (simd_clone_init_simd_arrays): Replace simd_clone_supbarts with
13206         TYPE_VECTOR_SUBPARTS.
13207         (ipa_simd_modify_function_body): Likewise.
13208         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Likewise.
13209         (simd_clone_subparts): Remove.
13211 2023-10-19  Jason Merrill  <jason@redhat.com>
13213         * ABOUT-GCC-NLS: Add usage guidance.
13215 2023-10-19  Jason Merrill  <jason@redhat.com>
13217         * diagnostic-core.h (permerror): Rename new overloads...
13218         (permerror_opt): To this.
13219         * diagnostic.cc: Likewise.
13221 2023-10-19  Tamar Christina  <tamar.christina@arm.com>
13223         PR tree-optimization/111860
13224         * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg):
13225         Remove PHI nodes that dominate loop.
13227 2023-10-19  Richard Biener  <rguenther@suse.de>
13229         PR tree-optimization/111131
13230         * tree-vect-loop.cc (update_epilogue_loop_vinfo): Make
13231         sure to update all gather/scatter stmt DRs, not only those
13232         that eventually got VMAT_GATHER_SCATTER set.
13233         * tree-vect-slp.cc (_slp_oprnd_info::first_gs_info): Add.
13234         (vect_get_and_check_slp_defs): Handle gathers/scatters,
13235         adding the offset as SLP operand and comparing base and scale.
13236         (vect_build_slp_tree_1): Handle gathers.
13237         (vect_build_slp_tree_2): Likewise.
13239 2023-10-19  Richard Biener  <rguenther@suse.de>
13241         * tree-vect-stmts.cc (vect_build_gather_load_calls): Rename
13242         to ...
13243         (vect_build_one_gather_load_call): ... this.  Refactor,
13244         inline widening/narrowing support ...
13245         (vectorizable_load): ... here, do gather vectorization
13246         with builtin decls along other gather vectorization.
13248 2023-10-19  Alex Coplan  <alex.coplan@arm.com>
13250         * config/aarch64/aarch64.md (load_pair_dw_tftf): Rename to ...
13251         (load_pair_dw_<TX:mode><TX2:mode>): ... this.
13252         (store_pair_dw_tftf): Rename to ...
13253         (store_pair_dw_<TX:mode><TX2:mode>): ... this.
13254         * config/aarch64/iterators.md (TX2): New.
13256 2023-10-19  Alex Coplan  <alex.coplan@arm.com>
13258         * rtl-ssa/changes.cc (function_info::finalize_new_accesses): Add new
13259         parameter to give final insn position, infer use of mem if it isn't
13260         specified explicitly.
13261         (function_info::change_insns): Pass down final insn position to
13262         finalize_new_accesses.
13263         * rtl-ssa/functions.h: Add parameter to finalize_new_accesses.
13265 2023-10-19  Alex Coplan  <alex.coplan@arm.com>
13267         * rtl-ssa/accesses.cc (function_info::reparent_use): New.
13268         * rtl-ssa/functions.h (function_info): Declare new member
13269         function reparent_use.
13271 2023-10-19  Alex Coplan  <alex.coplan@arm.com>
13273         * rtl-ssa/access-utils.h (drop_memory_access): New.
13275 2023-10-19  Alex Coplan  <alex.coplan@arm.com>
13277         * rtl-ssa/insns.cc (function_info::add_insn_after): Ensure we
13278         update the prev pointer on the following nondebug insn in the
13279         case that !insn->is_debug_insn () && next->is_debug_insn ().
13281 2023-10-19  Haochen Jiang  <haochen.jiang@intel.com>
13283         * config/i386/i386.h: Correct the ISA enabled for Arrow Lake.
13284         Also make Clearwater Forest depends on Sierra Forest.
13285         * config/i386/i386-options.cc: Revise the order of the macro
13286         definition to avoid confusion.
13287         * doc/extend.texi: Revise documentation.
13288         * doc/invoke.texi: Correct documentation.
13290 2023-10-19  Andrew Stubbs  <ams@codesourcery.com>
13292         * config.gcc (amdgcn): Switch default to --with-arch=gfx900.
13293         Implement support for --with-multilib-list.
13294         * config/gcn/t-gcn-hsa: Likewise.
13295         * doc/install.texi: Likewise.
13296         * doc/invoke.texi: Mark Fiji deprecated.
13298 2023-10-19  Jiahao Xu  <xujiahao@loongson.cn>
13300         * config/loongarch/loongarch.cc (loongarch_vector_costs): Inherit from
13301         vector_costs.  Add a constructor.
13302         (loongarch_vector_costs::add_stmt_cost): Use adjust_cost_for_freq to
13303         adjust the cost for inner loops.
13304         (loongarch_vector_costs::count_operations): New function.
13305         (loongarch_vector_costs::determine_suggested_unroll_factor): Ditto.
13306         (loongarch_vector_costs::finish_cost): Ditto.
13307         (loongarch_builtin_vectorization_cost): Adjust.
13308         * config/loongarch/loongarch.opt (loongarch-vect-unroll-limit): New parameter.
13309         (loongarcg-vect-issue-info): Ditto.
13310         (mmemvec-cost): Delete.
13311         * config/loongarch/genopts/loongarch.opt.in
13312         (loongarch-vect-unroll-limit): Ditto.
13313         (loongarcg-vect-issue-info): Ditto.
13314         (mmemvec-cost): Delete.
13315         * doc/invoke.texi (loongarcg-vect-unroll-limit): Document new option.
13317 2023-10-19  Jiahao Xu  <xujiahao@loongson.cn>
13319         * config/loongarch/lasx.md
13320         (vec_widen_<su>mult_even_v8si): New patterns.
13321         (vec_widen_<su>add_hi_<mode>): Ditto.
13322         (vec_widen_<su>add_lo_<mode>): Ditto.
13323         (vec_widen_<su>sub_hi_<mode>): Ditto.
13324         (vec_widen_<su>sub_lo_<mode>): Ditto.
13325         (vec_widen_<su>mult_hi_<mode>): Ditto.
13326         (vec_widen_<su>mult_lo_<mode>): Ditto.
13327         * config/loongarch/loongarch.md (u_bool): New iterator.
13328         * config/loongarch/loongarch-protos.h
13329         (loongarch_expand_vec_widen_hilo): New prototype.
13330         * config/loongarch/loongarch.cc
13331         (loongarch_expand_vec_interleave): New function.
13332         (loongarch_expand_vec_widen_hilo): New function.
13334 2023-10-19  Jiahao Xu  <xujiahao@loongson.cn>
13336         * config/loongarch/lasx.md
13337         (avg<mode>3_ceil): New patterns.
13338         (uavg<mode>3_ceil): Ditto.
13339         (avg<mode>3_floor): Ditto.
13340         (uavg<mode>3_floor): Ditto.
13341         (usadv32qi): Ditto.
13342         (ssadv32qi): Ditto.
13343         * config/loongarch/lsx.md
13344         (avg<mode>3_ceil): New patterns.
13345         (uavg<mode>3_ceil): Ditto.
13346         (avg<mode>3_floor): Ditto.
13347         (uavg<mode>3_floor): Ditto.
13348         (usadv16qi): Ditto.
13349         (ssadv16qi): Ditto.
13351 2023-10-18  Andrew Pinski  <pinskia@gmail.com>
13353         PR middle-end/111863
13354         * expr.cc (do_store_flag): Don't over write arg0
13355         when stripping off `& POW2`.
13357 2023-10-18  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
13359         PR tree-optimization/111648
13360         * fold-const.cc (valid_mask_for_fold_vec_perm_cst_p): If a1
13361         chooses base element from arg, ensure that it's a natural stepped
13362         sequence.
13363         (build_vec_cst_rand): New param natural_stepped and use it to
13364         construct a naturally stepped sequence.
13365         (test_nunits_min_2): Add new unit tests Case 6 and Case 7.
13367 2023-10-18  Dimitar Dimitrov  <dimitar@dinux.eu>
13369         * config/pru/pru.cc (pru_insn_cost): New function.
13370         (TARGET_INSN_COST): Define for PRU.
13372 2023-10-18  Andrew Carlotti  <andrew.carlotti@arm.com>
13374         * config/aarch64/aarch64.cc (aarch64_test_fractional_cost):
13375         Test <= instead of testing < twice.
13377 2023-10-18  Jakub Jelinek  <jakub@redhat.com>
13379         PR bootstrap/111852
13380         * cse.cc (cse_insn): Add workaround for GCC 4.8-4.9, instead of
13381         using rtx_def type for memory_extend_buf, use unsigned char
13382         arrayy with size of rtx_def and its alignment.
13384 2023-10-18  Jason Merrill  <jason@redhat.com>
13386         * doc/invoke.texi: Move -fpermissive to Warning Options.
13387         * diagnostic.cc (update_effective_level_from_pragmas): Remove
13388         redundant system header check.
13389         (diagnostic_report_diagnostic): Move down syshdr/-w check.
13390         (diagnostic_impl): Handle DK_PERMERROR with an option number.
13391         (permerror): Add new overloads.
13392         * diagnostic-core.h (permerror): Declare them.
13394 2023-10-18  Tobias Burnus  <tobias@codesourcery.com>
13396         * gimplify.cc (gimplify_bind_expr): Remove "omp allocate" attribute
13397         to avoid that auxillary statement list reaches LTO.
13399 2023-10-18  Jakub Jelinek  <jakub@redhat.com>
13401         PR tree-optimization/111845
13402         * tree-ssa-math-opts.cc (match_uaddc_usubc): Remember temporary
13403         statements for the 4 operand addition or subtraction of 3 operands
13404         from 1 operand cases and remove them when successful.  Look for
13405         nested additions even from rhs[2], not just rhs[1].
13407 2023-10-18  Tobias Burnus  <tobias@codesourcery.com>
13409         PR target/111093
13410         * config/nvptx/nvptx.cc (nvptx_option_override): Issue fatal error
13411         instead of an assert ICE when no -march= has been specified.
13413 2023-10-18  Iain Sandoe  <iain@sandoe.co.uk>
13415         * config.in: Regenerate.
13416         * config/darwin.cc (darwin_file_start): Add assembler directives
13417         for the target OS version, where these are supported by the
13418         assembler.
13419         (darwin_override_options): Check for building >= macOS 10.14.
13420         * configure: Regenerate.
13421         * configure.ac: Check for assembler support of .build_version
13422         directives.
13424 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
13426         PR tree-optimization/109154
13427         * tree-if-conv.cc (INCLUDE_ALGORITHM): Remove.
13428         (typedef struct ifcvt_arg_entry): New.
13429         (cmp_arg_entry): New.
13430         (gen_phi_arg_condition, gen_phi_nest_statement,
13431         predicate_scalar_phi): Use them.
13433 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
13435         PR tree-optimization/109154
13436         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
13437         Rewrite to new syntax.
13438         (*aarch64_simd_mov<VQMOV:mode): Rewrite to new syntax and merge in
13439         splits.
13441 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
13443         PR tree-optimization/109154
13444         * tree-if-conv.cc (if_convertible_stmt_p): Allow any const IFN.
13446 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
13448         PR tree-optimization/109154
13449         * match.pd: Add new cond_op rule.
13451 2023-10-18  Xi Ruoyao  <xry111@xry111.site>
13453         * config/loongarch/loongarch.md (movfcc): Use fcmp.caf.s for
13454         zeroing a fcc.
13456 2023-10-18  Richard Biener  <rguenther@suse.de>
13458         * tree-vect-stmts.cc (vectorizable_simd_clone_call):
13459         Relax check to again allow passing integer mode masks
13460         as traditional vectors.
13462 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
13464         * tree-loop-distribution.cc (copy_loop_before): Request no LCSSA.
13465         * tree-vect-loop-manip.cc (adjust_phi_and_debug_stmts): Add additional
13466         asserts.
13467         (slpeel_tree_duplicate_loop_to_edge_cfg): Keep LCSSA during peeling.
13468         (find_guard_arg): Look value up through explicit edge and original defs.
13469         (vect_do_peeling): Use it.
13470         (slpeel_update_phi_nodes_for_guard2): Take explicit exit edge.
13471         (slpeel_update_phi_nodes_for_lcssa, slpeel_update_phi_nodes_for_loops):
13472         Remove.
13473         * tree-vect-loop.cc (vect_create_epilog_for_reduction): Initialize phi.
13474         * tree-vectorizer.h (slpeel_tree_duplicate_loop_to_edge_cfg): Add
13475         optional param to turn off LCSSA mode.
13477 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
13479         * tree-if-conv.cc (tree_if_conversion): Record exits in aux.
13480         * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg): Use
13481         it.
13482         * tree-vect-loop.cc (vect_get_loop_niters): Determine main exit.
13483         (vec_init_loop_exit_info): Extend analysis when multiple exits.
13484         (vect_analyze_loop_form): Record conds and determine main cond.
13485         (vect_create_loop_vinfo): Extend bookkeeping of conds.
13486         (vect_analyze_loop): Release conds.
13487         * tree-vectorizer.h (LOOP_VINFO_LOOP_CONDS,
13488         LOOP_VINFO_LOOP_IV_COND):  New.
13489         (struct vect_loop_form_info): Add conds, alt_loop_conds;
13490         (struct loop_vec_info): Add conds, loop_iv_cond.
13492 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
13494         * tree-loop-distribution.cc (copy_loop_before): Pass exit explicitly.
13495         (loop_distribution::distribute_loop): Bail out of not single exit.
13496         * tree-scalar-evolution.cc (get_loop_exit_condition): New.
13497         * tree-scalar-evolution.h (get_loop_exit_condition): New.
13498         * tree-vect-data-refs.cc (vect_enhance_data_refs_alignment): Pass exit
13499         explicitly.
13500         * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors,
13501         vect_set_loop_condition_partial_vectors_avx512,
13502         vect_set_loop_condition_normal, vect_set_loop_condition): Explicitly
13503         take exit.
13504         (slpeel_tree_duplicate_loop_to_edge_cfg): Explicitly take exit and
13505         return new peeled corresponding peeled exit.
13506         (slpeel_can_duplicate_loop_p): Explicitly take exit.
13507         (find_loop_location): Handle not knowing an explicit exit.
13508         (vect_update_ivs_after_vectorizer, vect_gen_vector_loop_niters_mult_vf,
13509         find_guard_arg, slpeel_update_phi_nodes_for_loops,
13510         slpeel_update_phi_nodes_for_guard2): Use new exits.
13511         (vect_do_peeling): Update bookkeeping to keep track of exits.
13512         * tree-vect-loop.cc (vect_get_loop_niters): Explicitly take exit to
13513         analyze.
13514         (vec_init_loop_exit_info): New.
13515         (_loop_vec_info::_loop_vec_info): Initialize vec_loop_iv,
13516         vec_epilogue_loop_iv, scalar_loop_iv.
13517         (vect_analyze_loop_form): Initialize exits.
13518         (vect_create_loop_vinfo): Set main exit.
13519         (vect_create_epilog_for_reduction, vectorizable_live_operation,
13520         vect_transform_loop): Use it.
13521         (scale_profile_for_vect_loop): Explicitly take exit to scale.
13522         * tree-vectorizer.cc (set_uid_loop_bbs): Initialize loop exit.
13523         * tree-vectorizer.h (LOOP_VINFO_IV_EXIT, LOOP_VINFO_EPILOGUE_IV_EXIT,
13524         LOOP_VINFO_SCALAR_IV_EXIT): New.
13525         (struct loop_vec_info): Add vec_loop_iv, vec_epilogue_loop_iv,
13526         scalar_loop_iv.
13527         (vect_set_loop_condition, slpeel_can_duplicate_loop_p,
13528         slpeel_tree_duplicate_loop_to_edge_cfg): Take explicit exits.
13529         (vec_init_loop_exit_info): New.
13530         (struct vect_loop_form_info): Add loop_exit.
13532 2023-10-18  Tamar Christina  <tamar.christina@arm.com>
13534         * tree-vect-stmts.cc (vectorizable_comparison): Refactor, splitting body
13535         to ...
13536         (vectorizable_comparison_1): ...This.
13538 2023-10-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13540         * config/riscv/riscv-v.cc (shuffle_consecutive_patterns): New function.
13541         (expand_vec_perm_const_1): Add consecutive pattern recognition.
13543 2023-10-18  Haochen Jiang  <haochen.jiang@intel.com>
13545         * common/config/i386/cpuinfo.h (get_intel_cpu): Add Panther
13546         Lake.
13547         * common/config/i386/i386-common.cc (processor_name):
13548         Ditto.
13549         (processor_alias_table): Ditto.
13550         * common/config/i386/i386-cpuinfo.h (enum processor_types):
13551         Add INTEL_PANTHERLAKE.
13552         * config.gcc: Add -march=pantherlake.
13553         * config/i386/driver-i386.cc (host_detect_local_cpu): Refactor
13554         the if clause. Handle pantherlake.
13555         * config/i386/i386-c.cc (ix86_target_macros_internal):
13556         Handle pantherlake.
13557         * config/i386/i386-options.cc (processor_cost_table): Ditto.
13558         (m_PANTHERLAKE): New.
13559         (m_CORE_HYBRID): Add pantherlake.
13560         * config/i386/i386.h (enum processor_type): Ditto.
13561         * doc/extend.texi: Ditto.
13562         * doc/invoke.texi: Ditto.
13564 2023-10-18  Haochen Jiang  <haochen.jiang@intel.com>
13566         * config/i386/i386-options.cc (m_CORE_HYBRID): New.
13567         * config/i386/x86-tune.def: Replace hybrid client tune to
13568         m_CORE_HYBRID.
13570 2023-10-18  Haochen Jiang  <haochen.jiang@intel.com>
13572         * common/config/i386/cpuinfo.h
13573         (get_intel_cpu): Handle Clearwater Forest.
13574         * common/config/i386/i386-common.cc (processor_name):
13575         Add Clearwater Forest.
13576         (processor_alias_table): Ditto.
13577         * common/config/i386/i386-cpuinfo.h (enum processor_types):
13578         Add INTEL_CLEARWATERFOREST.
13579         * config.gcc: Add -march=clearwaterforest.
13580         * config/i386/driver-i386.cc (host_detect_local_cpu): Handle
13581         clearwaterforest.
13582         * config/i386/i386-c.cc (ix86_target_macros_internal): Ditto.
13583         * config/i386/i386-options.cc (processor_cost_table): Ditto.
13584         (m_CLEARWATERFOREST): New.
13585         (m_CORE_ATOM): Add clearwaterforest.
13586         * config/i386/i386.h (enum processor_type): Ditto.
13587         * doc/extend.texi: Ditto.
13588         * doc/invoke.texi: Ditto.
13590 2023-10-18  liuhongt  <hongtao.liu@intel.com>
13592         * config/i386/mmx.md (fma<mode>4): New expander.
13593         (fms<mode>4): Ditto.
13594         (fnma<mode>4): Ditto.
13595         (fnms<mode>4): Ditto.
13596         (vec_fmaddsubv4hf4): Ditto.
13597         (vec_fmsubaddv4hf4): Ditto.
13599 2023-10-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13601         PR target/111832
13602         * config/riscv/riscv-vector-costs.cc (get_biggest_mode): New function.
13604 2023-10-17  Richard Sandiford  <richard.sandiford@arm.com>
13606         * config/aarch64/aarch64.cc (aarch64_layout_frame): Don't make
13607         the position of the LR save slot dependent on stack clash
13608         protection unless shadow call stacks are enabled.
13610 2023-10-17  Richard Sandiford  <richard.sandiford@arm.com>
13612         * config/aarch64/aarch64.h (aarch64_frame): Add vectors that
13613         store the list saved GPRs, FPRs and predicate registers.
13614         * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize
13615         the lists of saved registers.  Use them to choose push candidates.
13616         Invalidate pop candidates if we're not going to do a pop.
13617         (aarch64_next_callee_save): Delete.
13618         (aarch64_save_callee_saves): Take a list of registers,
13619         rather than a range.  Make !skip_wb select only write-back
13620         candidates.
13621         (aarch64_expand_prologue): Update calls accordingly.
13622         (aarch64_restore_callee_saves): Take a list of registers,
13623         rather than a range.  Always skip pop candidates.  Also skip
13624         LR if shadow call stacks are enabled.
13625         (aarch64_expand_epilogue): Update calls accordingly.
13627 2023-10-17  Richard Sandiford  <richard.sandiford@arm.com>
13629         * cfgbuild.h (find_sub_basic_blocks): Declare.
13630         * cfgbuild.cc (update_profile_for_new_sub_basic_block): New function,
13631         split out from...
13632         (find_many_sub_basic_blocks): ...here.
13633         (find_sub_basic_blocks): New function.
13634         * function.cc (thread_prologue_and_epilogue_insns): Handle
13635         epilogues that contain jumps.
13637 2023-10-17  Andrew Pinski  <apinski@marvell.com>
13639         PR tree-optimization/110817
13640         * tree-ssanames.cc (ssa_name_has_boolean_range): Remove the
13641         check for boolean type as they don't have "[0,1]" range.
13643 2023-10-17  Andrew Pinski  <pinskia@gmail.com>
13645         PR tree-optimization/111432
13646         * match.pd (`a & (x | CST)`): New pattern.
13648 2023-10-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
13650         * tree-cfg.cc (move_sese_region_to_fn): Initialize profile_count for
13651         new basic block.
13653 2023-10-17  Richard Biener  <rguenther@suse.de>
13655         PR tree-optimization/111846
13656         * tree-vectorizer.h (_slp_tree::simd_clone_info): Add.
13657         (SLP_TREE_SIMD_CLONE_INFO): New.
13658         * tree-vect-slp.cc (_slp_tree::_slp_tree): Initialize
13659         SLP_TREE_SIMD_CLONE_INFO.
13660         (_slp_tree::~_slp_tree): Release it.
13661         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Use
13662         SLP_TREE_SIMD_CLONE_INFO or STMT_VINFO_SIMD_CLONE_INFO
13663         dependent on if we're doing SLP.
13665 2023-10-17  Jakub Jelinek  <jakub@redhat.com>
13667         * wide-int-print.h (print_dec_buf_size): For length, divide number
13668         of bits by 3 and add 3 instead of division by 4 and adding 4.
13669         * wide-int-print.cc (print_decs): Remove superfluous ()s.  Don't call
13670         print_hex, instead call print_decu on either negated value after
13671         printing - or on wi itself.
13672         (print_decu): Don't call print_hex, instead print even large numbers
13673         decimally.
13674         (pp_wide_int_large): Assume len from print_dec_buf_size is big enough
13675         even if it returns false.
13676         * pretty-print.h (pp_wide_int): Use print_dec_buf_size to check if
13677         pp_wide_int_large should be used.
13678         * tree-pretty-print.cc (dump_generic_node): Use print_hex_buf_size
13679         to compute needed buffer size.
13681 2023-10-17  Richard Biener  <rguenther@suse.de>
13683         PR middle-end/111818
13684         * tree-ssa.cc (maybe_optimize_var): When clearing
13685         DECL_NOT_GIMPLE_REG_P always rewrite into SSA.
13687 2023-10-17  Richard Biener  <rguenther@suse.de>
13689         PR tree-optimization/111807
13690         * tree-sra.cc (build_ref_for_model): Only call
13691         build_reconstructed_reference when the offsets are the same.
13693 2023-10-17  Vineet Gupta  <vineetg@rivosinc.com>
13695         PR target/111466
13696         * expr.cc (expand_expr_real_2): Do not clear SUBREG_PROMOTED_VAR_P.
13698 2023-10-17  Chenghui Pan  <panchenghui@loongson.cn>
13700         * config/loongarch/loongarch.cc (loongarch_expand_vector_group_init):
13701         fix impl related to vec_initv32qiv16qi template to avoid ICE.
13703 2023-10-17  Lulu Cheng  <chenglulu@loongson.cn>
13704             Chenghua Xu  <xuchenghua@loongson.cn>
13706         * config/loongarch/loongarch.h (ASM_OUTPUT_ALIGN_WITH_NOP):
13707         Delete.
13709 2023-10-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13711         * config/riscv/riscv-vector-costs.cc (max_number_of_live_regs): Fix big LMUL issue.
13712         (get_store_value): New function.
13714 2023-10-16  Jeff Law  <jlaw@ventanamicro.com>
13716         * explow.cc (probe_stack_range): Handle case when expand_binop
13717         does not construct its result in the expected location.
13719 2023-10-16  David Malcolm  <dmalcolm@redhat.com>
13721         * diagnostic.cc (diagnostic_initialize): When LANG=C, update
13722         default for -fdiagnostics-text-art-charset from emoji to ascii.
13723         * doc/invoke.texi (fdiagnostics-text-art-charset): Document the above.
13725 2023-10-16  David Malcolm  <dmalcolm@redhat.com>
13727         * diagnostic.cc (diagnostic_initialize): Ensure
13728         context->extra_output_kind is initialized.
13730 2023-10-16  Uros Bizjak  <ubizjak@gmail.com>
13732         * config/i386/i386.cc (ix86_can_inline_p):
13733         Handle CM_LARGE and CM_LARGE_PIC.
13734         (x86_elf_aligned_decl_common): Ditto.
13735         (x86_output_aligned_bss): Ditto.
13736         * config/i386/i386.opt: Update doc for -mlarge-data-threshold=.
13737         * doc/invoke.texi: Update doc for -mlarge-data-threshold=.
13739 2023-10-16  Christoph Müllner  <christoph.muellner@vrull.eu>
13741         * config/riscv/riscv-protos.h (emit_block_move): Remove redundant
13742         prototype.  Improve comment.
13743         * config/riscv/riscv.cc (riscv_block_move_straight): Move from riscv.cc
13744         into riscv-string.cc.
13745         (riscv_adjust_block_mem, riscv_block_move_loop): Likewise.
13746         (riscv_expand_block_move): Likewise.
13747         * config/riscv/riscv-string.cc (riscv_block_move_straight): Add moved
13748         function.
13749         (riscv_adjust_block_mem, riscv_block_move_loop): Likewise.
13750         (riscv_expand_block_move): Likewise.
13752 2023-10-16  Manolis Tsamis  <manolis.tsamis@vrull.eu>
13754         * Makefile.in: Add fold-mem-offsets.o.
13755         * passes.def: Schedule a new pass.
13756         * tree-pass.h (make_pass_fold_mem_offsets): Declare.
13757         * common.opt: New options.
13758         * doc/invoke.texi: Document new option.
13759         * fold-mem-offsets.cc: New file.
13761 2023-10-16  Andrew Pinski  <pinskia@gmail.com>
13763         PR tree-optimization/101541
13764         * match.pd (A CMP 0 ? A : -A): Improve
13765         using bitwise_equal_p.
13767 2023-10-16  Andrew Pinski  <pinskia@gmail.com>
13769         PR tree-optimization/31531
13770         * match.pd (~X op ~Y): Allow for an optional nop convert.
13771         (~X op C): Likewise.
13773 2023-10-16  Roger Sayle  <roger@nextmovesoftware.com>
13775         * config/arc/arc.md (*ashlsi3_1): New pre-reload splitter to
13776         use bset dst,0,src to implement 1<<x on !TARGET_BARREL_SHIFTER.
13778 2023-10-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
13780         * config/s390/vector.md (popcountv8hi2_vx): Sign extend each
13781         unsigned vector element.
13783 2023-10-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13785         * config/riscv/riscv-vector-costs.cc (costs::preferred_new_lmul_p): Use VLS modes.
13787 2023-10-16  Jiufu Guo  <guojiufu@linux.ibm.com>
13789         * fold-const.cc (expr_not_equal_to): Replace get_global_range_query
13790         by get_range_query.
13791         * gimple-fold.cc (size_must_be_zero_p): Likewise.
13792         * gimple-range-fold.cc (fur_source::fur_source): Likewise.
13793         * gimple-ssa-warn-access.cc (check_nul_terminated_array): Likewise.
13794         * tree-dfa.cc (get_ref_base_and_extent): Likewise.
13796 2023-10-16  liuhongt  <hongtao.liu@intel.com>
13798         * config/i386/mmx.md (V2FI_32): New mode iterator
13799         (movd_v2hf_to_sse): Rename to ..
13800         (movd_<mode>_to_sse): .. this.
13801         (movd_v2hf_to_sse_reg): Rename to ..
13802         (movd_<mode>_to_sse_reg): .. this.
13803         (fix<fixunssuffix>_trunc<mode><mmxintvecmodelower>2): New
13804         expander.
13805         (fix<fixunssuffix>_truncv2hfv2si2): Ditto.
13806         (float<floatunssuffix><mmxintvecmodelower><mode>2): Ditto.
13807         (float<floatunssuffix>v2siv2hf2): Ditto.
13808         (extendv2hfv2sf2): Ditto.
13809         (truncv2sfv2hf2): Ditto.
13810         * config/i386/sse.md (*vec_concatv8hf_movss): Rename to ..
13811         (*vec_concat<mode>_movss): .. this.
13813 2023-10-16  liuhongt  <hongtao.liu@intel.com>
13815         * config/i386/i386-expand.cc (ix86_sse_copysign_to_positive):
13816         Handle HFmode.
13817         (ix86_expand_round_sse4): Ditto.
13818         * config/i386/i386.md (roundhf2): New expander.
13819         (lroundhf<mode>2): Ditto.
13820         (lrinthf<mode>2): Ditto.
13821         (l<rounding_insn>hf<mode>2): Ditto.
13822         * config/i386/mmx.md (sqrt<mode>2): Ditto.
13823         (btrunc<mode>2): Ditto.
13824         (nearbyint<mode>2): Ditto.
13825         (rint<mode>2): Ditto.
13826         (lrint<mode><mmxintvecmodelower>2): Ditto.
13827         (floor<mode>2): Ditto.
13828         (lfloor<mode><mmxintvecmodelower>2): Ditto.
13829         (ceil<mode>2): Ditto.
13830         (lceil<mode><mmxintvecmodelower>2): Ditto.
13831         (round<mode>2): Ditto.
13832         (lround<mode><mmxintvecmodelower>2): Ditto.
13833         * config/i386/sse.md (lrint<mode><sseintvecmodelower>2): Ditto.
13834         (lfloor<mode><sseintvecmodelower>2): Ditto.
13835         (lceil<mode><sseintvecmodelower>2): Ditto.
13836         (lround<mode><sseintvecmodelower>2): Ditto.
13837         (sse4_1_round<ssescalarmodesuffix>): Extend to V8HF.
13838         (round<mode>2): Extend to V8HF/V16HF/V32HF.
13840 2023-10-15  Tobias Burnus  <tobias@codesourcery.com>
13842         * doc/invoke.texi (-fopenacc, -fopenmp, -fopenmp-simd): Use @samp not
13843         @code; document more completely the supported Fortran sentinels.
13845 2023-10-15  Roger Sayle  <roger@nextmovesoftware.com>
13847         * optabs.cc (expand_subword_shift): Call simplify_expand_binop
13848         instead of expand_binop.  Optimize cases (i.e. avoid generating
13849         RTL) when CARRIES or INTO_INPUT is zero.  Use one_cmpl_optab
13850         (i.e. NOT) instead of xor_optab with ~0 to calculate ~OP1.
13852 2023-10-15  Jakub Jelinek  <jakub@redhat.com>
13854         PR tree-optimization/111800
13855         * wide-int-print.h (print_dec_buf_size, print_decs_buf_size,
13856         print_decu_buf_size, print_hex_buf_size): New inline functions.
13857         * wide-int.cc (assert_deceq): Use print_dec_buf_size.
13858         (assert_hexeq): Use print_hex_buf_size.
13859         * wide-int-print.cc (print_decs): Use print_decs_buf_size.
13860         (print_decu): Use print_decu_buf_size.
13861         (print_hex): Use print_hex_buf_size.
13862         (pp_wide_int_large): Use print_dec_buf_size.
13863         * value-range.cc (irange_bitmask::dump): Use print_hex_buf_size.
13864         * value-range-pretty-print.cc (vrange_printer::print_irange_bitmasks):
13865         Likewise.
13866         * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations): Use
13867         print_dec_buf_size.  Use TYPE_SIGN macro in print_dec call argument.
13869 2023-10-15  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
13871         * combine.cc (simplify_compare_const): Fix handling of unsigned
13872         constants.
13874 2023-10-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13876         * config/riscv/vector-iterators.md: Fix vsingle incorrect attribute for RVVM2x2QI.
13878 2023-10-14  Tobias Burnus  <tobias@codesourcery.com>
13880         * gimplify.cc (gimplify_bind_expr): Handle Fortran's
13881         'omp allocate' for stack variables.
13883 2023-10-14  Jakub Jelinek  <jakub@redhat.com>
13885         PR c/102989
13886         * tree-core.h (struct tree_base): Remove int_length.offset
13887         member, change type of int_length.unextended and int_length.extended
13888         from unsigned char to unsigned short.
13889         * tree.h (TREE_INT_CST_OFFSET_NUNITS): Remove.
13890         (wi::extended_tree <N>::get_len): Don't use TREE_INT_CST_OFFSET_NUNITS,
13891         instead compute it at runtime from TREE_INT_CST_EXT_NUNITS and
13892         TREE_INT_CST_NUNITS.
13893         * tree.cc (wide_int_to_tree_1): Don't assert
13894         TREE_INT_CST_OFFSET_NUNITS value.
13895         (make_int_cst): Don't initialize TREE_INT_CST_OFFSET_NUNITS.
13896         * wide-int.h (WIDE_INT_MAX_ELTS): Change from 255 to 1024.
13897         (WIDEST_INT_MAX_ELTS): Change from 510 to 2048, adjust comment.
13898         (trailing_wide_int_storage): Change m_len type from unsigned char *
13899         to unsigned short *.
13900         (trailing_wide_int_storage::trailing_wide_int_storage): Change second
13901         argument from unsigned char * to unsigned short *.
13902         (trailing_wide_ints): Change m_max_len type from unsigned char to
13903         unsigned short.  Change m_len element type from
13904         struct{unsigned char len;} to unsigned short.
13905         (trailing_wide_ints <N>::operator []): Remove .len from m_len
13906         accesses.
13907         * value-range-storage.h (irange_storage::lengths_address): Change
13908         return type from const unsigned char * to const unsigned short *.
13909         (irange_storage::write_lengths_address): Change return type from
13910         unsigned char * to unsigned short *.
13911         * value-range-storage.cc (irange_storage::write_lengths_address):
13912         Likewise.
13913         (irange_storage::lengths_address): Change return type from
13914         const unsigned char * to const unsigned short *.
13915         (write_wide_int): Change len argument type from unsigned char *&
13916         to unsigned short *&.
13917         (irange_storage::set_irange): Change len variable type from
13918         unsigned char * to unsigned short *.
13919         (read_wide_int): Change len argument type from unsigned char to
13920         unsigned short.  Use trailing_wide_int_storage <unsigned short>
13921         instead of trailing_wide_int_storage and
13922         trailing_wide_int <unsigned short> instead of trailing_wide_int.
13923         (irange_storage::get_irange): Change len variable type from
13924         unsigned char * to unsigned short *.
13925         (irange_storage::size): Multiply n by sizeof (unsigned short)
13926         in len_size variable initialization.
13927         (irange_storage::dump): Change len variable type from
13928         unsigned char * to unsigned short *.
13930 2023-10-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13932         * config/riscv/vector-iterators.md: Remove redundant iterators.
13934 2023-10-13  Andrew MacLeod  <amacleod@redhat.com>
13936         PR tree-optimization/111622
13937         * value-relation.cc (equiv_oracle::add_partial_equiv): Do not
13938         register a partial equivalence if an operand has no uses.
13940 2023-10-13  Richard Biener  <rguenther@suse.de>
13942         PR tree-optimization/111795
13943         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
13944         integer mode mask arguments.
13946 2023-10-13  Richard Biener  <rguenther@suse.de>
13948         * tree-vect-slp.cc (mask_call_maps): New.
13949         (vect_get_operand_map): Handle IFN_MASK_CALL.
13950         (vect_build_slp_tree_1): Likewise.
13951         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
13952         SLP.
13954 2023-10-13  Richard Biener  <rguenther@suse.de>
13956         PR tree-optimization/111779
13957         * tree-sra.cc (sra_handled_bf_read_p): New function.
13958         (build_access_from_expr_1): Handle some BIT_FIELD_REFs.
13959         (sra_modify_expr): Likewise.
13960         (make_fancy_name_1): Skip over BIT_FIELD_REF.
13962 2023-10-13  Richard Biener  <rguenther@suse.de>
13964         PR tree-optimization/111773
13965         * tree-ssa-dce.cc (mark_stmt_if_obviously_necessary): Do
13966         not elide noreturn calls that are reflected to the IL.
13968 2023-10-13  Kito Cheng  <kito.cheng@sifive.com>
13970         * config/riscv/riscv.cc (riscv_legitimize_poly_move): Bump
13971         max_power to 64.
13972         * config/riscv/riscv.h (MAX_POLY_VARIANT): New.
13974 2023-10-13  Pan Li  <pan2.li@intel.com>
13976         * config/riscv/autovec.md (lfloor<mode><v_i_l_ll_convert>2): New
13977         pattern for lfloor/lfloorf.
13978         * config/riscv/riscv-protos.h (enum insn_type): New enum value.
13979         (expand_vec_lfloor): New func decl for expanding lfloor.
13980         * config/riscv/riscv-v.cc (expand_vec_lfloor): New func impl
13981         for expanding lfloor.
13983 2023-10-13  Pan Li  <pan2.li@intel.com>
13985         * config/riscv/autovec.md (lceil<mode><v_i_l_ll_convert>2): New
13986         pattern] for lceil/lceilf.
13987         * config/riscv/riscv-protos.h (enum insn_type): New enum value.
13988         (expand_vec_lceil): New func decl for expanding lceil.
13989         * config/riscv/riscv-v.cc (expand_vec_lceil): New func impl
13990         for expanding lceil.
13992 2023-10-12  Michael Meissner  <meissner@linux.ibm.com>
13994         PR target/111778
13995         * config/rs6000/rs6000.cc (can_be_built_by_li_lis_and_rldicl): Protect
13996         code from shifts that are undefined.
13997         (can_be_built_by_li_lis_and_rldicr): Likewise.
13998         (can_be_built_by_li_and_rldic): Protect code from shifts that
13999         undefined.  Also replace uses of 1ULL with HOST_WIDE_INT_1U.
14001 2023-10-12  Alex Coplan  <alex.coplan@arm.com>
14003         * reg-notes.def (NOALIAS): Correct comment.
14005 2023-10-12  Jakub Jelinek  <jakub@redhat.com>
14007         PR bootstrap/111787
14008         * tree.h (wi::int_traits <unextended_tree>::needs_write_val_arg): New
14009         static data member.
14010         (int_traits <extended_tree <N>>::needs_write_val_arg): Likewise.
14011         (wi::ints_for): Provide separate partial specializations for
14012         generic_wide_int <extended_tree <N>> and INL_CONST_PRECISION or that
14013         and CONST_PRECISION, rather than using
14014         int_traits <extended_tree <N> >::precision_type as the second template
14015         argument.
14016         * rtl.h (wi::int_traits <rtx_mode_t>::needs_write_val_arg): New
14017         static data member.
14018         * double-int.h (wi::int_traits <double_int>::needs_write_val_arg):
14019         Likewise.
14021 2023-10-12  Mary Bennett  <mary.bennett@embecosm.com>
14023         PR middle-end/111777
14024         * doc/extend.texi: Change subsubsection to subsection for
14025         CORE-V built-ins.
14027 2023-10-12  Tamar Christina  <tamar.christina@arm.com>
14029         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Add undef.
14031 2023-10-12  Jakub Jelinek  <jakub@redhat.com>
14033         * wide-int.h (widest_int_storage <N>::write_val): If l is small
14034         and there is space in u.val array, store a canary value at the
14035         end when checking.
14036         (widest_int_storage <N>::set_len): Check the canary hasn't been
14037         overwritten.
14039 2023-10-12  Jakub Jelinek  <jakub@redhat.com>
14041         PR c/102989
14042         * wide-int.h: Adjust file comment.
14043         (WIDE_INT_MAX_INL_ELTS): Define to former value of WIDE_INT_MAX_ELTS.
14044         (WIDE_INT_MAX_INL_PRECISION): Define.
14045         (WIDE_INT_MAX_ELTS): Change to 255.  Assert that WIDE_INT_MAX_INL_ELTS
14046         is smaller than WIDE_INT_MAX_ELTS.
14047         (RWIDE_INT_MAX_ELTS, RWIDE_INT_MAX_PRECISION, WIDEST_INT_MAX_ELTS,
14048         WIDEST_INT_MAX_PRECISION): Define.
14049         (WI_BINARY_RESULT_VAR, WI_UNARY_RESULT_VAR): Change write_val callers
14050         to pass 0 as a new argument.
14051         (class widest_int_storage): Likewise.
14052         (widest_int, widest2_int): Change typedefs to use widest_int_storage
14053         rather than fixed_wide_int_storage.
14054         (enum wi::precision_type): Add INL_CONST_PRECISION enumerator.
14055         (struct binary_traits): Add partial specializations for
14056         INL_CONST_PRECISION.
14057         (generic_wide_int): Add needs_write_val_arg static data member.
14058         (int_traits): Likewise.
14059         (wide_int_storage): Replace val non-static data member with a union
14060         u of it and HOST_WIDE_INT *valp.  Declare copy constructor, copy
14061         assignment operator and destructor.  Add unsigned int argument to
14062         write_val.
14063         (wide_int_storage::wide_int_storage): Initialize precision to 0
14064         in the default ctor.  Remove unnecessary {}s around STATIC_ASSERTs.
14065         Assert in non-default ctor T's precision_type is not
14066         INL_CONST_PRECISION and allocate u.valp for large precision.  Add
14067         copy constructor.
14068         (wide_int_storage::~wide_int_storage): New.
14069         (wide_int_storage::operator=): Add copy assignment operator.  In
14070         assignment operator remove unnecessary {}s around STATIC_ASSERTs,
14071         assert ctor T's precision_type is not INL_CONST_PRECISION and
14072         if precision changes, deallocate and/or allocate u.valp.
14073         (wide_int_storage::get_val): Return u.valp rather than u.val for
14074         large precision.
14075         (wide_int_storage::write_val): Likewise.  Add an unused unsigned int
14076         argument.
14077         (wide_int_storage::set_len): Use write_val instead of writing val
14078         directly.
14079         (wide_int_storage::from, wide_int_storage::from_array): Adjust
14080         write_val callers.
14081         (wide_int_storage::create): Allocate u.valp for large precisions.
14082         (wi::int_traits <wide_int_storage>::get_binary_precision): New.
14083         (fixed_wide_int_storage::fixed_wide_int_storage): Make default
14084         ctor defaulted.
14085         (fixed_wide_int_storage::write_val): Add unused unsigned int argument.
14086         (fixed_wide_int_storage::from, fixed_wide_int_storage::from_array):
14087         Adjust write_val callers.
14088         (wi::int_traits <fixed_wide_int_storage>::get_binary_precision): New.
14089         (WIDEST_INT): Define.
14090         (widest_int_storage): New template class.
14091         (wi::int_traits <widest_int_storage>): New.
14092         (trailing_wide_int_storage::write_val): Add unused unsigned int
14093         argument.
14094         (wi::get_binary_precision): Use
14095         wi::int_traits <WI_BINARY_RESULT (T1, T2)>::get_binary_precision
14096         rather than get_precision on get_binary_result.
14097         (wi::copy): Adjust write_val callers.  Don't call set_len if
14098         needs_write_val_arg.
14099         (wi::bit_not): If result.needs_write_val_arg, call write_val
14100         again with upper bound estimate of len.
14101         (wi::sext, wi::zext, wi::set_bit): Likewise.
14102         (wi::bit_and, wi::bit_and_not, wi::bit_or, wi::bit_or_not,
14103         wi::bit_xor, wi::add, wi::sub, wi::mul, wi::mul_high, wi::div_trunc,
14104         wi::div_floor, wi::div_ceil, wi::div_round, wi::divmod_trunc,
14105         wi::mod_trunc, wi::mod_floor, wi::mod_ceil, wi::mod_round,
14106         wi::lshift, wi::lrshift, wi::arshift): Likewise.
14107         (wi::bswap, wi::bitreverse): Assert result.needs_write_val_arg
14108         is false.
14109         (gt_ggc_mx, gt_pch_nx): Remove generic template for all
14110         generic_wide_int, instead add functions and templates for each
14111         storage of generic_wide_int.  Make functions for
14112         generic_wide_int <wide_int_storage> and templates for
14113         generic_wide_int <widest_int_storage <N>> deleted.
14114         (wi::mask, wi::shifted_mask): Adjust write_val calls.
14115         * wide-int.cc (zeros): Decrease array size to 1.
14116         (BLOCKS_NEEDED): Use CEIL.
14117         (canonize): Use HOST_WIDE_INT_M1.
14118         (wi::from_buffer): Pass 0 to write_val.
14119         (wi::to_mpz): Use CEIL.
14120         (wi::from_mpz): Likewise.  Pass 0 to write_val.  Use
14121         WIDE_INT_MAX_INL_ELTS instead of WIDE_INT_MAX_ELTS.
14122         (wi::mul_internal): Use WIDE_INT_MAX_INL_PRECISION instead of
14123         MAX_BITSIZE_MODE_ANY_INT in automatic array sizes, for prec
14124         above WIDE_INT_MAX_INL_PRECISION estimate precision from
14125         lengths of operands.  Use XALLOCAVEC allocated buffers for
14126         prec above WIDE_INT_MAX_INL_PRECISION.
14127         (wi::divmod_internal): Likewise.
14128         (wi::lshift_large): For len > WIDE_INT_MAX_INL_ELTS estimate
14129         it from xlen and skip.
14130         (rshift_large_common): Remove xprecision argument, add len
14131         argument with len computed in caller.  Don't return anything.
14132         (wi::lrshift_large, wi::arshift_large): Compute len here
14133         and pass it to rshift_large_common, for lengths above
14134         WIDE_INT_MAX_INL_ELTS using estimations from xlen if possible.
14135         (assert_deceq, assert_hexeq): For lengths above
14136         WIDE_INT_MAX_INL_ELTS use XALLOCAVEC allocated buffer.
14137         (test_printing): Use WIDE_INT_MAX_INL_PRECISION instead of
14138         WIDE_INT_MAX_PRECISION.
14139         * wide-int-print.h (WIDE_INT_PRINT_BUFFER_SIZE): Use
14140         WIDE_INT_MAX_INL_PRECISION instead of WIDE_INT_MAX_PRECISION.
14141         * wide-int-print.cc (print_decs, print_decu, print_hex): For
14142         lengths above WIDE_INT_MAX_INL_ELTS use XALLOCAVEC allocated buffer.
14143         * tree.h (wi::int_traits<extended_tree <N>>): Change precision_type
14144         to INL_CONST_PRECISION for N == ADDR_MAX_PRECISION.
14145         (widest_extended_tree): Use WIDEST_INT_MAX_PRECISION instead of
14146         WIDE_INT_MAX_PRECISION.
14147         (wi::ints_for): Use int_traits <extended_tree <N> >::precision_type
14148         instead of hard coded CONST_PRECISION.
14149         (widest2_int_cst): Use WIDEST_INT_MAX_PRECISION instead of
14150         WIDE_INT_MAX_PRECISION.
14151         (wi::extended_tree <N>::get_len): Use WIDEST_INT_MAX_PRECISION rather
14152         than WIDE_INT_MAX_PRECISION.
14153         (wi::ints_for::zero): Use
14154         wi::int_traits <wi::extended_tree <N> >::precision_type instead of
14155         wi::CONST_PRECISION.
14156         * tree.cc (build_replicated_int_cst): Formatting fix.  Use
14157         WIDE_INT_MAX_INL_ELTS rather than WIDE_INT_MAX_ELTS.
14158         * print-tree.cc (print_node): Don't print TREE_UNAVAILABLE on
14159         INTEGER_CSTs, TREE_VECs or SSA_NAMEs.
14160         * double-int.h (wi::int_traits <double_int>::precision_type): Change
14161         to INL_CONST_PRECISION from CONST_PRECISION.
14162         * poly-int.h (struct poly_coeff_traits): Add partial specialization
14163         for wi::INL_CONST_PRECISION.
14164         * cfgloop.h (bound_wide_int): New typedef.
14165         (struct nb_iter_bound): Change bound type from widest_int to
14166         bound_wide_int.
14167         (struct loop): Change nb_iterations_upper_bound,
14168         nb_iterations_likely_upper_bound and nb_iterations_estimate type from
14169         widest_int to bound_wide_int.
14170         * cfgloop.cc (record_niter_bound): Return early if wi::min_precision
14171         of i_bound is too large for bound_wide_int.  Adjustments for the
14172         widest_int to bound_wide_int type change in non-static data members.
14173         (get_estimated_loop_iterations, get_max_loop_iterations,
14174         get_likely_max_loop_iterations): Adjustments for the widest_int to
14175         bound_wide_int type change in non-static data members.
14176         * tree-vect-loop.cc (vect_transform_loop): Likewise.
14177         * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations): Use
14178         XALLOCAVEC allocated buffer for i_bound len above
14179         WIDE_INT_MAX_INL_ELTS.
14180         (record_estimate): Return early if wi::min_precision of i_bound is too
14181         large for bound_wide_int.  Adjustments for the widest_int to
14182         bound_wide_int type change in non-static data members.
14183         (wide_int_cmp): Use bound_wide_int instead of widest_int.
14184         (bound_index): Use bound_wide_int instead of widest_int.
14185         (discover_iteration_bound_by_body_walk): Likewise.  Use
14186         widest_int::from to convert it to widest_int when passed to
14187         record_niter_bound.
14188         (maybe_lower_iteration_bound): Use widest_int::from to convert it to
14189         widest_int when passed to record_niter_bound.
14190         (estimate_numbers_of_iteration): Don't record upper bound if
14191         loop->nb_iterations has too large precision for bound_wide_int.
14192         (n_of_executions_at_most): Use widest_int::from.
14193         * tree-ssa-loop-ivcanon.cc (remove_redundant_iv_tests): Adjust for
14194         the widest_int to bound_wide_int changes.
14195         * match.pd (fold_sign_changed_comparison simplification): Use
14196         wide_int::from on wi::to_wide instead of wi::to_widest.
14197         * value-range.h (irange::maybe_resize): Avoid using memcpy on
14198         non-trivially copyable elements.
14199         * value-range.cc (irange_bitmask::dump): Use XALLOCAVEC allocated
14200         buffer for mask or value len above WIDE_INT_PRINT_BUFFER_SIZE.
14201         * fold-const.cc (fold_convert_const_int_from_int, fold_unary_loc):
14202         Use wide_int::from on wi::to_wide instead of wi::to_widest.
14203         * tree-ssa-ccp.cc (bit_value_binop): Zero extend r1max from width
14204         before calling wi::udiv_trunc.
14205         * lto-streamer-out.cc (output_cfg): Adjustments for the widest_int to
14206         bound_wide_int type change in non-static data members.
14207         * lto-streamer-in.cc (input_cfg): Likewise.
14208         (lto_input_tree_1): Use WIDE_INT_MAX_INL_ELTS rather than
14209         WIDE_INT_MAX_ELTS.  For length above WIDE_INT_MAX_INL_ELTS use
14210         XALLOCAVEC allocated buffer.  Formatting fix.
14211         * data-streamer-in.cc (streamer_read_wide_int,
14212         streamer_read_widest_int): Likewise.
14213         * tree-affine.cc (aff_combination_expand): Use placement new to
14214         construct name_expansion.
14215         (free_name_expansion): Destruct name_expansion.
14216         * gimple-ssa-strength-reduction.cc (struct slsr_cand_d): Change
14217         index type from widest_int to offset_int.
14218         (class incr_info_d): Change incr type from widest_int to offset_int.
14219         (alloc_cand_and_find_basis, backtrace_base_for_ref,
14220         restructure_reference, slsr_process_ref, create_mul_ssa_cand,
14221         create_mul_imm_cand, create_add_ssa_cand, create_add_imm_cand,
14222         slsr_process_add, cand_abs_increment, replace_mult_candidate,
14223         replace_unconditional_candidate, incr_vec_index,
14224         create_add_on_incoming_edge, create_phi_basis_1,
14225         replace_conditional_candidate, record_increment,
14226         record_phi_increments_1, phi_incr_cost_1, phi_incr_cost,
14227         lowest_cost_path, total_savings, ncd_with_phi, ncd_of_cand_and_phis,
14228         nearest_common_dominator_for_cands, insert_initializers,
14229         all_phi_incrs_profitable_1, replace_one_candidate,
14230         replace_profitable_candidates): Use offset_int rather than widest_int
14231         and wi::to_offset rather than wi::to_widest.
14232         * real.cc (real_to_integer): Use WIDE_INT_MAX_INL_ELTS rather than
14233         2 * WIDE_INT_MAX_ELTS and for words above that use XALLOCAVEC
14234         allocated buffer.
14235         * tree-ssa-loop-ivopts.cc (niter_for_exit): Use placement new
14236         to construct tree_niter_desc and destruct it on failure.
14237         (free_tree_niter_desc): Destruct tree_niter_desc if value is non-NULL.
14238         * gengtype.cc (main): Remove widest_int handling.
14239         * graphite-isl-ast-to-gimple.cc (widest_int_from_isl_expr_int): Use
14240         WIDEST_INT_MAX_ELTS instead of WIDE_INT_MAX_ELTS.
14241         * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Use
14242         WIDE_INT_MAX_INL_PRECISION instead of WIDE_INT_MAX_PRECISION and
14243         assert get_len () fits into it.
14244         * value-range-pretty-print.cc (vrange_printer::print_irange_bitmasks):
14245         For mask or value lengths above WIDE_INT_MAX_INL_ELTS use XALLOCAVEC
14246         allocated buffer.
14247         * gimple-ssa-sprintf.cc (adjust_range_for_overflow): Use
14248         wide_int::from on wi::to_wide instead of wi::to_widest.
14249         * omp-general.cc (score_wide_int): New typedef.
14250         (omp_context_compute_score): Use score_wide_int instead of widest_int
14251         and adjust for those changes.
14252         (struct omp_declare_variant_entry): Change score and
14253         score_in_declare_simd_clone non-static data member type from widest_int
14254         to score_wide_int.
14255         (omp_resolve_late_declare_variant, omp_resolve_declare_variant): Use
14256         score_wide_int instead of widest_int and adjust for those changes.
14257         (omp_lto_output_declare_variant_alt): Likewise.
14258         (omp_lto_input_declare_variant_alt): Likewise.
14259         * godump.cc (go_output_typedef): Assert get_len () is smaller than
14260         WIDE_INT_MAX_INL_ELTS.
14262 2023-10-12  Pan Li  <pan2.li@intel.com>
14264         * config/riscv/autovec.md (lround<mode><v_i_l_ll_convert>2): New
14265         pattern for lround/lroundf.
14266         * config/riscv/riscv-protos.h (enum insn_type): New enum value.
14267         (expand_vec_lround): New func decl for expanding lround.
14268         * config/riscv/riscv-v.cc (expand_vec_lround): New func impl
14269         for expanding lround.
14271 2023-10-12  Jakub Jelinek  <jakub@redhat.com>
14273         * dwarf2out.h (wide_int_ptr): Remove.
14274         (dw_wide_int_ptr): New typedef.
14275         (struct dw_val_node): Change type of val_wide from wide_int_ptr
14276         to dw_wide_int_ptr.
14277         (struct dw_wide_int): New type.
14278         (dw_wide_int::elt): New method.
14279         (dw_wide_int::operator ==): Likewise.
14280         * dwarf2out.cc (get_full_len): Change argument type to
14281         const dw_wide_int & from const wide_int &.  Use CEIL.  Call
14282         get_precision method instead of calling wi::get_precision.
14283         (alloc_dw_wide_int): New function.
14284         (add_AT_wide): Change w argument type to const wide_int_ref &
14285         from const wide_int &.  Use alloc_dw_wide_int.
14286         (mem_loc_descriptor, loc_descriptor): Use alloc_dw_wide_int.
14287         (insert_wide_int): Change val argument type to const wide_int_ref &
14288         from const wide_int &.
14289         (add_const_value_attribute): Pass rtx_mode_t temporary directly to
14290         add_AT_wide instead of using a temporary variable.
14292 2023-10-12  Richard Biener  <rguenther@suse.de>
14294         PR tree-optimization/111764
14295         * tree-vect-loop.cc (check_reduction_path): Remove the attempt
14296         to allow x + x via special-casing of assigns.
14298 2023-10-12  Hu, Lin1  <lin1.hu@intel.com>
14300         * common/config/i386/cpuinfo.h (get_available_features):
14301         Detect USER_MSR.
14302         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_USER_MSR_SET): New.
14303         (OPTION_MASK_ISA2_USER_MSR_UNSET): Ditto.
14304         (ix86_handle_option): Handle -musermsr.
14305         * common/config/i386/i386-cpuinfo.h (enum processor_features):
14306         Add FEATURE_USER_MSR.
14307         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for usermsr.
14308         * config.gcc: Add usermsrintrin.h
14309         * config/i386/cpuid.h (bit_USER_MSR): New.
14310         * config/i386/i386-builtin-types.def:
14311         Add DEF_FUNCTION_TYPE (VOID, UINT64, UINT64).
14312         * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
14313         Add __builtin_urdmsr and __builtin_uwrmsr.
14314         * config/i386/i386-builtins.h (ix86_builtins):
14315         Add IX86_BUILTIN_URDMSR and IX86_BUILTIN_UWRMSR.
14316         * config/i386/i386-c.cc (ix86_target_macros_internal):
14317         Define __USER_MSR__.
14318         * config/i386/i386-expand.cc (ix86_expand_builtin):
14319         Handle new builtins.
14320         * config/i386/i386-isa.def (USER_MSR): Add DEF_PTA(USER_MSR).
14321         * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
14322         Handle usermsr.
14323         * config/i386/i386.md (urdmsr): New define_insn.
14324         (uwrmsr): Ditto.
14325         * config/i386/i386.opt: Add option -musermsr.
14326         * config/i386/x86gprintrin.h: Include usermsrintrin.h
14327         * doc/extend.texi: Document usermsr.
14328         * doc/invoke.texi: Document -musermsr.
14329         * doc/sourcebuild.texi: Document target usermsr.
14330         * config/i386/usermsrintrin.h: New file.
14332 2023-10-12  Yang Yujie  <yangyujie@loongson.cn>
14334         * config.gcc: Add loongarch-driver.h to tm_files.
14335         * config/loongarch/loongarch.h: Do not include loongarch-driver.h.
14336         * config/loongarch/t-loongarch: Append loongarch-multilib.h to $(GTM_H)
14337         instead of $(TM_H) for building generator programs.
14339 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
14341         PR target/111367
14342         * config/rs6000/rs6000.md (stack_protect_setsi): Support prefixed
14343         instruction emission and incorporate to stack_protect_set<mode>.
14344         (stack_protect_setdi): Rename to ...
14345         (stack_protect_set<mode>): ... this, adjust constraint.
14346         (stack_protect_testsi): Support prefixed instruction emission and
14347         incorporate to stack_protect_test<mode>.
14348         (stack_protect_testdi): Rename to ...
14349         (stack_protect_test<mode>): ... this, adjust constraint.
14351 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
14353         * tree-vect-stmts.cc (vectorizable_store): Consider generated
14354         VEC_PERM_EXPR stmt for VMAT_CONTIGUOUS_REVERSE in costing as
14355         vec_perm.
14357 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
14359         * tree-vect-stmts.cc (vect_model_store_cost): Remove.
14360         (vectorizable_store): Adjust the costing for the remaining memory
14361         access types VMAT_CONTIGUOUS{, _DOWN, _REVERSE}.
14363 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
14365         * tree-vect-stmts.cc (vect_model_store_cost): Assert it will never
14366         get VMAT_CONTIGUOUS_PERMUTE and remove VMAT_CONTIGUOUS_PERMUTE related
14367         handlings.
14368         (vectorizable_store): Adjust the cost handling on
14369         VMAT_CONTIGUOUS_PERMUTE without calling vect_model_store_cost.
14371 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
14373         * tree-vect-stmts.cc (vect_model_store_cost): Assert it will never
14374         get VMAT_LOAD_STORE_LANES.
14375         (vectorizable_store): Adjust the cost handling on VMAT_LOAD_STORE_LANES
14376         without calling vect_model_store_cost.  Factor out new lambda function
14377         update_prologue_cost.
14379 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
14381         * tree-vect-stmts.cc (vect_model_store_cost): Assert it won't get
14382         VMAT_ELEMENTWISE and VMAT_STRIDED_SLP any more, and remove their
14383         related handlings.
14384         (vectorizable_store): Adjust the cost handling on VMAT_ELEMENTWISE
14385         and VMAT_STRIDED_SLP without calling vect_model_store_cost.
14387 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
14389         * tree-vect-stmts.cc (vectorizable_store): Adjust costing on
14390         vectorizable_scan_store without calling vect_model_store_cost
14391         any more.
14393 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
14395         * tree-vect-stmts.cc (vect_model_store_cost): Assert it won't get
14396         VMAT_GATHER_SCATTER any more, remove VMAT_GATHER_SCATTER related
14397         handlings and the related parameter gs_info.
14398         (vect_build_scatter_store_calls): Add the handlings on costing with
14399         one more argument cost_vec.
14400         (vectorizable_store): Adjust the cost handling on VMAT_GATHER_SCATTER
14401         without calling vect_model_store_cost any more.
14403 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
14405         * tree-vect-stmts.cc (vectorizable_store): Move and duplicate the call
14406         to vect_model_store_cost down to some different transform paths
14407         according to the handlings of different vect_memory_access_types
14408         or some special handling need.
14410 2023-10-12  Kewen Lin  <linkw@linux.ibm.com>
14412         * tree-vect-stmts.cc (vectorizable_store): Ensure the generated
14413         vector store for some case of VMAT_ELEMENTWISE is supported.
14415 2023-10-12  Mo, Zewei  <zewei.mo@intel.com>
14416             Hu Lin1  <lin1.hu@intel.com>
14417             Hongyu Wang  <hongyu.wang@intel.com>
14419         * config/i386/i386.cc (gen_push2): New function to emit push2
14420         and adjust cfa offset.
14421         (ix86_pro_and_epilogue_can_use_push2_pop2): New function to
14422         determine whether push2/pop2 can be used.
14423         (ix86_compute_frame_layout): Adjust preferred stack boundary
14424         and stack alignment needed for push2/pop2.
14425         (ix86_emit_save_regs): Emit push2 when available.
14426         (ix86_emit_restore_reg_using_pop2): New function to emit pop2
14427         and adjust cfa info.
14428         (ix86_emit_restore_regs_using_pop2): New function to loop
14429         through the saved regs and call above.
14430         (ix86_expand_epilogue): Call ix86_emit_restore_regs_using_pop2
14431         when push2pop2 available.
14432         * config/i386/i386.md (push2_di): New pattern for push2.
14433         (pop2_di): Likewise for pop2.
14435 2023-10-12  Pan Li  <pan2.li@intel.com>
14437         * config/riscv/autovec.md (lrint<mode><vlconvert>2): Rename from.
14438         (lrint<mode><v_i_l_ll_convert>2): Rename to.
14439         * config/riscv/vector-iterators.md: Rename and remove TARGET_64BIT.
14441 2023-10-11  Kito Cheng  <kito.cheng@sifive.com>
14443         * config/riscv/riscv-opts.h (TARGET_MIN_VLEN_OPTS): New.
14445 2023-10-11  Jeff Law  <jlaw@ventanamicro.com>
14447         * config/riscv/riscv.md (jump): Adjust sequence to use a "jump"
14448         pseudo op instead of a "call" pseudo op.
14450 2023-10-11  Kito Cheng  <kito.cheng@sifive.com>
14452         * config/riscv/riscv-subset.h (riscv_subset_list::parse_single_std_ext):
14453         New.
14454         (riscv_subset_list::parse_single_multiletter_ext): Ditto.
14455         (riscv_subset_list::clone): Ditto.
14456         (riscv_subset_list::parse_single_ext): Ditto.
14457         (riscv_subset_list::set_loc): Ditto.
14458         (riscv_set_arch_by_subset_list): Ditto.
14459         * common/config/riscv/riscv-common.cc
14460         (riscv_subset_list::parse_single_std_ext): New.
14461         (riscv_subset_list::parse_single_multiletter_ext): Ditto.
14462         (riscv_subset_list::clone): Ditto.
14463         (riscv_subset_list::parse_single_ext): Ditto.
14464         (riscv_subset_list::set_loc): Ditto.
14465         (riscv_set_arch_by_subset_list): Ditto.
14467 2023-10-11  Kito Cheng  <kito.cheng@sifive.com>
14469         * config/riscv/riscv.cc (riscv_convert_vector_bits): Get setting
14470         from argument rather than get setting from global setting.
14471         (riscv_override_options_internal): New, splited from
14472         riscv_override_options, also take a gcc_options argument.
14473         (riscv_option_override): Splited most part to
14474         riscv_override_options_internal.
14476 2023-10-11  Kito Cheng  <kito.cheng@sifive.com>
14478         * doc/options.texi (Mask): Document TARGET_<NAME>_P and
14479         TARGET_<NAME>_OPTS_P.
14480         (InverseMask): Ditto.
14481         * opth-gen.awk (Mask): Generate TARGET_<NAME>_P and
14482         TARGET_<NAME>_OPTS_P macro.
14483         (InverseMask): Ditto.
14485 2023-10-11  Andrew Pinski  <pinskia@gmail.com>
14487         PR tree-optimization/111282
14488         * match.pd (`a & ~(a ^ b)`, `a & (a == b)`,
14489         `a & ((~a) ^ b)`): New patterns.
14491 2023-10-11  Mary Bennett  <mary.bennett@embecosm.com>
14493         * common/config/riscv/riscv-common.cc: Add the XCValu
14494         extension.
14495         * config/riscv/constraints.md: Add builtins for the XCValu
14496         extension.
14497         * config/riscv/predicates.md (immediate_register_operand):
14498         Likewise.
14499         * config/riscv/corev.def: Likewise.
14500         * config/riscv/corev.md: Likewise.
14501         * config/riscv/riscv-builtins.cc (AVAIL): Likewise.
14502         (RISCV_ATYPE_UHI): Likewise.
14503         * config/riscv/riscv-ftypes.def: Likewise.
14504         * config/riscv/riscv.opt: Likewise.
14505         * config/riscv/riscv.cc (riscv_print_operand): Likewise.
14506         * doc/extend.texi: Add XCValu documentation.
14507         * doc/sourcebuild.texi: Likewise.
14509 2023-10-11  Mary Bennett  <mary.bennett@embecosm.com>
14511         * common/config/riscv/riscv-common.cc: Add XCVmac.
14512         * config/riscv/riscv-ftypes.def: Add XCVmac builtins.
14513         * config/riscv/riscv-builtins.cc: Likewise.
14514         * config/riscv/riscv.md: Likewise.
14515         * config/riscv/riscv.opt: Likewise.
14516         * doc/extend.texi: Add XCVmac builtin documentation.
14517         * doc/sourcebuild.texi: Likewise.
14518         * config/riscv/corev.def: New file.
14519         * config/riscv/corev.md: New file.
14521 2023-10-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14523         * config/riscv/autovec.md: Fix index bug.
14524         * config/riscv/riscv-protos.h (gather_scatter_valid_offset_mode_p): New function.
14525         * config/riscv/riscv-v.cc (expand_gather_scatter): Fix index bug.
14526         (gather_scatter_valid_offset_mode_p): New function.
14528 2023-10-11  Pan Li  <pan2.li@intel.com>
14530         * config/riscv/autovec.md (lrint<mode><vlconvert>2): New pattern
14531         for lrint/lintf.
14532         * config/riscv/riscv-protos.h (expand_vec_lrint): New func decl
14533         for expanding lint.
14534         * config/riscv/riscv-v.cc (emit_vec_cvt_x_f): New helper func impl
14535         for vfcvt.x.f.v.
14536         (expand_vec_lrint): New function impl for expanding lint.
14537         * config/riscv/vector-iterators.md: New mode attr and iterator.
14539 2023-10-11  Richard Biener  <rguenther@suse.de>
14540             Jakub Jelinek  <jakub@redhat.com>
14542         PR tree-optimization/111519
14543         * tree-ssa-strlen.cc (strlen_pass::count_nonzero_bytes): Add vuse
14544         argument and pass it through to recursive calls and
14545         count_nonzero_bytes_addr calls.  Don't shadow the stmt argument, but
14546         change stmt for gimple_assign_single_p statements for which we don't
14547         immediately punt.
14548         (strlen_pass::count_nonzero_bytes_addr): Add vuse argument and pass
14549         it through to recursive calls and count_nonzero_bytes calls.  Don't
14550         use get_strinfo if gimple_vuse (stmt) is different from vuse.  Don't
14551         shadow the stmt argument.
14553 2023-10-11  Roger Sayle  <roger@nextmovesoftware.com>
14555         PR middle-end/101955
14556         PR tree-optimization/106245
14557         * simplify-rtx.cc (simplify_relational_operation_1): Simplify
14558         the RTL (ne:SI (subreg:QI (ashift:SI x 7) 0) 0) to (and:SI x 1).
14560 2023-10-11  liuhongt  <hongtao.liu@intel.com>
14562         PR target/111745
14563         * config/i386/mmx.md (divv4hf3): Refine predicate of
14564         operands[2] with register_operand.
14566 2023-10-10  Andrew Waterman  <andrew@sifive.com>
14567             Philipp Tomsich  <philipp.tomsich@vrull.eu>
14568             Jeff Law  <jlaw@ventanamicro.com>
14570         * config/riscv/riscv.cc (struct machine_function): Track if a
14571         far-branch/jump is used within a function (and $ra needs to be
14572         saved).
14573         (riscv_print_operand): Implement 'N' (inverse integer branch).
14574         (riscv_far_jump_used_p): Implement.
14575         (riscv_save_return_addr_reg_p): New function.
14576         (riscv_save_reg_p): Use riscv_save_return_addr_reg_p.
14577         * config/riscv/riscv.h (FIXED_REGISTERS): Update $ra.
14578         (CALL_USED_REGISTERS): Update $ra.
14579         * config/riscv/riscv.md: Add new types "ret" and "jalr".
14580         (length attribute): Handle long conditional and unconditional
14581         branches.
14582         (conditional branch pattern): Handle case where jump can not
14583         reach the intended target.
14584         (indirect_jump, tablejump): Use new "jalr" type.
14585         (simple_return): Use new "ret" type.
14586         (simple_return_internal, eh_return_internal): Likewise.
14587         (gpr_restore_return, riscv_mret): Likewise.
14588         (riscv_uret, riscv_sret): Likewise.
14589         * config/riscv/generic.md (generic_branch): Also recognize jalr & ret
14590         types.
14591         * config/riscv/sifive-7.md (sifive_7_jump): Likewise.
14593 2023-10-10  Andrew Pinski  <pinskia@gmail.com>
14595         PR tree-optimization/111679
14596         * match.pd (`a | ((~a) ^ b)`): New pattern.
14598 2023-10-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14600         PR target/111751
14601         * config/riscv/autovec.md: Add VLS BOOL modes.
14603 2023-10-10  Richard Biener  <rguenther@suse.de>
14605         PR tree-optimization/111751
14606         * fold-const.cc (fold_view_convert_expr): Up the buffer size
14607         to 128 bytes.
14608         * tree-ssa-sccvn.cc (visit_reference_op_load): Special case
14609         constants, giving up when re-interpretation to the target type
14610         fails.
14612 2023-10-10  Richard Biener  <rguenther@suse.de>
14614         PR tree-optimization/111751
14615         * tree-ssa-sccvn.cc (visit_reference_op_load): Exempt
14616         BLKmode result from the padding bits check.
14618 2023-10-10  Claudiu Zissulescu  <claziss@gmail.com>
14620         * config/arc/arc.cc (arc_select_cc_mode): Match NEG code with
14621         the first operand.
14622         * config/arc/arc.md (addsi_compare): Make pattern canonical.
14623         (addsi_compare_2): Fix identation, constraint letters.
14624         (addsi_compare_3): Likewise.
14626 2023-10-09  Eugene Rozenfeld  <erozen@microsoft.com>
14628         * auto-profile.cc (afdo_calculate_branch_prob): Fix count comparisons
14629         * tree-vect-loop-manip.cc (vect_do_peeling): Guard against zero count
14630         when scaling loop profile
14632 2023-10-09  Andrew MacLeod  <amacleod@redhat.com>
14634         PR tree-optimization/111694
14635         * gimple-range-cache.cc (ranger_cache::fill_block_cache): Adjust
14636         equivalence range.
14637         * value-relation.cc (adjust_equivalence_range): New.
14638         * value-relation.h (adjust_equivalence_range): New prototype.
14640 2023-10-09  Andrew MacLeod  <amacleod@redhat.com>
14642         * gimple-range-gori.cc (gori_compute::compute_operand1_range): Do
14643         not call get_identity_relation.
14644         (gori_compute::compute_operand2_range): Ditto.
14645         * value-relation.cc (get_identity_relation): Remove.
14646         * value-relation.h (get_identity_relation): Remove protyotype.
14648 2023-10-09  Robin Dapp  <rdapp@ventanamicro.com>
14650         * config/riscv/riscv-cores.def (RISCV_TUNE): Add parameter.
14651         * config/riscv/riscv-opts.h (enum riscv_microarchitecture_type):
14652         Add generic_ooo.
14653         * config/riscv/riscv.cc (riscv_sched_adjust_cost): Implement
14654         scheduler hook.
14655         (TARGET_SCHED_ADJUST_COST): Define.
14656         * config/riscv/riscv.md (no,yes"): Include generic-ooo.md
14657         * config/riscv/riscv.opt: Add -madjust-lmul-cost.
14658         * config/riscv/generic-ooo.md: New file.
14659         * config/riscv/vector.md: Add vsetvl_pre.
14661 2023-10-09  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14663         * config/riscv/riscv-opts.h (TARGET_VECTOR_MISALIGN_SUPPORTED): New macro.
14664         * config/riscv/riscv.cc (riscv_support_vector_misalignment): Depend on movmisalign pattern.
14665         * config/riscv/vector.md (movmisalign<mode>): New pattern.
14667 2023-10-09  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
14669         * config/riscv/thead.cc (th_mempair_save_regs): Fix missing CFI
14670         directives for store-pair instruction.
14672 2023-10-09  Richard Biener  <rguenther@suse.de>
14674         PR tree-optimization/111715
14675         * alias.cc (reference_alias_ptr_type_1): When we have
14676         a type-punning ref at the base search for the access
14677         path part that's still semantically valid.
14679 2023-10-09  Pan Li  <pan2.li@intel.com>
14681         * config/riscv/riscv-v.cc (shuffle_bswap_pattern): New func impl
14682         for shuffle bswap.
14683         (expand_vec_perm_const_1): Add handling for shuffle bswap pattern.
14685 2023-10-09  Roger Sayle  <roger@nextmovesoftware.com>
14687         * config/i386/i386-expand.cc (ix86_split_ashr): Split shifts by
14688         one into ashr[sd]i3_carry followed by rcr[sd]i2, if TARGET_USE_RCR
14689         or -Oz.
14690         (ix86_split_lshr): Likewise, split shifts by one bit into
14691         lshr[sd]i3_carry followed by rcr[sd]i2, if TARGET_USE_RCR or -Oz.
14692         * config/i386/i386.h (TARGET_USE_RCR): New backend macro.
14693         * config/i386/i386.md (rcrsi2): New define_insn for rcrl.
14694         (rcrdi2): New define_insn for rcrq.
14695         (<anyshiftrt><mode>3_carry): New define_insn for right shifts that
14696         set the carry flag from the least significant bit, modelled using
14697         UNSPEC_CC_NE.
14698         * config/i386/x86-tune.def (X86_TUNE_USE_RCR): New tuning parameter
14699         controlling use of rcr 1 vs. shrd, which is significantly faster on
14700         AMD processors.
14702 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
14704         * config/i386/i386.opt: Allow -mno-evex512.
14706 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
14707             Hu, Lin1  <lin1.hu@intel.com>
14709         * config/i386/sse.md (V48H_AVX512VL): Add TARGET_EVEX512.
14710         (VFH): Ditto.
14711         (VF2H): Ditto.
14712         (VFH_AVX512VL): Ditto.
14713         (VHFBF): Ditto.
14714         (VHF_AVX512VL): Ditto.
14715         (VI2H_AVX512VL): Ditto.
14716         (VI2F_256_512): Ditto.
14717         (VF48_I1248): Remove unused iterator.
14718         (VF48H_AVX512VL): Add TARGET_EVEX512.
14719         (VF_AVX512): Remove unused iterator.
14720         (REDUC_PLUS_MODE): Add TARGET_EVEX512.
14721         (REDUC_SMINMAX_MODE): Ditto.
14722         (FMAMODEM): Ditto.
14723         (VFH_SF_AVX512VL): Ditto.
14724         (VEC_PERM_AVX2): Ditto.
14726 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
14727             Hu, Lin1  <lin1.hu@intel.com>
14729         * config/i386/sse.md (VI1_AVX512VL): Add TARGET_EVEX512.
14730         (VI8_FVL): Ditto.
14731         (VI1_AVX512F): Ditto.
14732         (VI1_AVX512VNNI): Ditto.
14733         (VI1_AVX512VL_F): Ditto.
14734         (VI12_VI48F_AVX512VL): Ditto.
14735         (*avx512f_permvar_truncv32hiv32qi_1): Ditto.
14736         (sdot_prod<mode>): Ditto.
14737         (VEC_PERM_AVX2): Ditto.
14738         (VPERMI2): Ditto.
14739         (VPERMI2I): Ditto.
14740         (vpmadd52<vpmadd52type>v8di): Ditto.
14741         (usdot_prod<mode>): Ditto.
14742         (vpdpbusd_v16si): Ditto.
14743         (vpdpbusds_v16si): Ditto.
14744         (vpdpwssd_v16si): Ditto.
14745         (vpdpwssds_v16si): Ditto.
14746         (VI48_AVX512VP2VL): Ditto.
14747         (avx512vp2intersect_2intersectv16si): Ditto.
14748         (VF_AVX512BF16VL): Ditto.
14749         (VF1_AVX512_256): Ditto.
14751 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
14753         * config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate):
14754         Make sure there is EVEX512 enabled.
14755         (ix86_expand_vecop_qihi2): Refuse V32QI->V32HI when no EVEX512.
14756         * config/i386/i386.cc (ix86_hard_regno_mode_ok): Disable 64 bit mask
14757         when !TARGET_EVEX512.
14758         * config/i386/i386.md (avx512bw_512): New.
14759         (SWI1248_AVX512BWDQ_64): Add TARGET_EVEX512.
14760         (*zero_extendsidi2): Change isa to avx512bw_512.
14761         (kmov_isa): Ditto.
14762         (*anddi_1): Ditto.
14763         (*andn<mode>_1): Change isa to kmov_isa.
14764         (*<code><mode>_1): Ditto.
14765         (*notxor<mode>_1): Ditto.
14766         (*one_cmpl<mode>2_1): Ditto.
14767         (*one_cmplsi2_1_zext): Change isa to avx512bw_512.
14768         (*ashl<mode>3_1): Change isa to kmov_isa.
14769         (*lshr<mode>3_1): Ditto.
14770         * config/i386/sse.md (VI12HFBF_AVX512VL): Add TARGET_EVEX512.
14771         (VI1248_AVX512VLBW): Ditto.
14772         (VHFBF_AVX512VL): Ditto.
14773         (VI): Ditto.
14774         (VIHFBF): Ditto.
14775         (VI_AVX2): Ditto.
14776         (VI1_AVX512): Ditto.
14777         (VI12_256_512_AVX512VL): Ditto.
14778         (VI2_AVX2_AVX512BW): Ditto.
14779         (VI2_AVX512VNNIBW): Ditto.
14780         (VI2_AVX512VL): Ditto.
14781         (VI2HFBF_AVX512VL): Ditto.
14782         (VI8_AVX2_AVX512BW): Ditto.
14783         (VIMAX_AVX2_AVX512BW): Ditto.
14784         (VIMAX_AVX512VL): Ditto.
14785         (VI12_AVX2_AVX512BW): Ditto.
14786         (VI124_AVX2_24_AVX512F_1_AVX512BW): Ditto.
14787         (VI248_AVX512VL): Ditto.
14788         (VI248_AVX512VLBW): Ditto.
14789         (VI248_AVX2_8_AVX512F_24_AVX512BW): Ditto.
14790         (VI248_AVX512BW): Ditto.
14791         (VI248_AVX512BW_AVX512VL): Ditto.
14792         (VI248_512): Ditto.
14793         (VI124_256_AVX512F_AVX512BW): Ditto.
14794         (VI_AVX512BW): Ditto.
14795         (VIHFBF_AVX512BW): Ditto.
14796         (SWI1248_AVX512BWDQ): Ditto.
14797         (SWI1248_AVX512BW): Ditto.
14798         (SWI1248_AVX512BWDQ2): Ditto.
14799         (*knotsi_1_zext): Ditto.
14800         (define_split for zero_extend + not): Ditto.
14801         (kunpckdi): Ditto.
14802         (REDUC_SMINMAX_MODE): Ditto.
14803         (VEC_EXTRACT_MODE): Ditto.
14804         (*avx512bw_permvar_truncv16siv16hi_1): Ditto.
14805         (*avx512bw_permvar_truncv16siv16hi_1_hf): Ditto.
14806         (truncv32hiv32qi2): Ditto.
14807         (avx512bw_<code>v32hiv32qi2): Ditto.
14808         (avx512bw_<code>v32hiv32qi2_mask): Ditto.
14809         (avx512bw_<code>v32hiv32qi2_mask_store): Ditto.
14810         (usadv64qi): Ditto.
14811         (VEC_PERM_AVX2): Ditto.
14812         (AVX512ZEXTMASK): Ditto.
14813         (SWI24_MASK): New.
14814         (vec_pack_trunc_<mode>): Change iterator to SWI24_MASK.
14815         (avx512bw_packsswb<mask_name>): Add TARGET_EVEX512.
14816         (avx512bw_packssdw<mask_name>): Ditto.
14817         (avx512bw_interleave_highv64qi<mask_name>): Ditto.
14818         (avx512bw_interleave_lowv64qi<mask_name>): Ditto.
14819         (<mask_codefor>avx512bw_pshuflwv32hi<mask_name>): Ditto.
14820         (<mask_codefor>avx512bw_pshufhwv32hi<mask_name>): Ditto.
14821         (vec_unpacks_lo_di): Ditto.
14822         (SWI48x_MASK): New.
14823         (vec_unpacks_hi_<mode>): Change iterator to SWI48x_MASK.
14824         (avx512bw_umulhrswv32hi3<mask_name>): Add TARGET_EVEX512.
14825         (VI1248_AVX512VL_AVX512BW): Ditto.
14826         (avx512bw_<code>v32qiv32hi2<mask_name>): Ditto.
14827         (*avx512bw_zero_extendv32qiv32hi2_1): Ditto.
14828         (*avx512bw_zero_extendv32qiv32hi2_2): Ditto.
14829         (<insn>v32qiv32hi2): Ditto.
14830         (pbroadcast_evex_isa): Change isa attribute to avx512bw_512.
14831         (VPERMI2): Add TARGET_EVEX512.
14832         (VPERMI2I): Ditto.
14834 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
14836         * config/i386/i386-expand.cc (ix86_expand_sse2_mulvxdi3):
14837         Add TARGET_EVEX512 for 512 bit usage.
14838         * config/i386/i386.cc (standard_sse_constant_opcode): Ditto.
14839         * config/i386/sse.md (VF1_VF2_AVX512DQ): Ditto.
14840         (VF1_128_256VL): Ditto.
14841         (VF2_AVX512VL): Ditto.
14842         (VI8_256_512): Ditto.
14843         (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
14844         Ditto.
14845         (AVX512_VEC): Ditto.
14846         (AVX512_VEC_2): Ditto.
14847         (VI4F_BRCST32x2): Ditto.
14848         (VI8F_BRCST64x2): Ditto.
14850 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
14852         * config/i386/i386-builtins.cc
14853         (ix86_vectorize_builtin_gather): Disable 512 bit gather
14854         when !TARGET_EVEX512.
14855         * config/i386/i386-expand.cc (ix86_valid_mask_cmp_mode):
14856         Add TARGET_EVEX512.
14857         (ix86_expand_int_sse_cmp): Ditto.
14858         (ix86_expand_vector_init_one_nonzero): Disable subroutine
14859         when !TARGET_EVEX512.
14860         (ix86_emit_swsqrtsf): Add TARGET_EVEX512.
14861         (ix86_vectorize_vec_perm_const): Disable subroutine when
14862         !TARGET_EVEX512.
14863         * config/i386/i386.cc
14864         (standard_sse_constant_p): Add TARGET_EVEX512.
14865         (standard_sse_constant_opcode): Ditto.
14866         (ix86_get_ssemov): Ditto.
14867         (ix86_legitimate_constant_p): Ditto.
14868         (ix86_vectorize_builtin_scatter): Diable 512 bit scatter
14869         when !TARGET_EVEX512.
14870         * config/i386/i386.md (avx512f_512): New.
14871         (movxi): Add TARGET_EVEX512.
14872         (*movxi_internal_avx512f): Ditto.
14873         (*movdi_internal): Change alternative 12 to ?Yv. Adjust mode
14874         for alternative 13.
14875         (*movsi_internal): Change alternative 8 to ?Yv. Adjust mode for
14876         alternative 9.
14877         (*movhi_internal): Change alternative 11 to *Yv.
14878         (*movdf_internal): Change alternative 12 to Yv.
14879         (*movsf_internal): Change alternative 5 to Yv. Adjust mode for
14880         alternative 5 and 6.
14881         (*mov<mode>_internal): Change alternative 4 to Yv.
14882         (define_split for convert SF to DF): Add TARGET_EVEX512.
14883         (extendbfsf2_1): Ditto.
14884         * config/i386/predicates.md (bcst_mem_operand): Disable predicate
14885         for 512 bit when !TARGET_EVEX512.
14886         * config/i386/sse.md (VMOVE): Add TARGET_EVEX512.
14887         (V48_AVX512VL): Ditto.
14888         (V48_256_512_AVX512VL): Ditto.
14889         (V48H_AVX512VL): Ditto.
14890         (VI12_AVX512VL): Ditto.
14891         (V): Ditto.
14892         (V_512): Ditto.
14893         (V_256_512): Ditto.
14894         (VF): Ditto.
14895         (VF1_VF2_AVX512DQ): Ditto.
14896         (VFH): Ditto.
14897         (VFB): Ditto.
14898         (VF1): Ditto.
14899         (VF1_AVX2): Ditto.
14900         (VF2): Ditto.
14901         (VF2H): Ditto.
14902         (VF2_512_256): Ditto.
14903         (VF2_512_256VL): Ditto.
14904         (VF_512): Ditto.
14905         (VFB_512): Ditto.
14906         (VI48_AVX512VL): Ditto.
14907         (VI1248_AVX512VLBW): Ditto.
14908         (VF_AVX512VL): Ditto.
14909         (VFH_AVX512VL): Ditto.
14910         (VF1_AVX512VL): Ditto.
14911         (VI): Ditto.
14912         (VIHFBF): Ditto.
14913         (VI_AVX2): Ditto.
14914         (VI8): Ditto.
14915         (VI8_AVX512VL): Ditto.
14916         (VI2_AVX512F): Ditto.
14917         (VI4_AVX512F): Ditto.
14918         (VI4_AVX512VL): Ditto.
14919         (VI48_AVX512F_AVX512VL): Ditto.
14920         (VI8_AVX2_AVX512F): Ditto.
14921         (VI8_AVX_AVX512F): Ditto.
14922         (V8FI): Ditto.
14923         (V16FI): Ditto.
14924         (VI124_AVX2_24_AVX512F_1_AVX512BW): Ditto.
14925         (VI248_AVX512VLBW): Ditto.
14926         (VI248_AVX2_8_AVX512F_24_AVX512BW): Ditto.
14927         (VI248_AVX512BW): Ditto.
14928         (VI248_AVX512BW_AVX512VL): Ditto.
14929         (VI48_AVX512F): Ditto.
14930         (VI48_AVX_AVX512F): Ditto.
14931         (VI12_AVX_AVX512F): Ditto.
14932         (VI148_512): Ditto.
14933         (VI124_256_AVX512F_AVX512BW): Ditto.
14934         (VI48_512): Ditto.
14935         (VI_AVX512BW): Ditto.
14936         (VIHFBF_AVX512BW): Ditto.
14937         (VI4F_256_512): Ditto.
14938         (VI48F_256_512): Ditto.
14939         (VI48F): Ditto.
14940         (VI12_VI48F_AVX512VL): Ditto.
14941         (V32_512): Ditto.
14942         (AVX512MODE2P): Ditto.
14943         (STORENT_MODE): Ditto.
14944         (REDUC_PLUS_MODE): Ditto.
14945         (REDUC_SMINMAX_MODE): Ditto.
14946         (*andnot<mode>3): Change isa attribute to avx512f_512.
14947         (*andnot<mode>3): Ditto.
14948         (<code><mode>3): Ditto.
14949         (<code>tf3): Ditto.
14950         (FMAMODEM): Add TARGET_EVEX512.
14951         (FMAMODE_AVX512): Ditto.
14952         (VFH_SF_AVX512VL): Ditto.
14953         (avx512f_fix_notruncv16sfv16si<mask_name><round_name>): Ditto.
14954         (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):
14955         Ditto.
14956         (avx512f_cvtdq2pd512_2): Ditto.
14957         (avx512f_cvtpd2dq512<mask_name><round_name>): Ditto.
14958         (fix<fixunssuffix>_truncv8dfv8si2<mask_name><round_saeonly_name>):
14959         Ditto.
14960         (<mask_codefor>avx512f_cvtpd2ps512<mask_name><round_name>): Ditto.
14961         (vec_unpacks_lo_v16sf): Ditto.
14962         (vec_unpacks_hi_v16sf): Ditto.
14963         (vec_unpacks_float_hi_v16si): Ditto.
14964         (vec_unpacks_float_lo_v16si): Ditto.
14965         (vec_unpacku_float_hi_v16si): Ditto.
14966         (vec_unpacku_float_lo_v16si): Ditto.
14967         (vec_pack_sfix_trunc_v8df): Ditto.
14968         (avx512f_vec_pack_sfix_v8df): Ditto.
14969         (<mask_codefor>avx512f_unpckhps512<mask_name>): Ditto.
14970         (<mask_codefor>avx512f_unpcklps512<mask_name>): Ditto.
14971         (<mask_codefor>avx512f_movshdup512<mask_name>): Ditto.
14972         (<mask_codefor>avx512f_movsldup512<mask_name>): Ditto.
14973         (AVX512_VEC): Ditto.
14974         (AVX512_VEC_2): Ditto.
14975         (vec_extract_lo_v64qi): Ditto.
14976         (vec_extract_hi_v64qi): Ditto.
14977         (VEC_EXTRACT_MODE): Ditto.
14978         (<mask_codefor>avx512f_unpckhpd512<mask_name>): Ditto.
14979         (avx512f_movddup512<mask_name>): Ditto.
14980         (avx512f_unpcklpd512<mask_name>): Ditto.
14981         (*<avx512>_vternlog<mode>_all): Ditto.
14982         (*<avx512>_vpternlog<mode>_1): Ditto.
14983         (*<avx512>_vpternlog<mode>_2): Ditto.
14984         (*<avx512>_vpternlog<mode>_3): Ditto.
14985         (avx512f_shufps512_mask): Ditto.
14986         (avx512f_shufps512_1<mask_name>): Ditto.
14987         (avx512f_shufpd512_mask): Ditto.
14988         (avx512f_shufpd512_1<mask_name>): Ditto.
14989         (<mask_codefor>avx512f_interleave_highv8di<mask_name>): Ditto.
14990         (<mask_codefor>avx512f_interleave_lowv8di<mask_name>): Ditto.
14991         (vec_dupv2df<mask_name>): Ditto.
14992         (trunc<pmov_src_lower><mode>2): Ditto.
14993         (*avx512f_<code><pmov_src_lower><mode>2): Ditto.
14994         (*avx512f_vpermvar_truncv8div8si_1): Ditto.
14995         (avx512f_<code><pmov_src_lower><mode>2_mask): Ditto.
14996         (avx512f_<code><pmov_src_lower><mode>2_mask_store): Ditto.
14997         (truncv8div8qi2): Ditto.
14998         (avx512f_<code>v8div16qi2): Ditto.
14999         (*avx512f_<code>v8div16qi2_store_1): Ditto.
15000         (*avx512f_<code>v8div16qi2_store_2): Ditto.
15001         (avx512f_<code>v8div16qi2_mask): Ditto.
15002         (*avx512f_<code>v8div16qi2_mask_1): Ditto.
15003         (*avx512f_<code>v8div16qi2_mask_store_1): Ditto.
15004         (avx512f_<code>v8div16qi2_mask_store_2): Ditto.
15005         (vec_widen_umult_even_v16si<mask_name>): Ditto.
15006         (*vec_widen_umult_even_v16si<mask_name>): Ditto.
15007         (vec_widen_smult_even_v16si<mask_name>): Ditto.
15008         (*vec_widen_smult_even_v16si<mask_name>): Ditto.
15009         (VEC_PERM_AVX2): Ditto.
15010         (one_cmpl<mode>2): Ditto.
15011         (<mask_codefor>one_cmpl<mode>2<mask_name>): Ditto.
15012         (*one_cmpl<mode>2_pternlog_false_dep): Ditto.
15013         (define_split to xor): Ditto.
15014         (*andnot<mode>3): Ditto.
15015         (define_split for ior): Ditto.
15016         (*iornot<mode>3): Ditto.
15017         (*xnor<mode>3): Ditto.
15018         (*<nlogic><mode>3): Ditto.
15019         (<mask_codefor>avx512f_interleave_highv16si<mask_name>): Ditto.
15020         (<mask_codefor>avx512f_interleave_lowv16si<mask_name>): Ditto.
15021         (avx512f_pshufdv3_mask): Ditto.
15022         (avx512f_pshufd_1<mask_name>): Ditto.
15023         (*vec_extractv4ti): Ditto.
15024         (VEXTRACTI128_MODE): Ditto.
15025         (define_split to vec_extract): Ditto.
15026         (VI1248_AVX512VL_AVX512BW): Ditto.
15027         (<mask_codefor>avx512f_<code>v16qiv16si2<mask_name>): Ditto.
15028         (<insn>v16qiv16si2): Ditto.
15029         (avx512f_<code>v16hiv16si2<mask_name>): Ditto.
15030         (<insn>v16hiv16si2): Ditto.
15031         (avx512f_zero_extendv16hiv16si2_1): Ditto.
15032         (avx512f_<code>v8qiv8di2<mask_name>): Ditto.
15033         (*avx512f_<code>v8qiv8di2<mask_name>_1): Ditto.
15034         (*avx512f_<code>v8qiv8di2<mask_name>_2): Ditto.
15035         (<insn>v8qiv8di2): Ditto.
15036         (avx512f_<code>v8hiv8di2<mask_name>): Ditto.
15037         (<insn>v8hiv8di2): Ditto.
15038         (avx512f_<code>v8siv8di2<mask_name>): Ditto.
15039         (*avx512f_zero_extendv8siv8di2_1): Ditto.
15040         (*avx512f_zero_extendv8siv8di2_2): Ditto.
15041         (<insn>v8siv8di2): Ditto.
15042         (avx512f_roundps512_sfix): Ditto.
15043         (vashrv8di3): Ditto.
15044         (vashrv16si3): Ditto.
15045         (pbroadcast_evex_isa): Change isa attribute to avx512f_512.
15046         (vec_dupv4sf): Add TARGET_EVEX512.
15047         (*vec_dupv4si): Ditto.
15048         (*vec_dupv2di): Ditto.
15049         (vec_dup<mode>): Change isa attribute to avx512f_512.
15050         (VPERMI2): Add TARGET_EVEX512.
15051         (VPERMI2I): Ditto.
15052         (VEC_INIT_MODE): Ditto.
15053         (VEC_INIT_HALF_MODE): Ditto.
15054         (<mask_codefor>avx512f_vcvtph2ps512<mask_name><round_saeonly_name>):
15055         Ditto.
15056         (avx512f_vcvtps2ph512_mask_sae): Ditto.
15057         (<mask_codefor>avx512f_vcvtps2ph512<mask_name><round_saeonly_name>):
15058         Ditto.
15059         (*avx512f_vcvtps2ph512<merge_mask_name>): Ditto.
15060         (INT_BROADCAST_MODE): Ditto.
15062 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
15064         * config/i386/i386-expand.cc (ix86_broadcast_from_constant):
15065         Disable zmm broadcast for !TARGET_EVEX512.
15066         * config/i386/i386-options.cc (ix86_option_override_internal):
15067         Do not use PVW_512 when no-evex512.
15068         (ix86_simd_clone_adjust): Add evex512 target into string.
15069         * config/i386/i386.cc (type_natural_mode): Report ABI warning
15070         when using zmm register w/o evex512.
15071         (ix86_return_in_memory): Do not allow zmm when !TARGET_EVEX512.
15072         (ix86_hard_regno_mode_ok): Ditto.
15073         (ix86_set_reg_reg_cost): Ditto.
15074         (ix86_rtx_costs): Ditto.
15075         (ix86_vector_mode_supported_p): Ditto.
15076         (ix86_preferred_simd_mode): Ditto.
15077         (ix86_get_mask_mode): Ditto.
15078         (ix86_simd_clone_compute_vecsize_and_simdlen): Disable 512 bit
15079         libmvec call when !TARGET_EVEX512.
15080         (ix86_simd_clone_usable): Ditto.
15081         * config/i386/i386.h (BIGGEST_ALIGNMENT): Disable 512 alignment
15082         when !TARGET_EVEX512
15083         (MOVE_MAX): Do not use PVW_512 when !TARGET_EVEX512.
15084         (STORE_MAX_PIECES): Ditto.
15086 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
15088         * config/i386/i386-builtin.def (BDESC): Add
15089         OPTION_MASK_ISA2_EVEX512.
15091 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
15093         * config/i386/i386-builtin.def (BDESC): Add
15094         OPTION_MASK_ISA2_EVEX512.
15096 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
15098         * config/i386/i386-builtin.def (BDESC): Add
15099         OPTION_MASK_ISA2_EVEX512.
15101 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
15103         * config/i386/i386-builtin.def (BDESC): Add
15104         OPTION_MASK_ISA2_EVEX512.
15106 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
15108         * config/i386/i386-builtin.def (BDESC): Add
15109         OPTION_MASK_ISA2_EVEX512.
15110         * config/i386/i386-builtins.cc
15111         (ix86_init_mmx_sse_builtins): Ditto.
15113 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
15114             Hu, Lin1  <lin1.hu@intel.com>
15116         * config/i386/avx512fp16intrin.h: Add evex512 target for 512 bit
15117         intrins.
15119 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
15121         * config.gcc: Add avx512bitalgvlintrin.h.
15122         * config/i386/avx5124fmapsintrin.h: Add evex512 target for 512 bit
15123         intrins.
15124         * config/i386/avx5124vnniwintrin.h: Ditto.
15125         * config/i386/avx512bf16intrin.h: Ditto.
15126         * config/i386/avx512bitalgintrin.h: Add evex512 target for 512 bit
15127         intrins. Split 128/256 bit intrins to avx512bitalgvlintrin.h.
15128         * config/i386/avx512erintrin.h: Add evex512 target for 512 bit
15129         intrins
15130         * config/i386/avx512ifmaintrin.h: Ditto
15131         * config/i386/avx512pfintrin.h: Ditto
15132         * config/i386/avx512vbmi2intrin.h: Ditto.
15133         * config/i386/avx512vbmiintrin.h: Ditto.
15134         * config/i386/avx512vnniintrin.h: Ditto.
15135         * config/i386/avx512vp2intersectintrin.h: Ditto.
15136         * config/i386/avx512vpopcntdqintrin.h: Ditto.
15137         * config/i386/gfniintrin.h: Ditto.
15138         * config/i386/immintrin.h: Add avx512bitalgvlintrin.h.
15139         * config/i386/vaesintrin.h: Add evex512 target for 512 bit intrins.
15140         * config/i386/vpclmulqdqintrin.h: Ditto.
15141         * config/i386/avx512bitalgvlintrin.h: New.
15143 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
15145         * config/i386/avx512bwintrin.h: Add evex512 target for 512 bit
15146         intrins.
15148 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
15150         * config/i386/avx512dqintrin.h: Add evex512 target for 512 bit
15151         intrins.
15153 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
15155         * config/i386/avx512fintrin.h: Add evex512 target for 512 bit intrins.
15157 2023-10-09  Haochen Jiang  <haochen.jiang@intel.com>
15159         * common/config/i386/i386-common.cc
15160         (OPTION_MASK_ISA2_EVEX512_SET): New.
15161         (OPTION_MASK_ISA2_EVEX512_UNSET): Ditto.
15162         (ix86_handle_option): Handle EVEX512.
15163         * config/i386/i386-c.cc
15164         (ix86_target_macros_internal): Handle EVEX512. Add __EVEX256__
15165         when AVX512VL is set.
15166         * config/i386/i386-options.cc: (isa2_opts): Handle EVEX512.
15167         (ix86_valid_target_attribute_inner_p): Ditto.
15168         (ix86_option_override_internal): Set EVEX512 target if it is not
15169         explicitly set when AVX512 is enabled. Disable
15170         AVX512{PF,ER,4VNNIW,4FAMPS} for -mno-evex512.
15171         * config/i386/i386.opt: Add mevex512. Temporaily RejectNegative.
15173 2023-10-09  Haochen Gui  <guihaoc@gcc.gnu.org>
15175         PR target/88558
15176         * config/rs6000/rs6000.md (lrint<mode>di2): Remove TARGET_FPRND
15177         from insn condition.
15178         (lrint<mode>si2): New insn pattern for 32bit lrint.
15180 2023-10-09  Haochen Gui  <guihaoc@gcc.gnu.org>
15182         PR target/88558
15183         * config/rs6000/rs6000.cc (rs6000_hard_regno_mode_ok_uncached):
15184         Enable SImode on FP registers for P7.
15185         * config/rs6000/rs6000.md (*movsi_internal1): Add fmr for SImode
15186         move between FP registers.  Set attribute isa of stfiwx to "*"
15187         and attribute of stxsiwx to "p7".
15189 2023-10-09  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
15191         * config/s390/s390.md: Make use of new copysign RTL.
15193 2023-10-09  Hongyu Wang  <hongyu.wang@intel.com>
15195         * config/i386/sse.md (vec_concatv2di): Replace constraint "m"
15196         with "jm" for alternative 0 and 1 of operand 2.
15197         (sse4_1_<code><mode>3<mask_name>): Replace constraint "Bm" with
15198         "ja" for alternative 0 and 1 of operand2.
15200 2023-10-08  David Malcolm  <dmalcolm@redhat.com>
15202         PR analyzer/111155
15203         * text-art/table.cc (table::maybe_set_cell_span): New.
15204         (table::add_other_table): New.
15205         * text-art/table.h (class table::cell_placement): Add class table
15206         as a friend.
15207         (table::add_rows): New.
15208         (table::add_row): Reimplement in terms of add_rows.
15209         (table::maybe_set_cell_span): New decl.
15210         (table::add_other_table): New decl.
15211         * text-art/types.h (operator+): New operator for rect + coord.
15213 2023-10-08  David Malcolm  <dmalcolm@redhat.com>
15215         * genmatch.cc (main): Update for "m_" prefix of some fields of
15216         line_maps.
15217         * input.cc (make_location): Update for removal of
15218         COMBINE_LOCATION_DATA.
15219         (dump_line_table_statistics): Update for "m_" prefix of some
15220         fields of line_maps.
15221         (location_with_discriminator): Update for removal of
15222         COMBINE_LOCATION_DATA.
15223         (line_table_test::line_table_test): Update for "m_" prefix of some
15224         fields of line_maps.
15225         * toplev.cc (general_init): Likewise.
15226         * tree.cc (set_block): Update for removal of
15227         COMBINE_LOCATION_DATA.
15228         (set_source_range): Likewise.
15230 2023-10-08  David Malcolm  <dmalcolm@redhat.com>
15232         * input.cc (make_location): Move implementation to
15233         line_maps::make_location.
15235 2023-10-08  David Malcolm  <dmalcolm@redhat.com>
15237         PR driver/111700
15238         * input.cc (file_cache::add_file): Update leading comment to
15239         clarify that it can fail.
15240         (file_cache::lookup_or_add_file): Likewise.
15241         (file_cache::get_source_file_content): Gracefully handle
15242         lookup_or_add_file failing.
15244 2023-10-08  liuhongt  <hongtao.liu@intel.com>
15246         * config/i386/i386.cc (ix86_build_const_vector): Handle V2HF
15247         and V4HFmode.
15248         (ix86_build_signbit_mask): Ditto.
15249         * config/i386/mmx.md (mmxintvecmode): Ditto.
15250         (<code><mode>2): New define_expand.
15251         (*mmx_<code><mode>): New define_insn_and_split.
15252         (*mmx_nabs<mode>2): Ditto.
15253         (*mmx_andnot<mode>3): New define_insn.
15254         (<code><mode>3): Ditto.
15255         (copysign<mode>3): New define_expand.
15256         (xorsign<mode>3): Ditto.
15257         (signbit<mode>2): Ditto.
15259 2023-10-08  liuhongt  <hongtao.liu@intel.com>
15261         * config/i386/mmx.md (VHF_32_64): New mode iterator.
15262         (<insn><mode>3): New define_expand, merged from ..
15263         (<insn>v4hf3): .. this and
15264         (<insn>v2hf3): .. this.
15265         (movd_v2hf_to_sse_reg): New define_expand, splitted from ..
15266         (movd_v2hf_to_sse): .. this.
15267         (<code><mode>3): New define_expand.
15269 2023-10-08  Jiufu Guo  <guojiufu@linux.ibm.com>
15271         * config/rs6000/rs6000.cc (can_be_built_by_li_and_rldic): New function.
15272         (rs6000_emit_set_long_const): Call can_be_built_by_li_and_rldic.
15274 2023-10-08  Jiufu Guo  <guojiufu@linux.ibm.com>
15276         * config/rs6000/rs6000.cc (can_be_built_by_li_lis_and_rldicl): New
15277         function.
15278         (can_be_built_by_li_lis_and_rldicr): New function.
15279         (rs6000_emit_set_long_const): Call can_be_built_by_li_lis_and_rldicr and
15280         can_be_built_by_li_lis_and_rldicl.
15282 2023-10-08  Jiufu Guo  <guojiufu@linux.ibm.com>
15284         * config/rs6000/rs6000.cc (can_be_rotated_to_negative_lis): New
15285         function.
15286         (can_be_built_by_li_and_rotldi): Rename to ...
15287         (can_be_built_by_li_lis_and_rotldi): ... this function.
15288         (rs6000_emit_set_long_const): Call can_be_built_by_li_lis_and_rotldi.
15290 2023-10-08  Jiufu Guo  <guojiufu@linux.ibm.com>
15292         * config/rs6000/rs6000.cc (can_be_built_by_li_and_rotldi): New function.
15293         (rs6000_emit_set_long_const): Call can_be_built_by_li_and_rotldi.
15295 2023-10-08  Yanzhang Wang  <yanzhang.wang@intel.com>
15297         * config/riscv/linux.h: Pass the static-pie specific options to
15298         the linker.
15300 2023-10-07  Saurabh Jha  <saurabh.jha@arm.com>
15302         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add support for
15303         cortex-x4 core.
15304         * config/aarch64/aarch64-tune.md: Regenerated.
15305         * doc/invoke.texi: Add command-line option for cortex-x4 core.
15307 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
15308             Hongyu Wang  <hongyu.wang@intel.com>
15309             Hongtao Liu  <hongtao.liu@intel.com>
15311         * config/i386/constraints.md (jb): New constraint for vsib memory
15312         that does not allow gpr32.
15313         * config/i386/i386.md: (setcc_<mode>_sse): Replace m to jm for avx
15314         alternative and set attr_gpr32 to 0.
15315         (movmsk_df): Split avx/noavx alternatives and  replace "r" to "jr" for
15316         avx alternative.
15317         (<sse>_rcp<mode>2): Split avx/noavx alternatives and replace
15318         "m/Bm" to "jm/ja" for avx alternative, set its gpr32 attr to 0.
15319         (*rsqrtsf2_sse): Likewise.
15320         * config/i386/mmx.md (mmx_pmovmskb): Split alternative 1 to
15321         avx/noavx and assign jr/r constraint to dest.
15322         * config/i386/sse.md (<sse>_movmsk<ssemodesuffix><avxsizesuffix>):
15323         Split avx/noavx alternatives and replace "r" to "jr" for avx alternative.
15324         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext): Likewise.
15325         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_lt): Likewise.
15326         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext_lt): Likewise.
15327         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_shift): Likewise.
15328         (*<sse>_movmsk<ssemodesuffix><avxsizesuffix>_<u>ext_shift): Likewise.
15329         (<sse2_avx2>_pmovmskb): Likewise.
15330         (*<sse2_avx2>_pmovmskb_zext): Likewise.
15331         (*sse2_pmovmskb_ext): Likewise.
15332         (*<sse2_avx2>_pmovmskb_lt): Likewise.
15333         (*<sse2_avx2>_pmovmskb_zext_lt): Likewise.
15334         (*sse2_pmovmskb_ext_lt): Likewise.
15335         (<sse>_rcp<mode>2): Split avx/noavx alternatives and replace
15336         "m/Bm" to "jm/ja" for avx alternative, set its attr_gpr32 to 0.
15337         (sse_vmrcpv4sf2): Likewise.
15338         (*sse_vmrcpv4sf2): Likewise.
15339         (rsqrt<mode>2): Likewise.
15340         (sse_vmrsqrtv4sf2): Likewise.
15341         (*sse_vmrsqrtv4sf2): Likewise.
15342         (avx_h<insn>v4df3): Likewise.
15343         (sse3_hsubv2df3): Likewise.
15344         (avx_h<insn>v8sf3): Likewise.
15345         (sse3_h<insn>v4sf3): Likewise.
15346         (<sse3>_lddqu<avxsizesuffix>): Likewise.
15347         (avx_cmp<mode>3): Likewise.
15348         (avx_vmcmp<mode>3): Likewise.
15349         (*sse2_gt<mode>3): Likewise.
15350         (sse_ldmxcsr): Likewise.
15351         (sse_stmxcsr): Likewise.
15352         (avx_vtest<ssemodesuffix><avxsizesuffix>): Replace m to jm for
15353         avx alternative and set attr_gpr32 to 0.
15354         (avx2_permv2ti): Likewise.
15355         (*avx_vperm2f128<mode>_full): Likewise.
15356         (*avx_vperm2f128<mode>_nozero): Likewise.
15357         (vec_set_lo_v32qi): Likewise.
15358         (<avx_avx2>_maskload<ssemodesuffix><avxsizesuffix>): Likewise.
15359         (<avx_avx2>_maskstore<ssemodesuffix><avxsi)zesuffix>: Likewise.
15360         (avx_cmp<mode>3): Likewise.
15361         (avx_vmcmp<mode>3): Likewise.
15362         (*<sse>_maskcmp<mode>3_comm): Likewise.
15363         (*avx2_gathersi<VEC_GATHER_MODE:mode>): Replace Tv to jb and set
15364         attr_gpr32 to 0.
15365         (*avx2_gathersi<VEC_GATHER_MODE:mode>_2): Likewise.
15366         (*avx2_gatherdi<VEC_GATHER_MODE:mode>): Likewise.
15367         (*avx2_gatherdi<VEC_GATHER_MODE:mode>_2): Likewise.
15368         (*avx2_gatherdi<VI4F_256:mode>_3): Likewise.
15369         (*avx2_gatherdi<VI4F_256:mode>_4): Likewise.
15370         (avx_vbroadcastf128_<mode>): Restrict non-egpr alternative to
15371         noavx512vl, set its constraint to jm and set attr_gpr32 to 0.
15372         (vec_set_lo_<mode><mask_name>): Likewise.
15373         (vec_set_lo_<mode><mask_name>): Likewise for SF/SI modes.
15374         (vec_set_hi_<mode><mask_name>): Likewise.
15375         (vec_set_hi_<mode><mask_name>): Likewise for SF/SI modes.
15376         (vec_set_hi_<mode>): Likewise.
15377         (vec_set_lo_<mode>): Likewise.
15378         (avx2_set_hi_v32qi): Likewise.
15380 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
15381             Hongyu Wang  <hongyu.wang@intel.com>
15382             Hongtao Liu  <hongtao.liu@intel.com>
15384         * config/i386/i386.md (*movhi_internal): Split out non-gpr
15385         supported pextrw with mem constraint to avx/noavx alternatives,
15386         set jm and attr gpr32 0 to the noavx alternative.
15387         (*mov<mode>_internal): Likewise.
15388         * config/i386/mmx.md (mmx_pshufbv8qi3): Change "r/m/Bm" to
15389         "jr/jm/ja" and set_attr gpr32 0 for noavx alternative.
15390         (mmx_pshufbv4qi3): Likewise.
15391         (*mmx_pinsrd): Likewise.
15392         (*mmx_pinsrb): Likewise.
15393         (*pinsrb): Likewise.
15394         (mmx_pshufbv8qi3): Likewise.
15395         (mmx_pshufbv4qi3): Likewise.
15396         (@sse4_1_insertps_<mode>): Likewise.
15397         (*mmx_pextrw): Split altrenatives and map non-EGPR
15398         constraints, attr_gpr32 and attr_isa to noavx mnemonics.
15399         (*movv2qi_internal): Likewise.
15400         (*pextrw): Likewise.
15401         (*mmx_pextrb): Likewise.
15402         (*mmx_pextrb_zext): Likewise.
15403         (*pextrb): Likewise.
15404         (*pextrb_zext): Likewise.
15405         (vec_extractv2si_1): Likewise.
15406         (vec_extractv2si_1_zext): Likewise.
15407         * config/i386/sse.md: (vi128_h_r): New mode attr for
15408         pinsr{bw}/pextr{bw} with reg operand.
15409         (*abs<mode>2): Split altrenatives and %v in mnemonics, map
15410         non-EGPR constraints, gpr32 and isa attrs to noavx mnemonics.
15411         (*vec_extract<mode>): Likewise.
15412         (*vec_extract<mode>): Likewise for HFBF pattern.
15413         (*vec_extract<PEXTR_MODE12:mode>_zext): Likewise.
15414         (*vec_extractv4si_1): Likewise.
15415         (*vec_extractv4si_zext): Likewise.
15416         (*vec_extractv2di_1): Likewise.
15417         (*vec_concatv2si_sse4_1): Likewise.
15418         (<sse2p4_1>_pinsr<ssemodesuffix>): Likewise.
15419         (vec_concatv2di): Likewise.
15420         (*sse4_1_<code>v2qiv2di2<mask_name>_1): Likewise.
15421         (ssse3_avx2>_pshufb<mode>3<mask_name>): Change "r/m/Bm" to
15422         "jr/jm/ja" and set_attr gpr32 0 for noavx alternative, split
15423         %v for avx/noavx alternatives if necessary.
15424         (*vec_concatv2sf_sse4_1): Likewise.
15425         (*sse4_1_extractps): Likewise.
15426         (vec_set<mode>_0): Likewise for VI4F_128.
15427         (*vec_setv4sf_sse4_1): Likewise.
15428         (@sse4_1_insertps<mode>): Likewise.
15429         (ssse3_pmaddubsw128): Likewise.
15430         (*<ssse3_avx2>_pmulhrsw<mode>3<mask_name>): Likewise.
15431         (<sse4_1_avx2>_packusdw<mask_name>): Likewise.
15432         (<ssse3_avx2>_palignr<mode>): Likewise.
15433         (<vi8_sse4_1_avx2_avx512>_movntdqa): Likewise.
15434         (<sse4_1_avx2>_mpsadbw): Likewise.
15435         (*sse4_1_mulv2siv2di3<mask_name>): Likewise.
15436         (*<sse4_1_avx2>_mul<mode>3<mask_name>): Likewise.
15437         (*sse4_1_<code><mode>3<mask_name>): Likewise.
15438         (*<code>v8hi3): Likewise.
15439         (*<code>v16qi3): Likewise.
15440         (*sse4_1_<code>v8qiv8hi2<mask_name>_1): Likewise.
15441         (*sse4_1_zero_extendv8qiv8hi2_3): Likewise.
15442         (*sse4_1_zero_extendv8qiv8hi2_4): Likewise.
15443         (*sse4_1_<code>v4qiv4si2<mask_name>_1): Likewise.
15444         (*sse4_1_<code>v4hiv4si2<mask_name>_1): Likewise.
15445         (*sse4_1_zero_extendv4hiv4si2_3): Likewise.
15446         (*sse4_1_zero_extendv4hiv4si2_4): Likewise.
15447         (*sse4_1_<code>v2hiv2di2<mask_name>_1): Likewise.
15448         (*sse4_1_<code>v2siv2di2<mask_name>_1): Likewise.
15449         (*sse4_1_zero_extendv2siv2di2_3): Likewise.
15450         (*sse4_1_zero_extendv2siv2di2_4): Likewise.
15451         (aesdec): Likewise.
15452         (aesdeclast): Likewise.
15453         (aesenc): Likewise.
15454         (aesenclast): Likewise.
15455         (pclmulqdq): Likewise.
15456         (vgf2p8affineinvqb_<mode><mask_name>): Likewise.
15457         (vgf2p8affineqb_<mode><mask_name>): Likewise.
15458         (vgf2p8mulb_<mode><mask_name>): Likewise.
15460 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
15461             Hongyu Wang  <hongyu.wang@intel.com>
15462             Hongtao Liu  <hongtao.liu@intel.com>
15464         * config/i386/i386-protos.h (x86_evex_reg_mentioned_p): New
15465         prototype.
15466         * config/i386/i386.cc (x86_evex_reg_mentioned_p): New
15467         function.
15468         * config/i386/i386.md (sse4_1_round<mode>2): Set attr gpr32 0
15469         and constraint jm to all non-evex alternatives, adjust
15470         alternative outputs if evex reg is mentioned.
15471         * config/i386/sse.md (<sse4_1>_ptest<mode>): Set attr gpr32 0
15472         and constraint jm/ja to all non-evex alternatives.
15473         (ptesttf2): Likewise.
15474         (<sse4_1>_round<ssemodesuffix><avxsizesuffix): Likewise.
15475         (sse4_1_round<ssescalarmodesuffix>): Likewise.
15476         (sse4_2_pcmpestri): Likewise.
15477         (sse4_2_pcmpestrm): Likewise.
15478         (sse4_2_pcmpestr_cconly): Likewise.
15479         (sse4_2_pcmpistr): Likewise.
15480         (sse4_2_pcmpistri): Likewise.
15481         (sse4_2_pcmpistrm): Likewise.
15482         (sse4_2_pcmpistr_cconly): Likewise.
15483         (aesimc): Likewise.
15484         (aeskeygenassist): Likewise.
15486 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
15487             Hongyu Wang  <hongyu.wang@intel.com>
15488             Hongtao Liu  <hongtao.liu@intel.com>
15490         * config/i386/sse.md (avx2_ph<plusminus_mnemonic>wv16hi3): Set
15491         attr gpr32 0 and constraint jm/ja to all mem alternatives.
15492         (ssse3_ph<plusminus_mnemonic>wv8hi3): Likewise.
15493         (ssse3_ph<plusminus_mnemonic>wv4hi3): Likewise.
15494         (avx2_ph<plusminus_mnemonic>dv8si3): Likewise.
15495         (ssse3_ph<plusminus_mnemonic>dv4si3): Likewise.
15496         (ssse3_ph<plusminus_mnemonic>dv2si3): Likewise.
15497         (<ssse3_avx2>_psign<mode>3): Likewise.
15498         (ssse3_psign<mode>3): Likewise.
15499         (<sse4_1>_blend<ssemodesuffix><avxsizesuffix): Likewise.
15500         (<sse4_1>_blendv<ssemodesuffix><avxsizesuffix): Likewise.
15501         (*<sse4_1>_blendv<ssemodesuffix><avxsizesuffix>_lt): Likewise.
15502         (*<sse4_1>_blendv<ssefltmodesuff)ix><avxsizesuffix>_not_ltint: Likewise.
15503         (<sse4_1>_dp<ssemodesuffix><avxsizesuffix>): Likewise.
15504         (<sse4_1_avx2>_mpsadbw): Likewise.
15505         (<sse4_1_avx2>_pblendvb): Likewise.
15506         (*<sse4_1_avx2>_pblendvb_lt): Likewise.
15507         (sse4_1_pblend<ssemodesuffix>): Likewise.
15508         (*avx2_pblend<ssemodesuffix>): Likewise.
15509         (avx2_permv2ti): Likewise.
15510         (*avx_vperm2f128<mode>_nozero): Likewise.
15511         (*avx2_eq<mode>3): Likewise.
15512         (*sse4_1_eqv2di3): Likewise.
15513         (sse4_2_gtv2di3): Likewise.
15514         (avx2_gt<mode>3): Likewise.
15516 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
15517             Hongyu Wang  <hongyu.wang@intel.com>
15518             Hongtao Liu  <hongtao.liu@intel.com>
15520         * config/i386/i386.md (<xsave>): Set attr gpr32 0 and constraint
15521         jm.
15522         (<xsave>_rex64): Likewise.
15523         (<xrstor>_rex64): Likewise.
15524         (<xrstor>64): Likewise.
15525         (fxsave64): Likewise.
15526         (fxstore64): Likewise.
15528 2023-10-07  Hongyu Wang  <hongyu.wang@intel.com>
15529             Kong Lingling  <lingling.kong@intel.com>
15530             Hongtao Liu  <hongtao.liu@intel.com>
15532         * config/i386/i386.cc (ix86_get_ssemov): Check if egpr is used,
15533         adjust mnemonic for vmovduq/vmovdqa.
15534         * config/i386/sse.md (*<extract_type>_vinsert<shuffletype><extract_suf>_0):
15535         Check if egpr is used, adjust mnemonic for vmovdqu/vmovdqa.
15536         (avx_vec_concat<mode>): Likewise, and separate alternative 0 to
15537         avx_noavx512f.
15539 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
15540             Hongyu Wang  <hongyu.wang@intel.com>
15541             Hongtao Liu  <hongtao.liu@intel.com>
15543         * config/i386/i386.cc (map_egpr_constraints): New funciton to
15544         map common constraints to EGPR prohibited constraints.
15545         (ix86_md_asm_adjust): Calls map_egpr_constraints.
15546         * config/i386/i386.opt: Add option mapx-inline-asm-use-gpr32.
15548 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
15549             Hongyu Wang  <hongyu.wang@intel.com>
15550             Hongtao Liu  <hongtao.liu@intel.com>
15552         * config/i386/i386-protos.h (ix86_insn_base_reg_class): New
15553         prototype.
15554         (ix86_regno_ok_for_insn_base_p): Likewise.
15555         (ix86_insn_index_reg_class): Likewise.
15556         * config/i386/i386.cc (ix86_memory_address_use_extended_reg_class_p):
15557         New helper function to scan the insn.
15558         (ix86_insn_base_reg_class): New function to choose BASE_REG_CLASS.
15559         (ix86_regno_ok_for_insn_base_p): Likewise for base regno.
15560         (ix86_insn_index_reg_class): Likewise for INDEX_REG_CLASS.
15561         * config/i386/i386.h (INSN_BASE_REG_CLASS): Define.
15562         (REGNO_OK_FOR_INSN_BASE_P): Likewise.
15563         (INSN_INDEX_REG_CLASS): Likewise.
15564         (enum reg_class): Add INDEX_GPR16.
15565         (GENERAL_GPR16_REGNO_P): Define.
15566         * config/i386/i386.md (gpr32): New attribute.
15568 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
15569             Hongyu Wang  <hongyu.wang@intel.com>
15570             Hongtao Liu  <hongtao.liu@intel.com>
15572         * config/i386/constraints.md (jr): New register constraint
15573         that prohibits EGPR.
15574         (jR): Constraint that force usage of EGPR.
15575         (jm): New memory constraint that prohibits EGPR.
15576         (ja): Likewise for Bm constraint.
15577         (jb): Likewise for Tv constraint.
15578         (j<): New auto-dec memory constraint that prohibits EGPR.
15579         (j>): Likewise for ">" constraint.
15580         (jo): Likewise for "o" constraint.
15581         (jv): Likewise for "V" constraint.
15582         (jp): Likewise for "p" constraint.
15583         * config/i386/i386.h (enum reg_class): Add new reg class
15584         GENERAL_GPR16.
15586 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
15587             Hongyu Wang  <hongyu.wang@intel.com>
15588             Hongtao Liu  <hongtao.liu@intel.com>
15590         * config/i386/i386-protos.h (x86_extended_rex2reg_mentioned_p):
15591         New function prototype.
15592         * config/i386/i386.cc (regclass_map): Add mapping for 16 new
15593         general registers.
15594         (debugger64_register_map): Likewise.
15595         (ix86_conditional_register_usage): Clear REX2 register when APX
15596         disabled.
15597         (ix86_code_end): Add handling for REX2 reg.
15598         (print_reg): Likewise.
15599         (ix86_output_jmp_thunk_or_indirect): Likewise.
15600         (ix86_output_indirect_branch_via_reg): Likewise.
15601         (ix86_attr_length_vex_default): Likewise.
15602         (ix86_emit_save_regs): Adjust to allow saving r31.
15603         (ix86_register_priority): Set REX2 reg priority same as REX.
15604         (x86_extended_reg_mentioned_p): Add check for REX2 regs.
15605         (x86_extended_rex2reg_mentioned_p): New function.
15606         * config/i386/i386.h (CALL_USED_REGISTERS): Add new extended
15607         registers.
15608         (REG_ALLOC_ORDER): Likewise.
15609         (FIRST_REX2_INT_REG): Define.
15610         (LAST_REX2_INT_REG): Ditto.
15611         (GENERAL_REGS): Add 16 new registers.
15612         (INT_SSE_REGS): Likewise.
15613         (FLOAT_INT_REGS): Likewise.
15614         (FLOAT_INT_SSE_REGS): Likewise.
15615         (INT_MASK_REGS): Likewise.
15616         (ALL_REGS):Likewise.
15617         (REX2_INT_REG_P): Define.
15618         (REX2_INT_REGNO_P): Ditto.
15619         (GENERAL_REGNO_P): Add REX2_INT_REGNO_P.
15620         (REGNO_OK_FOR_INDEX_P): Ditto.
15621         (REG_OK_FOR_INDEX_NONSTRICT_P): Add new extended registers.
15622         * config/i386/i386.md: Add 16 new integer general
15623         registers.
15625 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
15626             Hongyu Wang  <hongyu.wang@intel.com>
15627             Hongtao Liu  <hongtao.liu@intel.com>
15629         * common/config/i386/cpuinfo.h (XSTATE_APX_F): New macro.
15630         (XCR_APX_F_ENABLED_MASK): Likewise.
15631         (get_available_features): Detect APX_F under
15632         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_APX_F_SET): New.
15633         (OPTION_MASK_ISA2_APX_F_UNSET): Likewise.
15634         (ix86_handle_option): Handle -mapxf.
15635         * common/config/i386/i386-cpuinfo.h (FEATURE_APX_F): New.
15636         * common/config/i386/i386-isas.h: Add entry for APX_F.
15637         * config/i386/cpuid.h (bit_APX_F): New.
15638         * config/i386/i386.h (bit_APX_F): (TARGET_APX_EGPR,
15639         TARGET_APX_PUSH2POP2, TARGET_APX_NDD): New define.
15640         * config/i386/i386-opts.h (enum apx_features): New enum.
15641         * config/i386/i386-isa.def (APX_F): New DEF_PTA.
15642         * config/i386/i386-options.cc (ix86_function_specific_save):
15643         Save ix86_apx_features.
15644         (ix86_function_specific_restore): Restore it.
15645         (ix86_valid_target_attribute_inner_p): Add mapxf.
15646         (ix86_option_override_internal): Set ix86_apx_features for PTA
15647         and TARGET_APX_F. Also reports error when APX_F is set but not
15648         having TARGET_64BIT.
15649         * config/i386/i386.opt: (-mapxf): New ISA flag option.
15650         (-mapx=): New enumeration option.
15651         (apx_features): New enum type.
15652         (apx_none): New enum value.
15653         (apx_egpr): Likewise.
15654         (apx_push2pop2): Likewise.
15655         (apx_ndd): Likewise.
15656         (apx_all): Likewise.
15657         * doc/invoke.texi: Document mapxf.
15659 2023-10-07  Hongyu Wang  <hongyu.wang@intel.com>
15660             Kong Lingling  <lingling.kong@intel.com>
15661             Hongtao Liu  <hongtao.liu@intel.com>
15663         * addresses.h (index_reg_class): New wrapper function like
15664         base_reg_class.
15665         * doc/tm.texi: Document INSN_INDEX_REG_CLASS.
15666         * doc/tm.texi.in: Ditto.
15667         * lra-constraints.cc (index_part_to_reg): Pass index_class.
15668         (process_address_1): Calls index_reg_class with curr_insn and
15669         replace INDEX_REG_CLASS with its return value index_cl.
15670         * reload.cc (find_reloads_address): Likewise.
15671         (find_reloads_address_1): Likewise.
15673 2023-10-07  Kong Lingling  <lingling.kong@intel.com>
15674             Hongyu Wang  <hongyu.wang@intel.com>
15675             Hongtao Liu  <hongtao.liu@intel.com>
15677         * addresses.h (base_reg_class): Add insn argument and new macro
15678         INSN_BASE_REG_CLASS.
15679         (regno_ok_for_base_p_1): Add insn argument and new macro
15680         REGNO_OK_FOR_INSN_BASE_P.
15681         (regno_ok_for_base_p): Add insn argument and parse to ok_for_base_p_1.
15682         * doc/tm.texi: Document INSN_BASE_REG_CLASS and
15683         REGNO_OK_FOR_INSN_BASE_P.
15684         * doc/tm.texi.in: Ditto.
15685         * lra-constraints.cc (process_address_1): Pass insn to
15686         base_reg_class.
15687         (curr_insn_transform): Ditto.
15688         * reload.cc (find_reloads): Ditto.
15689         (find_reloads_address): Ditto.
15690         (find_reloads_address_1): Ditto.
15691         (find_reloads_subreg_address): Ditto.
15692         * reload1.cc (maybe_fix_stack_asms): Ditto.
15694 2023-10-07  Jiufu Guo  <guojiufu@linux.ibm.com>
15696         PR target/108338
15697         * config/rs6000/rs6000.md (movsf_from_si): Update to generate mtvsrws
15698         for P9.
15700 2023-10-07  Jiufu Guo  <guojiufu@linux.ibm.com>
15702         PR target/108338
15703         * config/rs6000/predicates.md (lowpart_subreg_operator): New
15704         define_predicate.
15705         * config/rs6000/rs6000.md (any_rshift): New code_iterator.
15706         (movsf_from_si2): Rename to ...
15707         (movsf_from_si2_<code>): ... this.
15709 2023-10-07  Pan Li  <pan2.li@intel.com>
15711         PR target/111634
15712         * config/riscv/riscv.cc (riscv_legitimize_address): Ensure
15713         object is a REG before extracting its' REGNO.
15715 2023-10-06  Roger Sayle  <roger@nextmovesoftware.com>
15717         * config/i386/i386-expand.cc (ix86_split_ashl): Split shifts by
15718         one into add3_cc_overflow_1 followed by add3_carry.
15719         * config/i386/i386.md (@add<mode>3_cc_overflow_1): Renamed from
15720         "*add<mode>3_cc_overflow_1" to provide generator function.
15722 2023-10-06  Roger Sayle  <roger@nextmovesoftware.com>
15723             Uros Bizjak  <ubizjak@gmail.com>
15725         * config/i386/i386.cc (ix86_avoid_lea_for_addr): Split LEAs used
15726         to perform left shifts into shorter instructions with -Oz.
15728 2023-10-06  Vineet Gupta  <vineetg@rivosinc.com>
15730         * config/riscv/riscv.md (mvconst_internal): Add !ira_in_progress.
15732 2023-10-06  Sandra Loosemore  <sandra@codesourcery.com>
15734         * doc/extend.texi (Function Attributes): Mention standard attribute
15735         syntax.
15736         (Variable Attributes): Likewise.
15737         (Type Attributes): Likewise.
15738         (Attribute Syntax): Likewise.
15740 2023-10-06  Andrew Stubbs  <ams@codesourcery.com>
15742         * config/gcn/gcn-valu.md (*mov<mode>): Convert to compact syntax.
15743         (mov<mode>_exec): Likewise.
15744         (mov<mode>_sgprbase): Likewise.
15745         * config/gcn/gcn.md (*mov<mode>_insn): Likewise.
15746         (*movti_insn): Likewise.
15748 2023-10-06  Andrew Stubbs  <ams@codesourcery.com>
15750         * config/gcn/gcn.cc (print_operand): Adjust xcode type to fix warning.
15752 2023-10-06  Andrew Pinski  <pinskia@gmail.com>
15754         PR middle-end/111699
15755         * match.pd ((c ? a : b) op d, (c ? a : b) op (c ? d : e),
15756         (v ? w : 0) ? a : b, c1 ? c2 ? a : b : b): Enable only for GIMPLE.
15758 2023-10-06  Jakub Jelinek  <jakub@redhat.com>
15760         * ipa-prop.h (ipa_bits): Remove.
15761         (struct ipa_jump_func): Remove bits member.
15762         (struct ipcp_transformation): Remove bits member, adjust
15763         ctor and dtor.
15764         (ipa_get_ipa_bits_for_value): Remove.
15765         * ipa-prop.cc (struct ipa_bit_ggc_hash_traits): Remove.
15766         (ipa_bits_hash_table): Remove.
15767         (ipa_print_node_jump_functions_for_edge): Don't print bits.
15768         (ipa_get_ipa_bits_for_value): Remove.
15769         (ipa_set_jfunc_bits): Remove.
15770         (ipa_compute_jump_functions_for_edge): For pointers query
15771         pointer alignment before ipa_set_jfunc_vr and update_bitmask
15772         in there.  For integral types, just rely on bitmask already
15773         being handled in value ranges.
15774         (ipa_check_create_edge_args): Don't create ipa_bits_hash_table.
15775         (ipcp_transformation_initialize): Neither here.
15776         (ipcp_transformation_t::duplicate): Don't copy bits vector.
15777         (ipa_write_jump_function): Don't stream bits here.
15778         (ipa_read_jump_function): Neither here.
15779         (useful_ipcp_transformation_info_p): Don't test bits vec.
15780         (write_ipcp_transformation_info): Don't stream bits here.
15781         (read_ipcp_transformation_info): Neither here.
15782         (ipcp_get_parm_bits): Get mask and value from m_vr rather
15783         than bits.
15784         (ipcp_update_bits): Remove.
15785         (ipcp_update_vr): For pointers, set_ptr_info_alignment from
15786         bitmask stored in value range.
15787         (ipcp_transform_function): Don't test bits vector, don't call
15788         ipcp_update_bits.
15789         * ipa-cp.cc (propagate_bits_across_jump_function): Don't use
15790         jfunc->bits, instead get mask and value from jfunc->m_vr.
15791         (ipcp_store_bits_results): Remove.
15792         (ipcp_store_vr_results): Incorporate parts of
15793         ipcp_store_bits_results here, merge the bitmasks with value
15794         range if both are supplied.
15795         (ipcp_driver): Don't call ipcp_store_bits_results.
15796         * ipa-sra.cc (zap_useless_ipcp_results): Remove *ts->bits
15797         clearing.
15799 2023-10-06  Pan Li  <pan2.li@intel.com>
15801         * config/riscv/autovec.md: Update comments.
15803 2023-10-05  John David Anglin  <danglin@gcc.gnu.org>
15805         * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Delete.
15807 2023-10-05  Andrew MacLeod  <amacleod@redhat.com>
15809         * timevar.def (TV_TREE_FAST_VRP): New.
15810         * tree-pass.h (make_pass_fast_vrp): New prototype.
15811         * tree-vrp.cc (class fvrp_folder): New.
15812         (fvrp_folder::fvrp_folder): New.
15813         (fvrp_folder::~fvrp_folder): New.
15814         (fvrp_folder::value_of_expr): New.
15815         (fvrp_folder::value_on_edge): New.
15816         (fvrp_folder::value_of_stmt): New.
15817         (fvrp_folder::pre_fold_bb): New.
15818         (fvrp_folder::post_fold_bb): New.
15819         (fvrp_folder::pre_fold_stmt): New.
15820         (fvrp_folder::fold_stmt): New.
15821         (execute_fast_vrp): New.
15822         (pass_data_fast_vrp): New.
15823         (pass_vrp:execute): Check for fast VRP pass.
15824         (make_pass_fast_vrp): New.
15826 2023-10-05  Andrew MacLeod  <amacleod@redhat.com>
15828         * gimple-range.cc (dom_ranger::dom_ranger): New.
15829         (dom_ranger::~dom_ranger): New.
15830         (dom_ranger::range_of_expr): New.
15831         (dom_ranger::edge_range): New.
15832         (dom_ranger::range_on_edge): New.
15833         (dom_ranger::range_in_bb): New.
15834         (dom_ranger::range_of_stmt): New.
15835         (dom_ranger::maybe_push_edge): New.
15836         (dom_ranger::pre_bb): New.
15837         (dom_ranger::post_bb): New.
15838         * gimple-range.h (class dom_ranger): New.
15840 2023-10-05  Andrew MacLeod  <amacleod@redhat.com>
15842         * gimple-range-gori.cc (gori_stmt_info::gori_stmt_info): New.
15843         (gori_calc_operands): New.
15844         (gori_on_edge): New.
15845         (gori_name_helper): New.
15846         (gori_name_on_edge): New.
15847         * gimple-range-gori.h (gori_on_edge): New prototype.
15848         (gori_name_on_edge): New prototype.
15850 2023-10-05  Sergei Trofimovich  <siarheit@google.com>
15852         PR ipa/111283
15853         PR gcov-profile/111559
15854         * ipa-utils.cc (ipa_merge_profiles): Avoid producing
15855         uninitialized probabilities when merging counters with zero
15856         denominators.
15858 2023-10-05  Uros Bizjak  <ubizjak@gmail.com>
15860         PR target/111657
15861         * config/i386/i386-expand.cc (alg_usable_p): Reject libcall
15862         strategy for non-default address spaces.
15863         (decide_alg): Use loop strategy as a fallback strategy for
15864         non-default address spaces.
15866 2023-10-05  Jakub Jelinek  <jakub@redhat.com>
15868         * sreal.cc (verify_aritmetics): Rename to ...
15869         (verify_arithmetics): ... this.
15870         (sreal_verify_arithmetics): Adjust caller.
15872 2023-10-05  Martin Jambor  <mjambor@suse.cz>
15874         Revert:
15875         2023-10-03  Martin Jambor  <mjambor@suse.cz>
15877         PR ipa/108007
15878         * cgraph.h (cgraph_edge): Add a parameter to
15879         redirect_call_stmt_to_callee.
15880         * ipa-param-manipulation.h (ipa_param_adjustments): Add a
15881         parameter to modify_call.
15882         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee): New
15883         parameter killed_ssas, pass it to padjs->modify_call.
15884         * ipa-param-manipulation.cc (purge_transitive_uses): New function.
15885         (ipa_param_adjustments::modify_call): New parameter killed_ssas.
15886         Instead of substituting uses, invoke purge_transitive_uses.  If
15887         hash of killed SSAs has not been provided, create a temporary one
15888         and release SSAs that have been added to it.
15889         * tree-inline.cc (redirect_all_calls): Create
15890         id->killed_new_ssa_names earlier, pass it to edge redirection,
15891         adjust a comment.
15892         (copy_body): Release SSAs in id->killed_new_ssa_names.
15894 2023-10-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
15896         * config/riscv/autovec.md (@vec_series<mode>): Remove @.
15897         (vec_series<mode>): Ditto.
15898         * config/riscv/riscv-v.cc (expand_const_vector): Ditto.
15899         (shuffle_decompress_patterns): Ditto.
15901 2023-10-05  Claudiu Zissulescu  <claziss@gmail.com>
15903         * config/arc/arc-passes.def: Remove arc_ifcvt pass.
15904         * config/arc/arc-protos.h (arc_ccfsm_branch_deleted_p): Remove.
15905         (arc_ccfsm_record_branch_deleted): Likewise.
15906         (arc_ccfsm_cond_exec_p): Likewise.
15907         (arc_ccfsm): Likewise.
15908         (arc_ccfsm_record_condition): Likewise.
15909         (make_pass_arc_ifcvt): Likewise.
15910         * config/arc/arc.cc (arc_ccfsm): Remove.
15911         (arc_ccfsm_current): Likewise.
15912         (ARC_CCFSM_BRANCH_DELETED_P): Likewise.
15913         (ARC_CCFSM_RECORD_BRANCH_DELETED): Likewise.
15914         (ARC_CCFSM_COND_EXEC_P): Likewise.
15915         (CCFSM_ISCOMPACT): Likewise.
15916         (CCFSM_DBR_ISCOMPACT): Likewise.
15917         (machine_function): Remove ccfsm related fields.
15918         (arc_ifcvt): Remove pass.
15919         (arc_print_operand): Remove `#` punct operand and other ccfsm
15920         related code.
15921         (arc_ccfsm_advance): Remove.
15922         (arc_ccfsm_at_label): Likewise.
15923         (arc_ccfsm_record_condition): Likewise.
15924         (arc_ccfsm_post_advance): Likewise.
15925         (arc_ccfsm_branch_deleted_p): Likewise.
15926         (arc_ccfsm_record_branch_deleted): Likewise.
15927         (arc_ccfsm_cond_exec_p): Likewise.
15928         (arc_get_ccfsm_cond): Likewise.
15929         (arc_final_prescan_insn): Remove ccfsm references.
15930         (arc_internal_label): Likewise.
15931         (arc_reorg): Likewise.
15932         (arc_output_libcall): Likewise.
15933         * config/arc/arc.md: Remove ccfsm references and update related
15934         instruction patterns.
15936 2023-10-05  Claudiu Zissulescu  <claziss@gmail.com>
15938         * config/arc/arc.cc (arc_init): Remove '^' punct char.
15939         (arc_print_operand): Remove related code.
15940         * config/arc/arc.md: Update patterns which uses '%&'.
15942 2023-10-05  Claudiu Zissulescu  <claziss@gmail.com>
15944         * config/arc/arc-protos.h (arc_clear_unalign): Remove.
15945         (arc_toggle_unalign): Likewise.
15946         * config/arc/arc.cc (machine_function) Remove unalign.
15947         (arc_init): Remove `&` punct character.
15948         (arc_print_operand): Remove `&` related functions.
15949         (arc_verify_short): Update function's number of parameters.
15950         (output_short_suffix): Update function.
15951         (arc_short_long): Likewise.
15952         (arc_clear_unalign): Remove.
15953         (arc_toggle_unalign): Likewise.
15954         * config/arc/arc.h (ASM_OUTPUT_CASE_END): Remove.
15955         (ASM_OUTPUT_ALIGN): Update.
15956         * config/arc/arc.md: Remove all `%&` references.
15957         * config/arc/arc.opt (mannotate-align): Ignore option.
15958         * doc/invoke.texi (mannotate-align): Update description.
15960 2023-10-05  Richard Biener  <rguenther@suse.de>
15962         * tree-vect-slp.cc (vect_build_slp_tree_1): Do not
15963         ask for internal_fn_p (CFN_LAST).
15965 2023-10-05  Richard Biener  <rguenther@suse.de>
15967         * tree-ssa-sccvn.cc (rpo_elim::eliminate_avail): Not
15968         visited value numbers are available itself.
15970 2023-10-05  Richard Biener  <rguenther@suse.de>
15972         PR ipa/111643
15973         * doc/extend.texi (attribute flatten): Clarify.
15975 2023-10-04  Roger Sayle  <roger@nextmovesoftware.com>
15977         * config/arc/arc-protos.h (emit_shift): Delete prototype.
15978         (arc_pre_reload_split): New function prototype.
15979         * config/arc/arc.cc (emit_shift): Delete function.
15980         (arc_pre_reload_split): New predicate function, copied from i386,
15981         to schedule define_insn_and_split splitters to the split1 pass.
15982         * config/arc/arc.md (ashlsi3): Expand RTL template unconditionally.
15983         (ashrsi3): Likewise.
15984         (lshrsi3): Likewise.
15985         (shift_si3): Move after other shift patterns, and disable when
15986         operands[2] is one (which is handled by its own define_insn).
15987         Use shiftr4_operator, instead of shift4_operator, as this is no
15988         longer used for left shifts.
15989         (shift_si3_loop): Likewise.  Additionally remove match_scratch.
15990         (*ashlsi3_nobs): New pre-reload define_insn_and_split.
15991         (*ashrsi3_nobs): Likewise.
15992         (*lshrsi3_nobs): Likewise.
15993         (rotrsi3_cnt1): Rename define_insn from *rotrsi3_cnt1.
15994         (add_shift): Rename define_insn from *add_shift.
15995         * config/arc/predicates.md (shiftl4_operator): Delete.
15996         (shift4_operator): Delete.
15998 2023-10-04  Roger Sayle  <roger@nextmovesoftware.com>
16000         * config/arc/arc.md (ashlsi3_cnt1): Rename define_insn *ashlsi2_cnt1.
16001         Change type attribute to "unary", as this doesn't have operands[2].
16002         Change length attribute to "*,4" to allow compact representation.
16003         (lshrsi3_cnt1): Rename define_insn from *lshrsi3_cnt1.  Change
16004         insn type attribute to "unary", as this doesn't have operands[2].
16005         (ashrsi3_cnt1): Rename define_insn from *ashrsi3_cnt1.  Change
16006         insn type attribute to "unary", as this doesn't have operands[2].
16008 2023-10-04  Roger Sayle  <roger@nextmovesoftware.com>
16010         PR rtl-optimization/110701
16011         * combine.cc (record_dead_and_set_regs_1): Split comment into
16012         pieces placed before the relevant clauses.  When the SET_DEST
16013         is a partial_subreg_p, mark the bits outside of the updated
16014         portion of the destination as undefined.
16016 2023-10-04  Kito Cheng  <kito.cheng@sifive.com>
16018         PR bootstrap/111664
16019         * opt-read.awk: Drop multidimensional arrays.
16020         * opth-gen.awk: Ditto.
16022 2023-10-04  Xi Ruoyao  <xry111@xry111.site>
16024         * config/loongarch/loongarch.md (UNSPEC_FCOPYSIGN): Delete.
16025         (copysign<mode>3): Use copysign RTL instead of UNSPEC.
16027 2023-10-04  Jakub Jelinek  <jakub@redhat.com>
16029         PR middle-end/111369
16030         * match.pd (x == cstN ? cst4 : cst3): Use
16031         build_nonstandard_integer_type only if type1 is BOOLEAN_TYPE.
16032         Fix comment typo.  Formatting fix.
16033         (a?~t:t -> (-(a))^t): Always convert to type rather
16034         than using build_nonstandard_integer_type.  Perform negation
16035         only if type has precision > 1 and is not signed BOOLEAN_TYPE.
16037 2023-10-04  Jakub Jelinek  <jakub@redhat.com>
16039         PR tree-optimization/111668
16040         * match.pd (a ? CST1 : CST2): Handle the a ? -1 : 0 and
16041         a ? 0 : -1 cases before the powerof2cst cases and differentiate
16042         between 1-bit precision types, larger precision boolean types
16043         and other integral types.  Fix comment pastos and formatting.
16045 2023-10-03  Andrew MacLeod  <amacleod@redhat.com>
16047         * tree-ssanames.cc (set_range_info): Use get_ptr_info for
16048         pointers rather than range_info_get_range.
16050 2023-10-03  Martin Jambor  <mjambor@suse.cz>
16052         * ipa-modref.h (modref_summary::dump): Make const.
16053         * ipa-modref.cc (modref_summary::dump): Likewise.
16054         (dump_lto_records): Dump to out instead of dump_file.
16056 2023-10-03  Martin Jambor  <mjambor@suse.cz>
16058         PR ipa/110378
16059         * ipa-param-manipulation.cc
16060         (ipa_param_body_adjustments::mark_dead_statements): Verify that any
16061         return uses of PARAM will be removed.
16062         (ipa_param_body_adjustments::mark_clobbers_dead): Likewise.
16063         * ipa-sra.cc (isra_param_desc): New fields
16064         remove_only_when_retval_removed and split_only_when_retval_removed.
16065         (struct gensum_param_desc): Likewise.  Fix comment long line.
16066         (ipa_sra_function_summaries::duplicate): Copy the new flags.
16067         (dump_gensum_param_descriptor): Dump the new flags.
16068         (dump_isra_param_descriptor): Likewise.
16069         (isra_track_scalar_value_uses): New parameter desc.  Set its flag
16070         remove_only_when_retval_removed when encountering a simple return.
16071         (isra_track_scalar_param_local_uses): Replace parameter call_uses_p
16072         with desc.  Pass it to isra_track_scalar_value_uses and set its
16073         call_uses.
16074         (ptr_parm_has_nonarg_uses): Accept parameter descriptor as a
16075         parameter.  If there is a direct return use, mark any..
16076         (create_parameter_descriptors): Pass the whole parameter descriptor to
16077         isra_track_scalar_param_local_uses and ptr_parm_has_nonarg_uses.
16078         (process_scan_results): Copy the new flags.
16079         (isra_write_node_summary): Stream the new flags.
16080         (isra_read_node_info): Likewise.
16081         (adjust_parameter_descriptions): Check that transformations
16082         requring return removal only happen when return value is removed.
16083         Restructure main loop.  Adjust dump message.
16085 2023-10-03  Martin Jambor  <mjambor@suse.cz>
16087         PR ipa/108007
16088         * cgraph.h (cgraph_edge): Add a parameter to
16089         redirect_call_stmt_to_callee.
16090         * ipa-param-manipulation.h (ipa_param_adjustments): Add a
16091         parameter to modify_call.
16092         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee): New
16093         parameter killed_ssas, pass it to padjs->modify_call.
16094         * ipa-param-manipulation.cc (purge_transitive_uses): New function.
16095         (ipa_param_adjustments::modify_call): New parameter killed_ssas.
16096         Instead of substituting uses, invoke purge_transitive_uses.  If
16097         hash of killed SSAs has not been provided, create a temporary one
16098         and release SSAs that have been added to it.
16099         * tree-inline.cc (redirect_all_calls): Create
16100         id->killed_new_ssa_names earlier, pass it to edge redirection,
16101         adjust a comment.
16102         (copy_body): Release SSAs in id->killed_new_ssa_names.
16104 2023-10-03  Andrew MacLeod  <amacleod@redhat.com>
16106         * passes.def (pass_vrp): Pass "final pass" flag as parameter.
16107         * tree-vrp.cc (vrp_pass_num): Remove.
16108         (pass_vrp::my_pass): Remove.
16109         (pass_vrp::pass_vrp): Add warn_p as a parameter.
16110         (pass_vrp::final_p): New.
16111         (pass_vrp::set_pass_param): Set final_p param.
16112         (pass_vrp::execute): Call execute_range_vrp with no conditions.
16113         (make_pass_vrp): Pass additional parameter.
16114         (make_pass_early_vrp): Ditto.
16116 2023-10-03  Andrew MacLeod  <amacleod@redhat.com>
16118         * tree-ssanames.cc (set_range_info): Return true only if the
16119         current value changes.
16121 2023-10-03  David Malcolm  <dmalcolm@redhat.com>
16123         * diagnostic.cc (diagnostic_set_info_translated): Update for "m_"
16124         prefixes to text_info fields.
16125         (diagnostic_report_diagnostic): Likewise.
16126         (verbatim): Use text_info ctor.
16127         (simple_diagnostic_path::add_event): Likewise.
16128         (simple_diagnostic_path::add_thread_event): Likewise.
16129         * dumpfile.cc (dump_pretty_printer::decode_format): Update for
16130         "m_" prefixes to text_info fields.
16131         (dump_context::dump_printf_va): Use text_info ctor.
16132         * graphviz.cc (graphviz_out::graphviz_out): Use text_info ctor.
16133         (graphviz_out::print): Likewise.
16134         * opt-problem.cc (opt_problem::opt_problem): Likewise.
16135         * pretty-print.cc (pp_format): Update for "m_" prefixes to
16136         text_info fields.
16137         (pp_printf): Use text_info ctor.
16138         (pp_verbatim): Likewise.
16139         (assert_pp_format_va): Likewise.
16140         * pretty-print.h (struct text_info): Add ctors.  Add "m_" prefix
16141         to all fields.
16142         * text-art/styled-string.cc (styled_string::from_fmt_va): Use
16143         text_info ctor.
16144         * tree-diagnostic.cc (default_tree_printer): Update for "m_"
16145         prefixes to text_info fields.
16146         * tree-pretty-print.h (pp_ti_abstract_origin): Likewise.
16148 2023-10-03  Roger Sayle  <roger@nextmovesoftware.com>
16150         * config/arc/arc.md (CC_ltu): New mode iterator for CC and CC_C.
16151         (scc_ltu_<mode>): New define_insn to handle LTU form of scc_insn.
16152         (*scc_insn): Don't split to a conditional move sequence for LTU.
16154 2023-10-03  Andrea Corallo  <andrea.corallo@arm.com>
16156         * config/aarch64/aarch64.md (@ccmp<CC_ONLY:mode><GPI:mode>)
16157         (@ccmp<CC_ONLY:mode><GPI:mode>_rev, *call_insn, *call_value_insn)
16158         (*mov<mode>_aarch64, load_pair_sw_<SX:mode><SX2:mode>)
16159         (load_pair_dw_<DX:mode><DX2:mode>)
16160         (store_pair_sw_<SX:mode><SX2:mode>)
16161         (store_pair_dw_<DX:mode><DX2:mode>, *extendsidi2_aarch64)
16162         (*zero_extendsidi2_aarch64, *load_pair_zero_extendsidi2_aarch64)
16163         (*extend<SHORT:mode><GPI:mode>2_aarch64)
16164         (*zero_extend<SHORT:mode><GPI:mode>2_aarch64)
16165         (*extendqihi2_aarch64, *zero_extendqihi2_aarch64)
16166         (*add<mode>3_aarch64, *addsi3_aarch64_uxtw, *add<mode>3_poly_1)
16167         (add<mode>3_compare0, *addsi3_compare0_uxtw)
16168         (*add<mode>3_compareC_cconly, add<mode>3_compareC)
16169         (*add<mode>3_compareV_cconly_imm, add<mode>3_compareV_imm)
16170         (*add<mode>3nr_compare0, subdi3, subv<GPI:mode>_imm)
16171         (*cmpv<GPI:mode>_insn, sub<mode>3_compare1_imm, neg<mode>2)
16172         (cmp<mode>, fcmp<mode>, fcmpe<mode>, *cmov<mode>_insn)
16173         (*cmovsi_insn_uxtw, <optab><mode>3, *<optab>si3_uxtw)
16174         (*and<mode>3_compare0, *andsi3_compare0_uxtw, one_cmpl<mode>2)
16175         (*<NLOGICAL:optab>_one_cmpl<mode>3, *and<mode>3nr_compare0)
16176         (*aarch64_ashl_sisd_or_int_<mode>3)
16177         (*aarch64_lshr_sisd_or_int_<mode>3)
16178         (*aarch64_ashr_sisd_or_int_<mode>3, *ror<mode>3_insn)
16179         (*<optab>si3_insn_uxtw, <optab>_trunc<fcvt_target><GPI:mode>2)
16180         (<optab><fcvt_target><GPF:mode>2)
16181         (<FCVT_F2FIXED:fcvt_fixed_insn><GPF:mode>3)
16182         (<FCVT_FIXED2F:fcvt_fixed_insn><GPI:mode>3)
16183         (*aarch64_<optab><mode>3_cssc, copysign<GPF:mode>3_insn): Update
16184         to new syntax.
16185         * config/aarch64/aarch64-sve2.md (@aarch64_scatter_stnt<mode>)
16186         (@aarch64_scatter_stnt_<SVE_FULL_SDI:mode><SVE_PARTIAL_I:mode>)
16187         (*aarch64_mul_unpredicated_<mode>)
16188         (@aarch64_pred_<sve_int_op><mode>, *cond_<sve_int_op><mode>_2)
16189         (*cond_<sve_int_op><mode>_3, *cond_<sve_int_op><mode>_any)
16190         (*cond_<sve_int_op><mode>_z, @aarch64_pred_<sve_int_op><mode>)
16191         (*cond_<sve_int_op><mode>_2, *cond_<sve_int_op><mode>_3)
16192         (*cond_<sve_int_op><mode>_any, @aarch64_sve_<sve_int_op><mode>)
16193         (@aarch64_sve_<sve_int_op>_lane_<mode>)
16194         (@aarch64_sve_add_mul_lane_<mode>)
16195         (@aarch64_sve_sub_mul_lane_<mode>, @aarch64_sve2_xar<mode>)
16196         (*aarch64_sve2_bcax<mode>, @aarch64_sve2_eor3<mode>)
16197         (*aarch64_sve2_nor<mode>, *aarch64_sve2_nand<mode>)
16198         (*aarch64_sve2_bsl<mode>, *aarch64_sve2_nbsl<mode>)
16199         (*aarch64_sve2_bsl1n<mode>, *aarch64_sve2_bsl2n<mode>)
16200         (*aarch64_sve2_sra<mode>, @aarch64_sve_add_<sve_int_op><mode>)
16201         (*aarch64_sve2_<su>aba<mode>, @aarch64_sve_add_<sve_int_op><mode>)
16202         (@aarch64_sve_add_<sve_int_op>_lane_<mode>)
16203         (@aarch64_sve_qadd_<sve_int_op><mode>)
16204         (@aarch64_sve_qadd_<sve_int_op>_lane_<mode>)
16205         (@aarch64_sve_sub_<sve_int_op><mode>)
16206         (@aarch64_sve_sub_<sve_int_op>_lane_<mode>)
16207         (@aarch64_sve_qsub_<sve_int_op><mode>)
16208         (@aarch64_sve_qsub_<sve_int_op>_lane_<mode>)
16209         (@aarch64_sve_<sve_fp_op><mode>, @aarch64_<sve_fp_op>_lane_<mode>)
16210         (@aarch64_pred_<sve_int_op><mode>)
16211         (@aarch64_pred_<sve_fp_op><mode>, *cond_<sve_int_op><mode>_2)
16212         (*cond_<sve_int_op><mode>_z, @aarch64_sve_<optab><mode>)
16213         (@aarch64_<optab>_lane_<mode>, @aarch64_sve_<optab><mode>)
16214         (@aarch64_<optab>_lane_<mode>, @aarch64_pred_<sve_fp_op><mode>)
16215         (*cond_<sve_fp_op><mode>_any_relaxed)
16216         (*cond_<sve_fp_op><mode>_any_strict)
16217         (@aarch64_pred_<sve_int_op><mode>, *cond_<sve_int_op><mode>)
16218         (@aarch64_pred_<sve_fp_op><mode>, *cond_<sve_fp_op><mode>)
16219         (*cond_<sve_fp_op><mode>_strict): Update to new syntax.
16220         * config/aarch64/aarch64-sve.md (*aarch64_sve_mov<mode>_ldr_str)
16221         (*aarch64_sve_mov<mode>_no_ldr_str, @aarch64_pred_mov<mode>)
16222         (*aarch64_sve_mov<mode>, aarch64_wrffr)
16223         (mask_scatter_store<mode><v_int_container>)
16224         (*mask_scatter_store<mode><v_int_container>_<su>xtw_unpacked)
16225         (*mask_scatter_store<mode><v_int_container>_sxtw)
16226         (*mask_scatter_store<mode><v_int_container>_uxtw)
16227         (@aarch64_scatter_store_trunc<VNx4_NARROW:mode><VNx4_WIDE:mode>)
16228         (@aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>)
16229         (*aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>_sxtw)
16230         (*aarch64_scatter_store_trunc<VNx2_NARROW:mode><VNx2_WIDE:mode>_uxtw)
16231         (*vec_duplicate<mode>_reg, vec_shl_insert_<mode>)
16232         (vec_series<mode>, @extract_<last_op>_<mode>)
16233         (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2)
16234         (*cond_<optab><mode>_any, @aarch64_pred_<optab><mode>)
16235         (@aarch64_sve_revbhw_<SVE_ALL:mode><PRED_HSD:mode>)
16236         (@cond_<optab><mode>)
16237         (*<optab><SVE_PARTIAL_I:mode><SVE_HSDI:mode>2)
16238         (@aarch64_pred_sxt<SVE_FULL_HSDI:mode><SVE_PARTIAL_I:mode>)
16239         (@aarch64_cond_sxt<SVE_FULL_HSDI:mode><SVE_PARTIAL_I:mode>)
16240         (*cond_uxt<mode>_2, *cond_uxt<mode>_any, *cnot<mode>)
16241         (*cond_cnot<mode>_2, *cond_cnot<mode>_any)
16242         (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2_relaxed)
16243         (*cond_<optab><mode>_2_strict, *cond_<optab><mode>_any_relaxed)
16244         (*cond_<optab><mode>_any_strict, @aarch64_pred_<optab><mode>)
16245         (*cond_<optab><mode>_2, *cond_<optab><mode>_3)
16246         (*cond_<optab><mode>_any, add<mode>3, sub<mode>3)
16247         (@aarch64_pred_<su>abd<mode>, *aarch64_cond_<su>abd<mode>_2)
16248         (*aarch64_cond_<su>abd<mode>_3, *aarch64_cond_<su>abd<mode>_any)
16249         (@aarch64_sve_<optab><mode>, @aarch64_pred_<optab><mode>)
16250         (*cond_<optab><mode>_2, *cond_<optab><mode>_z)
16251         (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2)
16252         (*cond_<optab><mode>_3, *cond_<optab><mode>_any, <optab><mode>3)
16253         (*cond_bic<mode>_2, *cond_bic<mode>_any)
16254         (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2_const)
16255         (*cond_<optab><mode>_any_const, *cond_<sve_int_op><mode>_m)
16256         (*cond_<sve_int_op><mode>_z, *sdiv_pow2<mode>3)
16257         (*cond_<sve_int_op><mode>_2, *cond_<sve_int_op><mode>_any)
16258         (@aarch64_pred_<optab><mode>, *cond_<optab><mode>_2_relaxed)
16259         (*cond_<optab><mode>_2_strict, *cond_<optab><mode>_any_relaxed)
16260         (*cond_<optab><mode>_any_strict, @aarch64_pred_<optab><mode>)
16261         (*cond_<optab><mode>_2_relaxed, *cond_<optab><mode>_2_strict)
16262         (*cond_<optab><mode>_2_const_relaxed)
16263         (*cond_<optab><mode>_2_const_strict)
16264         (*cond_<optab><mode>_3_relaxed, *cond_<optab><mode>_3_strict)
16265         (*cond_<optab><mode>_any_relaxed, *cond_<optab><mode>_any_strict)
16266         (*cond_<optab><mode>_any_const_relaxed)
16267         (*cond_<optab><mode>_any_const_strict)
16268         (@aarch64_pred_<optab><mode>, *cond_add<mode>_2_const_relaxed)
16269         (*cond_add<mode>_2_const_strict)
16270         (*cond_add<mode>_any_const_relaxed)
16271         (*cond_add<mode>_any_const_strict, @aarch64_pred_<optab><mode>)
16272         (*cond_<optab><mode>_2_relaxed, *cond_<optab><mode>_2_strict)
16273         (*cond_<optab><mode>_any_relaxed, *cond_<optab><mode>_any_strict)
16274         (@aarch64_pred_<optab><mode>, *cond_sub<mode>_3_const_relaxed)
16275         (*cond_sub<mode>_3_const_strict, *cond_sub<mode>_const_relaxed)
16276         (*cond_sub<mode>_const_strict, *aarch64_pred_abd<mode>_relaxed)
16277         (*aarch64_pred_abd<mode>_strict)
16278         (*aarch64_cond_abd<mode>_2_relaxed)
16279         (*aarch64_cond_abd<mode>_2_strict)
16280         (*aarch64_cond_abd<mode>_3_relaxed)
16281         (*aarch64_cond_abd<mode>_3_strict)
16282         (*aarch64_cond_abd<mode>_any_relaxed)
16283         (*aarch64_cond_abd<mode>_any_strict, @aarch64_pred_<optab><mode>)
16284         (@aarch64_pred_fma<mode>, *cond_fma<mode>_2, *cond_fma<mode>_4)
16285         (*cond_fma<mode>_any, @aarch64_pred_fnma<mode>)
16286         (*cond_fnma<mode>_2, *cond_fnma<mode>_4, *cond_fnma<mode>_any)
16287         (<sur>dot_prod<vsi2qi>, @aarch64_<sur>dot_prod_lane<vsi2qi>)
16288         (@<sur>dot_prod<vsi2qi>, @aarch64_<sur>dot_prod_lane<vsi2qi>)
16289         (@aarch64_sve_add_<optab><vsi2qi>, @aarch64_pred_<optab><mode>)
16290         (*cond_<optab><mode>_2_relaxed, *cond_<optab><mode>_2_strict)
16291         (*cond_<optab><mode>_4_relaxed, *cond_<optab><mode>_4_strict)
16292         (*cond_<optab><mode>_any_relaxed, *cond_<optab><mode>_any_strict)
16293         (@aarch64_<optab>_lane_<mode>, @aarch64_pred_<optab><mode>)
16294         (*cond_<optab><mode>_4_relaxed, *cond_<optab><mode>_4_strict)
16295         (*cond_<optab><mode>_any_relaxed, *cond_<optab><mode>_any_strict)
16296         (@aarch64_<optab>_lane_<mode>, @aarch64_sve_tmad<mode>)
16297         (@aarch64_sve_<sve_fp_op>vnx4sf)
16298         (@aarch64_sve_<sve_fp_op>_lanevnx4sf)
16299         (@aarch64_sve_<sve_fp_op><mode>, *vcond_mask_<mode><vpred>)
16300         (@aarch64_sel_dup<mode>, @aarch64_pred_cmp<cmp_op><mode>)
16301         (*cmp<cmp_op><mode>_cc, *cmp<cmp_op><mode>_ptest)
16302         (@aarch64_pred_fcm<cmp_op><mode>, @fold_extract_<last_op>_<mode>)
16303         (@aarch64_fold_extract_vector_<last_op>_<mode>)
16304         (@aarch64_sve_splice<mode>)
16305         (@aarch64_sve_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>)
16306         (@aarch64_sve_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>)
16307         (*cond_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>_relaxed)
16308         (*cond_<optab>_nontrunc<SVE_FULL_F:mode><SVE_FULL_HSDI:mode>_strict)
16309         (*cond_<optab>_trunc<VNx2DF_ONLY:mode><VNx4SI_ONLY:mode>)
16310         (@aarch64_sve_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>)
16311         (@aarch64_sve_<optab>_extend<VNx4SI_ONLY:mode><VNx2DF_ONLY:mode>)
16312         (*cond_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>_relaxed)
16313         (*cond_<optab>_nonextend<SVE_FULL_HSDI:mode><SVE_FULL_F:mode>_strict)
16314         (*cond_<optab>_extend<VNx4SI_ONLY:mode><VNx2DF_ONLY:mode>)
16315         (@aarch64_sve_<optab>_trunc<SVE_FULL_SDF:mode><SVE_FULL_HSF:mode>)
16316         (*cond_<optab>_trunc<SVE_FULL_SDF:mode><SVE_FULL_HSF:mode>)
16317         (@aarch64_sve_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>)
16318         (*cond_<optab>_trunc<VNx4SF_ONLY:mode><VNx8BF_ONLY:mode>)
16319         (@aarch64_sve_<optab>_nontrunc<SVE_FULL_HSF:mode><SVE_FULL_SDF:mode>)
16320         (*cond_<optab>_nontrunc<SVE_FULL_HSF:mode><SVE_FULL_SDF:mode>)
16321         (@aarch64_brk<brk_op>, *aarch64_sve_<inc_dec><mode>_cntp): Update
16322         to new syntax.
16323         * config/aarch64/aarch64-simd.md (aarch64_simd_dup<mode>)
16324         (load_pair<DREG:mode><DREG2:mode>)
16325         (vec_store_pair<DREG:mode><DREG2:mode>, aarch64_simd_stp<mode>)
16326         (aarch64_simd_mov_from_<mode>low)
16327         (aarch64_simd_mov_from_<mode>high, and<mode>3<vczle><vczbe>)
16328         (ior<mode>3<vczle><vczbe>, aarch64_simd_ashr<mode><vczle><vczbe>)
16329         (aarch64_simd_bsl<mode>_internal<vczle><vczbe>)
16330         (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>)
16331         (aarch64_simd_bsldi_internal, aarch64_simd_bsldi_alt)
16332         (store_pair_lanes<mode>, *aarch64_combine_internal<mode>)
16333         (*aarch64_combine_internal_be<mode>, *aarch64_combinez<mode>)
16334         (*aarch64_combinez_be<mode>)
16335         (aarch64_cm<optab><mode><vczle><vczbe>, *aarch64_cm<optab>di)
16336         (aarch64_cm<optab><mode><vczle><vczbe>, *aarch64_mov<mode>)
16337         (*aarch64_be_mov<mode>, *aarch64_be_movoi): Update to new syntax.
16339 2023-10-03  Andrea Corallo  <andrea.corallo@arm.com>
16341         * gensupport.cc (convert_syntax): Skip spaces before "cons:"
16342         in new compact pattern syntax.
16344 2023-10-03  Richard Sandiford  <richard.sandiford@arm.com>
16346         * gensupport.cc (convert_syntax): Updated to support unordered
16347         constraints in compact syntax.
16349 2023-10-02  Michael Meissner  <meissner@linux.ibm.com>
16351         * config/rs6000/rs6000.md (UNSPEC_COPYSIGN): Delete.
16352         (copysign<mode>3_fcpsg): Use copysign RTL instead of UNSPEC.
16353         (copysign<mode>3_hard): Likewise.
16354         (copysign<mode>3_soft): Likewise.
16355         * config/rs6000/vector.md (vector_copysign<mode>3): Use copysign RTL
16356         instead of UNSPEC.
16357         * config/rs6000/vsx.md (vsx_copysign<mode>3): Use copysign RTL instead
16358         of UNSPEC.
16360 2023-10-02  David Malcolm  <dmalcolm@redhat.com>
16362         * diagnostic-format-json.cc (toplevel_array): Remove global in
16363         favor of json_output_format::m_top_level_array.
16364         (cur_group): Likewise, for json_output_format::m_cur_group.
16365         (cur_children_array): Likewise, for
16366         json_output_format::m_cur_children_array.
16367         (class json_output_format): New.
16368         (json_begin_diagnostic): Remove, in favor of
16369         json_output_format::on_begin_diagnostic.
16370         (json_end_diagnostic): Convert to...
16371         (json_output_format::on_end_diagnostic): ...this.
16372         (json_begin_group): Remove, in favor of
16373         json_output_format::on_begin_group.
16374         (json_end_group): Remove, in favor of
16375         json_output_format::on_end_group.
16376         (json_flush_to_file): Remove, in favor of
16377         json_output_format::flush_to_file.
16378         (json_stderr_final_cb): Remove, in favor of json_output_format
16379         dtor.
16380         (json_output_base_file_name): Remove global.
16381         (class json_stderr_output_format): New.
16382         (json_file_final_cb): Remove.
16383         (class json_file_output_format): New.
16384         (json_emit_diagram): Remove.
16385         (diagnostic_output_format_init_json): Update.
16386         (diagnostic_output_format_init_json_file): Update.
16387         * diagnostic-format-sarif.cc (the_builder): Remove this global,
16388         moving to a field of the sarif_output_format.
16389         (sarif_builder::maybe_make_artifact_content_object): Use the
16390         context's m_file_cache.
16391         (get_source_lines): Convert to...
16392         (sarif_builder::get_source_lines): ...this, using context's
16393         m_file_cache.
16394         (sarif_begin_diagnostic): Remove, in favor of
16395         sarif_output_format::on_begin_diagnostic.
16396         (sarif_end_diagnostic): Remove, in favor of
16397         sarif_output_format::on_end_diagnostic.
16398         (sarif_begin_group): Remove, in favor of
16399         sarif_output_format::on_begin_group.
16400         (sarif_end_group): Remove, in favor of
16401         sarif_output_format::on_end_group.
16402         (sarif_flush_to_file): Delete.
16403         (sarif_stderr_final_cb): Delete.
16404         (sarif_output_base_file_name): Delete.
16405         (sarif_file_final_cb): Delete.
16406         (class sarif_output_format): New.
16407         (sarif_emit_diagram): Delete.
16408         (class sarif_stream_output_format): New.
16409         (class sarif_file_output_format): New.
16410         (diagnostic_output_format_init_sarif): Update.
16411         (diagnostic_output_format_init_sarif_stderr): Update.
16412         (diagnostic_output_format_init_sarif_file): Update.
16413         (diagnostic_output_format_init_sarif_stream): Update.
16414         * diagnostic-show-locus.cc (diagnostic_show_locus): Update.
16415         * diagnostic.cc (default_diagnostic_final_cb): Delete, moving to
16416         diagnostic_text_output_format's dtor.
16417         (diagnostic_initialize): Update, making a new instance of
16418         diagnostic_text_output_format.
16419         (diagnostic_finish): Delete m_output_format, rather than calling
16420         final_cb.
16421         (diagnostic_report_diagnostic): Assert that m_output_format is
16422         non-NULL.  Replace call to begin_group_cb with call to
16423         m_output_format->on_begin_group.  Replace call to
16424         diagnostic_starter with call to
16425         m_output_format->on_begin_diagnostic.  Replace call to
16426         diagnostic_finalizer with call to
16427         m_output_format->on_end_diagnostic.
16428         (diagnostic_emit_diagram): Replace both optional call to
16429         m_diagrams.m_emission_cb and default implementation with call to
16430         m_output_format->on_diagram.  Move default implementation to
16431         diagnostic_text_output_format::on_diagram.
16432         (auto_diagnostic_group::~auto_diagnostic_group): Replace call to
16433         end_group_cb with call to m_output_format->on_end_group.
16434         (diagnostic_text_output_format::~diagnostic_text_output_format):
16435         New, based on default_diagnostic_final_cb.
16436         (diagnostic_text_output_format::on_begin_diagnostic): New, based
16437         on code from diagnostic_report_diagnostic.
16438         (diagnostic_text_output_format::on_end_diagnostic): Likewise.
16439         (diagnostic_text_output_format::on_diagram): New, based on code
16440         from diagnostic_emit_diagram.
16441         * diagnostic.h (class diagnostic_output_format): New.
16442         (class diagnostic_text_output_format): New.
16443         (diagnostic_context::begin_diagnostic): Move to...
16444         (diagnostic_context::m_text_callbacks::begin_diagnostic): ...here.
16445         (diagnostic_context::start_span): Move to...
16446         (diagnostic_context::m_text_callbacks::start_span): ...here.
16447         (diagnostic_context::end_diagnostic): Move to...
16448         (diagnostic_context::m_text_callbacks::end_diagnostic): ...here.
16449         (diagnostic_context::begin_group_cb): Remove, in favor of
16450         m_output_format->on_begin_group.
16451         (diagnostic_context::end_group_cb): Remove, in favor of
16452         m_output_format->on_end_group.
16453         (diagnostic_context::final_cb): Remove, in favor of
16454         m_output_format's dtor.
16455         (diagnostic_context::m_output_format): New field.
16456         (diagnostic_context::m_diagrams.m_emission_cb): Remove, in favor
16457         of m_output_format->on_diagram.
16458         (diagnostic_starter): Update.
16459         (diagnostic_finalizer): Update.
16460         (diagnostic_output_format_init_sarif_stream): New.
16461         * input.cc (location_get_source_line): Move implementation apart from
16462         call to diagnostic_file_cache_init to...
16463         (file_cache::get_source_line): ...this new function...
16464         (location_get_source_line): ...and reintroduce, rewritten in terms of
16465         file_cache::get_source_line.
16466         (get_source_file_content): Likewise, refactor into...
16467         (file_cache::get_source_file_content): ...this new function.
16468         * input.h (file_cache::get_source_line): New decl.
16469         (file_cache::get_source_file_content): New decl.
16470         * selftest-diagnostic.cc
16471         (test_diagnostic_context::test_diagnostic_context): Update.
16472         * tree-diagnostic-path.cc (event_range::print): Update for
16473         change to diagnostic_context's start_span callback.
16475 2023-10-02  David Malcolm  <dmalcolm@redhat.com>
16477         * diagnostic-show-locus.cc: Update for reorganization of
16478         source-printing fields of diagnostic_context.
16479         * diagnostic.cc (diagnostic_set_caret_max_width): Likewise.
16480         (diagnostic_initialize): Likewise.
16481         * diagnostic.h (diagnostic_context::show_caret): Move to...
16482         (diagnostic_context::m_source_printing::enabled): ...here.
16483         (diagnostic_context::caret_max_width): Move to...
16484         (diagnostic_context::m_source_printing::max_width): ...here.
16485         (diagnostic_context::caret_chars): Move to...
16486         (diagnostic_context::m_source_printing::caret_chars): ...here.
16487         (diagnostic_context::colorize_source_p): Move to...
16488         (diagnostic_context::m_source_printing::colorize_source_p): ...here.
16489         (diagnostic_context::show_labels_p): Move to...
16490         (diagnostic_context::m_source_printing::show_labels_p): ...here.
16491         (diagnostic_context::show_line_numbers_p): Move to...
16492         (diagnostic_context::m_source_printing::show_line_numbers_p): ...here.
16493         (diagnostic_context::min_margin_width): Move to...
16494         (diagnostic_context::m_source_printing::min_margin_width): ...here.
16495         (diagnostic_context::show_ruler_p): Move to...
16496         (diagnostic_context::m_source_printing::show_ruler_p): ...here.
16497         (diagnostic_same_line): Update for above changes.
16498         * opts.cc (common_handle_option): Update for reorganization of
16499         source-printing fields of diagnostic_context.
16500         * selftest-diagnostic.cc
16501         (test_diagnostic_context::test_diagnostic_context): Likewise.
16502         * toplev.cc (general_init): Likewise.
16503         * tree-diagnostic-path.cc (struct event_range): Likewise.
16505 2023-10-02  David Malcolm  <dmalcolm@redhat.com>
16507         * diagnostic.cc (diagnostic_initialize): Initialize
16508         set_locations_cb to nullptr.
16510 2023-10-02  Wilco Dijkstra  <wilco.dijkstra@arm.com>
16512         PR target/111235
16513         * config/arm/constraints.md: Remove Pf constraint.
16514         * config/arm/sync.md (arm_atomic_load<mode>): Add new pattern.
16515         (arm_atomic_load_acquire<mode>): Likewise.
16516         (arm_atomic_store<mode>): Likewise.
16517         (arm_atomic_store_release<mode>): Likewise.
16518         (atomic_load<mode>): Switch patterns to define_expand.
16519         (atomic_store<mode>): Likewise.
16520         (arm_atomic_loaddi2_ldrd): Remove predication.
16521         (arm_load_exclusive<mode>): Likewise.
16522         (arm_load_acquire_exclusive<mode>): Likewise.
16523         (arm_load_exclusivesi): Likewise.
16524         (arm_load_acquire_exclusivesi): Likewise.
16525         (arm_load_exclusivedi): Likewise.
16526         (arm_load_acquire_exclusivedi): Likewise.
16527         (arm_store_exclusive<mode>): Likewise.
16528         (arm_store_release_exclusivedi): Likewise.
16529         (arm_store_release_exclusive<mode>): Likewise.
16530         * config/arm/unspecs.md: Add VUNSPEC_LDR and VUNSPEC_STR.
16532 2023-10-02  Tamar Christina  <tamar.christina@arm.com>
16534         Revert:
16535         2023-10-02  Tamar Christina  <tamar.christina@arm.com>
16537         PR tree-optimization/109154
16538         * tree-if-conv.cc (INCLUDE_ALGORITHM): Remove.
16539         (cmp_arg_entry): New.
16540         (predicate_scalar_phi): Use it.
16542 2023-10-02  Tamar Christina  <tamar.christina@arm.com>
16544         * config/aarch64/aarch64-simd.md (xorsign<mode>3): Renamed to..
16545         (@xorsign<mode>3): ...This.
16546         * config/aarch64/aarch64.md (xorsign<mode>3): Renamed to...
16547         (@xorsign<mode>3): ..This and emit vectors directly
16548         * config/aarch64/iterators.md (VCONQ): Add SF and DF.
16550 2023-10-02  Tamar Christina  <tamar.christina@arm.com>
16552         * emit-rtl.cc (validate_subreg): Relax subreg rule.
16554 2023-10-02  Tamar Christina  <tamar.christina@arm.com>
16556         PR tree-optimization/109154
16557         * tree-if-conv.cc (INCLUDE_ALGORITHM): Remove.
16558         (cmp_arg_entry): New.
16559         (predicate_scalar_phi): Use it.
16561 2023-10-02  Richard Sandiford  <richard.sandiford@arm.com>
16563         PR bootstrap/111642
16564         * rtl-tests.cc (const_poly_int_tests<N>::run): Use a local
16565         poly_int64 typedef.
16566         * simplify-rtx.cc (simplify_const_poly_int_tests<N>::run): Likewise.
16568 2023-10-02  Joern Rennecke  <joern.rennecke@embecosm.com>
16569             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16571         * config/riscv/riscv-protos.h (riscv_vector::expand_block_move):
16572         Declare.
16573         * config/riscv/riscv-v.cc (riscv_vector::expand_block_move):
16574         New function.
16575         * config/riscv/riscv.md (cpymemsi): Use riscv_vector::expand_block_move.
16576         Change to ..
16577         (cpymem<P:mode>) .. this.
16579 2023-10-01  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
16581         * combine.cc (simplify_compare_const): Properly handle unsigned
16582         constants while narrowing comparison of memory and constants.
16584 2023-10-01  Feng Wang  <wangfeng@eswincomputing.com>
16586         * config/riscv/riscv-opts.h (MASK_ZICSR): Delete.
16587         (MASK_ZIFENCEI): Delete;
16588         (MASK_ZIHINTNTL): Ditto.
16589         (MASK_ZIHINTPAUSE): Ditto.
16590         (TARGET_ZICSR): Ditto.
16591         (TARGET_ZIFENCEI): Ditto.
16592         (TARGET_ZIHINTNTL): Ditto.
16593         (TARGET_ZIHINTPAUSE): Ditto.
16594         (MASK_ZAWRS): Ditto.
16595         (TARGET_ZAWRS): Ditto.
16596         (MASK_ZBA): Ditto.
16597         (MASK_ZBB): Ditto.
16598         (MASK_ZBC): Ditto.
16599         (MASK_ZBS): Ditto.
16600         (TARGET_ZBA): Ditto.
16601         (TARGET_ZBB): Ditto.
16602         (TARGET_ZBC): Ditto.
16603         (TARGET_ZBS): Ditto.
16604         (MASK_ZFINX): Ditto.
16605         (MASK_ZDINX): Ditto.
16606         (MASK_ZHINX): Ditto.
16607         (MASK_ZHINXMIN): Ditto.
16608         (TARGET_ZFINX): Ditto.
16609         (TARGET_ZDINX): Ditto.
16610         (TARGET_ZHINX): Ditto.
16611         (TARGET_ZHINXMIN): Ditto.
16612         (MASK_ZBKB): Ditto.
16613         (MASK_ZBKC): Ditto.
16614         (MASK_ZBKX): Ditto.
16615         (MASK_ZKNE): Ditto.
16616         (MASK_ZKND): Ditto.
16617         (MASK_ZKNH): Ditto.
16618         (MASK_ZKR): Ditto.
16619         (MASK_ZKSED): Ditto.
16620         (MASK_ZKSH): Ditto.
16621         (MASK_ZKT): Ditto.
16622         (TARGET_ZBKB): Ditto.
16623         (TARGET_ZBKC): Ditto.
16624         (TARGET_ZBKX): Ditto.
16625         (TARGET_ZKNE): Ditto.
16626         (TARGET_ZKND): Ditto.
16627         (TARGET_ZKNH): Ditto.
16628         (TARGET_ZKR): Ditto.
16629         (TARGET_ZKSED): Ditto.
16630         (TARGET_ZKSH): Ditto.
16631         (TARGET_ZKT): Ditto.
16632         (MASK_ZTSO): Ditto.
16633         (TARGET_ZTSO): Ditto.
16634         (MASK_VECTOR_ELEN_32): Ditto.
16635         (MASK_VECTOR_ELEN_64): Ditto.
16636         (MASK_VECTOR_ELEN_FP_32): Ditto.
16637         (MASK_VECTOR_ELEN_FP_64): Ditto.
16638         (MASK_VECTOR_ELEN_FP_16): Ditto.
16639         (TARGET_VECTOR_ELEN_32): Ditto.
16640         (TARGET_VECTOR_ELEN_64): Ditto.
16641         (TARGET_VECTOR_ELEN_FP_32): Ditto.
16642         (TARGET_VECTOR_ELEN_FP_64): Ditto.
16643         (TARGET_VECTOR_ELEN_FP_16): Ditto.
16644         (MASK_ZVBB): Ditto.
16645         (MASK_ZVBC): Ditto.
16646         (TARGET_ZVBB): Ditto.
16647         (TARGET_ZVBC): Ditto.
16648         (MASK_ZVKG): Ditto.
16649         (MASK_ZVKNED): Ditto.
16650         (MASK_ZVKNHA): Ditto.
16651         (MASK_ZVKNHB): Ditto.
16652         (MASK_ZVKSED): Ditto.
16653         (MASK_ZVKSH): Ditto.
16654         (MASK_ZVKN): Ditto.
16655         (MASK_ZVKNC): Ditto.
16656         (MASK_ZVKNG): Ditto.
16657         (MASK_ZVKS): Ditto.
16658         (MASK_ZVKSC): Ditto.
16659         (MASK_ZVKSG): Ditto.
16660         (MASK_ZVKT): Ditto.
16661         (TARGET_ZVKG): Ditto.
16662         (TARGET_ZVKNED): Ditto.
16663         (TARGET_ZVKNHA): Ditto.
16664         (TARGET_ZVKNHB): Ditto.
16665         (TARGET_ZVKSED): Ditto.
16666         (TARGET_ZVKSH): Ditto.
16667         (TARGET_ZVKN): Ditto.
16668         (TARGET_ZVKNC): Ditto.
16669         (TARGET_ZVKNG): Ditto.
16670         (TARGET_ZVKS): Ditto.
16671         (TARGET_ZVKSC): Ditto.
16672         (TARGET_ZVKSG): Ditto.
16673         (TARGET_ZVKT): Ditto.
16674         (MASK_ZVL32B): Ditto.
16675         (MASK_ZVL64B): Ditto.
16676         (MASK_ZVL128B): Ditto.
16677         (MASK_ZVL256B): Ditto.
16678         (MASK_ZVL512B): Ditto.
16679         (MASK_ZVL1024B): Ditto.
16680         (MASK_ZVL2048B): Ditto.
16681         (MASK_ZVL4096B): Ditto.
16682         (MASK_ZVL8192B): Ditto.
16683         (MASK_ZVL16384B): Ditto.
16684         (MASK_ZVL32768B): Ditto.
16685         (MASK_ZVL65536B): Ditto.
16686         (TARGET_ZVL32B): Ditto.
16687         (TARGET_ZVL64B): Ditto.
16688         (TARGET_ZVL128B): Ditto.
16689         (TARGET_ZVL256B): Ditto.
16690         (TARGET_ZVL512B): Ditto.
16691         (TARGET_ZVL1024B): Ditto.
16692         (TARGET_ZVL2048B): Ditto.
16693         (TARGET_ZVL4096B): Ditto.
16694         (TARGET_ZVL8192B): Ditto.
16695         (TARGET_ZVL16384B): Ditto.
16696         (TARGET_ZVL32768B): Ditto.
16697         (TARGET_ZVL65536B): Ditto.
16698         (MASK_ZICBOZ): Ditto.
16699         (MASK_ZICBOM): Ditto.
16700         (MASK_ZICBOP): Ditto.
16701         (TARGET_ZICBOZ): Ditto.
16702         (TARGET_ZICBOM): Ditto.
16703         (TARGET_ZICBOP): Ditto.
16704         (MASK_ZICOND): Ditto.
16705         (TARGET_ZICOND): Ditto.
16706         (MASK_ZFA): Ditto.
16707         (TARGET_ZFA): Ditto.
16708         (MASK_ZFHMIN): Ditto.
16709         (MASK_ZFH): Ditto.
16710         (MASK_ZVFHMIN): Ditto.
16711         (MASK_ZVFH): Ditto.
16712         (TARGET_ZFHMIN): Ditto.
16713         (TARGET_ZFH): Ditto.
16714         (TARGET_ZVFHMIN): Ditto.
16715         (TARGET_ZVFH): Ditto.
16716         (MASK_ZMMUL): Ditto.
16717         (TARGET_ZMMUL): Ditto.
16718         (MASK_ZCA): Ditto.
16719         (MASK_ZCB): Ditto.
16720         (MASK_ZCE): Ditto.
16721         (MASK_ZCF): Ditto.
16722         (MASK_ZCD): Ditto.
16723         (MASK_ZCMP): Ditto.
16724         (MASK_ZCMT): Ditto.
16725         (TARGET_ZCA): Ditto.
16726         (TARGET_ZCB): Ditto.
16727         (TARGET_ZCE): Ditto.
16728         (TARGET_ZCF): Ditto.
16729         (TARGET_ZCD): Ditto.
16730         (TARGET_ZCMP): Ditto.
16731         (TARGET_ZCMT): Ditto.
16732         (MASK_SVINVAL): Ditto.
16733         (MASK_SVNAPOT): Ditto.
16734         (TARGET_SVINVAL): Ditto.
16735         (TARGET_SVNAPOT): Ditto.
16736         (MASK_XTHEADBA): Ditto.
16737         (MASK_XTHEADBB): Ditto.
16738         (MASK_XTHEADBS): Ditto.
16739         (MASK_XTHEADCMO): Ditto.
16740         (MASK_XTHEADCONDMOV): Ditto.
16741         (MASK_XTHEADFMEMIDX): Ditto.
16742         (MASK_XTHEADFMV): Ditto.
16743         (MASK_XTHEADINT): Ditto.
16744         (MASK_XTHEADMAC): Ditto.
16745         (MASK_XTHEADMEMIDX): Ditto.
16746         (MASK_XTHEADMEMPAIR): Ditto.
16747         (MASK_XTHEADSYNC): Ditto.
16748         (TARGET_XTHEADBA): Ditto.
16749         (TARGET_XTHEADBB): Ditto.
16750         (TARGET_XTHEADBS): Ditto.
16751         (TARGET_XTHEADCMO): Ditto.
16752         (TARGET_XTHEADCONDMOV): Ditto.
16753         (TARGET_XTHEADFMEMIDX): Ditto.
16754         (TARGET_XTHEADFMV): Ditto.
16755         (TARGET_XTHEADINT): Ditto.
16756         (TARGET_XTHEADMAC): Ditto.
16757         (TARGET_XTHEADMEMIDX): Ditto.
16758         (TARGET_XTHEADMEMPAIR): Ditto.
16759         (TARGET_XTHEADSYNC): Ditto.
16760         (MASK_XVENTANACONDOPS): Ditto.
16761         (TARGET_XVENTANACONDOPS): Ditto.
16762         * config/riscv/riscv.opt: Add new Mask defination.
16763         * doc/options.texi: Add explanation for this new usage.
16764         * opt-functions.awk: Add new function to find the index
16765         of target variable from extra_target_vars.
16766         * opt-read.awk: Add new function to store the Mask flags.
16767         * opth-gen.awk: Add new function to output the defination of
16768         Mask Macro and Target Macro.
16770 2023-10-01  Joern Rennecke  <joern.rennecke@embecosm.com>
16771             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
16772             Juzhe-Zhong   <juzhe.zhong@rivai.ai>
16774         PR target/111566
16775         * config/riscv/riscv-protos.h (riscv_vector::legitimize_move):
16776         Change second parameter to rtx *.
16777         * config/riscv/riscv-v.cc (risv_vector::legitimize_move): Likewise.
16778         * config/riscv/vector.md: Changed callers of
16779         riscv_vector::legitimize_move.
16780         (*mov<mode>_mem_to_mem): Remove.
16782 2023-09-30  Jakub Jelinek  <jakub@redhat.com>
16784         PR target/111649
16785         * config/riscv/riscv-vsetvl.cc (vector_infos_manager::vector_infos_manager):
16786         Replace safe_grow with safe_grow_cleared.
16788 2023-09-30  Jakub Jelinek  <jakub@redhat.com>
16790         * gimple-match-head.cc (gimple_bitwise_inverted_equal_p): Fix a pasto
16791         in function comment.
16793 2023-09-30  Jakub Jelinek  <jakub@redhat.com>
16795         PR middle-end/111625
16796         PR middle-end/111637
16797         * gimple-lower-bitint.cc (range_to_prec): Use prec or -prec if
16798         r.undefined_p ().
16799         (bitint_large_huge::handle_operand_addr): For uninitialized operands
16800         use limb_prec or -limb_prec precision.
16802 2023-09-30  Jakub Jelinek  <jakub@redhat.com>
16804         * vec.h (quick_grow): Uncomment static_assert.
16806 2023-09-30  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
16808         * config/riscv/bitmanip.md (*<optab>_not_const<mode>): Added type attribute
16810 2023-09-29  Xiao Zeng  <zengxiao@eswincomputing.com>
16812         * config/riscv/riscv.cc (riscv_rtx_costs): Better handle costing
16813         SETs when the outer code is INSN.
16815 2023-09-29  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
16817         * config/riscv/bitmanip.md (*<optab>_not_const<mode>): New split
16818         pattern.
16820 2023-09-29  Richard Sandiford  <richard.sandiford@arm.com>
16822         * poly-int.h (poly_int_pod): Delete.
16823         (poly_coeff_traits::init_cast): New type.
16824         (poly_int_full, poly_int_hungry, poly_int_fullness): New structures.
16825         (poly_int): Replace constructors that take 1 and 2 coefficients with
16826         a general one that takes an arbitrary number of coefficients.
16827         Delegate initialization to two new private constructors, one of
16828         which uses the coefficients as-is and one of which adds an extra
16829         zero of the appropriate type (and precision, where applicable).
16830         (gt_ggc_mx, gt_pch_nx): Operate on poly_ints rather than poly_int_pods.
16831         * poly-int-types.h (poly_uint16_pod, poly_int64_pod, poly_uint64_pod)
16832         (poly_offset_int_pod, poly_wide_int_pod, poly_widest_int_pod): Delete.
16833         * gengtype.cc (main): Don't register poly_int64_pod.
16834         * calls.cc (initialize_argument_information): Use poly_int rather
16835         than poly_int_pod.
16836         (combine_pending_stack_adjustment_and_call): Likewise.
16837         * config/aarch64/aarch64.cc (pure_scalable_type_info): Likewise.
16838         * data-streamer.h (bp_unpack_poly_value): Likewise.
16839         * dwarf2cfi.cc (struct dw_trace_info): Likewise.
16840         (struct queued_reg_save): Likewise.
16841         * dwarf2out.h (struct dw_cfa_location): Likewise.
16842         * emit-rtl.h (struct incoming_args): Likewise.
16843         (struct rtl_data): Likewise.
16844         * expr.cc (get_bit_range): Likewise.
16845         (get_inner_reference): Likewise.
16846         * expr.h (get_bit_range): Likewise.
16847         * fold-const.cc (split_address_to_core_and_offset): Likewise.
16848         (ptr_difference_const): Likewise.
16849         * fold-const.h (ptr_difference_const): Likewise.
16850         * function.cc (try_fit_stack_local): Likewise.
16851         (instantiate_new_reg): Likewise.
16852         * function.h (struct expr_status): Likewise.
16853         (struct args_size): Likewise.
16854         * genmodes.cc (ZERO_COEFFS): Likewise.
16855         (mode_size_inline): Likewise.
16856         (mode_nunits_inline): Likewise.
16857         (emit_mode_precision): Likewise.
16858         (emit_mode_size): Likewise.
16859         (emit_mode_nunits): Likewise.
16860         * gimple-fold.cc (get_base_constructor): Likewise.
16861         * gimple-ssa-store-merging.cc (struct symbolic_number): Likewise.
16862         * inchash.h (class hash): Likewise.
16863         * ipa-modref-tree.cc (modref_access_node::dump): Likewise.
16864         * ipa-modref.cc (modref_access_analysis::merge_call_side_effects):
16865         Likewise.
16866         * ira-int.h (ira_spilled_reg_stack_slot): Likewise.
16867         * lra-eliminations.cc (self_elim_offsets): Likewise.
16868         * machmode.h (mode_size, mode_precision, mode_nunits): Likewise.
16869         * omp-low.cc (omplow_simd_context): Likewise.
16870         * pretty-print.cc (pp_wide_integer): Likewise.
16871         * pretty-print.h (pp_wide_integer): Likewise.
16872         * reload.cc (struct decomposition): Likewise.
16873         * reload.h (struct reload): Likewise.
16874         * reload1.cc (spill_stack_slot_width): Likewise.
16875         (struct elim_table): Likewise.
16876         (offsets_at): Likewise.
16877         (init_eliminable_invariants): Likewise.
16878         * rtl.h (union rtunion): Likewise.
16879         (poly_int_rtx_p): Likewise.
16880         (strip_offset): Likewise.
16881         (strip_offset_and_add): Likewise.
16882         * rtlanal.cc (strip_offset): Likewise.
16883         * tree-dfa.cc (get_ref_base_and_extent): Likewise.
16884         (get_addr_base_and_unit_offset_1): Likewise.
16885         (get_addr_base_and_unit_offset): Likewise.
16886         * tree-dfa.h (get_ref_base_and_extent): Likewise.
16887         (get_addr_base_and_unit_offset_1): Likewise.
16888         (get_addr_base_and_unit_offset): Likewise.
16889         * tree-ssa-loop-ivopts.cc (struct iv_use): Likewise.
16890         (strip_offset): Likewise.
16891         * tree-ssa-sccvn.h (struct vn_reference_op_struct): Likewise.
16892         * tree.cc (ptrdiff_tree_p): Likewise.
16893         * tree.h (poly_int_tree_p): Likewise.
16894         (ptrdiff_tree_p): Likewise.
16895         (get_inner_reference): Likewise.
16897 2023-09-29  John David Anglin  <danglin@gcc.gnu.org>
16899         * config/pa/pa.md (memory_barrier): Revise comment.
16900         (memory_barrier_64, memory_barrier_32): Use ldcw,co on PA 2.0.
16901         * config/pa/pa.opt (coherent-ldcw): Change default to disabled.
16903 2023-09-29  Jakub Jelinek  <jakub@redhat.com>
16905         * vec.h (quick_insert, ordered_remove, unordered_remove,
16906         block_remove, qsort, sort, stablesort, quick_grow): Guard
16907         std::is_trivially_{copyable,default_constructible} and
16908         vec_detail::is_trivially_copyable_or_pair static assertions
16909         with GCC_VERSION >= 5000.
16910         (vec_detail::is_trivially_copyable_or_pair): Guard definition
16911         with GCC_VERSION >= 5000.
16913 2023-09-29  Manos Anagnostakis  <manos.anagnostakis@vrull.eu>
16915         * config/aarch64/aarch64-opts.h (enum aarch64_ldp_policy): Removed.
16916         (enum aarch64_ldp_stp_policy): Merged enums aarch64_ldp_policy
16917         and aarch64_stp_policy to aarch64_ldp_stp_policy.
16918         (enum aarch64_stp_policy): Removed.
16919         * config/aarch64/aarch64-protos.h (struct tune_params): Removed
16920         aarch64_ldp_policy_model and aarch64_stp_policy_model enum types
16921         and left only the definitions to the aarch64-opts one.
16922         * config/aarch64/aarch64.cc (aarch64_parse_ldp_policy): Removed.
16923         (aarch64_parse_stp_policy): Removed.
16924         (aarch64_override_options_internal): Removed calls to parsing
16925         functions and added obvious direct assignments.
16926         (aarch64_mem_ok_with_ldpstp_policy_model): Improved
16927         code quality based on the new changes.
16928         * config/aarch64/aarch64.opt: Use single enum type
16929         aarch64_ldp_stp_policy for both ldp and stp options.
16931 2023-09-29  Richard Biener  <rguenther@suse.de>
16933         PR tree-optimization/111583
16934         * tree-loop-distribution.cc (find_single_drs): Ensure the
16935         load/store are always executed.
16937 2023-09-29  Jakub Jelinek  <jakub@redhat.com>
16939         * tree-vect-patterns.cc (vect_recog_over_widening_pattern): Use
16940         quick_grow_cleared method on unprom rather than quick_grow.
16942 2023-09-29  Sergei Trofimovich  <siarheit@google.com>
16944         PR middle-end/111505
16945         * ggc-common.cc (ggc_zero_out_root_pointers, ggc_common_finalize):
16946         Add new helper. Use helper instead of memset() to wipe out pointers.
16948 2023-09-29  Richard Sandiford  <richard.sandiford@arm.com>
16950         * builtins.h (c_readstr): Take a fixed_size_mode rather than a
16951         scalar_int_mode.
16952         * builtins.cc (c_readstr): Likewise.  Build a local array of
16953         bytes and use native_decode_rtx to get the rtx image.
16954         (builtin_memcpy_read_str): Simplify accordingly.
16955         (builtin_strncpy_read_str): Likewise.
16956         (builtin_memset_read_str): Likewise.
16957         (builtin_memset_gen_str): Likewise.
16958         * expr.cc (string_cst_read_str): Likewise.
16960 2023-09-29  Jakub Jelinek  <jakub@redhat.com>
16962         * tree-ssa-loop-im.cc (tree_ssa_lim_initialize): Use quick_grow_cleared
16963         instead of quick_grow on vec<bitmap_head> members.
16964         * cfganal.cc (control_dependences::control_dependences): Likewise.
16965         * rtl-ssa/blocks.cc (function_info::build_info::build_info): Likewise.
16966         (function_info::place_phis): Use safe_grow_cleared instead of safe_grow
16967         on auto_vec<bitmap_head> vars.
16968         * tree-ssa-live.cc (compute_live_vars): Use quick_grow_cleared instead
16969         of quick_grow on vec<bitmap_head> var.
16971 2023-09-28  Vladimir N. Makarov  <vmakarov@redhat.com>
16973         Revert:
16974         2023-09-14  Vladimir N. Makarov  <vmakarov@redhat.com>
16976         * ira-costs.cc (find_costs_and_classes): Decrease memory cost
16977         by equiv savings.
16979 2023-09-28  Wilco Dijkstra  <wilco.dijkstra@arm.com>
16981         PR target/111121
16982         * config/aarch64/aarch64.md (aarch64_movmemdi): Add new expander.
16983         (movmemdi): Call aarch64_expand_cpymem_mops for correct expansion.
16984         * config/aarch64/aarch64.cc (aarch64_expand_cpymem_mops): Add support
16985         for memmove.
16986         * config/aarch64/aarch64-protos.h (aarch64_expand_cpymem_mops): Add new
16987         function.
16989 2023-09-28  Pan Li  <pan2.li@intel.com>
16991         PR target/111506
16992         * config/riscv/autovec.md (<float_cvt><mode><vnnconvert>2):
16993         New pattern.
16994         * config/riscv/vector-iterators.md: New iterator.
16996 2023-09-28  Vladimir N. Makarov  <vmakarov@redhat.com>
16998         * rtl.h (lra_in_progress): Change type to bool.
16999         (ira_in_progress): Add new extern.
17000         * ira.cc (ira_in_progress): New global.
17001         (pass_ira::execute): Set up ira_in_progress.
17002         * lra.cc: (lra_in_progress): Change type to bool and initialize.
17003         (lra): Use bool values for lra_in_progress.
17004         * lra-eliminations.cc (init_elim_table): Ditto.
17006 2023-09-28  Richard Biener  <rguenther@suse.de>
17008         PR target/111600
17009         * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
17010         Use a heap allocated worklist for CFG traversal instead of
17011         recursion.
17013 2023-09-28  Jakub Jelinek  <jakub@redhat.com>
17014             Jonathan Wakely  <jwakely@redhat.com>
17016         * vec.h: Mention in file comment limited support for non-POD types
17017         in some operations.
17018         (vec_destruct): New function template.
17019         (release): Use it for non-trivially destructible T.
17020         (truncate): Likewise.
17021         (quick_push): Perform a placement new into slot
17022         instead of assignment.
17023         (pop): For non-trivially destructible T return void
17024         rather than T & and destruct the popped element.
17025         (quick_insert, ordered_remove): Note that they aren't suitable
17026         for non-trivially copyable types.  Add static_asserts for that.
17027         (block_remove): Assert T is trivially copyable.
17028         (vec_detail::is_trivially_copyable_or_pair): New trait.
17029         (qsort, sort, stablesort): Assert T is trivially copyable or
17030         std::pair with both trivally copyable types.
17031         (quick_grow): Add assert T is trivially default constructible,
17032         for now commented out.
17033         (quick_grow_cleared): Don't call quick_grow, instead inline it
17034         by hand except for the new static_assert.
17035         (gt_ggc_mx): Assert T is trivially destructable.
17036         (auto_vec::operator=): Formatting fixes.
17037         (auto_vec::auto_vec): Likewise.
17038         (vec_safe_grow_cleared): Don't call vec_safe_grow, instead inline
17039         it manually and call quick_grow_cleared method rather than quick_grow.
17040         (safe_grow_cleared): Likewise.
17041         * edit-context.cc (class line_event): Move definition earlier.
17042         * tree-ssa-loop-im.cc (seq_entry::seq_entry): Make default ctor
17043         defaulted.
17044         * ipa-fnsummary.cc (evaluate_properties_for_edge): Use
17045         safe_grow_cleared instead of safe_grow followed by placement new
17046         constructing the elements.
17048 2023-09-28  Richard Sandiford  <richard.sandiford@arm.com>
17050         * dwarf2out.cc (mem_loc_descriptor): Remove unused variables.
17051         * tree-affine.cc (expr_to_aff_combination): Likewise.
17053 2023-09-28  Richard Biener  <rguenther@suse.de>
17055         PR tree-optimization/111614
17056         * tree-ssa-reassoc.cc (undistribute_bitref_for_vector): Properly
17057         convert the first vector when required.
17059 2023-09-28  xuli  <xuli1@eswincomputing.com>
17061         PR target/111533
17062         * config/riscv/riscv-v.cc (expand_const_vector): Fix bug.
17063         * config/riscv/riscv-vsetvl.cc (anticipatable_occurrence_p): Fix bug.
17065 2023-09-27  Sandra Loosemore  <sandra@codesourcery.com>
17067         * gimple.cc (gimple_copy): Add case GIMPLE_OMP_STRUCTURED_BLOCK.
17069 2023-09-27  Iain Sandoe  <iain@sandoe.co.uk>
17071         PR target/111610
17072         * configure: Regenerate.
17073         * configure.ac: Rename the missing dsymutil case to "DET_UNKNOWN".
17075 2023-09-27  Manos Anagnostakis  <manos.anagnostakis@vrull.eu>
17076             Philipp Tomsich  <philipp.tomsich@vrull.eu>
17077             Manolis Tsamis  <manolis.tsamis@vrull.eu>
17079         * config/aarch64/aarch64-opts.h (enum aarch64_ldp_policy): New
17080         enum type.
17081         (enum aarch64_stp_policy): New enum type.
17082         * config/aarch64/aarch64-protos.h (struct tune_params): Add
17083         appropriate enums for the policies.
17084         (aarch64_mem_ok_with_ldpstp_policy_model): New declaration.
17085         * config/aarch64/aarch64-tuning-flags.def
17086         (AARCH64_EXTRA_TUNING_OPTION): Remove superseded tuning
17087         options.
17088         * config/aarch64/aarch64.cc (aarch64_parse_ldp_policy): New
17089         function to parse ldp-policy parameter.
17090         (aarch64_parse_stp_policy): New function to parse stp-policy parameter.
17091         (aarch64_override_options_internal): Call parsing functions.
17092         (aarch64_mem_ok_with_ldpstp_policy_model): New function.
17093         (aarch64_operands_ok_for_ldpstp): Add call to
17094         aarch64_mem_ok_with_ldpstp_policy_model for parameter-value
17095         check and alignment check and remove superseded ones.
17096         (aarch64_operands_adjust_ok_for_ldpstp): Add call to
17097         aarch64_mem_ok_with_ldpstp_policy_model for parameter-value
17098         check and alignment check and remove superseded ones.
17099         * config/aarch64/aarch64.opt (aarch64-ldp-policy): New param.
17100         (aarch64-stp-policy): New param.
17101         * doc/invoke.texi: Document the parameters accordingly.
17103 2023-09-27  Andre Vieira  <andre.simoesdiasvieira@arm.com>
17105         * tree-data-ref.cc (include calls.h): Add new include.
17106         (get_references_in_stmt): Correctly handle IFN_MASK_CALL.
17108 2023-09-27  Richard Biener  <rguenther@suse.de>
17110         * match.pd (abs (copysign (x, y)) -> abs (x)): New pattern.
17112 2023-09-27  Jakub Jelinek  <jakub@redhat.com>
17114         PR c++/105606
17115         * system.h (BROKEN_VALUE_INITIALIZATION): Don't define.
17116         * vec.h (vec_default_construct): Remove BROKEN_VALUE_INITIALIZATION
17117         workaround.
17118         * function.cc (assign_parm_find_data_types): Likewise.
17120 2023-09-27  Pan Li  <pan2.li@intel.com>
17122         * config/riscv/autovec.md (roundeven<mode>2): New pattern.
17123         * config/riscv/riscv-protos.h (enum insn_flags): New enum type.
17124         (enum insn_type): Ditto.
17125         (expand_vec_roundeven): New func decl.
17126         * config/riscv/riscv-v.cc (expand_vec_roundeven): New func impl.
17128 2023-09-27  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17130         PR target/111590
17131         * dse.cc (find_shift_sequence): Check the mode with access_size exist on the target.
17133 2023-09-27  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17135         * tree-if-conv.cc (is_cond_scalar_reduction): Fix comments.
17137 2023-09-27  Pan Li  <pan2.li@intel.com>
17139         * config/riscv/autovec.md (btrunc<mode>2): New pattern.
17140         * config/riscv/riscv-protos.h (expand_vec_trunc): New func decl.
17141         * config/riscv/riscv-v.cc (emit_vec_cvt_x_f_rtz): New func impl.
17142         (expand_vec_trunc): Ditto.
17144 2023-09-26  Hans-Peter Nilsson  <hp@axis.com>
17146         PR target/107567
17147         PR target/109166
17148         * builtins.cc (expand_builtin) <case BUILT_IN_ATOMIC_TEST_AND_SET>:
17149         Handle failure from expand_builtin_atomic_test_and_set.
17150         * optabs.cc (expand_atomic_test_and_set): When all attempts fail to
17151         generate atomic code through target support, return NULL
17152         instead of emitting non-atomic code.  Also, for code handling
17153         targetm.atomic_test_and_set_trueval != 1, gcc_assert result
17154         from calling emit_store_flag_force instead of returning NULL.
17156 2023-09-26  Andrew MacLeod  <amacleod@redhat.com>
17158         PR tree-optimization/111599
17159         * value-relation.cc (relation_oracle::valid_equivs): Ensure
17160         ssa_name is valid.
17162 2023-09-26  Andrew Pinski  <apinski@marvell.com>
17164         PR tree-optimization/106164
17165         PR tree-optimization/111456
17166         * match.pd (`(A ==/!= B) & (A CMP C)`):
17167         Support an optional cast on the second A.
17168         (`(A ==/!= B) | (A CMP C)`): Likewise.
17170 2023-09-26  Andrew Pinski  <apinski@marvell.com>
17172         PR tree-optimization/111469
17173         * tree-ssa-phiopt.cc (minmax_replacement): Fix
17174         the assumption for the `non-diamond` handling cases
17175         of diamond code.
17177 2023-09-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17179         * match.pd: Optimize COND_ADD reduction pattern.
17181 2023-09-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17183         PR tree-optimization/111594
17184         PR tree-optimization/110660
17185         * match.pd: Optimize COND_LEN_ADD reduction.
17187 2023-09-26  Pan Li  <pan2.li@intel.com>
17189         * config/riscv/autovec.md (round<mode>2): New pattern.
17190         * config/riscv/riscv-protos.h (enum insn_flags): New enum type.
17191         (enum insn_type): Ditto.
17192         (expand_vec_round): New function decl.
17193         * config/riscv/riscv-v.cc (expand_vec_round): New function impl.
17195 2023-09-26  Iain Sandoe  <iain@sandoe.co.uk>
17197         * config/darwin.h (DARWIN_CC1_SPEC): Remove -dynamiclib.
17199 2023-09-26  Tobias Burnus  <tobias@codesourcery.com>
17201         PR middle-end/111547
17202         * doc/invoke.texi (-fopenmp): Mention C++11 [[omp::decl(...)]] syntax.
17203         (-fopenmp-simd): Likewise. Clarify 'loop' directive semantic.
17205 2023-09-26  Pan Li  <pan2.li@intel.com>
17207         * config/riscv/autovec.md (rint<mode>2): New pattern.
17208         * config/riscv/riscv-protos.h (expand_vec_rint): New function decl.
17209         * config/riscv/riscv-v.cc (expand_vec_rint): New function impl.
17211 2023-09-26  Pan Li  <pan2.li@intel.com>
17213         * config/riscv/autovec.md (nearbyint<mode>2): New pattern.
17214         * config/riscv/riscv-protos.h (enum insn_type): New enum.
17215         (expand_vec_nearbyint): New function decl.
17216         * config/riscv/riscv-v.cc (expand_vec_nearbyint): New func impl.
17218 2023-09-26  Pan Li  <pan2.li@intel.com>
17220         * config/riscv/riscv-v.cc (gen_ceil_const_fp): Remove.
17221         (get_fp_rounding_coefficient): Rename.
17222         (gen_floor_const_fp): Remove.
17223         (expand_vec_ceil): Take renamed func.
17224         (expand_vec_floor): Ditto.
17226 2023-09-25  Vladimir N. Makarov  <vmakarov@redhat.com>
17228         PR middle-end/111497
17229         * lra-constraints.cc (lra_constraints): Copy substituted
17230         equivalence.
17231         * lra.cc (lra): Change comment for calling unshare_all_rtl_again.
17233 2023-09-25  Eric Botcazou  <ebotcazou@adacore.com>
17235         * gimple-range-gori.cc (gori_compute::logical_combine): Add missing
17236         return statement in the varying case.
17238 2023-09-25  Xi Ruoyao  <xry111@xry111.site>
17240         * doc/invoke.texi: Update -m[no-]explicit-relocs for r14-4160.
17242 2023-09-25  Andrew Pinski  <apinski@marvell.com>
17244         PR tree-optimization/110386
17245         * gimple-ssa-backprop.cc (strip_sign_op_1): Remove ABSU_EXPR.
17247 2023-09-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17249         PR target/111548
17250         * config/riscv/riscv-vsetvl.cc (earliest_pred_can_be_fused_p): Bugfix
17252 2023-09-25  Kewen Lin  <linkw@linux.ibm.com>
17254         PR target/111366
17255         * config/rs6000/rs6000.cc (rs6000_update_ipa_fn_target_info): Skip
17256         empty inline asm.
17258 2023-09-25  Kewen Lin  <linkw@linux.ibm.com>
17260         PR target/111380
17261         * config/rs6000/rs6000.cc (rs6000_can_inline_p): Adopt
17262         target_option_default_node when the callee has no option
17263         attributes, also simplify the existing code accordingly.
17265 2023-09-25  Guo Jie  <guojie@loongson.cn>
17267         * config/loongarch/lasx.md (lasx_vecinit_merge_<LASX:mode>): New
17268         pattern for vector construction.
17269         (vec_set<mode>_internal): Ditto.
17270         (lasx_xvinsgr2vr_<mode256_i_half>_internal): Ditto.
17271         (lasx_xvilvl_<lasxfmt_f>_internal): Ditto.
17272         * config/loongarch/loongarch.cc (loongarch_expand_vector_init):
17273         Optimized the implementation of vector construction.
17274         (loongarch_expand_vector_init_same): New function.
17275         * config/loongarch/lsx.md (lsx_vilvl_<lsxfmt_f>_internal): New
17276         pattern for vector construction.
17277         (lsx_vreplvei_mirror_<lsxfmt_f>): New pattern for vector
17278         construction.
17279         (vec_concatv2df): Ditto.
17280         (vec_concatv4sf): Ditto.
17282 2023-09-24  Pan Li  <pan2.li@intel.com>
17284         PR target/111546
17285         * config/riscv/riscv-v.cc
17286         (expand_vector_init_merge_repeating_sequence): Bugfix
17288 2023-09-24  Andrew Pinski  <apinski@marvell.com>
17290         PR tree-optimization/111543
17291         * match.pd (`(X & ~Y) & Y`, `(X | ~Y) | Y`): New patterns.
17293 2023-09-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17295         * config/riscv/autovec-opt.md: Extend VLS modes
17296         * config/riscv/vector-iterators.md: Ditto.
17298 2023-09-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17300         * config/riscv/autovec-opt.md: Add VLS modes for conditional ABS/SQRT.
17302 2023-09-23  Pan Li  <pan2.li@intel.com>
17304         * config/riscv/autovec.md (floor<mode>2): New pattern.
17305         * config/riscv/riscv-protos.h (enum insn_flags): New enum type.
17306         (enum insn_type): Ditto.
17307         (expand_vec_floor): New function decl.
17308         * config/riscv/riscv-v.cc (gen_floor_const_fp): New function impl.
17309         (expand_vec_floor): Ditto.
17311 2023-09-22  Pan Li  <pan2.li@intel.com>
17313         * config/riscv/riscv-v.cc (expand_vec_float_cmp_mask): Refactor.
17314         (emit_vec_float_cmp_mask): Rename.
17315         (expand_vec_copysign): Ditto.
17316         (emit_vec_copysign): Ditto.
17317         (emit_vec_abs): New function impl.
17318         (emit_vec_cvt_x_f): Ditto.
17319         (emit_vec_cvt_f_x): Ditto.
17320         (expand_vec_ceil): Ditto.
17322 2023-09-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17324         * config/riscv/vector-iterators.md: Extend VLS modes.
17326 2023-09-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17328         * config/riscv/riscv-v.cc (gen_const_vector_dup): Use global expand function.
17329         * config/riscv/vector.md (@vec_duplicate<mode>): Remove @.
17330         (vec_duplicate<mode>): Ditto.
17332 2023-09-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17334         * config/riscv/autovec.md: Add VLS conditional patterns.
17335         * config/riscv/riscv-protos.h (expand_cond_unop): Ditto.
17336         (expand_cond_binop): Ditto.
17337         (expand_cond_ternop): Ditto.
17338         * config/riscv/riscv-v.cc (expand_cond_unop): Ditto.
17339         (expand_cond_binop): Ditto.
17340         (expand_cond_ternop): Ditto.
17342 2023-09-22  xuli  <xuli1@eswincomputing.com>
17344         PR target/111451
17345         * config/riscv/riscv-v.cc (emit_vlmax_gather_insn): Optimization of vrgather.vv
17346                                                         into vrgatherei16.vv.
17348 2023-09-22  Lehua Ding  <lehua.ding@rivai.ai>
17350         * config/riscv/autovec-opt.md (*cond_widen_reduc_plus_scal_<mode>):
17351         New combine patterns.
17352         * config/riscv/riscv-protos.h (enum insn_type): New insn_type.
17354 2023-09-22  Lehua Ding  <lehua.ding@rivai.ai>
17356         * config/riscv/riscv-protos.h (enum avl_type): New VLS avl_type.
17357         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Move comments.
17359 2023-09-22  Pan Li  <pan2.li@intel.com>
17361         * config/riscv/autovec.md (ceil<mode>2): New pattern.
17362         * config/riscv/riscv-protos.h (enum insn_flags): New enum type.
17363         (enum insn_type): Ditto.
17364         (expand_vec_ceil): New function decl.
17365         * config/riscv/riscv-v.cc (gen_ceil_const_fp): New function impl.
17366         (expand_vec_float_cmp_mask): Ditto.
17367         (expand_vec_copysign): Ditto.
17368         (expand_vec_ceil): Ditto.
17369         * config/riscv/vector.md: Add VLS mode support.
17371 2023-09-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17373         * config/riscv/autovec.md: Extend VLS modes.
17375 2023-09-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17377         * config/riscv/vector-iterators.md: Extend VLS modes.
17379 2023-09-21  Lehua Ding  <lehua.ding@rivai.ai>
17380             Robin Dapp  <rdapp.gcc@gmail.com>
17382         * config/riscv/riscv-v.cc (emit_vlmax_insn): Adjust comments.
17383         (emit_nonvlmax_insn): Adjust comments.
17384         (emit_vlmax_insn_lra): Adjust comments.
17386 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
17388         * config.gcc (*linux*): Set rust target_objs, and
17389         target_has_targetrustm,
17390         * config/t-linux (linux-rust.o): New rule.
17391         * config/linux-rust.cc: New file.
17393 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
17395         * config.gcc (i[34567]86-*-mingw* | x86_64-*-mingw*): Set
17396         rust_target_objs and target_has_targetrustm.
17397         * config/t-winnt (winnt-rust.o): New rule.
17398         * config/winnt-rust.cc: New file.
17400 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
17402         * config.gcc (*-*-fuchsia): Set tmake_rule, rust_target_objs,
17403         and target_has_targetrustm.
17404         * config/fuchsia-rust.cc: New file.
17405         * config/t-fuchsia: New file.
17407 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
17409         * config.gcc (*-*-vxworks*): Set rust_target_objs and
17410         target_has_targetrustm.
17411         * config/t-vxworks (vxworks-rust.o): New rule.
17412         * config/vxworks-rust.cc: New file.
17414 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
17416         * config.gcc (*-*-dragonfly*): Set rust_target_objs and
17417         target_has_targetrustm.
17418         * config/t-dragonfly (dragonfly-rust.o): New rule.
17419         * config/dragonfly-rust.cc: New file.
17421 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
17423         * config.gcc (*-*-solaris2*): Set rust_target_objs and
17424         target_has_targetrustm.
17425         * config/t-sol2 (sol2-rust.o): New rule.
17426         * config/sol2-rust.cc: New file.
17428 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
17430         * config.gcc (*-*-openbsd*): Set rust_target_objs and
17431         target_has_targetrustm.
17432         * config/t-openbsd (openbsd-rust.o): New rule.
17433         * config/openbsd-rust.cc: New file.
17435 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
17437         * config.gcc (*-*-netbsd*): Set rust_target_objs and
17438         target_has_targetrustm.
17439         * config/t-netbsd (netbsd-rust.o): New rule.
17440         * config/netbsd-rust.cc: New file.
17442 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
17444         * config.gcc (*-*-freebsd*): Set rust_target_objs and
17445         target_has_targetrustm.
17446         * config/t-freebsd (freebsd-rust.o): New rule.
17447         * config/freebsd-rust.cc: New file.
17449 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
17451         * config.gcc (*-*-darwin*): Set rust_target_objs and
17452         target_has_targetrustm.
17453         * config/t-darwin (darwin-rust.o): New rule.
17454         * config/darwin-rust.cc: New file.
17456 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
17458         * config/i386/t-i386 (i386-rust.o): New rule.
17459         * config/i386/i386-rust.cc: New file.
17460         * config/i386/i386-rust.h: New file.
17462 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
17464         * doc/tm.texi: Regenerate.
17465         * doc/tm.texi.in: Document TARGET_RUST_OS_INFO.
17467 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
17469         * doc/tm.texi: Regenerate.
17470         * doc/tm.texi.in: Add @node for Rust language and ABI, and document
17471         TARGET_RUST_CPU_INFO.
17473 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
17475         * Makefile.in (tm_rust_file_list, tm_rust_include_list, TM_RUST_H,
17476         RUST_TARGET_DEF, RUST_TARGET_H, RUST_TARGET_OBJS): New variables.
17477         (tm_rust.h, cs-tm_rust.h, default-rust.o,
17478         rust/rust-target-hooks-def.h, s-rust-target-hooks-def-h): New rules.
17479         (s-tm-texi): Also check timestamp on rust-target.def.
17480         (generated_files): Add TM_RUST_H and rust-target-hooks-def.h.
17481         (build/genhooks.o): Also depend on RUST_TARGET_DEF.
17482         * config.gcc (tm_rust_file, rust_target_objs, target_has_targetrustm):
17483         New variables.
17484         * configure: Regenerate.
17485         * configure.ac (tm_rust_file_list, tm_rust_include_list,
17486         rust_target_objs): Add substitutes.
17487         * doc/tm.texi: Regenerate.
17488         * doc/tm.texi.in (targetrustm): Document.
17489         (target_has_targetrustm): Document.
17490         * genhooks.cc: Include rust/rust-target.def.
17491         * config/default-rust.cc: New file.
17493 2023-09-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17495         PR target/110751
17496         * config/riscv/autovec.md: Enable scratch rtx in ELSE operand.
17497         * config/riscv/predicates.md (autovec_else_operand): New predicate.
17498         * config/riscv/riscv-v.cc (get_else_operand): New function.
17499         (expand_cond_len_unop): Adapt ELSE value.
17500         (expand_cond_len_binop): Ditto.
17501         (expand_cond_len_ternop): Ditto.
17502         * config/riscv/riscv.cc (riscv_preferred_else_value): New function.
17503         (TARGET_PREFERRED_ELSE_VALUE): New targethook.
17505 2023-09-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17507         PR target/111486
17508         * config/riscv/riscv.cc (riscv_legitimize_move): Fix bug.
17510 2023-09-21  Jiufu Guo  <guojiufu@linux.ibm.com>
17512         PR tree-optimization/111355
17513         * match.pd ((X + C) / N): Update pattern.
17515 2023-09-21  Jiufu Guo  <guojiufu@linux.ibm.com>
17517         * match.pd ((t * 2) / 2): Update to use overflow_free_p.
17519 2023-09-21  xuli  <xuli1@eswincomputing.com>
17521         PR target/111450
17522         * config/riscv/constraints.md (c01): const_int 1.
17523         (c02): const_int 2.
17524         (c04): const_int 4.
17525         (c08): const_int 8.
17526         * config/riscv/predicates.md (vector_eew8_stride_operand): New predicate for stride operand.
17527         (vector_eew16_stride_operand): Ditto.
17528         (vector_eew32_stride_operand): Ditto.
17529         (vector_eew64_stride_operand): Ditto.
17530         * config/riscv/vector-iterators.md: New iterator for stride operand.
17531         * config/riscv/vector.md: Add stride = element width constraint.
17533 2023-09-21  Lehua Ding  <lehua.ding@rivai.ai>
17535         * config/riscv/predicates.md (const_1_or_2_operand): Rename.
17536         (const_1_or_4_operand): Ditto.
17537         (vector_gs_scale_operand_16): Ditto.
17538         (vector_gs_scale_operand_32): Ditto.
17539         * config/riscv/vector-iterators.md: Adjust.
17541 2023-09-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17543         * config/riscv/autovec.md: Extend VLS modes.
17544         * config/riscv/vector-iterators.md: Ditto.
17545         * config/riscv/vector.md: Ditto.
17547 2023-09-20  Andrew MacLeod  <amacleod@redhat.com>
17549         * gimple-range-cache.cc (ssa_cache::merge_range): Change meaning
17550         of the return value.
17551         (ssa_cache::dump): Don't print GLOBAL RANGE header.
17552         (ssa_lazy_cache::merge_range): Adjust return value meaning.
17553         (ranger_cache::dump): Print GLOBAL RANGE header.
17555 2023-09-20  Aldy Hernandez  <aldyh@redhat.com>
17557         * range-op-float.cc (foperator_unordered_ge::fold_range): Remove
17558         special casing.
17559         (foperator_unordered_gt::fold_range): Same.
17560         (foperator_unordered_lt::fold_range): Same.
17561         (foperator_unordered_le::fold_range): Same.
17563 2023-09-20  Jakub Jelinek  <jakub@redhat.com>
17565         * builtins.h (type_to_class): Declare.
17566         * builtins.cc (type_to_class): No longer static.  Return
17567         int rather than enum.
17568         * doc/extend.texi (__builtin_classify_type): Document.
17570 2023-09-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17572         PR target/110751
17573         * internal-fn.cc (expand_fn_using_insn): Support undefined rtx value.
17574         * optabs.cc (maybe_legitimize_operand): Ditto.
17575         (can_reuse_operands_p): Ditto.
17576         * optabs.h (enum expand_operand_type): Ditto.
17577         (create_undefined_input_operand): Ditto.
17579 2023-09-20  Tobias Burnus  <tobias@codesourcery.com>
17581         * gimplify.cc (gimplify_bind_expr): Call GOMP_alloc/free for
17582         'omp allocate' variables; move stack cleanup after other
17583         cleanup.
17584         (omp_notice_variable): Process original decl when decl
17585         of the value-expression for a 'omp allocate' variable is passed.
17586         * omp-low.cc (scan_omp_1_op): Handle 'omp allocate' variables
17588 2023-09-20  Yanzhang Wang  <yanzhang.wang@intel.com>
17590         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
17591         support simplifying vector int not only scalar int.
17593 2023-09-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17595         * config/riscv/vector-iterators.md: Extend VLS floating-point.
17597 2023-09-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17599         * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Fix bug.
17601 2023-09-20  Iain Sandoe  <iain@sandoe.co.uk>
17603         * config/darwin.h:
17604         (SUBTARGET_DRIVER_SELF_SPECS): Move handling of 'shared' into the same
17605         specs as 'dynamiclib'. (STARTFILE_SPEC): Handle 'shared'.
17607 2023-09-20  Richard Biener  <rguenther@suse.de>
17609         PR tree-optimization/111489
17610         * params.opt (-param uninit-max-chain-len=): Raise default to 8.
17612 2023-09-20  Richard Biener  <rguenther@suse.de>
17614         PR tree-optimization/111489
17615         * doc/invoke.texi (--param uninit-max-chain-len): Document.
17616         (--param uninit-max-num-chains): Likewise.
17617         * params.opt (-param=uninit-max-chain-len=): New.
17618         (-param=uninit-max-num-chains=): Likewise.
17619         * gimple-predicate-analysis.cc (MAX_NUM_CHAINS): Define to
17620         param_uninit_max_num_chains.
17621         (MAX_CHAIN_LEN): Define to param_uninit_max_chain_len.
17622         (uninit_analysis::init_use_preds): Avoid VLA.
17623         (uninit_analysis::init_from_phi_def): Likewise.
17624         (compute_control_dep_chain): Avoid using MAX_CHAIN_LEN in
17625         template parameter.
17627 2023-09-20  Jakub Jelinek  <jakub@redhat.com>
17629         * match.pd ((x << c) >> c): Use MAX_FIXED_MODE_SIZE instead of
17630         GET_MODE_PRECISION of TImode or DImode depending on whether
17631         TImode is supported scalar mode.
17632         * gimple-lower-bitint.cc (bitint_precision_kind): Likewise.
17633         * expr.cc (expand_expr_real_1): Likewise.
17634         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt): Likewise.
17635         * ubsan.cc (ubsan_encode_value, ubsan_type_descriptor): Likewise.
17637 2023-09-20  Lehua Ding  <lehua.ding@rivai.ai>
17639         * config/riscv/autovec-opt.md (*<optab>not<mode>): Move and rename.
17640         (*n<optab><mode>): Ditto.
17641         (*v<any_shiftrt:optab><any_extend:optab>trunc<mode>): Ditto.
17642         (*<any_shiftrt:optab>trunc<mode>): Ditto.
17643         (*narrow_<any_shiftrt:optab><any_extend:optab><mode>): Ditto.
17644         (*narrow_<any_shiftrt:optab><mode>_scalar): Ditto.
17645         (*single_widen_mult<any_extend:su><mode>): Ditto.
17646         (*single_widen_mul<any_extend:su><mode>): Ditto.
17647         (*single_widen_mult<mode>): Ditto.
17648         (*single_widen_mul<mode>): Ditto.
17649         (*dual_widen_fma<mode>): Ditto.
17650         (*dual_widen_fma<su><mode>): Ditto.
17651         (*single_widen_fma<mode>): Ditto.
17652         (*single_widen_fma<su><mode>): Ditto.
17653         (*dual_fma<mode>): Ditto.
17654         (*single_fma<mode>): Ditto.
17655         (*dual_fnma<mode>): Ditto.
17656         (*dual_widen_fnma<mode>): Ditto.
17657         (*single_fnma<mode>): Ditto.
17658         (*single_widen_fnma<mode>): Ditto.
17659         (*dual_fms<mode>): Ditto.
17660         (*dual_widen_fms<mode>): Ditto.
17661         (*single_fms<mode>): Ditto.
17662         (*single_widen_fms<mode>): Ditto.
17663         (*dual_fnms<mode>): Ditto.
17664         (*dual_widen_fnms<mode>): Ditto.
17665         (*single_fnms<mode>): Ditto.
17666         (*single_widen_fnms<mode>): Ditto.
17668 2023-09-20  Jakub Jelinek  <jakub@redhat.com>
17670         PR c++/111392
17671         * attribs.cc (decl_attributes): Don't warn on omp::directive attribute
17672         on vars or function decls if -fopenmp or -fopenmp-simd.
17674 2023-09-20  Lehua Ding  <lehua.ding@rivai.ai>
17676         PR target/111488
17677         * config/riscv/autovec-opt.md: Add missed operand.
17679 2023-09-20  Omar Sandoval  <osandov@osandov.com>
17681         PR debug/111409
17682         * dwarf2out.cc (output_macinfo): Don't call optimize_macinfo_range if
17683         dwarf_split_debug_info.
17685 2023-09-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17687         * config/riscv/riscv-v.cc (can_find_related_mode_p): New function.
17688         (vectorize_related_mode): Add VLS related modes.
17689         * config/riscv/vector-iterators.md: Extend VLS modes.
17691 2023-09-20  Surya Kumari Jangala  <jskumari@linux.ibm.com>
17693         PR rtl-optimization/110071
17694         * ira-color.cc (improve_allocation): Consider cost of callee
17695         save registers.
17697 2023-09-20  mengqinggang  <mengqinggang@loongson.cn>
17698             Xi Ruoyao  <xry111@xry111.site>
17700         * configure: Regenerate.
17701         * configure.ac: Checking assembler for -mno-relax support.
17702         Disable relaxation when probing leb128 support.
17704 2023-09-20  Lulu Cheng  <chenglulu@loongson.cn>
17706         * config.in: Regenerate.
17707         * config/loongarch/genopts/loongarch.opt.in: Add compilation option
17708         mrelax. And set the initial value of explicit-relocs according to the
17709         detection status.
17710         * config/loongarch/gnu-user.h: When compiling with -mno-relax, pass the
17711         --no-relax option to the linker.
17712         * config/loongarch/loongarch-driver.h (ASM_SPEC): When compiling with
17713         -mno-relax, pass the -mno-relax option to the assembler.
17714         * config/loongarch/loongarch-opts.h (HAVE_AS_MRELAX_OPTION): Define macro.
17715         * config/loongarch/loongarch.opt: Regenerate.
17716         * configure: Regenerate.
17717         * configure.ac: Add detection of support for binutils relax function.
17719 2023-09-19  Ben Boeckel  <ben.boeckel@kitware.com>
17721         * doc/invoke.texi: Document -fdeps-format=, -fdeps-file=, and
17722         -fdeps-target= flags.
17723         * gcc.cc: add defaults for -fdeps-target= and -fdeps-file= when
17724         only -fdeps-format= is specified.
17725         * json.h: Add a TODO item to refactor out to share with
17726         `libcpp/mkdeps.cc`.
17728 2023-09-19  Ben Boeckel  <ben.boeckel@kitware.com>
17729             Jason Merrill  <jason@redhat.com>
17731         * gcc.cc (join_spec_func): Add a spec function to join all
17732         arguments.
17734 2023-09-19  Patrick O'Neill  <patrick@rivosinc.com>
17736         * config/riscv/riscv.cc (riscv_legitimize_const_move): Eliminate
17737         src_op_0 var to avoid rtl check error.
17739 2023-09-19  Aldy Hernandez  <aldyh@redhat.com>
17741         * range-op-float.cc (frelop_early_resolve): Clean-up and remove
17742         special casing.
17743         (operator_not_equal::fold_range): Handle VREL_EQ.
17744         (operator_lt::fold_range): Remove special casing for VREL_EQ.
17745         (operator_gt::fold_range): Same.
17746         (foperator_unordered_equal::fold_range): Same.
17748 2023-09-19  Javier Martinez  <javier.martinez.bugzilla@gmail.com>
17750         * doc/extend.texi: Document attributes hot, cold on C++ types.
17752 2023-09-19  Pat Haugen  <pthaugen@linux.ibm.com>
17754         * config/rs6000/rs6000.cc (rs6000_rtx_costs): Check whether the
17755         modulo instruction is disabled.
17756         * config/rs6000/rs6000.h (RS6000_DISABLE_SCALAR_MODULO): New.
17757         * config/rs6000/rs6000.md (mod<mode>3, *mod<mode>3): Check it.
17758         (define_expand umod<mode>3): New.
17759         (define_insn umod<mode>3): Rename to *umod<mode>3 and check if the modulo
17760         instruction is disabled.
17761         (umodti3, modti3): Check if the modulo instruction is disabled.
17763 2023-09-19  Gaius Mulley  <gaiusmod2@gmail.com>
17765         * doc/gm2.texi (fdebug-builtins): Correct description.
17767 2023-09-19  Jeff Law  <jlaw@ventanamicro.com>
17769         * config/iq2000/predicates.md (uns_arith_constant): New predicate.
17770         * config/iq2000/iq2000.md (rotrsi3): Use it.
17772 2023-09-19  Aldy Hernandez  <aldyh@redhat.com>
17774         * range-op-float.cc (operator_lt::op1_range): Remove known_isnan check.
17775         (operator_lt::op2_range): Same.
17776         (operator_le::op1_range): Same.
17777         (operator_le::op2_range): Same.
17778         (operator_gt::op1_range): Same.
17779         (operator_gt::op2_range): Same.
17780         (operator_ge::op1_range): Same.
17781         (operator_ge::op2_range): Same.
17782         (foperator_unordered_lt::op1_range): Same.
17783         (foperator_unordered_lt::op2_range): Same.
17784         (foperator_unordered_le::op1_range): Same.
17785         (foperator_unordered_le::op2_range): Same.
17786         (foperator_unordered_gt::op1_range): Same.
17787         (foperator_unordered_gt::op2_range): Same.
17788         (foperator_unordered_ge::op1_range): Same.
17789         (foperator_unordered_ge::op2_range): Same.
17791 2023-09-19  Aldy Hernandez  <aldyh@redhat.com>
17793         * value-range.h (frange::update_nan): New.
17795 2023-09-19  Aldy Hernandez  <aldyh@redhat.com>
17797         * range-op-float.cc (operator_not_equal::op2_range): New.
17798         * range-op-mixed.h: Add operator_not_equal::op2_range.
17800 2023-09-19  Andrew MacLeod  <amacleod@redhat.com>
17802         PR tree-optimization/110080
17803         PR tree-optimization/110249
17804         * tree-vrp.cc (remove_unreachable::final_p): New.
17805         (remove_unreachable::maybe_register): Rename from
17806         maybe_register_block and call early or final routine.
17807         (fully_replaceable): New.
17808         (remove_unreachable::handle_early): New.
17809         (remove_unreachable::remove_and_update_globals): Remove
17810         non-final processing.
17811         (rvrp_folder::rvrp_folder): Add final flag to constructor.
17812         (rvrp_folder::post_fold_bb): Remove unreachable registration.
17813         (rvrp_folder::pre_fold_stmt): Move unreachable processing to here.
17814         (execute_ranger_vrp): Adjust some call parameters.
17816 2023-09-19  Richard Biener  <rguenther@suse.de>
17818         PR c/111468
17819         * tree-pretty-print.h (op_symbol_code): Add defaulted flags
17820         argument.
17821         * tree-pretty-print.cc (op_symbol): Likewise.
17822         (op_symbol_code): Print TDF_GIMPLE variant if requested.
17823         * gimple-pretty-print.cc (dump_binary_rhs): Pass flags to
17824         op_symbol_code.
17825         (dump_gimple_cond): Likewise.
17827 2023-09-19  Thomas Schwinge  <thomas@codesourcery.com>
17828             Pan Li  <pan2.li@intel.com>
17830         * tree-streamer.h (bp_unpack_machine_mode): If
17831         'ib->file_data->mode_table' not available, apply 1-to-1 mapping.
17833 2023-09-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17835         * config/riscv/riscv.cc (riscv_can_change_mode_class): Block unordered VLA and VLS modes.
17837 2023-09-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17839         * config/riscv/autovec.md: Extend VLS modes.
17840         * config/riscv/vector.md: Ditto.
17842 2023-09-19  Richard Biener  <rguenther@suse.de>
17844         PR tree-optimization/111465
17845         * tree-ssa-threadupdate.cc (fwd_jt_path_registry::thread_block_1):
17846         Cancel the path when a EDGE_NO_COPY_SRC_BLOCK became non-empty.
17848 2023-09-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17850         * config/riscv/autovec.md: Extend VLS floating-point modes.
17851         * config/riscv/vector.md: Ditto.
17853 2023-09-19  Jakub Jelinek  <jakub@redhat.com>
17855         * match.pd ((x << c) >> c): Don't call build_nonstandard_integer_type
17856         nor check type_has_mode_precision_p for width larger than [TD]Imode
17857         precision.
17858         (a ? CST1 : CST2): Don't use build_nonstandard_type, just convert
17859         to type.  Use boolean_true_node instead of
17860         constant_boolean_node (true, boolean_type_node).  Formatting fixes.
17862 2023-09-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17864         * config/riscv/autovec.md: Add VLS modes.
17865         * config/riscv/vector.md: Ditto.
17867 2023-09-19  Jakub Jelinek  <jakub@redhat.com>
17869         * tree.cc (build_bitint_type): Assert precision is not 0, or
17870         for signed types 1.
17871         (signed_or_unsigned_type_for): Return INTEGER_TYPE for signed variant
17872         of unsigned _BitInt(1).
17874 2023-09-19  Lehua Ding  <lehua.ding@rivai.ai>
17876         * config/riscv/autovec-opt.md (*<optab>_fma<mode>):
17877         Removed old combine patterns.
17878         (*single_<optab>mult_plus<mode>): Ditto.
17879         (*double_<optab>mult_plus<mode>): Ditto.
17880         (*sign_zero_extend_fma): Ditto.
17881         (*zero_sign_extend_fma): Ditto.
17882         (*double_widen_fma<mode>): Ditto.
17883         (*single_widen_fma<mode>): Ditto.
17884         (*double_widen_fnma<mode>): Ditto.
17885         (*single_widen_fnma<mode>): Ditto.
17886         (*double_widen_fms<mode>): Ditto.
17887         (*single_widen_fms<mode>): Ditto.
17888         (*double_widen_fnms<mode>): Ditto.
17889         (*single_widen_fnms<mode>): Ditto.
17890         (*reduc_plus_scal_<mode>): Adjust name.
17891         (*widen_reduc_plus_scal_<mode>): Adjust name.
17892         (*dual_widen_fma<mode>): New combine pattern.
17893         (*dual_widen_fmasu<mode>): Ditto.
17894         (*dual_widen_fmaus<mode>): Ditto.
17895         (*dual_fma<mode>): Ditto.
17896         (*single_fma<mode>): Ditto.
17897         (*dual_fnma<mode>): Ditto.
17898         (*single_fnma<mode>): Ditto.
17899         (*dual_fms<mode>): Ditto.
17900         (*single_fms<mode>): Ditto.
17901         (*dual_fnms<mode>): Ditto.
17902         (*single_fnms<mode>): Ditto.
17903         * config/riscv/autovec.md (fma<mode>4):
17904         Reafctor fma pattern.
17905         (*fma<VI:mode><P:mode>): Removed.
17906         (fnma<mode>4): Reafctor.
17907         (*fnma<VI:mode><P:mode>): Removed.
17908         (*fma<VF:mode><P:mode>):  Removed.
17909         (*fnma<VF:mode><P:mode>):  Removed.
17910         (fms<mode>4):  Reafctor.
17911         (*fms<VF:mode><P:mode>):  Removed.
17912         (fnms<mode>4): Reafctor.
17913         (*fnms<VF:mode><P:mode>): Removed.
17914         * config/riscv/riscv-protos.h (prepare_ternary_operands):
17915         Adjust prototype.
17916         * config/riscv/riscv-v.cc (prepare_ternary_operands): Refactor.
17917         * config/riscv/vector.md (*pred_mul_plus<mode>_undef): New pattern.
17918         (*pred_mul_plus<mode>): Removed.
17919         (*pred_mul_plus<mode>_scalar): Removed.
17920         (*pred_mul_plus<mode>_extended_scalar): Removed.
17921         (*pred_minus_mul<mode>_undef):  New pattern.
17922         (*pred_minus_mul<mode>): Removed.
17923         (*pred_minus_mul<mode>_scalar): Removed.
17924         (*pred_minus_mul<mode>_extended_scalar): Removed.
17925         (*pred_mul_<optab><mode>_undef):  New pattern.
17926         (*pred_mul_<optab><mode>): Removed.
17927         (*pred_mul_<optab><mode>_scalar): Removed.
17928         (*pred_mul_neg_<optab><mode>_undef):  New pattern.
17929         (*pred_mul_neg_<optab><mode>): Removed.
17930         (*pred_mul_neg_<optab><mode>_scalar): Removed.
17932 2023-09-19  Tsukasa OI  <research_trasio@irq.a4lg.com>
17934         * config/riscv/riscv-vector-builtins.cc
17935         (builtin_decl, expand_builtin): Replace SVE with RVV.
17937 2023-09-19  Tsukasa OI  <research_trasio@irq.a4lg.com>
17939         * config/riscv/t-riscv: Add dependencies for riscv-builtins.cc,
17940         riscv-cmo.def and riscv-scalar-crypto.def.
17942 2023-09-18  Pan Li  <pan2.li@intel.com>
17944         * config/riscv/autovec.md: Extend to vls mode.
17946 2023-09-18  Pan Li  <pan2.li@intel.com>
17948         * config/riscv/autovec.md: Bugfix.
17949         * config/riscv/riscv-protos.h (SCALAR_MOVE_MERGED_OP): New enum.
17951 2023-09-18  Andrew Pinski  <apinski@marvell.com>
17953         PR tree-optimization/111442
17954         * match.pd (zero_one_valued_p): Have the bit_and match not be
17955         recursive.
17957 2023-09-18  Andrew Pinski  <apinski@marvell.com>
17959         PR tree-optimization/111435
17960         * match.pd (zero_one_valued_p): Don't do recursion
17961         on converts.
17963 2023-09-18  Iain Sandoe  <iain@sandoe.co.uk>
17965         * config/darwin-protos.h (enum darwin_external_toolchain): New.
17966         * config/darwin.cc (DSYMUTIL_VERSION): New.
17967         (darwin_override_options): Choose the default debug DWARF version
17968         depending on the configured dsymutil version.
17970 2023-09-18  Iain Sandoe  <iain@sandoe.co.uk>
17972         * configure: Regenerate.
17973         * configure.ac: Handle explict disable of stdlib option, set
17974         defaults for Darwin.
17976 2023-09-18  Andrew Pinski  <apinski@marvell.com>
17978         PR tree-optimization/111431
17979         * match.pd (`(a == CST) & a`): New pattern.
17981 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
17983         * config/riscv/riscv-selftests.cc (run_broadcast_selftests): Adapt selftests.
17984         * config/riscv/vector.md (@vec_duplicate<mode>): Remove.
17986 2023-09-18  Wilco Dijkstra  <wilco.dijkstra@arm.com>
17988         PR target/105928
17989         * config/aarch64/aarch64.cc (aarch64_internal_mov_immediate)
17990         Add support for immediates using shifted ORR/BIC.
17991         (aarch64_split_dimode_const_store): Apply if we save one instruction.
17992         * config/aarch64/aarch64.md (<LOGICAL:optab>_<SHIFT:optab><mode>3):
17993         Make pattern global.
17995 2023-09-18  Wilco Dijkstra  <wilco.dijkstra@arm.com>
17997         * config/aarch64/aarch64-cores.def (neoverse-n1): Place before ares.
17998         (neoverse-v1): Place before zeus.
17999         (neoverse-v2): Place before demeter.
18000         * config/aarch64/aarch64-tune.md: Regenerate.
18002 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18004         * config/riscv/autovec.md: Add VLS modes.
18005         * config/riscv/vector-iterators.md: Ditto.
18006         * config/riscv/vector.md: Ditto.
18008 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18010         * config/riscv/riscv-vsetvl.cc (vlmul_for_greatest_sew_second_ratio): New function.
18011         * config/riscv/riscv-vsetvl.def (DEF_SEW_LMUL_FUSE_RULE): Fix bug.
18013 2023-09-18  Richard Biener  <rguenther@suse.de>
18015         PR tree-optimization/111294
18016         * tree-ssa-threadbackward.cc (back_threader_profitability::m_name):
18017         Remove
18018         (back_threader::find_paths_to_names): Adjust.
18019         (back_threader::maybe_thread_block): Likewise.
18020         (back_threader_profitability::possibly_profitable_path_p): Remove
18021         code applying extra costs to copies PHIs.
18023 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18025         * config/riscv/autovec.md: Extend VLS modes.
18026         * config/riscv/vector.md: Ditto.
18028 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18030         * config/riscv/vector.md (mov<mode>): New pattern.
18031         (*mov<mode>_mem_to_mem): Ditto.
18032         (*mov<mode>): Ditto.
18033         (@mov<VLS_AVL_REG:mode><P:mode>_lra): Ditto.
18034         (*mov<VLS_AVL_REG:mode><P:mode>_lra): Ditto.
18035         (*mov<mode>_vls): Ditto.
18036         (movmisalign<mode>): Ditto.
18037         (@vec_duplicate<mode>): Ditto.
18038         * config/riscv/autovec-vls.md: Removed.
18040 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18042         PR target/111153
18043         * config/riscv/autovec.md: Add VLS modes.
18045 2023-09-18  Jason Merrill  <jason@redhat.com>
18047         * doc/gty.texi: Add discussion of cache vs. deletable.
18049 2023-09-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18051         * config/riscv/autovec-vls.md (<optab><mode>3): Deleted.
18052         (copysign<mode>3): Ditto.
18053         (xorsign<mode>3): Ditto.
18054         (<optab><mode>2): Ditto.
18055         * config/riscv/autovec.md: Extend VLS modes.
18057 2023-09-18  Jiufu Guo  <guojiufu@linux.ibm.com>
18059         PR middle-end/111303
18060         * match.pd ((t * 2) / 2): Update pattern.
18062 2023-09-17  Ajit Kumar Agarwal  <aagarwa1@linux.ibm.com>
18064         * config/rs6000/vsx.md (*vctzlsbb_zext_<mode>): New define_insn.
18066 2023-09-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18068         PR target/111391
18069         * config/riscv/autovec.md (@vec_extract<mode><vel>): Remove @.
18070         (vec_extract<mode><vel>): Ditto.
18071         * config/riscv/riscv-vsetvl.cc (emit_vsetvl_insn): Fix bug.
18072         (pass_vsetvl::local_eliminate_vsetvl_insn): Fix bug.
18073         * config/riscv/riscv.cc (riscv_legitimize_move): Expand VLS mode to scalar mode move.
18075 2023-09-16  Tsukasa OI  <research_trasio@irq.a4lg.com>
18077         * config/riscv/crypto.md (riscv_sha256sig0_<mode>,
18078         riscv_sha256sig1_<mode>, riscv_sha256sum0_<mode>,
18079         riscv_sha256sum1_<mode>, riscv_sm3p0_<mode>, riscv_sm3p1_<mode>,
18080         riscv_sm4ed_<mode>, riscv_sm4ks_<mode>): Remove and replace with
18081         new insn/expansions.
18082         (SHA256_OP, SM3_OP, SM4_OP): New iterators.
18083         (sha256_op, sm3_op, sm4_op): New attributes for iteration.
18084         (*riscv_<sha256_op>_si): New raw instruction for RV32.
18085         (*riscv_<sm3_op>_si): Ditto.
18086         (*riscv_<sm4_op>_si): Ditto.
18087         (riscv_<sha256_op>_di_extended): New base instruction for RV64.
18088         (riscv_<sm3_op>_di_extended): Ditto.
18089         (riscv_<sm4_op>_di_extended): Ditto.
18090         (riscv_<sha256_op>_si): New common instruction expansion.
18091         (riscv_<sm3_op>_si): Ditto.
18092         (riscv_<sm4_op>_si): Ditto.
18093         * config/riscv/riscv-builtins.cc: Add availability "crypto_zknh",
18094         "crypto_zksh" and "crypto_zksed".  Remove availability
18095         "crypto_zksh{32,64}" and "crypto_zksed{32,64}".
18096         * config/riscv/riscv-ftypes.def: Remove unused function type.
18097         * config/riscv/riscv-scalar-crypto.def: Make SHA-256, SM3 and SM4
18098         intrinsics to operate on uint32_t.
18100 2023-09-16  Tsukasa OI  <research_trasio@irq.a4lg.com>
18102         * config/riscv/riscv-builtins.cc (RISCV_ATYPE_UQI): New for
18103         uint8_t.  (RISCV_ATYPE_UHI): New for uint16_t.
18104         (RISCV_ATYPE_QI, RISCV_ATYPE_HI, RISCV_ATYPE_SI, RISCV_ATYPE_DI):
18105         Removed as no longer used.
18106         (RISCV_ATYPE_UDI): New for uint64_t.
18107         * config/riscv/riscv-cmo.def: Make types unsigned for not working
18108         "zicbop_cbo_prefetchi" and working bit manipulation clmul builtin
18109         argument/return types.
18110         * config/riscv/riscv-ftypes.def: Make bit manipulation, round
18111         number and shift amount types unsigned.
18112         * config/riscv/riscv-scalar-crypto.def: Ditto.
18114 2023-09-16  Pan Li  <pan2.li@intel.com>
18116         * config/riscv/autovec-vls.md (xorsign<mode>3): New pattern.
18118 2023-09-15  Fei Gao  <gaofei@eswincomputing.com>
18120         * config/riscv/predicates.md: Restrict predicate
18121         to allow 'reg' only.
18123 2023-09-15  Andrew Pinski  <apinski@marvell.com>
18125         * match.pd (zero_one_valued_p): Match a cast from a zero_one_valued_p.
18126         Also match `a & zero_one_valued_p` too.
18128 2023-09-15  Andrew Pinski  <apinski@marvell.com>
18130         PR tree-optimization/111414
18131         * match.pd (`(1 >> X) != 0`): Check to see if
18132         the integer_onep was an integral type (not a vector type).
18134 2023-09-15  Andrew MacLeod  <amacleod@redhat.com>
18136         * gimple-range-fold.cc (fold_using_range::range_of_phi): Always
18137         run phi analysis, and do it before loop analysis.
18139 2023-09-15  Andrew MacLeod  <amacleod@redhat.com>
18141         * gimple-range-fold.cc (fold_using_range::range_of_phi): Fix
18142         indentation.
18144 2023-09-15  Qing Zhao  <qing.zhao@oracle.com>
18146         PR tree-optimization/111407
18147         * tree-ssa-math-opts.cc (convert_mult_to_widen): Avoid the transform
18148         when one of the operands is subject to abnormal coalescing.
18150 2023-09-15  Lehua Ding  <lehua.ding@rivai.ai>
18152         * config/riscv/riscv-protos.h (enum insn_flags): Change name.
18153         (enum insn_type): Ditto.
18154         * config/riscv/riscv-v.cc (get_mask_mode_from_insn_flags): Removed.
18155         (emit_vlmax_insn): Adjust.
18156         (emit_nonvlmax_insn): Adjust.
18157         (emit_vlmax_insn_lra): Adjust.
18159 2023-09-15  Lehua Ding  <lehua.ding@rivai.ai>
18161         * config/riscv/autovec-opt.md: Adjust.
18162         * config/riscv/autovec.md: Ditto.
18163         * config/riscv/riscv-protos.h (enum class): Delete enum reduction_type.
18164         (expand_reduction): Adjust expand_reduction prototype.
18165         * config/riscv/riscv-v.cc (need_mask_operand_p): New helper function.
18166         (expand_reduction): Refactor expand_reduction.
18168 2023-09-15  Richard Sandiford  <richard.sandiford@arm.com>
18170         PR target/111411
18171         * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp): Require
18172         the lower memory access to a mem-pair operand.
18174 2023-09-15  Yang Yujie  <yangyujie@loongson.cn>
18176         * config.gcc: Pass the default ABI via TM_MULTILIB_CONFIG.
18177         * config/loongarch/loongarch-driver.h: Invoke MLIB_SELF_SPECS
18178         before the driver canonicalization routines.
18179         * config/loongarch/loongarch.h: Move definitions of CC1_SPEC etc.
18180         to loongarch-driver.h
18181         * config/loongarch/t-linux: Move multilib-related definitions to
18182         t-multilib.
18183         * config/loongarch/t-multilib: New file.  Inject library build
18184         options obtained from --with-multilib-list.
18185         * config/loongarch/t-loongarch: Same.
18187 2023-09-15  Lehua Ding  <lehua.ding@rivai.ai>
18189         PR target/111381
18190         * config/riscv/autovec-opt.md (*reduc_plus_scal_<mode>):
18191         New combine pattern.
18192         (*fold_left_widen_plus_<mode>): Ditto.
18193         (*mask_len_fold_left_widen_plus_<mode>): Ditto.
18194         * config/riscv/autovec.md (reduc_plus_scal_<mode>):
18195         Change from define_expand to define_insn_and_split.
18196         (fold_left_plus_<mode>): Ditto.
18197         (mask_len_fold_left_plus_<mode>): Ditto.
18198         * config/riscv/riscv-v.cc (expand_reduction):
18199         Support widen reduction.
18200         * config/riscv/vector-iterators.md (UNSPEC_WREDUC_SUM):
18201         Add new iterators and attrs.
18203 2023-09-14  David Malcolm  <dmalcolm@redhat.com>
18205         * diagnostic-event-id.h (diagnostic_thread_id_t): New typedef.
18206         * diagnostic-format-sarif.cc (class sarif_thread_flow): New.
18207         (sarif_thread_flow::sarif_thread_flow): New.
18208         (sarif_builder::make_code_flow_object): Reimplement, creating
18209         per-thread threadFlow objects, populating them with the relevant
18210         events.
18211         (sarif_builder::make_thread_flow_object): Delete, moving the
18212         code into sarif_builder::make_code_flow_object.
18213         (sarif_builder::make_thread_flow_location_object): Add
18214         "path_event_idx" param.  Use it to set "executionOrder"
18215         property.
18216         * diagnostic-path.h (diagnostic_event::get_thread_id): New
18217         pure-virtual vfunc.
18218         (class diagnostic_thread): New.
18219         (diagnostic_path::num_threads): New pure-virtual vfunc.
18220         (diagnostic_path::get_thread):  New pure-virtual vfunc.
18221         (diagnostic_path::multithreaded_p): New decl.
18222         (simple_diagnostic_event::simple_diagnostic_event): Add optional
18223         thread_id param.
18224         (simple_diagnostic_event::get_thread_id): New accessor.
18225         (simple_diagnostic_event::m_thread_id): New.
18226         (class simple_diagnostic_thread): New.
18227         (simple_diagnostic_path::simple_diagnostic_path): Move definition
18228         to diagnostic.cc.
18229         (simple_diagnostic_path::num_threads): New.
18230         (simple_diagnostic_path::get_thread): New.
18231         (simple_diagnostic_path::add_thread): New.
18232         (simple_diagnostic_path::add_thread_event): New.
18233         (simple_diagnostic_path::m_threads): New.
18234         * diagnostic-show-locus.cc (layout::layout): Add pretty_printer
18235         param for overriding the context's printer.
18236         (diagnostic_show_locus): Likwise.
18237         * diagnostic.cc (simple_diagnostic_path::simple_diagnostic_path):
18238         Move here from diagnostic-path.h.  Add main thread.
18239         (simple_diagnostic_path::num_threads): New.
18240         (simple_diagnostic_path::get_thread): New.
18241         (simple_diagnostic_path::add_thread): New.
18242         (simple_diagnostic_path::add_thread_event): New.
18243         (simple_diagnostic_event::simple_diagnostic_event): Add thread_id
18244         param and use it to initialize m_thread_id.  Reformat.
18245         * diagnostic.h: Add pretty_printer param for overriding the
18246         context's printer.
18247         * tree-diagnostic-path.cc: Add #define INCLUDE_VECTOR.
18248         (can_consolidate_events): Compare thread ids.
18249         (class per_thread_summary): New.
18250         (event_range::event_range): Add per_thread_summary arg.
18251         (event_range::print): Add "pp" param and use it rather than dc's
18252         printer.
18253         (event_range::m_thread_id): New field.
18254         (event_range::m_per_thread_summary): New field.
18255         (path_summary::multithreaded_p): New.
18256         (path_summary::get_events_for_thread_id): New.
18257         (path_summary::m_per_thread_summary): New field.
18258         (path_summary::m_thread_id_to_events): New field.
18259         (path_summary::get_or_create_events_for_thread_id): New.
18260         (path_summary::path_summary): Create per_thread_summary instances
18261         as needed and associate the event_range instances with them.
18262         (base_indent): Move here from print_path_summary_as_text.
18263         (per_frame_indent): Likewise.
18264         (class thread_event_printer): New, adapted from parts of
18265         print_path_summary_as_text.
18266         (print_path_summary_as_text): Make static.  Reimplement to
18267         moving most of existing code to class thread_event_printer,
18268         capturing state as per-thread as appropriate.
18269         (default_tree_diagnostic_path_printer): Add missing 'break' on
18270         final case.
18272 2023-09-14  David Malcolm  <dmalcolm@redhat.com>
18274         * dwarf2cfi.cc (dwarf2cfi_cc_finalize): New.
18275         * dwarf2out.h (dwarf2cfi_cc_finalize): New decl.
18276         * ggc-common.cc (ggc_mark_roots): Multiply by rti->nelt when
18277         clearing the deletable gcc_root_tab_t.
18278         (ggc_common_finalize): New.
18279         * ggc.h (ggc_common_finalize): New decl.
18280         * toplev.cc (toplev::finalize): Call dwarf2cfi_cc_finalize and
18281         ggc_common_finalize.
18283 2023-09-14  Max Filippov  <jcmvbkbc@gmail.com>
18285         * config/xtensa/predicates.md (xtensa_cstoresi_operator): Add
18286         unsigned comparisons.
18287         * config/xtensa/xtensa.cc (xtensa_expand_scc): Add code
18288         generation of salt/saltu instructions.
18289         * config/xtensa/xtensa.h (TARGET_SALT): New macro.
18290         * config/xtensa/xtensa.md (salt, saltu): New instruction
18291         patterns.
18293 2023-09-14  Vladimir N. Makarov  <vmakarov@redhat.com>
18295         * ira-costs.cc (find_costs_and_classes): Decrease memory cost
18296         by equiv savings.
18298 2023-09-14  Lehua Ding  <lehua.ding@rivai.ai>
18300         * config/riscv/autovec.md: Change rtx code to unspec.
18301         * config/riscv/riscv-protos.h (expand_reduction): Change prototype.
18302         * config/riscv/riscv-v.cc (expand_reduction): Change prototype.
18303         * config/riscv/riscv-vector-builtins-bases.cc (class widen_reducop):
18304         Removed.
18305         (class widen_freducop): Removed.
18306         * config/riscv/vector-iterators.md (minu): Add reduc unspec, iterators, attrs.
18307         * config/riscv/vector.md (@pred_reduc_<reduc><mode>): Change name.
18308         (@pred_<reduc_op><mode>): New name.
18309         (@pred_widen_reduc_plus<v_su><mode>): Change name.
18310         (@pred_reduc_plus<order><mode>): Change name.
18311         (@pred_widen_reduc_plus<order><mode>): Change name.
18313 2023-09-14  Lehua Ding  <lehua.ding@rivai.ai>
18315         * config/riscv/riscv-v.cc (expand_reduction): Adjust call.
18316         * config/riscv/riscv-vector-builtins-bases.cc: Adjust call.
18317         * config/riscv/vector-iterators.md: New iterators and attrs.
18318         * config/riscv/vector.md (@pred_reduc_<reduc><VQI:mode><VQI_LMUL1:mode>):
18319         Removed.
18320         (@pred_reduc_<reduc><VHI:mode><VHI_LMUL1:mode>): Removed.
18321         (@pred_reduc_<reduc><VSI:mode><VSI_LMUL1:mode>): Removed.
18322         (@pred_reduc_<reduc><VDI:mode><VDI_LMUL1:mode>): Removed.
18323         (@pred_reduc_<reduc><mode>): Added.
18324         (@pred_widen_reduc_plus<v_su><VQI:mode><VHI_LMUL1:mode>): Removed.
18325         (@pred_widen_reduc_plus<v_su><VHI:mode><VSI_LMUL1:mode>): Removed.
18326         (@pred_widen_reduc_plus<v_su><mode>): Added.
18327         (@pred_widen_reduc_plus<v_su><VSI:mode><VDI_LMUL1:mode>): Removed.
18328         (@pred_reduc_<reduc><VHF:mode><VHF_LMUL1:mode>): Removed.
18329         (@pred_reduc_<reduc><VSF:mode><VSF_LMUL1:mode>): Removed.
18330         (@pred_reduc_<reduc><VDF:mode><VDF_LMUL1:mode>): Removed.
18331         (@pred_reduc_plus<order><VHF:mode><VHF_LMUL1:mode>): Removed.
18332         (@pred_reduc_plus<order><VSF:mode><VSF_LMUL1:mode>): Removed.
18333         (@pred_reduc_plus<order><mode>): Added.
18334         (@pred_reduc_plus<order><VDF:mode><VDF_LMUL1:mode>): Removed.
18335         (@pred_widen_reduc_plus<order><VHF:mode><VSF_LMUL1:mode>): Removed.
18336         (@pred_widen_reduc_plus<order><VSF:mode><VDF_LMUL1:mode>): Removed.
18337         (@pred_widen_reduc_plus<order><mode>): Added.
18339 2023-09-14  Richard Sandiford  <richard.sandiford@arm.com>
18341         * config/aarch64/aarch64.cc (aarch64_vector_costs::analyze_loop_info):
18342         Move WHILELO handling to...
18343         (aarch64_vector_costs::finish_cost): ...here.  Check whether the
18344         vectorizer has decided to use a predicated loop.
18346 2023-09-14  Andrew Pinski  <apinski@marvell.com>
18348         PR tree-optimization/106164
18349         * match.pd (`(X CMP1 CST1) AND/IOR (X CMP2 CST2)`):
18350         Expand to support constants that are off by one.
18352 2023-09-14  Andrew Pinski  <apinski@marvell.com>
18354         * genmatch.cc (parser::parse_result): For an else clause
18355         of an if statement inside a switch, error out explictly.
18357 2023-09-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18359         * config/riscv/autovec-opt.md: Add VLS mask modes.
18360         * config/riscv/autovec.md (@vcond_mask_<mode><vm>): Remove @.
18361         (vcond_mask_<mode><vm>): Add VLS mask modes.
18362         * config/riscv/vector.md: Ditto.
18364 2023-09-14  Richard Biener  <rguenther@suse.de>
18366         PR tree-optimization/111294
18367         * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
18368         operands that eventually become dead and use simple_dce_from_worklist
18369         to remove their definitions if they did so.
18371 2023-09-14  Richard Sandiford  <richard.sandiford@arm.com>
18373         * config/aarch64/aarch64-sve.md (@aarch64_vec_duplicate_vq<mode>_le):
18374         Accept all nonimmediate_operands, but keep the existing constraints.
18375         If the instruction is split before RA, load invalid addresses into
18376         a temporary register.
18377         * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): Delete.
18379 2023-09-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18381         PR target/111395
18382         * config/riscv/riscv-vsetvl.cc (avl_info::operator==): Fix ICE.
18383         (vector_insn_info::global_merge): Ditto.
18384         (vector_insn_info::get_avl_or_vl_reg): Ditto.
18386 2023-09-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18388         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::global_eliminate_vsetvl_insn): Format it.
18390 2023-09-14  Lulu Cheng  <chenglulu@loongson.cn>
18392         * config/loongarch/loongarch-def.c: Modify the default value of
18393         branch_cost.
18395 2023-09-14  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
18397         * config/xtensa/xtensa.cc (xtensa_expand_scc):
18398         Revert the changes from the last patch, as the work in the RTL
18399         expansion pass is too far to determine the physical registers.
18400         * config/xtensa/xtensa.md (*eqne_INT_MIN): Ditto.
18401         (eq_zero_NSA, eqne_zero, *eqne_zero_masked_bits): New patterns.
18403 2023-09-14  Lulu Cheng  <chenglulu@loongson.cn>
18405         PR target/111334
18406         * config/loongarch/loongarch.md: Fix bug of '<optab>di3_fake'.
18408 2023-09-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18410         * config/riscv/autovec.md (vec_extract<mode><vel>): Add VLS modes.
18411         (@vec_extract<mode><vel>): Ditto.
18412         * config/riscv/vector.md: Ditto
18414 2023-09-13  Andrew Pinski  <apinski@marvell.com>
18416         * match.pd (`X <= MAX(X, Y)`):
18417         Move before `MIN (X, C1) < C2` pattern.
18419 2023-09-13  Andrew Pinski  <apinski@marvell.com>
18421         PR tree-optimization/111364
18422         * match.pd (`MIN (X, Y) == X`): Extend
18423         to min/lt, min/ge, max/gt, max/le.
18425 2023-09-13  Andrew Pinski  <apinski@marvell.com>
18427         PR tree-optimization/111345
18428         * match.pd (`Y > (X % Y)`): Merge
18429         into ...
18430         (`(X % Y) < Y`): Pattern by adding `:c`
18431         on the comparison.
18433 2023-09-13  Richard Biener  <rguenther@suse.de>
18435         PR tree-optimization/111387
18436         * tree-vect-slp.cc (vect_get_and_check_slp_defs): Check
18437         EDGE_DFS_BACK when doing BB vectorization.
18438         (vect_slp_function): Use rev_post_order_and_mark_dfs_back_seme
18439         to compute RPO and mark backedges.
18441 2023-09-13  Lehua Ding  <lehua.ding@rivai.ai>
18443         * config/riscv/autovec-opt.md (*cond_<mulh_table><mode>3_highpart):
18444         New combine pattern.
18445         * config/riscv/autovec.md (smul<mode>3_highpart): Mrege smul and umul.
18446         (<mulh_table><mode>3_highpart): Merged pattern.
18447         (umul<mode>3_highpart): Mrege smul and umul.
18448         * config/riscv/vector-iterators.md (umul): New iterators.
18449         (UNSPEC_VMULHU): New iterators.
18451 2023-09-13  Lehua Ding  <lehua.ding@rivai.ai>
18453         * config/riscv/autovec-opt.md (*cond_v<any_shiftrt:optab><any_extend:optab>trunc<mode>):
18454         New combine pattern.
18455         (*cond_<any_shiftrt:optab>trunc<mode>): Ditto.
18457 2023-09-13  Lehua Ding  <lehua.ding@rivai.ai>
18459         * config/riscv/autovec-opt.md (*copysign<mode>_neg): Move.
18460         (*cond_copysign<mode>): New combine pattern.
18461         * config/riscv/riscv-v.cc (needs_fp_rounding): Extend.
18463 2023-09-13  Richard Biener  <rguenther@suse.de>
18465         PR tree-optimization/111397
18466         * tree-ssa-propagate.cc (may_propagate_copy): Change optional
18467         argument to specify whether the PHI destination doesn't flow in
18468         from an abnormal PHI.
18469         (propagate_value): Adjust.
18470         * tree-ssa-forwprop.cc (pass_forwprop::execute): Indicate abnormal
18471         PHI dest.
18472         * tree-ssa-sccvn.cc (eliminate_dom_walker::before_dom_children):
18473         Likewise.
18474         (process_bb): Likewise.
18476 2023-09-13  Pan Li  <pan2.li@intel.com>
18478         PR target/111362
18479         * config/riscv/riscv.cc (riscv_emit_frm_mode_set): Bugfix.
18481 2023-09-13  Jiufu Guo  <guojiufu@linux.ibm.com>
18483         PR tree-optimization/111303
18484         * match.pd ((X - N * M) / N): Add undefined_p checking.
18485         ((X + N * M) / N): Likewise.
18486         ((X + C) div_rshift N): Likewise.
18488 2023-09-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18490         PR target/111337
18491         * config/riscv/autovec.md (vcond_mask_<mode><mode>): New pattern.
18493 2023-09-12  Martin Jambor  <mjambor@suse.cz>
18495         * dbgcnt.def (form_fma): New.
18496         * tree-ssa-math-opts.cc: Include dbgcnt.h.
18497         (convert_mult_to_fma): Bail out if the debug counter say so.
18499 2023-09-12  Edwin Lu  <ewlu@rivosinc.com>
18501         * config/riscv/autovec-opt.md: Update type
18502         * config/riscv/riscv.cc (riscv_sched_variable_issue): Enable assert
18504 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
18506         * config/aarch64/aarch64.cc (aarch64_save_regs_above_locals_p):
18507         New function.
18508         (aarch64_layout_frame): Use it to decide whether locals should
18509         go above or below the saved registers.
18510         (aarch64_expand_prologue): Update stack layout comment.
18511         Emit a stack tie after the final adjustment.
18513 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
18515         * config/aarch64/aarch64.h (aarch64_frame::saved_regs_size)
18516         (aarch64_frame::below_hard_fp_saved_regs_size): Delete.
18517         * config/aarch64/aarch64.cc (aarch64_layout_frame): Update accordingly.
18519 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
18521         * config/aarch64/aarch64.h (aarch64_frame::sve_save_and_probe)
18522         (aarch64_frame::hard_fp_save_and_probe): New fields.
18523         * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize them.
18524         Rather than asserting that a leaf function saves LR, instead assert
18525         that a leaf function saves something.
18526         (aarch64_get_separate_components): Prevent the chosen probe
18527         registers from being individually shrink-wrapped.
18528         (aarch64_allocate_and_probe_stack_space): Remove workaround for
18529         probe registers that aren't at the bottom of the previous allocation.
18531 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
18533         * config/aarch64/aarch64.cc (aarch64_allocate_and_probe_stack_space):
18534         Always probe the residual allocation at offset 1024, asserting
18535         that that is in range.
18537 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
18539         * config/aarch64/aarch64.cc (aarch64_layout_frame): Ensure that
18540         the LR save slot is in the first 16 bytes of the register save area.
18541         Only form STP/LDP push/pop candidates if both registers are valid.
18542         (aarch64_allocate_and_probe_stack_space): Remove workaround for
18543         when LR was not in the first 16 bytes.
18545 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
18547         * config/aarch64/aarch64.cc (aarch64_allocate_and_probe_stack_space):
18548         Don't probe final allocations that are exactly 1KiB in size (after
18549         unprobed space above the final allocation has been deducted).
18551 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
18553         * config/aarch64/aarch64.cc (aarch64_layout_frame): Tweak
18554         calculation of initial_adjust for frames in which all saves
18555         are SVE saves.
18557 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
18559         * config/aarch64/aarch64.cc (aarch64_layout_frame): Simplify
18560         the allocation of the top of the frame.
18562 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
18564         * config/aarch64/aarch64.h (aarch64_frame): Add comment above
18565         reg_offset.
18566         * config/aarch64/aarch64.cc (aarch64_layout_frame): Walk offsets
18567         from the bottom of the frame, rather than the bottom of the saved
18568         register area.  Measure reg_offset from the bottom of the frame
18569         rather than the bottom of the saved register area.
18570         (aarch64_save_callee_saves): Update accordingly.
18571         (aarch64_restore_callee_saves): Likewise.
18572         (aarch64_get_separate_components): Likewise.
18573         (aarch64_process_components): Likewise.
18575 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
18577         * config/aarch64/aarch64.h (aarch64_frame::frame_size): Tweak comment.
18579 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
18581         * config/aarch64/aarch64.h (aarch64_frame::hard_fp_offset): Rename
18582         to...
18583         (aarch64_frame::bytes_above_hard_fp): ...this.
18584         * config/aarch64/aarch64.cc (aarch64_layout_frame)
18585         (aarch64_expand_prologue): Update accordingly.
18586         (aarch64_initial_elimination_offset): Likewise.
18588 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
18590         * config/aarch64/aarch64.h (aarch64_frame::locals_offset): Rename to...
18591         (aarch64_frame::bytes_above_locals): ...this.
18592         * config/aarch64/aarch64.cc (aarch64_layout_frame)
18593         (aarch64_initial_elimination_offset): Update accordingly.
18595 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
18597         * config/aarch64/aarch64.cc (aarch64_expand_prologue): Move the
18598         calculation of chain_offset into the emit_frame_chain block.
18600 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
18602         * config/aarch64/aarch64.h (aarch64_frame::callee_offset): Delete.
18603         * config/aarch64/aarch64.cc (aarch64_layout_frame): Remove
18604         callee_offset handling.
18605         (aarch64_save_callee_saves): Replace the start_offset parameter
18606         with a bytes_below_sp parameter.
18607         (aarch64_restore_callee_saves): Likewise.
18608         (aarch64_expand_prologue): Update accordingly.
18609         (aarch64_expand_epilogue): Likewise.
18611 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
18613         * config/aarch64/aarch64.h (aarch64_frame::bytes_below_hard_fp): New
18614         field.
18615         * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize it.
18616         (aarch64_expand_epilogue): Use it instead of
18617         below_hard_fp_saved_regs_size.
18619 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
18621         * config/aarch64/aarch64.h (aarch64_frame::bytes_below_saved_regs): New
18622         field.
18623         * config/aarch64/aarch64.cc (aarch64_layout_frame): Initialize it,
18624         and use it instead of crtl->outgoing_args_size.
18625         (aarch64_get_separate_components): Use bytes_below_saved_regs instead
18626         of outgoing_args_size.
18627         (aarch64_process_components): Likewise.
18629 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
18631         * config/aarch64/aarch64.cc (aarch64_layout_frame): Explicitly
18632         allocate the frame in one go if there are no saved registers.
18634 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
18636         * config/aarch64/aarch64.cc (aarch64_expand_prologue): Use
18637         chain_offset rather than callee_offset.
18639 2023-09-12  Richard Sandiford  <richard.sandiford@arm.com>
18641         * config/aarch64/aarch64.cc (aarch64_save_callee_saves): Use
18642         a local shorthand for cfun->machine->frame.
18643         (aarch64_restore_callee_saves, aarch64_get_separate_components):
18644         (aarch64_process_components): Likewise.
18645         (aarch64_allocate_and_probe_stack_space): Likewise.
18646         (aarch64_expand_prologue, aarch64_expand_epilogue): Likewise.
18647         (aarch64_layout_frame): Use existing shorthand for one more case.
18649 2023-09-12  Andrew Pinski  <apinski@marvell.com>
18651         PR tree-optimization/107881
18652         * match.pd (`(a CMP1 b) ^ (a CMP2 b)`): New pattern.
18653         (`(a CMP1 b) == (a CMP2 b)`): New pattern.
18655 2023-09-12  Pan Li  <pan2.li@intel.com>
18657         * config/riscv/riscv-vector-costs.h (struct range): Removed.
18659 2023-09-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18661         * config/riscv/riscv-vector-costs.cc (get_last_live_range): New function.
18662         (compute_nregs_for_mode): Ditto.
18663         (live_range_conflict_p): Ditto.
18664         (max_number_of_live_regs): Ditto.
18665         (compute_lmul): Ditto.
18666         (costs::prefer_new_lmul_p): Ditto.
18667         (costs::better_main_loop_than_p): Ditto.
18668         * config/riscv/riscv-vector-costs.h (struct stmt_point): New struct.
18669         (struct var_live_range): Ditto.
18670         (struct autovec_info): Ditto.
18671         * config/riscv/t-riscv: Update makefile for COST model.
18673 2023-09-12  Jakub Jelinek  <jakub@redhat.com>
18675         * fold-const.cc (range_check_type): Handle BITINT_TYPE like
18676         OFFSET_TYPE.
18678 2023-09-12  Jakub Jelinek  <jakub@redhat.com>
18680         PR middle-end/111338
18681         * tree-ssa-sccvn.cc (struct vn_walk_cb_data): Add bufsize non-static
18682         data member.
18683         (vn_walk_cb_data::push_partial_def): Remove bufsize variable.
18684         (visit_nary_op): Avoid the BIT_AND_EXPR with constant rhs2
18685         optimization if type's precision is too large for
18686         vn_walk_cb_data::bufsize.
18688 2023-09-12  Gaius Mulley  <gaiusmod2@gmail.com>
18690         * doc/gm2.texi (Compiler options): Document new option
18691         -Wcase-enum.
18693 2023-09-12  Thomas Schwinge  <thomas@codesourcery.com>
18695         * doc/sourcebuild.texi (stack_size): Update.
18697 2023-09-12  Christoph Müllner  <christoph.muellner@vrull.eu>
18699         * config/riscv/bitmanip.md (*<optab>_not<mode>): Export INSN name.
18700         (<optab>_not<mode>3): Likewise.
18701         * config/riscv/riscv-protos.h (riscv_expand_strcmp): New
18702         prototype.
18703         * config/riscv/riscv-string.cc (GEN_EMIT_HELPER3): New helper
18704         macros.
18705         (GEN_EMIT_HELPER2): Likewise.
18706         (emit_strcmp_scalar_compare_byte): New function.
18707         (emit_strcmp_scalar_compare_subword): Likewise.
18708         (emit_strcmp_scalar_compare_word): Likewise.
18709         (emit_strcmp_scalar_load_and_compare): Likewise.
18710         (emit_strcmp_scalar_call_to_libc): Likewise.
18711         (emit_strcmp_scalar_result_calculation_nonul): Likewise.
18712         (emit_strcmp_scalar_result_calculation): Likewise.
18713         (riscv_expand_strcmp_scalar): Likewise.
18714         (riscv_expand_strcmp): Likewise.
18715         * config/riscv/riscv.md (*slt<u>_<X:mode><GPR:mode>): Export
18716         INSN name.
18717         (@slt<u>_<X:mode><GPR:mode>3): Likewise.
18718         (cmpstrnsi): Invoke expansion function for str(n)cmp.
18719         (cmpstrsi): Likewise.
18720         * config/riscv/riscv.opt: Add new parameter
18721         '-mstring-compare-inline-limit'.
18722         * doc/invoke.texi: Document new parameter
18723         '-mstring-compare-inline-limit'.
18725 2023-09-12  Christoph Müllner  <christoph.muellner@vrull.eu>
18727         * config.gcc: Add new object riscv-string.o.
18728         riscv-string.cc.
18729         * config/riscv/riscv-protos.h (riscv_expand_strlen):
18730         New function.
18731         * config/riscv/riscv.md (strlen<mode>): New expand INSN.
18732         * config/riscv/riscv.opt: New flag 'minline-strlen'.
18733         * config/riscv/t-riscv: Add new object riscv-string.o.
18734         * config/riscv/thead.md (th_rev<mode>2): Export INSN name.
18735         (th_rev<mode>2): Likewise.
18736         (th_tstnbz<mode>2): New INSN.
18737         * doc/invoke.texi: Document '-minline-strlen'.
18738         * emit-rtl.cc (emit_likely_jump_insn): New helper function.
18739         (emit_unlikely_jump_insn): Likewise.
18740         * rtl.h (emit_likely_jump_insn): New prototype.
18741         (emit_unlikely_jump_insn): Likewise.
18742         * config/riscv/riscv-string.cc: New file.
18744 2023-09-12  Thomas Schwinge  <thomas@codesourcery.com>
18746         * config/nvptx/nvptx.h (TARGET_USE_LOCAL_THUNK_ALIAS_P)
18747         (TARGET_SUPPORTS_ALIASES): Define.
18749 2023-09-12  Thomas Schwinge  <thomas@codesourcery.com>
18751         * doc/sourcebuild.texi (check-function-bodies): Update.
18753 2023-09-12  Tobias Burnus  <tobias@codesourcery.com>
18755         * gimplify.cc (gimplify_bind_expr): Check for
18756         insertion after variable cleanup.  Convert 'omp allocate'
18757         var-decl attribute to GOMP_alloc/GOMP_free calls.
18759 2023-09-12  xuli  <xuli1@eswincomputing.com>
18761         * config/riscv/riscv-vector-builtins-bases.cc: remove unused
18762                 parameter e and replace NULL_RTX with gcc_unreachable.
18764 2023-09-12  xuli  <xuli1@eswincomputing.com>
18766         * config/riscv/riscv-vector-builtins-bases.cc (class vcreate): New class.
18767         (BASE): Ditto.
18768         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
18769         * config/riscv/riscv-vector-builtins-functions.def (vcreate): Add vcreate support.
18770         * config/riscv/riscv-vector-builtins-shapes.cc (struct vcreate_def): Ditto.
18771         (SHAPE): Ditto.
18772         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
18773         * config/riscv/riscv-vector-builtins.cc: Add args type.
18775 2023-09-12  Fei Gao  <gaofei@eswincomputing.com>
18777         * config/riscv/riscv.cc
18778         (riscv_avoid_shrink_wrapping_separate): wrap the condition check in
18779         riscv_avoid_shrink_wrapping_separate.
18780         (riscv_avoid_multi_push):avoid multi push if shrink_wrapping_separate
18781         is active.
18782         (riscv_get_separate_components):call riscv_avoid_shrink_wrapping_separate
18784 2023-09-12  Fei Gao  <gaofei@eswincomputing.com>
18786         * shrink-wrap.cc (try_shrink_wrapping_separate):call
18787         use_shrink_wrapping_separate.
18788         (use_shrink_wrapping_separate): wrap the condition
18789         check in use_shrink_wrapping_separate.
18790         * shrink-wrap.h (use_shrink_wrapping_separate): add to extern
18792 2023-09-11  Andrew Pinski  <apinski@marvell.com>
18794         PR tree-optimization/111348
18795         * match.pd (`(a CMP b) ? minmax<a, c> : minmax<b, c>`): Add :c on
18796         the cmp part of the pattern.
18798 2023-09-11  Uros Bizjak  <ubizjak@gmail.com>
18800         PR target/111340
18801         * config/i386/i386.cc (output_pic_addr_const): Handle CONST_WIDE_INT.
18802         Call output_addr_const for CASE_CONST_SCALAR_INT.
18804 2023-09-11  Edwin Lu  <ewlu@rivosinc.com>
18806         * config/riscv/thead.md: Update types
18808 2023-09-11  Edwin Lu  <ewlu@rivosinc.com>
18810         * config/riscv/riscv.md: Update types
18812 2023-09-11  Edwin Lu  <ewlu@rivosinc.com>
18814         * config/riscv/riscv.md: Add "zicond" type
18815         * config/riscv/zicond.md: Update types
18817 2023-09-11  Edwin Lu  <ewlu@rivosinc.com>
18819         * config/riscv/riscv.md: Add "pushpop" and "mvpair" types
18820         * config/riscv/zc.md: Update types
18822 2023-09-11  Edwin Lu  <ewlu@rivosinc.com>
18824         * config/riscv/autovec-opt.md: Update types
18825         * config/riscv/autovec.md: likewise
18827 2023-09-11  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
18829         * config/s390/s390-builtins.def (s390_vec_signed_flt): Fix
18830         builtin flag.
18831         (s390_vec_unsigned_flt): Ditto.
18832         (s390_vec_revb_flt): Ditto.
18833         (s390_vec_reve_flt): Ditto.
18834         (s390_vclfnhs): Fix operand flags.
18835         (s390_vclfnls): Ditto.
18836         (s390_vcrnfs): Ditto.
18837         (s390_vcfn): Ditto.
18838         (s390_vcnf): Ditto.
18840 2023-09-11  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
18842         * config/s390/s390-builtins.def (O_U64): New.
18843         (O1_U64): Ditto.
18844         (O2_U64): Ditto.
18845         (O3_U64): Ditto.
18846         (O4_U64): Ditto.
18847         (O_M12): Change bit position.
18848         (O_S2): Ditto.
18849         (O_S3): Ditto.
18850         (O_S4): Ditto.
18851         (O_S5): Ditto.
18852         (O_S8): Ditto.
18853         (O_S12): Ditto.
18854         (O_S16): Ditto.
18855         (O_S32): Ditto.
18856         (O_ELEM): Ditto.
18857         (O_LIT): Ditto.
18858         (OB_DEF_VAR): Add operand constraints.
18859         (B_DEF): Ditto.
18860         * config/s390/s390.cc (s390_const_operand_ok): Honour 64 bit
18861         operands.
18863 2023-09-11  Andrew Pinski  <apinski@marvell.com>
18865         PR tree-optimization/111349
18866         * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): Add :c on
18867         the cmp part of the pattern.
18869 2023-09-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18871         PR target/111311
18872         * config/riscv/riscv.opt: Set default as scalable vectorization.
18874 2023-09-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18876         * config/riscv/riscv-protos.h (get_all_predecessors): Remove.
18877         (get_all_successors): Ditto.
18878         * config/riscv/riscv-v.cc (get_all_predecessors): Ditto.
18879         (get_all_successors): Ditto.
18881 2023-09-11  Jakub Jelinek  <jakub@redhat.com>
18883         PR middle-end/111329
18884         * pretty-print.h (pp_wide_int): Rewrite from macro into inline
18885         function.  For printing values which don't fit into digit_buffer
18886         use out-of-line function.
18887         * wide-int-print.h (pp_wide_int_large): Declare.
18888         * wide-int-print.cc: Include pretty-print.h.
18889         (pp_wide_int_large): Define.
18891 2023-09-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18893         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::global_eliminate_vsetvl_insn):
18894         Use dominance analysis.
18895         (pass_vsetvl::init): Ditto.
18896         (pass_vsetvl::done): Ditto.
18898 2023-09-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18900         PR target/111311
18901         * config/riscv/autovec.md: Add VLS modes.
18902         * config/riscv/riscv-protos.h (cmp_lmul_le_one): New function.
18903         (cmp_lmul_gt_one): Ditto.
18904         * config/riscv/riscv-v.cc (cmp_lmul_le_one): Ditto.
18905         (cmp_lmul_gt_one): Ditto.
18906         * config/riscv/riscv.cc (riscv_print_operand): Add VLS modes.
18907         (riscv_vectorize_vec_perm_const): Ditto.
18908         * config/riscv/vector-iterators.md: Ditto.
18909         * config/riscv/vector.md: Ditto.
18911 2023-09-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18913         * config/riscv/autovec-vls.md (*mov<mode>_vls): New pattern.
18914         * config/riscv/vector-iterators.md: New iterator
18916 2023-09-11  Andrew Pinski  <apinski@marvell.com>
18918         PR tree-optimization/111346
18919         * match.pd (`X CMP MINMAX`): Add `:c` on the cmp part
18920         of the pattern
18922 2023-09-11  liuhongt  <hongtao.liu@intel.com>
18924         PR target/111306
18925         PR target/111335
18926         * config/i386/sse.md (int_comm): New int_attr.
18927         (fma_<complexopname>_<mode><sdc_maskz_name><round_name>):
18928         Remove % for Complex conjugate operations since they're not
18929         commutative.
18930         (fma_<complexpairopname>_<mode>_pair): Ditto.
18931         (<avx512>_<complexopname>_<mode>_mask<round_name>): Ditto.
18932         (cmul<conj_op><mode>3): Ditto.
18934 2023-09-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18936         * config/riscv/riscv-v.cc (shuffle_generic_patterns): Expand
18937         fixed-vlmax/vls vector permutation.
18939 2023-09-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18941         * config/riscv/riscv-v.cc (shuffle_compress_patterns): Avoid unnecessary slideup.
18943 2023-09-10  Andrew Pinski  <apinski@marvell.com>
18945         PR tree-optimization/111331
18946         * match.pd (`(a CMP CST1) ? max<a,CST2> : a`):
18947         Fix the LE/GE comparison to the correct value.
18948         * tree-ssa-phiopt.cc (minmax_replacement):
18949         Fix the LE/GE comparison for the
18950         `(a CMP CST1) ? max<a,CST2> : a` optimization.
18952 2023-09-10  Iain Sandoe  <iain@sandoe.co.uk>
18954         * config/darwin.cc (darwin_function_section): Place unlikely
18955         executed global init code into the standard cold section.
18957 2023-09-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18959         PR target/111311
18960         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::vsetvl_fusion): Add TDF_DETAILS.
18961         (pass_vsetvl::pre_vsetvl): Ditto.
18962         (pass_vsetvl::init): Ditto.
18963         (pass_vsetvl::lazy_vsetvl): Ditto.
18965 2023-09-09  Lulu Cheng  <chenglulu@loongson.cn>
18967         * config/loongarch/loongarch.md (mulsidi3_64bit):
18968         Field unsigned extension support.
18969         (<u>muldi3_highpart): Modify template name.
18970         (<u>mulsi3_highpart): Likewise.
18971         (<u>mulsidi3_64bit): Field unsigned extension support.
18972         (<su>muldi3_highpart): Modify muldi3_highpart to
18973         smuldi3_highpart.
18974         (<su>mulsi3_highpart): Modify mulsi3_highpart to
18975         smulsi3_highpart.
18977 2023-09-09  Xi Ruoyao  <xry111@xry111.site>
18979         * config/loongarch/loongarch.cc (loongarch_block_move_straight):
18980         Check precondition (delta must be a power of 2) and use
18981         popcount_hwi instead of a homebrew loop.
18983 2023-09-09  Xi Ruoyao  <xry111@xry111.site>
18985         * config/loongarch/loongarch.h (LARCH_MAX_MOVE_PER_INSN):
18986         Define to the maximum amount of bytes able to be loaded or
18987         stored with one machine instruction.
18988         * config/loongarch/loongarch.cc (loongarch_mode_for_move_size):
18989         New static function.
18990         (loongarch_block_move_straight): Call
18991         loongarch_mode_for_move_size for machine_mode to be moved.
18992         (loongarch_expand_block_move): Use LARCH_MAX_MOVE_PER_INSN
18993         instead of UNITS_PER_WORD.
18995 2023-09-09  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18997         * config/riscv/vector-iterators.md: Fix floating-point operations predicate.
18999 2023-09-09  Lehua Ding  <lehua.ding@rivai.ai>
19001         * fold-const.cc (can_min_p): New function.
19002         (poly_int_binop): Try fold MIN_EXPR.
19004 2023-09-08  Aldy Hernandez  <aldyh@redhat.com>
19006         * range-op-float.cc (foperator_ltgt::fold_range): Do not special
19007         case VREL_EQ nor call frelop_early_resolve.
19009 2023-09-08  Christoph Müllner  <christoph.muellner@vrull.eu>
19011         * config/riscv/thead.md (*extend<SHORT:mode><SUPERQI:mode>2_th_ext):
19012         Remove broken INSN.
19013         (*extendhi<SUPERQI:mode>2_th_ext): New INSN.
19014         (*extendqi<SUPERQI:mode>2_th_ext): New INSN.
19016 2023-09-08  Christoph Müllner  <christoph.muellner@vrull.eu>
19018         * config/riscv/thead.md: Use more appropriate mode attributes
19019         for extensions.
19021 2023-09-08  Guo Jie  <guojie@loongson.cn>
19023         * common/config/loongarch/loongarch-common.cc:
19024         (default_options loongarch_option_optimization_table):
19025         Default to -fsched-pressure.
19027 2023-09-08  Yang Yujie  <yangyujie@loongson.cn>
19029         * config.gcc: remove non-POSIX syntax "<<<".
19031 2023-09-08  Christoph Müllner  <christoph.muellner@vrull.eu>
19033         * config/riscv/bitmanip.md (*extend<SHORT:mode><SUPERQI:mode>2_zbb):
19034         Rename postfix to _bitmanip.
19035         (*extend<SHORT:mode><SUPERQI:mode>2_bitmanip): Renamed pattern.
19036         (*zero_extendhi<GPR:mode>2_zbb): Remove duplicated pattern.
19038 2023-09-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19040         * config/riscv/riscv.cc (riscv_pass_in_vector_p): Only allow RVV type.
19042 2023-09-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19044         * config/riscv/riscv.cc (riscv_hard_regno_nregs): Fix bug.
19046 2023-09-07  liuhongt  <hongtao.liu@intel.com>
19048         * config/i386/sse.md
19049         (<avx512>_vpermt2var<mode>3<sd_maskz_name>): New define_insn.
19050         (VHFBF_AVX512VL): New mode iterator.
19051         (VI2HFBF_AVX512VL): New mode iterator.
19053 2023-09-07  Aldy Hernandez  <aldyh@redhat.com>
19055         * value-range.h (contains_zero_p): Return false for undefined ranges.
19056         * range-op-float.cc (operator_gt::op1_op2_relation): Adjust for
19057         contains_zero_p change above.
19058         (operator_ge::op1_op2_relation): Same.
19059         (operator_equal::op1_op2_relation): Same.
19060         (operator_not_equal::op1_op2_relation): Same.
19061         (operator_lt::op1_op2_relation): Same.
19062         (operator_le::op1_op2_relation): Same.
19063         (operator_ge::op1_op2_relation): Same.
19064         * range-op.cc (operator_equal::op1_op2_relation): Same.
19065         (operator_not_equal::op1_op2_relation): Same.
19066         (operator_lt::op1_op2_relation): Same.
19067         (operator_le::op1_op2_relation): Same.
19068         (operator_cast::op1_range): Same.
19069         (set_nonzero_range_from_mask): Same.
19070         (operator_bitwise_xor::op1_range): Same.
19071         (operator_addr_expr::fold_range): Same.
19072         (operator_addr_expr::op1_range): Same.
19074 2023-09-07  Andrew MacLeod  <amacleod@redhat.com>
19076         PR tree-optimization/110875
19077         * gimple-range.cc (gimple_ranger::prefill_name): Only invoke
19078         cache-prefilling routine when the ssa-name has no global value.
19080 2023-09-07  Vladimir N. Makarov  <vmakarov@redhat.com>
19082         PR target/111225
19083         * lra-constraints.cc (goal_reuse_alt_p): New global flag.
19084         (process_alt_operands): Set up the flag.  Clear flag for chosen
19085         alternative with special memory constraints.
19086         (process_alt_operands): Set up used insn alternative depending on the flag.
19088 2023-09-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19090         * config/riscv/autovec-vls.md: Add VLS mask modes mov patterns.
19091         * config/riscv/riscv.md: Ditto.
19092         * config/riscv/vector-iterators.md: Ditto.
19093         * config/riscv/vector.md: Ditto.
19095 2023-09-07  David Malcolm  <dmalcolm@redhat.com>
19097         * diagnostic-core.h (error_meta): New decl.
19098         * diagnostic.cc (error_meta): New.
19100 2023-09-07  Jakub Jelinek  <jakub@redhat.com>
19102         PR c/102989
19103         * expr.cc (expand_expr_real_1): Don't call targetm.c.bitint_type_info
19104         inside gcc_assert, as later code relies on it filling info variable.
19105         * gimple-fold.cc (clear_padding_bitint_needs_padding_p,
19106         clear_padding_type): Likewise.
19107         * varasm.cc (output_constant): Likewise.
19108         * fold-const.cc (native_encode_int, native_interpret_int): Likewise.
19109         * stor-layout.cc (finish_bitfield_representative, layout_type):
19110         Likewise.
19111         * gimple-lower-bitint.cc (bitint_precision_kind): Likewise.
19113 2023-09-07  Xi Ruoyao  <xry111@xry111.site>
19115         PR target/111252
19116         * config/loongarch/loongarch-protos.h
19117         (loongarch_pre_reload_split): Declare new function.
19118         (loongarch_use_bstrins_for_ior_with_mask): Likewise.
19119         * config/loongarch/loongarch.cc
19120         (loongarch_pre_reload_split): Implement.
19121         (loongarch_use_bstrins_for_ior_with_mask): Likewise.
19122         * config/loongarch/predicates.md (ins_zero_bitmask_operand):
19123         New predicate.
19124         * config/loongarch/loongarch.md (bstrins_<mode>_for_mask):
19125         New define_insn_and_split.
19126         (bstrins_<mode>_for_ior_mask): Likewise.
19127         (define_peephole2): Further optimize code sequence produced by
19128         bstrins_<mode>_for_ior_mask if possible.
19130 2023-09-07  Richard Sandiford  <richard.sandiford@arm.com>
19132         * lra-eliminations.cc (lra_eliminate_regs_1): Use simplify_gen_binary
19133         rather than gen_rtx_PLUS.
19135 2023-09-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19137         PR target/111313
19138         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_earliest_vsetvls): Remove.
19139         (pass_vsetvl::df_post_optimization): Remove incorrect function.
19141 2023-09-07  Tsukasa OI  <research_trasio@irq.a4lg.com>
19143         * common/config/riscv/riscv-common.cc (riscv_ext_flag_table):
19144         Parse 'XVentanaCondOps' extension.
19145         * config/riscv/riscv-opts.h (MASK_XVENTANACONDOPS): New.
19146         (TARGET_XVENTANACONDOPS): Ditto.
19147         (TARGET_ZICOND_LIKE): New to represent targets with conditional
19148         moves like 'Zicond'.  It includes RV64 + 'XVentanaCondOps'.
19149         * config/riscv/riscv.cc (riscv_rtx_costs): Replace TARGET_ZICOND
19150         with TARGET_ZICOND_LIKE.
19151         (riscv_expand_conditional_move): Ditto.
19152         * config/riscv/riscv.md (mov<mode>cc): Replace TARGET_ZICOND with
19153         TARGET_ZICOND_LIKE.
19154         * config/riscv/riscv.opt: Add new riscv_xventana_subext.
19155         * config/riscv/zicond.md: Modify description.
19156         (eqz_ventana): New to match corresponding czero instructions.
19157         (nez_ventana): Ditto.
19158         (*czero.<eqz>.<GPR><X>): Emit a 'XVentanaCondOps' instruction if
19159         'Zicond' is not available but 'XVentanaCondOps' + RV64 is.
19160         (*czero.<eqz>.<GPR><X>): Ditto.
19161         (*czero.eqz.<GPR><X>.opt1): Ditto.
19162         (*czero.nez.<GPR><X>.opt2): Ditto.
19164 2023-09-06  Ian Lance Taylor  <iant@golang.org>
19166         PR go/111310
19167         * godump.cc (go_format_type): Handle BITINT_TYPE.
19169 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
19171         PR c/102989
19172         * tree.cc (build_one_cst, build_minus_one_cst): Handle BITINT_TYPE
19173         like INTEGER_TYPE.
19175 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
19177         PR c/102989
19178         * gimple-lower-bitint.cc (bitint_large_huge::if_then_else,
19179         bitint_large_huge::if_then_if_then_else): Use make_single_succ_edge
19180         rather than make_edge, initialize bb->count.
19182 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
19184         PR c/102989
19185         * doc/libgcc.texi (Bit-precise integer arithmetic functions):
19186         Document general rules for _BitInt support library functions
19187         and document __mulbitint3 and __divmodbitint4.
19188         (Conversion functions): Document __fix{s,d,x,t}fbitint,
19189         __floatbitint{s,d,x,t,h,b}f, __bid_fix{s,d,t}dbitint and
19190         __bid_floatbitint{s,d,t}d.
19192 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
19194         PR c/102989
19195         * glimits.h (BITINT_MAXWIDTH): Define if __BITINT_MAXWIDTH__ is
19196         predefined.
19198 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
19200         PR c/102989
19201         * internal-fn.cc (expand_ubsan_result_store): Add LHS, MODE and
19202         DO_ERROR arguments.  For non-mode precision BITINT_TYPE results
19203         check if all padding bits up to mode precision are zeros or sign
19204         bit copies and if not, jump to DO_ERROR.
19205         (expand_addsub_overflow, expand_neg_overflow, expand_mul_overflow):
19206         Adjust expand_ubsan_result_store callers.
19207         * ubsan.cc: Include target.h and langhooks.h.
19208         (ubsan_encode_value): Pass BITINT_TYPE values which fit into pointer
19209         size converted to pointer sized integer, pass BITINT_TYPE values
19210         which fit into TImode (if supported) or DImode as those integer types
19211         or otherwise for now punt (pass 0).
19212         (ubsan_type_descriptor): Handle BITINT_TYPE.  For pstyle of
19213         UBSAN_PRINT_FORCE_INT use TK_Integer (0x0000) mode with a
19214         TImode/DImode precision rather than TK_Unknown used otherwise for
19215         large/huge BITINT_TYPEs.
19216         (instrument_si_overflow): Instrument BITINT_TYPE operations even when
19217         they don't have mode precision.
19218         * ubsan.h (enum ubsan_print_style): New enumerator.
19220 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
19222         PR c/102989
19223         * config/i386/i386.cc (classify_argument): Handle BITINT_TYPE.
19224         (ix86_bitint_type_info): New function.
19225         (TARGET_C_BITINT_TYPE_INFO): Redefine.
19227 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
19229         PR c/102989
19230         * Makefile.in (OBJS): Add gimple-lower-bitint.o.
19231         * passes.def: Add pass_lower_bitint after pass_lower_complex and
19232         pass_lower_bitint_O0 after pass_lower_complex_O0.
19233         * tree-pass.h (PROP_gimple_lbitint): Define.
19234         (make_pass_lower_bitint_O0, make_pass_lower_bitint): Declare.
19235         * gimple-lower-bitint.h: New file.
19236         * tree-ssa-live.h (struct _var_map): Add bitint member.
19237         (init_var_map): Adjust declaration.
19238         (region_contains_p): Handle map->bitint like map->outofssa_p.
19239         * tree-ssa-live.cc (init_var_map): Add BITINT argument, initialize
19240         map->bitint and set map->outofssa_p to false if it is non-NULL.
19241         * tree-ssa-coalesce.cc: Include gimple-lower-bitint.h.
19242         (build_ssa_conflict_graph): Call build_bitint_stmt_ssa_conflicts if
19243         map->bitint.
19244         (create_coalesce_list_for_region): For map->bitint ignore SSA_NAMEs
19245         not in that bitmap, and allow res without default def.
19246         (compute_optimized_partition_bases): In map->bitint mode try hard to
19247         coalesce any SSA_NAMEs with the same size.
19248         (coalesce_bitint): New function.
19249         (coalesce_ssa_name): In map->bitint mode, or map->bitmap into
19250         used_in_copies and call coalesce_bitint.
19251         * gimple-lower-bitint.cc: New file.
19253 2023-09-06  Jakub Jelinek  <jakub@redhat.com>
19255         PR c/102989
19256         * tree.def (BITINT_TYPE): New type.
19257         * tree.h (TREE_CHECK6, TREE_NOT_CHECK6): Define.
19258         (NUMERICAL_TYPE_CHECK, INTEGRAL_TYPE_P): Include
19259         BITINT_TYPE.
19260         (BITINT_TYPE_P): Define.
19261         (CONSTRUCTOR_BITFIELD_P): Return true even for BLKmode bit-fields if
19262         they have BITINT_TYPE type.
19263         (tree_check6, tree_not_check6): New inline functions.
19264         (any_integral_type_check): Include BITINT_TYPE.
19265         (build_bitint_type): Declare.
19266         * tree.cc (tree_code_size, wide_int_to_tree_1, cache_integer_cst,
19267         build_zero_cst, type_hash_canon_hash, type_cache_hasher::equal,
19268         type_hash_canon): Handle BITINT_TYPE.
19269         (bitint_type_cache): New variable.
19270         (build_bitint_type): New function.
19271         (signed_or_unsigned_type_for, verify_type_variant, verify_type):
19272         Handle BITINT_TYPE.
19273         (tree_cc_finalize): Free bitint_type_cache.
19274         * builtins.cc (type_to_class): Handle BITINT_TYPE.
19275         (fold_builtin_unordered_cmp): Handle BITINT_TYPE like INTEGER_TYPE.
19276         * cfgexpand.cc (expand_debug_expr): Punt on BLKmode BITINT_TYPE
19277         INTEGER_CSTs.
19278         * convert.cc (convert_to_pointer_1, convert_to_real_1,
19279         convert_to_complex_1): Handle BITINT_TYPE like INTEGER_TYPE.
19280         (convert_to_integer_1): Likewise.  For BITINT_TYPE don't check
19281         GET_MODE_PRECISION (TYPE_MODE (type)).
19282         * doc/generic.texi (BITINT_TYPE): Document.
19283         * doc/tm.texi.in (TARGET_C_BITINT_TYPE_INFO): New.
19284         * doc/tm.texi: Regenerated.
19285         * dwarf2out.cc (base_type_die, is_base_type, modified_type_die,
19286         gen_type_die_with_usage): Handle BITINT_TYPE.
19287         (rtl_for_decl_init): Punt on BLKmode BITINT_TYPE INTEGER_CSTs or
19288         handle those which fit into shwi.
19289         * expr.cc (expand_expr_real_1): Define EXTEND_BITINT macro, reduce
19290         to bitfield precision reads from BITINT_TYPE vars, parameters or
19291         memory locations.  Expand large/huge BITINT_TYPE INTEGER_CSTs into
19292         memory.
19293         * fold-const.cc (fold_convert_loc, make_range_step): Handle
19294         BITINT_TYPE.
19295         (extract_muldiv_1): For BITINT_TYPE use TYPE_PRECISION rather than
19296         GET_MODE_SIZE (SCALAR_INT_TYPE_MODE).
19297         (native_encode_int, native_interpret_int, native_interpret_expr):
19298         Handle BITINT_TYPE.
19299         * gimple-expr.cc (useless_type_conversion_p): Make BITINT_TYPE
19300         to some other integral type or vice versa conversions non-useless.
19301         * gimple-fold.cc (gimple_fold_builtin_memset): Punt for BITINT_TYPE.
19302         (clear_padding_unit): Mention in comment that _BitInt types don't need
19303         to fit either.
19304         (clear_padding_bitint_needs_padding_p): New function.
19305         (clear_padding_type_may_have_padding_p): Handle BITINT_TYPE.
19306         (clear_padding_type): Likewise.
19307         * internal-fn.cc (expand_mul_overflow): For unsigned non-mode
19308         precision operands force pos_neg? to 1.
19309         (expand_MULBITINT, expand_DIVMODBITINT, expand_FLOATTOBITINT,
19310         expand_BITINTTOFLOAT): New functions.
19311         * internal-fn.def (MULBITINT, DIVMODBITINT, FLOATTOBITINT,
19312         BITINTTOFLOAT): New internal functions.
19313         * internal-fn.h (expand_MULBITINT, expand_DIVMODBITINT,
19314         expand_FLOATTOBITINT, expand_BITINTTOFLOAT): Declare.
19315         * match.pd (non-equality compare simplifications from fold_binary):
19316         Punt if TYPE_MODE (arg1_type) is BLKmode.
19317         * pretty-print.h (pp_wide_int): Handle printing of large precision
19318         wide_ints which would buffer overflow digit_buffer.
19319         * stor-layout.cc (finish_bitfield_representative): For bit-fields
19320         with BITINT_TYPE, prefer representatives with precisions in
19321         multiple of limb precision.
19322         (layout_type): Handle BITINT_TYPE.  Handle COMPLEX_TYPE with BLKmode
19323         element type and assert it is BITINT_TYPE.
19324         * target.def (bitint_type_info): New C target hook.
19325         * target.h (struct bitint_info): New type.
19326         * targhooks.cc (default_bitint_type_info): New function.
19327         * targhooks.h (default_bitint_type_info): Declare.
19328         * tree-pretty-print.cc (dump_generic_node): Handle BITINT_TYPE.
19329         Handle printing large wide_ints which would buffer overflow
19330         digit_buffer.
19331         * tree-ssa-sccvn.cc: Include target.h.
19332         (eliminate_dom_walker::eliminate_stmt): Punt for large/huge
19333         BITINT_TYPE.
19334         * tree-switch-conversion.cc (jump_table_cluster::emit): For more than
19335         64-bit BITINT_TYPE subtract low bound from expression and cast to
19336         64-bit integer type both the controlling expression and case labels.
19337         * typeclass.h (enum type_class): Add bitint_type_class enumerator.
19338         * varasm.cc (output_constant): Handle BITINT_TYPE INTEGER_CSTs.
19339         * vr-values.cc (check_for_binary_op_overflow): Use widest2_int rather
19340         than widest_int.
19341         (simplify_using_ranges::simplify_internal_call_using_ranges): Use
19342         unsigned_type_for rather than build_nonstandard_integer_type.
19344 2023-09-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19346         PR target/111296
19347         * config/riscv/riscv.cc (riscv_modes_tieable_p): Fix incorrect mode
19348         tieable for RVV modes.
19350 2023-09-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19352         PR target/111295
19353         * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Bug fix.
19355 2023-09-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19357         * config/riscv/riscv-vector-switch.def (VLS_ENTRY): Remove TARGET_64BIT
19359 2023-09-06  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
19361         * config/xtensa/xtensa.cc (xtensa_expand_scc):
19362         Add code for particular constants (only 0 and INT_MIN for now)
19363         for EQ/NE boolean evaluation in SImode.
19364         * config/xtensa/xtensa.md (*eqne_INT_MIN): Remove because its
19365         implementation has been integrated into the above.
19367 2023-09-06  Lehua Ding  <lehua.ding@rivai.ai>
19369         PR target/111232
19370         * config/riscv/autovec-opt.md (@pred_single_widen_mul<any_extend:su><mode>):
19371         Delete.
19372         (*pred_widen_mulsu<mode>): Delete.
19373         (*pred_single_widen_mul<mode>): Delete.
19374         (*dual_widen_<any_widen_binop:optab><any_extend:su><mode>):
19375         Add new combine patterns.
19376         (*single_widen_sub<any_extend:su><mode>): Ditto.
19377         (*single_widen_add<any_extend:su><mode>): Ditto.
19378         (*single_widen_mult<any_extend:su><mode>): Ditto.
19379         (*dual_widen_mulsu<mode>): Ditto.
19380         (*dual_widen_mulus<mode>): Ditto.
19381         (*dual_widen_<optab><mode>): Ditto.
19382         (*single_widen_add<mode>): Ditto.
19383         (*single_widen_sub<mode>): Ditto.
19384         (*single_widen_mult<mode>): Ditto.
19385         * config/riscv/autovec.md (<optab><mode>3):
19386         Change define_expand to define_insn_and_split.
19387         (<optab><mode>2): Ditto.
19388         (abs<mode>2): Ditto.
19389         (smul<mode>3_highpart): Ditto.
19390         (umul<mode>3_highpart): Ditto.
19392 2023-09-06  Lehua Ding  <lehua.ding@rivai.ai>
19394         * config/riscv/riscv-protos.h (riscv_declare_function_name): Add protos.
19395         (riscv_asm_output_alias): Ditto.
19396         (riscv_asm_output_external): Ditto.
19397         * config/riscv/riscv.cc (riscv_asm_output_variant_cc):
19398         Output .variant_cc directive for vector function.
19399         (riscv_declare_function_name): Ditto.
19400         (riscv_asm_output_alias): Ditto.
19401         (riscv_asm_output_external): Ditto.
19402         * config/riscv/riscv.h (ASM_DECLARE_FUNCTION_NAME):
19403         Implement ASM_DECLARE_FUNCTION_NAME.
19404         (ASM_OUTPUT_DEF_FROM_DECLS): Implement ASM_OUTPUT_DEF_FROM_DECLS.
19405         (ASM_OUTPUT_EXTERNAL): Implement ASM_OUTPUT_EXTERNAL.
19407 2023-09-06  Lehua Ding  <lehua.ding@rivai.ai>
19409         * config/riscv/riscv-sr.cc (riscv_remove_unneeded_save_restore_calls): Pass riscv_cc.
19410         * config/riscv/riscv.cc (struct riscv_frame_info): Add new fileds.
19411         (riscv_frame_info::reset): Reset new fileds.
19412         (riscv_call_tls_get_addr): Pass riscv_cc.
19413         (riscv_function_arg): Return riscv_cc for call patterm.
19414         (get_riscv_cc): New function return riscv_cc from rtl call_insn.
19415         (riscv_insn_callee_abi): Implement TARGET_INSN_CALLEE_ABI.
19416         (riscv_save_reg_p): Add vector callee-saved check.
19417         (riscv_stack_align): Add vector save area comment.
19418         (riscv_compute_frame_info): Ditto.
19419         (riscv_restore_reg): Update for type change.
19420         (riscv_for_each_saved_v_reg): New function save vector registers.
19421         (riscv_first_stack_step): Handle funciton with vector callee-saved registers.
19422         (riscv_expand_prologue): Ditto.
19423         (riscv_expand_epilogue): Ditto.
19424         (riscv_output_mi_thunk): Pass riscv_cc.
19425         (TARGET_INSN_CALLEE_ABI): Implement TARGET_INSN_CALLEE_ABI.
19426         * config/riscv/riscv.h (get_riscv_cc): Export get_riscv_cc function.
19427         * config/riscv/riscv.md: Add CALLEE_CC operand for call pattern.
19429 2023-09-06  Lehua Ding  <lehua.ding@rivai.ai>
19431         * config/riscv/riscv-protos.h (builtin_type_p): New function for checking vector type.
19432         * config/riscv/riscv-vector-builtins.cc (builtin_type_p): Ditto.
19433         * config/riscv/riscv.cc (struct riscv_arg_info): New fields.
19434         (riscv_init_cumulative_args): Setup variant_cc field.
19435         (riscv_vector_type_p): New function for checking vector type.
19436         (riscv_hard_regno_nregs): Hoist declare.
19437         (riscv_get_vector_arg): Subroutine of riscv_get_arg_info.
19438         (riscv_get_arg_info): Support vector cc.
19439         (riscv_function_arg_advance): Update cum.
19440         (riscv_pass_by_reference): Handle vector args.
19441         (riscv_v_abi): New function return vector abi.
19442         (riscv_return_value_is_vector_type_p): New function for check vector arguments.
19443         (riscv_arguments_is_vector_type_p): New function for check vector returns.
19444         (riscv_fntype_abi): Implement TARGET_FNTYPE_ABI.
19445         (TARGET_FNTYPE_ABI): Implement TARGET_FNTYPE_ABI.
19446         * config/riscv/riscv.h (GCC_RISCV_H): Define macros for vector abi.
19447         (MAX_ARGS_IN_VECTOR_REGISTERS): Ditto.
19448         (MAX_ARGS_IN_MASK_REGISTERS): Ditto.
19449         (V_ARG_FIRST): Ditto.
19450         (V_ARG_LAST): Ditto.
19451         (enum riscv_cc): Define all RISCV_CC variants.
19452         * config/riscv/riscv.opt: Add --param=riscv-vector-abi.
19454 2023-09-06  Lehua Ding  <lehua.ding@rivai.ai>
19456         * config/riscv/autovec-opt.md (*cond_<optab><mode>):
19457         Add sqrt + vcond_mask combine pattern.
19458         * config/riscv/autovec.md (<optab><mode>2):
19459         Change define_expand to define_insn_and_split.
19461 2023-09-06  Jason Merrill  <jason@redhat.com>
19463         * common.opt: Update -fabi-version=19.
19465 2023-09-06  Tsukasa OI  <research_trasio@irq.a4lg.com>
19467         * config/riscv/zicond.md: Add closing parent to a comment.
19469 2023-09-06  Tsukasa OI  <research_trasio@irq.a4lg.com>
19471         * config/riscv/riscv.cc (riscv_expand_conditional_move): Force
19472         large constant cons/alt into a register.
19474 2023-09-05  Christoph Müllner  <christoph.muellner@vrull.eu>
19476         * config/riscv/riscv.cc (riscv_build_integer_1): Don't
19477         require one zero bit in the upper 32 bits for LI+RORI synthesis.
19479 2023-09-05  Jeff Law  <jlaw@ventanamicro.com>
19481         * config/riscv/bitmanip.md (bswapsi2): Expose for TARGET_64BIT.
19483 2023-09-05  Andrew Pinski  <apinski@marvell.com>
19485         PR tree-optimization/98710
19486         * match.pd (`(x | c) & ~(y | c)`, `(x & c) | ~(y & c)`): New pattern.
19487         (`x & ~(y | x)`, `x | ~(y & x)`): New patterns.
19489 2023-09-05  Andrew Pinski  <apinski@marvell.com>
19491         PR tree-optimization/103536
19492         * match.pd (`(x | y) & (x & z)`,
19493         `(x & y) | (x | z)`): New patterns.
19495 2023-09-05  Andrew Pinski  <apinski@marvell.com>
19497         PR tree-optimization/107137
19498         * match.pd (`(nop_convert)-(convert)a`): New pattern.
19500 2023-09-05  Andrew Pinski  <apinski@marvell.com>
19502         PR tree-optimization/96694
19503         * match.pd (`~MAX(~X, Y)`, `~MIN(~X, Y)`): New patterns.
19505 2023-09-05  Andrew Pinski  <apinski@marvell.com>
19507         PR tree-optimization/105832
19508         * match.pd (`(1 >> X) != 0`): New pattern
19510 2023-09-05  Edwin Lu  <ewlu@rivosinc.com>
19512         * config/riscv/riscv.md: Update/Add types
19514 2023-09-05  Edwin Lu  <ewlu@rivosinc.com>
19516         * config/riscv/pic.md: Update types
19518 2023-09-05  Christoph Müllner  <christoph.muellner@vrull.eu>
19520         * config/riscv/riscv.cc (riscv_build_integer_1): Enable constant
19521         synthesis with rotate-right for XTheadBb.
19523 2023-09-05  Vineet Gupta  <vineetg@rivosinc.com>
19525         * config/riscv/zicond.md: Fix op2 pattern.
19527 2023-09-05  Szabolcs Nagy  <szabolcs.nagy@arm.com>
19529         * config/aarch64/aarch64.h (AARCH64_ISA_RCPC): Remove dup.
19531 2023-09-05  Xi Ruoyao  <xry111@xry111.site>
19533         * config/loongarch/loongarch-opts.h (HAVE_AS_EXPLICIT_RELOCS):
19534         Define to 0 if not defined yet.
19536 2023-09-05  Kito Cheng  <kito.cheng@sifive.com>
19538         * config/riscv/linux.h (TARGET_ASM_FILE_END): Move ...
19539         * config/riscv/riscv.cc (TARGET_ASM_FILE_END): to here.
19541 2023-09-05  Pan Li  <pan2.li@intel.com>
19543         * config/riscv/autovec-vls.md (copysign<mode>3): New pattern.
19544         * config/riscv/vector.md: Extend iterator for VLS.
19546 2023-09-05  Lulu Cheng  <chenglulu@loongson.cn>
19548         * config.gcc: Export the header file lasxintrin.h.
19549         * config/loongarch/loongarch-builtins.cc (enum loongarch_builtin_type):
19550         Add Loongson ASX builtin functions support.
19551         (AVAIL_ALL): Ditto.
19552         (LASX_BUILTIN): Ditto.
19553         (LASX_NO_TARGET_BUILTIN): Ditto.
19554         (LASX_BUILTIN_TEST_BRANCH): Ditto.
19555         (CODE_FOR_lasx_xvsadd_b): Ditto.
19556         (CODE_FOR_lasx_xvsadd_h): Ditto.
19557         (CODE_FOR_lasx_xvsadd_w): Ditto.
19558         (CODE_FOR_lasx_xvsadd_d): Ditto.
19559         (CODE_FOR_lasx_xvsadd_bu): Ditto.
19560         (CODE_FOR_lasx_xvsadd_hu): Ditto.
19561         (CODE_FOR_lasx_xvsadd_wu): Ditto.
19562         (CODE_FOR_lasx_xvsadd_du): Ditto.
19563         (CODE_FOR_lasx_xvadd_b): Ditto.
19564         (CODE_FOR_lasx_xvadd_h): Ditto.
19565         (CODE_FOR_lasx_xvadd_w): Ditto.
19566         (CODE_FOR_lasx_xvadd_d): Ditto.
19567         (CODE_FOR_lasx_xvaddi_bu): Ditto.
19568         (CODE_FOR_lasx_xvaddi_hu): Ditto.
19569         (CODE_FOR_lasx_xvaddi_wu): Ditto.
19570         (CODE_FOR_lasx_xvaddi_du): Ditto.
19571         (CODE_FOR_lasx_xvand_v): Ditto.
19572         (CODE_FOR_lasx_xvandi_b): Ditto.
19573         (CODE_FOR_lasx_xvbitsel_v): Ditto.
19574         (CODE_FOR_lasx_xvseqi_b): Ditto.
19575         (CODE_FOR_lasx_xvseqi_h): Ditto.
19576         (CODE_FOR_lasx_xvseqi_w): Ditto.
19577         (CODE_FOR_lasx_xvseqi_d): Ditto.
19578         (CODE_FOR_lasx_xvslti_b): Ditto.
19579         (CODE_FOR_lasx_xvslti_h): Ditto.
19580         (CODE_FOR_lasx_xvslti_w): Ditto.
19581         (CODE_FOR_lasx_xvslti_d): Ditto.
19582         (CODE_FOR_lasx_xvslti_bu): Ditto.
19583         (CODE_FOR_lasx_xvslti_hu): Ditto.
19584         (CODE_FOR_lasx_xvslti_wu): Ditto.
19585         (CODE_FOR_lasx_xvslti_du): Ditto.
19586         (CODE_FOR_lasx_xvslei_b): Ditto.
19587         (CODE_FOR_lasx_xvslei_h): Ditto.
19588         (CODE_FOR_lasx_xvslei_w): Ditto.
19589         (CODE_FOR_lasx_xvslei_d): Ditto.
19590         (CODE_FOR_lasx_xvslei_bu): Ditto.
19591         (CODE_FOR_lasx_xvslei_hu): Ditto.
19592         (CODE_FOR_lasx_xvslei_wu): Ditto.
19593         (CODE_FOR_lasx_xvslei_du): Ditto.
19594         (CODE_FOR_lasx_xvdiv_b): Ditto.
19595         (CODE_FOR_lasx_xvdiv_h): Ditto.
19596         (CODE_FOR_lasx_xvdiv_w): Ditto.
19597         (CODE_FOR_lasx_xvdiv_d): Ditto.
19598         (CODE_FOR_lasx_xvdiv_bu): Ditto.
19599         (CODE_FOR_lasx_xvdiv_hu): Ditto.
19600         (CODE_FOR_lasx_xvdiv_wu): Ditto.
19601         (CODE_FOR_lasx_xvdiv_du): Ditto.
19602         (CODE_FOR_lasx_xvfadd_s): Ditto.
19603         (CODE_FOR_lasx_xvfadd_d): Ditto.
19604         (CODE_FOR_lasx_xvftintrz_w_s): Ditto.
19605         (CODE_FOR_lasx_xvftintrz_l_d): Ditto.
19606         (CODE_FOR_lasx_xvftintrz_wu_s): Ditto.
19607         (CODE_FOR_lasx_xvftintrz_lu_d): Ditto.
19608         (CODE_FOR_lasx_xvffint_s_w): Ditto.
19609         (CODE_FOR_lasx_xvffint_d_l): Ditto.
19610         (CODE_FOR_lasx_xvffint_s_wu): Ditto.
19611         (CODE_FOR_lasx_xvffint_d_lu): Ditto.
19612         (CODE_FOR_lasx_xvfsub_s): Ditto.
19613         (CODE_FOR_lasx_xvfsub_d): Ditto.
19614         (CODE_FOR_lasx_xvfmul_s): Ditto.
19615         (CODE_FOR_lasx_xvfmul_d): Ditto.
19616         (CODE_FOR_lasx_xvfdiv_s): Ditto.
19617         (CODE_FOR_lasx_xvfdiv_d): Ditto.
19618         (CODE_FOR_lasx_xvfmax_s): Ditto.
19619         (CODE_FOR_lasx_xvfmax_d): Ditto.
19620         (CODE_FOR_lasx_xvfmin_s): Ditto.
19621         (CODE_FOR_lasx_xvfmin_d): Ditto.
19622         (CODE_FOR_lasx_xvfsqrt_s): Ditto.
19623         (CODE_FOR_lasx_xvfsqrt_d): Ditto.
19624         (CODE_FOR_lasx_xvflogb_s): Ditto.
19625         (CODE_FOR_lasx_xvflogb_d): Ditto.
19626         (CODE_FOR_lasx_xvmax_b): Ditto.
19627         (CODE_FOR_lasx_xvmax_h): Ditto.
19628         (CODE_FOR_lasx_xvmax_w): Ditto.
19629         (CODE_FOR_lasx_xvmax_d): Ditto.
19630         (CODE_FOR_lasx_xvmaxi_b): Ditto.
19631         (CODE_FOR_lasx_xvmaxi_h): Ditto.
19632         (CODE_FOR_lasx_xvmaxi_w): Ditto.
19633         (CODE_FOR_lasx_xvmaxi_d): Ditto.
19634         (CODE_FOR_lasx_xvmax_bu): Ditto.
19635         (CODE_FOR_lasx_xvmax_hu): Ditto.
19636         (CODE_FOR_lasx_xvmax_wu): Ditto.
19637         (CODE_FOR_lasx_xvmax_du): Ditto.
19638         (CODE_FOR_lasx_xvmaxi_bu): Ditto.
19639         (CODE_FOR_lasx_xvmaxi_hu): Ditto.
19640         (CODE_FOR_lasx_xvmaxi_wu): Ditto.
19641         (CODE_FOR_lasx_xvmaxi_du): Ditto.
19642         (CODE_FOR_lasx_xvmin_b): Ditto.
19643         (CODE_FOR_lasx_xvmin_h): Ditto.
19644         (CODE_FOR_lasx_xvmin_w): Ditto.
19645         (CODE_FOR_lasx_xvmin_d): Ditto.
19646         (CODE_FOR_lasx_xvmini_b): Ditto.
19647         (CODE_FOR_lasx_xvmini_h): Ditto.
19648         (CODE_FOR_lasx_xvmini_w): Ditto.
19649         (CODE_FOR_lasx_xvmini_d): Ditto.
19650         (CODE_FOR_lasx_xvmin_bu): Ditto.
19651         (CODE_FOR_lasx_xvmin_hu): Ditto.
19652         (CODE_FOR_lasx_xvmin_wu): Ditto.
19653         (CODE_FOR_lasx_xvmin_du): Ditto.
19654         (CODE_FOR_lasx_xvmini_bu): Ditto.
19655         (CODE_FOR_lasx_xvmini_hu): Ditto.
19656         (CODE_FOR_lasx_xvmini_wu): Ditto.
19657         (CODE_FOR_lasx_xvmini_du): Ditto.
19658         (CODE_FOR_lasx_xvmod_b): Ditto.
19659         (CODE_FOR_lasx_xvmod_h): Ditto.
19660         (CODE_FOR_lasx_xvmod_w): Ditto.
19661         (CODE_FOR_lasx_xvmod_d): Ditto.
19662         (CODE_FOR_lasx_xvmod_bu): Ditto.
19663         (CODE_FOR_lasx_xvmod_hu): Ditto.
19664         (CODE_FOR_lasx_xvmod_wu): Ditto.
19665         (CODE_FOR_lasx_xvmod_du): Ditto.
19666         (CODE_FOR_lasx_xvmul_b): Ditto.
19667         (CODE_FOR_lasx_xvmul_h): Ditto.
19668         (CODE_FOR_lasx_xvmul_w): Ditto.
19669         (CODE_FOR_lasx_xvmul_d): Ditto.
19670         (CODE_FOR_lasx_xvclz_b): Ditto.
19671         (CODE_FOR_lasx_xvclz_h): Ditto.
19672         (CODE_FOR_lasx_xvclz_w): Ditto.
19673         (CODE_FOR_lasx_xvclz_d): Ditto.
19674         (CODE_FOR_lasx_xvnor_v): Ditto.
19675         (CODE_FOR_lasx_xvor_v): Ditto.
19676         (CODE_FOR_lasx_xvori_b): Ditto.
19677         (CODE_FOR_lasx_xvnori_b): Ditto.
19678         (CODE_FOR_lasx_xvpcnt_b): Ditto.
19679         (CODE_FOR_lasx_xvpcnt_h): Ditto.
19680         (CODE_FOR_lasx_xvpcnt_w): Ditto.
19681         (CODE_FOR_lasx_xvpcnt_d): Ditto.
19682         (CODE_FOR_lasx_xvxor_v): Ditto.
19683         (CODE_FOR_lasx_xvxori_b): Ditto.
19684         (CODE_FOR_lasx_xvsll_b): Ditto.
19685         (CODE_FOR_lasx_xvsll_h): Ditto.
19686         (CODE_FOR_lasx_xvsll_w): Ditto.
19687         (CODE_FOR_lasx_xvsll_d): Ditto.
19688         (CODE_FOR_lasx_xvslli_b): Ditto.
19689         (CODE_FOR_lasx_xvslli_h): Ditto.
19690         (CODE_FOR_lasx_xvslli_w): Ditto.
19691         (CODE_FOR_lasx_xvslli_d): Ditto.
19692         (CODE_FOR_lasx_xvsra_b): Ditto.
19693         (CODE_FOR_lasx_xvsra_h): Ditto.
19694         (CODE_FOR_lasx_xvsra_w): Ditto.
19695         (CODE_FOR_lasx_xvsra_d): Ditto.
19696         (CODE_FOR_lasx_xvsrai_b): Ditto.
19697         (CODE_FOR_lasx_xvsrai_h): Ditto.
19698         (CODE_FOR_lasx_xvsrai_w): Ditto.
19699         (CODE_FOR_lasx_xvsrai_d): Ditto.
19700         (CODE_FOR_lasx_xvsrl_b): Ditto.
19701         (CODE_FOR_lasx_xvsrl_h): Ditto.
19702         (CODE_FOR_lasx_xvsrl_w): Ditto.
19703         (CODE_FOR_lasx_xvsrl_d): Ditto.
19704         (CODE_FOR_lasx_xvsrli_b): Ditto.
19705         (CODE_FOR_lasx_xvsrli_h): Ditto.
19706         (CODE_FOR_lasx_xvsrli_w): Ditto.
19707         (CODE_FOR_lasx_xvsrli_d): Ditto.
19708         (CODE_FOR_lasx_xvsub_b): Ditto.
19709         (CODE_FOR_lasx_xvsub_h): Ditto.
19710         (CODE_FOR_lasx_xvsub_w): Ditto.
19711         (CODE_FOR_lasx_xvsub_d): Ditto.
19712         (CODE_FOR_lasx_xvsubi_bu): Ditto.
19713         (CODE_FOR_lasx_xvsubi_hu): Ditto.
19714         (CODE_FOR_lasx_xvsubi_wu): Ditto.
19715         (CODE_FOR_lasx_xvsubi_du): Ditto.
19716         (CODE_FOR_lasx_xvpackod_d): Ditto.
19717         (CODE_FOR_lasx_xvpackev_d): Ditto.
19718         (CODE_FOR_lasx_xvpickod_d): Ditto.
19719         (CODE_FOR_lasx_xvpickev_d): Ditto.
19720         (CODE_FOR_lasx_xvrepli_b): Ditto.
19721         (CODE_FOR_lasx_xvrepli_h): Ditto.
19722         (CODE_FOR_lasx_xvrepli_w): Ditto.
19723         (CODE_FOR_lasx_xvrepli_d): Ditto.
19724         (CODE_FOR_lasx_xvandn_v): Ditto.
19725         (CODE_FOR_lasx_xvorn_v): Ditto.
19726         (CODE_FOR_lasx_xvneg_b): Ditto.
19727         (CODE_FOR_lasx_xvneg_h): Ditto.
19728         (CODE_FOR_lasx_xvneg_w): Ditto.
19729         (CODE_FOR_lasx_xvneg_d): Ditto.
19730         (CODE_FOR_lasx_xvbsrl_v): Ditto.
19731         (CODE_FOR_lasx_xvbsll_v): Ditto.
19732         (CODE_FOR_lasx_xvfmadd_s): Ditto.
19733         (CODE_FOR_lasx_xvfmadd_d): Ditto.
19734         (CODE_FOR_lasx_xvfmsub_s): Ditto.
19735         (CODE_FOR_lasx_xvfmsub_d): Ditto.
19736         (CODE_FOR_lasx_xvfnmadd_s): Ditto.
19737         (CODE_FOR_lasx_xvfnmadd_d): Ditto.
19738         (CODE_FOR_lasx_xvfnmsub_s): Ditto.
19739         (CODE_FOR_lasx_xvfnmsub_d): Ditto.
19740         (CODE_FOR_lasx_xvpermi_q): Ditto.
19741         (CODE_FOR_lasx_xvpermi_d): Ditto.
19742         (CODE_FOR_lasx_xbnz_v): Ditto.
19743         (CODE_FOR_lasx_xbz_v): Ditto.
19744         (CODE_FOR_lasx_xvssub_b): Ditto.
19745         (CODE_FOR_lasx_xvssub_h): Ditto.
19746         (CODE_FOR_lasx_xvssub_w): Ditto.
19747         (CODE_FOR_lasx_xvssub_d): Ditto.
19748         (CODE_FOR_lasx_xvssub_bu): Ditto.
19749         (CODE_FOR_lasx_xvssub_hu): Ditto.
19750         (CODE_FOR_lasx_xvssub_wu): Ditto.
19751         (CODE_FOR_lasx_xvssub_du): Ditto.
19752         (CODE_FOR_lasx_xvabsd_b): Ditto.
19753         (CODE_FOR_lasx_xvabsd_h): Ditto.
19754         (CODE_FOR_lasx_xvabsd_w): Ditto.
19755         (CODE_FOR_lasx_xvabsd_d): Ditto.
19756         (CODE_FOR_lasx_xvabsd_bu): Ditto.
19757         (CODE_FOR_lasx_xvabsd_hu): Ditto.
19758         (CODE_FOR_lasx_xvabsd_wu): Ditto.
19759         (CODE_FOR_lasx_xvabsd_du): Ditto.
19760         (CODE_FOR_lasx_xvavg_b): Ditto.
19761         (CODE_FOR_lasx_xvavg_h): Ditto.
19762         (CODE_FOR_lasx_xvavg_w): Ditto.
19763         (CODE_FOR_lasx_xvavg_d): Ditto.
19764         (CODE_FOR_lasx_xvavg_bu): Ditto.
19765         (CODE_FOR_lasx_xvavg_hu): Ditto.
19766         (CODE_FOR_lasx_xvavg_wu): Ditto.
19767         (CODE_FOR_lasx_xvavg_du): Ditto.
19768         (CODE_FOR_lasx_xvavgr_b): Ditto.
19769         (CODE_FOR_lasx_xvavgr_h): Ditto.
19770         (CODE_FOR_lasx_xvavgr_w): Ditto.
19771         (CODE_FOR_lasx_xvavgr_d): Ditto.
19772         (CODE_FOR_lasx_xvavgr_bu): Ditto.
19773         (CODE_FOR_lasx_xvavgr_hu): Ditto.
19774         (CODE_FOR_lasx_xvavgr_wu): Ditto.
19775         (CODE_FOR_lasx_xvavgr_du): Ditto.
19776         (CODE_FOR_lasx_xvmuh_b): Ditto.
19777         (CODE_FOR_lasx_xvmuh_h): Ditto.
19778         (CODE_FOR_lasx_xvmuh_w): Ditto.
19779         (CODE_FOR_lasx_xvmuh_d): Ditto.
19780         (CODE_FOR_lasx_xvmuh_bu): Ditto.
19781         (CODE_FOR_lasx_xvmuh_hu): Ditto.
19782         (CODE_FOR_lasx_xvmuh_wu): Ditto.
19783         (CODE_FOR_lasx_xvmuh_du): Ditto.
19784         (CODE_FOR_lasx_xvssran_b_h): Ditto.
19785         (CODE_FOR_lasx_xvssran_h_w): Ditto.
19786         (CODE_FOR_lasx_xvssran_w_d): Ditto.
19787         (CODE_FOR_lasx_xvssran_bu_h): Ditto.
19788         (CODE_FOR_lasx_xvssran_hu_w): Ditto.
19789         (CODE_FOR_lasx_xvssran_wu_d): Ditto.
19790         (CODE_FOR_lasx_xvssrarn_b_h): Ditto.
19791         (CODE_FOR_lasx_xvssrarn_h_w): Ditto.
19792         (CODE_FOR_lasx_xvssrarn_w_d): Ditto.
19793         (CODE_FOR_lasx_xvssrarn_bu_h): Ditto.
19794         (CODE_FOR_lasx_xvssrarn_hu_w): Ditto.
19795         (CODE_FOR_lasx_xvssrarn_wu_d): Ditto.
19796         (CODE_FOR_lasx_xvssrln_bu_h): Ditto.
19797         (CODE_FOR_lasx_xvssrln_hu_w): Ditto.
19798         (CODE_FOR_lasx_xvssrln_wu_d): Ditto.
19799         (CODE_FOR_lasx_xvssrlrn_bu_h): Ditto.
19800         (CODE_FOR_lasx_xvssrlrn_hu_w): Ditto.
19801         (CODE_FOR_lasx_xvssrlrn_wu_d): Ditto.
19802         (CODE_FOR_lasx_xvftint_w_s): Ditto.
19803         (CODE_FOR_lasx_xvftint_l_d): Ditto.
19804         (CODE_FOR_lasx_xvftint_wu_s): Ditto.
19805         (CODE_FOR_lasx_xvftint_lu_d): Ditto.
19806         (CODE_FOR_lasx_xvsllwil_h_b): Ditto.
19807         (CODE_FOR_lasx_xvsllwil_w_h): Ditto.
19808         (CODE_FOR_lasx_xvsllwil_d_w): Ditto.
19809         (CODE_FOR_lasx_xvsllwil_hu_bu): Ditto.
19810         (CODE_FOR_lasx_xvsllwil_wu_hu): Ditto.
19811         (CODE_FOR_lasx_xvsllwil_du_wu): Ditto.
19812         (CODE_FOR_lasx_xvsat_b): Ditto.
19813         (CODE_FOR_lasx_xvsat_h): Ditto.
19814         (CODE_FOR_lasx_xvsat_w): Ditto.
19815         (CODE_FOR_lasx_xvsat_d): Ditto.
19816         (CODE_FOR_lasx_xvsat_bu): Ditto.
19817         (CODE_FOR_lasx_xvsat_hu): Ditto.
19818         (CODE_FOR_lasx_xvsat_wu): Ditto.
19819         (CODE_FOR_lasx_xvsat_du): Ditto.
19820         (loongarch_builtin_vectorized_function): Ditto.
19821         (loongarch_expand_builtin_insn): Ditto.
19822         (loongarch_expand_builtin): Ditto.
19823         * config/loongarch/loongarch-ftypes.def (1): Ditto.
19824         (2): Ditto.
19825         (3): Ditto.
19826         (4): Ditto.
19827         * config/loongarch/lasxintrin.h: New file.
19829 2023-09-05  Lulu Cheng  <chenglulu@loongson.cn>
19831         * config/loongarch/loongarch-modes.def
19832         (VECTOR_MODES): Add Loongson ASX instruction support.
19833         * config/loongarch/loongarch-protos.h (loongarch_split_256bit_move): Ditto.
19834         (loongarch_split_256bit_move_p): Ditto.
19835         (loongarch_expand_vector_group_init): Ditto.
19836         (loongarch_expand_vec_perm_1): Ditto.
19837         * config/loongarch/loongarch.cc (loongarch_symbol_insns): Ditto.
19838         (loongarch_valid_offset_p): Ditto.
19839         (loongarch_address_insns): Ditto.
19840         (loongarch_const_insns): Ditto.
19841         (loongarch_legitimize_move): Ditto.
19842         (loongarch_builtin_vectorization_cost): Ditto.
19843         (loongarch_split_move_p): Ditto.
19844         (loongarch_split_move): Ditto.
19845         (loongarch_output_move_index_float): Ditto.
19846         (loongarch_split_256bit_move_p): Ditto.
19847         (loongarch_split_256bit_move): Ditto.
19848         (loongarch_output_move): Ditto.
19849         (loongarch_print_operand_reloc): Ditto.
19850         (loongarch_print_operand): Ditto.
19851         (loongarch_hard_regno_mode_ok_uncached): Ditto.
19852         (loongarch_hard_regno_nregs): Ditto.
19853         (loongarch_class_max_nregs): Ditto.
19854         (loongarch_can_change_mode_class): Ditto.
19855         (loongarch_mode_ok_for_mov_fmt_p): Ditto.
19856         (loongarch_vector_mode_supported_p): Ditto.
19857         (loongarch_preferred_simd_mode): Ditto.
19858         (loongarch_autovectorize_vector_modes): Ditto.
19859         (loongarch_lsx_output_division): Ditto.
19860         (loongarch_expand_lsx_shuffle): Ditto.
19861         (loongarch_expand_vec_perm): Ditto.
19862         (loongarch_expand_vec_perm_interleave): Ditto.
19863         (loongarch_try_expand_lsx_vshuf_const): Ditto.
19864         (loongarch_expand_vec_perm_even_odd_1): Ditto.
19865         (loongarch_expand_vec_perm_even_odd): Ditto.
19866         (loongarch_expand_vec_perm_1): Ditto.
19867         (loongarch_expand_vec_perm_const_2): Ditto.
19868         (loongarch_is_quad_duplicate): Ditto.
19869         (loongarch_is_double_duplicate): Ditto.
19870         (loongarch_is_odd_extraction): Ditto.
19871         (loongarch_is_even_extraction): Ditto.
19872         (loongarch_is_extraction_permutation): Ditto.
19873         (loongarch_is_center_extraction): Ditto.
19874         (loongarch_is_reversing_permutation): Ditto.
19875         (loongarch_is_di_misalign_extract): Ditto.
19876         (loongarch_is_si_misalign_extract): Ditto.
19877         (loongarch_is_lasx_lowpart_interleave): Ditto.
19878         (loongarch_is_lasx_lowpart_interleave_2): Ditto.
19879         (COMPARE_SELECTOR): Ditto.
19880         (loongarch_is_lasx_lowpart_extract): Ditto.
19881         (loongarch_is_lasx_highpart_interleave): Ditto.
19882         (loongarch_is_lasx_highpart_interleave_2): Ditto.
19883         (loongarch_is_elem_duplicate): Ditto.
19884         (loongarch_is_op_reverse_perm): Ditto.
19885         (loongarch_is_single_op_perm): Ditto.
19886         (loongarch_is_divisible_perm): Ditto.
19887         (loongarch_is_triple_stride_extract): Ditto.
19888         (loongarch_vectorize_vec_perm_const): Ditto.
19889         (loongarch_cpu_sched_reassociation_width): Ditto.
19890         (loongarch_expand_vector_extract): Ditto.
19891         (emit_reduc_half): Ditto.
19892         (loongarch_expand_vec_unpack): Ditto.
19893         (loongarch_expand_vector_group_init): Ditto.
19894         (loongarch_expand_vector_init): Ditto.
19895         (loongarch_expand_lsx_cmp): Ditto.
19896         (loongarch_builtin_support_vector_misalignment): Ditto.
19897         * config/loongarch/loongarch.h (UNITS_PER_LASX_REG): Ditto.
19898         (BITS_PER_LASX_REG): Ditto.
19899         (STRUCTURE_SIZE_BOUNDARY): Ditto.
19900         (LASX_REG_FIRST): Ditto.
19901         (LASX_REG_LAST): Ditto.
19902         (LASX_REG_NUM): Ditto.
19903         (LASX_REG_P): Ditto.
19904         (LASX_REG_RTX_P): Ditto.
19905         (LASX_SUPPORTED_MODE_P): Ditto.
19906         * config/loongarch/loongarch.md: Ditto.
19907         * config/loongarch/lasx.md: New file.
19909 2023-09-05  Lulu Cheng  <chenglulu@loongson.cn>
19911         * config.gcc: Export the header file lsxintrin.h.
19912         * config/loongarch/loongarch-builtins.cc (LARCH_FTYPE_NAME4): Add builtin function support.
19913         (enum loongarch_builtin_type): Ditto.
19914         (AVAIL_ALL): Ditto.
19915         (LARCH_BUILTIN): Ditto.
19916         (LSX_BUILTIN): Ditto.
19917         (LSX_BUILTIN_TEST_BRANCH): Ditto.
19918         (LSX_NO_TARGET_BUILTIN): Ditto.
19919         (CODE_FOR_lsx_vsadd_b): Ditto.
19920         (CODE_FOR_lsx_vsadd_h): Ditto.
19921         (CODE_FOR_lsx_vsadd_w): Ditto.
19922         (CODE_FOR_lsx_vsadd_d): Ditto.
19923         (CODE_FOR_lsx_vsadd_bu): Ditto.
19924         (CODE_FOR_lsx_vsadd_hu): Ditto.
19925         (CODE_FOR_lsx_vsadd_wu): Ditto.
19926         (CODE_FOR_lsx_vsadd_du): Ditto.
19927         (CODE_FOR_lsx_vadd_b): Ditto.
19928         (CODE_FOR_lsx_vadd_h): Ditto.
19929         (CODE_FOR_lsx_vadd_w): Ditto.
19930         (CODE_FOR_lsx_vadd_d): Ditto.
19931         (CODE_FOR_lsx_vaddi_bu): Ditto.
19932         (CODE_FOR_lsx_vaddi_hu): Ditto.
19933         (CODE_FOR_lsx_vaddi_wu): Ditto.
19934         (CODE_FOR_lsx_vaddi_du): Ditto.
19935         (CODE_FOR_lsx_vand_v): Ditto.
19936         (CODE_FOR_lsx_vandi_b): Ditto.
19937         (CODE_FOR_lsx_bnz_v): Ditto.
19938         (CODE_FOR_lsx_bz_v): Ditto.
19939         (CODE_FOR_lsx_vbitsel_v): Ditto.
19940         (CODE_FOR_lsx_vseqi_b): Ditto.
19941         (CODE_FOR_lsx_vseqi_h): Ditto.
19942         (CODE_FOR_lsx_vseqi_w): Ditto.
19943         (CODE_FOR_lsx_vseqi_d): Ditto.
19944         (CODE_FOR_lsx_vslti_b): Ditto.
19945         (CODE_FOR_lsx_vslti_h): Ditto.
19946         (CODE_FOR_lsx_vslti_w): Ditto.
19947         (CODE_FOR_lsx_vslti_d): Ditto.
19948         (CODE_FOR_lsx_vslti_bu): Ditto.
19949         (CODE_FOR_lsx_vslti_hu): Ditto.
19950         (CODE_FOR_lsx_vslti_wu): Ditto.
19951         (CODE_FOR_lsx_vslti_du): Ditto.
19952         (CODE_FOR_lsx_vslei_b): Ditto.
19953         (CODE_FOR_lsx_vslei_h): Ditto.
19954         (CODE_FOR_lsx_vslei_w): Ditto.
19955         (CODE_FOR_lsx_vslei_d): Ditto.
19956         (CODE_FOR_lsx_vslei_bu): Ditto.
19957         (CODE_FOR_lsx_vslei_hu): Ditto.
19958         (CODE_FOR_lsx_vslei_wu): Ditto.
19959         (CODE_FOR_lsx_vslei_du): Ditto.
19960         (CODE_FOR_lsx_vdiv_b): Ditto.
19961         (CODE_FOR_lsx_vdiv_h): Ditto.
19962         (CODE_FOR_lsx_vdiv_w): Ditto.
19963         (CODE_FOR_lsx_vdiv_d): Ditto.
19964         (CODE_FOR_lsx_vdiv_bu): Ditto.
19965         (CODE_FOR_lsx_vdiv_hu): Ditto.
19966         (CODE_FOR_lsx_vdiv_wu): Ditto.
19967         (CODE_FOR_lsx_vdiv_du): Ditto.
19968         (CODE_FOR_lsx_vfadd_s): Ditto.
19969         (CODE_FOR_lsx_vfadd_d): Ditto.
19970         (CODE_FOR_lsx_vftintrz_w_s): Ditto.
19971         (CODE_FOR_lsx_vftintrz_l_d): Ditto.
19972         (CODE_FOR_lsx_vftintrz_wu_s): Ditto.
19973         (CODE_FOR_lsx_vftintrz_lu_d): Ditto.
19974         (CODE_FOR_lsx_vffint_s_w): Ditto.
19975         (CODE_FOR_lsx_vffint_d_l): Ditto.
19976         (CODE_FOR_lsx_vffint_s_wu): Ditto.
19977         (CODE_FOR_lsx_vffint_d_lu): Ditto.
19978         (CODE_FOR_lsx_vfsub_s): Ditto.
19979         (CODE_FOR_lsx_vfsub_d): Ditto.
19980         (CODE_FOR_lsx_vfmul_s): Ditto.
19981         (CODE_FOR_lsx_vfmul_d): Ditto.
19982         (CODE_FOR_lsx_vfdiv_s): Ditto.
19983         (CODE_FOR_lsx_vfdiv_d): Ditto.
19984         (CODE_FOR_lsx_vfmax_s): Ditto.
19985         (CODE_FOR_lsx_vfmax_d): Ditto.
19986         (CODE_FOR_lsx_vfmin_s): Ditto.
19987         (CODE_FOR_lsx_vfmin_d): Ditto.
19988         (CODE_FOR_lsx_vfsqrt_s): Ditto.
19989         (CODE_FOR_lsx_vfsqrt_d): Ditto.
19990         (CODE_FOR_lsx_vflogb_s): Ditto.
19991         (CODE_FOR_lsx_vflogb_d): Ditto.
19992         (CODE_FOR_lsx_vmax_b): Ditto.
19993         (CODE_FOR_lsx_vmax_h): Ditto.
19994         (CODE_FOR_lsx_vmax_w): Ditto.
19995         (CODE_FOR_lsx_vmax_d): Ditto.
19996         (CODE_FOR_lsx_vmaxi_b): Ditto.
19997         (CODE_FOR_lsx_vmaxi_h): Ditto.
19998         (CODE_FOR_lsx_vmaxi_w): Ditto.
19999         (CODE_FOR_lsx_vmaxi_d): Ditto.
20000         (CODE_FOR_lsx_vmax_bu): Ditto.
20001         (CODE_FOR_lsx_vmax_hu): Ditto.
20002         (CODE_FOR_lsx_vmax_wu): Ditto.
20003         (CODE_FOR_lsx_vmax_du): Ditto.
20004         (CODE_FOR_lsx_vmaxi_bu): Ditto.
20005         (CODE_FOR_lsx_vmaxi_hu): Ditto.
20006         (CODE_FOR_lsx_vmaxi_wu): Ditto.
20007         (CODE_FOR_lsx_vmaxi_du): Ditto.
20008         (CODE_FOR_lsx_vmin_b): Ditto.
20009         (CODE_FOR_lsx_vmin_h): Ditto.
20010         (CODE_FOR_lsx_vmin_w): Ditto.
20011         (CODE_FOR_lsx_vmin_d): Ditto.
20012         (CODE_FOR_lsx_vmini_b): Ditto.
20013         (CODE_FOR_lsx_vmini_h): Ditto.
20014         (CODE_FOR_lsx_vmini_w): Ditto.
20015         (CODE_FOR_lsx_vmini_d): Ditto.
20016         (CODE_FOR_lsx_vmin_bu): Ditto.
20017         (CODE_FOR_lsx_vmin_hu): Ditto.
20018         (CODE_FOR_lsx_vmin_wu): Ditto.
20019         (CODE_FOR_lsx_vmin_du): Ditto.
20020         (CODE_FOR_lsx_vmini_bu): Ditto.
20021         (CODE_FOR_lsx_vmini_hu): Ditto.
20022         (CODE_FOR_lsx_vmini_wu): Ditto.
20023         (CODE_FOR_lsx_vmini_du): Ditto.
20024         (CODE_FOR_lsx_vmod_b): Ditto.
20025         (CODE_FOR_lsx_vmod_h): Ditto.
20026         (CODE_FOR_lsx_vmod_w): Ditto.
20027         (CODE_FOR_lsx_vmod_d): Ditto.
20028         (CODE_FOR_lsx_vmod_bu): Ditto.
20029         (CODE_FOR_lsx_vmod_hu): Ditto.
20030         (CODE_FOR_lsx_vmod_wu): Ditto.
20031         (CODE_FOR_lsx_vmod_du): Ditto.
20032         (CODE_FOR_lsx_vmul_b): Ditto.
20033         (CODE_FOR_lsx_vmul_h): Ditto.
20034         (CODE_FOR_lsx_vmul_w): Ditto.
20035         (CODE_FOR_lsx_vmul_d): Ditto.
20036         (CODE_FOR_lsx_vclz_b): Ditto.
20037         (CODE_FOR_lsx_vclz_h): Ditto.
20038         (CODE_FOR_lsx_vclz_w): Ditto.
20039         (CODE_FOR_lsx_vclz_d): Ditto.
20040         (CODE_FOR_lsx_vnor_v): Ditto.
20041         (CODE_FOR_lsx_vor_v): Ditto.
20042         (CODE_FOR_lsx_vori_b): Ditto.
20043         (CODE_FOR_lsx_vnori_b): Ditto.
20044         (CODE_FOR_lsx_vpcnt_b): Ditto.
20045         (CODE_FOR_lsx_vpcnt_h): Ditto.
20046         (CODE_FOR_lsx_vpcnt_w): Ditto.
20047         (CODE_FOR_lsx_vpcnt_d): Ditto.
20048         (CODE_FOR_lsx_vxor_v): Ditto.
20049         (CODE_FOR_lsx_vxori_b): Ditto.
20050         (CODE_FOR_lsx_vsll_b): Ditto.
20051         (CODE_FOR_lsx_vsll_h): Ditto.
20052         (CODE_FOR_lsx_vsll_w): Ditto.
20053         (CODE_FOR_lsx_vsll_d): Ditto.
20054         (CODE_FOR_lsx_vslli_b): Ditto.
20055         (CODE_FOR_lsx_vslli_h): Ditto.
20056         (CODE_FOR_lsx_vslli_w): Ditto.
20057         (CODE_FOR_lsx_vslli_d): Ditto.
20058         (CODE_FOR_lsx_vsra_b): Ditto.
20059         (CODE_FOR_lsx_vsra_h): Ditto.
20060         (CODE_FOR_lsx_vsra_w): Ditto.
20061         (CODE_FOR_lsx_vsra_d): Ditto.
20062         (CODE_FOR_lsx_vsrai_b): Ditto.
20063         (CODE_FOR_lsx_vsrai_h): Ditto.
20064         (CODE_FOR_lsx_vsrai_w): Ditto.
20065         (CODE_FOR_lsx_vsrai_d): Ditto.
20066         (CODE_FOR_lsx_vsrl_b): Ditto.
20067         (CODE_FOR_lsx_vsrl_h): Ditto.
20068         (CODE_FOR_lsx_vsrl_w): Ditto.
20069         (CODE_FOR_lsx_vsrl_d): Ditto.
20070         (CODE_FOR_lsx_vsrli_b): Ditto.
20071         (CODE_FOR_lsx_vsrli_h): Ditto.
20072         (CODE_FOR_lsx_vsrli_w): Ditto.
20073         (CODE_FOR_lsx_vsrli_d): Ditto.
20074         (CODE_FOR_lsx_vsub_b): Ditto.
20075         (CODE_FOR_lsx_vsub_h): Ditto.
20076         (CODE_FOR_lsx_vsub_w): Ditto.
20077         (CODE_FOR_lsx_vsub_d): Ditto.
20078         (CODE_FOR_lsx_vsubi_bu): Ditto.
20079         (CODE_FOR_lsx_vsubi_hu): Ditto.
20080         (CODE_FOR_lsx_vsubi_wu): Ditto.
20081         (CODE_FOR_lsx_vsubi_du): Ditto.
20082         (CODE_FOR_lsx_vpackod_d): Ditto.
20083         (CODE_FOR_lsx_vpackev_d): Ditto.
20084         (CODE_FOR_lsx_vpickod_d): Ditto.
20085         (CODE_FOR_lsx_vpickev_d): Ditto.
20086         (CODE_FOR_lsx_vrepli_b): Ditto.
20087         (CODE_FOR_lsx_vrepli_h): Ditto.
20088         (CODE_FOR_lsx_vrepli_w): Ditto.
20089         (CODE_FOR_lsx_vrepli_d): Ditto.
20090         (CODE_FOR_lsx_vsat_b): Ditto.
20091         (CODE_FOR_lsx_vsat_h): Ditto.
20092         (CODE_FOR_lsx_vsat_w): Ditto.
20093         (CODE_FOR_lsx_vsat_d): Ditto.
20094         (CODE_FOR_lsx_vsat_bu): Ditto.
20095         (CODE_FOR_lsx_vsat_hu): Ditto.
20096         (CODE_FOR_lsx_vsat_wu): Ditto.
20097         (CODE_FOR_lsx_vsat_du): Ditto.
20098         (CODE_FOR_lsx_vavg_b): Ditto.
20099         (CODE_FOR_lsx_vavg_h): Ditto.
20100         (CODE_FOR_lsx_vavg_w): Ditto.
20101         (CODE_FOR_lsx_vavg_d): Ditto.
20102         (CODE_FOR_lsx_vavg_bu): Ditto.
20103         (CODE_FOR_lsx_vavg_hu): Ditto.
20104         (CODE_FOR_lsx_vavg_wu): Ditto.
20105         (CODE_FOR_lsx_vavg_du): Ditto.
20106         (CODE_FOR_lsx_vavgr_b): Ditto.
20107         (CODE_FOR_lsx_vavgr_h): Ditto.
20108         (CODE_FOR_lsx_vavgr_w): Ditto.
20109         (CODE_FOR_lsx_vavgr_d): Ditto.
20110         (CODE_FOR_lsx_vavgr_bu): Ditto.
20111         (CODE_FOR_lsx_vavgr_hu): Ditto.
20112         (CODE_FOR_lsx_vavgr_wu): Ditto.
20113         (CODE_FOR_lsx_vavgr_du): Ditto.
20114         (CODE_FOR_lsx_vssub_b): Ditto.
20115         (CODE_FOR_lsx_vssub_h): Ditto.
20116         (CODE_FOR_lsx_vssub_w): Ditto.
20117         (CODE_FOR_lsx_vssub_d): Ditto.
20118         (CODE_FOR_lsx_vssub_bu): Ditto.
20119         (CODE_FOR_lsx_vssub_hu): Ditto.
20120         (CODE_FOR_lsx_vssub_wu): Ditto.
20121         (CODE_FOR_lsx_vssub_du): Ditto.
20122         (CODE_FOR_lsx_vabsd_b): Ditto.
20123         (CODE_FOR_lsx_vabsd_h): Ditto.
20124         (CODE_FOR_lsx_vabsd_w): Ditto.
20125         (CODE_FOR_lsx_vabsd_d): Ditto.
20126         (CODE_FOR_lsx_vabsd_bu): Ditto.
20127         (CODE_FOR_lsx_vabsd_hu): Ditto.
20128         (CODE_FOR_lsx_vabsd_wu): Ditto.
20129         (CODE_FOR_lsx_vabsd_du): Ditto.
20130         (CODE_FOR_lsx_vftint_w_s): Ditto.
20131         (CODE_FOR_lsx_vftint_l_d): Ditto.
20132         (CODE_FOR_lsx_vftint_wu_s): Ditto.
20133         (CODE_FOR_lsx_vftint_lu_d): Ditto.
20134         (CODE_FOR_lsx_vandn_v): Ditto.
20135         (CODE_FOR_lsx_vorn_v): Ditto.
20136         (CODE_FOR_lsx_vneg_b): Ditto.
20137         (CODE_FOR_lsx_vneg_h): Ditto.
20138         (CODE_FOR_lsx_vneg_w): Ditto.
20139         (CODE_FOR_lsx_vneg_d): Ditto.
20140         (CODE_FOR_lsx_vshuf4i_d): Ditto.
20141         (CODE_FOR_lsx_vbsrl_v): Ditto.
20142         (CODE_FOR_lsx_vbsll_v): Ditto.
20143         (CODE_FOR_lsx_vfmadd_s): Ditto.
20144         (CODE_FOR_lsx_vfmadd_d): Ditto.
20145         (CODE_FOR_lsx_vfmsub_s): Ditto.
20146         (CODE_FOR_lsx_vfmsub_d): Ditto.
20147         (CODE_FOR_lsx_vfnmadd_s): Ditto.
20148         (CODE_FOR_lsx_vfnmadd_d): Ditto.
20149         (CODE_FOR_lsx_vfnmsub_s): Ditto.
20150         (CODE_FOR_lsx_vfnmsub_d): Ditto.
20151         (CODE_FOR_lsx_vmuh_b): Ditto.
20152         (CODE_FOR_lsx_vmuh_h): Ditto.
20153         (CODE_FOR_lsx_vmuh_w): Ditto.
20154         (CODE_FOR_lsx_vmuh_d): Ditto.
20155         (CODE_FOR_lsx_vmuh_bu): Ditto.
20156         (CODE_FOR_lsx_vmuh_hu): Ditto.
20157         (CODE_FOR_lsx_vmuh_wu): Ditto.
20158         (CODE_FOR_lsx_vmuh_du): Ditto.
20159         (CODE_FOR_lsx_vsllwil_h_b): Ditto.
20160         (CODE_FOR_lsx_vsllwil_w_h): Ditto.
20161         (CODE_FOR_lsx_vsllwil_d_w): Ditto.
20162         (CODE_FOR_lsx_vsllwil_hu_bu): Ditto.
20163         (CODE_FOR_lsx_vsllwil_wu_hu): Ditto.
20164         (CODE_FOR_lsx_vsllwil_du_wu): Ditto.
20165         (CODE_FOR_lsx_vssran_b_h): Ditto.
20166         (CODE_FOR_lsx_vssran_h_w): Ditto.
20167         (CODE_FOR_lsx_vssran_w_d): Ditto.
20168         (CODE_FOR_lsx_vssran_bu_h): Ditto.
20169         (CODE_FOR_lsx_vssran_hu_w): Ditto.
20170         (CODE_FOR_lsx_vssran_wu_d): Ditto.
20171         (CODE_FOR_lsx_vssrarn_b_h): Ditto.
20172         (CODE_FOR_lsx_vssrarn_h_w): Ditto.
20173         (CODE_FOR_lsx_vssrarn_w_d): Ditto.
20174         (CODE_FOR_lsx_vssrarn_bu_h): Ditto.
20175         (CODE_FOR_lsx_vssrarn_hu_w): Ditto.
20176         (CODE_FOR_lsx_vssrarn_wu_d): Ditto.
20177         (CODE_FOR_lsx_vssrln_bu_h): Ditto.
20178         (CODE_FOR_lsx_vssrln_hu_w): Ditto.
20179         (CODE_FOR_lsx_vssrln_wu_d): Ditto.
20180         (CODE_FOR_lsx_vssrlrn_bu_h): Ditto.
20181         (CODE_FOR_lsx_vssrlrn_hu_w): Ditto.
20182         (CODE_FOR_lsx_vssrlrn_wu_d): Ditto.
20183         (loongarch_builtin_vector_type): Ditto.
20184         (loongarch_build_cvpointer_type): Ditto.
20185         (LARCH_ATYPE_CVPOINTER): Ditto.
20186         (LARCH_ATYPE_BOOLEAN): Ditto.
20187         (LARCH_ATYPE_V2SF): Ditto.
20188         (LARCH_ATYPE_V2HI): Ditto.
20189         (LARCH_ATYPE_V2SI): Ditto.
20190         (LARCH_ATYPE_V4QI): Ditto.
20191         (LARCH_ATYPE_V4HI): Ditto.
20192         (LARCH_ATYPE_V8QI): Ditto.
20193         (LARCH_ATYPE_V2DI): Ditto.
20194         (LARCH_ATYPE_V4SI): Ditto.
20195         (LARCH_ATYPE_V8HI): Ditto.
20196         (LARCH_ATYPE_V16QI): Ditto.
20197         (LARCH_ATYPE_V2DF): Ditto.
20198         (LARCH_ATYPE_V4SF): Ditto.
20199         (LARCH_ATYPE_V4DI): Ditto.
20200         (LARCH_ATYPE_V8SI): Ditto.
20201         (LARCH_ATYPE_V16HI): Ditto.
20202         (LARCH_ATYPE_V32QI): Ditto.
20203         (LARCH_ATYPE_V4DF): Ditto.
20204         (LARCH_ATYPE_V8SF): Ditto.
20205         (LARCH_ATYPE_UV2DI): Ditto.
20206         (LARCH_ATYPE_UV4SI): Ditto.
20207         (LARCH_ATYPE_UV8HI): Ditto.
20208         (LARCH_ATYPE_UV16QI): Ditto.
20209         (LARCH_ATYPE_UV4DI): Ditto.
20210         (LARCH_ATYPE_UV8SI): Ditto.
20211         (LARCH_ATYPE_UV16HI): Ditto.
20212         (LARCH_ATYPE_UV32QI): Ditto.
20213         (LARCH_ATYPE_UV2SI): Ditto.
20214         (LARCH_ATYPE_UV4HI): Ditto.
20215         (LARCH_ATYPE_UV8QI): Ditto.
20216         (loongarch_builtin_vectorized_function): Ditto.
20217         (LARCH_GET_BUILTIN): Ditto.
20218         (loongarch_expand_builtin_insn): Ditto.
20219         (loongarch_expand_builtin_lsx_test_branch): Ditto.
20220         (loongarch_expand_builtin): Ditto.
20221         * config/loongarch/loongarch-ftypes.def (1): Ditto.
20222         (2): Ditto.
20223         (3): Ditto.
20224         (4): Ditto.
20225         * config/loongarch/lsxintrin.h: New file.
20227 2023-09-05  Lulu Cheng  <chenglulu@loongson.cn>
20229         * config/loongarch/constraints.md (M): Add Loongson LSX base instruction support.
20230         (N): Ditto.
20231         (O): Ditto.
20232         (P): Ditto.
20233         (R): Ditto.
20234         (S): Ditto.
20235         (YG): Ditto.
20236         (YA): Ditto.
20237         (YB): Ditto.
20238         (Yb): Ditto.
20239         (Yh): Ditto.
20240         (Yw): Ditto.
20241         (YI): Ditto.
20242         (YC): Ditto.
20243         (YZ): Ditto.
20244         (Unv5): Ditto.
20245         (Uuv5): Ditto.
20246         (Usv5): Ditto.
20247         (Uuv6): Ditto.
20248         (Urv8): Ditto.
20249         * config/loongarch/genopts/loongarch.opt.in: Ditto.
20250         * config/loongarch/loongarch-builtins.cc (loongarch_gen_const_int_vector): Ditto.
20251         * config/loongarch/loongarch-modes.def (VECTOR_MODES): Ditto.
20252         (VECTOR_MODE): Ditto.
20253         (INT_MODE): Ditto.
20254         * config/loongarch/loongarch-protos.h (loongarch_split_move_insn_p): Ditto.
20255         (loongarch_split_move_insn): Ditto.
20256         (loongarch_split_128bit_move): Ditto.
20257         (loongarch_split_128bit_move_p): Ditto.
20258         (loongarch_split_lsx_copy_d): Ditto.
20259         (loongarch_split_lsx_insert_d): Ditto.
20260         (loongarch_split_lsx_fill_d): Ditto.
20261         (loongarch_expand_vec_cmp): Ditto.
20262         (loongarch_const_vector_same_val_p): Ditto.
20263         (loongarch_const_vector_same_bytes_p): Ditto.
20264         (loongarch_const_vector_same_int_p): Ditto.
20265         (loongarch_const_vector_shuffle_set_p): Ditto.
20266         (loongarch_const_vector_bitimm_set_p): Ditto.
20267         (loongarch_const_vector_bitimm_clr_p): Ditto.
20268         (loongarch_lsx_vec_parallel_const_half): Ditto.
20269         (loongarch_gen_const_int_vector): Ditto.
20270         (loongarch_lsx_output_division): Ditto.
20271         (loongarch_expand_vector_init): Ditto.
20272         (loongarch_expand_vec_unpack): Ditto.
20273         (loongarch_expand_vec_perm): Ditto.
20274         (loongarch_expand_vector_extract): Ditto.
20275         (loongarch_expand_vector_reduc): Ditto.
20276         (loongarch_ldst_scaled_shift): Ditto.
20277         (loongarch_expand_vec_cond_expr): Ditto.
20278         (loongarch_expand_vec_cond_mask_expr): Ditto.
20279         (loongarch_builtin_vectorized_function): Ditto.
20280         (loongarch_gen_const_int_vector_shuffle): Ditto.
20281         (loongarch_build_signbit_mask): Ditto.
20282         * config/loongarch/loongarch.cc (loongarch_pass_aggregate_num_fpr): Ditto.
20283         (loongarch_setup_incoming_varargs): Ditto.
20284         (loongarch_emit_move): Ditto.
20285         (loongarch_const_vector_bitimm_set_p): Ditto.
20286         (loongarch_const_vector_bitimm_clr_p): Ditto.
20287         (loongarch_const_vector_same_val_p): Ditto.
20288         (loongarch_const_vector_same_bytes_p): Ditto.
20289         (loongarch_const_vector_same_int_p): Ditto.
20290         (loongarch_const_vector_shuffle_set_p): Ditto.
20291         (loongarch_symbol_insns): Ditto.
20292         (loongarch_cannot_force_const_mem): Ditto.
20293         (loongarch_valid_offset_p): Ditto.
20294         (loongarch_valid_index_p): Ditto.
20295         (loongarch_classify_address): Ditto.
20296         (loongarch_address_insns): Ditto.
20297         (loongarch_ldst_scaled_shift): Ditto.
20298         (loongarch_const_insns): Ditto.
20299         (loongarch_split_move_insn_p): Ditto.
20300         (loongarch_subword_at_byte): Ditto.
20301         (loongarch_legitimize_move): Ditto.
20302         (loongarch_builtin_vectorization_cost): Ditto.
20303         (loongarch_split_move_p): Ditto.
20304         (loongarch_split_move): Ditto.
20305         (loongarch_split_move_insn): Ditto.
20306         (loongarch_output_move_index_float): Ditto.
20307         (loongarch_split_128bit_move_p): Ditto.
20308         (loongarch_split_128bit_move): Ditto.
20309         (loongarch_split_lsx_copy_d): Ditto.
20310         (loongarch_split_lsx_insert_d): Ditto.
20311         (loongarch_split_lsx_fill_d): Ditto.
20312         (loongarch_output_move): Ditto.
20313         (loongarch_extend_comparands): Ditto.
20314         (loongarch_print_operand_reloc): Ditto.
20315         (loongarch_print_operand): Ditto.
20316         (loongarch_hard_regno_mode_ok_uncached): Ditto.
20317         (loongarch_hard_regno_call_part_clobbered): Ditto.
20318         (loongarch_hard_regno_nregs): Ditto.
20319         (loongarch_class_max_nregs): Ditto.
20320         (loongarch_can_change_mode_class): Ditto.
20321         (loongarch_mode_ok_for_mov_fmt_p): Ditto.
20322         (loongarch_secondary_reload): Ditto.
20323         (loongarch_vector_mode_supported_p): Ditto.
20324         (loongarch_preferred_simd_mode): Ditto.
20325         (loongarch_autovectorize_vector_modes): Ditto.
20326         (loongarch_lsx_output_division): Ditto.
20327         (loongarch_option_override_internal): Ditto.
20328         (loongarch_hard_regno_caller_save_mode): Ditto.
20329         (MAX_VECT_LEN): Ditto.
20330         (loongarch_spill_class): Ditto.
20331         (struct expand_vec_perm_d): Ditto.
20332         (loongarch_promote_function_mode): Ditto.
20333         (loongarch_expand_vselect): Ditto.
20334         (loongarch_starting_frame_offset): Ditto.
20335         (loongarch_expand_vselect_vconcat): Ditto.
20336         (TARGET_ASM_ALIGNED_DI_OP): Ditto.
20337         (TARGET_OPTION_OVERRIDE): Ditto.
20338         (TARGET_LEGITIMIZE_ADDRESS): Ditto.
20339         (TARGET_ASM_SELECT_RTX_SECTION): Ditto.
20340         (TARGET_ASM_FUNCTION_RODATA_SECTION): Ditto.
20341         (loongarch_expand_lsx_shuffle): Ditto.
20342         (TARGET_SCHED_INIT): Ditto.
20343         (TARGET_SCHED_REORDER): Ditto.
20344         (TARGET_SCHED_REORDER2): Ditto.
20345         (TARGET_SCHED_VARIABLE_ISSUE): Ditto.
20346         (TARGET_SCHED_ADJUST_COST): Ditto.
20347         (TARGET_SCHED_ISSUE_RATE): Ditto.
20348         (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Ditto.
20349         (TARGET_FUNCTION_OK_FOR_SIBCALL): Ditto.
20350         (TARGET_VALID_POINTER_MODE): Ditto.
20351         (TARGET_REGISTER_MOVE_COST): Ditto.
20352         (TARGET_MEMORY_MOVE_COST): Ditto.
20353         (TARGET_RTX_COSTS): Ditto.
20354         (TARGET_ADDRESS_COST): Ditto.
20355         (TARGET_IN_SMALL_DATA_P): Ditto.
20356         (TARGET_PREFERRED_RELOAD_CLASS): Ditto.
20357         (TARGET_ASM_FILE_START_FILE_DIRECTIVE): Ditto.
20358         (TARGET_EXPAND_BUILTIN_VA_START): Ditto.
20359         (loongarch_expand_vec_perm): Ditto.
20360         (TARGET_PROMOTE_FUNCTION_MODE): Ditto.
20361         (TARGET_RETURN_IN_MEMORY): Ditto.
20362         (TARGET_FUNCTION_VALUE): Ditto.
20363         (TARGET_LIBCALL_VALUE): Ditto.
20364         (loongarch_try_expand_lsx_vshuf_const): Ditto.
20365         (TARGET_ASM_OUTPUT_MI_THUNK): Ditto.
20366         (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Ditto.
20367         (TARGET_PRINT_OPERAND): Ditto.
20368         (TARGET_PRINT_OPERAND_ADDRESS): Ditto.
20369         (TARGET_PRINT_OPERAND_PUNCT_VALID_P): Ditto.
20370         (TARGET_SETUP_INCOMING_VARARGS): Ditto.
20371         (TARGET_STRICT_ARGUMENT_NAMING): Ditto.
20372         (TARGET_MUST_PASS_IN_STACK): Ditto.
20373         (TARGET_PASS_BY_REFERENCE): Ditto.
20374         (TARGET_ARG_PARTIAL_BYTES): Ditto.
20375         (TARGET_FUNCTION_ARG): Ditto.
20376         (TARGET_FUNCTION_ARG_ADVANCE): Ditto.
20377         (TARGET_FUNCTION_ARG_BOUNDARY): Ditto.
20378         (TARGET_SCALAR_MODE_SUPPORTED_P): Ditto.
20379         (TARGET_INIT_BUILTINS): Ditto.
20380         (loongarch_expand_vec_perm_const_1): Ditto.
20381         (loongarch_expand_vec_perm_const_2): Ditto.
20382         (loongarch_vectorize_vec_perm_const): Ditto.
20383         (loongarch_cpu_sched_reassociation_width): Ditto.
20384         (loongarch_sched_reassociation_width): Ditto.
20385         (loongarch_expand_vector_extract): Ditto.
20386         (emit_reduc_half): Ditto.
20387         (loongarch_expand_vector_reduc): Ditto.
20388         (loongarch_expand_vec_unpack): Ditto.
20389         (loongarch_lsx_vec_parallel_const_half): Ditto.
20390         (loongarch_constant_elt_p): Ditto.
20391         (loongarch_gen_const_int_vector_shuffle): Ditto.
20392         (loongarch_expand_vector_init): Ditto.
20393         (loongarch_expand_lsx_cmp): Ditto.
20394         (loongarch_expand_vec_cond_expr): Ditto.
20395         (loongarch_expand_vec_cond_mask_expr): Ditto.
20396         (loongarch_expand_vec_cmp): Ditto.
20397         (loongarch_case_values_threshold): Ditto.
20398         (loongarch_build_const_vector): Ditto.
20399         (loongarch_build_signbit_mask): Ditto.
20400         (loongarch_builtin_support_vector_misalignment): Ditto.
20401         (TARGET_ASM_ALIGNED_HI_OP): Ditto.
20402         (TARGET_ASM_ALIGNED_SI_OP): Ditto.
20403         (TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST): Ditto.
20404         (TARGET_VECTOR_MODE_SUPPORTED_P): Ditto.
20405         (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): Ditto.
20406         (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Ditto.
20407         (TARGET_VECTORIZE_VEC_PERM_CONST): Ditto.
20408         (TARGET_SCHED_REASSOCIATION_WIDTH): Ditto.
20409         (TARGET_CASE_VALUES_THRESHOLD): Ditto.
20410         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Ditto.
20411         (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
20412         * config/loongarch/loongarch.h (TARGET_SUPPORTS_WIDE_INT): Ditto.
20413         (UNITS_PER_LSX_REG): Ditto.
20414         (BITS_PER_LSX_REG): Ditto.
20415         (BIGGEST_ALIGNMENT): Ditto.
20416         (LSX_REG_FIRST): Ditto.
20417         (LSX_REG_LAST): Ditto.
20418         (LSX_REG_NUM): Ditto.
20419         (LSX_REG_P): Ditto.
20420         (LSX_REG_RTX_P): Ditto.
20421         (IMM13_OPERAND): Ditto.
20422         (LSX_SUPPORTED_MODE_P): Ditto.
20423         * config/loongarch/loongarch.md (unknown,add,sub,not,nor,and,or,xor): Ditto.
20424         (unknown,add,sub,not,nor,and,or,xor,simd_add): Ditto.
20425         (unknown,none,QI,HI,SI,DI,TI,SF,DF,TF,FCC): Ditto.
20426         (mode" ): Ditto.
20427         (DF): Ditto.
20428         (SF): Ditto.
20429         (sf): Ditto.
20430         (DI): Ditto.
20431         (SI): Ditto.
20432         * config/loongarch/loongarch.opt: Ditto.
20433         * config/loongarch/predicates.md (const_lsx_branch_operand): Ditto.
20434         (const_uimm3_operand): Ditto.
20435         (const_8_to_11_operand): Ditto.
20436         (const_12_to_15_operand): Ditto.
20437         (const_uimm4_operand): Ditto.
20438         (const_uimm6_operand): Ditto.
20439         (const_uimm7_operand): Ditto.
20440         (const_uimm8_operand): Ditto.
20441         (const_imm5_operand): Ditto.
20442         (const_imm10_operand): Ditto.
20443         (const_imm13_operand): Ditto.
20444         (reg_imm10_operand): Ditto.
20445         (aq8b_operand): Ditto.
20446         (aq8h_operand): Ditto.
20447         (aq8w_operand): Ditto.
20448         (aq8d_operand): Ditto.
20449         (aq10b_operand): Ditto.
20450         (aq10h_operand): Ditto.
20451         (aq10w_operand): Ditto.
20452         (aq10d_operand): Ditto.
20453         (aq12b_operand): Ditto.
20454         (aq12h_operand): Ditto.
20455         (aq12w_operand): Ditto.
20456         (aq12d_operand): Ditto.
20457         (const_m1_operand): Ditto.
20458         (reg_or_m1_operand): Ditto.
20459         (const_exp_2_operand): Ditto.
20460         (const_exp_4_operand): Ditto.
20461         (const_exp_8_operand): Ditto.
20462         (const_exp_16_operand): Ditto.
20463         (const_exp_32_operand): Ditto.
20464         (const_0_or_1_operand): Ditto.
20465         (const_0_to_3_operand): Ditto.
20466         (const_0_to_7_operand): Ditto.
20467         (const_2_or_3_operand): Ditto.
20468         (const_4_to_7_operand): Ditto.
20469         (const_8_to_15_operand): Ditto.
20470         (const_16_to_31_operand): Ditto.
20471         (qi_mask_operand): Ditto.
20472         (hi_mask_operand): Ditto.
20473         (si_mask_operand): Ditto.
20474         (d_operand): Ditto.
20475         (db4_operand): Ditto.
20476         (db7_operand): Ditto.
20477         (db8_operand): Ditto.
20478         (ib3_operand): Ditto.
20479         (sb4_operand): Ditto.
20480         (sb5_operand): Ditto.
20481         (sb8_operand): Ditto.
20482         (sd8_operand): Ditto.
20483         (ub4_operand): Ditto.
20484         (ub8_operand): Ditto.
20485         (uh4_operand): Ditto.
20486         (uw4_operand): Ditto.
20487         (uw5_operand): Ditto.
20488         (uw6_operand): Ditto.
20489         (uw8_operand): Ditto.
20490         (addiur2_operand): Ditto.
20491         (addiusp_operand): Ditto.
20492         (andi16_operand): Ditto.
20493         (movep_src_register): Ditto.
20494         (movep_src_operand): Ditto.
20495         (fcc_reload_operand): Ditto.
20496         (muldiv_target_operand): Ditto.
20497         (const_vector_same_val_operand): Ditto.
20498         (const_vector_same_simm5_operand): Ditto.
20499         (const_vector_same_uimm5_operand): Ditto.
20500         (const_vector_same_ximm5_operand): Ditto.
20501         (const_vector_same_uimm6_operand): Ditto.
20502         (par_const_vector_shf_set_operand): Ditto.
20503         (reg_or_vector_same_val_operand): Ditto.
20504         (reg_or_vector_same_simm5_operand): Ditto.
20505         (reg_or_vector_same_uimm5_operand): Ditto.
20506         (reg_or_vector_same_ximm5_operand): Ditto.
20507         (reg_or_vector_same_uimm6_operand): Ditto.
20508         * doc/md.texi: Ditto.
20509         * config/loongarch/lsx.md: New file.
20511 2023-09-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20513         * config/riscv/riscv-protos.h (lookup_vector_type_attribute): Export global.
20514         (get_all_predecessors): New function.
20515         (get_all_successors): Ditto.
20516         * config/riscv/riscv-v.cc (get_all_predecessors): Ditto.
20517         (get_all_successors): Ditto.
20518         * config/riscv/riscv-vector-builtins.cc (sizeless_type_p): Export global.
20519         * config/riscv/riscv-vsetvl.cc (get_all_predecessors): Remove it.
20521 2023-09-05  Claudiu Zissulescu  <claziss@gmail.com>
20523         * config/arc/arc-protos.h (arc_output_addsi): Remove declaration.
20524         (split_addsi): Likewise.
20525         * config/arc/arc.cc (arc_print_operand): Add/repurpose 's', 'S',
20526         'N', 'x', and 'J' code letters.
20527         (arc_output_addsi): Make it static.
20528         (split_addsi): Remove it.
20529         * config/arc/arc.h (UNSIGNED_INT*): New defines.
20530         (SINNED_INT*): Likewise.
20531         * config/arc/arc.md (type): Add add, sub, bxor types.
20532         (tst_movb): Change code letter from 's' to 'x'.
20533         (andsi3_i): Likewise.
20534         (addsi3_mixed): Refurbish the pattern.
20535         (call_i): Change code letter from 'S' to 'J'.
20536         * config/arc/arc700.md: Add newly introduced types.
20537         * config/arc/arcHS.md: Likewsie.
20538         * config/arc/arcHS4x.md: Likewise.
20539         * config/arc/constraints.md (Cca, CL2, Csp, C2a): Remove it.
20540         (CM4): Update description.
20541         (CP4, C6u, C6n, CIs, C4p): New constraint.
20543 2023-09-05  Claudiu Zissulescu  <claziss@gmail.com>
20545         * common/config/arc/arc-common.cc (arc_option_optimization_table):
20546         Remove mbbit_peephole.
20547         * config/arc/arc.md (UNSPEC_ARC_DIRECT): Remove.
20548         (store_direct): Likewise.
20549         (BBIT peephole2): Likewise.
20550         * config/arc/arc.opt (mbbit-peephole): Ignore option.
20551         * doc/invoke.texi (mbbit-peephole): Update document.
20553 2023-09-05  Jakub Jelinek  <jakub@redhat.com>
20555         * tree-ssa-tail-merge.cc (replace_block_by): Fix a comment typo:
20556         avreage -> average.
20558 2023-09-05  Yang Yujie  <yangyujie@loongson.cn>
20560         * config/loongarch/loongarch.h (CC1_SPEC): Mark normalized
20561         options passed from driver to gnat1 as explicit for multilib.
20563 2023-09-05  Yang Yujie  <yangyujie@loongson.cn>
20565         * config.gcc: add loongarch*-elf target.
20566         * config/loongarch/elf.h: New file.
20567         Link against newlib by default.
20569 2023-09-05  Yang Yujie  <yangyujie@loongson.cn>
20571         * config.gcc: use -mstrict-align for building libraries
20572         if --with-strict-align-lib is given.
20573         * doc/install.texi: likewise.
20575 2023-09-05  Yang Yujie  <yangyujie@loongson.cn>
20577         * config/loongarch/loongarch-c.cc: Export macros
20578         "__loongarch_{arch,tune}" in the preprocessor.
20580 2023-09-05  Yang Yujie  <yangyujie@loongson.cn>
20582         * config.gcc: Make --with-abi= obsolete, decide the default ABI
20583         with target triplet.  Allow specifying multilib library build
20584         options with --with-multilib-list and --with-multilib-default.
20585         * config/loongarch/t-linux: Likewise.
20586         * config/loongarch/genopts/loongarch-strings: Likewise.
20587         * config/loongarch/loongarch-str.h: Likewise.
20588         * doc/install.texi: Likewise.
20589         * config/loongarch/genopts/loongarch.opt.in: Introduce
20590         -m[no-]l[a]sx options.  Only process -m*-float and
20591         -m[no-]l[a]sx in the GCC driver.
20592         * config/loongarch/loongarch.opt: Likewise.
20593         * config/loongarch/la464.md: Likewise.
20594         * config/loongarch/loongarch-c.cc: Likewise.
20595         * config/loongarch/loongarch-cpu.cc: Likewise.
20596         * config/loongarch/loongarch-cpu.h: Likewise.
20597         * config/loongarch/loongarch-def.c: Likewise.
20598         * config/loongarch/loongarch-def.h: Likewise.
20599         * config/loongarch/loongarch-driver.cc: Likewise.
20600         * config/loongarch/loongarch-driver.h: Likewise.
20601         * config/loongarch/loongarch-opts.cc: Likewise.
20602         * config/loongarch/loongarch-opts.h: Likewise.
20603         * config/loongarch/loongarch.cc: Likewise.
20604         * doc/invoke.texi: Likewise.
20606 2023-09-05  liuhongt  <hongtao.liu@intel.com>
20608         * config/i386/sse.md: (V8BFH_128): Renamed to ..
20609         (VHFBF_128): .. this.
20610         (V16BFH_256): Renamed to ..
20611         (VHFBF_256): .. this.
20612         (avx512f_mov<mode>): Extend to V_128.
20613         (vcvtnee<bf16_ph>2ps_<mode>): Changed to VHFBF_128.
20614         (vcvtneo<bf16_ph>2ps_<mode>): Ditto.
20615         (vcvtnee<bf16_ph>2ps_<mode>): Changed to VHFBF_256.
20616         (vcvtneo<bf16_ph>2ps_<mode>): Ditto.
20617         * config/i386/i386-expand.cc (expand_vec_perm_blend):
20618         Canonicalize vec_merge.
20620 2023-09-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20622         * config/riscv/riscv-opts.h (enum riscv_autovec_lmul_enum): Fix Dynamic status.
20623         * config/riscv/riscv-v.cc (preferred_simd_mode): Ditto.
20624         (autovectorize_vector_modes): Ditto.
20625         (vectorize_related_mode): Ditto.
20627 2023-09-04  Iain Sandoe  <iain@sandoe.co.uk>
20629         * config/rs6000/darwin.h (LIB_SPEC): Include libSystemStubs for
20630         all 32b Darwin PowerPC cases.
20632 2023-09-04  Iain Sandoe  <iain@sandoe.co.uk>
20634         * config/darwin-sections.def (static_init_section): Add the
20635         __TEXT,__StaticInit section.
20636         * config/darwin.cc (darwin_function_section): Use the static init
20637         section for global initializers, to match other platform toolchains.
20639 2023-09-04  Iain Sandoe  <iain@sandoe.co.uk>
20641         * config/darwin-sections.def (darwin_exception_section): Move to
20642         the __TEXT segment.
20643         * config/darwin.cc (darwin_emit_except_table_label): Align before
20644         the exception table label.
20645         * config/darwin.h (ASM_PREFERRED_EH_DATA_FORMAT): Use indirect PC-
20646         relative 4byte relocs.
20648 2023-09-04  Iain Sandoe  <iain@sandoe.co.uk>
20650         * config/darwin.cc (dump_machopic_symref_flags): New.
20651         (debug_machopic_symref_flags): New.
20653 2023-09-04  Pan Li  <pan2.li@intel.com>
20655         * config/riscv/riscv-vector-builtins-types.def
20656         (vfloat16mf4_t): Add FP16 intrinsic def.
20657         (vfloat16mf2_t): Ditto.
20658         (vfloat16m1_t): Ditto.
20659         (vfloat16m2_t): Ditto.
20660         (vfloat16m4_t): Ditto.
20661         (vfloat16m8_t): Ditto.
20663 2023-09-04  Jiufu Guo  <guojiufu@linux.ibm.com>
20665         PR tree-optimization/108757
20666         * match.pd ((X - N * M) / N): New pattern.
20667         ((X + N * M) / N): New pattern.
20668         ((X + C) div_rshift N): New pattern.
20670 2023-09-04  Guo Jie  <guojie@loongson.cn>
20672         * config/loongarch/loongarch.md: Support 'G' -> 'k' in
20673         movsf_hardfloat and movdf_hardfloat.
20675 2023-09-04  Lulu Cheng  <chenglulu@loongson.cn>
20677         * config/loongarch/loongarch.cc (loongarch_extend_comparands):
20678         In unsigned QImode test, check for sign extended subreg and/or
20679         constant operands, and do a sign extension in that case.
20680         * config/loongarch/loongarch.md (TARGET_64BIT): Define
20681         template cbranchqi4.
20683 2023-09-04  Lulu Cheng  <chenglulu@loongson.cn>
20685         * config/loongarch/loongarch.md: Allows fixed-point values to be loaded
20686         from memory into floating-point registers.
20688 2023-09-03  Pan Li  <pan2.li@intel.com>
20690         * config/riscv/autovec-vls.md (<optab><mode>3): New pattern for
20691         fmax/fmin
20692         * config/riscv/vector.md: Add VLS modes to vfmax/vfmin.
20694 2023-09-02  Mikael Morin  <mikael@gcc.gnu.org>
20696         * tree-diagnostic.cc (tree_diagnostics_defaults): Delete allocated
20697         pointer before overwriting it.
20699 2023-09-02  chenxiaolong  <chenxiaolong@loongson.cn>
20701         * config/loongarch/loongarch-builtins.cc (loongarch_init_builtins):
20702         Associate the __float128 type to float128_type_node so that it can
20703         be recognized by the compiler.
20704         * config/loongarch/loongarch-c.cc (loongarch_cpu_cpp_builtins):
20705         Add the flag "FLOAT128_TYPE" to gcc and associate a function
20706         with the suffix "q" to "f128".
20707         * doc/extend.texi:Added support for 128-bit floating-point functions on
20708         the LoongArch architecture.
20710 2023-09-01  Jakub Jelinek  <jakub@redhat.com>
20712         PR c++/111069
20713         * common.opt (fabi-version=): Document version 19.
20714         * doc/invoke.texi (-fabi-version=): Likewise.
20716 2023-09-01  Lehua Ding  <lehua.ding@rivai.ai>
20718         * config/riscv/autovec-opt.md (*cond_<optab><mode><vconvert>):
20719         New combine pattern.
20720         (*cond_<float_cvt><vconvert><mode>): Ditto.
20721         (*cond_<optab><vnconvert><mode>): Ditto.
20722         (*cond_<float_cvt><vnconvert><mode>): Ditto.
20723         (*cond_<optab><mode><vnconvert>): Ditto.
20724         (*cond_<float_cvt><mode><vnconvert>2): Ditto.
20725         * config/riscv/autovec.md (<optab><mode><vconvert>2): Adjust.
20726         (<float_cvt><vconvert><mode>2): Adjust.
20727         (<optab><vnconvert><mode>2): Adjust.
20728         (<float_cvt><vnconvert><mode>2): Adjust.
20729         (<optab><mode><vnconvert>2): Adjust.
20730         (<float_cvt><mode><vnconvert>2): Adjust.
20731         * config/riscv/riscv-v.cc (needs_fp_rounding): Add INT->FP extend.
20733 2023-09-01  Lehua Ding  <lehua.ding@rivai.ai>
20735         * config/riscv/autovec-opt.md (*cond_extend<v_double_trunc><mode>):
20736         New combine pattern.
20737         (*cond_trunc<mode><v_double_trunc>): Ditto.
20738         * config/riscv/autovec.md: Adjust.
20739         * config/riscv/riscv-v.cc (needs_fp_rounding): Add FP extend.
20741 2023-09-01  Lehua Ding  <lehua.ding@rivai.ai>
20743         * config/riscv/autovec-opt.md (*cond_<optab><v_double_trunc><mode>):
20744         New combine pattern.
20745         (*cond_<optab><v_quad_trunc><mode>): Ditto.
20746         (*cond_<optab><v_oct_trunc><mode>): Ditto.
20747         (*cond_trunc<mode><v_double_trunc>): Ditto.
20748         * config/riscv/autovec.md (<optab><v_quad_trunc><mode>2): Adjust.
20749         (<optab><v_oct_trunc><mode>2): Ditto.
20751 2023-09-01  Lehua Ding  <lehua.ding@rivai.ai>
20753         * config/riscv/autovec.md: Adjust.
20754         * config/riscv/riscv-protos.h (expand_cond_len_unop): Ditto.
20755         (expand_cond_len_binop): Ditto.
20756         * config/riscv/riscv-v.cc (needs_fp_rounding): Ditto.
20757         (expand_cond_len_op): Ditto.
20758         (expand_cond_len_unop): Ditto.
20759         (expand_cond_len_binop): Ditto.
20760         (expand_cond_len_ternop): Ditto.
20762 2023-09-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20764         * config/riscv/riscv-v.cc (autovectorize_vector_modes): Enable
20765         VECT_COMPARE_COSTS by default.
20767 2023-09-01  Robin Dapp  <rdapp@ventanamicro.com>
20769         * config/riscv/autovec.md (vec_extract<mode>qi): New expander.
20771 2023-09-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20773         * config/riscv/riscv-opts.h (enum riscv_autovec_lmul_enum): Add
20774         dynamic enum.
20775         * config/riscv/riscv.opt: Add dynamic compile option.
20777 2023-09-01  Pan Li  <pan2.li@intel.com>
20779         * config/riscv/autovec-vls.md (<optab><mode>3): New pattern for
20780         vls floating-point autovec.
20781         * config/riscv/vector-iterators.md: New iterator for
20782         floating-point V and VLS.
20783         * config/riscv/vector.md: Add VLS to floating-point binop.
20785 2023-09-01  Andrew Pinski  <apinski@marvell.com>
20787         PR tree-optimization/19832
20788         * match.pd: Add pattern to optimize
20789         `(a != b) ? a OP b : c`.
20791 2023-09-01  Lulu Cheng  <chenglulu@loongson.cn>
20792             Guo Jie  <guojie@loongson.cn>
20794         PR target/110484
20795         * config/loongarch/loongarch.cc (loongarch_emit_stack_tie): Use the
20796         frame_pointer_needed to determine whether to use the $fp register.
20798 2023-08-31  Andrew Pinski  <apinski@marvell.com>
20800         PR tree-optimization/110915
20801         * match.pd (min_value, max_value): Extend to vector constants.
20803 2023-08-31  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
20805         * config.in: Regenerate.
20806         * config/darwin-c.cc: Change spelling to macOS.
20807         * config/darwin-driver.cc: Likewise.
20808         * config/darwin.h: Likewise.
20809         * configure.ac: Likewise.
20810         * doc/contrib.texi: Likewise.
20811         * doc/extend.texi: Likewise.
20812         * doc/invoke.texi: Likewise.
20813         * doc/plugins.texi: Likewise.
20814         * doc/tm.texi: Regenerate.
20815         * doc/tm.texi.in: Change spelling to macOS.
20816         * plugin.cc: Likewise.
20818 2023-08-31  Pan Li  <pan2.li@intel.com>
20820         * config/riscv/autovec-opt.md: Add FRM_REGNUM to vfnmadd/vfnmacc.
20821         * config/riscv/autovec.md: Ditto.
20823 2023-08-31  Pan Li  <pan2.li@intel.com>
20825         * config/riscv/autovec-opt.md: Add FRM_REGNUM to vfnmsac/vfnmsub
20826         * config/riscv/autovec.md: Ditto.
20828 2023-08-31  Richard Sandiford  <richard.sandiford@arm.com>
20830         * config/aarch64/aarch64.md (untyped_call): Emit a call_value
20831         rather than a call.  List each possible destination register
20832         in the call pattern.
20834 2023-08-31  Pan Li  <pan2.li@intel.com>
20836         * config/riscv/autovec-opt.md: Add FRM_REGNUM to vfmsac/vfmsub
20837         * config/riscv/autovec.md: Ditto.
20839 2023-08-31  Pan Li  <pan2.li@intel.com>
20840             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20842         * config/riscv/autovec-opt.md: Add FRM_REGNUM to vfmadd/vfmacc.
20843         * config/riscv/autovec.md: Ditto.
20844         * config/riscv/vector-iterators.md: Add UNSPEC_VFFMA.
20846 2023-08-31  Palmer Dabbelt  <palmer@rivosinc.com>
20848         * config/riscv/autovec.md (shifts): Use
20849         vector_scalar_shift_operand.
20850         * config/riscv/predicates.md (vector_scalar_shift_operand): New
20851         predicate.
20853 2023-08-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20855         * config.gcc: Add vector cost model framework for RVV.
20856         * config/riscv/riscv.cc (riscv_vectorize_create_costs): Ditto.
20857         (TARGET_VECTORIZE_CREATE_COSTS): Ditto.
20858         * config/riscv/t-riscv: Ditto.
20859         * config/riscv/riscv-vector-costs.cc: New file.
20860         * config/riscv/riscv-vector-costs.h: New file.
20862 2023-08-31  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
20864         PR target/110411
20865         * config/rs6000/mma.md (define_insn_and_split movoo): Disallow
20866         AltiVec address operands.
20867         (define_insn_and_split movxo): Likewise.
20868         * config/rs6000/predicates.md (vsx_quad_dform_memory_operand): Remove
20869         redundant mode size check.
20871 2023-08-31  Lehua Ding  <lehua.ding@rivai.ai>
20873         * config/riscv/riscv-protos.h (IS_AGNOSTIC): Move to here.
20874         * config/riscv/riscv-v.cc (gen_no_side_effects_vsetvl_rtx):
20875         Change to default policy.
20876         * config/riscv/riscv-vector-builtins-bases.cc: Change to default policy.
20877         * config/riscv/riscv-vsetvl.h (IS_AGNOSTIC): Delete.
20878         * config/riscv/riscv.cc (riscv_print_operand): Use IS_AGNOSTIC to test.
20880 2023-08-31  Lehua Ding  <lehua.ding@rivai.ai>
20882         * config/riscv/autovec-opt.md: Adjust.
20883         * config/riscv/autovec-vls.md: Ditto.
20884         * config/riscv/autovec.md: Ditto.
20885         * config/riscv/riscv-protos.h (enum insn_type): Add insn_type.
20886         (enum insn_flags): Add insn flags.
20887         (emit_vlmax_insn): Adjust.
20888         (emit_vlmax_fp_insn): Delete.
20889         (emit_vlmax_ternary_insn): Delete.
20890         (emit_vlmax_fp_ternary_insn): Delete.
20891         (emit_nonvlmax_insn): Adjust.
20892         (emit_vlmax_slide_insn): Delete.
20893         (emit_nonvlmax_slide_tu_insn): Delete.
20894         (emit_vlmax_merge_insn): Delete.
20895         (emit_vlmax_cmp_insn): Delete.
20896         (emit_vlmax_cmp_mu_insn): Delete.
20897         (emit_vlmax_masked_mu_insn): Delete.
20898         (emit_scalar_move_insn): Delete.
20899         (emit_nonvlmax_integer_move_insn): Delete.
20900         (emit_vlmax_insn_lra): Add.
20901         * config/riscv/riscv-v.cc (get_mask_mode_from_insn_flags): New.
20902         (emit_vlmax_insn): Adjust.
20903         (emit_nonvlmax_insn): Adjust.
20904         (emit_vlmax_insn_lra): Add.
20905         (emit_vlmax_fp_insn): Delete.
20906         (emit_vlmax_ternary_insn): Delete.
20907         (emit_vlmax_fp_ternary_insn): Delete.
20908         (emit_vlmax_slide_insn): Delete.
20909         (emit_nonvlmax_slide_tu_insn): Delete.
20910         (emit_nonvlmax_slide_insn): Delete.
20911         (emit_vlmax_merge_insn): Delete.
20912         (emit_vlmax_cmp_insn): Delete.
20913         (emit_vlmax_cmp_mu_insn): Delete.
20914         (emit_vlmax_masked_insn): Delete.
20915         (emit_nonvlmax_masked_insn): Delete.
20916         (emit_vlmax_masked_store_insn): Delete.
20917         (emit_nonvlmax_masked_store_insn): Delete.
20918         (emit_vlmax_masked_mu_insn): Delete.
20919         (emit_vlmax_masked_fp_mu_insn): Delete.
20920         (emit_nonvlmax_tu_insn): Delete.
20921         (emit_nonvlmax_fp_tu_insn): Delete.
20922         (emit_nonvlmax_tumu_insn): Delete.
20923         (emit_nonvlmax_fp_tumu_insn): Delete.
20924         (emit_scalar_move_insn): Delete.
20925         (emit_cpop_insn): Delete.
20926         (emit_vlmax_integer_move_insn): Delete.
20927         (emit_nonvlmax_integer_move_insn): Delete.
20928         (emit_vlmax_gather_insn): Delete.
20929         (emit_vlmax_masked_gather_mu_insn): Delete.
20930         (emit_vlmax_compress_insn): Delete.
20931         (emit_nonvlmax_compress_insn): Delete.
20932         (emit_vlmax_reduction_insn): Delete.
20933         (emit_vlmax_fp_reduction_insn): Delete.
20934         (emit_nonvlmax_fp_reduction_insn): Delete.
20935         (expand_vec_series): Adjust.
20936         (expand_const_vector): Adjust.
20937         (legitimize_move): Adjust.
20938         (sew64_scalar_helper): Adjust.
20939         (expand_tuple_move): Adjust.
20940         (expand_vector_init_insert_elems): Adjust.
20941         (expand_vector_init_merge_repeating_sequence): Adjust.
20942         (expand_vec_cmp): Adjust.
20943         (expand_vec_cmp_float): Adjust.
20944         (expand_vec_perm): Adjust.
20945         (shuffle_merge_patterns): Adjust.
20946         (shuffle_compress_patterns): Adjust.
20947         (shuffle_decompress_patterns): Adjust.
20948         (expand_load_store): Adjust.
20949         (expand_cond_len_op): Adjust.
20950         (expand_cond_len_unop): Adjust.
20951         (expand_cond_len_binop): Adjust.
20952         (expand_gather_scatter): Adjust.
20953         (expand_cond_len_ternop): Adjust.
20954         (expand_reduction): Adjust.
20955         (expand_lanes_load_store): Adjust.
20956         (expand_fold_extract_last): Adjust.
20957         * config/riscv/riscv.cc (vector_zero_call_used_regs): Adjust.
20958         * config/riscv/vector.md: Adjust.
20960 2023-08-31  Haochen Gui  <guihaoc@gcc.gnu.org>
20962         PR target/96762
20963         * config/rs6000/rs6000-string.cc (expand_block_move): Call vector
20964         load/store with length only on 64-bit Power10.
20966 2023-08-31  Claudiu Zissulescu  <claziss@gmail.com>
20968         * config/arc/arc.cc (arc_split_mov_const): Use LSL16 only when
20969         SWAP option is enabled.
20970         * config/arc/arc.md (ashlsi2_cnt16): Likewise.
20972 2023-08-31  Stamatis Markianos-Wright  <stam.markianos-wright@arm.com>
20974         * config/arm/arm-mve-builtins-base.cc (vcaddq_rot90, vcaddq_rot270):
20975         Use common insn for signed and unsigned front-end definitions.
20976         * config/arm/arm_mve_builtins.def
20977         (vcaddq_rot90_m_u, vcaddq_rot270_m_u): Make common.
20978         (vcaddq_rot90_m_s, vcaddq_rot270_m_s): Remove.
20979         * config/arm/iterators.md (mve_insn): Merge signed and unsigned defs.
20980         (isu): Likewise.
20981         (rot): Likewise.
20982         (mve_rot): Likewise.
20983         (supf): Likewise.
20984         (VxCADDQ_M): Likewise.
20985         * config/arm/unspecs.md (unspec): Likewise.
20986         * config/arm/mve.md: Fix minor typo.
20988 2023-08-31  liuhongt  <hongtao.liu@intel.com>
20990         * config/i386/sse.md (<avx512>_blendm<mode>): Merge
20991         VF_AVX512HFBFVL into VI12HFBF_AVX512VL.
20992         (VF_AVX512HFBF16): Renamed to VHFBF.
20993         (VF_AVX512FP16VL): Renamed to VHF_AVX512VL.
20994         (VF_AVX512FP16): Removed.
20995         (div<mode>3): Adjust VF_AVX512FP16VL to VHF_AVX512VL.
20996         (avx512fp16_rcp<mode>2<mask_name>): Ditto.
20997         (rsqrt<mode>2): Ditto.
20998         (<sse>_rsqrt<mode>2<mask_name>): Ditto.
20999         (vcond<mode><code>): Ditto.
21000         (vcond<sseintvecmodelower><mode>): Ditto.
21001         (<avx512>_fmaddc_<mode>_mask1<round_expand_name>): Ditto.
21002         (<avx512>_fmaddc_<mode>_maskz<round_expand_name>): Ditto.
21003         (<avx512>_fcmaddc_<mode>_mask1<round_expand_name>): Ditto.
21004         (<avx512>_fcmaddc_<mode>_maskz<round_expand_name>): Ditto.
21005         (cmla<conj_op><mode>4): Ditto.
21006         (fma_<mode>_fadd_fmul): Ditto.
21007         (fma_<mode>_fadd_fcmul): Ditto.
21008         (fma_<complexopname>_<mode>_fma_zero): Ditto.
21009         (fma_<mode>_fmaddc_bcst): Ditto.
21010         (fma_<mode>_fcmaddc_bcst): Ditto.
21011         (<avx512>_<complexopname>_<mode>_mask<round_name>): Ditto.
21012         (cmul<conj_op><mode>3): Ditto.
21013         (<avx512>_<complexopname>_<mode><maskc_name><round_name>):
21014         Ditto.
21015         (vec_unpacks_lo_<mode>): Ditto.
21016         (vec_unpacks_hi_<mode>): Ditto.
21017         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
21018         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
21019         (*vec_extract<mode>_0): Ditto.
21020         (*<avx512>_cmp<mode>3): Extend to V48H_AVX512VL.
21022 2023-08-31  Lehua Ding  <lehua.ding@rivai.ai>
21024         PR target/111234
21025         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Remove condition.
21027 2023-08-31  Jiufu Guo  <guojiufu@linux.ibm.com>
21029         * range-op-mixed.h (operator_plus::overflow_free_p): New declare.
21030         (operator_minus::overflow_free_p): New declare.
21031         (operator_mult::overflow_free_p): New declare.
21032         * range-op.cc (range_op_handler::overflow_free_p): New function.
21033         (range_operator::overflow_free_p): New default function.
21034         (operator_plus::overflow_free_p): New function.
21035         (operator_minus::overflow_free_p): New function.
21036         (operator_mult::overflow_free_p): New function.
21037         * range-op.h (range_op_handler::overflow_free_p): New declare.
21038         (range_operator::overflow_free_p): New declare.
21039         * value-range.cc (irange::nonnegative_p): New function.
21040         (irange::nonpositive_p): New function.
21041         * value-range.h (irange::nonnegative_p): New declare.
21042         (irange::nonpositive_p): New declare.
21044 2023-08-30  Dimitar Dimitrov  <dimitar@dinux.eu>
21046         PR target/106562
21047         * config/pru/predicates.md (const_0_operand): New predicate.
21048         (pru_cstore_comparison_operator): Ditto.
21049         * config/pru/pru.md (cstore<mode>4): New pattern.
21050         (cstoredi4): Ditto.
21052 2023-08-30  Richard Biener  <rguenther@suse.de>
21054         PR tree-optimization/111228
21055         * match.pd ((vec_perm (vec_perm ..) @5 ..) -> (vec_perm @x @5 ..)):
21056         New simplifications.
21058 2023-08-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21060         * config/riscv/autovec.md (movmisalign<mode>): Delete.
21062 2023-08-30  Die Li  <lidie@eswincomputing.com>
21063             Fei Gao  <gaofei@eswincomputing.com>
21065         * config/riscv/peephole.md: New pattern.
21066         * config/riscv/predicates.md (a0a1_reg_operand): New predicate.
21067         (zcmp_mv_sreg_operand): New predicate.
21068         * config/riscv/riscv.md: New predicate.
21069         * config/riscv/zc.md (*mva01s<X:mode>): New pattern.
21070         (*mvsa01<X:mode>): New pattern.
21072 2023-08-30  Fei Gao  <gaofei@eswincomputing.com>
21074         * config/riscv/riscv.cc
21075         (riscv_zcmp_can_use_popretz): true if popretz can be used
21076         (riscv_gen_multi_pop_insn): interface to generate cm.pop[ret][z]
21077         (riscv_expand_epilogue): expand cm.pop[ret][z] in epilogue
21078         * config/riscv/riscv.md: define A0_REGNUM
21079         * config/riscv/zc.md
21080         (@gpr_multi_popretz_up_to_ra_<mode>): md for popretz ra
21081         (@gpr_multi_popretz_up_to_s0_<mode>): md for popretz ra, s0
21082         (@gpr_multi_popretz_up_to_s1_<mode>): likewise
21083         (@gpr_multi_popretz_up_to_s2_<mode>): likewise
21084         (@gpr_multi_popretz_up_to_s3_<mode>): likewise
21085         (@gpr_multi_popretz_up_to_s4_<mode>): likewise
21086         (@gpr_multi_popretz_up_to_s5_<mode>): likewise
21087         (@gpr_multi_popretz_up_to_s6_<mode>): likewise
21088         (@gpr_multi_popretz_up_to_s7_<mode>): likewise
21089         (@gpr_multi_popretz_up_to_s8_<mode>): likewise
21090         (@gpr_multi_popretz_up_to_s9_<mode>): likewise
21091         (@gpr_multi_popretz_up_to_s11_<mode>): likewise
21093 2023-08-30  Fei Gao  <gaofei@eswincomputing.com>
21095         * config/riscv/iterators.md
21096         (slot0_offset): slot 0 offset in stack GPRs area in bytes
21097         (slot1_offset): slot 1 offset in stack GPRs area in bytes
21098         (slot2_offset): likewise
21099         (slot3_offset): likewise
21100         (slot4_offset): likewise
21101         (slot5_offset): likewise
21102         (slot6_offset): likewise
21103         (slot7_offset): likewise
21104         (slot8_offset): likewise
21105         (slot9_offset): likewise
21106         (slot10_offset): likewise
21107         (slot11_offset): likewise
21108         (slot12_offset): likewise
21109         * config/riscv/predicates.md
21110         (stack_push_up_to_ra_operand): predicates of stack adjust pushing ra
21111         (stack_push_up_to_s0_operand): predicates of stack adjust pushing ra, s0
21112         (stack_push_up_to_s1_operand): likewise
21113         (stack_push_up_to_s2_operand): likewise
21114         (stack_push_up_to_s3_operand): likewise
21115         (stack_push_up_to_s4_operand): likewise
21116         (stack_push_up_to_s5_operand): likewise
21117         (stack_push_up_to_s6_operand): likewise
21118         (stack_push_up_to_s7_operand): likewise
21119         (stack_push_up_to_s8_operand): likewise
21120         (stack_push_up_to_s9_operand): likewise
21121         (stack_push_up_to_s11_operand): likewise
21122         (stack_pop_up_to_ra_operand): predicates of stack adjust poping ra
21123         (stack_pop_up_to_s0_operand): predicates of stack adjust poping ra, s0
21124         (stack_pop_up_to_s1_operand): likewise
21125         (stack_pop_up_to_s2_operand): likewise
21126         (stack_pop_up_to_s3_operand): likewise
21127         (stack_pop_up_to_s4_operand): likewise
21128         (stack_pop_up_to_s5_operand): likewise
21129         (stack_pop_up_to_s6_operand): likewise
21130         (stack_pop_up_to_s7_operand): likewise
21131         (stack_pop_up_to_s8_operand): likewise
21132         (stack_pop_up_to_s9_operand): likewise
21133         (stack_pop_up_to_s11_operand): likewise
21134         * config/riscv/riscv-protos.h
21135         (riscv_zcmp_valid_stack_adj_bytes_p):declaration
21136         * config/riscv/riscv.cc (struct riscv_frame_info): comment change
21137         (riscv_avoid_multi_push): helper function of riscv_use_multi_push
21138         (riscv_use_multi_push): true if multi push is used
21139         (riscv_multi_push_sregs_count): num of sregs in multi-push
21140         (riscv_multi_push_regs_count): num of regs in multi-push
21141         (riscv_16bytes_align): align to 16 bytes
21142         (riscv_stack_align): moved to a better place
21143         (riscv_save_libcall_count): no functional change
21144         (riscv_compute_frame_info): add zcmp frame info
21145         (riscv_for_each_saved_reg): save or restore fprs in specified slot for zcmp
21146         (riscv_adjust_multi_push_cfi_prologue): adjust cfi for cm.push
21147         (riscv_gen_multi_push_pop_insn): gen function for multi push and pop
21148         (get_multi_push_fpr_mask): get mask for the fprs pushed by cm.push
21149         (riscv_expand_prologue): allocate stack by cm.push
21150         (riscv_adjust_multi_pop_cfi_epilogue): adjust cfi for cm.pop[ret]
21151         (riscv_expand_epilogue): allocate stack by cm.pop[ret]
21152         (zcmp_base_adj): calculate stack adjustment base size
21153         (zcmp_additional_adj): calculate stack adjustment additional size
21154         (riscv_zcmp_valid_stack_adj_bytes_p): check if stack adjustment valid
21155         * config/riscv/riscv.h (RETURN_ADDR_MASK): mask of ra
21156         (S0_MASK): likewise
21157         (S1_MASK): likewise
21158         (S2_MASK): likewise
21159         (S3_MASK): likewise
21160         (S4_MASK): likewise
21161         (S5_MASK): likewise
21162         (S6_MASK): likewise
21163         (S7_MASK): likewise
21164         (S8_MASK): likewise
21165         (S9_MASK): likewise
21166         (S10_MASK): likewise
21167         (S11_MASK): likewise
21168         (MULTI_PUSH_GPR_MASK): GPR_MASK that cm.push can cover at most
21169         (ZCMP_MAX_SPIMM): max spimm value
21170         (ZCMP_SP_INC_STEP): zcmp sp increment step
21171         (ZCMP_INVALID_S0S10_SREGS_COUNTS): num of s0-s10
21172         (ZCMP_S0S11_SREGS_COUNTS): num of s0-s11
21173         (ZCMP_MAX_GRP_SLOTS): max slots of pushing and poping in zcmp
21174         (CALLEE_SAVED_FREG_NUMBER): get x of fsx(fs0 ~ fs11)
21175         * config/riscv/riscv.md: include zc.md
21176         * config/riscv/zc.md: New file. machine description for zcmp
21178 2023-08-30  Jakub Jelinek  <jakub@redhat.com>
21180         PR tree-optimization/110914
21181         * tree-ssa-strlen.cc (strlen_pass::handle_builtin_memcpy): Don't call
21182         adjust_last_stmt unless len is known constant.
21184 2023-08-30  Jakub Jelinek  <jakub@redhat.com>
21186         PR tree-optimization/111015
21187         * gimple-ssa-store-merging.cc
21188         (imm_store_chain_info::output_merged_store): Use wi::mask and
21189         wide_int_to_tree instead of unsigned HOST_WIDE_INT shift and
21190         build_int_cst to build BIT_AND_EXPR mask.
21192 2023-08-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21194         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Add MASK_LEN_ variant.
21195         (call_may_clobber_ref_p_1): Ditto.
21196         * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn): Ditto.
21197         (get_alias_ptr_type_for_ptr_address): Ditto.
21199 2023-08-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21201         * config/riscv/riscv-vsetvl.cc
21202         (vector_insn_info::get_avl_or_vl_reg): Fix bug.
21204 2023-08-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21206         * config/riscv/autovec-vls.md (movmisalign<mode>): New pattern.
21207         * config/riscv/riscv.cc (riscv_support_vector_misalignment): Support
21208         VLS misalign.
21210 2023-08-29  Philipp Tomsich  <philipp.tomsich@vrull.eu>
21212         * config/riscv/zicond.md: New splitters to rewrite single bit
21213         sign extension as the condition to a czero in the desired form.
21215 2023-08-29  David Malcolm  <dmalcolm@redhat.com>
21217         PR analyzer/99860
21218         * doc/invoke.texi: Add -Wanalyzer-overlapping-buffers.
21220 2023-08-29  David Malcolm  <dmalcolm@redhat.com>
21222         PR analyzer/99860
21223         * Makefile.in (ANALYZER_OBJS): Add analyzer/ranges.o.
21225 2023-08-29  Jin Ma  <jinma@linux.alibaba.com>
21227         * config/riscv/riscv.cc (riscv_float_const_rtx_index_for_fli):
21228         zvfh can generate zfa extended instruction fli.h, just like zfh.
21230 2023-08-29  Edwin Lu  <ewlu@rivosinc.com>
21231             Vineet Gupta  <vineetg@rivosinc.com>
21233         * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins): Generate
21234         __riscv_unaligned_avoid with value 1 or
21235         __riscv_unaligned_slow with value 1 or
21236         __riscv_unaligned_fast with value 1
21237         * config/riscv/riscv.cc (riscv_option_override): Define
21238         riscv_user_wants_strict_align. Set
21239         riscv_user_wants_strict_align to TARGET_STRICT_ALIGN
21240         * config/riscv/riscv.h: Declare riscv_user_wants_strict_align
21242 2023-08-29  Edwin Lu  <ewlu@rivosinc.com>
21244         * config/riscv/autovec-vls.md: Update types
21245         * config/riscv/riscv.md: Add vector placeholder type
21246         * config/riscv/vector.md: Update types
21248 2023-08-29  Carl Love  <cel@us.ibm.com>
21250         * config/rs6000/dfp.md (UNSPEC_DQUAN): New unspec.
21251         (dfp_dqua_<mode>, dfp_dquai_<mode>): New define_insn.
21252         * config/rs6000/rs6000-builtins.def (__builtin_dfp_dqua,
21253         __builtin_dfp_dquai, __builtin_dfp_dquaq, __builtin_dfp_dquaqi):
21254         New buit-in definitions.
21255         * config/rs6000/rs6000-overload.def (__builtin_dfp_quantize): New
21256         overloaded definition.
21257         * doc/extend.texi: Add documentation for __builtin_dfp_quantize.
21259 2023-08-29  Pan Li  <pan2.li@intel.com>
21260             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21262         * config/riscv/riscv.cc (riscv_legitimize_poly_move): New declaration.
21263         (riscv_legitimize_const_move): Handle ref plus const poly.
21265 2023-08-29  Tsukasa OI  <research_trasio@irq.a4lg.com>
21267         * common/config/riscv/riscv-common.cc
21268         (riscv_implied_info): Add implications from unprivileged extensions.
21269         (riscv_ext_version_table): Add stub support for all unprivileged
21270         extensions supported by Binutils as well as 'Zce', 'Zcmp', 'Zcmt'.
21272 2023-08-29  Tsukasa OI  <research_trasio@irq.a4lg.com>
21274         * common/config/riscv/riscv-common.cc (riscv_ext_version_table):
21275         Add stub support for all vendor extensions supported by Binutils.
21277 2023-08-29  Tsukasa OI  <research_trasio@irq.a4lg.com>
21279         * common/config/riscv/riscv-common.cc
21280         (riscv_implied_info): Add implications from privileged extensions.
21281         (riscv_ext_version_table): Add stub support for all privileged
21282         extensions supported by Binutils.
21284 2023-08-29  Lehua Ding  <lehua.ding@rivai.ai>
21286         * config/riscv/autovec.md: Adjust
21287         * config/riscv/riscv-protos.h (RVV_VUNDEF): Clean.
21288         (get_vlmax_rtx): Exported.
21289         * config/riscv/riscv-v.cc (emit_nonvlmax_fp_ternary_tu_insn): Deleted.
21290         (emit_vlmax_masked_gather_mu_insn): Adjust.
21291         (get_vlmax_rtx): New func.
21292         (expand_load_store): Adjust.
21293         (expand_cond_len_unop): Call expand_cond_len_op.
21294         (expand_cond_len_op): New subroutine.
21295         (expand_cond_len_binop): Call expand_cond_len_op.
21296         (expand_cond_len_ternop): Call expand_cond_len_op.
21297         (expand_lanes_load_store): Adjust.
21299 2023-08-29  Jakub Jelinek  <jakub@redhat.com>
21301         PR middle-end/79173
21302         PR middle-end/111209
21303         * tree-ssa-math-opts.cc (match_uaddc_usubc): Match also
21304         just 2 limb uaddc/usubc with 0 carry-in on lower limb and ignored
21305         carry-out on higher limb.  Don't match it though if it could be
21306         matched later on 4 argument addition/subtraction.
21308 2023-08-29  Andrew Pinski  <apinski@marvell.com>
21310         PR tree-optimization/111147
21311         * match.pd (`(x | y) & (~x ^ y)`) Use bitwise_inverted_equal_p
21312         instead of matching bit_not.
21314 2023-08-29  Christophe Lyon  <christophe.lyon@linaro.org>
21316         * config/arm/arm-mve-builtins.cc (type_suffixes): Add missing
21317         initializer.
21319 2023-08-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21321         * config/riscv/riscv-vsetvl.cc (vector_insn_info::get_avl_or_vl_reg): New function.
21322         (pass_vsetvl::compute_local_properties): Fix bug.
21323         (pass_vsetvl::commit_vsetvls): Ditto.
21324         * config/riscv/riscv-vsetvl.h: New function.
21326 2023-08-29  Lehua Ding  <lehua.ding@rivai.ai>
21328         PR target/110943
21329         * config/riscv/predicates.md (vector_const_int_or_double_0_operand):
21330         New predicate.
21331         * config/riscv/riscv-vector-builtins.cc (function_expander::function_expander):
21332         force_reg mem target operand.
21333         * config/riscv/vector.md (@pred_mov<mode>): Wrapper.
21334         (*pred_mov<mode>): Remove imm -> reg pattern.
21335         (*pred_broadcast<mode>_imm): Add imm -> reg pattern.
21337 2023-08-29  Lulu Cheng  <chenglulu@loongson.cn>
21339         * common/config/loongarch/loongarch-common.cc:
21340         Enable '-free' on O2 and above.
21341         * doc/invoke.texi: Modify the description information
21342         of the '-free' compilation option and add the LoongArch
21343         description.
21345 2023-08-28  Tsukasa OI  <research_trasio@irq.a4lg.com>
21347         * doc/extend.texi: Fix the description of __builtin_riscv_pause.
21349 2023-08-28  Tsukasa OI  <research_trasio@irq.a4lg.com>
21351         * common/config/riscv/riscv-common.cc (riscv_ext_version_table):
21352         Implement the 'Zihintpause' extension, version 2.0.
21353         (riscv_ext_flag_table) Add 'Zihintpause' handling.
21354         * config/riscv/riscv-builtins.cc: Remove availability predicate
21355         "always" and add "hint_pause".
21356         (riscv_builtins) : Add "pause" extension.
21357         * config/riscv/riscv-opts.h (MASK_ZIHINTPAUSE, TARGET_ZIHINTPAUSE): New.
21358         * config/riscv/riscv.md (riscv_pause): Adjust output based on
21359         TARGET_ZIHINTPAUSE.
21361 2023-08-28  Andrew Pinski  <apinski@marvell.com>
21363         * match.pd (`(X & ~Y) | (~X & Y)`): Use bitwise_inverted_equal_p
21364         instead of specifically checking for ~X.
21366 2023-08-28  Andrew Pinski  <apinski@marvell.com>
21368         PR tree-optimization/111146
21369         * match.pd (`(x | y) & ~x`, `(x & y) | ~x`): Remove
21370         redundant pattern.
21372 2023-08-28  Andrew Pinski  <apinski@marvell.com>
21374         * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Add dump information
21375         when resimplify returns true.
21376         (match_simplify_replacement): Print only if accepted the match-and-simplify
21377         result rather than the full sequence.
21379 2023-08-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21381         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::earliest_fusion): Skip
21382         never probability.
21383         (pass_vsetvl::compute_probabilities): Fix unitialized probability.
21385 2023-08-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21387         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::earliest_fusion): Fix bug.
21389 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
21391         * config/arm/arm-mve-builtins-base.cc (vmullbq_poly)
21392         (vmulltq_poly): New.
21393         * config/arm/arm-mve-builtins-base.def (vmullbq_poly)
21394         (vmulltq_poly): New.
21395         * config/arm/arm-mve-builtins-base.h (vmullbq_poly)
21396         (vmulltq_poly): New.
21397         * config/arm/arm_mve.h (vmulltq_poly): Remove.
21398         (vmullbq_poly): Remove.
21399         (vmullbq_poly_m): Remove.
21400         (vmulltq_poly_m): Remove.
21401         (vmullbq_poly_x): Remove.
21402         (vmulltq_poly_x): Remove.
21403         (vmulltq_poly_p8): Remove.
21404         (vmullbq_poly_p8): Remove.
21405         (vmulltq_poly_p16): Remove.
21406         (vmullbq_poly_p16): Remove.
21407         (vmullbq_poly_m_p8): Remove.
21408         (vmullbq_poly_m_p16): Remove.
21409         (vmulltq_poly_m_p8): Remove.
21410         (vmulltq_poly_m_p16): Remove.
21411         (vmullbq_poly_x_p8): Remove.
21412         (vmullbq_poly_x_p16): Remove.
21413         (vmulltq_poly_x_p8): Remove.
21414         (vmulltq_poly_x_p16): Remove.
21415         (__arm_vmulltq_poly_p8): Remove.
21416         (__arm_vmullbq_poly_p8): Remove.
21417         (__arm_vmulltq_poly_p16): Remove.
21418         (__arm_vmullbq_poly_p16): Remove.
21419         (__arm_vmullbq_poly_m_p8): Remove.
21420         (__arm_vmullbq_poly_m_p16): Remove.
21421         (__arm_vmulltq_poly_m_p8): Remove.
21422         (__arm_vmulltq_poly_m_p16): Remove.
21423         (__arm_vmullbq_poly_x_p8): Remove.
21424         (__arm_vmullbq_poly_x_p16): Remove.
21425         (__arm_vmulltq_poly_x_p8): Remove.
21426         (__arm_vmulltq_poly_x_p16): Remove.
21427         (__arm_vmulltq_poly): Remove.
21428         (__arm_vmullbq_poly): Remove.
21429         (__arm_vmullbq_poly_m): Remove.
21430         (__arm_vmulltq_poly_m): Remove.
21431         (__arm_vmullbq_poly_x): Remove.
21432         (__arm_vmulltq_poly_x): Remove.
21434 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
21436         * config/arm/arm-mve-builtins-functions.h (class
21437         unspec_mve_function_exact_insn_vmull_poly): New.
21439 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
21441         * config/arm/arm-mve-builtins-shapes.cc (binary_widen_poly): New.
21442         * config/arm/arm-mve-builtins-shapes.h (binary_widen_poly): New.
21444 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
21446         * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): Add
21447         support for 'U' and 'p' format specifiers.
21449 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
21451         * config/arm/arm-mve-builtins.cc (type_suffixes): Handle poly_p
21452         field..
21453         (TYPES_poly_8_16): New.
21454         (poly_8_16): New.
21455         * config/arm/arm-mve-builtins.def (p8): New type suffix.
21456         (p16): Likewise.
21457         * config/arm/arm-mve-builtins.h (enum type_class_index): Add
21458         TYPE_poly.
21459         (struct type_suffix_info): Add poly_p field.
21461 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
21463         * config/arm/arm-mve-builtins-base.cc (vmullbq_int, vmulltq_int):
21464         New.
21465         * config/arm/arm-mve-builtins-base.def (vmullbq_int, vmulltq_int):
21466         New.
21467         * config/arm/arm-mve-builtins-base.h (vmullbq_int, vmulltq_int):
21468         New.
21469         * config/arm/arm_mve.h (vmulltq_int): Remove.
21470         (vmullbq_int): Remove.
21471         (vmullbq_int_m): Remove.
21472         (vmulltq_int_m): Remove.
21473         (vmullbq_int_x): Remove.
21474         (vmulltq_int_x): Remove.
21475         (vmulltq_int_u8): Remove.
21476         (vmullbq_int_u8): Remove.
21477         (vmulltq_int_s8): Remove.
21478         (vmullbq_int_s8): Remove.
21479         (vmulltq_int_u16): Remove.
21480         (vmullbq_int_u16): Remove.
21481         (vmulltq_int_s16): Remove.
21482         (vmullbq_int_s16): Remove.
21483         (vmulltq_int_u32): Remove.
21484         (vmullbq_int_u32): Remove.
21485         (vmulltq_int_s32): Remove.
21486         (vmullbq_int_s32): Remove.
21487         (vmullbq_int_m_s8): Remove.
21488         (vmullbq_int_m_s32): Remove.
21489         (vmullbq_int_m_s16): Remove.
21490         (vmullbq_int_m_u8): Remove.
21491         (vmullbq_int_m_u32): Remove.
21492         (vmullbq_int_m_u16): Remove.
21493         (vmulltq_int_m_s8): Remove.
21494         (vmulltq_int_m_s32): Remove.
21495         (vmulltq_int_m_s16): Remove.
21496         (vmulltq_int_m_u8): Remove.
21497         (vmulltq_int_m_u32): Remove.
21498         (vmulltq_int_m_u16): Remove.
21499         (vmullbq_int_x_s8): Remove.
21500         (vmullbq_int_x_s16): Remove.
21501         (vmullbq_int_x_s32): Remove.
21502         (vmullbq_int_x_u8): Remove.
21503         (vmullbq_int_x_u16): Remove.
21504         (vmullbq_int_x_u32): Remove.
21505         (vmulltq_int_x_s8): Remove.
21506         (vmulltq_int_x_s16): Remove.
21507         (vmulltq_int_x_s32): Remove.
21508         (vmulltq_int_x_u8): Remove.
21509         (vmulltq_int_x_u16): Remove.
21510         (vmulltq_int_x_u32): Remove.
21511         (__arm_vmulltq_int_u8): Remove.
21512         (__arm_vmullbq_int_u8): Remove.
21513         (__arm_vmulltq_int_s8): Remove.
21514         (__arm_vmullbq_int_s8): Remove.
21515         (__arm_vmulltq_int_u16): Remove.
21516         (__arm_vmullbq_int_u16): Remove.
21517         (__arm_vmulltq_int_s16): Remove.
21518         (__arm_vmullbq_int_s16): Remove.
21519         (__arm_vmulltq_int_u32): Remove.
21520         (__arm_vmullbq_int_u32): Remove.
21521         (__arm_vmulltq_int_s32): Remove.
21522         (__arm_vmullbq_int_s32): Remove.
21523         (__arm_vmullbq_int_m_s8): Remove.
21524         (__arm_vmullbq_int_m_s32): Remove.
21525         (__arm_vmullbq_int_m_s16): Remove.
21526         (__arm_vmullbq_int_m_u8): Remove.
21527         (__arm_vmullbq_int_m_u32): Remove.
21528         (__arm_vmullbq_int_m_u16): Remove.
21529         (__arm_vmulltq_int_m_s8): Remove.
21530         (__arm_vmulltq_int_m_s32): Remove.
21531         (__arm_vmulltq_int_m_s16): Remove.
21532         (__arm_vmulltq_int_m_u8): Remove.
21533         (__arm_vmulltq_int_m_u32): Remove.
21534         (__arm_vmulltq_int_m_u16): Remove.
21535         (__arm_vmullbq_int_x_s8): Remove.
21536         (__arm_vmullbq_int_x_s16): Remove.
21537         (__arm_vmullbq_int_x_s32): Remove.
21538         (__arm_vmullbq_int_x_u8): Remove.
21539         (__arm_vmullbq_int_x_u16): Remove.
21540         (__arm_vmullbq_int_x_u32): Remove.
21541         (__arm_vmulltq_int_x_s8): Remove.
21542         (__arm_vmulltq_int_x_s16): Remove.
21543         (__arm_vmulltq_int_x_s32): Remove.
21544         (__arm_vmulltq_int_x_u8): Remove.
21545         (__arm_vmulltq_int_x_u16): Remove.
21546         (__arm_vmulltq_int_x_u32): Remove.
21547         (__arm_vmulltq_int): Remove.
21548         (__arm_vmullbq_int): Remove.
21549         (__arm_vmullbq_int_m): Remove.
21550         (__arm_vmulltq_int_m): Remove.
21551         (__arm_vmullbq_int_x): Remove.
21552         (__arm_vmulltq_int_x): Remove.
21554 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
21556         * config/arm/arm-mve-builtins-shapes.cc (binary_widen): New.
21557         * config/arm/arm-mve-builtins-shapes.h (binary_widen): New.
21559 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
21561         * config/arm/arm-mve-builtins-functions.h (class
21562         unspec_mve_function_exact_insn_vmull): New.
21564 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
21566         * config/arm/iterators.md (mve_insn): Add vmullb, vmullt.
21567         (isu): Add VMULLBQ_INT_S, VMULLBQ_INT_U, VMULLTQ_INT_S,
21568         VMULLTQ_INT_U.
21569         (supf): Add VMULLBQ_POLY_P, VMULLTQ_POLY_P, VMULLBQ_POLY_M_P,
21570         VMULLTQ_POLY_M_P.
21571         (VMULLBQ_INT, VMULLTQ_INT, VMULLBQ_INT_M, VMULLTQ_INT_M): Delete.
21572         (VMULLxQ_INT, VMULLxQ_POLY, VMULLxQ_INT_M, VMULLxQ_POLY_M): New.
21573         * config/arm/mve.md (mve_vmullbq_int_<supf><mode>)
21574         (mve_vmulltq_int_<supf><mode>): Merge into ...
21575         (@mve_<mve_insn>q_int_<supf><mode>) ... this.
21576         (mve_vmulltq_poly_p<mode>, mve_vmullbq_poly_p<mode>): Merge into ...
21577         (@mve_<mve_insn>q_poly_<supf><mode>): ... this.
21578         (mve_vmullbq_int_m_<supf><mode>, mve_vmulltq_int_m_<supf><mode>): Merge into ...
21579         (@mve_<mve_insn>q_int_m_<supf><mode>): ... this.
21580         (mve_vmullbq_poly_m_p<mode>, mve_vmulltq_poly_m_p<mode>): Merge into ...
21581         (@mve_<mve_insn>q_poly_m_<supf><mode>): ... this.
21583 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
21585         * config/arm/arm-mve-builtins-shapes.cc (parse_element_type):
21586         Remove dead check.
21588 2023-08-28  Christophe Lyon  <christophe.lyon@linaro.org>
21590         * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): Fix loop bound.
21591         (binary_acca_int64): Likewise.
21593 2023-08-28  Aldy Hernandez  <aldyh@redhat.com>
21595         * range-op-float.cc (fold_range): Handle relations.
21597 2023-08-28  Lulu Cheng  <chenglulu@loongson.cn>
21599         * config/loongarch/loongarch.cc (loongarch_expand_conditional_move):
21600         Optimize the function implementation.
21602 2023-08-28  liuhongt  <hongtao.liu@intel.com>
21604         PR target/111119
21605         * config/i386/sse.md (V48_AVX2): Rename to ..
21606         (V48_128_256): .. this.
21607         (ssefltmodesuffix): Extend to V4SF/V8SF/V2DF/V4DF.
21608         (<avx_avx2>_maskload<ssemodesuffix><avxsizesuffix>): Change
21609         V48_AVX2 to V48_128_256, also generate vmaskmov{ps,pd} for
21610         integral modes when TARGET_AVX2 is not available.
21611         (<avx_avx2>_maskstore<ssemodesuffix><avxsizesuffix>): Ditto.
21612         (maskload<mode><sseintvecmodelower>): Change V48_AVX2 to
21613         V48_128_256.
21614         (maskstore<mode><sseintvecmodelower>): Ditto.
21616 2023-08-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21618         * config/riscv/riscv-vsetvl.cc (vsetvl_vtype_change_only_p):
21619         New function.
21620         (after_or_same_p): Ditto.
21621         (find_reg_killed_by): Delete.
21622         (has_vsetvl_killed_avl_p): Ditto.
21623         (anticipatable_occurrence_p): Refactor.
21624         (any_set_in_bb_p): Delete.
21625         (count_regno_occurrences): Ditto.
21626         (backward_propagate_worthwhile_p): Ditto.
21627         (demands_can_be_fused_p): Ditto.
21628         (earliest_pred_can_be_fused_p): New function.
21629         (vsetvl_dominated_by_p): Ditto.
21630         (vector_insn_info::parse_insn): Refactor.
21631         (vector_insn_info::merge): Refactor.
21632         (vector_insn_info::dump): Refactor.
21633         (vector_infos_manager::vector_infos_manager): Refactor.
21634         (vector_infos_manager::all_empty_predecessor_p): Delete.
21635         (vector_infos_manager::all_same_avl_p): Ditto.
21636         (vector_infos_manager::create_bitmap_vectors): Refactor.
21637         (vector_infos_manager::free_bitmap_vectors): Refactor.
21638         (vector_infos_manager::dump): Refactor.
21639         (pass_vsetvl::update_block_info): New function.
21640         (enum fusion_type): Ditto.
21641         (pass_vsetvl::get_backward_fusion_type): Delete.
21642         (pass_vsetvl::hard_empty_block_p): Ditto.
21643         (pass_vsetvl::backward_demand_fusion): Ditto.
21644         (pass_vsetvl::forward_demand_fusion): Ditto.
21645         (pass_vsetvl::demand_fusion): Ditto.
21646         (pass_vsetvl::cleanup_illegal_dirty_blocks): Ditto.
21647         (pass_vsetvl::compute_local_properties): Ditto.
21648         (pass_vsetvl::earliest_fusion): New function.
21649         (pass_vsetvl::vsetvl_fusion): Ditto.
21650         (pass_vsetvl::commit_vsetvls): Refactor.
21651         (get_first_vsetvl_before_rvv_insns): Ditto.
21652         (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
21653         (pass_vsetvl::cleanup_earliest_vsetvls): New function.
21654         (pass_vsetvl::df_post_optimization): Refactor.
21655         (pass_vsetvl::lazy_vsetvl): Ditto.
21656         * config/riscv/riscv-vsetvl.h: Ditto.
21658 2023-08-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21660         * config/riscv/autovec.md (len_fold_extract_last_<mode>): New pattern.
21661         * config/riscv/riscv-protos.h (enum insn_type): New enum.
21662         (expand_fold_extract_last): New function.
21663         * config/riscv/riscv-v.cc (emit_nonvlmax_slide_insn): Ditto.
21664         (emit_cpop_insn): Ditto.
21665         (emit_nonvlmax_compress_insn): Ditto.
21666         (expand_fold_extract_last): Ditto.
21667         * config/riscv/vector.md: Fix vcpop.m ratio demand.
21669 2023-08-25  Edwin Lu  <ewlu@rivosinc.com>
21671         * config/riscv/sync-rvwmo.md: updated types to "multi" or
21672                 "atomic" based on number of assembly lines generated
21673         * config/riscv/sync-ztso.md: likewise
21674         * config/riscv/sync.md: likewise
21676 2023-08-25  Jin Ma  <jinma@linux.alibaba.com>
21678         * common/config/riscv/riscv-common.cc: Add zfa extension version, which depends on
21679         the F extension.
21680         * config/riscv/constraints.md (zfli): Constrain the floating point number that the
21681         instructions FLI.H/S/D can load.
21682         * config/riscv/iterators.md (ceil): New.
21683         * config/riscv/riscv-opts.h (MASK_ZFA): New.
21684         (TARGET_ZFA): New.
21685         * config/riscv/riscv-protos.h (riscv_float_const_rtx_index_for_fli): New.
21686         * config/riscv/riscv.cc (riscv_float_const_rtx_index_for_fli): New.
21687         (riscv_cannot_force_const_mem): If instruction FLI.H/S/D can be used, memory is
21688         not applicable.
21689         (riscv_const_insns): Likewise.
21690         (riscv_legitimize_const_move): Likewise.
21691         (riscv_split_64bit_move_p): If instruction FLI.H/S/D can be used, no split is
21692         required.
21693         (riscv_split_doubleword_move): Likewise.
21694         (riscv_output_move): Output the mov instructions in zfa extension.
21695         (riscv_print_operand): Output the floating-point value of the FLI.H/S/D immediate
21696         in assembly.
21697         (riscv_secondary_memory_needed): Likewise.
21698         * config/riscv/riscv.md (fminm<mode>3): New.
21699         (fmaxm<mode>3): New.
21700         (movsidf2_low_rv32): New.
21701         (movsidf2_high_rv32): New.
21702         (movdfsisi3_rv32): New.
21703         (f<quiet_pattern>_quiet<ANYF:mode><X:mode>4_zfa): New.
21704         * config/riscv/riscv.opt: New.
21706 2023-08-25  Sandra Loosemore  <sandra@codesourcery.com>
21708         * omp-api.h: New.
21709         * omp-general.cc (omp_runtime_api_procname): New.
21710         (omp_runtime_api_call): Moved here from omp-low.cc, and make
21711         non-static.
21712         * omp-general.h: Include omp-api.h.
21713         * omp-low.cc (omp_runtime_api_call): Delete this copy.
21715 2023-08-25  Sandra Loosemore  <sandra@codesourcery.com>
21717         * doc/generic.texi (OpenMP): Document OMP_STRUCTURED_BLOCK.
21718         * doc/gimple.texi (GIMPLE instruction set): Add
21719         GIMPLE_OMP_STRUCTURED_BLOCK.
21720         (GIMPLE_OMP_STRUCTURED_BLOCK): New subsection.
21721         * gimple-low.cc (lower_stmt): Error on GIMPLE_OMP_STRUCTURED_BLOCK.
21722         * gimple-pretty-print.cc (dump_gimple_omp_block): Handle
21723         GIMPLE_OMP_STRUCTURED_BLOCK.
21724         (pp_gimple_stmt_1): Likewise.
21725         * gimple-walk.cc (walk_gimple_stmt): Likewise.
21726         * gimple.cc (gimple_build_omp_structured_block): New.
21727         * gimple.def (GIMPLE_OMP_STRUCTURED_BLOCK): New.
21728         * gimple.h (gimple_build_omp_structured_block): Declare.
21729         (gimple_has_substatements): Handle GIMPLE_OMP_STRUCTURED_BLOCK.
21730         (CASE_GIMPLE_OMP): Likewise.
21731         * gimplify.cc (is_gimple_stmt): Handle OMP_STRUCTURED_BLOCK.
21732         (gimplify_expr): Likewise.
21733         * omp-expand.cc (GIMPLE_OMP_STRUCTURED_BLOCK): Error on
21734         GIMPLE_OMP_STRUCTURED_BLOCK.
21735         * omp-low.cc (scan_omp_1_stmt): Handle GIMPLE_OMP_STRUCTURED_BLOCK.
21736         (lower_omp_1): Likewise.
21737         (diagnose_sb_1): Likewise.
21738         (diagnose_sb_2): Likewise.
21739         * tree-inline.cc (remap_gimple_stmt): Handle
21740         GIMPLE_OMP_STRUCTURED_BLOCK.
21741         (estimate_num_insns): Likewise.
21742         * tree-nested.cc (convert_nonlocal_reference_stmt): Likewise.
21743         (convert_local_reference_stmt): Likewise.
21744         (convert_gimple_call): Likewise.
21745         * tree-pretty-print.cc (dump_generic_node): Handle
21746         OMP_STRUCTURED_BLOCK.
21747         * tree.def (OMP_STRUCTURED_BLOCK): New.
21748         * tree.h (OMP_STRUCTURED_BLOCK_BODY): New.
21750 2023-08-25  Vineet Gupta  <vineetg@rivosinc.com>
21752         * config/riscv/riscv.cc (riscv_rtx_costs): Adjust const_int
21753         cost. Add some comments about different constants handling.
21755 2023-08-25  Andrew Pinski  <apinski@marvell.com>
21757         * match.pd (`a ? one_zero : one_zero`): Move
21758         below detection of minmax.
21760 2023-08-25  Andrew Pinski  <apinski@marvell.com>
21762         * match.pd (`a | C -> C`): New pattern.
21764 2023-08-25  Uros Bizjak  <ubizjak@gmail.com>
21766         * caller-save.cc (new_saved_hard_reg):
21767         Rename TRUE/FALSE to true/false.
21768         (setup_save_areas): Ditto.
21769         * gcc.cc (set_collect_gcc_options): Ditto.
21770         (driver::build_multilib_strings): Ditto.
21771         (print_multilib_info): Ditto.
21772         * genautomata.cc (gen_cpu_unit): Ditto.
21773         (gen_query_cpu_unit): Ditto.
21774         (gen_bypass): Ditto.
21775         (gen_excl_set): Ditto.
21776         (gen_presence_absence_set): Ditto.
21777         (gen_presence_set): Ditto.
21778         (gen_final_presence_set): Ditto.
21779         (gen_absence_set): Ditto.
21780         (gen_final_absence_set): Ditto.
21781         (gen_automaton): Ditto.
21782         (gen_regexp_repeat): Ditto.
21783         (gen_regexp_allof): Ditto.
21784         (gen_regexp_oneof): Ditto.
21785         (gen_regexp_sequence): Ditto.
21786         (process_decls): Ditto.
21787         (reserv_sets_are_intersected): Ditto.
21788         (initiate_excl_sets): Ditto.
21789         (form_reserv_sets_list): Ditto.
21790         (check_presence_pattern_sets): Ditto.
21791         (check_absence_pattern_sets): Ditto.
21792         (check_regexp_units_distribution): Ditto.
21793         (check_unit_distributions_to_automata): Ditto.
21794         (create_ainsns): Ditto.
21795         (output_insn_code_cases): Ditto.
21796         (output_internal_dead_lock_func): Ditto.
21797         (form_important_insn_automata_lists): Ditto.
21798         * gengtype-state.cc (read_state_files_list): Ditto.
21799         * gengtype.cc (main): Ditto.
21800         * gimple-array-bounds.cc (array_bounds_checker::check_array_bounds):
21801         Ditto.
21802         * gimple.cc (gimple_build_call_from_tree): Ditto.
21803         (preprocess_case_label_vec_for_gimple): Ditto.
21804         * gimplify.cc (gimplify_call_expr): Ditto.
21805         * ordered-hash-map-tests.cc (test_map_of_int_to_strings): Ditto.
21807 2023-08-25  Richard Biener  <rguenther@suse.de>
21809         PR tree-optimization/111137
21810         * tree-vect-data-refs.cc (vect_slp_analyze_load_dependences):
21811         Properly handle grouped stores from other SLP instances.
21813 2023-08-25  Richard Biener  <rguenther@suse.de>
21815         * tree-vect-data-refs.cc (vect_slp_analyze_store_dependences):
21816         Split out from vect_slp_analyze_node_dependences, remove
21817         dead code.
21818         (vect_slp_analyze_load_dependences): Split out from
21819         vect_slp_analyze_node_dependences, adjust comments.  Process
21820         queued stores before any disambiguation.
21821         (vect_slp_analyze_node_dependences): Remove.
21822         (vect_slp_analyze_instance_dependence): Adjust.
21824 2023-08-25  Aldy Hernandez  <aldyh@redhat.com>
21826         * range-op-float.cc (frelop_early_resolve): Rewrite for better NAN
21827         handling.
21828         (operator_not_equal::fold_range): Adjust for relations.
21829         (operator_lt::fold_range): Same.
21830         (operator_gt::fold_range): Same.
21831         (foperator_unordered_equal::fold_range): Same.
21832         (foperator_unordered_lt::fold_range): Same.
21833         (foperator_unordered_le::fold_range): Same.
21834         (foperator_unordered_gt::fold_range): Same.
21835         (foperator_unordered_ge::fold_range): Same.
21837 2023-08-25  Richard Biener  <rguenther@suse.de>
21839         PR tree-optimization/111136
21840         * tree-vect-loop.cc (vect_dissolve_slp_only_groups): For
21841         stores force STMT_VINFO_STRIDED_P and also duplicate that
21842         to all elements.
21844 2023-08-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21846         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_local_properties):
21847         Add early continue.
21849 2023-08-25  liuhongt  <hongtao.liu@intel.com>
21851         * config/i386/sse.md (vec_set<mode>): Removed.
21852         (V_128H): Merge into ..
21853         (V_128): .. this.
21854         (V_256H): Merge into ..
21855         (V_256): .. this.
21856         (V_512): Add V32HF, V32BF.
21857         (*ssse3_palignr<mode>_perm): Adjust mode iterator from V_128H
21858         to V_128.
21859         (vcond<mode><sseintvecmodelower>): Removed
21860         (vcondu<mode><sseintvecmodelower>): Removed.
21861         (avx_vbroadcastf128_<mode>): Refator from V_256H to V_256.
21863 2023-08-25  Hongyu Wang  <hongyu.wang@intel.com>
21865         PR target/111127
21866         * config/i386/sse.md (avx512f_cvtne2ps2bf16_<mode>_maskz):
21867         Adjust paramter order.
21869 2023-08-24  Uros Bizjak  <ubizjak@gmail.com>
21871         PR target/94866
21872         * config/i386/sse.md (*sse2_movq128_<mode>_1): New insn pattern.
21874 2023-08-24  David Malcolm  <dmalcolm@redhat.com>
21876         PR analyzer/105899
21877         * doc/invoke.texi (Static Analyzer Options): Add "strcat" to the
21878         list of functions known to the analyzer.
21880 2023-08-24  Richard Biener  <rguenther@suse.de>
21882         PR tree-optimization/111123
21883         * tree-ssa-ccp.cc (pass_fold_builtins::execute): Do not
21884         remove indirect clobbers here ...
21885         * tree-outof-ssa.cc (rewrite_out_of_ssa): ... but here.
21886         (remove_indirect_clobbers): New function.
21888 2023-08-24  Jan Hubicka  <jh@suse.cz>
21890         * cfg.h (struct control_flow_graph): New field full_profile.
21891         * auto-profile.cc (afdo_annotate_cfg): Set full_profile to true.
21892         * cfg.cc (init_flow): Set full_profile to false.
21893         * graphite.cc (graphite_transform_loops): Set full_profile to false.
21894         * lto-streamer-in.cc (input_cfg): Initialize full_profile flag.
21895         * predict.cc (pass_profile::execute): Set full_profile to true.
21896         * symtab-thunks.cc (expand_thunk): Set full_profile to true.
21897         * tree-cfg.cc (gimple_verify_flow_info): Verify that profile is full
21898         if full_profile is set.
21899         * tree-inline.cc (initialize_cfun): Initialize full_profile.
21900         (expand_call_inline): Combine full_profile.
21902 2023-08-24  Richard Biener  <rguenther@suse.de>
21904         * tree-vect-slp.cc (vect_build_slp_tree_1): Rename
21905         load_p to ldst_p, fix mistakes and rely on
21906         STMT_VINFO_DATA_REF.
21908 2023-08-24  Jan Hubicka  <jh@suse.cz>
21910         * gimple-harden-conditionals.cc (insert_check_and_trap): Set count
21911         of newly build trap bb.
21913 2023-08-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21915         * config/riscv/riscv.cc (riscv_preferred_else_value): Remove it since
21916         it forbid COND_LEN_FMS/COND_LEN_FNMS STMT fold.
21917         (TARGET_PREFERRED_ELSE_VALUE): Ditto.
21919 2023-08-24  Robin Dapp  <rdapp.gcc@gmail.com>
21921         * common/config/riscv/riscv-common.cc: Add -fsched-pressure.
21922         * config/riscv/riscv.cc (riscv_option_override): Set sched
21923         pressure algorithm.
21925 2023-08-24  Robin Dapp  <rdapp@ventanamicro.com>
21927         * config/riscv/riscv.cc (riscv_print_operand): Allow vk operand.
21929 2023-08-24  Richard Biener  <rguenther@suse.de>
21931         PR tree-optimization/111125
21932         * tree-vect-slp.cc (vect_slp_function): Split at novector
21933         loop entry, do not push blocks in novector loops.
21935 2023-08-24  Richard Sandiford  <richard.sandiford@arm.com>
21937         * doc/extend.texi: Document the C [[__extension__ ...]] construct.
21939 2023-08-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21941         * genmatch.cc (decision_tree::gen): Support
21942         COND_LEN_FNMA/COND_LEN_FMS/COND_LEN_FNMS gimple fold.
21943         * gimple-match-exports.cc (gimple_simplify): Ditto.
21944         (gimple_resimplify6): New function.
21945         (gimple_resimplify7): New function.
21946         (gimple_match_op::resimplify): Support
21947         COND_LEN_FNMA/COND_LEN_FMS/COND_LEN_FNMS gimple fold.
21948         (convert_conditional_op): Ditto.
21949         (build_call_internal): Ditto.
21950         (try_conditional_simplification): Ditto.
21951         (gimple_extract): Ditto.
21952         * gimple-match.h (gimple_match_cond::gimple_match_cond): Ditto.
21953         * internal-fn.cc (CASE): Ditto.
21955 2023-08-24  Richard Biener  <rguenther@suse.de>
21957         PR tree-optimization/111115
21958         * tree-vectorizer.h (vect_slp_child_index_for_operand): New.
21959         * tree-vect-data-refs.cc (can_group_stmts_p): Also group
21960         .MASK_STORE.
21961         * tree-vect-slp.cc (arg3_arg2_map): New.
21962         (vect_get_operand_map): Handle IFN_MASK_STORE.
21963         (vect_slp_child_index_for_operand): New function.
21964         (vect_build_slp_tree_1): Handle statements with no LHS,
21965         masked store ifns.
21966         (vect_remove_slp_scalar_calls): Likewise.
21967         * tree-vect-stmts.cc (vect_check_store_rhs): Lookup the
21968         SLP child corresponding to the ifn value index.
21969         (vectorizable_store): Likewise for the mask index.  Support
21970         masked stores.
21971         (vectorizable_load): Lookup the SLP child corresponding to the
21972         ifn mask index.
21974 2023-08-24  Richard Biener  <rguenther@suse.de>
21976         PR tree-optimization/111125
21977         * tree-vect-slp.cc (vectorizable_bb_reduc_epilogue): Account
21978         for the remain_defs processing.
21980 2023-08-24  Richard Sandiford  <richard.sandiford@arm.com>
21982         * config/aarch64/aarch64.cc: Include ssa.h.
21983         (aarch64_multiply_add_p): Require the second operand of an
21984         Advanced SIMD subtraction to be a multiplication.  Assume that
21985         such an operation won't be fused if the second operand is used
21986         multiple times and if the first operand is also a multiplication.
21988 2023-08-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21990         * tree-vect-loop.cc (vectorizable_reduction): Apply
21991         LEN_FOLD_EXTRACT_LAST.
21992         * tree-vect-stmts.cc (vectorizable_condition): Ditto.
21994 2023-08-24  Richard Biener  <rguenther@suse.de>
21996         PR tree-optimization/111128
21997         * tree-vect-patterns.cc (vect_recog_over_widening_pattern):
21998         Emit external shift operand inline if we promoted it with
21999         another pattern stmt.
22001 2023-08-24  Pan Li  <pan2.li@intel.com>
22003         * config/riscv/autovec.md: Fix typo.
22005 2023-08-24  Pan Li  <pan2.li@intel.com>
22007         * config/riscv/riscv-vector-builtins-bases.cc
22008         (class binop_frm): Removed.
22009         (class reverse_binop_frm): Ditto.
22010         (class widen_binop_frm): Ditto.
22011         (class vfmacc_frm): Ditto.
22012         (class vfnmacc_frm): Ditto.
22013         (class vfmsac_frm): Ditto.
22014         (class vfnmsac_frm): Ditto.
22015         (class vfmadd_frm): Ditto.
22016         (class vfnmadd_frm): Ditto.
22017         (class vfmsub_frm): Ditto.
22018         (class vfnmsub_frm): Ditto.
22019         (class vfwmacc_frm): Ditto.
22020         (class vfwnmacc_frm): Ditto.
22021         (class vfwmsac_frm): Ditto.
22022         (class vfwnmsac_frm): Ditto.
22023         (class unop_frm): Ditto.
22024         (class vfrec7_frm): Ditto.
22025         (class binop): Add frm_op_type template arg.
22026         (class unop): Ditto.
22027         (class widen_binop): Ditto.
22028         (class widen_binop_fp): Ditto.
22029         (class reverse_binop): Ditto.
22030         (class vfmacc): Ditto.
22031         (class vfnmsac): Ditto.
22032         (class vfmadd): Ditto.
22033         (class vfnmsub): Ditto.
22034         (class vfnmacc): Ditto.
22035         (class vfmsac): Ditto.
22036         (class vfnmadd): Ditto.
22037         (class vfmsub): Ditto.
22038         (class vfwmacc): Ditto.
22039         (class vfwnmacc): Ditto.
22040         (class vfwmsac): Ditto.
22041         (class vfwnmsac): Ditto.
22042         (class float_misc): Ditto.
22044 2023-08-24  Andrew Pinski  <apinski@marvell.com>
22046         PR tree-optimization/111109
22047         * match.pd (ior(cond,cond), ior(vec_cond,vec_cond)):
22048         Add check to make sure cmp and icmp are inverse.
22050 2023-08-24  Andrew Pinski  <apinski@marvell.com>
22052         PR tree-optimization/95929
22053         * match.pd (convert?(-a)): New pattern
22054         for 1bit integer types.
22056 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
22058         Revert:
22059         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
22061         * common/config/i386/cpuinfo.h (get_available_features):
22062         Add avx10_set and version and detect avx10.1.
22063         (cpu_indicator_init): Handle avx10.1-512.
22064         * common/config/i386/i386-common.cc
22065         (OPTION_MASK_ISA2_AVX10_512BIT_SET): New.
22066         (OPTION_MASK_ISA2_AVX10_1_SET): Ditto.
22067         (OPTION_MASK_ISA2_AVX10_512BIT_UNSET): Ditto.
22068         (OPTION_MASK_ISA2_AVX10_1_UNSET): Ditto.
22069         (OPTION_MASK_ISA2_AVX2_UNSET): Modify for AVX10_1.
22070         (ix86_handle_option): Handle -mavx10.1, -mavx10.1-256 and
22071         -mavx10.1-512.
22072         * common/config/i386/i386-cpuinfo.h (enum processor_features):
22073         Add FEATURE_AVX10_512BIT, FEATURE_AVX10_1 and
22074         FEATURE_AVX10_512BIT.
22075         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
22076         AVX10_512BIT, AVX10_1 and AVX10_1_512.
22077         * config/i386/constraints.md (Yk): Add AVX10_1.
22078         (Yv): Ditto.
22079         (k): Ditto.
22080         * config/i386/cpuid.h (bit_AVX10): New.
22081         (bit_AVX10_256): Ditto.
22082         (bit_AVX10_512): Ditto.
22083         * config/i386/i386-c.cc (ix86_target_macros_internal):
22084         Define AVX10_512BIT and AVX10_1.
22085         * config/i386/i386-isa.def
22086         (AVX10_512BIT): Add DEF_PTA(AVX10_512BIT).
22087         (AVX10_1): Add DEF_PTA(AVX10_1).
22088         * config/i386/i386-options.cc (isa2_opts): Add -mavx10.1.
22089         (ix86_valid_target_attribute_inner_p): Handle avx10-512bit, avx10.1
22090         and avx10.1-512.
22091         (ix86_option_override_internal): Enable AVX512{F,VL,BW,DQ,CD,BF16,
22092         FP16,VBMI,VBMI2,VNNI,IFMA,BITALG,VPOPCNTDQ} features for avx10.1-512.
22093         (ix86_valid_target_attribute_inner_p): Handle AVX10_1.
22094         * config/i386/i386.cc (ix86_get_ssemov): Add AVX10_1.
22095         (ix86_conditional_register_usage): Ditto.
22096         (ix86_hard_regno_mode_ok): Ditto.
22097         (ix86_rtx_costs): Ditto.
22098         * config/i386/i386.h (VALID_MASK_AVX10_MODE): New macro.
22099         * config/i386/i386.opt: Add option -mavx10.1, -mavx10.1-256 and
22100         -mavx10.1-512.
22101         * doc/extend.texi: Document avx10.1, avx10.1-256 and avx10.1-512.
22102         * doc/invoke.texi: Document -mavx10.1, -mavx10.1-256 and -mavx10.1-512.
22103         * doc/sourcebuild.texi: Document target avx10.1, avx10.1-256
22104         and avx10.1-512.
22106 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
22108         Revert:
22109         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
22111         * common/config/i386/i386-common.cc
22112         (ix86_check_avx10): New function to check isa_flags and
22113         isa_flags_explicit to emit warning when AVX10 is enabled
22114         by "-m" option.
22115         (ix86_check_avx512):  New function to check isa_flags and
22116         isa_flags_explicit to emit warning when AVX512 is enabled
22117         by "-m" option.
22118         (ix86_handle_option): Do not change the flags when warning
22119         is emitted.
22120         * config/i386/driver-i386.cc (host_detect_local_cpu):
22121         Do not append -mno-avx10.1 for -march=native.
22123 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
22125         Revert:
22126         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
22128         * common/config/i386/i386-common.cc
22129         (ix86_check_avx10_vector_width): New function to check isa_flags
22130         to emit a warning when there is a conflict in AVX10 options for
22131         vector width.
22132         (ix86_handle_option): Add check for avx10.1-256 and avx10.1-512.
22133         * config/i386/driver-i386.cc (host_detect_local_cpu):
22134         Do not append -mno-avx10-max-512bit for -march=native.
22136 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
22138         Revert:
22139         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
22141         * config/i386/avx512vldqintrin.h: Remove target attribute.
22142         * config/i386/i386-builtin.def (BDESC):
22143         Add OPTION_MASK_ISA2_AVX10_1.
22144         * config/i386/i386-builtins.cc (def_builtin): Handle AVX10_1.
22145         * config/i386/i386-expand.cc
22146         (ix86_check_builtin_isa_match): Ditto.
22147         (ix86_expand_sse2_mulvxdi3): Add TARGET_AVX10_1.
22148         * config/i386/i386.md: Add new isa attribute avx10_1_or_avx512dq
22149         and avx10_1_or_avx512vl.
22150         * config/i386/sse.md: (VF2_AVX512VLDQ_AVX10_1): New.
22151         (VF1_128_256VLDQ_AVX10_1): Ditto.
22152         (VI8_AVX512VLDQ_AVX10_1): Ditto.
22153         (<sse>_andnot<mode>3<mask_name>):
22154         Add TARGET_AVX10_1 and change isa attr from avx512dq to
22155         avx10_1_or_avx512dq.
22156         (*andnot<mode>3): Add TARGET_AVX10_1 and change isa attr from
22157         avx512vl to avx10_1_or_avx512vl.
22158         (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
22159         Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check.
22160         (fix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
22161         Ditto.
22162         (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
22163         Ditto.
22164         (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
22165         Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check.
22166         (avx512dq_fix<fixunssuffix>_truncv2sfv2di2<mask_name>):
22167         Add TARGET_AVX10_1.
22168         (fix<fixunssuffix>_truncv2sfv2di2): Ditto.
22169         (cond_mul<mode>): Change iterator to VI8_AVX10_1_AVX512DQVL.
22170         Remove target check.
22171         (avx512dq_mul<mode>3<mask_name>): Ditto.
22172         (*avx512dq_mul<mode>3<mask_name>): Ditto.
22173         (VI4F_BRCST32x2): Add TARGET_AVX512DQ and TARGET_AVX10_1.
22174         (<mask_codefor>avx512dq_broadcast<mode><mask_name>):
22175         Remove target check.
22176         (VI8F_BRCST64x2): Add TARGET_AVX512DQ and TARGET_AVX10_1.
22177         (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1):
22178         Remove target check.
22179         * config/i386/subst.md (mask_mode512bit_condition): Add TARGET_AVX10_1.
22180         (mask_avx512vl_condition): Ditto.
22181         (mask): Ditto.
22183 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
22185         Revert:
22186         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
22188         * config/i386/avx512vldqintrin.h: Remove target attribute.
22189         * config/i386/i386-builtin.def (BDESC):
22190         Add OPTION_MASK_ISA2_AVX10_1.
22191         * config/i386/i386.cc (standard_sse_constant_opcode): Add TARGET_AVX10_1.
22192         * config/i386/sse.md: (VI48_AVX512VL_AVX10_1): New.
22193         (VI48_AVX512VLDQ_AVX10_1): Ditto.
22194         (VF2_AVX512VL): Remove.
22195         (VI8_256_512VLDQ_AVX10_1): Rename from VI8_256_512.
22196         Add TARGET_AVX10_1.
22197         (*<code><mode>3<mask_name>): Change isa attribute to
22198         avx10_1_or_avx512dq. Add TARGET_AVX10_1.
22199         (<code><mode>3): Add TARGET_AVX10_1. Change isa attr
22200         to avx10_1_or_avx512vl.
22201         (<mask_codefor>avx512dq_cvtps2qq<mode><mask_name><round_name>):
22202         Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check.
22203         (<mask_codefor>avx512dq_cvtps2qqv2di<mask_name>):
22204         Add TARGET_AVX10_1.
22205         (<mask_codefor>avx512dq_cvtps2uqq<mode><mask_name><round_name>):
22206         Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check.
22207         (<mask_codefor>avx512dq_cvtps2uqqv2di<mask_name>):
22208         Add TARGET_AVX10_1.
22209         (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
22210         Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check.
22211         (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
22212         Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check.
22213         (float<floatunssuffix>v4div4sf2<mask_name>):
22214         Add TARGET_AVX10_1.
22215         (avx512dq_float<floatunssuffix>v2div2sf2): Ditto.
22216         (*avx512dq_float<floatunssuffix>v2div2sf2): Ditto.
22217         (float<floatunssuffix>v2div2sf2): Ditto.
22218         (float<floatunssuffix>v2div2sf2_mask): Ditto.
22219         (*float<floatunssuffix>v2div2sf2_mask): Ditto.
22220         (*float<floatunssuffix>v2div2sf2_mask_1): Ditto.
22221         (<avx512>_cvt<ssemodesuffix>2mask<mode>):
22222         Change iterator to VI48_AVX512VLDQ_AVX10_1. Remove target check.
22223         (<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto.
22224         (*<avx512>_cvtmask2<ssemodesuffix><mode>):
22225         Change iterator to VI48_AVX512VL_AVX10_1. Remove target check.
22226         Change when constraint is enabled.
22228 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
22230         Revert:
22231         2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
22233         * config/i386/avx512vldqintrin.h: Remove target attribute.
22234         * config/i386/i386-builtin.def (BDESC):
22235         Add OPTION_MASK_ISA2_AVX10_1.
22236         * config/i386/sse.md (VF_AVX512VLDQ_AVX10_1): New.
22237         (VFH_AVX512VLDQ_AVX10_1): Ditto.
22238         (VF1_AVX512VLDQ_AVX10_1): Ditto.
22239         (<mask_codefor>reducep<mode><mask_name><round_saeonly_name>):
22240         Change iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check.
22241         (vec_pack<floatprefix>_float_<mode>): Change iterator to
22242         VI8_AVX512VLDQ_AVX10_1. Remove target check.
22243         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Change iterator to
22244         VF1_AVX512VLDQ_AVX10_1. Remove target check.
22245         (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
22246         (VI48F_256_DQVL_AVX10_1): Rename from VI48F_256_DQ.
22247         (avx512vl_vextractf128<mode>): Change iterator to
22248         VI48F_256_DQVL_AVX10_1. Remove target check.
22249         (vec_extract_hi_<mode>_mask): Add TARGET_AVX10_1.
22250         (vec_extract_hi_<mode>): Ditto.
22251         (avx512vl_vinsert<mode>): Ditto.
22252         (vec_set_lo_<mode><mask_name>): Ditto.
22253         (vec_set_hi_<mode><mask_name>): Ditto.
22254         (avx512dq_rangep<mode><mask_name><round_saeonly_name>): Change
22255         iterator to VF_AVX512VLDQ_AVX10_1. Remove target check.
22256         (avx512dq_fpclass<mode><mask_scalar_merge_name>): Change
22257         iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check.
22258         * config/i386/subst.md (mask_avx512dq_condition): Add
22259         TARGET_AVX10_1.
22260         (mask_scalar_merge): Ditto.
22262 2023-08-24  Haochen Jiang  <haochen.jiang@intel.com>
22264         Revert:
22265         2023-08-18  Haochen Jiang  <haochen.jiang@intel.com>
22267         PR target/111051
22268         * config/i386/avx512vldqintrin.h: Push AVX2 when AVX2 is
22269         disabled.
22271 2023-08-24  Richard Biener  <rguenther@suse.de>
22273         PR debug/111080
22274         * dwarf2out.cc (prune_unused_types_walk): Handle
22275         DW_TAG_restrict_type, DW_TAG_shared_type, DW_TAG_atomic_type,
22276         DW_TAG_immutable_type, DW_TAG_coarray_type, DW_TAG_unspecified_type
22277         and DW_TAG_dynamic_type as to only output them when referenced.
22279 2023-08-24  liuhongt  <hongtao.liu@intel.com>
22281         * config/i386/i386.cc (ix86_invalid_conversion): Adjust GCC
22282         V13 to GCC 13.1.
22284 2023-08-24  liuhongt  <hongtao.liu@intel.com>
22286         * common/config/i386/i386-common.cc (processor_names): Add new
22287         member graniterapids-s and arrowlake-s.
22288         * config/i386/i386-options.cc (processor_alias_table): Update
22289         table with PROCESSOR_ARROWLAKE_S and
22290         PROCESSOR_GRANITERAPIDS_D.
22291         (m_GRANITERAPID_D): New macro.
22292         (m_ARROWLAKE_S): Ditto.
22293         (m_CORE_AVX512): Add m_GRANITERAPIDS_D.
22294         (processor_cost_table): Add icelake_cost for
22295         PROCESSOR_GRANITERAPIDS_D and alderlake_cost for
22296         PROCESSOR_ARROWLAKE_S.
22297         * config/i386/x86-tune.def: Hanlde m_ARROWLAKE_S same as
22298         m_ARROWLAKE.
22299         * config/i386/i386.h (enum processor_type): Add new member
22300         PROCESSOR_GRANITERAPIDS_D and PROCESSOR_ARROWLAKE_S.
22301         * config/i386/i386-c.cc (ix86_target_macros_internal): Handle
22302         PROCESSOR_GRANITERAPIDS_D and PROCESSOR_ARROWLAKE_S
22304 2023-08-23  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
22306         * lra-eliminations.cc (eliminate_regs_in_insn): Use equivalences to
22307         to help simplify code further.
22309 2023-08-23  Andrew MacLeod  <amacleod@redhat.com>
22311         * gimple-range-fold.cc (fold_using_range::range_of_phi): Tweak output.
22312         * gimple-range-phi.cc (phi_group::phi_group): Remove unused members.
22313         Initialize using a range instead of value and edge.
22314         (phi_group::calculate_using_modifier): Use initializer value and
22315         process for relations after trying for iteration convergence.
22316         (phi_group::refine_using_relation): Use initializer range.
22317         (phi_group::dump): Rework the dump output.
22318         (phi_analyzer::process_phi): Allow multiple constant initilizers.
22319         Dump groups immediately as created.
22320         (phi_analyzer::dump): Tweak output.
22321         * gimple-range-phi.h (phi_group::phi_group): Adjust prototype.
22322         (phi_group::initial_value): Delete.
22323         (phi_group::refine_using_relation): Adjust prototype.
22324         (phi_group::m_initial_value): Delete.
22325         (phi_group::m_initial_edge): Delete.
22326         (phi_group::m_vr): Use int_range_max.
22327         * tree-vrp.cc (execute_ranger_vrp): Don't dump phi groups.
22329 2023-08-23  Andrew MacLeod  <amacleod@redhat.com>
22331         * gimple-range-phi.cc (phi_analyzer::operator[]): Return NULL if
22332         no group was created.
22333         (phi_analyzer::process_phi): Do not create groups of one phi node.
22335 2023-08-23  Richard Earnshaw  <rearnsha@arm.com>
22337         * target.def (gen_ccmp_first, gen_ccmp_next): Use rtx_code for
22338         CODE, CMP_CODE and BIT_CODE arguments.
22339         * config/aarch64/aarch64.cc (aarch64_gen_ccmp_first): Likewise.
22340         (aarch64_gen_ccmp_next): Likewise.
22341         * doc/tm.texi: Regenerated.
22343 2023-08-23  Richard Earnshaw  <rearnsha@arm.com>
22345         * coretypes.h (rtx_code): Add forward declaration.
22346         * rtl.h (rtx_code): Make compatible with forward declaration.
22348 2023-08-23  Uros Bizjak  <ubizjak@gmail.com>
22350         PR target/111010
22351         * config/i386/i386.md (*concat<any_or_plus:mode><dwi>3_3):
22352         Merge pattern from *concatditi3_3 and *concatsidi3_3 using
22353         DWIH mode iterator.  Disable (=&r,m,m) alternative for
22354         32-bit targets.
22355         (*concat<any_or_plus:mode><dwi>3_3): Disable (=&r,m,m)
22356         alternative for 32-bit targets.
22358 2023-08-23  Zhangjin Liao  <liaozhangjin@eswincomputing.com>
22360         * config/riscv/bitmanip.md (*<bitmanip_optab>disi2_sext): Add a more
22361         appropriate type attribute.
22363 2023-08-23  Lehua Ding  <lehua.ding@rivai.ai>
22365         * config/riscv/autovec-opt.md (*cond_abs<mode>): New combine pattern.
22366         (*copysign<mode>_neg): Ditto.
22367         * config/riscv/autovec.md (@vcond_mask_<mode><vm>): Adjust.
22368         (<optab><mode>2): Ditto.
22369         (cond_<optab><mode>): New.
22370         (cond_len_<optab><mode>): Ditto.
22371         * config/riscv/riscv-protos.h (enum insn_type): New.
22372         (expand_cond_len_unop): New helper func.
22373         * config/riscv/riscv-v.cc (shuffle_merge_patterns): Adjust.
22374         (expand_cond_len_unop): New helper func.
22376 2023-08-23  Jan Hubicka  <jh@suse.cz>
22378         * tree-ssa-loop-ch.cc (enum ch_decision): Fix comment.
22379         (should_duplicate_loop_header_p): Fix return value for static exits.
22380         (ch_base::copy_headers): Improve handling of ch_possible_zero_cost.
22382 2023-08-23  Kewen Lin  <linkw@linux.ibm.com>
22384         * tree-vect-stmts.cc (vectorizable_store): Move the handlings on
22385         VMAT_GATHER_SCATTER in the final loop nest to its own loop,
22386         and update the final nest accordingly.
22388 2023-08-23  Kewen Lin  <linkw@linux.ibm.com>
22390         * tree-vect-stmts.cc (vectorizable_store): Move the handlings on
22391         VMAT_LOAD_STORE_LANES in the final loop nest to its own loop,
22392         and update the final nest accordingly.
22394 2023-08-23  Kewen Lin  <linkw@linux.ibm.com>
22396         * tree-vect-stmts.cc (vectorizable_store): Remove vec oprnds,
22397         adjust vec result_chain, vec_oprnd with auto_vec, and adjust
22398         gvec_oprnds with auto_delete_vec.
22400 2023-08-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22402         * config/riscv/riscv-vsetvl.cc
22403         (pass_vsetvl::global_eliminate_vsetvl_insn): Fix potential ICE.
22405 2023-08-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22407         * config/riscv/riscv-vsetvl.cc (ge_sew_ratio_unavailable_p):
22408         Fix fuse rule bug.
22409         * config/riscv/riscv-vsetvl.def (DEF_SEW_LMUL_FUSE_RULE): Ditto.
22411 2023-08-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22413         * config/riscv/vector.md: Add attribute.
22415 2023-08-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22417         * config/riscv/riscv-vsetvl.cc (change_insn): Clang format.
22418         (vector_infos_manager::all_same_ratio_p): Ditto.
22419         (vector_infos_manager::all_same_avl_p): Ditto.
22420         (pass_vsetvl::refine_vsetvls): Ditto.
22421         (pass_vsetvl::cleanup_vsetvls): Ditto.
22422         (pass_vsetvl::commit_vsetvls): Ditto.
22423         (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
22424         (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
22425         (pass_vsetvl::compute_probabilities): Ditto.
22427 2023-08-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22429         * config/riscv/t-riscv: Add riscv-vsetvl.def
22431 2023-08-22  Vineet Gupta  <vineetg@rivosinc.com>
22433         * config/riscv/riscv.opt: Add --param names
22434         riscv-autovec-preference and riscv-autovec-lmul
22436 2023-08-22  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
22438         * config/riscv/t-linux: Add MULTIARCH_DIRNAME.
22440 2023-08-22  Tobias Burnus  <tobias@codesourcery.com>
22442         * tree-core.h (enum omp_clause_defaultmap_kind): Add
22443         OMP_CLAUSE_DEFAULTMAP_CATEGORY_ALL.
22444         * gimplify.cc (gimplify_scan_omp_clauses): Handle it.
22445         * tree-pretty-print.cc (dump_omp_clause): Likewise.
22447 2023-08-22  Jakub Jelinek  <jakub@redhat.com>
22449         PR c++/106652
22450         * doc/extend.texi (_Float<n>): Drop obsolete sentence that the
22451         types aren't supported in C++.
22453 2023-08-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22455         * doc/md.texi: Add LEN_FOLD_EXTRACT_LAST pattern.
22456         * internal-fn.cc (fold_len_extract_direct): Ditto.
22457         (expand_fold_len_extract_optab_fn): Ditto.
22458         (direct_fold_len_extract_optab_supported_p): Ditto.
22459         * internal-fn.def (LEN_FOLD_EXTRACT_LAST): Ditto.
22460         * optabs.def (OPTAB_D): Ditto.
22462 2023-08-22  Richard Biener  <rguenther@suse.de>
22464         * tree-vect-stmts.cc (vectorizable_store): Do not bump
22465         DR_GROUP_STORE_COUNT here.  Remove early out.
22466         (vect_transform_stmt): Only call vectorizable_store on
22467         the last element of an interleaving chain.
22469 2023-08-22  Richard Biener  <rguenther@suse.de>
22471         PR tree-optimization/94864
22472         PR tree-optimization/94865
22473         PR tree-optimization/93080
22474         * match.pd (bit_insert @0 (BIT_FIELD_REF @1 ..) ..): New pattern
22475         for vector insertion from vector extraction.
22477 2023-08-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22478             Kewen.Lin  <linkw@linux.ibm.com>
22480         * tree-vect-loop.cc (vect_verify_loop_lens): Add exists check.
22481         (vectorizable_live_operation): Add live vectorization for length loop
22482         control.
22484 2023-08-22  David Malcolm  <dmalcolm@redhat.com>
22486         PR analyzer/105899
22487         * doc/invoke.texi: Remove -Wanalyzer-unterminated-string.
22489 2023-08-22  Pan Li  <pan2.li@intel.com>
22491         * config/riscv/riscv-vector-builtins-bases.cc
22492         (vfwredusum_frm_obj): New declaration.
22493         (BASE): Ditto.
22494         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22495         * config/riscv/riscv-vector-builtins-functions.def
22496         (vfwredusum_frm): New intrinsic function def.
22498 2023-08-21  David Faust  <david.faust@oracle.com>
22500         * config/bpf/bpf.md (neg): Second operand must be a register.
22502 2023-08-21  Edwin Lu  <ewlu@rivosinc.com>
22504         * config/riscv/bitmanip.md: Added bitmanip type to insns
22505         that are missing types.
22507 2023-08-21  Jeff Law  <jlaw@ventanamicro.com>
22509         * config/riscv/sync-ztso.md (atomic_load_ztso<mode>): Avoid extraenous
22510         newline.
22512 2023-08-21  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
22514         * config/aarch64/falkor-tag-collision-avoidance.cc (dump_insn_list):
22515         Fix format specifier.
22517 2023-08-21  Aldy Hernandez  <aldyh@redhat.com>
22519         * value-range.cc (frange::union_nans): Return false if nothing
22520         changed.
22521         (range_tests_floats): New test.
22523 2023-08-21  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
22525         PR tree-optimization/111048
22526         * fold-const.cc (valid_mask_for_fold_vec_perm_cst_p): Set arg_npatterns
22527         correctly.
22528         (fold_vec_perm_cst): Remove workaround and again call
22529         valid_mask_fold_vec_perm_cst_p for both VLS and VLA vectors.
22530         (test_fold_vec_perm_cst::test_nunits_min_4): Add test-case.
22532 2023-08-21  Richard Biener  <rguenther@suse.de>
22534         PR tree-optimization/111082
22535         * tree-vect-slp.cc (vectorize_slp_instance_root_stmt): Only
22536         pun operations that can overflow.
22538 2023-08-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22540         * lcm.cc (compute_antinout_edge): Export as global use.
22541         (compute_earliest): Ditto.
22542         (compute_rev_insert_delete): Ditto.
22543         * lcm.h (compute_antinout_edge): Ditto.
22544         (compute_earliest): Ditto.
22546 2023-08-21  Richard Biener  <rguenther@suse.de>
22548         PR tree-optimization/111070
22549         * tree-ssa-ifcombine.cc (ifcombine_ifandif): Check we have
22550         an SSA name before checking SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
22552 2023-08-21  Andrew Pinski  <apinski@marvell.com>
22554         PR tree-optimization/111002
22555         * match.pd (view_convert(vec_cond(a,b,c))): New pattern.
22557 2023-08-21  liuhongt  <hongtao.liu@intel.com>
22559         * common/config/i386/cpuinfo.h (get_intel_cpu): Detect
22560         Alderlake-N.
22561         * common/config/i386/i386-common.cc (alias_table): Support
22562         -march=gracemont as an alias of -march=alderlake.
22564 2023-08-20  Uros Bizjak  <ubizjak@gmail.com>
22566         * config/i386/i386-expand.cc (ix86_expand_sse_extend): Use ops[1]
22567         instead of src in the call to ix86_expand_sse_cmp.
22568         * config/i386/sse.md (<any_extend:insn>v8qiv8hi2): Do not
22569         force operands[1] to a register.
22570         (<any_extend:insn>v4hiv4si2): Ditto.
22571         (<any_extend:insn>v2siv2di2): Ditto.
22573 2023-08-20  Andrew Pinski  <apinski@marvell.com>
22575         PR tree-optimization/111006
22576         PR tree-optimization/110986
22577         * match.pd: (op(vec_cond(a,b,c))): Handle convert for op.
22579 2023-08-20  Eric Gallager  <egallager@gcc.gnu.org>
22581         PR target/90835
22582         * Makefile.in: improve error message when /usr/include is
22583         missing
22585 2023-08-19  Tobias Burnus  <tobias@codesourcery.com>
22587         PR middle-end/111017
22588         * omp-expand.cc (expand_omp_for_init_vars): Pass after=true
22589         to expand_omp_build_cond for 'factor != 0' condition, resulting
22590         in pre-r12-5295-g47de0b56ee455e code for the gimple insert.
22592 2023-08-19  Guo Jie  <guojie@loongson.cn>
22593             Lulu Cheng  <chenglulu@loongson.cn>
22595         * config/loongarch/t-loongarch: Add loongarch-driver.h into
22596         TM_H. Add loongarch-def.h and loongarch-tune.h into
22597         OPTIONS_H_EXTRA.
22599 2023-08-18  Uros Bizjak  <ubizjak@gmail.com>
22601         PR target/111023
22602         * config/i386/i386-expand.cc (ix86_split_mmx_punpck):
22603         Also handle V2QImode.
22604         (ix86_expand_sse_extend): New function.
22605         * config/i386/i386-protos.h (ix86_expand_sse_extend): New prototype.
22606         * config/i386/mmx.md (<any_extend:insn>v4qiv4hi2): Enable for
22607         TARGET_SSE2.  Expand through ix86_expand_sse_extend for !TARGET_SSE4_1.
22608         (<any_extend:insn>v2hiv2si2): Ditto.
22609         (<any_extend:insn>v2qiv2hi2): Ditto.
22610         * config/i386/sse.md (<any_extend:insn>v8qiv8hi2): Ditto.
22611         (<any_extend:insn>v4hiv4si2): Ditto.
22612         (<any_extend:insn>v2siv2di2): Ditto.
22614 2023-08-18  Aldy Hernandez  <aldyh@redhat.com>
22616         PR ipa/110753
22617         * value-range.cc (irange::union_bitmask): Return FALSE if updated
22618         bitmask is semantically equivalent to the original mask.
22619         (irange::intersect_bitmask): Same.
22620         (irange::get_bitmask): Add comment.
22622 2023-08-18  Richard Biener  <rguenther@suse.de>
22624         PR tree-optimization/111019
22625         * tree-ssa-loop-im.cc (gather_mem_refs_stmt): When canonicalizing
22626         also scrap base and offset in case the ref is indirect.
22628 2023-08-18  Jose E. Marchesi  <jose.marchesi@oracle.com>
22630         * config/bpf/bpf.opt (mframe-limit): Set default to 32767.
22632 2023-08-18  Kewen Lin  <linkw@linux.ibm.com>
22634         PR bootstrap/111021
22635         * Makefile.in (TM_P_H): Add $(TREE_H) as dependence.
22637 2023-08-18  Kewen Lin  <linkw@linux.ibm.com>
22639         * tree-vect-stmts.cc (vect_build_scatter_store_calls): New, factor
22640         out from ...
22641         (vectorizable_store): ... here.
22643 2023-08-18  Richard Biener  <rguenther@suse.de>
22645         PR tree-optimization/111048
22646         * fold-const.cc (fold_vec_perm_cst): Check for non-VLA
22647         vectors first.
22649 2023-08-18  Haochen Jiang  <haochen.jiang@intel.com>
22651         PR target/111051
22652         * config/i386/avx512vldqintrin.h: Push AVX2 when AVX2 is
22653         disabled.
22655 2023-08-18  Kewen Lin  <linkw@linux.ibm.com>
22657         * tree-vect-stmts.cc (vectorizable_load): Move the handlings on
22658         VMAT_GATHER_SCATTER in the final loop nest to its own loop,
22659         and update the final nest accordingly.
22661 2023-08-18  Andrew Pinski  <apinski@marvell.com>
22663         * doc/md.texi (Standard patterns): Document cond_neg, cond_one_cmpl,
22664         cond_len_neg and cond_len_one_cmpl.
22666 2023-08-18  Lehua Ding  <lehua.ding@rivai.ai>
22668         * config/riscv/iterators.md (TARGET_HARD_FLOAT || TARGET_ZFINX): New.
22669         * config/riscv/pic.md (*local_pic_load<ANYF:mode>): Change ANYF.
22670         (*local_pic_load<ANYLSF:mode>): To ANYLSF.
22671         (*local_pic_load_32d<ANYF:mode>): Ditto.
22672         (*local_pic_load_32d<ANYLSF:mode>): Ditto.
22673         (*local_pic_store<ANYF:mode>): Ditto.
22674         (*local_pic_store<ANYLSF:mode>): Ditto.
22675         (*local_pic_store_32d<ANYF:mode>): Ditto.
22676         (*local_pic_store_32d<ANYLSF:mode>): Ditto.
22678 2023-08-18  Lehua Ding  <lehua.ding@rivai.ai>
22679             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22681         * config/riscv/predicates.md (vector_const_0_operand): New.
22682         * config/riscv/vector.md (*pred_broadcast<mode>_zero): Ditto.
22684 2023-08-18  Lehua Ding  <lehua.ding@rivai.ai>
22686         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion):
22687         Forbidden.
22689 2023-08-17  Andrew MacLeod  <amacleod@redhat.com>
22691         PR tree-optimization/111009
22692         * range-op.cc (operator_addr_expr::op1_range): Be more restrictive.
22694 2023-08-17  Vladimir N. Makarov  <vmakarov@redhat.com>
22696         * lra-spills.cc (assign_stack_slot_num_and_sort_pseudos): Moving
22697         slots_num initialization from here ...
22698         (lra_spill): ... to here before the 1st call of
22699         assign_stack_slot_num_and_sort_pseudos.  Add the 2nd call after
22700         fp->sp elimination.
22702 2023-08-17  Jose E. Marchesi  <jose.marchesi@oracle.com>
22704         PR c/106537
22705         * doc/invoke.texi (Option Summary): Mention
22706         -Wcompare-distinct-pointer-types under `Warning Options'.
22707         (Warning Options): Document -Wcompare-distinct-pointer-types.
22709 2023-08-17  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
22711         * recog.cc (memory_address_addr_space_p): Mark possibly unused
22712         argument as unused.
22714 2023-08-17  Richard Biener  <rguenther@suse.de>
22716         PR tree-optimization/111039
22717         * tree-ssa-ifcombine.cc (ifcombine_ifandif): Check for
22718         SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
22720 2023-08-17  Alex Coplan  <alex.coplan@arm.com>
22722         * doc/rtl.texi: Fix up sample code for RTL-SSA insn changes.
22724 2023-08-17  Jose E. Marchesi  <jose.marchesi@oracle.com>
22726         PR target/111046
22727         * config/bpf/bpf.cc (bpf_attribute_table): Add entry for the
22728         `naked' function attribute.
22729         (bpf_warn_func_return): New function.
22730         (TARGET_WARN_FUNC_RETURN): Define.
22731         (bpf_expand_prologue): Add preventive comment.
22732         (bpf_expand_epilogue): Likewise.
22733         * doc/extend.texi (BPF Function Attributes): Document the `naked'
22734         function attribute.
22736 2023-08-17  Richard Biener  <rguenther@suse.de>
22738         * tree-vect-slp.cc (vect_slp_check_for_roots): Use
22739         !needs_fold_left_reduction_p to decide whether we can
22740         handle the reduction with association.
22741         (vectorize_slp_instance_root_stmt): For TYPE_OVERFLOW_UNDEFINED
22742         reductions perform all arithmetic in an unsigned type.
22744 2023-08-17  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
22746         * configure.ac (gcc_cv_ld64_version): Allow for dyld in ld -v
22747         output.
22748         * configure: Regenerate.
22750 2023-08-17  Pan Li  <pan2.li@intel.com>
22752         * config/riscv/riscv-vector-builtins-bases.cc
22753         (widen_freducop): Add frm_opt_type template arg.
22754         (vfwredosum_frm_obj): New declaration.
22755         (BASE): Ditto.
22756         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22757         * config/riscv/riscv-vector-builtins-functions.def
22758         (vfwredosum_frm): New intrinsic function def.
22760 2023-08-17  Pan Li  <pan2.li@intel.com>
22762         * config/riscv/riscv-vector-builtins-bases.cc
22763         (vfredosum_frm_obj): New declaration.
22764         (BASE): Ditto.
22765         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22766         * config/riscv/riscv-vector-builtins-functions.def
22767         (vfredosum_frm): New intrinsic function def.
22769 2023-08-17  Pan Li  <pan2.li@intel.com>
22771         * config/riscv/riscv-vector-builtins-bases.cc
22772         (class freducop): Add frm_op_type template arg.
22773         (vfredusum_frm_obj): New declaration.
22774         (BASE): Ditto.
22775         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22776         * config/riscv/riscv-vector-builtins-functions.def
22777         (vfredusum_frm): New intrinsic function def.
22778         * config/riscv/riscv-vector-builtins-shapes.cc
22779         (struct reduc_alu_frm_def): New class for frm shape.
22780         (SHAPE): New declaration.
22781         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
22783 2023-08-17  Pan Li  <pan2.li@intel.com>
22785         * config/riscv/riscv-vector-builtins-bases.cc
22786         (class vfncvt_f): Add frm_op_type template arg.
22787         (vfncvt_f_frm_obj): New declaration.
22788         (BASE): Ditto.
22789         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22790         * config/riscv/riscv-vector-builtins-functions.def
22791         (vfncvt_f_frm): New intrinsic function def.
22793 2023-08-17  Pan Li  <pan2.li@intel.com>
22795         * config/riscv/riscv-vector-builtins-bases.cc
22796         (vfncvt_xu_frm_obj): New declaration.
22797         (BASE): Ditto.
22798         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22799         * config/riscv/riscv-vector-builtins-functions.def
22800         (vfncvt_xu_frm): New intrinsic function def.
22802 2023-08-17  Pan Li  <pan2.li@intel.com>
22804         * config/riscv/riscv-vector-builtins-bases.cc
22805         (class vfncvt_x): Add frm_op_type template arg.
22806         (BASE): New declaration.
22807         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22808         * config/riscv/riscv-vector-builtins-functions.def
22809         (vfncvt_x_frm): New intrinsic function def.
22810         * config/riscv/riscv-vector-builtins-shapes.cc
22811         (struct narrow_alu_frm_def): New shape function for frm.
22812         (SHAPE): New declaration.
22813         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
22815 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
22817         * config/i386/avx512vldqintrin.h: Remove target attribute.
22818         * config/i386/i386-builtin.def (BDESC):
22819         Add OPTION_MASK_ISA2_AVX10_1.
22820         * config/i386/sse.md (VF_AVX512VLDQ_AVX10_1): New.
22821         (VFH_AVX512VLDQ_AVX10_1): Ditto.
22822         (VF1_AVX512VLDQ_AVX10_1): Ditto.
22823         (<mask_codefor>reducep<mode><mask_name><round_saeonly_name>):
22824         Change iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check.
22825         (vec_pack<floatprefix>_float_<mode>): Change iterator to
22826         VI8_AVX512VLDQ_AVX10_1. Remove target check.
22827         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Change iterator to
22828         VF1_AVX512VLDQ_AVX10_1. Remove target check.
22829         (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
22830         (VI48F_256_DQVL_AVX10_1): Rename from VI48F_256_DQ.
22831         (avx512vl_vextractf128<mode>): Change iterator to
22832         VI48F_256_DQVL_AVX10_1. Remove target check.
22833         (vec_extract_hi_<mode>_mask): Add TARGET_AVX10_1.
22834         (vec_extract_hi_<mode>): Ditto.
22835         (avx512vl_vinsert<mode>): Ditto.
22836         (vec_set_lo_<mode><mask_name>): Ditto.
22837         (vec_set_hi_<mode><mask_name>): Ditto.
22838         (avx512dq_rangep<mode><mask_name><round_saeonly_name>): Change
22839         iterator to VF_AVX512VLDQ_AVX10_1. Remove target check.
22840         (avx512dq_fpclass<mode><mask_scalar_merge_name>): Change
22841         iterator to VFH_AVX512VLDQ_AVX10_1. Remove target check.
22842         * config/i386/subst.md (mask_avx512dq_condition): Add
22843         TARGET_AVX10_1.
22844         (mask_scalar_merge): Ditto.
22846 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
22848         * config/i386/avx512vldqintrin.h: Remove target attribute.
22849         * config/i386/i386-builtin.def (BDESC):
22850         Add OPTION_MASK_ISA2_AVX10_1.
22851         * config/i386/i386.cc (standard_sse_constant_opcode): Add TARGET_AVX10_1.
22852         * config/i386/sse.md: (VI48_AVX512VL_AVX10_1): New.
22853         (VI48_AVX512VLDQ_AVX10_1): Ditto.
22854         (VF2_AVX512VL): Remove.
22855         (VI8_256_512VLDQ_AVX10_1): Rename from VI8_256_512.
22856         Add TARGET_AVX10_1.
22857         (*<code><mode>3<mask_name>): Change isa attribute to
22858         avx10_1_or_avx512dq. Add TARGET_AVX10_1.
22859         (<code><mode>3): Add TARGET_AVX10_1. Change isa attr
22860         to avx10_1_or_avx512vl.
22861         (<mask_codefor>avx512dq_cvtps2qq<mode><mask_name><round_name>):
22862         Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check.
22863         (<mask_codefor>avx512dq_cvtps2qqv2di<mask_name>):
22864         Add TARGET_AVX10_1.
22865         (<mask_codefor>avx512dq_cvtps2uqq<mode><mask_name><round_name>):
22866         Change iterator to VI8_256_512VLDQ_AVX10_1. Remove target check.
22867         (<mask_codefor>avx512dq_cvtps2uqqv2di<mask_name>):
22868         Add TARGET_AVX10_1.
22869         (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
22870         Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check.
22871         (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
22872         Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check.
22873         (float<floatunssuffix>v4div4sf2<mask_name>):
22874         Add TARGET_AVX10_1.
22875         (avx512dq_float<floatunssuffix>v2div2sf2): Ditto.
22876         (*avx512dq_float<floatunssuffix>v2div2sf2): Ditto.
22877         (float<floatunssuffix>v2div2sf2): Ditto.
22878         (float<floatunssuffix>v2div2sf2_mask): Ditto.
22879         (*float<floatunssuffix>v2div2sf2_mask): Ditto.
22880         (*float<floatunssuffix>v2div2sf2_mask_1): Ditto.
22881         (<avx512>_cvt<ssemodesuffix>2mask<mode>):
22882         Change iterator to VI48_AVX512VLDQ_AVX10_1. Remove target check.
22883         (<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto.
22884         (*<avx512>_cvtmask2<ssemodesuffix><mode>):
22885         Change iterator to VI48_AVX512VL_AVX10_1. Remove target check.
22886         Change when constraint is enabled.
22888 2023-08-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
22890         PR target/111037
22891         * config/riscv/riscv-vsetvl.cc (float_insn_valid_sew_p): New function.
22892         (second_sew_less_than_first_sew_p): Fix bug.
22893         (first_sew_less_than_second_sew_p): Ditto.
22895 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
22897         * config/i386/avx512vldqintrin.h: Remove target attribute.
22898         * config/i386/i386-builtin.def (BDESC):
22899         Add OPTION_MASK_ISA2_AVX10_1.
22900         * config/i386/i386-builtins.cc (def_builtin): Handle AVX10_1.
22901         * config/i386/i386-expand.cc
22902         (ix86_check_builtin_isa_match): Ditto.
22903         (ix86_expand_sse2_mulvxdi3): Add TARGET_AVX10_1.
22904         * config/i386/i386.md: Add new isa attribute avx10_1_or_avx512dq
22905         and avx10_1_or_avx512vl.
22906         * config/i386/sse.md: (VF2_AVX512VLDQ_AVX10_1): New.
22907         (VF1_128_256VLDQ_AVX10_1): Ditto.
22908         (VI8_AVX512VLDQ_AVX10_1): Ditto.
22909         (<sse>_andnot<mode>3<mask_name>):
22910         Add TARGET_AVX10_1 and change isa attr from avx512dq to
22911         avx10_1_or_avx512dq.
22912         (*andnot<mode>3): Add TARGET_AVX10_1 and change isa attr from
22913         avx512vl to avx10_1_or_avx512vl.
22914         (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
22915         Change iterator to VF2_AVX512VLDQ_AVX10_1. Remove target check.
22916         (fix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
22917         Ditto.
22918         (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
22919         Ditto.
22920         (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
22921         Change iterator to VF1_128_256VLDQ_AVX10_1. Remove target check.
22922         (avx512dq_fix<fixunssuffix>_truncv2sfv2di2<mask_name>):
22923         Add TARGET_AVX10_1.
22924         (fix<fixunssuffix>_truncv2sfv2di2): Ditto.
22925         (cond_mul<mode>): Change iterator to VI8_AVX10_1_AVX512DQVL.
22926         Remove target check.
22927         (avx512dq_mul<mode>3<mask_name>): Ditto.
22928         (*avx512dq_mul<mode>3<mask_name>): Ditto.
22929         (VI4F_BRCST32x2): Add TARGET_AVX512DQ and TARGET_AVX10_1.
22930         (<mask_codefor>avx512dq_broadcast<mode><mask_name>):
22931         Remove target check.
22932         (VI8F_BRCST64x2): Add TARGET_AVX512DQ and TARGET_AVX10_1.
22933         (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1):
22934         Remove target check.
22935         * config/i386/subst.md (mask_mode512bit_condition): Add TARGET_AVX10_1.
22936         (mask_avx512vl_condition): Ditto.
22937         (mask): Ditto.
22939 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
22941         * common/config/i386/i386-common.cc
22942         (ix86_check_avx10_vector_width): New function to check isa_flags
22943         to emit a warning when there is a conflict in AVX10 options for
22944         vector width.
22945         (ix86_handle_option): Add check for avx10.1-256 and avx10.1-512.
22946         * config/i386/driver-i386.cc (host_detect_local_cpu):
22947         Do not append -mno-avx10-max-512bit for -march=native.
22949 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
22951         * common/config/i386/i386-common.cc
22952         (ix86_check_avx10): New function to check isa_flags and
22953         isa_flags_explicit to emit warning when AVX10 is enabled
22954         by "-m" option.
22955         (ix86_check_avx512):  New function to check isa_flags and
22956         isa_flags_explicit to emit warning when AVX512 is enabled
22957         by "-m" option.
22958         (ix86_handle_option): Do not change the flags when warning
22959         is emitted.
22960         * config/i386/driver-i386.cc (host_detect_local_cpu):
22961         Do not append -mno-avx10.1 for -march=native.
22963 2023-08-17  Haochen Jiang  <haochen.jiang@intel.com>
22965         * common/config/i386/cpuinfo.h (get_available_features):
22966         Add avx10_set and version and detect avx10.1.
22967         (cpu_indicator_init): Handle avx10.1-512.
22968         * common/config/i386/i386-common.cc
22969         (OPTION_MASK_ISA2_AVX10_512BIT_SET): New.
22970         (OPTION_MASK_ISA2_AVX10_1_SET): Ditto.
22971         (OPTION_MASK_ISA2_AVX10_512BIT_UNSET): Ditto.
22972         (OPTION_MASK_ISA2_AVX10_1_UNSET): Ditto.
22973         (OPTION_MASK_ISA2_AVX2_UNSET): Modify for AVX10_1.
22974         (ix86_handle_option): Handle -mavx10.1, -mavx10.1-256 and
22975         -mavx10.1-512.
22976         * common/config/i386/i386-cpuinfo.h (enum processor_features):
22977         Add FEATURE_AVX10_512BIT, FEATURE_AVX10_1 and
22978         FEATURE_AVX10_512BIT.
22979         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
22980         AVX10_512BIT, AVX10_1 and AVX10_1_512.
22981         * config/i386/constraints.md (Yk): Add AVX10_1.
22982         (Yv): Ditto.
22983         (k): Ditto.
22984         * config/i386/cpuid.h (bit_AVX10): New.
22985         (bit_AVX10_256): Ditto.
22986         (bit_AVX10_512): Ditto.
22987         * config/i386/i386-c.cc (ix86_target_macros_internal):
22988         Define AVX10_512BIT and AVX10_1.
22989         * config/i386/i386-isa.def
22990         (AVX10_512BIT): Add DEF_PTA(AVX10_512BIT).
22991         (AVX10_1): Add DEF_PTA(AVX10_1).
22992         * config/i386/i386-options.cc (isa2_opts): Add -mavx10.1.
22993         (ix86_valid_target_attribute_inner_p): Handle avx10-512bit, avx10.1
22994         and avx10.1-512.
22995         (ix86_option_override_internal): Enable AVX512{F,VL,BW,DQ,CD,BF16,
22996         FP16,VBMI,VBMI2,VNNI,IFMA,BITALG,VPOPCNTDQ} features for avx10.1-512.
22997         (ix86_valid_target_attribute_inner_p): Handle AVX10_1.
22998         * config/i386/i386.cc (ix86_get_ssemov): Add AVX10_1.
22999         (ix86_conditional_register_usage): Ditto.
23000         (ix86_hard_regno_mode_ok): Ditto.
23001         (ix86_rtx_costs): Ditto.
23002         * config/i386/i386.h (VALID_MASK_AVX10_MODE): New macro.
23003         * config/i386/i386.opt: Add option -mavx10.1, -mavx10.1-256 and
23004         -mavx10.1-512.
23005         * doc/extend.texi: Document avx10.1, avx10.1-256 and avx10.1-512.
23006         * doc/invoke.texi: Document -mavx10.1, -mavx10.1-256 and -mavx10.1-512.
23007         * doc/sourcebuild.texi: Document target avx10.1, avx10.1-256
23008         and avx10.1-512.
23010 2023-08-17  Sergei Trofimovich  <siarheit@google.com>
23012         * flag-types.h (vrp_mode): Remove unused.
23014 2023-08-17  Yanzhang Wang  <yanzhang.wang@intel.com>
23016         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1): Use
23017         CONSTM1_RTX.
23019 2023-08-17  Andrew Pinski  <apinski@marvell.com>
23021         * internal-fn.def (COND_NOT): New internal function.
23022         * match.pd (UNCOND_UNARY, COND_UNARY): Add bit_not/not
23023         to the lists.
23024         (`vec (a ? -1 : 0) ^ b`): New pattern to convert
23025         into conditional not.
23026         * optabs.def (cond_one_cmpl): New optab.
23027         (cond_len_one_cmpl): Likewise.
23029 2023-08-16  Surya Kumari Jangala  <jskumari@linux.ibm.com>
23031         PR rtl-optimization/110254
23032         * ira-color.cc (improve_allocation): Update array
23033         allocated_hard_reg_p.
23035 2023-08-16  Vladimir N. Makarov  <vmakarov@redhat.com>
23037         * lra-int.h (lra_update_fp2sp_elimination): Change the prototype.
23038         * lra-eliminations.cc (spill_pseudos): Record spilled pseudos.
23039         (lra_update_fp2sp_elimination): Ditto.
23040         (update_reg_eliminate): Adjust spill_pseudos call.
23041         * lra-spills.cc (lra_spill): Assign stack slots to pseudos spilled
23042         in lra_update_fp2sp_elimination.
23044 2023-08-16  Richard Ball  <richard.ball@arm.com>
23046         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add Cortex-A720 CPU.
23047         * config/aarch64/aarch64-tune.md: Regenerate.
23048         * doc/invoke.texi: Document Cortex-A720 CPU.
23050 2023-08-16  Robin Dapp  <rdapp@ventanamicro.com>
23052         * config/riscv/autovec.md (<u>avg<v_double_trunc>3_floor):
23053         Implement expander.
23054         (<u>avg<v_double_trunc>3_ceil): Ditto.
23055         * config/riscv/vector-iterators.md (ashiftrt): New iterator.
23056         (ASHIFTRT): Ditto.
23058 2023-08-16  Robin Dapp  <rdapp@ventanamicro.com>
23060         * internal-fn.cc (vec_extract_direct): Change type argument
23061         numbers.
23062         (expand_vec_extract_optab_fn): Call convert_optab_fn.
23063         (direct_vec_extract_optab_supported_p): Use
23064         convert_optab_supported_p.
23066 2023-08-16  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
23067             Richard Sandiford  <richard.sandiford@arm.com>
23069         * fold-const.cc (INCLUDE_ALGORITHM): Add Include.
23070         (valid_mask_for_fold_vec_perm_cst_p): New function.
23071         (fold_vec_perm_cst): Likewise.
23072         (fold_vec_perm): Adjust assert and call fold_vec_perm_cst.
23073         (test_fold_vec_perm_cst): New namespace.
23074         (test_fold_vec_perm_cst::build_vec_cst_rand): New function.
23075         (test_fold_vec_perm_cst::validate_res): Likewise.
23076         (test_fold_vec_perm_cst::validate_res_vls): Likewise.
23077         (test_fold_vec_perm_cst::builder_push_elems): Likewise.
23078         (test_fold_vec_perm_cst::test_vnx4si_v4si): Likewise.
23079         (test_fold_vec_perm_cst::test_v4si_vnx4si): Likewise.
23080         (test_fold_vec_perm_cst::test_all_nunits): Likewise.
23081         (test_fold_vec_perm_cst::test_nunits_min_2): Likewise.
23082         (test_fold_vec_perm_cst::test_nunits_min_4): Likewise.
23083         (test_fold_vec_perm_cst::test_nunits_min_8): Likewise.
23084         (test_fold_vec_perm_cst::test_nunits_max_4): Likewise.
23085         (test_fold_vec_perm_cst::is_simple_vla_size): Likewise.
23086         (test_fold_vec_perm_cst::test): Likewise.
23087         (fold_const_cc_tests): Call test_fold_vec_perm_cst::test.
23089 2023-08-16  Pan Li  <pan2.li@intel.com>
23091         * config/riscv/riscv-vector-builtins-bases.cc
23092         (BASE): New declaration.
23093         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23094         * config/riscv/riscv-vector-builtins-functions.def
23095         (vfwcvt_xu_frm): New intrinsic function def.
23097 2023-08-16  Pan Li  <pan2.li@intel.com>
23099         * config/riscv/riscv-vector-builtins-bases.cc: Use explicit argument.
23101 2023-08-16  Pan Li  <pan2.li@intel.com>
23103         * config/riscv/riscv-vector-builtins-bases.cc
23104         (BASE): New declaration.
23105         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23106         * config/riscv/riscv-vector-builtins-functions.def
23107         (vfwcvt_x_frm): New intrinsic function def.
23109 2023-08-16  Pan Li  <pan2.li@intel.com>
23111         * config/riscv/riscv-vector-builtins-bases.cc (BASE): New declaration.
23112         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23113         * config/riscv/riscv-vector-builtins-functions.def
23114         (vfcvt_f_frm): New intrinsic function def.
23116 2023-08-16  Pan Li  <pan2.li@intel.com>
23118         * config/riscv/riscv-vector-builtins-bases.cc
23119         (BASE): New declaration.
23120         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23121         * config/riscv/riscv-vector-builtins-functions.def
23122         (vfcvt_xu_frm): New intrinsic function def..
23124 2023-08-16  Haochen Gui  <guihaoc@gcc.gnu.org>
23126         PR target/110429
23127         * config/rs6000/vsx.md (*vsx_extract_<mode>_store_p9): Skip vector
23128         extract when the element is 7 on BE while 8 on LE for byte or 3 on
23129         BE while 4 on LE for halfword.
23131 2023-08-16  Haochen Gui  <guihaoc@gcc.gnu.org>
23133         PR target/106769
23134         * config/rs6000/vsx.md (expand vsx_extract_<mode>): Set it only
23135         for V8HI and V16QI.
23136         (vsx_extract_v4si): New expand for V4SI extraction.
23137         (vsx_extract_v4si_w1): New insn pattern for V4SI extraction on
23138         word 1 from BE order.
23139         (*mfvsrwz): New insn pattern for mfvsrwz.
23140         (*vsx_extract_<mode>_di_p9): Assert that it won't be generated on
23141         word 1 from BE order.
23142         (*vsx_extract_si): Remove.
23143         (*vsx_extract_v4si_w023): New insn and split pattern on word 0, 2,
23144         3 from BE order.
23146 2023-08-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23148         * config/riscv/autovec.md (vec_mask_len_load_lanes<mode><vsingle>):
23149         New pattern.
23150         (vec_mask_len_store_lanes<mode><vsingle>): Ditto.
23151         * config/riscv/riscv-protos.h (expand_lanes_load_store): New function.
23152         * config/riscv/riscv-v.cc (get_mask_mode): Add tuple mask mode.
23153         (expand_lanes_load_store): New function.
23154         * config/riscv/vector-iterators.md: New iterator.
23156 2023-08-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23158         * internal-fn.cc (internal_load_fn_p): Apply
23159         MASK_LEN_{LOAD_LANES,STORE_LANES} into vectorizer.
23160         (internal_store_fn_p): Ditto.
23161         (internal_fn_len_index): Ditto.
23162         (internal_fn_mask_index): Ditto.
23163         (internal_fn_stored_value_index): Ditto.
23164         * tree-vect-data-refs.cc (vect_store_lanes_supported): Ditto.
23165         (vect_load_lanes_supported): Ditto.
23166         * tree-vect-loop.cc: Ditto.
23167         * tree-vect-slp.cc (vect_slp_prefer_store_lanes_p): Ditto.
23168         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
23169         (get_group_load_store_type): Ditto.
23170         (vectorizable_store): Ditto.
23171         (vectorizable_load): Ditto.
23172         * tree-vectorizer.h (vect_store_lanes_supported): Ditto.
23173         (vect_load_lanes_supported): Ditto.
23175 2023-08-16  Pan Li  <pan2.li@intel.com>
23177         * config/riscv/riscv-vector-builtins-bases.cc
23178         (enum frm_op_type): New type for frm.
23179         (BASE): New declaration.
23180         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23181         * config/riscv/riscv-vector-builtins-functions.def
23182         (vfcvt_x_frm): New intrinsic function def.
23184 2023-08-16  liuhongt  <hongtao.liu@intel.com>
23186         * config/i386/i386-builtins.cc
23187         (ix86_vectorize_builtin_gather): Adjust for use_gather_8parts.
23188         * config/i386/i386-options.cc (parse_mtune_ctrl_str):
23189         Set/Clear tune features use_{gather,scatter}_{2parts, 4parts,
23190         8parts} for -mtune-crtl={,^}{use_gather,use_scatter}.
23191         * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Adjust
23192         for use_scatter_8parts
23193         * config/i386/i386.h (TARGET_USE_GATHER): Rename to ..
23194         (TARGET_USE_GATHER_8PARTS): .. this.
23195         (TARGET_USE_SCATTER): Rename to ..
23196         (TARGET_USE_SCATTER_8PARTS): .. this.
23197         * config/i386/x86-tune.def (X86_TUNE_USE_GATHER): Rename to
23198         (X86_TUNE_USE_GATHER_8PARTS): .. this.
23199         (X86_TUNE_USE_SCATTER): Rename to
23200         (X86_TUNE_USE_SCATTER_8PARTS): .. this.
23201         * config/i386/i386.opt: Add new options mgather, mscatter.
23203 2023-08-16  liuhongt  <hongtao.liu@intel.com>
23205         * config/i386/i386-options.cc (m_GDS): New macro.
23206         * config/i386/x86-tune.def (X86_TUNE_USE_GATHER_2PARTS): Don't
23207         enable for m_GDS.
23208         (X86_TUNE_USE_GATHER_4PARTS): Ditto.
23209         (X86_TUNE_USE_GATHER): Ditto.
23211 2023-08-16  liuhongt  <hongtao.liu@intel.com>
23213         * config/i386/i386.md (movdf_internal): Generate vmovapd instead of
23214         vmovsd when moving DFmode between SSE_REGS.
23215         (movhi_internal): Generate vmovdqa instead of vmovsh when
23216         moving HImode between SSE_REGS.
23217         (mov<mode>_internal): Use vmovaps instead of vmovsh when
23218         moving HF/BFmode between SSE_REGS.
23220 2023-08-15  David Faust  <david.faust@oracle.com>
23222         * config/bpf/bpf.md (extendsisi2): Delete useless define_insn.
23224 2023-08-15  David Faust  <david.faust@oracle.com>
23226         PR target/111029
23227         * config/bpf/bpf.cc (bpf_print_register): Print 'w' registers
23228         for any mode 32-bits or smaller, not just SImode.
23230 2023-08-15  Martin Jambor  <mjambor@suse.cz>
23232         PR ipa/68930
23233         PR ipa/92497
23234         * ipa-prop.h (ipcp_get_aggregate_const): Declare.
23235         * ipa-prop.cc (ipcp_get_aggregate_const): New function.
23236         (ipcp_transform_function): Do not deallocate transformation info.
23237         * tree-ssa-sccvn.cc: Include alloc-pool.h, symbol-summary.h and
23238         ipa-prop.h.
23239         (vn_reference_lookup_2): When hitting default-def vuse, query
23240         IPA-CP transformation info for any known constants.
23242 2023-08-15  Chung-Lin Tang  <cltang@codesourcery.com>
23243             Thomas Schwinge  <thomas@codesourcery.com>
23245         * gimplify.cc (oacc_region_type_name): New function.
23246         (oacc_default_clause): If no 'default' clause appears on this
23247         compute construct, see if one appears on a lexically containing
23248         'data' construct.
23249         (gimplify_scan_omp_clauses): Upon OMP_CLAUSE_DEFAULT case, set
23250         ctx->oacc_default_clause_ctx to current context.
23252 2023-08-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23254         PR target/110989
23255         * config/riscv/predicates.md: Fix predicate.
23257 2023-08-15  Richard Biener  <rguenther@suse.de>
23259         * tree-vect-slp.cc (vect_analyze_slp_instance): Remove
23260         slp_inst_kind_ctor handling.
23261         (vect_analyze_slp): Simplify.
23262         (vect_build_slp_instance): Dump when we analyze a CTOR.
23263         (vect_slp_check_for_constructors): Rename to ...
23264         (vect_slp_check_for_roots): ... this.  Register a
23265         slp_root for CONSTRUCTORs instead of shoving them to
23266         the set of grouped stores.
23267         (vect_slp_analyze_bb_1): Adjust.
23269 2023-08-15  Richard Biener  <rguenther@suse.de>
23271         * tree-vectorizer.h (_slp_instance::remain_stmts): Change
23272         to ...
23273         (_slp_instance::remain_defs): ... this.
23274         (SLP_INSTANCE_REMAIN_STMTS): Rename to ...
23275         (SLP_INSTANCE_REMAIN_DEFS): ... this.
23276         (slp_root::remain): New.
23277         (slp_root::slp_root): Adjust.
23278         * tree-vect-slp.cc (vect_free_slp_instance): Adjust.
23279         (vect_build_slp_instance): Get extra remain parameter,
23280         adjust former handling of a cut off stmt.
23281         (vect_analyze_slp_instance): Adjust.
23282         (vect_analyze_slp): Likewise.
23283         (_bb_vec_info::~_bb_vec_info): Likewise.
23284         (vectorizable_bb_reduc_epilogue): Dump something if we fail.
23285         (vect_slp_check_for_constructors): Handle non-internal
23286         defs as remain defs of a reduction.
23287         (vectorize_slp_instance_root_stmt): Adjust.
23289 2023-08-15  Richard Biener  <rguenther@suse.de>
23291         * tree-ssa-loop-ivcanon.cc: Include tree-vectorizer.h
23292         (canonicalize_loop_induction_variables): Use find_loop_location.
23294 2023-08-15  Hans-Peter Nilsson  <hp@axis.com>
23296         PR bootstrap/111021
23297         * config/cris/cris-protos.h: Revert recent change.
23298         * config/cris/cris.cc (cris_legitimate_address_p): Remove
23299         code_helper unused parameter.
23300         (cris_legitimate_address_p_hook): New wrapper function.
23301         (TARGET_LEGITIMATE_ADDRESS_P): Change to
23302         cris_legitimate_address_p_hook.
23304 2023-08-15  Richard Biener  <rguenther@suse.de>
23306         PR tree-optimization/110963
23307         * tree-ssa-pre.cc (do_pre_regular_insertion): Also insert
23308         a PHI node when the expression is available on all edges
23309         and we insert at most one copy from a constant.
23311 2023-08-15  Richard Biener  <rguenther@suse.de>
23313         PR tree-optimization/110991
23314         * tree-ssa-loop-ivcanon.cc (constant_after_peeling): Handle
23315         VIEW_CONVERT_EXPR <op>, handle more simple IV-like SSA cycles
23316         that will end up constant.
23318 2023-08-15  Kewen Lin  <linkw@linux.ibm.com>
23320         PR bootstrap/111021
23321         * Makefile.in (RECOG_H): Add $(TREE_H) as dependence.
23323 2023-08-15  Kewen Lin  <linkw@linux.ibm.com>
23325         * tree-vect-stmts.cc (vectorizable_load): Move the handlings on
23326         VMAT_LOAD_STORE_LANES in the final loop nest to its own loop,
23327         and update the final nest accordingly.
23329 2023-08-15  Kewen Lin  <linkw@linux.ibm.com>
23331         * tree-vect-stmts.cc (vectorizable_load): Remove some useless checks
23332         on VMAT_INVARIANT.
23334 2023-08-15  Pan Li  <pan2.li@intel.com>
23336         * mode-switching.cc (create_pre_exit): Add SET insn check.
23338 2023-08-15  Pan Li  <pan2.li@intel.com>
23340         * config/riscv/riscv-vector-builtins-bases.cc
23341         (class vfrec7_frm): New class for frm.
23342         (vfrec7_frm_obj): New declaration.
23343         (BASE): Ditto.
23344         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23345         * config/riscv/riscv-vector-builtins-functions.def
23346         (vfrec7_frm): New intrinsic function definition.
23347         * config/riscv/vector-iterators.md
23348         (VFMISC): Remove VFREC7.
23349         (misc_op): Ditto.
23350         (float_insn_type): Ditto.
23351         (VFMISC_FRM): New int iterator.
23352         (misc_frm_op): New op for frm.
23353         (float_frm_insn_type): New type for frm.
23354         * config/riscv/vector.md (@pred_<misc_frm_op><mode>):
23355         New pattern for misc frm.
23357 2023-08-14  Vladimir N. Makarov  <vmakarov@redhat.com>
23359         * lra-constraints.cc (curr_insn_transform): Process output stack
23360         pointer reloads before emitting reload insns.
23362 2023-08-14  benjamin priour  <vultkayn@gcc.gnu.org>
23364         PR analyzer/110543
23365         * doc/invoke.texi: Add documentation of
23366         fanalyzer-show-events-in-system-headers
23368 2023-08-14  Jan Hubicka  <jh@suse.cz>
23370         PR gcov-profile/110988
23371         * tree-cfg.cc (fold_loop_internal_call): Avoid division by zero.
23373 2023-08-14  Jiawei  <jiawei@iscas.ac.cn>
23375         * config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins):
23376         Enable compressed builtins when ZC* extensions enabled.
23377         * config/riscv/riscv-shorten-memrefs.cc:
23378         Enable shorten_memrefs pass when ZC* extensions enabled.
23379         * config/riscv/riscv.cc (riscv_compressed_reg_p):
23380         Enable compressible registers when ZC* extensions enabled.
23381         (riscv_rtx_costs): Allow adjusting rtx costs when ZC* extensions enabled.
23382         (riscv_address_cost): Allow adjusting address cost when ZC* extensions enabled.
23383         (riscv_first_stack_step): Allow compression of the register saves
23384         without adding extra instructions.
23385         * config/riscv/riscv.h (FUNCTION_BOUNDARY): Adjusts function boundary
23386         to 16 bits when ZC* extensions enabled.
23388 2023-08-14  Jiawei  <jiawei@iscas.ac.cn>
23390         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse): New extensions.
23391         * config/riscv/riscv-opts.h (MASK_ZCA): New mask.
23392         (MASK_ZCB): Ditto.
23393         (MASK_ZCE): Ditto.
23394         (MASK_ZCF): Ditto.
23395         (MASK_ZCD): Ditto.
23396         (MASK_ZCMP): Ditto.
23397         (MASK_ZCMT): Ditto.
23398         (TARGET_ZCA): New target.
23399         (TARGET_ZCB): Ditto.
23400         (TARGET_ZCE): Ditto.
23401         (TARGET_ZCF): Ditto.
23402         (TARGET_ZCD): Ditto.
23403         (TARGET_ZCMP): Ditto.
23404         (TARGET_ZCMT): Ditto.
23405         * config/riscv/riscv.opt: New target variable.
23407 2023-08-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23409         Revert:
23410         2023-05-17  Jin Ma  <jinma@linux.alibaba.com>
23412         * genrecog.cc (print_nonbool_test): Fix type error of
23413         switch (SUBREG_BYTE (op))'.
23415 2023-08-14  Richard Biener  <rguenther@suse.de>
23417         * tree-cfg.cc (print_loop_info): Dump to 'file', not 'dump_file'.
23419 2023-08-14  Pan Li  <pan2.li@intel.com>
23421         * config/riscv/riscv-vector-builtins-bases.cc
23422         (class unop_frm): New class for frm.
23423         (vfsqrt_frm_obj): New declaration.
23424         (BASE): Ditto.
23425         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23426         * config/riscv/riscv-vector-builtins-functions.def
23427         (vfsqrt_frm): New intrinsic function definition.
23429 2023-08-14  Pan Li  <pan2.li@intel.com>
23431         * config/riscv/riscv-vector-builtins-bases.cc
23432         (class vfwnmsac_frm): New class for frm.
23433         (vfwnmsac_frm_obj): New declaration.
23434         (BASE): Ditto.
23435         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23436         * config/riscv/riscv-vector-builtins-functions.def
23437         (vfwnmsac_frm): New intrinsic function definition.
23439 2023-08-14  Pan Li  <pan2.li@intel.com>
23441         * config/riscv/riscv-vector-builtins-bases.cc
23442         (class vfwmsac_frm): New class for frm.
23443         (vfwmsac_frm_obj): New declaration.
23444         (BASE): Ditto.
23445         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23446         * config/riscv/riscv-vector-builtins-functions.def
23447         (vfwmsac_frm): New intrinsic function definition.
23449 2023-08-14  Pan Li  <pan2.li@intel.com>
23451         * config/riscv/riscv-vector-builtins-bases.cc
23452         (class vfwnmacc_frm): New class for frm.
23453         (vfwnmacc_frm_obj): New declaration.
23454         (BASE): Ditto.
23455         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23456         * config/riscv/riscv-vector-builtins-functions.def
23457         (vfwnmacc_frm): New intrinsic function definition.
23459 2023-08-14  Cui, Lili  <lili.cui@intel.com>
23461         * common/config/i386/cpuinfo.h (get_intel_cpu): Add model value 0xba
23462         to Raptorlake.
23464 2023-08-14  Hans-Peter Nilsson  <hp@axis.com>
23466         * config/mmix/predicates.md (mmix_address_operand): Use
23467         lra_in_progress, not reload_in_progress.
23469 2023-08-14  Hans-Peter Nilsson  <hp@axis.com>
23471         * config/mmix/mmix.cc: Re-enable LRA.
23473 2023-08-14  Hans-Peter Nilsson  <hp@axis.com>
23475         * config/mmix/predicates.md (frame_pointer_operand): Handle FP+offset
23476         when lra_in_progress.
23478 2023-08-14  Hans-Peter Nilsson  <hp@axis.com>
23480         * config/mmix/mmix.cc: Disable LRA for MMIX.
23482 2023-08-14  Pan Li  <pan2.li@intel.com>
23484         * config/riscv/riscv-vector-builtins-bases.cc
23485         (class vfwmacc_frm): New class for vfwmacc frm.
23486         (vfwmacc_frm_obj): New declaration.
23487         (BASE): Ditto.
23488         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23489         * config/riscv/riscv-vector-builtins-functions.def
23490         (vfwmacc_frm): Function definition for vfwmacc.
23491         * config/riscv/riscv-vector-builtins.cc
23492         (function_expander::use_widen_ternop_insn): Add frm support.
23494 2023-08-14  Pan Li  <pan2.li@intel.com>
23496         * config/riscv/riscv-vector-builtins-bases.cc
23497         (class vfnmsub_frm): New class for vfnmsub frm.
23498         (vfnmsub_frm): New declaration.
23499         (BASE): Ditto.
23500         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23501         * config/riscv/riscv-vector-builtins-functions.def
23502         (vfnmsub_frm): New function declaration.
23504 2023-08-14  Vladimir N. Makarov  <vmakarov@redhat.com>
23506         * lra-constraints.cc (curr_insn_transform): Set done_p up and
23507         check it on true after processing output stack pointer reload.
23509 2023-08-12  Jakub Jelinek  <jakub@redhat.com>
23511         * Makefile.in (USER_H): Add stdckdint.h.
23512         * ginclude/stdckdint.h: New file.
23514 2023-08-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23516         PR target/110994
23517         * config/riscv/riscv-opts.h (TARGET_VECTOR_VLS): Add TARGET_VETOR.
23519 2023-08-12  Patrick Palka  <ppalka@redhat.com>
23521         * tree-pretty-print.cc (dump_generic_node) <case TREE_VEC>:
23522         Delimit output with braces.
23524 2023-08-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23526         PR target/110985
23527         * config/riscv/riscv-v.cc (expand_vec_series): Refactor the expander.
23529 2023-08-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23531         * config/riscv/autovec.md: Add VLS CONST_VECTOR.
23532         * config/riscv/riscv.cc (riscv_const_insns): Ditto.
23533         * config/riscv/vector.md: Ditto.
23535 2023-08-11  David Malcolm  <dmalcolm@redhat.com>
23537         PR analyzer/105899
23538         * doc/analyzer.texi (__analyzer_get_strlen): New.
23539         * doc/invoke.texi: Add -Wanalyzer-unterminated-string.
23541 2023-08-11  Jeff Law  <jlaw@ventanamicro.com>
23543         * config/rx/rx.md (subdi3): Fix test for borrow.
23545 2023-08-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23547         PR middle-end/110989
23548         * tree-vect-stmts.cc (vectorizable_store): Replace iv_type with sizetype.
23549         (vectorizable_load): Ditto.
23551 2023-08-11  Jose E. Marchesi  <jose.marchesi@oracle.com>
23553         * config/bpf/bpf.md (allocate_stack): Define.
23554         * config/bpf/bpf.h (FIRST_PSEUDO_REGISTER): Make room for fake
23555         stack pointer register.
23556         (FIXED_REGISTERS): Adjust accordingly.
23557         (CALL_USED_REGISTERS): Likewise.
23558         (REG_CLASS_CONTENTS): Likewise.
23559         (REGISTER_NAMES): Likewise.
23560         * config/bpf/bpf.cc (bpf_compute_frame_layout): Do not reserve
23561         space for callee-saved registers.
23562         (bpf_expand_prologue): Do not save callee-saved registers in xbpf.
23563         (bpf_expand_epilogue): Do not restore callee-saved registers in
23564         xbpf.
23566 2023-08-11  Jose E. Marchesi  <jose.marchesi@oracle.com>
23568         * config/bpf/bpf.cc (bpf_function_arg_advance): Do not complain
23569         about too many arguments if function is always inlined.
23571 2023-08-11  Patrick Palka  <ppalka@redhat.com>
23573         * tree-pretty-print.cc (dump_generic_node) <case COMPONENT_REF>:
23574         Don't call component_ref_field_offset if the RHS isn't a decl.
23576 2023-08-11  John David Anglin  <danglin@gcc.gnu.org>
23578         PR bootstrap/110646
23579         * gensupport.cc(class conlist): Use strtol instead of std::stoi.
23581 2023-08-11  Vladimir N. Makarov  <vmakarov@redhat.com>
23583         * lra-constraints.cc (goal_alt_out_sp_reload_p): New flag.
23584         (process_alt_operands): Set the flag.
23585         (curr_insn_transform): Modify stack pointer offsets if output
23586         stack pointer reload is generated.
23588 2023-08-11  Joseph Myers  <joseph@codesourcery.com>
23590         * configure: Regenerate.
23592 2023-08-11  Richard Biener  <rguenther@suse.de>
23594         PR tree-optimization/110979
23595         * tree-vect-loop.cc (vectorizable_reduction): For
23596         FOLD_LEFT_REDUCTION without target support make sure
23597         we don't need to honor signed zeros and sign dependent rounding.
23599 2023-08-11  Richard Biener  <rguenther@suse.de>
23601         * tree-vect-slp.cc (vect_slp_region): Provide opt-info for all SLP
23602         subgraph entries.  Dump the used vector size based on the
23603         SLP subgraph entry root vector type.
23605 2023-08-11  Pan Li  <pan2.li@intel.com>
23607         * config/riscv/riscv-vector-builtins-bases.cc
23608         (class vfmsub_frm): New class for vfmsub frm.
23609         (vfmsub_frm): New declaration.
23610         (BASE): Ditto.
23611         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23612         * config/riscv/riscv-vector-builtins-functions.def
23613         (vfmsub_frm): New function declaration.
23615 2023-08-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23617         * doc/md.texi: Add vec_mask_len_{load_lanes,store_lanes} patterns.
23618         * internal-fn.cc (expand_partial_load_optab_fn): Ditto.
23619         (expand_partial_store_optab_fn): Ditto.
23620         * internal-fn.def (MASK_LEN_LOAD_LANES): Ditto.
23621         (MASK_LEN_STORE_LANES): Ditto.
23622         * optabs.def (OPTAB_CD): Ditto.
23624 2023-08-11  Pan Li  <pan2.li@intel.com>
23626         * config/riscv/riscv-vector-builtins-bases.cc
23627         (class vfnmadd_frm): New class for vfnmadd frm.
23628         (vfnmadd_frm): New declaration.
23629         (BASE): Ditto.
23630         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23631         * config/riscv/riscv-vector-builtins-functions.def
23632         (vfnmadd_frm): New function declaration.
23634 2023-08-11  Drew Ross  <drross@redhat.com>
23635             Jakub Jelinek  <jakub@redhat.com>
23637         PR tree-optimization/109938
23638         * match.pd (((x ^ y) & z) | x -> (z & y) | x): New simplification.
23640 2023-08-11  Pan Li  <pan2.li@intel.com>
23642         * config/riscv/riscv-vector-builtins-bases.cc
23643         (class vfmadd_frm): New class for vfmadd frm.
23644         (vfmadd_frm_obj): New declaration.
23645         (BASE): Ditto.
23646         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23647         * config/riscv/riscv-vector-builtins-functions.def
23648         (vfmadd_frm): New function definition.
23650 2023-08-11  Pan Li  <pan2.li@intel.com>
23652         * config/riscv/riscv-vector-builtins-bases.cc
23653         (class vfnmsac_frm): New class for vfnmsac frm.
23654         (vfnmsac_frm_obj): New declaration.
23655         (BASE): Ditto.
23656         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23657         * config/riscv/riscv-vector-builtins-functions.def
23658         (vfnmsac_frm): New function definition.
23660 2023-08-11  Jakub Jelinek  <jakub@redhat.com>
23662         * doc/extend.texi (Typeof): Document typeof_unqual
23663         and __typeof_unqual__.
23665 2023-08-11  Andrew Pinski  <apinski@marvell.com>
23667         PR tree-optimization/110954
23668         * generic-match-head.cc (bitwise_inverted_equal_p): Add
23669         wascmp argument and set it accordingly.
23670         * gimple-match-head.cc (bitwise_inverted_equal_p): Add
23671         wascmp argument to the macro.
23672         (gimple_bitwise_inverted_equal_p): Add
23673         wascmp argument and set it accordingly.
23674         * match.pd (`a & ~a`, `a ^| ~a`): Update call
23675         to bitwise_inverted_equal_p and handle wascmp case.
23676         (`(~x | y) & x`, `(~x | y) & x`, `a?~t:t`): Update
23677         call to bitwise_inverted_equal_p and check to see
23678         if was !wascmp or if precision was 1.
23680 2023-08-11  Martin Uecker  <uecker@tugraz.at>
23682         PR c/84510
23683         * doc/invoke.texi: Update.
23685 2023-08-11  Pan Li  <pan2.li@intel.com>
23687         * config/riscv/riscv-vector-builtins-bases.cc
23688         (class vfmsac_frm): New class for vfmsac frm.
23689         (vfmsac_frm_obj): New declaration.
23690         (BASE): Ditto.
23691         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23692         * config/riscv/riscv-vector-builtins-functions.def
23693         (vfmsac_frm): New function definition
23695 2023-08-10  Jan Hubicka  <jh@suse.cz>
23697         PR middle-end/110923
23698         * tree-ssa-loop-split.cc (split_loop): Watch for division by zero.
23700 2023-08-10  Patrick O'Neill  <patrick@rivosinc.com>
23702         * common/config/riscv/riscv-common.cc: Add Ztso and mark Ztso as
23703         dependent on 'a' extension.
23704         * config/riscv/riscv-opts.h (MASK_ZTSO): New mask.
23705         (TARGET_ZTSO): New target.
23706         * config/riscv/riscv.cc (riscv_memmodel_needs_amo_acquire): Add
23707         Ztso case.
23708         (riscv_memmodel_needs_amo_release): Add Ztso case.
23709         (riscv_print_operand): Add Ztso case for LR/SC annotations.
23710         * config/riscv/riscv.md: Import sync-rvwmo.md and sync-ztso.md.
23711         * config/riscv/riscv.opt: Add Ztso target variable.
23712         * config/riscv/sync.md (mem_thread_fence_1): Expand to RVWMO or
23713         Ztso specific insn.
23714         (atomic_load<mode>): Expand to RVWMO or Ztso specific insn.
23715         (atomic_store<mode>): Expand to RVWMO or Ztso specific insn.
23716         * config/riscv/sync-rvwmo.md: New file. Seperate out RVWMO
23717         specific load/store/fence mappings.
23718         * config/riscv/sync-ztso.md: New file. Seperate out Ztso
23719         specific load/store/fence mappings.
23721 2023-08-10  Jan Hubicka  <jh@suse.cz>
23723         * cfgloopmanip.cc (duplicate_loop_body_to_header_edge): Special case loops with
23724         0 iteration count.
23726 2023-08-10  Jan Hubicka  <jh@suse.cz>
23728         * tree-ssa-threadupdate.cc (ssa_fix_duplicate_block_edges): Fix profile update.
23730 2023-08-10  Jan Hubicka  <jh@suse.cz>
23732         * profile-count.cc (profile_count::differs_from_p): Fix overflow and
23733         handling of undefined values.
23735 2023-08-10  Jakub Jelinek  <jakub@redhat.com>
23737         PR c/102989
23738         * tree-ssa-phiopt.cc (single_non_singleton_phi_for_edges): Never
23739         return virtual phis and return NULL if there is a virtual phi
23740         where the arguments from E0 and E1 edges aren't equal.
23742 2023-08-10  Richard Biener  <rguenther@suse.de>
23744         * internal-fn.def (VCOND, VCONDU, VCONDEQ, VCOND_MASK,
23745         VEC_SET, VEC_EXTRACT): Make ECF_CONST | ECF_NOTHROW.
23747 2023-08-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23749         PR target/110962
23750         * config/riscv/autovec.md (vec_duplicate<mode>): New pattern.
23752 2023-08-10  Pan Li  <pan2.li@intel.com>
23754         * config/riscv/riscv-vector-builtins-bases.cc
23755         (class vfnmacc_frm): New class for vfnmacc.
23756         (vfnmacc_frm_obj): New declaration.
23757         (BASE): Ditto.
23758         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23759         * config/riscv/riscv-vector-builtins-functions.def
23760         (vfnmacc_frm): New function definition.
23762 2023-08-10  Pan Li  <pan2.li@intel.com>
23764         * config/riscv/riscv-vector-builtins-bases.cc
23765         (class vfmacc_frm): New class for vfmacc frm.
23766         (vfmacc_frm_obj): New declaration.
23767         (BASE): Ditto.
23768         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23769         * config/riscv/riscv-vector-builtins-functions.def
23770         (vfmacc_frm): New function definition.
23772 2023-08-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23774         PR target/110964
23775         * config/riscv/riscv-v.cc (expand_cond_len_ternop): Add integer ternary.
23777 2023-08-10  Richard Biener  <rguenther@suse.de>
23779         * tree-vectorizer.h (vectorizable_live_operation): Remove
23780         gimple_stmt_iterator * argument.
23781         * tree-vect-loop.cc (vectorizable_live_operation): Likewise.
23782         Adjust plumbing around vect_get_loop_mask.
23783         (vect_analyze_loop_operations): Adjust.
23784         * tree-vect-slp.cc (vect_slp_analyze_node_operations_1): Likewise.
23785         (vect_bb_slp_mark_live_stmts): Likewise.
23786         (vect_schedule_slp_node): Likewise.
23787         * tree-vect-stmts.cc (can_vectorize_live_stmts): Likewise.
23788         Remove gimple_stmt_iterator * argument.
23789         (vect_transform_stmt): Adjust.
23791 2023-08-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23793         * config/riscv/vector-iterators.md: Add missing modes.
23795 2023-08-10  Jakub Jelinek  <jakub@redhat.com>
23797         PR c/102989
23798         * lto-streamer-in.cc (lto_input_tree_1): Assert TYPE_PRECISION
23799         is up to WIDE_INT_MAX_PRECISION rather than MAX_BITSIZE_MODE_ANY_INT.
23801 2023-08-10  Jakub Jelinek  <jakub@redhat.com>
23803         PR c/102989
23804         * expr.cc (expand_expr_real_1) <case MEM_REF>: Add an early return for
23805         EXPAND_WRITE or EXPAND_MEMORY modifiers to avoid testing it multiple
23806         times.
23808 2023-08-10  liuhongt  <hongtao.liu@intel.com>
23810         PR target/110832
23811         * config/i386/mmx.md: (movq_<mode>_to_sse): Also do not
23812         sanitize upper part of V4HFmode register with
23813         -fno-trapping-math.
23814         (<insn>v4hf3): Enable for ix86_partial_vec_fp_math.
23815         (<divv4hf3): Ditto.
23816         (<insn>v2hf3): Ditto.
23817         (divv2hf3): Ditto.
23818         (movd_v2hf_to_sse): Do not sanitize upper part of V2HFmode
23819         register with -fno-trapping-math.
23821 2023-08-10  Pan Li  <pan2.li@intel.com>
23822             Kito Cheng  <kito.cheng@sifive.com>
23824         * config/riscv/riscv-protos.h
23825         (enum floating_point_rounding_mode): Add NONE, DYN_EXIT and DYN_CALL.
23826         (get_frm_mode): New declaration.
23827         * config/riscv/riscv-v.cc (get_frm_mode): New function to get frm mode.
23828         * config/riscv/riscv-vector-builtins.cc
23829         (function_expander::use_ternop_insn): Take care of frm reg.
23830         * config/riscv/riscv.cc (riscv_static_frm_mode_p): Migrate to FRM_XXX.
23831         (riscv_emit_frm_mode_set): Ditto.
23832         (riscv_emit_mode_set): Ditto.
23833         (riscv_frm_adjust_mode_after_call): Ditto.
23834         (riscv_frm_mode_needed): Ditto.
23835         (riscv_frm_mode_after): Ditto.
23836         (riscv_mode_entry): Ditto.
23837         (riscv_mode_exit): Ditto.
23838         * config/riscv/riscv.h (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
23839         * config/riscv/vector.md
23840         (rne,rtz,rdn,rup,rmm,dyn,dyn_exit,dyn_call,none): Removed
23841         (symbol_ref): * config/riscv/vector.md: Set frm_mode attr explicitly.
23843 2023-08-09  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23845         * config/riscv/riscv-vsetvl.cc (anticipatable_occurrence_p): Fix
23846         incorrect anticipate info.
23848 2023-08-09  Tsukasa OI  <research_trasio@irq.a4lg.com>
23850         * common/config/riscv/riscv-common.cc (riscv_ext_version_table):
23851         Remove 'Zve32d' from the version list.
23853 2023-08-09  Jin Ma  <jinma@linux.alibaba.com>
23855         * config/riscv/riscv.cc (riscv_sched_variable_issue): New function.
23856         (TARGET_SCHED_VARIABLE_ISSUE): New macro.
23857         Co-authored-by: Philipp Tomsich <philipp.tomsich@vrull.eu>
23858         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
23860 2023-08-09  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
23862         * config/riscv/riscv.cc (riscv_legitimize_address): Handle folding.
23863         (mem_shadd_or_shadd_rtx_p): New function.
23865 2023-08-09  Andrew Pinski  <apinski@marvell.com>
23867         PR tree-optimization/110937
23868         PR tree-optimization/100798
23869         * match.pd (`a ? ~b : b`): Handle this
23870         case.
23872 2023-08-09  Uros Bizjak  <ubizjak@gmail.com>
23874         * config/i386/i386.opt (mpartial-vector-fp-math): Add dot.
23876 2023-08-09  Richard Ball  <richard.ball@arm.com>
23878         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add Cortex-A520 CPU.
23879         * config/aarch64/aarch64-tune.md: Regenerate.
23880         * doc/invoke.texi: Document Cortex-A520 CPU.
23882 2023-08-09  Carl Love  <cel@us.ibm.com>
23884         * config/rs6000/rs6000-builtins.def (vcmpneb, vcmpneh, vcmpnew):
23885         Move definitions to Altivec stanza.
23886         * config/rs6000/altivec.md (vcmpneb, vcmpneh, vcmpnew): New
23887         define_expand.
23889 2023-08-09  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
23891         PR target/110950
23892         * config/riscv/riscv-v.cc (expand_const_vector): Add NPATTERNS = 1
23893         stepped vector support.
23895 2023-08-09  liuhongt  <hongtao.liu@intel.com>
23897         * common/config/i386/cpuinfo.h (get_available_features):
23898         Rename local variable subleaf_level to max_subleaf_level.
23900 2023-08-09  Richard Biener  <rguenther@suse.de>
23902         PR rtl-optimization/110587
23903         * lra-assigns.cc (find_hard_regno_for_1): Re-order checks.
23905 2023-08-09  Kewen Lin  <linkw@linux.ibm.com>
23907         PR tree-optimization/110248
23908         * config/rs6000/rs6000.cc (rs6000_legitimate_address_p): Check if
23909         the given code is for ifn LEN_{LOAD,STORE}, if yes then make it not
23910         legitimate when outer code is PLUS.
23912 2023-08-09  Kewen Lin  <linkw@linux.ibm.com>
23914         PR tree-optimization/110248
23915         * recog.cc (memory_address_addr_space_p): Add one more argument ch of
23916         type code_helper and pass it to targetm.addr_space.legitimate_address_p
23917         instead of ERROR_MARK.
23918         (offsettable_address_addr_space_p): Update one function pointer with
23919         one more argument of type code_helper as its assignees
23920         memory_address_addr_space_p and strict_memory_address_addr_space_p
23921         have been adjusted, and adjust some call sites with ERROR_MARK.
23922         * recog.h (tree.h): New include header file for tree_code ERROR_MARK.
23923         (memory_address_addr_space_p): Adjust with one more unnamed argument
23924         of type code_helper with default ERROR_MARK.
23925         (strict_memory_address_addr_space_p): Likewise.
23926         * reload.cc (strict_memory_address_addr_space_p): Add one unnamed
23927         argument of type code_helper.
23928         * tree-ssa-address.cc (valid_mem_ref_p): Add one more argument ch of
23929         type code_helper and pass it to memory_address_addr_space_p.
23930         * tree-ssa-address.h (valid_mem_ref_p): Adjust the declaration with
23931         one more unnamed argument of type code_helper with default value
23932         ERROR_MARK.
23933         * tree-ssa-loop-ivopts.cc (get_address_cost): Use ERROR_MARK as code
23934         by default, change it with ifn code for USE_PTR_ADDRESS type use, and
23935         pass it to all valid_mem_ref_p calls.
23937 2023-08-09  Kewen Lin  <linkw@linux.ibm.com>
23939         PR tree-optimization/110248
23940         * coretypes.h (class code_helper): Add forward declaration.
23941         * doc/tm.texi: Regenerate.
23942         * lra-constraints.cc (valid_address_p): Call target hook
23943         targetm.addr_space.legitimate_address_p with an extra parameter
23944         ERROR_MARK as its prototype changes.
23945         * recog.cc (memory_address_addr_space_p): Likewise.
23946         * reload.cc (strict_memory_address_addr_space_p): Likewise.
23947         * target.def (legitimate_address_p, addr_space.legitimate_address_p):
23948         Extend with one more argument of type code_helper, update the
23949         documentation accordingly.
23950         * targhooks.cc (default_legitimate_address_p): Adjust for the
23951         new code_helper argument.
23952         (default_addr_space_legitimate_address_p): Likewise.
23953         * targhooks.h (default_legitimate_address_p): Likewise.
23954         (default_addr_space_legitimate_address_p): Likewise.
23955         * config/aarch64/aarch64.cc (aarch64_legitimate_address_hook_p): Adjust
23956         with extra unnamed code_helper argument with default ERROR_MARK.
23957         * config/alpha/alpha.cc (alpha_legitimate_address_p): Likewise.
23958         * config/arc/arc.cc (arc_legitimate_address_p): Likewise.
23959         * config/arm/arm-protos.h (arm_legitimate_address_p): Likewise.
23960         (tree.h): New include for tree_code ERROR_MARK.
23961         * config/arm/arm.cc (arm_legitimate_address_p): Adjust with extra
23962         unnamed code_helper argument with default ERROR_MARK.
23963         * config/avr/avr.cc (avr_addr_space_legitimate_address_p): Likewise.
23964         * config/bfin/bfin.cc (bfin_legitimate_address_p): Likewise.
23965         * config/bpf/bpf.cc (bpf_legitimate_address_p): Likewise.
23966         * config/c6x/c6x.cc (c6x_legitimate_address_p): Likewise.
23967         * config/cris/cris-protos.h (cris_legitimate_address_p): Likewise.
23968         (tree.h): New include for tree_code ERROR_MARK.
23969         * config/cris/cris.cc (cris_legitimate_address_p): Adjust with extra
23970         unnamed code_helper argument with default ERROR_MARK.
23971         * config/csky/csky.cc (csky_legitimate_address_p): Likewise.
23972         * config/epiphany/epiphany.cc (epiphany_legitimate_address_p):
23973         Likewise.
23974         * config/frv/frv.cc (frv_legitimate_address_p): Likewise.
23975         * config/ft32/ft32.cc (ft32_addr_space_legitimate_address_p): Likewise.
23976         * config/gcn/gcn.cc (gcn_addr_space_legitimate_address_p): Likewise.
23977         * config/h8300/h8300.cc (h8300_legitimate_address_p): Likewise.
23978         * config/i386/i386.cc (ix86_legitimate_address_p): Likewise.
23979         * config/ia64/ia64.cc (ia64_legitimate_address_p): Likewise.
23980         * config/iq2000/iq2000.cc (iq2000_legitimate_address_p): Likewise.
23981         * config/lm32/lm32.cc (lm32_legitimate_address_p): Likewise.
23982         * config/loongarch/loongarch.cc (loongarch_legitimate_address_p):
23983         Likewise.
23984         * config/m32c/m32c.cc (m32c_legitimate_address_p): Likewise.
23985         (m32c_addr_space_legitimate_address_p): Likewise.
23986         * config/m32r/m32r.cc (m32r_legitimate_address_p): Likewise.
23987         * config/m68k/m68k.cc (m68k_legitimate_address_p): Likewise.
23988         * config/mcore/mcore.cc (mcore_legitimate_address_p): Likewise.
23989         * config/microblaze/microblaze-protos.h (tree.h): New include for
23990         tree_code ERROR_MARK.
23991         (microblaze_legitimate_address_p): Adjust with extra unnamed
23992         code_helper argument with default ERROR_MARK.
23993         * config/microblaze/microblaze.cc (microblaze_legitimate_address_p):
23994         Likewise.
23995         * config/mips/mips.cc (mips_legitimate_address_p): Likewise.
23996         * config/mmix/mmix.cc (mmix_legitimate_address_p): Likewise.
23997         * config/mn10300/mn10300.cc (mn10300_legitimate_address_p): Likewise.
23998         * config/moxie/moxie.cc (moxie_legitimate_address_p): Likewise.
23999         * config/msp430/msp430.cc (msp430_legitimate_address_p): Likewise.
24000         (msp430_addr_space_legitimate_address_p): Adjust with extra code_helper
24001         argument with default ERROR_MARK and adjust the call to function
24002         msp430_legitimate_address_p.
24003         * config/nds32/nds32.cc (nds32_legitimate_address_p): Adjust with extra
24004         unnamed code_helper argument with default ERROR_MARK.
24005         * config/nios2/nios2.cc (nios2_legitimate_address_p): Likewise.
24006         * config/nvptx/nvptx.cc (nvptx_legitimate_address_p): Likewise.
24007         * config/or1k/or1k.cc (or1k_legitimate_address_p): Likewise.
24008         * config/pa/pa.cc (pa_legitimate_address_p): Likewise.
24009         * config/pdp11/pdp11.cc (pdp11_legitimate_address_p): Likewise.
24010         * config/pru/pru.cc (pru_addr_space_legitimate_address_p): Likewise.
24011         * config/riscv/riscv.cc (riscv_legitimate_address_p): Likewise.
24012         * config/rl78/rl78-protos.h (rl78_as_legitimate_address): Likewise.
24013         (tree.h): New include for tree_code ERROR_MARK.
24014         * config/rl78/rl78.cc (rl78_as_legitimate_address): Adjust with
24015         extra unnamed code_helper argument with default ERROR_MARK.
24016         * config/rs6000/rs6000.cc (rs6000_legitimate_address_p): Likewise.
24017         (rs6000_debug_legitimate_address_p): Adjust with extra code_helper
24018         argument and adjust the call to function rs6000_legitimate_address_p.
24019         * config/rx/rx.cc (rx_is_legitimate_address): Adjust with extra
24020         unnamed code_helper argument with default ERROR_MARK.
24021         * config/s390/s390.cc (s390_legitimate_address_p): Likewise.
24022         * config/sh/sh.cc (sh_legitimate_address_p): Likewise.
24023         * config/sparc/sparc.cc (sparc_legitimate_address_p): Likewise.
24024         * config/v850/v850.cc (v850_legitimate_address_p): Likewise.
24025         * config/vax/vax.cc (vax_legitimate_address_p): Likewise.
24026         * config/visium/visium.cc (visium_legitimate_address_p): Likewise.
24027         * config/xtensa/xtensa.cc (xtensa_legitimate_address_p): Likewise.
24028         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
24029         Likewise.
24030         (tree.h): New include for tree_code ERROR_MARK.
24031         * config/stormy16/stormy16.cc (xstormy16_legitimate_address_p):
24032         Adjust with extra unnamed code_helper argument with default
24033         ERROR_MARK.
24035 2023-08-09  liuhongt  <hongtao.liu@intel.com>
24037         * common/config/i386/cpuinfo.h (get_available_features): Check
24038         EAX for valid subleaf before use CPUID.
24040 2023-08-08  Jeff Law  <jlaw@ventanamicro.com>
24042         * config/riscv/riscv.cc (riscv_expand_conditional_move): Use word_mode
24043         for the temporary when canonicalizing the condition.
24045 2023-08-08  Cupertino Miranda  <cupertino.miranda@oracle.com>
24047         * config/bpf/core-builtins.cc: Cleaned include headers.
24048         (struct cr_builtins): Added GTY.
24049         (cr_builtins_ref): Created.
24050         (builtins_data) Changed to GC root.
24051         (allocate_builtin_data): Changed.
24052         Included gt-core-builtins.h.
24053         * config/bpf/coreout.cc: (bpf_core_extra) Added GTY.
24054         (bpf_core_extra_ref): Created.
24055         (bpf_comment_info): Changed to GC root.
24056         (bpf_core_reloc_add, output_btfext_header, btf_ext_init): Changed.
24058 2023-08-08  Uros Bizjak  <ubizjak@gmail.com>
24060         PR target/110832
24061         * config/i386/i386.opt (mpartial-vector-fp-math): New option.
24062         * config/i386/mmx.md (movq_<mode>_to_sse): Do not sanitize
24063         upper part of V2SFmode register with -fno-trapping-math.
24064         (<plusminusmult:insn>v2sf3): Enable for ix86_partial_vec_fp_math.
24065         (divv2sf3): Ditto.
24066         (<smaxmin:code>v2sf3): Ditto.
24067         (sqrtv2sf2): Ditto.
24068         (*mmx_haddv2sf3_low): Ditto.
24069         (*mmx_hsubv2sf3_low): Ditto.
24070         (vec_addsubv2sf3): Ditto.
24071         (vec_cmpv2sfv2si): Ditto.
24072         (vcond<V2FI:mode>v2sf): Ditto.
24073         (fmav2sf4): Ditto.
24074         (fmsv2sf4): Ditto.
24075         (fnmav2sf4): Ditto.
24076         (fnmsv2sf4): Ditto.
24077         (fix_truncv2sfv2si2): Ditto.
24078         (fixuns_truncv2sfv2si2): Ditto.
24079         (floatv2siv2sf2): Ditto.
24080         (floatunsv2siv2sf2): Ditto.
24081         (nearbyintv2sf2): Ditto.
24082         (rintv2sf2): Ditto.
24083         (lrintv2sfv2si2): Ditto.
24084         (ceilv2sf2): Ditto.
24085         (lceilv2sfv2si2): Ditto.
24086         (floorv2sf2): Ditto.
24087         (lfloorv2sfv2si2): Ditto.
24088         (btruncv2sf2): Ditto.
24089         (roundv2sf2): Ditto.
24090         (lroundv2sfv2si2): Ditto.
24091         * doc/invoke.texi (x86 Options): Document
24092         -mpartial-vector-fp-math option.
24094 2023-08-08  Andrew Pinski  <apinski@marvell.com>
24096         PR tree-optimization/103281
24097         PR tree-optimization/28794
24098         * vr-values.cc (simplify_using_ranges::simplify_cond_using_ranges_1): Split out
24099         majority to ...
24100         (simplify_using_ranges::simplify_compare_using_ranges_1): Here.
24101         (simplify_using_ranges::simplify_casted_cond): Rename to ...
24102         (simplify_using_ranges::simplify_casted_compare): This
24103         and change arguments to take op0 and op1.
24104         (simplify_using_ranges::simplify_compare_assign_using_ranges_1): New method.
24105         (simplify_using_ranges::simplify): For tcc_comparison assignments call
24106         simplify_compare_assign_using_ranges_1.
24107         * vr-values.h (simplify_using_ranges): Add
24108         new methods, simplify_compare_using_ranges_1 and simplify_compare_assign_using_ranges_1.
24109         Rename simplify_casted_cond and simplify_casted_compare and
24110         update argument types.
24112 2023-08-08  Andrzej Turko  <andrzej.turko@gmail.com>
24114         * genmatch.cc: Log line numbers indirectly.
24116 2023-08-08  Andrzej Turko  <andrzej.turko@gmail.com>
24118         * genmatch.cc: Make sinfo map ordered.
24119         * Makefile.in: Require the ordered map header for genmatch.o.
24121 2023-08-08  Andrzej Turko  <andrzej.turko@gmail.com>
24123         * ordered-hash-map.h: Add get_or_insert.
24124         * ordered-hash-map-tests.cc: Use get_or_insert in tests.
24126 2023-08-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24128         * config/riscv/autovec.md (cond_<optab><mode>): New pattern.
24129         (cond_len_<optab><mode>): Ditto.
24130         (cond_fma<mode>): Ditto.
24131         (cond_len_fma<mode>): Ditto.
24132         (cond_fnma<mode>): Ditto.
24133         (cond_len_fnma<mode>): Ditto.
24134         (cond_fms<mode>): Ditto.
24135         (cond_len_fms<mode>): Ditto.
24136         (cond_fnms<mode>): Ditto.
24137         (cond_len_fnms<mode>): Ditto.
24138         * config/riscv/riscv-protos.h (riscv_get_v_regno_alignment): Export
24139         global.
24140         (enum insn_type): Add new enum type.
24141         (prepare_ternary_operands): New function.
24142         * config/riscv/riscv-v.cc (emit_vlmax_masked_fp_mu_insn): Ditto.
24143         (emit_nonvlmax_tumu_insn): Ditto.
24144         (emit_nonvlmax_fp_tumu_insn): Ditto.
24145         (expand_cond_len_binop): Add condtional operations.
24146         (expand_cond_len_ternop): Ditto.
24147         (prepare_ternary_operands): New function.
24148         * config/riscv/riscv.cc (riscv_memmodel_needs_amo_release): Export
24149         riscv_get_v_regno_alignment as global scope.
24150         * config/riscv/vector.md: Fix ternary bugs.
24152 2023-08-08  Richard Biener  <rguenther@suse.de>
24154         PR tree-optimization/49955
24155         * tree-vectorizer.h (_slp_instance::remain_stmts): New.
24156         (SLP_INSTANCE_REMAIN_STMTS): Likewise.
24157         * tree-vect-slp.cc (vect_free_slp_instance): Release
24158         SLP_INSTANCE_REMAIN_STMTS.
24159         (vect_build_slp_instance): Make the number of lanes of
24160         a BB reduction even.
24161         (vectorize_slp_instance_root_stmt): Handle unvectorized
24162         defs of a BB reduction.
24164 2023-08-08  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24166         * internal-fn.cc (get_len_internal_fn): New function.
24167         (DEF_INTERNAL_COND_FN): Ditto.
24168         (DEF_INTERNAL_SIGNED_COND_FN): Ditto.
24169         * internal-fn.h (get_len_internal_fn): Ditto.
24170         * tree-vect-stmts.cc (vectorizable_call): Add CALL auto-vectorization.
24172 2023-08-08  Richard Biener  <rguenther@suse.de>
24174         PR tree-optimization/110924
24175         * tree-ssa-live.h (virtual_operand_live): Update comment.
24176         * tree-ssa-live.cc (virtual_operand_live::get_live_in): Remove
24177         optimization, look at each predecessor.
24178         * tree-ssa-sink.cc (pass_sink_code::execute): Mark backedges.
24180 2023-08-08  yulong  <shiyulong@iscas.ac.cn>
24182         * config/riscv/riscv-v.cc (slide1_sew64_helper): Modify.
24184 2023-08-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24186         * config/riscv/autovec-vls.md (<optab><mode>2): Add VLS neg.
24187         * config/riscv/vector.md: Ditto.
24189 2023-08-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24191         * config/riscv/autovec.md: Add VLS shift.
24193 2023-08-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24195         * config/riscv/autovec-vls.md (<optab><mode>3): Add VLS modes.
24196         * config/riscv/vector-iterators.md: Ditto.
24197         * config/riscv/vector.md: Ditto.
24199 2023-08-07  Jonathan Wakely  <jwakely@redhat.com>
24201         * config/i386/i386.cc (ix86_invalid_conversion): Fix grammar.
24203 2023-08-07  Nick Alcock  <nick.alcock@oracle.com>
24205         * configure: Regenerate.
24207 2023-08-07  John Ericson  <git@JohnEricson.me>
24209         * configure: Regenerate.
24211 2023-08-07  Alan Modra  <amodra@gmail.com>
24213         * configure: Regenerate.
24215 2023-08-07  Alexander von Gluck IV  <kallisti5@unixzen.com>
24217         * configure: Regenerate.
24219 2023-08-07  Nick Alcock  <nick.alcock@oracle.com>
24221         * configure: Regenerate.
24223 2023-08-07  Nick Alcock  <nick.alcock@oracle.com>
24225         * configure: Regenerate.
24227 2023-08-07  H.J. Lu  <hjl.tools@gmail.com>
24229         * configure: Regenerate.
24231 2023-08-07  H.J. Lu  <hjl.tools@gmail.com>
24233         * configure: Regenerate.
24235 2023-08-07  Jeff Law  <jlaw@ventanamicro.com>
24237         * config/riscv/riscv.cc (riscv_expand_conditional_move): Allow
24238         VOIDmode operands to conditional before canonicalization.
24240 2023-08-07  Manolis Tsamis  <manolis.tsamis@vrull.eu>
24242         * regcprop.cc (maybe_copy_reg_attrs): Remove unnecessary function.
24243         (find_oldest_value_reg): Inline stack_pointer_rtx check.
24244         (copyprop_hardreg_forward_1): Inline stack_pointer_rtx check.
24246 2023-08-07  Martin Jambor  <mjambor@suse.cz>
24248         PR ipa/110378
24249         * ipa-param-manipulation.h (class ipa_param_body_adjustments): New
24250         members get_ddef_if_exists_and_is_used and mark_clobbers_dead.
24251         * ipa-sra.cc (isra_track_scalar_value_uses): Ignore clobbers.
24252         (ptr_parm_has_nonarg_uses): Likewise.
24253         * ipa-param-manipulation.cc
24254         (ipa_param_body_adjustments::get_ddef_if_exists_and_is_used): New.
24255         (ipa_param_body_adjustments::mark_dead_statements): Move initial
24256         checks to get_ddef_if_exists_and_is_used.
24257         (ipa_param_body_adjustments::mark_clobbers_dead): New.
24258         (ipa_param_body_adjustments::common_initialization): Call
24259         mark_clobbers_dead when splitting.
24261 2023-08-07  Raphael Zinsly  <rzinsly@ventanamicro.com>
24263         * config/riscv/riscv.cc (riscv_expand_int_scc): Add invert_ptr
24264         as an argument and pass it to riscv_emit_int_order_test.
24265         (riscv_expand_conditional_move): Handle cases where the condition
24266         is not EQ/NE or the second argument to the conditional is not
24267         (const_int 0).
24268         * config/riscv/riscv-protos.h (riscv_expand_int_scc): Update prototype.
24269         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
24271 2023-08-07  Andrew Pinski  <apinski@marvell.com>
24273         PR tree-optimization/109959
24274         * match.pd (`(a > 1) ? 0 : (cast)a`, `(a <= 1) & (cast)a`):
24275         New patterns.
24277 2023-08-07  Richard Biener  <rguenther@suse.de>
24279         * tree-ssa-sink.cc (pass_sink_code::execute): Do not
24280         calculate post-dominators.  Calculate RPO on the inverted
24281         graph and process blocks in that order.
24283 2023-08-07  liuhongt  <hongtao.liu@intel.com>
24285         PR target/110926
24286         * config/i386/i386-protos.h
24287         (vpternlog_redundant_operand_mask): Adjust parameter type.
24288         * config/i386/i386.cc (vpternlog_redundant_operand_mask): Use
24289         INTVAL instead of XINT, also adjust parameter type from rtx*
24290         to rtx since the function only needs operands[4] in vpternlog
24291         pattern.
24292         (substitute_vpternlog_operands): Pass operands[4] instead of
24293         operands to vpternlog_redundant_operand_mask.
24294         * config/i386/sse.md: Ditto.
24296 2023-08-07  Richard Biener  <rguenther@suse.de>
24298         * tree-vect-slp.cc (vect_slp_region): Save/restore vect_location
24299         around dumping code.
24301 2023-08-07  liuhongt  <hongtao.liu@intel.com>
24303         PR target/110762
24304         * config/i386/mmx.md (<insn><mode>3): Changed from define_insn
24305         to define_expand and break into ..
24306         (<insn>v4hf3): .. this.
24307         (divv4hf3): .. this.
24308         (<insn>v2hf3): .. this.
24309         (divv2hf3): .. this.
24310         (movd_v2hf_to_sse): New define_expand.
24311         (movq_<mode>_to_sse): Extend to V4HFmode.
24312         (mmxdoublevecmode): Ditto.
24313         (V2FI_V4HF): New mode iterator.
24314         * config/i386/sse.md (*vec_concatv4sf): Extend to hanlde V8HF
24315         by using mode iterator V4SF_V8HF, renamed to ..
24316         (*vec_concat<mode>): .. this.
24317         (*vec_concatv4sf_0): Extend to handle V8HF by using mode
24318         iterator V4SF_V8HF, renamed to ..
24319         (*vec_concat<mode>_0): .. this.
24320         (*vec_concatv8hf_movss): New define_insn.
24321         (V4SF_V8HF): New mode iterator.
24323 2023-08-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
24325         * tree-vect-patterns.cc (vect_recog_over_widening_pattern): Add op vectype.
24327 2023-08-07  Jan Beulich  <jbeulich@suse.com>
24329         * config/i386/mmx.md (*mmx_pinsrd): Drop "prefix_data16".
24330         (*mmx_pinsrb): Likewise.
24331         (*mmx_pextrb): Likewise.
24332         (*mmx_pextrb_zext): Likewise.
24333         (mmx_pshufbv8qi3): Likewise.
24334         (mmx_pshufbv4qi3): Likewise.
24335         (mmx_pswapdv2si2): Likewise.
24336         (*pinsrb): Likewise.
24337         (*pextrb): Likewise.
24338         (*pextrb_zext): Likewise.
24339         * config/i386/sse.md (*sse4_1_mulv2siv2di3<mask_name>): Likewise.
24340         (*sse2_eq<mode>3): Likewise.
24341         (*sse2_gt<mode>3): Likewise.
24342         (<sse2p4_1>_pinsr<ssemodesuffix>): Likewise.
24343         (*vec_extract<mode>): Likewise.
24344         (*vec_extract<PEXTR_MODE12:mode>_zext): Likewise.
24345         (*vec_extractv16qi_zext): Likewise.
24346         (ssse3_ph<plusminus_mnemonic>wv8hi3): Likewise.
24347         (ssse3_pmaddubsw128): Likewise.
24348         (*<ssse3_avx2>_pmulhrsw<mode>3<mask_name>): Likewise.
24349         (<ssse3_avx2>_pshufb<mode>3<mask_name>): Likewise.
24350         (<ssse3_avx2>_psign<mode>3): Likewise.
24351         (<ssse3_avx2>_palignr<mode>): Likewise.
24352         (*abs<mode>2): Likewise.
24353         (sse4_2_pcmpestr): Likewise.
24354         (sse4_2_pcmpestri): Likewise.
24355         (sse4_2_pcmpestrm): Likewise.
24356         (sse4_2_pcmpestr_cconly): Likewise.
24357         (sse4_2_pcmpistr): Likewise.
24358         (sse4_2_pcmpistri): Likewise.
24359         (sse4_2_pcmpistrm): Likewise.
24360         (sse4_2_pcmpistr_cconly): Likewise.
24361         (vgf2p8affineinvqb_<mode><mask_name>): Likewise.
24362         (vgf2p8affineqb_<mode><mask_name>): Likewise.
24363         (vgf2p8mulb_<mode><mask_name>): Likewise.
24364         (*<code>v8hi3 [smaxmin]): Drop "prefix_data16" and
24365         "prefix_extra".
24366         (*<code>v16qi3 [umaxmin]): Likewise.
24368 2023-08-07  Jan Beulich  <jbeulich@suse.com>
24370         * config/i386/i386.md (sse4_1_round<mode>2): Make
24371         "length_immediate" uniformly 1.
24372         * config/i386/mmx.md (mmx_pblendvb_v8qi): Likewise.
24373         (mmx_pblendvb_<mode>): Likewise.
24375 2023-08-07  Jan Beulich  <jbeulich@suse.com>
24377         * config/i386/sse.md
24378         (<avx512>_<complexopname>_<mode><maskc_name><round_name>): Add
24379         "prefix" attribute.
24380         (avx512fp16_<complexopname>sh_v8hf<mask_scalarc_name><round_scalarcz_name>):
24381         Likewise.
24383 2023-08-07  Jan Beulich  <jbeulich@suse.com>
24385         * config/i386/sse.md (xop_phadd<u>bw): Add "prefix",
24386         "prefix_extra", and "mode" attributes.
24387         (xop_phadd<u>bd): Likewise.
24388         (xop_phadd<u>bq): Likewise.
24389         (xop_phadd<u>wd): Likewise.
24390         (xop_phadd<u>wq): Likewise.
24391         (xop_phadd<u>dq): Likewise.
24392         (xop_phsubbw): Likewise.
24393         (xop_phsubwd): Likewise.
24394         (xop_phsubdq): Likewise.
24395         (xop_rotl<mode>3): Add "prefix" and "prefix_extra" attributes.
24396         (xop_rotr<mode>3): Likewise.
24397         (xop_frcz<mode>2): Likewise.
24398         (*xop_vmfrcz<mode>2): Likewise.
24399         (xop_vrotl<mode>3): Add "prefix" attribute. Change
24400         "prefix_extra" to 1.
24401         (xop_sha<mode>3): Likewise.
24402         (xop_shl<mode>3): Likewise.
24404 2023-08-07  Jan Beulich  <jbeulich@suse.com>
24406         * config/i386/sse.md
24407         (*<avx512>_eq<mode>3<mask_scalar_merge_name>_1): Drop
24408         "prefix_extra".
24409         (avx512dq_vextract<shuffletype>64x2_1_mask): Likewise.
24410         (*avx512dq_vextract<shuffletype>64x2_1): Likewise.
24411         (avx512f_vextract<shuffletype>32x4_1_mask): Likewise.
24412         (*avx512f_vextract<shuffletype>32x4_1): Likewise.
24413         (vec_extract_lo_<mode>_mask [AVX512 forms]): Likewise.
24414         (vec_extract_lo_<mode> [AVX512 forms]): Likewise.
24415         (vec_extract_hi_<mode>_mask [AVX512 forms]): Likewise.
24416         (vec_extract_hi_<mode> [AVX512 forms]): Likewise.
24417         (@vec_extract_lo_<mode> [AVX512 forms]): Likewise.
24418         (@vec_extract_hi_<mode> [AVX512 forms]): Likewise.
24419         (vec_extract_lo_v64qi): Likewise.
24420         (vec_extract_hi_v64qi): Likewise.
24421         (*vec_widen_umult_even_v16si<mask_name>): Likewise.
24422         (*vec_widen_smult_even_v16si<mask_name>): Likewise.
24423         (*avx512f_<code><mode>3<mask_name>): Likewise.
24424         (*vec_extractv4ti): Likewise.
24425         (avx512bw_<code>v32qiv32hi2<mask_name>): Likewise.
24426         (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): Likewise.
24427         Add "length_immediate".
24429 2023-08-07  Jan Beulich  <jbeulich@suse.com>
24431         * config/i386/i386.md (@rdrand<mode>): Add "prefix_0f". Drop
24432         "prefix_extra".
24433         (@rdseed<mode>): Likewise.
24434         * config/i386/mmx.md (<code><mode>3 [smaxmin and umaxmin cases]):
24435         Adjust "prefix_extra".
24436         * config/i386/sse.md (@vec_set<mode>_0): Likewise.
24437         (*sse4_1_<code><mode>3<mask_name>): Likewise.
24438         (*avx2_eq<mode>3): Likewise.
24439         (avx2_gt<mode>3): Likewise.
24440         (<sse2p4_1>_pinsr<ssemodesuffix>): Likewise.
24441         (*vec_extract<mode>): Likewise.
24442         (<vi8_sse4_1_avx2_avx512>_movntdqa): Likewise.
24444 2023-08-07  Jan Beulich  <jbeulich@suse.com>
24446         * config/i386/i386.md (rd<fsgs>base<mode>): Add "prefix_0f" and
24447         "prefix_rep". Drop "prefix_extra".
24448         (wr<fsgs>base<mode>): Likewise.
24449         (ptwrite<mode>): Likewise.
24451 2023-08-07  Jan Beulich  <jbeulich@suse.com>
24453         * config/i386/i386.md (isa): Move up.
24454         (length_immediate): Handle "fma4".
24455         (prefix): Handle "ssemuladd".
24456         * config/i386/sse.md (*fma_fmadd_<mode>): Add "prefix" attribute.
24457         (<sd_mask_codefor>fma_fmadd_<mode><sd_maskz_name><round_name>):
24458         Likewise.
24459         (<avx512>_fmadd_<mode>_mask<round_name>): Likewise.
24460         (<avx512>_fmadd_<mode>_mask3<round_name>): Likewise.
24461         (<sd_mask_codefor>fma_fmsub_<mode><sd_maskz_name><round_name>):
24462         Likewise.
24463         (<avx512>_fmsub_<mode>_mask<round_name>): Likewise.
24464         (<avx512>_fmsub_<mode>_mask3<round_name>): Likewise.
24465         (*fma_fnmadd_<mode>): Likewise.
24466         (<sd_mask_codefor>fma_fnmadd_<mode><sd_maskz_name><round_name>):
24467         Likewise.
24468         (<avx512>_fnmadd_<mode>_mask<round_name>): Likewise.
24469         (<avx512>_fnmadd_<mode>_mask3<round_name>): Likewise.
24470         (<sd_mask_codefor>fma_fnmsub_<mode><sd_maskz_name><round_name>):
24471         Likewise.
24472         (<avx512>_fnmsub_<mode>_mask<round_name>): Likewise.
24473         (<avx512>_fnmsub_<mode>_mask3<round_name>): Likewise.
24474         (<sd_mask_codefor>fma_fmaddsub_<mode><sd_maskz_name><round_name>):
24475         Likewise.
24476         (<avx512>_fmaddsub_<mode>_mask<round_name>): Likewise.
24477         (<avx512>_fmaddsub_<mode>_mask3<round_name>): Likewise.
24478         (<sd_mask_codefor>fma_fmsubadd_<mode><sd_maskz_name><round_name>):
24479         Likewise.
24480         (<avx512>_fmsubadd_<mode>_mask<round_name>): Likewise.
24481         (<avx512>_fmsubadd_<mode>_mask3<round_name>): Likewise.
24482         (*fmai_fmadd_<mode>): Likewise.
24483         (*fmai_fmsub_<mode>): Likewise.
24484         (*fmai_fnmadd_<mode><round_name>): Likewise.
24485         (*fmai_fnmsub_<mode><round_name>): Likewise.
24486         (avx512f_vmfmadd_<mode>_mask<round_name>): Likewise.
24487         (avx512f_vmfmadd_<mode>_mask3<round_name>): Likewise.
24488         (avx512f_vmfmadd_<mode>_maskz_1<round_name>): Likewise.
24489         (*avx512f_vmfmsub_<mode>_mask<round_name>): Likewise.
24490         (avx512f_vmfmsub_<mode>_mask3<round_name>): Likewise.
24491         (*avx512f_vmfmsub_<mode>_maskz_1<round_name>): Likewise.
24492         (avx512f_vmfnmadd_<mode>_mask<round_name>): Likewise.
24493         (avx512f_vmfnmadd_<mode>_mask3<round_name>): Likewise.
24494         (avx512f_vmfnmadd_<mode>_maskz_1<round_name>): Likewise.
24495         (*avx512f_vmfnmsub_<mode>_mask<round_name>): Likewise.
24496         (*avx512f_vmfnmsub_<mode>_mask3<round_name>): Likewise.
24497         (*avx512f_vmfnmsub_<mode>_maskz_1<round_name>): Likewise.
24498         (*fma4i_vmfmadd_<mode>): Likewise.
24499         (*fma4i_vmfmsub_<mode>): Likewise.
24500         (*fma4i_vmfnmadd_<mode>): Likewise.
24501         (*fma4i_vmfnmsub_<mode>): Likewise.
24502         (fma_<complexopname>_<mode><sdc_maskz_name><round_name>): Likewise.
24503         (<avx512>_<complexopname>_<mode>_mask<round_name>): Likewise.
24504         (avx512fp16_fma_<complexopname>sh_v8hf<mask_scalarcz_name><round_scalarcz_name>):
24505         Likewise.
24506         (avx512fp16_<complexopname>sh_v8hf_mask<round_name>): Likewise.
24507         (xop_p<macs><ssemodesuffix><ssemodesuffix>): Likewise.
24508         (xop_p<macs>dql): Likewise.
24509         (xop_p<macs>dqh): Likewise.
24510         (xop_p<macs>wd): Likewise.
24511         (xop_p<madcs>wd): Likewise.
24512         (fma_<complexpairopname>_<mode>_pair): Likewise. Add "mode" attribute.
24514 2023-08-07  Jan Beulich  <jbeulich@suse.com>
24516         * config/i386/i386.md (length_immediate): Handle "sse4arg".
24517         (prefix): Likewise.
24518         (*xop_pcmov_<mode>): Add "mode" attribute.
24519         * config/i386/mmx.md (*xop_maskcmp<mode>3): Drop "prefix_data16",
24520         "prefix_rep", "prefix_extra", and "length_immediate" attributes.
24521         (*xop_maskcmp_uns<mode>3): Likewise. Switch "type" to "sse4arg".
24522         (*xop_pcmov_<mode>): Add "mode" attribute.
24523         * config/i386/sse.md (xop_pcmov_<mode><avxsizesuffix>): Add "mode"
24524         attribute.
24525         (xop_maskcmp<mode>3): Drop "prefix_data16", "prefix_rep",
24526         "prefix_extra", and "length_immediate" attributes.
24527         (xop_maskcmp_uns<mode>3): Likewise. Switch "type" to "sse4arg".
24528         (xop_maskcmp_uns2<mode>3): Drop "prefix_data16", "prefix_extra",
24529         and "length_immediate" attributes. Switch "type" to "sse4arg".
24530         (xop_pcom_tf<mode>3): Likewise.
24531         (xop_vpermil2<mode>3): Drop "length_immediate" attribute.
24533 2023-08-07  Jan Beulich  <jbeulich@suse.com>
24535         * config/i386/i386.md (prefix_extra): Correct comment. Fold
24536         cases yielding 2 into ones yielding 1.
24538 2023-08-07  Jan Hubicka  <jh@suse.cz>
24540         PR tree-optimization/106293
24541         * tree-vect-loop-manip.cc (vect_loop_versioning): Fix profile update.
24542         * tree-vect-loop.cc (vect_transform_loop): Likewise.
24544 2023-08-07  Andrew Pinski  <apinski@marvell.com>
24546         PR tree-optimization/96695
24547         * match.pd (min_value, max_value): Extend to
24548         pointer types too.
24550 2023-08-06  Jan Hubicka  <jh@suse.cz>
24552         * config/i386/cpuid.h (__get_cpuid_count, __get_cpuid_max): Add
24553         __builtin_expect that CPU likely supports cpuid.
24555 2023-08-06  Jan Hubicka  <jh@suse.cz>
24557         * tree-loop-distribution.cc (loop_distribution::execute): Disable
24558         distribution for loops with estimated iterations 0.
24560 2023-08-06  Jan Hubicka  <jh@suse.cz>
24562         * tree-vect-loop-manip.cc (vect_do_peeling): Fix profile update of peeled epilogues.
24564 2023-08-04  Xiao Zeng  <zengxiao@eswincomputing.com>
24566         * config/riscv/riscv.cc (riscv_expand_conditional_move): Recognize
24567         more Zicond patterns.  Fix whitespace typo.
24568         (riscv_rtx_costs): Remove accidental code duplication.
24569         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
24571 2023-08-04  Yan Simonaytes  <simonaytes.yan@ispras.ru>
24573         PR target/110202
24574         * config/i386/i386-protos.h
24575         (vpternlog_redundant_operand_mask): Declare.
24576         (substitute_vpternlog_operands): Declare.
24577         * config/i386/i386.cc
24578         (vpternlog_redundant_operand_mask): New helper.
24579         (substitute_vpternlog_operands): New function.  Use them...
24580         * config/i386/sse.md: ... here in new VPTERNLOG define_splits.
24582 2023-08-04  Roger Sayle  <roger@nextmovesoftware.com>
24584         * expmed.cc (extract_bit_field_1): Document that an UNSIGNEDP
24585         value of -1 is equivalent to don't care.
24586         (extract_integral_bit_field): Indicate that we don't require
24587         the most significant word to be zero extended, if we're about
24588         to sign extend it.
24589         (extract_fixed_bit_field_1): Document that an UNSIGNEDP value
24590         of -1 is equivalent to don't care.  Don't clear the most
24591         significant bits with AND mask when UNSIGNEDP is -1.
24593 2023-08-04  Roger Sayle  <roger@nextmovesoftware.com>
24595         * config/i386/sse.md (define_split): Convert highpart:DF extract
24596         from V2DFmode register into a sse2_storehpd instruction.
24597         (define_split): Likewise, convert lowpart:DF extract from V2DF
24598         register into a sse2_storelpd instruction.
24600 2023-08-04  Qing Zhao  <qing.zhao@oracle.com>
24602         * doc/invoke.texi (-Wflex-array-member-not-at-end): Document
24603         new option.
24605 2023-08-04  Vladimir N. Makarov  <vmakarov@redhat.com>
24607         * lra-lives.cc (process_bb_lives): Check input insn pattern hard regs
24608         against early clobber hard regs.
24610 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
24612         * doc/extend.texi: Document it.
24614 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
24616         PR target/106346
24617         * config/aarch64/aarch64-simd.md (vec_widen_<sur>shiftl_lo_<mode>,
24618         vec_widen_<sur>shiftl_hi_<mode>): Remove.
24619         (aarch64_<sur>shll<mode>_internal): Renamed to...
24620         (aarch64_<su>shll<mode>): .. This.
24621         (aarch64_<sur>shll2<mode>_internal): Renamed to...
24622         (aarch64_<su>shll2<mode>): .. This.
24623         (aarch64_<sur>shll_n<mode>, aarch64_<sur>shll2_n<mode>): Re-use new
24624         optabs.
24625         * config/aarch64/constraints.md (D2, DL): New.
24626         * config/aarch64/predicates.md (aarch64_simd_shll_imm_vec): New.
24628 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
24630         * gensupport.cc (conlist): Support length 0 attribute.
24632 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
24634         * config/aarch64/aarch64.cc (aarch64_bool_compound_p): New.
24635         (aarch64_adjust_stmt_cost, aarch64_vector_costs::count_ops): Use it.
24637 2023-08-04  Tamar Christina  <tamar.christina@arm.com>
24639         * config/aarch64/aarch64.cc (aarch64_multiply_add_p): Update handling
24640         of constants.
24641         (aarch64_adjust_stmt_cost): Use it.
24642         (aarch64_vector_costs::count_ops): Likewise.
24643         (aarch64_vector_costs::add_stmt_cost): Pass vinfo to
24644         aarch64_adjust_stmt_cost.
24646 2023-08-04  Richard Biener  <rguenther@suse.de>
24648         PR tree-optimization/110838
24649         * tree-vect-patterns.cc (vect_recog_over_widening_pattern):
24650         Fix right-shift value sanitizing.  Properly emit external
24651         def mangling in the preheader rather than in the pattern
24652         def sequence where it will fail vectorizing.
24654 2023-08-04  Matthew Malcomson  <matthew.malcomson@arm.com>
24656         PR middle-end/110316
24657         PR middle-end/9903
24658         * timevar.cc (NANOSEC_PER_SEC, TICKS_TO_NANOSEC,
24659         CLOCKS_TO_NANOSEC, nanosec_to_floating_sec, percent_of): New.
24660         (TICKS_TO_MSEC, CLOCKS_TO_MSEC): Remove these macros.
24661         (timer::validate_phases): Use integral arithmetic to check
24662         validity.
24663         (timer::print_row, timer::print): Convert from integral
24664         nanoseconds to floating point seconds before printing.
24665         (timer::all_zero): Change limit to nanosec count instead of
24666         fractional count of seconds.
24667         (make_json_for_timevar_time_def): Convert from integral
24668         nanoseconds to floating point seconds before recording.
24669         * timevar.h (struct timevar_time_def): Update all measurements
24670         to use uint64_t nanoseconds rather than seconds stored in a
24671         double.
24673 2023-08-04  Richard Biener  <rguenther@suse.de>
24675         PR tree-optimization/110838
24676         * match.pd (([rl]shift @0 out-of-bounds) -> zero): Restrict
24677         the arithmetic right-shift case to non-negative operands.
24679 2023-08-04  Pan Li  <pan2.li@intel.com>
24681         Revert:
24682         2023-08-04  Pan Li  <pan2.li@intel.com>
24684         * config/riscv/riscv-vector-builtins-bases.cc
24685         (class vfmacc_frm): New class for vfmacc frm.
24686         (vfmacc_frm_obj): New declaration.
24687         (BASE): Ditto.
24688         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24689         * config/riscv/riscv-vector-builtins-functions.def
24690         (vfmacc_frm): New function definition.
24691         * config/riscv/riscv-vector-builtins.cc
24692         (function_expander::use_ternop_insn): Add frm operand support.
24693         * config/riscv/vector.md: Add vfmuladd to frm_mode.
24695 2023-08-04  Pan Li  <pan2.li@intel.com>
24697         Revert:
24698         2023-08-04  Pan Li  <pan2.li@intel.com>
24700         * config/riscv/riscv-vector-builtins-bases.cc
24701         (class vfnmacc_frm): New class for vfnmacc.
24702         (vfnmacc_frm_obj): New declaration.
24703         (BASE): Ditto.
24704         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24705         * config/riscv/riscv-vector-builtins-functions.def
24706         (vfnmacc_frm): New function definition.
24708 2023-08-04  Pan Li  <pan2.li@intel.com>
24710         Revert:
24711         2023-08-04  Pan Li  <pan2.li@intel.com>
24713         * config/riscv/riscv-vector-builtins-bases.cc
24714         (class vfmsac_frm): New class for vfmsac frm.
24715         (vfmsac_frm_obj): New declaration.
24716         (BASE): Ditto.
24717         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24718         * config/riscv/riscv-vector-builtins-functions.def
24719         (vfmsac_frm): New function definition.
24721 2023-08-04  Pan Li  <pan2.li@intel.com>
24723         Revert:
24724         2023-08-04  Pan Li  <pan2.li@intel.com>
24726         * config/riscv/riscv-vector-builtins-bases.cc
24727         (class vfnmsac_frm): New class for vfnmsac frm.
24728         (vfnmsac_frm_obj): New declaration.
24729         (BASE): Ditto.
24730         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24731         * config/riscv/riscv-vector-builtins-functions.def
24732         (vfnmsac_frm): New function definition.
24734 2023-08-04  Georg-Johann Lay  <avr@gjlay.de>
24736         * config/avr/avr-mcus.def (avr64dd14, avr64dd20, avr64dd28, avr64dd32)
24737         (avr64ea28, avr64ea32, avr64ea48, attiny424, attiny426, attiny427)
24738         (attiny824, attiny826, attiny827, attiny1624, attiny1626, attiny1627)
24739         (attiny3224, attiny3226, attiny3227, avr16dd14, avr16dd20, avr16dd28)
24740         (avr16dd32, avr32dd14, avr32dd20, avr32dd28, avr32dd32)
24741         (attiny102, attiny104): New devices.
24742         * doc/avr-mmcu.texi: Regenerate.
24744 2023-08-04  Georg-Johann Lay  <avr@gjlay.de>
24746         * config/avr/avr-mcus.def (avr128d*, avr64d*): Fix their FLASH_SIZE
24747         and PM_OFFSET entries.
24749 2023-08-04  Andrew Pinski  <apinski@marvell.com>
24751         PR tree-optimization/110874
24752         * gimple-match-head.cc (gimple_bit_not_with_nop): New declaration.
24753         (gimple_maybe_cmp): Likewise.
24754         (gimple_bitwise_inverted_equal_p): Rewrite to use gimple_bit_not_with_nop
24755         and gimple_maybe_cmp instead of being recursive.
24756         * match.pd (bit_not_with_nop): New match pattern.
24757         (maybe_cmp): Likewise.
24759 2023-08-04  Drew Ross  <drross@redhat.com>
24761         PR middle-end/101955
24762         * match.pd ((signed x << c) >> c): New canonicalization.
24764 2023-08-04  Pan Li  <pan2.li@intel.com>
24766         * config/riscv/riscv-vector-builtins-bases.cc
24767         (class vfnmsac_frm): New class for vfnmsac frm.
24768         (vfnmsac_frm_obj): New declaration.
24769         (BASE): Ditto.
24770         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24771         * config/riscv/riscv-vector-builtins-functions.def
24772         (vfnmsac_frm): New function definition.
24774 2023-08-04  Pan Li  <pan2.li@intel.com>
24776         * config/riscv/riscv-vector-builtins-bases.cc
24777         (class vfmsac_frm): New class for vfmsac frm.
24778         (vfmsac_frm_obj): New declaration.
24779         (BASE): Ditto.
24780         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24781         * config/riscv/riscv-vector-builtins-functions.def
24782         (vfmsac_frm): New function definition.
24784 2023-08-04  Pan Li  <pan2.li@intel.com>
24786         * config/riscv/riscv-vector-builtins-bases.cc
24787         (class vfnmacc_frm): New class for vfnmacc.
24788         (vfnmacc_frm_obj): New declaration.
24789         (BASE): Ditto.
24790         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24791         * config/riscv/riscv-vector-builtins-functions.def
24792         (vfnmacc_frm): New function definition.
24794 2023-08-04  Hao Liu  <hliu@os.amperecomputing.com>
24796         PR target/110625
24797         * config/aarch64/aarch64.cc (aarch64_force_single_cycle): check
24798         STMT_VINFO_REDUC_DEF to avoid failures in info_for_reduction.
24800 2023-08-04  Pan Li  <pan2.li@intel.com>
24802         * config/riscv/riscv-vector-builtins-bases.cc
24803         (class vfmacc_frm): New class for vfmacc frm.
24804         (vfmacc_frm_obj): New declaration.
24805         (BASE): Ditto.
24806         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24807         * config/riscv/riscv-vector-builtins-functions.def
24808         (vfmacc_frm): New function definition.
24809         * config/riscv/riscv-vector-builtins.cc
24810         (function_expander::use_ternop_insn): Add frm operand support.
24811         * config/riscv/vector.md: Add vfmuladd to frm_mode.
24813 2023-08-04  Pan Li  <pan2.li@intel.com>
24815         * config/riscv/riscv-vector-builtins-bases.cc
24816         (vfwmul_frm_obj): New declaration.
24817         (vfwmul_frm): Ditto.
24818         * config/riscv/riscv-vector-builtins-bases.h:
24819         (vfwmul_frm): Ditto.
24820         * config/riscv/riscv-vector-builtins-functions.def
24821         (vfwmul_frm): New function definition.
24822         * config/riscv/vector.md: (frm_mode) Add vfwmul to frm_mode.
24824 2023-08-04  Pan Li  <pan2.li@intel.com>
24826         * config/riscv/riscv-vector-builtins-bases.cc
24827         (binop_frm): New declaration.
24828         (reverse_binop_frm): Likewise.
24829         (BASE): Likewise.
24830         * config/riscv/riscv-vector-builtins-bases.h:
24831         (vfdiv_frm): New extern declaration.
24832         (vfrdiv_frm): Likewise.
24833         * config/riscv/riscv-vector-builtins-functions.def
24834         (vfdiv_frm): New function definition.
24835         (vfrdiv_frm): Likewise.
24836         * config/riscv/vector.md: Add vfdiv to frm_mode.
24838 2023-08-03  Jan Hubicka  <jh@suse.cz>
24840         * tree-cfg.cc (print_loop_info): Print entry count.
24842 2023-08-03  Jan Hubicka  <jh@suse.cz>
24844         * tree-ssa-loop-split.cc (split_loop): Update estimated iteration counts.
24846 2023-08-03  Jan Hubicka  <jh@suse.cz>
24848         PR bootstrap/110857
24849         * cfgloopmanip.cc (scale_loop_profile): (Un)initialize
24850         unadjusted_exit_count.
24852 2023-08-03  Aldy Hernandez  <aldyh@redhat.com>
24854         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Read global
24855         value/mask.
24857 2023-08-03  Xiao Zeng  <zengxiao@eswincomputing.com>
24859         * config/riscv/riscv.cc (riscv_expand_conditional_move): Recognize
24860         various Zicond patterns.
24861         * config/riscv/riscv.md (mov<mode>cc): Allow TARGET_ZICOND.  Use
24862         sfb_alu_operand for both arms of the conditional move.
24863         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
24865 2023-08-03  Cupertino Miranda  <cupertino.miranda@oracle.com>
24867         PR target/107844
24868         PR target/107479
24869         PR target/107480
24870         PR target/107481
24871         * config.gcc: Added core-builtins.cc and .o files.
24872         * config/bpf/bpf-passes.def: Removed file.
24873         * config/bpf/bpf-protos.h (bpf_add_core_reloc,
24874         bpf_replace_core_move_operands): New prototypes.
24875         * config/bpf/bpf.cc (enum bpf_builtins, is_attr_preserve_access,
24876         maybe_make_core_relo, bpf_core_field_info, bpf_core_compute,
24877         bpf_core_get_index, bpf_core_new_decl, bpf_core_walk,
24878         bpf_is_valid_preserve_field_info_arg, is_attr_preserve_access,
24879         handle_attr_preserve, pass_data_bpf_core_attr, pass_bpf_core_attr):
24880         Removed.
24881         (def_builtin, bpf_expand_builtin, bpf_resolve_overloaded_builtin): Changed.
24882         * config/bpf/bpf.md (define_expand mov<MM:mode>): Changed.
24883         (mov_reloc_core<mode>): Added.
24884         * config/bpf/core-builtins.cc (struct cr_builtin, enum
24885         cr_decision struct cr_local, struct cr_final, struct
24886         core_builtin_helpers, enum bpf_plugin_states): Added types.
24887         (builtins_data, core_builtin_helpers, core_builtin_type_defs):
24888         Added variables.
24889         (allocate_builtin_data, get_builtin-data, search_builtin_data,
24890         remove_parser_plugin, compare_same_kind, compare_same_ptr_expr,
24891         compare_same_ptr_type, is_attr_preserve_access, core_field_info,
24892         bpf_core_get_index, compute_field_expr,
24893         pack_field_expr_for_access_index, pack_field_expr_for_preserve_field,
24894         process_field_expr, pack_enum_value, process_enum_value, pack_type,
24895         process_type, bpf_require_core_support, make_core_relo, read_kind,
24896         kind_access_index, kind_preserve_field_info, kind_enum_value,
24897         kind_type_id, kind_preserve_type_info, get_core_builtin_fndecl_for_type,
24898         bpf_handle_plugin_finish_type, bpf_init_core_builtins,
24899         construct_builtin_core_reloc, bpf_resolve_overloaded_core_builtin,
24900         bpf_expand_core_builtin, bpf_add_core_reloc,
24901         bpf_replace_core_move_operands): Added functions.
24902         * config/bpf/core-builtins.h (enum bpf_builtins): Added.
24903         (bpf_init_core_builtins, bpf_expand_core_builtin,
24904         bpf_resolve_overloaded_core_builtin): Added functions.
24905         * config/bpf/coreout.cc (struct bpf_core_extra): Added.
24906         (bpf_core_reloc_add, output_asm_btfext_core_reloc): Changed.
24907         * config/bpf/coreout.h (bpf_core_reloc_add) Changed prototype.
24908         * config/bpf/t-bpf: Added core-builtins.o.
24909         * doc/extend.texi: Added documentation for new BPF builtins.
24911 2023-08-03  Andrew MacLeod  <amacleod@redhat.com>
24913         * gimple-range-fold.cc (fold_using_range::range_of_range_op): Add
24914         ranges to the call to relation_fold_and_or.
24915         (fold_using_range::relation_fold_and_or): Add op1 and op2 ranges.
24916         (fur_source::register_outgoing_edges): Add op1 and op2 ranges.
24917         * gimple-range-fold.h (relation_fold_and_or): Adjust params.
24918         * gimple-range-gori.cc (gori_compute::compute_operand_range): Add
24919         a varying op1 and op2 to call.
24920         * range-op-float.cc (range_operator::op1_op2_relation): New dafaults.
24921         (operator_equal::op1_op2_relation): New float version.
24922         (operator_not_equal::op1_op2_relation): Ditto.
24923         (operator_lt::op1_op2_relation): Ditto.
24924         (operator_le::op1_op2_relation): Ditto.
24925         (operator_gt::op1_op2_relation): Ditto.
24926         (operator_ge::op1_op2_relation) Ditto.
24927         * range-op-mixed.h (operator_equal::op1_op2_relation): New float
24928         prototype.
24929         (operator_not_equal::op1_op2_relation): Ditto.
24930         (operator_lt::op1_op2_relation): Ditto.
24931         (operator_le::op1_op2_relation): Ditto.
24932         (operator_gt::op1_op2_relation): Ditto.
24933         (operator_ge::op1_op2_relation): Ditto.
24934         * range-op.cc (range_op_handler::op1_op2_relation): Dispatch new
24935         variations.
24936         (range_operator::op1_op2_relation): Add extra params.
24937         (operator_equal::op1_op2_relation): Ditto.
24938         (operator_not_equal::op1_op2_relation): Ditto.
24939         (operator_lt::op1_op2_relation): Ditto.
24940         (operator_le::op1_op2_relation): Ditto.
24941         (operator_gt::op1_op2_relation): Ditto.
24942         (operator_ge::op1_op2_relation): Ditto.
24943         * range-op.h (range_operator): New prototypes.
24944         (range_op_handler): Ditto.
24946 2023-08-03  Andrew MacLeod  <amacleod@redhat.com>
24948         * gimple-range-gori.cc (gori_compute::compute_operand1_range):
24949         Use identity relation.
24950         (gori_compute::compute_operand2_range): Ditto.
24951         * value-relation.cc (get_identity_relation): New.
24952         * value-relation.h (get_identity_relation): New prototype.
24954 2023-08-03  Andrew MacLeod  <amacleod@redhat.com>
24956         * value-range.h (Value_Range::set_varying): Set the type.
24957         (Value_Range::set_zero): Ditto.
24958         (Value_Range::set_nonzero): Ditto.
24960 2023-08-03  Jeff Law  <jeffreyalaw@gmail.com>
24962         * config/riscv/riscv.cc (riscv_rtx_costs): Remove errant hunk from
24963         recent commit.
24965 2023-08-03  Pan Li  <pan2.li@intel.com>
24967         * config/riscv/riscv-vector-builtins-bases.cc: Add vfsub.
24969 2023-08-03  Richard Sandiford  <richard.sandiford@arm.com>
24971         * poly-int.h (can_div_trunc_p): Succeed for more boundary conditions.
24973 2023-08-03  Richard Biener  <rguenther@suse.de>
24975         PR tree-optimization/110838
24976         * tree-vect-patterns.cc (vect_recog_over_widening_pattern):
24977         Adjust the shift operand of RSHIFT_EXPRs.
24979 2023-08-03  Richard Biener  <rguenther@suse.de>
24981         PR tree-optimization/110702
24982         * tree-ssa-loop-ivopts.cc (rewrite_use_address): When
24983         we created a NULL pointer based access rewrite that to
24984         a LEA.
24986 2023-08-03  Richard Biener  <rguenther@suse.de>
24988         * tree-ssa-sink.cc: Include tree-ssa-live.h.
24989         (pass_sink_code::execute): Instantiate virtual_operand_live
24990         and pass it down.
24991         (sink_code_in_bb): Pass down virtual_operand_live.
24992         (statement_sink_location): Get virtual_operand_live and
24993         verify we are not sinking loads across stores by looking up
24994         the live virtual operand at the sink location.
24996 2023-08-03  Richard Biener  <rguenther@suse.de>
24998         * tree-ssa-live.h (class virtual_operand_live): New.
24999         * tree-ssa-live.cc (virtual_operand_live::init): New.
25000         (virtual_operand_live::get_live_in): Likewise.
25001         (virtual_operand_live::get_live_out): Likewise.
25003 2023-08-03  Richard Biener  <rguenther@suse.de>
25005         * passes.def: Exchange loop splitting and final value
25006         replacement passes.
25008 2023-08-03  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
25010         * config/s390/s390.cc (expand_perm_as_a_vlbr_vstbr_candidate):
25011         New function which handles bswap patterns for vec_perm_const.
25012         (vectorize_vec_perm_const_1): Call new function.
25013         * config/s390/vector.md (*bswap<mode>): Fix operands in output
25014         template.
25015         (*vstbr<mode>): New insn.
25017 2023-08-03  Alexandre Oliva  <oliva@adacore.com>
25019         * config/vxworks-smp.opt: New.  Introduce -msmp.
25020         * config.gcc: Enable it on powerpc* vxworks prior to 7r*.
25021         * config/rs6000/vxworks.h (STARTFILE_PREFIX_SPEC): Choose
25022         lib_smp when -msmp is present in the command line.
25023         * doc/invoke.texi: Document it.
25025 2023-08-03  Yanzhang Wang  <yanzhang.wang@intel.com>
25027         * config/riscv/riscv.cc (riscv_save_reg_p): Save ra for leaf
25028         when enabling -mno-omit-leaf-frame-pointer
25029         (riscv_option_override): Override omit-frame-pointer.
25030         (riscv_frame_pointer_required): Save s0 for non-leaf function
25031         (TARGET_FRAME_POINTER_REQUIRED): Override defination
25032         * config/riscv/riscv.opt: Add option support.
25034 2023-08-03  Roger Sayle  <roger@nextmovesoftware.com>
25036         PR target/110792
25037         * config/i386/i386.md (<any_rotate>ti3): For rotations by 64 bits
25038         place operand in a register before gen_<insn>64ti2_doubleword.
25039         (<any_rotate>di3): Likewise, for rotations by 32 bits, place
25040         operand in a register before gen_<insn>32di2_doubleword.
25041         (<any_rotate>32di2_doubleword): Constrain operand to be in register.
25042         (<any_rotate>64ti2_doubleword): Likewise.
25044 2023-08-03  Pan Li  <pan2.li@intel.com>
25046         * config/riscv/riscv-vector-builtins-bases.cc
25047         (vfmul_frm_obj): New declaration.
25048         (Base): Likewise.
25049         * config/riscv/riscv-vector-builtins-bases.h: Likewise.
25050         * config/riscv/riscv-vector-builtins-functions.def
25051         (vfmul_frm): New function definition.
25052         * config/riscv/vector.md: Add vfmul to frm_mode.
25054 2023-08-03  Andrew Pinski  <apinski@marvell.com>
25056         * match.pd (`~X & X`): Check that the types match.
25057         (`~x | x`, `~x ^ x`): Likewise.
25059 2023-08-03  Pan Li  <pan2.li@intel.com>
25061         * config/riscv/riscv-vector-builtins-bases.h: Remove
25062         redudant declaration.
25064 2023-08-03  Pan Li  <pan2.li@intel.com>
25066         * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add
25067         vfwsub frm.
25068         * config/riscv/riscv-vector-builtins-bases.h: Add declaration.
25069         * config/riscv/riscv-vector-builtins-functions.def (vfwsub_frm):
25070         Add vfwsub function definitions.
25072 2023-08-02  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
25074         PR rtl-optimization/110867
25075         * combine.cc (simplify_compare_const): Try the optimization only
25076         in case the constant fits into the comparison mode.
25078 2023-08-02  Jeff Law  <jlaw@ventanamicro.com>
25080         * config/riscv/zicond.md: Remove incorrect zicond patterns and
25081         renumber/rename them.
25082         (zero.nez.<GPR:MODE><X:mode>.opt2): Fix output string.
25084 2023-08-02  Richard Biener  <rguenther@suse.de>
25086         * tree-phinodes.h (add_phi_node_to_bb): Remove.
25087         * tree-phinodes.cc  (add_phi_node_to_bb): Make static.
25089 2023-08-02  Jan Beulich  <jbeulich@suse.com>
25091         * config/i386/sse.md (vec_dupv2df<mask_name>): Fold the middle
25092         two of the alternatives.
25094 2023-08-02  Richard Biener  <rguenther@suse.de>
25096         PR tree-optimization/92335
25097         * tree-ssa-sink.cc (select_best_block): Before loop
25098         optimizations avoid sinking unconditional loads/stores
25099         in innermost loops to conditional executed places.
25101 2023-08-02  Andrew Pinski  <apinski@marvell.com>
25103         * gimple-match-head.cc (gimple_bitwise_inverted_equal_p): Valueize
25104         the comparison operands before comparing them.
25106 2023-08-02  Andrew Pinski  <apinski@marvell.com>
25108         * match.pd (`~X & X`, `~X | X`): Move over to
25109         use bitwise_inverted_equal_p, removing :c as bitwise_inverted_equal_p
25110         handles that already.
25111         Remove range test simplifications to true/false as they
25112         are now handled by these patterns.
25114 2023-08-02  Andrew Pinski  <apinski@marvell.com>
25116         * tree-ssa-phiopt.cc (match_simplify_replacement): Mark's cond
25117         statement's lhs and rhs to check if trivial dead.
25118         Rename inserted_exprs to exprs_maybe_dce; also move it so
25119         bitmap is not allocated if not needed.
25121 2023-08-02  Pan Li  <pan2.li@intel.com>
25123         * config/riscv/riscv-vector-builtins-bases.cc
25124         (class widen_binop_frm): New class for binop frm.
25125         (BASE): Add vfwadd_frm.
25126         * config/riscv/riscv-vector-builtins-bases.h: New declaration.
25127         * config/riscv/riscv-vector-builtins-functions.def
25128         (vfwadd_frm): New function definition.
25129         * config/riscv/riscv-vector-builtins-shapes.cc
25130         (BASE_NAME_MAX_LEN): New macro.
25131         (struct alu_frm_def): Leverage new base class.
25132         (struct build_frm_base): New build base for frm.
25133         (struct widen_alu_frm_def): New struct for widen alu frm.
25134         (SHAPE): Add widen_alu_frm shape.
25135         * config/riscv/riscv-vector-builtins-shapes.h: New declaration.
25136         * config/riscv/vector.md (frm_mode): Add vfwalu type.
25138 2023-08-02  Jan Hubicka  <jh@suse.cz>
25140         * cfgloop.h (loop_count_in): Declare.
25141         * cfgloopanal.cc (expected_loop_iterations_by_profile): Use count_in.
25142         (loop_count_in): Move here from ...
25143         * cfgloopmanip.cc (loop_count_in): ... here.
25144         (scale_loop_profile): Improve dumping; cast iteration bound to sreal.
25146 2023-08-02  Jan Hubicka  <jh@suse.cz>
25148         * cfg.cc (scale_strictly_dominated_blocks): New function.
25149         * cfg.h (scale_strictly_dominated_blocks): Declare.
25150         * tree-cfg.cc (fold_loop_internal_call): Fixup CFG profile.
25152 2023-08-02  Richard Biener  <rguenther@suse.de>
25154         PR rtl-optimization/110587
25155         * lra-spills.cc (return_regno_p): Remove.
25156         (regno_in_use_p): Likewise.
25157         (lra_final_code_change): Do not remove noop moves
25158         between hard registers.
25160 2023-08-02  liuhongt  <hongtao.liu@intel.com>
25162         PR target/81904
25163         * config/i386/sse.md (vec_fmaddsub<mode>4): Extend to vector
25164         HFmode, use mode iterator VFH instead.
25165         (vec_fmsubadd<mode>4): Ditto.
25166         (<sd_mask_codefor>fma_fmaddsub_<mode><sd_maskz_name><round_name>):
25167         Remove scalar mode from iterator, use VFH_AVX512VL instead.
25168         (<sd_mask_codefor>fma_fmsubadd_<mode><sd_maskz_name><round_name>):
25169         Ditto.
25171 2023-08-02  liuhongt  <hongtao.liu@intel.com>
25173         * config/i386/sse.md (*avx2_lddqu_inserti_to_bcasti): New
25174         pre_reload define_insn_and_split.
25176 2023-08-02  Xiao Zeng  <zengxiao@eswincomputing.com>
25178         * config/riscv/riscv.cc (riscv_rtx_costs): Add costing for
25179         using Zicond to implement some conditional moves.
25181 2023-08-02  Jeff Law  <jlaw@ventanamicro.com>
25183         * config/riscv/zicond.md: Use the X iterator instead of ANYI
25184         on the comparison input operands.
25186 2023-08-02  Xiao Zeng  <zengxiao@eswincomputing.com>
25188         * config/riscv/riscv.cc (riscv_rtx_costs, case IF_THEN_ELSE): Add
25189         Zicond costing.
25190         (case SET): For INSNs that just set a REG, take the cost from the
25191         SET_SRC.
25192         Co-authored-by: Jeff Law <jlaw@ventanamicro.com>
25194 2023-08-02  Hu, Lin1  <lin1.hu@intel.com>
25196         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_AMX_INT8_SET):
25197         Change OPTION_MASK_ISA2_AMX_TILE to OPTION_MASK_ISA2_AMX_TILE_SET.
25198         (OPTION_MASK_ISA2_AMX_BF16_SET): Ditto
25199         (OPTION_MASK_ISA2_AMX_FP16_SET): Ditto
25200         (OPTION_MASK_ISA2_AMX_COMPLEX_SET): Ditto
25201         (OPTION_MASK_ISA_ABM_SET):
25202         Change OPTION_MASK_ISA_POPCNT to OPTION_MASK_ISA_POPCNT_SET.
25204 2023-08-01  Andreas Krebbel  <krebbel@linux.ibm.com>
25206         * config/s390/s390.cc (s390_encode_section_info): Assume external
25207         symbols without explicit alignment to be unaligned if
25208         -munaligned-symbols has been specified.
25209         * config/s390/s390.opt (-munaligned-symbols): New option.
25211 2023-08-01  Richard Ball  <richard.ball@arm.com>
25213         * gimple-fold.cc (fold_ctor_reference):
25214         Add support for poly_int.
25216 2023-08-01  Georg-Johann Lay  <avr@gjlay.de>
25218         PR target/110220
25219         * config/avr/avr.cc (avr_optimize_casesi): Set JUMP_LABEL and
25220         LABEL_NUSES of new conditional branch instruction.
25222 2023-08-01  Jan Hubicka  <jh@suse.cz>
25224         * tree-vect-loop-manip.cc (vect_do_peeling): Fix profile update after
25225         constant prologue peeling.
25227 2023-08-01  Christophe Lyon  <christophe.lyon@linaro.org>
25229         * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Fix spelling.
25231 2023-08-01  Pan Li  <pan2.li@intel.com>
25232             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
25234         * config/riscv/riscv.cc (DYNAMIC_FRM_RTL): New macro.
25235         (STATIC_FRM_P): Ditto.
25236         (struct mode_switching_info): New struct for mode switching.
25237         (struct machine_function): Add new field mode switching.
25238         (riscv_emit_frm_mode_set): Add DYN_CALL emit.
25239         (riscv_frm_adjust_mode_after_call): New function for call mode.
25240         (riscv_frm_emit_after_call_in_bb_end): New function for emit
25241         insn when call as the end of bb.
25242         (riscv_frm_mode_needed): New function for frm mode needed.
25243         (frm_unknown_dynamic_p): Remove call check.
25244         (riscv_mode_needed): Extrac function for frm.
25245         (riscv_frm_mode_after): Add DYN_CALL after.
25246         (riscv_mode_entry): Remove backup rtl initialization.
25247         * config/riscv/vector.md (frm_mode): Add dyn_call.
25248         (fsrmsi_restore_exit): Rename to _volatile.
25249         (fsrmsi_restore_volatile): Likewise.
25251 2023-08-01  Pan Li  <pan2.li@intel.com>
25253         * config/riscv/riscv-vector-builtins-bases.cc
25254         (class reverse_binop_frm): Add new template for reversed frm.
25255         (vfsub_frm_obj): New obj.
25256         (vfrsub_frm_obj): Likewise.
25257         * config/riscv/riscv-vector-builtins-bases.h:
25258         (vfsub_frm): New declaration.
25259         (vfrsub_frm): Likewise.
25260         * config/riscv/riscv-vector-builtins-functions.def
25261         (vfsub_frm): New function define.
25262         (vfrsub_frm): Likewise.
25264 2023-08-01  Andrew Pinski  <apinski@marvell.com>
25266         PR tree-optimization/93044
25267         * match.pd (nested int casts): A truncation (to the same size or smaller)
25268         can always remove the inner cast.
25270 2023-07-31  Hamza Mahfooz  <someguy@effective-light.com>
25272         PR c/65213
25273         * doc/invoke.texi (-Wmissing-variable-declarations): Document
25274         new option.
25276 2023-07-31  Andrew Pinski  <apinski@marvell.com>
25278         PR tree-optimization/106164
25279         * match.pd (`a != b & a <= b`, `a != b & a >= b`,
25280         `a == b | a < b`, `a == b | a > b`): Handle these cases
25281         too.
25283 2023-07-31  Andrew Pinski  <apinski@marvell.com>
25285         PR tree-optimization/106164
25286         * match.pd: Extend the `(X CMP1 CST1) AND/IOR (X CMP2 CST2)`
25287         patterns to support `(X CMP1 Y) AND/IOR (X CMP2 Y)`.
25289 2023-07-31  Andrew Pinski  <apinski@marvell.com>
25291         PR tree-optimization/100864
25292         * generic-match-head.cc (bitwise_inverted_equal_p): New function.
25293         * gimple-match-head.cc (bitwise_inverted_equal_p): New macro.
25294         (gimple_bitwise_inverted_equal_p): New function.
25295         * match.pd ((~x | y) & x): Use bitwise_inverted_equal_p
25296         instead of direct matching bit_not.
25298 2023-07-31  Costas Argyris  <costas.argyris@gmail.com>
25300         PR driver/77576
25301         * gcc-ar.cc (main): Expand argv and use
25302         temporary response file to call ar if any
25303         expansions were made.
25305 2023-07-31  Andrew MacLeod  <amacleod@redhat.com>
25307         PR tree-optimization/110582
25308         * gimple-range-fold.cc (fur_list::get_operand): Do not use the
25309         range vector for non-ssa names.
25311 2023-07-31  David Malcolm  <dmalcolm@redhat.com>
25313         PR analyzer/109361
25314         * diagnostic-client-data-hooks.h (class sarif_object): New forward
25315         decl.
25316         (diagnostic_client_data_hooks::add_sarif_invocation_properties):
25317         New vfunc.
25318         * diagnostic-format-sarif.cc: Include "diagnostic-format-sarif.h".
25319         (class sarif_invocation): Inherit from sarif_object rather than
25320         json::object.
25321         (class sarif_result): Likewise.
25322         (class sarif_ice_notification): Likewise.
25323         (sarif_object::get_or_create_properties): New.
25324         (sarif_invocation::prepare_to_flush): Add "context" param.  Use it
25325         to call the context's add_sarif_invocation_properties hook.
25326         (sarif_builder::flush_to_file): Pass m_context to
25327         sarif_invocation::prepare_to_flush.
25328         * diagnostic-format-sarif.h: New header.
25329         * doc/invoke.texi (Developer Options): Clarify that -ftime-report
25330         writes to stderr.  Document that if SARIF diagnostic output is
25331         requested then any timing information is written in JSON form as
25332         part of the SARIF output, rather than to stderr.
25333         * timevar.cc: Include "json.h".
25334         (timer::named_items::m_hash_map): Split out type into...
25335         (timer::named_items::hash_map_t): ...this new typedef.
25336         (timer::named_items::make_json): New function.
25337         (timevar_diff): New function.
25338         (make_json_for_timevar_time_def): New function.
25339         (timer::timevar_def::make_json): New function.
25340         (timer::make_json): New function.
25341         * timevar.h (class json::value): New forward decl.
25342         (timer::make_json): New decl.
25343         (timer::timevar_def::make_json): New decl.
25344         * tree-diagnostic-client-data-hooks.cc: Include
25345         "diagnostic-format-sarif.h" and "timevar.h".
25346         (compiler_data_hooks::add_sarif_invocation_properties): New vfunc
25347         implementation.
25349 2023-07-31  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
25351         * combine.cc (simplify_compare_const): Narrow comparison of
25352         memory and constant.
25353         (try_combine): Adapt new function signature.
25354         (simplify_comparison): Adapt new function signature.
25356 2023-07-31  Kito Cheng  <kito.cheng@sifive.com>
25358         * config/riscv/riscv-v.cc (expand_vec_series): Drop unused
25359         variable.
25360         (expand_vector_init_insert_elems): Ditto.
25362 2023-07-31  Hao Liu  <hliu@os.amperecomputing.com>
25364         PR target/110625
25365         * config/aarch64/aarch64.cc (count_ops): Only '* count' for
25366         single_defuse_cycle while counting reduction_latency.
25368 2023-07-31  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25370         * internal-fn.def (DEF_INTERNAL_COND_FN): New macro.
25371         (DEF_INTERNAL_SIGNED_COND_FN): Ditto.
25372         (COND_ADD): Remove.
25373         (COND_SUB): Ditto.
25374         (COND_MUL): Ditto.
25375         (COND_DIV): Ditto.
25376         (COND_MOD): Ditto.
25377         (COND_RDIV): Ditto.
25378         (COND_MIN): Ditto.
25379         (COND_MAX): Ditto.
25380         (COND_FMIN): Ditto.
25381         (COND_FMAX): Ditto.
25382         (COND_AND): Ditto.
25383         (COND_IOR): Ditto.
25384         (COND_XOR): Ditto.
25385         (COND_SHL): Ditto.
25386         (COND_SHR): Ditto.
25387         (COND_FMA): Ditto.
25388         (COND_FMS): Ditto.
25389         (COND_FNMA): Ditto.
25390         (COND_FNMS): Ditto.
25391         (COND_NEG): Ditto.
25392         (COND_LEN_ADD): Ditto.
25393         (COND_LEN_SUB): Ditto.
25394         (COND_LEN_MUL): Ditto.
25395         (COND_LEN_DIV): Ditto.
25396         (COND_LEN_MOD): Ditto.
25397         (COND_LEN_RDIV): Ditto.
25398         (COND_LEN_MIN): Ditto.
25399         (COND_LEN_MAX): Ditto.
25400         (COND_LEN_FMIN): Ditto.
25401         (COND_LEN_FMAX): Ditto.
25402         (COND_LEN_AND): Ditto.
25403         (COND_LEN_IOR): Ditto.
25404         (COND_LEN_XOR): Ditto.
25405         (COND_LEN_SHL): Ditto.
25406         (COND_LEN_SHR): Ditto.
25407         (COND_LEN_FMA): Ditto.
25408         (COND_LEN_FMS): Ditto.
25409         (COND_LEN_FNMA): Ditto.
25410         (COND_LEN_FNMS): Ditto.
25411         (COND_LEN_NEG): Ditto.
25412         (ADD): New macro define.
25413         (SUB): Ditto.
25414         (MUL): Ditto.
25415         (DIV): Ditto.
25416         (MOD): Ditto.
25417         (RDIV): Ditto.
25418         (MIN): Ditto.
25419         (MAX): Ditto.
25420         (FMIN): Ditto.
25421         (FMAX): Ditto.
25422         (AND): Ditto.
25423         (IOR): Ditto.
25424         (XOR): Ditto.
25425         (SHL): Ditto.
25426         (SHR): Ditto.
25427         (FMA): Ditto.
25428         (FMS): Ditto.
25429         (FNMA): Ditto.
25430         (FNMS): Ditto.
25431         (NEG): Ditto.
25433 2023-07-31  Roger Sayle  <roger@nextmovesoftware.com>
25435         PR target/110843
25436         * config/i386/i386-features.cc (compute_convert_gain): Check
25437         TARGET_AVX512VL (not TARGET_AVX512F) when considering V2DImode
25438         and V4SImode rotates in STV.
25439         (general_scalar_chain::convert_rotate): Likewise.
25441 2023-07-31  Kito Cheng  <kito.cheng@sifive.com>
25443         * config/riscv/autovec.md (abs<mode>2): Remove `.require ()`.
25444         * config/riscv/riscv-protos.h (get_mask_mode): Update return
25445         type.
25446         * config/riscv/riscv-v.cc (rvv_builder::rvv_builder): Remove
25447         `.require ()`.
25448         (emit_vlmax_insn): Ditto.
25449         (emit_vlmax_fp_insn): Ditto.
25450         (emit_vlmax_ternary_insn): Ditto.
25451         (emit_vlmax_fp_ternary_insn): Ditto.
25452         (emit_nonvlmax_fp_ternary_tu_insn): Ditto.
25453         (emit_nonvlmax_insn): Ditto.
25454         (emit_vlmax_slide_insn): Ditto.
25455         (emit_nonvlmax_slide_tu_insn): Ditto.
25456         (emit_vlmax_merge_insn): Ditto.
25457         (emit_vlmax_masked_insn): Ditto.
25458         (emit_nonvlmax_masked_insn): Ditto.
25459         (emit_vlmax_masked_store_insn): Ditto.
25460         (emit_nonvlmax_masked_store_insn): Ditto.
25461         (emit_vlmax_masked_mu_insn): Ditto.
25462         (emit_nonvlmax_tu_insn): Ditto.
25463         (emit_nonvlmax_fp_tu_insn): Ditto.
25464         (emit_scalar_move_insn): Ditto.
25465         (emit_vlmax_compress_insn): Ditto.
25466         (emit_vlmax_reduction_insn): Ditto.
25467         (emit_vlmax_fp_reduction_insn): Ditto.
25468         (emit_nonvlmax_fp_reduction_insn): Ditto.
25469         (expand_vec_series): Ditto.
25470         (expand_vector_init_merge_repeating_sequence): Ditto.
25471         (expand_vec_perm): Ditto.
25472         (shuffle_merge_patterns): Ditto.
25473         (shuffle_compress_patterns): Ditto.
25474         (shuffle_decompress_patterns): Ditto.
25475         (expand_reduction): Ditto.
25476         (get_mask_mode): Update return type.
25477         * config/riscv/riscv.cc (riscv_get_mask_mode): Check vector type
25478         is valid, and use new get_mask_mode interface.
25480 2023-07-31  Pan Li  <pan2.li@intel.com>
25482         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_frm_def):
25483         Move rm suffix before mask.
25485 2023-07-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
25487         * config/riscv/autovec-vls.md (@vec_duplicate<mode>): New pattern.
25488         * config/riscv/riscv-v.cc (autovectorize_vector_modes): Add VLS autovec
25489         support.
25491 2023-07-29  Roger Sayle  <roger@nextmovesoftware.com>
25493         PR target/110790
25494         * config/i386/i386.md (extv<mode>): Use QImode for offsets.
25495         (extzv<mode>): Likewise.
25496         (insv<mode>): Likewise.
25497         (*testqi_ext_3): Likewise.
25498         (*btr<mode>_2): Likewise.
25499         (define_split): Likewise.
25500         (*btsq_imm): Likewise.
25501         (*btrq_imm): Likewise.
25502         (*btcq_imm): Likewise.
25503         (define_peephole2 x3): Likewise.
25504         (*bt<mode>): Likewise
25505         (*bt<mode>_mask): New define_insn_and_split.
25506         (*jcc_bt<mode>): Use QImode for offsets.
25507         (*jcc_bt<mode>_1): Delete obsolete pattern.
25508         (*jcc_bt<mode>_mask): Use QImode offsets.
25509         (*jcc_bt<mode>_mask_1): Likewise.
25510         (define_split): Likewise.
25511         (*bt<mode>_setcqi): Likewise.
25512         (*bt<mode>_setncqi): Likewise.
25513         (*bt<mode>_setnc<mode>): Likewise.
25514         (*bt<mode>_setncqi_2): Likewise.
25515         (*bt<mode>_setc<mode>_mask): New define_insn_and_split.
25516         (bmi2_bzhi_<mode>3): Use QImode offsets.
25517         (*bmi2_bzhi_<mode>3): Likewise.
25518         (*bmi2_bzhi_<mode>3_1): Likewise.
25519         (*bmi2_bzhi_<mode>3_1_ccz): Likewise.
25520         (@tbm_bextri_<mode>): Likewise.
25522 2023-07-29  Jan Hubicka  <jh@suse.cz>
25524         * profile-count.cc (profile_probability::sqrt): New member function.
25525         (profile_probability::pow): Likewise.
25526         * profile-count.h: (profile_probability::sqrt): Declare
25527         (profile_probability::pow): Likewise.
25528         * tree-vect-loop-manip.cc (vect_loop_versioning): Fix profile update.
25530 2023-07-28  Andrew MacLeod  <amacleod@redhat.com>
25532         * gimple-range-cache.cc (ssa_cache::merge_range): New.
25533         (ssa_lazy_cache::merge_range): New.
25534         * gimple-range-cache.h (class ssa_cache): Adjust protoypes.
25535         (class ssa_lazy_cache): Ditto.
25536         * gimple-range.cc (assume_query::calculate_op): Use merge_range.
25538 2023-07-28  Andrew MacLeod  <amacleod@redhat.com>
25540         * tree-ssa-propagate.cc (substitute_and_fold_engine::value_on_edge):
25541         Move from value-query.cc.
25542         (substitute_and_fold_engine::value_of_stmt): Ditto.
25543         (substitute_and_fold_engine::range_of_expr): New.
25544         * tree-ssa-propagate.h (substitute_and_fold_engine): Inherit from
25545         range_query.  New prototypes.
25546         * value-query.cc (value_query::value_on_edge): Relocate.
25547         (value_query::value_of_stmt): Ditto.
25548         * value-query.h (class value_query): Remove.
25549         (class range_query): Remove base class.  Adjust prototypes.
25551 2023-07-28  Andrew MacLeod  <amacleod@redhat.com>
25553         PR tree-optimization/110205
25554         * gimple-range-cache.h (ranger_cache::m_estimate): Delete.
25555         * range-op-mixed.h (operator_bitwise_xor::op1_op2_relation_effect):
25556         Add final override.
25557         * range-op.cc (operator_lshift): Add missing final overrides.
25558         (operator_rshift): Ditto.
25560 2023-07-28  Jose E. Marchesi  <jose.marchesi@oracle.com>
25562         * config/bpf/bpf.cc (bpf_option_override): Disable tail-call
25563         optimizations in BPF target.
25565 2023-07-28  Honza  <jh@ryzen4.suse.cz>
25567         * cfgloopmanip.cc (loop_count_in): Break out from ...
25568         (loop_exit_for_scaling): Break out from ...
25569         (update_loop_exit_probability_scale_dom_bbs): Break out from ...;
25570         add more sanity check and debug info.
25571         (scale_loop_profile): ... here.
25572         (create_empty_loop_on_edge): Fix whitespac.
25573         * cfgloopmanip.h (update_loop_exit_probability_scale_dom_bbs): Declare.
25574         * loop-unroll.cc (unroll_loop_constant_iterations): Use
25575         update_loop_exit_probability_scale_dom_bbs.
25576         * tree-ssa-loop-manip.cc (update_exit_probability_after_unrolling): Remove.
25577         (tree_transform_and_unroll_loop): Use
25578         update_loop_exit_probability_scale_dom_bbs.
25579         * tree-ssa-loop-split.cc (split_loop): Use
25580         update_loop_exit_probability_scale_dom_bbs.
25582 2023-07-28  Jan Hubicka  <jh@suse.cz>
25584         PR middle-end/77689
25585         * tree-ssa-loop-split.cc: Include value-query.h.
25586         (split_at_bb_p): Analyze cases where EQ/NE can be turned
25587         into LT/LE/GT/GE; return updated guard code.
25588         (split_loop): Use guard code.
25590 2023-07-28  Roger Sayle  <roger@nextmovesoftware.com>
25591             Richard Biener  <rguenther@suse.de>
25593         PR middle-end/28071
25594         PR rtl-optimization/110587
25595         * expr.cc (emit_group_load_1): Simplify logic for calling
25596         force_reg on ORIG_SRC, to avoid making a copy if the source
25597         is already in a pseudo register.
25599 2023-07-28  Jan Hubicka  <jh@suse.cz>
25601         PR middle-end/106923
25602         * tree-ssa-loop-split.cc (connect_loops): Change probability
25603         of the test preconditioning second loop to very_likely.
25604         (fix_loop_bb_probability): Handle correctly case where
25605         on of the arms of the conditional is empty.
25606         (split_loop): Fold the test guarding first condition to
25607         see if it is constant true; Set correct entry block
25608         probabilities of the split loops; determine correct loop
25609         eixt probabilities.
25611 2023-07-28  xuli  <xuli1@eswincomputing.com>
25613         * config/riscv/riscv-vector-builtins-bases.cc: remove rounding mode of
25614         vsadd[u] and vssub[u].
25615         * config/riscv/vector.md: Ditto.
25617 2023-07-28  Jan Hubicka  <jh@suse.cz>
25619         * tree-ssa-loop-split.cc (split_loop): Also support NE driven
25620         loops when IV test is not overflowing.
25622 2023-07-28  liuhongt  <hongtao.liu@intel.com>
25624         PR target/110788
25625         * config/i386/sse.md (avx512cd_maskb_vec_dup<mode>): Add
25626         UNSPEC_MASKOP.
25627         (avx512cd_maskw_vec_dup<mode>): Ditto.
25629 2023-07-27  David Faust  <david.faust@oracle.com>
25631         PR target/110782
25632         PR target/110784
25633         * config/bpf/bpf.opt (msmov): New option.
25634         * config/bpf/bpf.cc (bpf_option_override): Handle it here.
25635         * config/bpf/bpf.md (*extendsidi2): New.
25636         (extendhidi2): New.
25637         (extendqidi2): New.
25638         (extendsisi2): New.
25639         (extendhisi2): New.
25640         (extendqisi2): New.
25641         * doc/invoke.texi (Option Summary): Add -msmov eBPF option.
25642         (eBPF Options): Add -m[no-]smov.  Document that -mcpu=v4
25643         also enables -msmov.
25645 2023-07-27  David Faust  <david.faust@oracle.com>
25647         * doc/invoke.texi (Option Summary): Remove -mkernel eBPF option.
25648         Add -mbswap and -msdiv eBPF options.
25649         (eBPF Options): Remove -mkernel.  Add -mno-{jmpext, jmp32,
25650         alu32, v3-atomics, bswap, sdiv}.  Document that -mcpu=v4 also
25651         enables -msdiv.
25653 2023-07-27  David Faust  <david.faust@oracle.com>
25655         * config/bpf/bpf.md (add<AM:mode>3): Use %w2 instead of %w1
25656         in pseudo-C dialect output template.
25657         (sub<AM:mode>3): Likewise.
25659 2023-07-27  Jan Hubicka  <jh@suse.cz>
25661         * tree-vect-loop.cc (optimize_mask_stores): Make store
25662         likely.
25664 2023-07-27  Jan Hubicka  <jh@suse.cz>
25666         * cfgloop.h (single_dom_exit): Declare.
25667         * cfgloopmanip.h (update_exit_probability_after_unrolling): Declare.
25668         * cfgrtl.cc (struct cfg_hooks): Fix comment.
25669         * loop-unroll.cc (unroll_loop_constant_iterations): Update exit edge.
25670         * tree-ssa-loop-ivopts.h (single_dom_exit): Do not declare it here.
25671         * tree-ssa-loop-manip.cc (update_exit_probability_after_unrolling):
25672         Break out from ...
25673         (tree_transform_and_unroll_loop): ... here;
25675 2023-07-27  Jan Hubicka  <jh@suse.cz>
25677         * cfgloopmanip.cc (scale_dominated_blocks_in_loop): Move here from
25678         tree-ssa-loop-manip.cc and avoid recursion.
25679         (scale_loop_profile): Use scale_dominated_blocks_in_loop.
25680         (duplicate_loop_body_to_header_edge): Add DLTHE_FLAG_FLAT_PROFILE
25681         flag.
25682         * cfgloopmanip.h (DLTHE_FLAG_FLAT_PROFILE): Define.
25683         (scale_dominated_blocks_in_loop): Declare.
25684         * predict.cc (dump_prediction): Do not ICE on uninitialized probability.
25685         (change_edge_frequency): Remove.
25686         * predict.h (change_edge_frequency): Remove.
25687         * tree-ssa-loop-manip.cc (scale_dominated_blocks_in_loop): Move to
25688         cfgloopmanip.cc.
25689         (niter_for_unrolled_loop): Remove.
25690         (tree_transform_and_unroll_loop): Fix profile update.
25692 2023-07-27  Jan Hubicka  <jh@suse.cz>
25694         * tree-ssa-loop-im.cc (execute_sm_if_changed): Turn cap probability
25695         to guessed; fix count of new_bb.
25697 2023-07-27  Jan Hubicka  <jh@suse.cz>
25699         * profile-count.h (profile_count::apply_probability): Fix
25700         handling of uninitialized probabilities, optimize scaling
25701         by probability 1.
25703 2023-07-27  Richard Biener  <rguenther@suse.de>
25705         PR tree-optimization/91838
25706         * gimple-match-head.cc: Include attribs.h and asan.h.
25707         * generic-match-head.cc: Likewise.
25708         * match.pd (([rl]shift @0 out-of-bounds) -> zero): New pattern.
25710 2023-07-27  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
25712         * config/riscv/riscv-modes.def (VECTOR_BOOL_MODE): Add VLS modes.
25713         (ADJUST_ALIGNMENT): Ditto.
25714         (ADJUST_PRECISION): Ditto.
25715         (VLS_MODES): Ditto.
25716         (VECTOR_MODE_WITH_PREFIX): Ditto.
25717         * config/riscv/riscv-opts.h (TARGET_VECTOR_VLS): New macro.
25718         * config/riscv/riscv-protos.h (riscv_v_ext_vls_mode_p): New function.
25719         * config/riscv/riscv-v.cc (INCLUDE_ALGORITHM): Add include.
25720         (legitimize_move): Enable basic VLS modes support.
25721         (get_vlmul): Ditto.
25722         (get_ratio): Ditto.
25723         (get_vector_mode): Ditto.
25724         * config/riscv/riscv-vector-switch.def (VLS_ENTRY): Add vls modes.
25725         * config/riscv/riscv.cc (riscv_v_ext_vls_mode_p): New function.
25726         (VLS_ENTRY): New macro.
25727         (riscv_v_ext_mode_p): Add vls modes.
25728         (riscv_get_v_regno_alignment): New function.
25729         (riscv_print_operand): Add vls modes.
25730         (riscv_hard_regno_nregs): Ditto.
25731         (riscv_hard_regno_mode_ok): Ditto.
25732         (riscv_regmode_natural_size): Ditto.
25733         (riscv_vectorize_preferred_vector_alignment): Ditto.
25734         * config/riscv/riscv.md: Ditto.
25735         * config/riscv/vector-iterators.md: Ditto.
25736         * config/riscv/vector.md: Ditto.
25737         * config/riscv/autovec-vls.md: New file.
25739 2023-07-27  Pan Li  <pan2.li@intel.com>
25741         * config/riscv/riscv_vector.h (enum RVV_CSR): Removed.
25742         (vread_csr): Ditto.
25743         (vwrite_csr): Ditto.
25745 2023-07-27  demin.han  <demin.han@starfivetech.com>
25747         * config/riscv/autovec.md: Delete which_alternative use in split
25749 2023-07-27  Richard Biener  <rguenther@suse.de>
25751         * tree-ssa-sink.cc (sink_code_in_bb): Remove recursion, instead
25752         use a worklist ...
25753         (pass_sink_code::execute): ... in the caller.
25755 2023-07-27  Kewen Lin  <linkw@linux.ibm.com>
25756             Richard Biener  <rguenther@suse.de>
25758         PR tree-optimization/110776
25759         * tree-vect-stmts.cc (vectorizable_load): Always cost VMAT_ELEMENTWISE
25760         as scalar load.
25762 2023-07-26  Xiao Zeng  <zengxiao@eswincomputing.com>
25764         * config/riscv/riscv.md: Include zicond.md
25765         * config/riscv/zicond.md: New file.
25767 2023-07-26  Xiao Zeng  <zengxiao@eswincomputing.com>
25769         * common/config/riscv/riscv-common.cc: New extension.
25770         * config/riscv/riscv-opts.h (MASK_ZICOND): New mask.
25771         (TARGET_ZICOND): New target.
25773 2023-07-26  Carl Love  <cel@us.ibm.com>
25775         * config/rs6000/rs6000-c.cc (find_instance): Add new parameter that
25776         specifies the number of built-in arguments to check.
25777         (altivec_resolve_overloaded_builtin): Update calls to find_instance
25778         to pass the number of built-in arguments to be checked.
25780 2023-07-26  David Faust  <david.faust@oracle.com>
25782         * config/bpf/bpf.opt (mv3-atomics): New option.
25783         * config/bpf/bpf.cc (bpf_option_override): Handle it here.
25784         * config/bpf/bpf.h (enum_reg_class): Add R0 class.
25785         (REG_CLASS_NAMES): Likewise.
25786         (REG_CLASS_CONTENTS): Likewise.
25787         (REGNO_REG_CLASS): Handle R0.
25788         * config/bpf/bpf.md (UNSPEC_XADD): Rename to UNSPEC_AADD.
25789         (UNSPEC_AAND): New unspec.
25790         (UNSPEC_AOR): Likewise.
25791         (UNSPEC_AXOR): Likewise.
25792         (UNSPEC_AFADD): Likewise.
25793         (UNSPEC_AFAND): Likewise.
25794         (UNSPEC_AFOR): Likewise.
25795         (UNSPEC_AFXOR): Likewise.
25796         (UNSPEC_AXCHG): Likewise.
25797         (UNSPEC_ACMPX): Likewise.
25798         (atomic_add<mode>): Use UNSPEC_AADD and atomic type attribute.
25799         Move to...
25800         * config/bpf/atomic.md: ...Here. New file.
25801         * config/bpf/constraints.md (t): New constraint for R0.
25802         * doc/invoke.texi (eBPF Options): Document -mv3-atomics.
25804 2023-07-26  Matthew Malcomson  <matthew.malcomson@arm.com>
25806         * tree-vect-stmts.cc (get_group_load_store_type): Reformat
25807         comment.
25809 2023-07-26  Carl Love  <cel@us.ibm.com>
25811         * config/rs6000/rs6000-builtins.def: Rename
25812         __builtin_altivec_vreplace_un_uv2di as __builtin_altivec_vreplace_un_udi
25813         __builtin_altivec_vreplace_un_uv4si as __builtin_altivec_vreplace_un_usi
25814         __builtin_altivec_vreplace_un_v2df as __builtin_altivec_vreplace_un_df
25815         __builtin_altivec_vreplace_un_v2di as __builtin_altivec_vreplace_un_di
25816         __builtin_altivec_vreplace_un_v4sf as __builtin_altivec_vreplace_un_sf
25817         __builtin_altivec_vreplace_un_v4si as __builtin_altivec_vreplace_un_si.
25818         Rename VREPLACE_UN_UV2DI as VREPLACE_UN_UDI, VREPLACE_UN_UV4SI as
25819         VREPLACE_UN_USI, VREPLACE_UN_V2DF as VREPLACE_UN_DF,
25820         VREPLACE_UN_V2DI as VREPLACE_UN_DI, VREPLACE_UN_V4SF as
25821         VREPLACE_UN_SF, VREPLACE_UN_V4SI as VREPLACE_UN_SI.
25822         Rename vreplace_un_v2di as vreplace_un_di, vreplace_un_v4si as
25823         vreplace_un_si, vreplace_un_v2df as vreplace_un_df,
25824         vreplace_un_v2di as vreplace_un_di, vreplace_un_v4sf as
25825         vreplace_un_sf, vreplace_un_v4si as vreplace_un_si.
25826         * config/rs6000/rs6000-c.cc (find_instance): Add case
25827         RS6000_OVLD_VEC_REPLACE_UN.
25828         * config/rs6000/rs6000-overload.def (__builtin_vec_replace_un):
25829         Fix first argument type.  Rename VREPLACE_UN_UV4SI as
25830         VREPLACE_UN_USI, VREPLACE_UN_V4SI as VREPLACE_UN_SI,
25831         VREPLACE_UN_UV2DI as VREPLACE_UN_UDI, VREPLACE_UN_V2DI as
25832         VREPLACE_UN_DI, VREPLACE_UN_V4SF as VREPLACE_UN_SF,
25833         VREPLACE_UN_V2DF as VREPLACE_UN_DF.
25834         * config/rs6000/vsx.md (REPLACE_ELT): Rename the mode_iterator
25835         REPLACE_ELT_V for vector modes.
25836         (REPLACE_ELT): New scalar mode iterator.
25837         (REPLACE_ELT_char): Add scalar attributes.
25838         (vreplace_un_<mode>): Change iterator and mode attribute.
25840 2023-07-26  David Malcolm  <dmalcolm@redhat.com>
25842         PR analyzer/104940
25843         * Makefile.in (ANALYZER_OBJS): Add analyzer/symbol.o.
25845 2023-07-26  Richard Biener  <rguenther@suse.de>
25847         PR tree-optimization/106081
25848         * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
25849         Assign layout -1 to splats.
25851 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
25853         * range-op-mixed.h (class operator_cast): Add update_bitmask.
25854         * range-op.cc (operator_cast::update_bitmask): New.
25855         (operator_cast::fold_range): Call update_bitmask.
25857 2023-07-26  Li Xu  <xuli1@eswincomputing.com>
25859         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): Change
25860         scalar type to float16, eliminate warning.
25861         (vfloat16mf4x3_t): Ditto.
25862         (vfloat16mf4x4_t): Ditto.
25863         (vfloat16mf4x5_t): Ditto.
25864         (vfloat16mf4x6_t): Ditto.
25865         (vfloat16mf4x7_t): Ditto.
25866         (vfloat16mf4x8_t): Ditto.
25867         (vfloat16mf2x2_t): Ditto.
25868         (vfloat16mf2x3_t): Ditto.
25869         (vfloat16mf2x4_t): Ditto.
25870         (vfloat16mf2x5_t): Ditto.
25871         (vfloat16mf2x6_t): Ditto.
25872         (vfloat16mf2x7_t): Ditto.
25873         (vfloat16mf2x8_t): Ditto.
25874         (vfloat16m1x2_t): Ditto.
25875         (vfloat16m1x3_t): Ditto.
25876         (vfloat16m1x4_t): Ditto.
25877         (vfloat16m1x5_t): Ditto.
25878         (vfloat16m1x6_t): Ditto.
25879         (vfloat16m1x7_t): Ditto.
25880         (vfloat16m1x8_t): Ditto.
25881         (vfloat16m2x2_t): Ditto.
25882         (vfloat16m2x3_t): Ditto.
25883         (vfloat16m2x4_t): Ditto.
25884         (vfloat16m4x2_t): Ditto.
25885         * config/riscv/vector-iterators.md: add RVVM4x2DF in iterator V4T.
25886         * config/riscv/vector.md: add tuple mode in attr sew.
25888 2023-07-26  Uros Bizjak  <ubizjak@gmail.com>
25890         PR target/110762
25891         * config/i386/i386.md (plusminusmult): New code iterator.
25892         * config/i386/mmx.md (mmxdoublevecmode): New mode attribute.
25893         (movq_<mode>_to_sse): New expander.
25894         (<plusminusmult:insn>v2sf3): Macroize expander from addv2sf3,
25895         subv2sf3 and mulv2sf3 using plusminusmult code iterator.  Rewrite
25896         as a wrapper around V4SFmode operation.
25897         (mmx_addv2sf3): Change operand 1 and operand 2 predicates to
25898         nonimmediate_operand.
25899         (*mmx_addv2sf3): Remove SSE alternatives.  Change operand 1 and
25900         operand 2 predicates to nonimmediate_operand.
25901         (mmx_subv2sf3): Change operand 2 predicate to nonimmediate_operand.
25902         (mmx_subrv2sf3): Change operand 1 predicate to nonimmediate_operand.
25903         (*mmx_subv2sf3): Remove SSE alternatives.  Change operand 1 and
25904         operand 2 predicates to nonimmediate_operand.
25905         (mmx_mulv2sf3): Change operand 1 and operand 2 predicates to
25906         nonimmediate_operand.
25907         (*mmx_mulv2sf3): Remove SSE alternatives.  Change operand 1 and
25908         operand 2 predicates to nonimmediate_operand.
25909         (divv2sf3): Rewrite as a wrapper around V4SFmode operation.
25910         (<smaxmin:code>v2sf3): Ditto.
25911         (mmx_<smaxmin:code>v2sf3): Change operand 1 and operand 2
25912         predicates to nonimmediate_operand.
25913         (*mmx_<smaxmin:code>v2sf3): Remove SSE alternatives.  Change
25914         operand 1 and operand 2 predicates to nonimmediate_operand.
25915         (mmx_ieee_<ieee_maxmin>v2sf3): Ditto.
25916         (sqrtv2sf2): Rewrite as a wrapper around V4SFmode operation.
25917         (*mmx_haddv2sf3_low): Ditto.
25918         (*mmx_hsubv2sf3_low): Ditto.
25919         (vec_addsubv2sf3): Ditto.
25920         (*mmx_maskcmpv2sf3_comm): Remove.
25921         (*mmx_maskcmpv2sf3): Remove.
25922         (vec_cmpv2sfv2si): Rewrite as a wrapper around V4SFmode operation.
25923         (vcond<V2FI:mode>v2sf): Ditto.
25924         (fmav2sf4): Ditto.
25925         (fmsv2sf4): Ditto.
25926         (fnmav2sf4): Ditto.
25927         (fnmsv2sf4): Ditto.
25928         (fix_truncv2sfv2si2): Ditto.
25929         (fixuns_truncv2sfv2si2): Ditto.
25930         (mmx_fix_truncv2sfv2si2): Remove SSE alternatives.
25931         Change operand 1 predicate to nonimmediate_operand.
25932         (floatv2siv2sf2): Rewrite as a wrapper around V4SFmode operation.
25933         (floatunsv2siv2sf2): Ditto.
25934         (mmx_floatv2siv2sf2): Remove SSE alternatives.
25935         Change operand 1 predicate to nonimmediate_operand.
25936         (nearbyintv2sf2): Rewrite as a wrapper around V4SFmode operation.
25937         (rintv2sf2): Ditto.
25938         (lrintv2sfv2si2): Ditto.
25939         (ceilv2sf2): Ditto.
25940         (lceilv2sfv2si2): Ditto.
25941         (floorv2sf2): Ditto.
25942         (lfloorv2sfv2si2): Ditto.
25943         (btruncv2sf2): Ditto.
25944         (roundv2sf2): Ditto.
25945         (lroundv2sfv2si2): Ditto.
25946         (*mmx_roundv2sf2): Remove.
25948 2023-07-26  Jose E. Marchesi  <jose.marchesi@oracle.com>
25950         * config/bpf/bpf.md: Fix neg{SI,DI}2 insn.
25952 2023-07-26  Richard Biener  <rguenther@suse.de>
25954         PR tree-optimization/110799
25955         * tree-ssa-pre.cc (compute_avail): More thoroughly match
25956         up TBAA behavior of redundant loads.
25958 2023-07-26  Jakub Jelinek  <jakub@redhat.com>
25960         PR tree-optimization/110755
25961         * range-op-float.cc (frange_arithmetic): Change +0 result to -0
25962         for PLUS_EXPR or MINUS_EXPR if -frounding-math, inf is negative and
25963         it is exact op1 + (-op1) or op1 - op1.
25965 2023-07-26  Kewen Lin  <linkw@linux.ibm.com>
25967         PR target/110741
25968         * config/rs6000/vsx.md (define_insn xxeval): Correct vsx
25969         operands output with "x".
25971 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
25973         * range-op.cc (class operator_absu): Add update_bitmask.
25974         (operator_absu::update_bitmask): New.
25976 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
25978         * range-op-mixed.h (class operator_abs): Add update_bitmask.
25979         * range-op.cc (operator_abs::update_bitmask): New.
25981 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
25983         * range-op-mixed.h (class operator_bitwise_not): Add update_bitmask.
25984         * range-op.cc (operator_bitwise_not::update_bitmask): New.
25986 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
25988         * range-op.cc (update_known_bitmask): Handle unary operators.
25990 2023-07-26  Aldy Hernandez  <aldyh@redhat.com>
25992         * tree-ssa-ccp.cc (bit_value_unop): Initialize val when appropriate.
25994 2023-07-26  Jin Ma  <jinma@linux.alibaba.com>
25996         * config/riscv/riscv.md: Likewise.
25998 2023-07-26  Jan Hubicka  <jh@suse.cz>
26000         * profile-count.cc (profile_count::to_sreal_scale): Value is not know
26001         if we divide by zero.
26003 2023-07-25  David Faust  <david.faust@oracle.com>
26005         * config/bpf/bpf.cc (bpf_print_operand_address): Don't print
26006         enclosing parentheses for pseudo-C dialect.
26007         * config/bpf/bpf.md (zero_exdendhidi2): Add parentheses around
26008         operands of pseudo-C dialect output templates where needed.
26009         (zero_extendqidi2): Likewise.
26010         (zero_extendsidi2): Likewise.
26011         (*mov<MM:mode>): Likewise.
26013 2023-07-25  Aldy Hernandez  <aldyh@redhat.com>
26015         * tree-ssa-ccp.cc (value_mask_to_min_max): Make static.
26016         (bit_value_mult_const): Same.
26017         (get_individual_bits): Same.
26019 2023-07-25  Haochen Gui  <guihaoc@gcc.gnu.org>
26021         PR target/103605
26022         * config/rs6000/rs6000-builtin.cc (rs6000_gimple_fold_builtin): Gimple
26023         fold RS6000_BIF_XSMINDP and RS6000_BIF_XSMAXDP when fast-math is set.
26024         * config/rs6000/rs6000.md (FMINMAX): New int iterator.
26025         (minmax_op): New int attribute.
26026         (UNSPEC_FMAX, UNSPEC_FMIN): New unspecs.
26027         (f<minmax_op><mode>3): New pattern by UNSPEC_FMAX and UNSPEC_FMIN.
26028         * config/rs6000/rs6000-builtins.def (__builtin_vsx_xsmaxdp): Set
26029         pattern to fmaxdf3.
26030         (__builtin_vsx_xsmindp): Set pattern to fmindf3.
26032 2023-07-24  David Faust  <david.faust@oracle.com>
26034         * config/bpf/bpf.md (nop): Add pseudo-c asm dialect template.
26036 2023-07-24  Drew Ross  <drross@redhat.com>
26037             Jakub Jelinek  <jakub@redhat.com>
26039         PR middle-end/109986
26040         * generic-match-head.cc (bitwise_equal_p): New macro.
26041         * gimple-match-head.cc (bitwise_equal_p): New macro.
26042         (gimple_nop_convert): Declare.
26043         (gimple_bitwise_equal_p): Helper for bitwise_equal_p.
26044         * match.pd ((~X | Y) ^ X -> ~(X & Y)): New simplification.
26046 2023-07-24  Jeff Law  <jlaw@ventanamicro.com>
26048         * common/config/riscv/riscv-common.cc (riscv_subset_list::add): Use
26049         single quote rather than backquote in diagnostic.
26051 2023-07-24  Jose E. Marchesi  <jose.marchesi@oracle.com>
26053         PR target/110783
26054         * config/bpf/bpf.opt: New command-line option -msdiv.
26055         * config/bpf/bpf.md: Conditionalize sdiv/smod on bpf_has_sdiv.
26056         * config/bpf/bpf.cc (bpf_option_override): Initialize
26057         bpf_has_sdiv.
26058         * doc/invoke.texi (eBPF Options): Document -msdiv.
26060 2023-07-24  Jeff Law  <jlaw@ventanamicro.com>
26062         * config/riscv/riscv.cc (riscv_option_override): Spell out
26063         greater than and use cannot in diagnostic string.
26065 2023-07-24  Richard Biener  <rguenther@suse.de>
26067         * tree-vectorizer.h (_slp_tree::push_vec_def): Add.
26068         (_slp_tree::vec_stmts): Remove.
26069         (SLP_TREE_VEC_STMTS): Remove.
26070         * tree-vect-slp.cc (_slp_tree::push_vec_def): Define.
26071         (_slp_tree::_slp_tree): Adjust.
26072         (_slp_tree::~_slp_tree): Likewise.
26073         (vect_get_slp_vect_def): Simplify.
26074         (vect_get_slp_defs): Likewise.
26075         (vect_transform_slp_perm_load_1): Adjust.
26076         (vect_add_slp_permutation): Likewise.
26077         (vect_schedule_slp_node): Likewise.
26078         (vectorize_slp_instance_root_stmt): Likewise.
26079         (vect_schedule_scc): Likewise.
26080         * tree-vect-stmts.cc (vectorizable_bswap): Use push_vec_def.
26081         (vectorizable_call): Likewise.
26082         (vectorizable_call): Likewise.
26083         (vect_create_vectorized_demotion_stmts): Likewise.
26084         (vectorizable_conversion): Likewise.
26085         (vectorizable_assignment): Likewise.
26086         (vectorizable_shift): Likewise.
26087         (vectorizable_operation): Likewise.
26088         (vectorizable_load): Likewise.
26089         (vectorizable_condition): Likewise.
26090         (vectorizable_comparison): Likewise.
26091         * tree-vect-loop.cc (vect_create_epilog_for_reduction): Adjust.
26092         (vectorize_fold_left_reduction): Use push_vec_def.
26093         (vect_transform_reduction): Likewise.
26094         (vect_transform_cycle_phi): Likewise.
26095         (vectorizable_lc_phi): Likewise.
26096         (vectorizable_phi): Likewise.
26097         (vectorizable_recurr): Likewise.
26098         (vectorizable_induction): Likewise.
26099         (vectorizable_live_operation): Likewise.
26101 2023-07-24  Richard Biener  <rguenther@suse.de>
26103         * tree-ssa-loop.cc: Remove unused tree-vectorizer.h include.
26105 2023-07-24  Richard Biener  <rguenther@suse.de>
26107         * config/i386/i386-builtins.cc: Remove tree-vectorizer.h include.
26108         * config/i386/i386-expand.cc: Likewise.
26109         * config/i386/i386-features.cc: Likewise.
26110         * config/i386/i386-options.cc: Likewise.
26112 2023-07-24  Robin Dapp  <rdapp@ventanamicro.com>
26114         * tree-vect-stmts.cc (vectorizable_conversion): Handle
26115         more demotion/promotion for modifier == NONE.
26117 2023-07-24  Roger Sayle  <roger@nextmovesoftware.com>
26119         PR target/110787
26120         PR target/110790
26121         Revert patch.
26122         * config/i386/i386.md (extv<mode>): Use QImode for offsets.
26123         (extzv<mode>): Likewise.
26124         (insv<mode>): Likewise.
26125         (*testqi_ext_3): Likewise.
26126         (*btr<mode>_2): Likewise.
26127         (define_split): Likewise.
26128         (*btsq_imm): Likewise.
26129         (*btrq_imm): Likewise.
26130         (*btcq_imm): Likewise.
26131         (define_peephole2 x3): Likewise.
26132         (*bt<mode>): Likewise
26133         (*bt<mode>_mask): New define_insn_and_split.
26134         (*jcc_bt<mode>): Use QImode for offsets.
26135         (*jcc_bt<mode>_1): Delete obsolete pattern.
26136         (*jcc_bt<mode>_mask): Use QImode offsets.
26137         (*jcc_bt<mode>_mask_1): Likewise.
26138         (define_split): Likewise.
26139         (*bt<mode>_setcqi): Likewise.
26140         (*bt<mode>_setncqi): Likewise.
26141         (*bt<mode>_setnc<mode>): Likewise.
26142         (*bt<mode>_setncqi_2): Likewise.
26143         (*bt<mode>_setc<mode>_mask): New define_insn_and_split.
26144         (bmi2_bzhi_<mode>3): Use QImode offsets.
26145         (*bmi2_bzhi_<mode>3): Likewise.
26146         (*bmi2_bzhi_<mode>3_1): Likewise.
26147         (*bmi2_bzhi_<mode>3_1_ccz): Likewise.
26148         (@tbm_bextri_<mode>): Likewise.
26150 2023-07-24  Jose E. Marchesi  <jose.marchesi@oracle.com>
26152         * config/bpf/bpf-opts.h (enum bpf_kernel_version): Remove enum.
26153         * config/bpf/bpf.opt (mkernel): Remove option.
26154         * config/bpf/bpf.cc (bpf_target_macros): Do not define
26155         BPF_KERNEL_VERSION_CODE.
26157 2023-07-24  Jose E. Marchesi  <jose.marchesi@oracle.com>
26159         PR target/110786
26160         * config/bpf/bpf.opt (mcpu): Add ISA_V4 and make it the default.
26161         (mbswap): New option.
26162         * config/bpf/bpf-opts.h (enum bpf_isa_version): New value ISA_V4.
26163         * config/bpf/bpf.cc (bpf_option_override): Set bpf_has_bswap.
26164         * config/bpf/bpf.md: Use bswap instructions if available for
26165         bswap* insn, and fix constraint.
26166         * doc/invoke.texi (eBPF Options): Document -mcpu=v4 and -mbswap.
26168 2023-07-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26170         * config/riscv/autovec.md (fold_left_plus_<mode>): New pattern.
26171         (mask_len_fold_left_plus_<mode>): Ditto.
26172         * config/riscv/riscv-protos.h (enum insn_type): New enum.
26173         (enum reduction_type): Ditto.
26174         (expand_reduction): Add in-order reduction.
26175         * config/riscv/riscv-v.cc (emit_nonvlmax_fp_reduction_insn): New function.
26176         (expand_reduction): Add in-order reduction.
26178 2023-07-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26180         * tree-vect-loop.cc (get_masked_reduction_fn): Add mask_len_fold_left_plus.
26181         (vectorize_fold_left_reduction): Ditto.
26182         (vectorizable_reduction): Ditto.
26183         (vect_transform_reduction): Ditto.
26185 2023-07-24  Richard Biener  <rguenther@suse.de>
26187         PR tree-optimization/110777
26188         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_avail):
26189         Avoid propagating abnormals.
26191 2023-07-24  Richard Biener  <rguenther@suse.de>
26193         PR tree-optimization/110766
26194         * tree-scalar-evolution.cc
26195         (analyze_and_compute_bitwise_induction_effect): Check the PHI
26196         is defined in the loop header.
26198 2023-07-24  Kewen Lin  <linkw@linux.ibm.com>
26200         PR tree-optimization/110740
26201         * tree-vect-loop.cc (vect_analyze_loop_costing): Do not vectorize a
26202         loop with a single scalar iteration.
26204 2023-07-24  Pan Li  <pan2.li@intel.com>
26206         * config/riscv/riscv-vector-builtins-shapes.cc
26207         (struct alu_frm_def): Take range check.
26209 2023-07-22  Vineet Gupta  <vineetg@rivosinc.com>
26211         PR target/110748
26212         * config/riscv/predicates.md (const_0_operand): Add back
26213         const_double.
26215 2023-07-22  Roger Sayle  <roger@nextmovesoftware.com>
26217         * config/i386/i386-expand.cc (ix86_expand_move): Disable the
26218         64-bit insertions into TImode optimizations with -O0, unless
26219         the function has the "naked" attribute (for PR target/110533).
26221 2023-07-22  Andrew Pinski  <apinski@marvell.com>
26223         PR target/110778
26224         * rtl.h (extended_count): Change last argument type
26225         to bool.
26227 2023-07-22  Roger Sayle  <roger@nextmovesoftware.com>
26229         * config/i386/i386.md (extv<mode>): Use QImode for offsets.
26230         (extzv<mode>): Likewise.
26231         (insv<mode>): Likewise.
26232         (*testqi_ext_3): Likewise.
26233         (*btr<mode>_2): Likewise.
26234         (define_split): Likewise.
26235         (*btsq_imm): Likewise.
26236         (*btrq_imm): Likewise.
26237         (*btcq_imm): Likewise.
26238         (define_peephole2 x3): Likewise.
26239         (*bt<mode>): Likewise
26240         (*bt<mode>_mask): New define_insn_and_split.
26241         (*jcc_bt<mode>): Use QImode for offsets.
26242         (*jcc_bt<mode>_1): Delete obsolete pattern.
26243         (*jcc_bt<mode>_mask): Use QImode offsets.
26244         (*jcc_bt<mode>_mask_1): Likewise.
26245         (define_split): Likewise.
26246         (*bt<mode>_setcqi): Likewise.
26247         (*bt<mode>_setncqi): Likewise.
26248         (*bt<mode>_setnc<mode>): Likewise.
26249         (*bt<mode>_setncqi_2): Likewise.
26250         (*bt<mode>_setc<mode>_mask): New define_insn_and_split.
26251         (bmi2_bzhi_<mode>3): Use QImode offsets.
26252         (*bmi2_bzhi_<mode>3): Likewise.
26253         (*bmi2_bzhi_<mode>3_1): Likewise.
26254         (*bmi2_bzhi_<mode>3_1_ccz): Likewise.
26255         (@tbm_bextri_<mode>): Likewise.
26257 2023-07-22  Jeff Law  <jlaw@ventanamicro.com>
26259         * config/bfin/bfin.md (ones): Fix length computation.
26261 2023-07-22  Vladimir N. Makarov  <vmakarov@redhat.com>
26263         * lra-eliminations.cc (update_reg_eliminate): Fix the assert.
26264         (lra_update_fp2sp_elimination): Use HARD_FRAME_POINTER_REGNUM
26265         instead of FRAME_POINTER_REGNUM to spill pseudos.
26267 2023-07-21  Roger Sayle  <roger@nextmovesoftware.com>
26268             Richard Biener  <rguenther@suse.de>
26270         PR c/110699
26271         * gimplify.cc (gimplify_compound_lval):  If the array's type
26272         is error_mark_node then return GS_ERROR.
26274 2023-07-21  Cupertino Miranda  <cupertino.miranda@oracle.com>
26276         PR target/110770
26277         * config/bpf/bpf.opt: Added option -masm=<dialect>.
26278         * config/bpf/bpf-opts.h (enum bpf_asm_dialect): New type.
26279         * config/bpf/bpf.cc (bpf_print_register): New function.
26280         (bpf_print_register): Support pseudo-c syntax for registers.
26281         (bpf_print_operand_address): Likewise.
26282         * config/bpf/bpf.h (ASM_SPEC): handle -msasm.
26283         (ASSEMBLER_DIALECT): Define.
26284         * config/bpf/bpf.md: Added pseudo-c templates.
26285         * doc/invoke.texi (-masm=): New eBPF option item.
26287 2023-07-21  Cupertino Miranda  <cupertino.miranda@oracle.com>
26289         * config/bpf/bpf.md: fixed template for neg instruction.
26291 2023-07-21  Jan Hubicka  <jh@suse.cz>
26293         PR target/110727
26294         * tree-vect-loop.cc (scale_profile_for_vect_loop): Avoid scaling flat
26295         profiles by vectorization factor.
26296         (vect_transform_loop): Check for flat profiles.
26298 2023-07-21  Jan Hubicka  <jh@suse.cz>
26300         * cfgloop.h (maybe_flat_loop_profile): Declare
26301         * cfgloopanal.cc (maybe_flat_loop_profile): New function.
26302         * tree-cfg.cc (print_loop_info): Print info about flat profiles.
26304 2023-07-21  Jan Hubicka  <jh@suse.cz>
26306         * cfgloop.cc (get_estimated_loop_iterations): Use sreal::to_nearest_int
26307         * cfgloopanal.cc (expected_loop_iterations_unbounded): Likewise.
26308         * predict.cc (estimate_bb_frequencies): Likewise.
26309         * profile.cc (branch_prob): Likewise.
26310         * tree-ssa-loop-niter.cc (estimate_numbers_of_iterations): Likewise
26312 2023-07-21  Iain Sandoe  <iain@sandoe.co.uk>
26314         * config.in: Regenerate.
26315         * config/darwin.h (DARWIN_LD_DEMANGLE): New.
26316         (LINK_COMMAND_SPEC_A): Add demangle handling.
26317         * configure: Regenerate.
26318         * configure.ac: Detect linker support for '-demangle'.
26320 2023-07-21  Jan Hubicka  <jh@suse.cz>
26322         * sreal.cc (sreal::to_nearest_int): New.
26323         (sreal_verify_basics): Verify also to_nearest_int.
26324         (verify_aritmetics): Likewise.
26325         (sreal_verify_conversions): New.
26326         (sreal_cc_tests): Call sreal_verify_conversions.
26327         * sreal.h: (sreal::to_nearest_int): Declare
26329 2023-07-21  Jan Hubicka  <jh@suse.cz>
26331         * tree-ssa-loop-ch.cc (enum ch_decision): New enum.
26332         (should_duplicate_loop_header_p): Return info on profitability.
26333         (do_while_loop_p): Watch for constant conditionals.
26334         (update_profile_after_ch): Do not sanity check that all
26335         static exits are taken.
26336         (ch_base::copy_headers): Run on all loops.
26337         (pass_ch::process_loop_p): Improve heuristics by handling also
26338         do_while loop and duplicating shortest sequence containing all
26339         winning blocks.
26341 2023-07-21  Jan Hubicka  <jh@suse.cz>
26343         * tree-ssa-loop-niter.cc (finite_loop_p): Reorder to do cheap
26344         tests first; update finite_p flag.
26346 2023-07-21  Jan Hubicka  <jh@suse.cz>
26348         * cfgloop.cc (flow_loop_dump): Use print_loop_info.
26349         * cfgloop.h (print_loop_info): Declare.
26350         * tree-cfg.cc (print_loop_info): Break out from ...; add
26351         printing of missing fields and profile
26352         (print_loop): ... here.
26354 2023-07-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26356         * config/riscv/riscv-v.cc (expand_gather_scatter): Remove redundant variables.
26358 2023-07-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26360         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Change condition order.
26361         (vectorizable_operation): Ditto.
26363 2023-07-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26365         * config/riscv/autovec.md: Align order of mask and len.
26366         * config/riscv/riscv-v.cc (expand_load_store): Ditto.
26367         (expand_gather_scatter): Ditto.
26368         * doc/md.texi: Ditto.
26369         * internal-fn.cc (add_len_and_mask_args): Ditto.
26370         (add_mask_and_len_args): Ditto.
26371         (expand_partial_load_optab_fn): Ditto.
26372         (expand_partial_store_optab_fn): Ditto.
26373         (expand_scatter_store_optab_fn): Ditto.
26374         (expand_gather_load_optab_fn): Ditto.
26375         (internal_fn_len_index): Ditto.
26376         (internal_fn_mask_index): Ditto.
26377         (internal_len_load_store_bias): Ditto.
26378         * tree-vect-stmts.cc (vectorizable_store): Ditto.
26379         (vectorizable_load): Ditto.
26381 2023-07-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26383         * config/riscv/autovec.md (len_maskload<mode><vm>): Change LEN_MASK into MASK_LEN.
26384         (mask_len_load<mode><vm>): Ditto.
26385         (len_maskstore<mode><vm>): Ditto.
26386         (mask_len_store<mode><vm>): Ditto.
26387         (len_mask_gather_load<RATIO64:mode><RATIO64I:mode>): Ditto.
26388         (mask_len_gather_load<RATIO64:mode><RATIO64I:mode>): Ditto.
26389         (len_mask_gather_load<RATIO32:mode><RATIO32I:mode>): Ditto.
26390         (mask_len_gather_load<RATIO32:mode><RATIO32I:mode>): Ditto.
26391         (len_mask_gather_load<RATIO16:mode><RATIO16I:mode>): Ditto.
26392         (mask_len_gather_load<RATIO16:mode><RATIO16I:mode>): Ditto.
26393         (len_mask_gather_load<RATIO8:mode><RATIO8I:mode>): Ditto.
26394         (mask_len_gather_load<RATIO8:mode><RATIO8I:mode>): Ditto.
26395         (len_mask_gather_load<RATIO4:mode><RATIO4I:mode>): Ditto.
26396         (mask_len_gather_load<RATIO4:mode><RATIO4I:mode>): Ditto.
26397         (len_mask_gather_load<RATIO2:mode><RATIO2I:mode>): Ditto.
26398         (mask_len_gather_load<RATIO2:mode><RATIO2I:mode>): Ditto.
26399         (len_mask_gather_load<RATIO1:mode><RATIO1:mode>): Ditto.
26400         (mask_len_gather_load<RATIO1:mode><RATIO1:mode>): Ditto.
26401         (len_mask_scatter_store<RATIO64:mode><RATIO64I:mode>): Ditto.
26402         (mask_len_scatter_store<RATIO64:mode><RATIO64I:mode>): Ditto.
26403         (len_mask_scatter_store<RATIO32:mode><RATIO32I:mode>): Ditto.
26404         (mask_len_scatter_store<RATIO32:mode><RATIO32I:mode>): Ditto.
26405         (len_mask_scatter_store<RATIO16:mode><RATIO16I:mode>): Ditto.
26406         (mask_len_scatter_store<RATIO16:mode><RATIO16I:mode>): Ditto.
26407         (len_mask_scatter_store<RATIO8:mode><RATIO8I:mode>): Ditto.
26408         (mask_len_scatter_store<RATIO8:mode><RATIO8I:mode>): Ditto.
26409         (len_mask_scatter_store<RATIO4:mode><RATIO4I:mode>): Ditto.
26410         (mask_len_scatter_store<RATIO4:mode><RATIO4I:mode>): Ditto.
26411         (len_mask_scatter_store<RATIO2:mode><RATIO2I:mode>): Ditto.
26412         (mask_len_scatter_store<RATIO2:mode><RATIO2I:mode>): Ditto.
26413         (len_mask_scatter_store<RATIO1:mode><RATIO1:mode>): Ditto.
26414         (mask_len_scatter_store<RATIO1:mode><RATIO1:mode>): Ditto.
26415         * doc/md.texi: Ditto.
26416         * genopinit.cc (main): Ditto.
26417         (CMP_NAME): Ditto. Ditto.
26418         * gimple-fold.cc (arith_overflowed_p): Ditto.
26419         (gimple_fold_partial_load_store_mem_ref): Ditto.
26420         (gimple_fold_call): Ditto.
26421         * internal-fn.cc (len_maskload_direct): Ditto.
26422         (mask_len_load_direct): Ditto.
26423         (len_maskstore_direct): Ditto.
26424         (mask_len_store_direct): Ditto.
26425         (expand_call_mem_ref): Ditto.
26426         (expand_len_maskload_optab_fn): Ditto.
26427         (expand_mask_len_load_optab_fn): Ditto.
26428         (expand_len_maskstore_optab_fn): Ditto.
26429         (expand_mask_len_store_optab_fn): Ditto.
26430         (direct_len_maskload_optab_supported_p): Ditto.
26431         (direct_mask_len_load_optab_supported_p): Ditto.
26432         (direct_len_maskstore_optab_supported_p): Ditto.
26433         (direct_mask_len_store_optab_supported_p): Ditto.
26434         (internal_load_fn_p): Ditto.
26435         (internal_store_fn_p): Ditto.
26436         (internal_gather_scatter_fn_p): Ditto.
26437         (internal_fn_len_index): Ditto.
26438         (internal_fn_mask_index): Ditto.
26439         (internal_fn_stored_value_index): Ditto.
26440         (internal_len_load_store_bias): Ditto.
26441         * internal-fn.def (LEN_MASK_GATHER_LOAD): Ditto.
26442         (MASK_LEN_GATHER_LOAD): Ditto.
26443         (LEN_MASK_LOAD): Ditto.
26444         (MASK_LEN_LOAD): Ditto.
26445         (LEN_MASK_SCATTER_STORE): Ditto.
26446         (MASK_LEN_SCATTER_STORE): Ditto.
26447         (LEN_MASK_STORE): Ditto.
26448         (MASK_LEN_STORE): Ditto.
26449         * optabs-query.cc (supports_vec_gather_load_p): Ditto.
26450         (supports_vec_scatter_store_p): Ditto.
26451         * optabs-tree.cc (target_supports_mask_load_store_p): Ditto.
26452         (target_supports_len_load_store_p): Ditto.
26453         * optabs.def (OPTAB_CD): Ditto.
26454         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Ditto.
26455         (call_may_clobber_ref_p_1): Ditto.
26456         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Ditto.
26457         (dse_optimize_stmt): Ditto.
26458         * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn): Ditto.
26459         (get_alias_ptr_type_for_ptr_address): Ditto.
26460         * tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Ditto.
26461         * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Ditto.
26462         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
26463         (vect_get_strided_load_store_ops): Ditto.
26464         (vectorizable_store): Ditto.
26465         (vectorizable_load): Ditto.
26467 2023-07-21  Haochen Jiang  <haochen.jiang@intel.com>
26469         * config/i386/i386.opt: Fix a typo.
26471 2023-07-21  Richard Biener  <rguenther@suse.de>
26473         PR tree-optimization/88540
26474         * tree-ssa-phiopt.cc (minmax_replacement): Do not give up
26475         with NaNs but handle the simple case by if-converting to a
26476         COND_EXPR.
26478 2023-07-21  Andrew Pinski  <apinski@marvell.com>
26480         * match.pd (minmax<minmax<a,b>,a>->minmax<a,b>): New
26481         transformation.
26483 2023-07-21  Richard Biener  <rguenther@suse.de>
26485         PR tree-optimization/110742
26486         * tree-vect-slp.cc (vect_optimize_slp_pass::get_result_with_layout):
26487         Do not materialize an edge permutation in an external node with
26488         vector defs.
26489         (vect_slp_analyze_node_operations_1): Guard purely internal
26490         nodes better.
26492 2023-07-21  Jan Hubicka  <jh@suse.cz>
26494         * cfgloop.cc: Include sreal.h.
26495         (flow_loop_dump): Dump sreal iteration exsitmate.
26496         (get_estimated_loop_iterations): Update.
26497         * cfgloop.h (expected_loop_iterations_by_profile): Declare.
26498         * cfgloopanal.cc (expected_loop_iterations_by_profile): New function.
26499         (expected_loop_iterations_unbounded): Use new API.
26500         * cfgloopmanip.cc (scale_loop_profile): Use
26501         expected_loop_iterations_by_profile
26502         * predict.cc (pass_profile::execute): Likewise.
26503         * profile.cc (branch_prob): Likewise.
26504         * tree-ssa-loop-niter.cc: Include sreal.h.
26505         (estimate_numbers_of_iterations): Likewise
26507 2023-07-21  Kewen Lin  <linkw@linux.ibm.com>
26509         PR tree-optimization/110744
26510         * tree-ssa-sccvn.cc (vn_reference_lookup_3): Correct the index of bias
26511         operand for ifn IFN_LEN_STORE.
26513 2023-07-21  liuhongt  <hongtao.liu@intel.com>
26515         PR target/89701
26516         * common.opt: (fcf-protection=): Add EnumSet attribute to
26517         support combination of params.
26519 2023-07-21  David Malcolm  <dmalcolm@redhat.com>
26521         PR middle-end/110612
26522         * text-art/table.cc (table_geometry::table_geometry): Drop m_table
26523         field.
26524         (table_geometry::table_x_to_canvas_x): Add cast to comparison.
26525         (table_geometry::table_y_to_canvas_y): Likewise.
26526         * text-art/table.h (table_geometry::m_table): Drop unused field.
26527         * text-art/widget.h (wrapper_widget::update_child_alloc_rects):
26528         Add "override".
26530 2023-07-20  Uros Bizjak  <ubizjak@gmail.com>
26532         PR target/110717
26533         * config/i386/i386-features.cc
26534         (general_scalar_chain::compute_convert_gain): Calculate gain
26535         for extend higpart case.
26536         (general_scalar_chain::convert_op): Handle
26537         ASHIFTRT/ASHIFT combined RTX.
26538         (general_scalar_to_vector_candidate_p): Enable ASHIFTRT for
26539         SImode for SSE2 targets.  Handle ASHIFTRT/ASHIFT combined RTX.
26540         * config/i386/i386.md (*extend<dwi>2_doubleword_highpart):
26541         New define_insn_and_split pattern.
26542         (*extendv2di2_highpart_stv): Ditto.
26544 2023-07-20  Vladimir N. Makarov  <vmakarov@redhat.com>
26546         * lra-constraints.cc (simplify_operand_subreg): Check frame pointer
26547         simplification.
26549 2023-07-20  Andrew Pinski  <apinski@marvell.com>
26551         * combine.cc (dump_combine_stats): Remove.
26552         (dump_combine_total_stats): Remove.
26553         (total_attempts, total_merges, total_extras,
26554         total_successes): Remove.
26555         (combine_instructions): Don't increment total stats
26556         instead use statistics_counter_event.
26557         * dumpfile.cc (print_combine_total_stats): Remove.
26558         * dumpfile.h (print_combine_total_stats): Remove.
26559         (dump_combine_total_stats): Remove.
26560         * passes.cc (finish_optimization_passes):
26561         Don't call print_combine_total_stats.
26562         * rtl.h (dump_combine_total_stats): Remove.
26563         (dump_combine_stats): Remove.
26565 2023-07-20  Jan Hubicka  <jh@suse.cz>
26567         * tree-ssa-loop-ch.cc (should_duplicate_loop_header_p): Use BIT instead of TRUTH
26568         logical ops.
26570 2023-07-20  Martin Jambor  <mjambor@suse.cz>
26572         * doc/invoke.texi (analyzer-text-art-string-ellipsis-threshold): New.
26573         (analyzer-text-art-ideal-canvas-width): Likewise.
26574         (analyzer-text-art-string-ellipsis-head-len): Likewise.
26575         (analyzer-text-art-string-ellipsis-tail-len): Likewise.
26577 2023-07-20  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26579         * tree-vect-stmts.cc (check_load_store_for_partial_vectors):
26580         Refine code structure.
26582 2023-07-20  Jan Hubicka  <jh@suse.cz>
26584         * tree-ssa-loop-ch.cc (edge_range_query): Rename to ...
26585         (get_range_query): ... this one; do
26586         (static_loop_exit): Add query parametr, turn ranger to reference.
26587         (loop_static_stmt_p): New function.
26588         (loop_static_op_p): New function.
26589         (loop_iv_derived_p): Remove.
26590         (loop_combined_static_and_iv_p): New function.
26591         (should_duplicate_loop_header_p): Discover combined onditionals;
26592         do not track iv derived; improve dumps.
26593         (pass_ch::execute): Fix whitespace.
26595 2023-07-20  Richard Biener  <rguenther@suse.de>
26597         PR tree-optimization/110204
26598         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_avail):
26599         Look through copies generated by PRE.
26601 2023-07-20  Matthew Malcomson  <matthew.malcomson@arm.com>
26603         * tree-vect-stmts.cc (get_group_load_store_type): Account for
26604         `gap` when checking if need to peel twice.
26606 2023-07-20  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
26608         PR middle-end/77928
26609         * doc/extend.texi: Document iseqsig builtin.
26610         * builtins.cc (fold_builtin_iseqsig): New function.
26611         (fold_builtin_2): Handle BUILT_IN_ISEQSIG.
26612         (is_inexpensive_builtin): Handle BUILT_IN_ISEQSIG.
26613         * builtins.def (BUILT_IN_ISEQSIG): New built-in.
26615 2023-07-20  Pan Li  <pan2.li@intel.com>
26617         * config/riscv/vector.md: Fix incorrect match_operand.
26619 2023-07-20  Roger Sayle  <roger@nextmovesoftware.com>
26621         * config/i386/i386-expand.cc (ix86_expand_move): Don't call
26622         force_reg, to use SUBREG rather than create a new pseudo when
26623         inserting DFmode fields into TImode with insvti_{high,low}part.
26624         * config/i386/i386.md (*concat<mode><dwi>3_3): Split into two
26625         define_insn_and_split...
26626         (*concatditi3_3): 64-bit implementation.  Provide alternative
26627         that allows register allocation to use SSE registers that is
26628         split into vec_concatv2di after reload.
26629         (*concatsidi3_3): 32-bit implementation.
26631 2023-07-20  Richard Biener  <rguenther@suse.de>
26633         PR middle-end/61747
26634         * internal-fn.cc (expand_vec_cond_optab_fn): When the
26635         value operands are equal to the original comparison operands
26636         preserve that equality by re-using the comparison expansion.
26637         * optabs.cc (emit_conditional_move): When the value operands
26638         are equal to the comparison operands and would be forced to
26639         a register by prepare_cmp_insn do so earlier, preserving the
26640         equality.
26642 2023-07-20  Pan Li  <pan2.li@intel.com>
26644         * config/riscv/vector.md: Align pattern format.
26646 2023-07-20  Haochen Jiang  <haochen.jiang@intel.com>
26648         * doc/invoke.texi: Remove AVX512VP2INTERSECT in
26649         Granite Rapids{, D} from documentation.
26651 2023-07-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26653         * config/riscv/autovec.md
26654         (len_mask_gather_load<VNX16_QHSD:mode><VNX16_QHSDI:mode>):
26655         Refactor RVV machine modes.
26656         (len_mask_gather_load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
26657         (len_mask_gather_load<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
26658         (len_mask_gather_load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
26659         (len_mask_gather_load<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
26660         (len_mask_gather_load<mode><mode>): Ditto.
26661         (len_mask_gather_load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
26662         (len_mask_scatter_store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
26663         (len_mask_scatter_store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
26664         (len_mask_scatter_store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
26665         (len_mask_scatter_store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
26666         (len_mask_scatter_store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
26667         (len_mask_scatter_store<mode><mode>): Ditto.
26668         (len_mask_scatter_store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
26669         * config/riscv/riscv-modes.def (VECTOR_BOOL_MODE): Ditto.
26670         (ADJUST_NUNITS): Ditto.
26671         (ADJUST_ALIGNMENT): Ditto.
26672         (ADJUST_BYTESIZE): Ditto.
26673         (ADJUST_PRECISION): Ditto.
26674         (RVV_MODES): Ditto.
26675         (RVV_WHOLE_MODES): Ditto.
26676         (RVV_FRACT_MODE): Ditto.
26677         (RVV_NF8_MODES): Ditto.
26678         (RVV_NF4_MODES): Ditto.
26679         (VECTOR_MODES_WITH_PREFIX): Ditto.
26680         (VECTOR_MODE_WITH_PREFIX): Ditto.
26681         (RVV_TUPLE_MODES): Ditto.
26682         (RVV_NF2_MODES): Ditto.
26683         (RVV_TUPLE_PARTIAL_MODES): Ditto.
26684         * config/riscv/riscv-v.cc (struct mode_vtype_group): Ditto.
26685         (ENTRY): Ditto.
26686         (TUPLE_ENTRY): Ditto.
26687         (get_vlmul): Ditto.
26688         (get_nf): Ditto.
26689         (get_ratio): Ditto.
26690         (preferred_simd_mode): Ditto.
26691         (autovectorize_vector_modes): Ditto.
26692         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
26693         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
26694         (vbool64_t): Ditto.
26695         (vbool32_t): Ditto.
26696         (vbool16_t): Ditto.
26697         (vbool8_t): Ditto.
26698         (vbool4_t): Ditto.
26699         (vbool2_t): Ditto.
26700         (vbool1_t): Ditto.
26701         (vint8mf8_t): Ditto.
26702         (vuint8mf8_t): Ditto.
26703         (vint8mf4_t): Ditto.
26704         (vuint8mf4_t): Ditto.
26705         (vint8mf2_t): Ditto.
26706         (vuint8mf2_t): Ditto.
26707         (vint8m1_t): Ditto.
26708         (vuint8m1_t): Ditto.
26709         (vint8m2_t): Ditto.
26710         (vuint8m2_t): Ditto.
26711         (vint8m4_t): Ditto.
26712         (vuint8m4_t): Ditto.
26713         (vint8m8_t): Ditto.
26714         (vuint8m8_t): Ditto.
26715         (vint16mf4_t): Ditto.
26716         (vuint16mf4_t): Ditto.
26717         (vint16mf2_t): Ditto.
26718         (vuint16mf2_t): Ditto.
26719         (vint16m1_t): Ditto.
26720         (vuint16m1_t): Ditto.
26721         (vint16m2_t): Ditto.
26722         (vuint16m2_t): Ditto.
26723         (vint16m4_t): Ditto.
26724         (vuint16m4_t): Ditto.
26725         (vint16m8_t): Ditto.
26726         (vuint16m8_t): Ditto.
26727         (vint32mf2_t): Ditto.
26728         (vuint32mf2_t): Ditto.
26729         (vint32m1_t): Ditto.
26730         (vuint32m1_t): Ditto.
26731         (vint32m2_t): Ditto.
26732         (vuint32m2_t): Ditto.
26733         (vint32m4_t): Ditto.
26734         (vuint32m4_t): Ditto.
26735         (vint32m8_t): Ditto.
26736         (vuint32m8_t): Ditto.
26737         (vint64m1_t): Ditto.
26738         (vuint64m1_t): Ditto.
26739         (vint64m2_t): Ditto.
26740         (vuint64m2_t): Ditto.
26741         (vint64m4_t): Ditto.
26742         (vuint64m4_t): Ditto.
26743         (vint64m8_t): Ditto.
26744         (vuint64m8_t): Ditto.
26745         (vfloat16mf4_t): Ditto.
26746         (vfloat16mf2_t): Ditto.
26747         (vfloat16m1_t): Ditto.
26748         (vfloat16m2_t): Ditto.
26749         (vfloat16m4_t): Ditto.
26750         (vfloat16m8_t): Ditto.
26751         (vfloat32mf2_t): Ditto.
26752         (vfloat32m1_t): Ditto.
26753         (vfloat32m2_t): Ditto.
26754         (vfloat32m4_t): Ditto.
26755         (vfloat32m8_t): Ditto.
26756         (vfloat64m1_t): Ditto.
26757         (vfloat64m2_t): Ditto.
26758         (vfloat64m4_t): Ditto.
26759         (vfloat64m8_t): Ditto.
26760         * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
26761         (TUPLE_ENTRY): Ditto.
26762         * config/riscv/riscv-vsetvl.cc (change_insn): Ditto.
26763         * config/riscv/riscv.cc (riscv_valid_lo_sum_p): Ditto.
26764         (riscv_v_adjust_nunits): Ditto.
26765         (riscv_v_adjust_bytesize): Ditto.
26766         (riscv_v_adjust_precision): Ditto.
26767         (riscv_convert_vector_bits): Ditto.
26768         * config/riscv/riscv.h (riscv_v_adjust_nunits): Ditto.
26769         * config/riscv/riscv.md: Ditto.
26770         * config/riscv/vector-iterators.md: Ditto.
26771         * config/riscv/vector.md
26772         (@pred_indexed_<order>store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
26773         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
26774         (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
26775         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
26776         (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
26777         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
26778         (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
26779         (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
26780         (@pred_indexed_<order>load<V1T:mode><VNX1_QHSDI:mode>): Ditto.
26781         (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
26782         (@pred_indexed_<order>load<V2T:mode><VNX2_QHSDI:mode>): Ditto.
26783         (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
26784         (@pred_indexed_<order>load<V4T:mode><VNX4_QHSDI:mode>): Ditto.
26785         (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
26786         (@pred_indexed_<order>load<V8T:mode><VNX8_QHSDI:mode>): Ditto.
26787         (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
26788         (@pred_indexed_<order>load<V16T:mode><VNX16_QHSI:mode>): Ditto.
26789         (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
26790         (@pred_indexed_<order>load<V32T:mode><VNX32_QHI:mode>): Ditto.
26791         (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
26792         (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
26793         (@pred_indexed_<order>store<V1T:mode><VNX1_QHSDI:mode>): Ditto.
26794         (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
26795         (@pred_indexed_<order>store<V2T:mode><VNX2_QHSDI:mode>): Ditto.
26796         (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
26797         (@pred_indexed_<order>store<V4T:mode><VNX4_QHSDI:mode>): Ditto.
26798         (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
26799         (@pred_indexed_<order>store<V8T:mode><VNX8_QHSDI:mode>): Ditto.
26800         (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
26801         (@pred_indexed_<order>store<V16T:mode><VNX16_QHSI:mode>): Ditto.
26802         (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
26803         (@pred_indexed_<order>store<V32T:mode><VNX32_QHI:mode>): Ditto.
26804         (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
26806 2023-07-19  Vladimir N. Makarov  <vmakarov@redhat.com>
26808         * lra-int.h (lra_update_fp2sp_elimination): New prototype.
26809         (lra_asm_insn_error): New prototype.
26810         * lra-spills.cc (remove_pseudos): Add check for pseudo slot memory
26811         existence.
26812         (lra_spill): Call lra_update_fp2sp_elimination.
26813         * lra-eliminations.cc: Remove trailing spaces.
26814         (elimination_fp2sp_occured_p): New static flag.
26815         (lra_eliminate_regs_1): Set the flag up.
26816         (update_reg_eliminate): Modify the assert for stack to frame
26817         pointer elimination.
26818         (lra_update_fp2sp_elimination): New function.
26819         (lra_eliminate): Clear flag elimination_fp2sp_occured_p.
26821 2023-07-19  Andrew Carlotti  <andrew.carlotti@arm.com>
26823         * config/aarch64/aarch64.h (TARGET_MEMTAG): Remove armv8.5
26824         dependency.
26825         * config/aarch64/arm_acle.h: Remove unnecessary armv8.x
26826         dependencies from target pragmas.
26827         * config/aarch64/arm_fp16.h (target): Likewise.
26828         * config/aarch64/arm_neon.h (target): Likewise.
26830 2023-07-19  Andrew Pinski  <apinski@marvell.com>
26832         PR tree-optimization/110252
26833         * tree-ssa-phiopt.cc (class auto_flow_sensitive): New class.
26834         (auto_flow_sensitive::auto_flow_sensitive): New constructor.
26835         (auto_flow_sensitive::~auto_flow_sensitive): New deconstructor.
26836         (match_simplify_replacement): Temporarily
26837         remove the flow sensitive info on the two statements that might
26838         be moved.
26840 2023-07-19  Andrew Pinski  <apinski@marvell.com>
26842         * gimple-fold.cc (fosa_unwind): Replace `vrange_storage *`
26843         with flow_sensitive_info_storage.
26844         (follow_outer_ssa_edges): Update how to save off the flow
26845         sensitive info.
26846         (maybe_fold_comparisons_from_match_pd): Update restoring
26847         of flow sensitive info.
26848         * tree-ssanames.cc (flow_sensitive_info_storage::save): New method.
26849         (flow_sensitive_info_storage::restore): New method.
26850         (flow_sensitive_info_storage::save_and_clear): New method.
26851         (flow_sensitive_info_storage::clear_storage): New method.
26852         * tree-ssanames.h (class flow_sensitive_info_storage): New class.
26854 2023-07-19  Andrew Pinski  <apinski@marvell.com>
26856         PR tree-optimization/110726
26857         * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)):
26858         Add checks to make sure the type was one bit precision
26859         intergal type.
26861 2023-07-19  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26863         * doc/md.texi: Add mask_len_fold_left_plus.
26864         * internal-fn.cc (mask_len_fold_left_direct): Ditto.
26865         (expand_mask_len_fold_left_optab_fn): Ditto.
26866         (direct_mask_len_fold_left_optab_supported_p): Ditto.
26867         * internal-fn.def (MASK_LEN_FOLD_LEFT_PLUS): Ditto.
26868         * optabs.def (OPTAB_D): Ditto.
26870 2023-07-19  Jakub Jelinek  <jakub@redhat.com>
26872         * tree-switch-conversion.h (class bit_test_cluster): Fix comment typo.
26874 2023-07-19  Jakub Jelinek  <jakub@redhat.com>
26876         PR tree-optimization/110731
26877         * wide-int.cc (wi::divmod_internal): Always unpack dividend and
26878         divisor as UNSIGNED regardless of sgn.
26880 2023-07-19  Lehua Ding  <lehua.ding@rivai.ai>
26882         * common/config/riscv/riscv-common.cc (riscv_supported_std_ext): Init.
26883         (standard_extensions_p): Add check.
26884         (riscv_subset_list::add): Just return NULL if it failed before.
26885         (riscv_subset_list::parse_std_ext): Continue parse when find a error
26886         (riscv_subset_list::parse): Just return NULL if it failed before.
26887         * config/riscv/riscv-subset.h (class riscv_subset_list): Add field.
26889 2023-07-19  Jan Beulich  <jbeulich@suse.com>
26891         * config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate):
26892         Use gen_vec_set_0.
26893         (ix86_expand_vector_extract): Use gen_vec_extract_lo /
26894         gen_vec_extract_hi.
26895         (expand_vec_perm_broadcast_1): Use gen_vec_interleave_high /
26896         gen_vec_interleave_low. Rename local variable.
26898 2023-07-19  Jan Beulich  <jbeulich@suse.com>
26900         * config/i386/sse.md (vec_dupv2df<mask_name>): Add new AVX512F
26901         alternative. Move AVX512VL part of condition to new "enabled"
26902         attribute.
26904 2023-07-19  liuhongt  <hongtao.liu@intel.com>
26906         PR target/109504
26907         * config/i386/i386-builtins.cc
26908         (ix86_register_float16_builtin_type): Remove TARGET_SSE2.
26909         (ix86_register_bf16_builtin_type): Ditto.
26910         * config/i386/i386-c.cc (ix86_target_macros): When TARGET_SSE2
26911         isn't available, undef the macros which are used to check the
26912         backend support of the _Float16/__bf16 types when building
26913         libstdc++ and libgcc.
26914         * config/i386/i386.cc (construct_container): Issue errors for
26915         HFmode/BFmode when TARGET_SSE2 is not available.
26916         (function_value_32): Ditto.
26917         (ix86_scalar_mode_supported_p): Remove TARGET_SSE2 for HFmode/BFmode.
26918         (ix86_libgcc_floating_mode_supported_p): Ditto.
26919         (ix86_emit_support_tinfos): Adjust codes.
26920         (ix86_invalid_conversion): Return diagnostic message string
26921         when there's conversion from/to BF/HFmode w/o TARGET_SSE2.
26922         (ix86_invalid_unary_op): New function.
26923         (ix86_invalid_binary_op): Ditto.
26924         (TARGET_INVALID_UNARY_OP): Define.
26925         (TARGET_INVALID_BINARY_OP): Define.
26926         * config/i386/immintrin.h [__SSE2__]: Remove for fp16/bf16
26927         related instrinsics header files.
26928         * config/i386/i386.h (VALID_SSE2_TYPE_MODE): New macro.
26930 2023-07-18  Uros Bizjak  <ubizjak@gmail.com>
26932         * dwarf2asm.cc: Change FALSE to false.
26933         * dwarf2cfi.cc (execute_dwarf2_frame): Change return type to void.
26934         * dwarf2out.cc (matches_main_base): Change return type from
26935         int to bool.  Change "last_match" variable to bool.
26936         (dump_struct_debug): Change return type from int to bool.
26937         Change "matches" and "result" function arguments to bool.
26938         (is_pseudo_reg): Change return type from int to bool.
26939         (is_tagged_type): Ditto.
26940         (same_loc_p): Ditto.
26941         (same_dw_val_p): Change return type from int to bool and adjust
26942         function body accordingly.
26943         (same_attr_p): Ditto.
26944         (same_die_p): Ditto.
26945         (is_type_die): Ditto.
26946         (is_declaration_die): Ditto.
26947         (should_move_die_to_comdat): Ditto.
26948         (is_base_type): Ditto.
26949         (is_based_loc): Ditto.
26950         (local_scope_p): Ditto.
26951         (class_scope_p): Ditto.
26952         (class_or_namespace_scope_p): Ditto.
26953         (is_tagged_type): Ditto.
26954         (is_rust): Use void argument.
26955         (is_nested_in_subprogram): Change return type from int to bool.
26956         (contains_subprogram_definition): Ditto.
26957         (gen_struct_or_union_type_die): Change "nested", "complete"
26958         and "ns_decl" variables to bool.
26959         (is_naming_typedef_decl): Change FALSE to false.
26961 2023-07-18  Jan Hubicka  <jh@suse.cz>
26963         * tree-ssa-loop-ch.cc (edge_range_query): Take loop argument; be ready
26964         for queries not in headers.
26965         (static_loop_exit): Add basic blck parameter; update use of
26966         edge_range_query
26967         (should_duplicate_loop_header_p): Add ranger and static_exits
26968         parameter.  Do not account statements that will be optimized
26969         out after duplicaiton in overall size. Add ranger query to
26970         find static exits.
26971         (update_profile_after_ch):  Take static_exits has set instead of
26972         single eliminated_edge.
26973         (ch_base::copy_headers): Do all analysis in the first pass;
26974         remember invariant_exits and static_exits.
26976 2023-07-18  Jason Merrill  <jason@redhat.com>
26978         * fold-const.cc (native_interpret_aggregate): Skip empty fields.
26980 2023-07-18  Gaius Mulley  <gaiusmod2@gmail.com>
26982         * doc/gm2.texi (Semantic checking): Change example testwithptr
26983         to testnew6.
26985 2023-07-18  Richard Biener  <rguenther@suse.de>
26987         PR middle-end/105715
26988         * gimple-isel.cc (gimple_expand_vec_exprs): Merge into...
26989         (pass_gimple_isel::execute): ... this.  Duplicate
26990         comparison defs of COND_EXPRs.
26992 2023-07-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
26994         * config/riscv/riscv-selftests.cc (run_poly_int_selftests): Add more selftests.
26995         * config/riscv/riscv.cc (riscv_legitimize_poly_move): Dynamic adjust size of VLA vectors.
26996         (riscv_convert_vector_bits): Ditto.
26998 2023-07-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
27000         * config/riscv/autovec.md (vec_shl_insert_<mode>): New patterns.
27001         * config/riscv/riscv-v.cc (shuffle_compress_patterns): Fix bugs.
27003 2023-07-18  Juergen Christ  <jchrist@linux.ibm.com>
27005         * config/s390/vx-builtins.md: New vsel pattern.
27007 2023-07-18  liuhongt  <hongtao.liu@intel.com>
27009         PR target/110438
27010         * config/i386/sse.md (<mask_codefor>one_cmpl<mode>2<mask_name>):
27011         Remove # from assemble output.
27013 2023-07-18  liuhongt  <hongtao.liu@intel.com>
27015         PR target/110591
27016         * config/i386/sync.md (cmpccxadd_<mode>): Adjust the pattern
27017         to explicitly set FLAGS_REG like *cmp<mode>_1, also add extra
27018         3 define_peephole2 after the pattern.
27020 2023-07-18  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
27022         * rtl-ssa/internals.inl: Fix when mode1 and mode2 are not ordred.
27024 2023-07-18  Pan Li  <pan2.li@intel.com>
27025             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
27027         * config/riscv/riscv.cc (struct machine_function): Add new field.
27028         (riscv_static_frm_mode_p): New function.
27029         (riscv_emit_frm_mode_set): New function for emit FRM.
27030         (riscv_emit_mode_set): Extract function for FRM.
27031         (riscv_mode_needed): Fix the TODO.
27032         (riscv_mode_entry): Initial dynamic frm RTL.
27033         (riscv_mode_exit): Return DYN_EXIT.
27034         * config/riscv/riscv.md: Add rdfrm.
27035         * config/riscv/vector-iterators.md (unspecv): Add DYN_EXIT unspecv.
27036         * config/riscv/vector.md (frm_modee): Add new mode dyn_exit.
27037         (fsrm): Removed.
27038         (fsrmsi_backup): New pattern for swap.
27039         (fsrmsi_restore): New pattern for restore.
27040         (fsrmsi_restore_exit): New pattern for restore exit.
27041         (frrmsi): New pattern for backup.
27043 2023-07-17  Arsen Arsenović  <arsen@aarsen.me>
27045         * doc/extend.texi: Add @cindex on __auto_type.
27047 2023-07-17  Uros Bizjak  <ubizjak@gmail.com>
27049         * combine-stack-adj.cc (stack_memref_p): Change return type from
27050         int to bool and adjust function body accordingly.
27051         (rest_of_handle_stack_adjustments): Change return type to void.
27053 2023-07-17  Uros Bizjak  <ubizjak@gmail.com>
27055         * combine.cc (struct reg_stat_type): Change last_set_invalid to bool.
27056         (cant_combine_insn_p): Change return type from int to bool and adjust
27057         function body accordingly.
27058         (can_combine_p): Ditto.
27059         (combinable_i3pat): Ditto.  Change "i1_not_in_src" and "i0_not_in_src"
27060         function arguments from int to bool.
27061         (contains_muldiv): Change return type from int to bool and adjust
27062         function body accordingly.
27063         (try_combine): Ditto. Change "new_direct_jump" pointer function
27064         argument from int to bool.  Change "substed_i2", "substed_i1",
27065         "substed_i0", "added_sets_0", "added_sets_1", "added_sets_2",
27066         "i2dest_in_i2src", "i1dest_in_i1src", "i2dest_in_i1src",
27067         "i0dest_in_i0src", "i1dest_in_i0src", "i2dest_in_i0src",
27068         "i2dest_killed", "i1dest_killed", "i0dest_killed", "i1_feeds_i2_n",
27069         "i0_feeds_i2_n", "i0_feeds_i1_n", "i3_subst_into_i2", "have_mult",
27070         "swap_i2i3", "split_i2i3" and "changed_i3_dest" variables
27071         from int to bool.
27072         (subst): Change "in_dest", "in_cond" and "unique_copy" function
27073         arguments from int to bool.
27074         (combine_simplify_rtx): Change "in_dest" and "in_cond" function
27075         arguments from int to bool.
27076         (make_extraction): Change "unsignedp", "in_dest" and "in_compare"
27077         function argument from int to bool.
27078         (force_int_to_mode): Change "just_select" function argument
27079         from int to bool.  Change "next_select" variable to bool.
27080         (rtx_equal_for_field_assignment_p): Change return type from
27081         int to bool and adjust function body accordingly.
27082         (merge_outer_ops): Ditto.  Change "pcomp_p" pointer function
27083         argument from int to bool.
27084         (get_last_value_validate): Change return type from int to bool
27085         and adjust function body accordingly.
27086         (reg_dead_at_p): Ditto.
27087         (reg_bitfield_target_p): Ditto.
27088         (combine_instructions): Ditto.  Change "new_direct_jump"
27089         variable to bool.
27090         (can_combine_p): Change return type from int to bool
27091         and adjust function body accordingly.
27092         (likely_spilled_retval_p): Ditto.
27093         (can_change_dest_mode): Change "added_sets" function argument
27094         from int to bool.
27095         (find_split_point): Change "unsignedp" variable to bool.
27096         (simplify_if_then_else): Change "comparison_p" and "swapped"
27097         variables to bool.
27098         (simplify_set): Change "other_changed" variable to bool.
27099         (expand_compound_operation): Change "unsignedp" variable to bool.
27100         (force_to_mode): Change "just_select" function argument
27101         from int to bool.  Change "next_select" variable to bool.
27102         (extended_count): Change "unsignedp" function argument to bool.
27103         (simplify_shift_const_1): Change "complement_p" variable to bool.
27104         (simplify_comparison): Change "changed" variable to bool.
27105         (rest_of_handle_combine): Change return type to void.
27107 2023-07-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
27109         PR plugins/110610
27110         * Makefile.in (INTERNAL_FN_H): Add insn-opinit.h.
27112 2023-07-17  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
27114         * ira.cc (setup_reg_class_relations): Continue
27115         if regclass cl3 is hard_reg_set_empty_p.
27117 2023-07-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
27119         * config/riscv/riscv.cc (riscv_option_override): Add sorry check.
27121 2023-07-17  Martin Jambor  <mjambor@suse.cz>
27123         * tree-ssa-loop-ivcanon.cc (try_peel_loop): Remove unused variable
27124         entry_count.
27126 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
27128         * tree-ssa-ccp.cc (ccp_finalize): Export value/mask known bits.
27130 2023-07-17  Lehua Ding  <lehua.ding@rivai.ai>
27132         PR target/110696
27133         * common/config/riscv/riscv-common.cc (riscv_subset_list::handle_implied_ext):
27134         recur add all implied extensions.
27135         (riscv_subset_list::check_implied_ext): Add new method.
27136         (riscv_subset_list::parse): Call checker check_implied_ext.
27137         * config/riscv/riscv-subset.h: Add new method.
27139 2023-07-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
27141         * config/riscv/autovec.md (reduc_plus_scal_<mode>): New pattern.
27142         (reduc_smax_scal_<mode>): Ditto.
27143         (reduc_umax_scal_<mode>): Ditto.
27144         (reduc_smin_scal_<mode>): Ditto.
27145         (reduc_umin_scal_<mode>): Ditto.
27146         (reduc_and_scal_<mode>): Ditto.
27147         (reduc_ior_scal_<mode>): Ditto.
27148         (reduc_xor_scal_<mode>): Ditto.
27149         * config/riscv/riscv-protos.h (enum insn_type): Add reduction.
27150         (expand_reduction): New function.
27151         * config/riscv/riscv-v.cc (emit_vlmax_reduction_insn): Ditto.
27152         (emit_vlmax_fp_reduction_insn): Ditto.
27153         (get_m1_mode): Ditto.
27154         (expand_cond_len_binop): Fix name.
27155         (expand_reduction): New function
27156         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Fix VSETVL BUG.
27157         (validate_change_or_fail): New function.
27158         (change_insn): Fix VSETVL BUG.
27159         (change_vsetvl_insn): Ditto.
27160         (pass_vsetvl::backward_demand_fusion): Ditto.
27161         (pass_vsetvl::df_post_optimization): Ditto.
27163 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
27165         * ipa-prop.cc (ipcp_update_bits): Export value/mask known bits.
27167 2023-07-17  Christoph Müllner  <christoph.muellner@vrull.eu>
27169         * config/riscv/riscv.cc (riscv_regno_ok_for_index_p):
27170         Remove parameter name from declaration of unused parameter.
27172 2023-07-17  Kewen Lin  <linkw@linux.ibm.com>
27174         PR tree-optimization/110652
27175         * tree-vect-stmts.cc (vectorizable_load): Initialize new_temp as
27176         NULL_TREE.
27178 2023-07-17  Richard Biener  <rguenther@suse.de>
27180         PR tree-optimization/110669
27181         * tree-scalar-evolution.cc (analyze_and_compute_bitop_with_inv_effect):
27182         Check we matched a header PHI.
27184 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
27186         * tree-ssanames.cc (set_bitmask): New.
27187         * tree-ssanames.h (set_bitmask): New.
27189 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
27191         * value-range.cc (irange_bitmask::verify_mask): Mask need not be
27192         normalized.
27193         * value-range.h (irange_bitmask::union_): Normalize beforehand.
27194         (irange_bitmask::intersect): Same.
27196 2023-07-17  Andrew Pinski  <apinski@marvell.com>
27198         PR tree-optimization/95923
27199         * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)): New transformation.
27201 2023-07-17  Roger Sayle  <roger@nextmovesoftware.com>
27203         * tree-if-conv.cc (predicate_scalar_phi): Make the arguments
27204         to the std::sort comparison lambda function const.
27206 2023-07-17  Andrew Pinski  <apinski@marvell.com>
27208         PR tree-optimization/110666
27209         * match.pd (A NEEQ (A NEEQ CST)): Fix Outer EQ case.
27211 2023-07-17  Mo, Zewei  <zewei.mo@intel.com>
27213         * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Lunar Lake,
27214         Arrow Lake and Arrow Lake S.
27215         * common/config/i386/i386-common.cc:
27216         (processor_name): Add arrowlake.
27217         (processor_alias_table): Add arrow lake, arrow lake s and lunar
27218         lake.
27219         * common/config/i386/i386-cpuinfo.h (enum processor_subtypes):
27220         Add INTEL_COREI7_ARROWLAKE and INTEL_COREI7_ARROWLAKE_S.
27221         * config.gcc: Add -march=arrowlake and -march=arrowlake-s.
27222         * config/i386/driver-i386.cc (host_detect_local_cpu): Handle
27223         arrowlake-s.
27224         * config/i386/i386-c.cc (ix86_target_macros_internal): Add
27225         arrowlake.
27226         * config/i386/i386-options.cc (m_ARROWLAKE): New.
27227         (processor_cost_table): Add arrowlake.
27228         * config/i386/i386.h (enum processor_type):
27229         Add PROCESSOR_ARROWLAKE.
27230         * config/i386/x86-tune.def: Add m_ARROWLAKE.
27231         * doc/extend.texi: Add arrowlake and arrowlake-s.
27232         * doc/invoke.texi: Ditto.
27234 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
27236         * config/i386/sse.md (VI2_AVX2): Delete V32HI since we actually
27237         have the same iterator. Also renaming all the occurence to
27238         VI2_AVX2_AVX512BW.
27239         (usdot_prod<mode>): New define_expand.
27240         (udot_prod<mode>): Ditto.
27242 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
27244         * common/config/i386/cpuinfo.h (get_available_features):
27245         Detech SM4.
27246         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SM4_SET,
27247         OPTION_MASK_ISA2_SM4_UNSET): New.
27248         (OPTION_MASK_ISA2_AVX_UNSET): Add SM4.
27249         (ix86_handle_option): Handle -msm4.
27250         * common/config/i386/i386-cpuinfo.h (enum processor_features):
27251         Add FEATURE_SM4.
27252         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
27253         sm4.
27254         * config.gcc: Add sm4intrin.h.
27255         * config/i386/cpuid.h (bit_SM4): New.
27256         * config/i386/i386-builtin.def (BDESC): Add new builtins.
27257         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
27258         __SM4__.
27259         * config/i386/i386-isa.def (SM4): Add DEF_PTA(SM4).
27260         * config/i386/i386-options.cc (isa2_opts): Add -msm4.
27261         (ix86_valid_target_attribute_inner_p): Handle sm4.
27262         * config/i386/i386.opt: Add option -msm4.
27263         * config/i386/immintrin.h: Include sm4intrin.h
27264         * config/i386/sse.md (vsm4key4_<mode>): New define insn.
27265         (vsm4rnds4_<mode>): Ditto.
27266         * doc/extend.texi: Document sm4.
27267         * doc/invoke.texi: Document -msm4.
27268         * doc/sourcebuild.texi: Document target sm4.
27269         * config/i386/sm4intrin.h: New file.
27271 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
27273         * common/config/i386/cpuinfo.h (get_available_features):
27274         Detect SHA512.
27275         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SHA512_SET,
27276         OPTION_MASK_ISA2_SHA512_UNSET): New.
27277         (OPTION_MASK_ISA2_AVX_UNSET): Add SHA512.
27278         (ix86_handle_option): Handle -msha512.
27279         * common/config/i386/i386-cpuinfo.h (enum processor_features):
27280         Add FEATURE_SHA512.
27281         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
27282         sha512.
27283         * config.gcc: Add sha512intrin.h.
27284         * config/i386/cpuid.h (bit_SHA512): New.
27285         * config/i386/i386-builtin-types.def:
27286         Add DEF_FUNCTION_TYPE (V4DI, V4DI, V4DI, V2DI).
27287         * config/i386/i386-builtin.def (BDESC): Add new builtins.
27288         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
27289         __SHA512__.
27290         * config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle
27291         V4DI_FTYPE_V4DI_V4DI_V2DI and V4DI_FTYPE_V4DI_V2DI.
27292         * config/i386/i386-isa.def (SHA512): Add DEF_PTA(SHA512).
27293         * config/i386/i386-options.cc (isa2_opts): Add -msha512.
27294         (ix86_valid_target_attribute_inner_p): Handle sha512.
27295         * config/i386/i386.opt: Add option -msha512.
27296         * config/i386/immintrin.h: Include sha512intrin.h.
27297         * config/i386/sse.md (vsha512msg1): New define insn.
27298         (vsha512msg2): Ditto.
27299         (vsha512rnds2): Ditto.
27300         * doc/extend.texi: Document sha512.
27301         * doc/invoke.texi: Document -msha512.
27302         * doc/sourcebuild.texi: Document target sha512.
27303         * config/i386/sha512intrin.h: New file.
27305 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
27307         * common/config/i386/cpuinfo.h (get_available_features):
27308         Detect SM3.
27309         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SM3_SET,
27310         OPTION_MASK_ISA2_SM3_UNSET): New.
27311         (OPTION_MASK_ISA2_AVX_UNSET): Add SM3.
27312         (ix86_handle_option): Handle -msm3.
27313         * common/config/i386/i386-cpuinfo.h (enum processor_features):
27314         Add FEATURE_SM3.
27315         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
27316         SM3.
27317         * config.gcc: Add sm3intrin.h
27318         * config/i386/cpuid.h (bit_SM3): New.
27319         * config/i386/i386-builtin-types.def:
27320         Add DEF_FUNCTION_TYPE (V4SI, V4SI, V4SI, V4SI, INT).
27321         * config/i386/i386-builtin.def (BDESC): Add new builtins.
27322         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
27323         __SM3__.
27324         * config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle
27325         V4SI_FTYPE_V4SI_V4SI_V4SI_INT.
27326         * config/i386/i386-isa.def (SM3): Add DEF_PTA(SM3).
27327         * config/i386/i386-options.cc (isa2_opts): Add -msm3.
27328         (ix86_valid_target_attribute_inner_p): Handle sm3.
27329         * config/i386/i386.opt: Add option -msm3.
27330         * config/i386/immintrin.h: Include sm3intrin.h.
27331         * config/i386/sse.md (vsm3msg1): New define insn.
27332         (vsm3msg2): Ditto.
27333         (vsm3rnds2): Ditto.
27334         * doc/extend.texi: Document sm3.
27335         * doc/invoke.texi: Document -msm3.
27336         * doc/sourcebuild.texi: Document target sm3.
27337         * config/i386/sm3intrin.h: New file.
27339 2023-07-17  Kong Lingling  <lingling.kong@intel.com>
27340             Haochen Jiang  <haochen.jiang@intel.com>
27342         * common/config/i386/cpuinfo.h (get_available_features): Detect
27343         avxvnniint16.
27344         * common/config/i386/i386-common.cc
27345         (OPTION_MASK_ISA2_AVXVNNIINT16_SET): New.
27346         (OPTION_MASK_ISA2_AVXVNNIINT16_UNSET): Ditto.
27347         (ix86_handle_option): Handle -mavxvnniint16.
27348         * common/config/i386/i386-cpuinfo.h (enum processor_features):
27349         Add FEATURE_AVXVNNIINT16.
27350         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
27351         avxvnniint16.
27352         * config.gcc: Add avxvnniint16.h.
27353         * config/i386/avxvnniint16intrin.h: New file.
27354         * config/i386/cpuid.h (bit_AVXVNNIINT16): New.
27355         * config/i386/i386-builtin.def: Add new builtins.
27356         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
27357         __AVXVNNIINT16__.
27358         * config/i386/i386-options.cc (isa2_opts): Add -mavxvnniint16.
27359         (ix86_valid_target_attribute_inner_p): Handle avxvnniint16intrin.h.
27360         * config/i386/i386-isa.def: Add DEF_PTA(AVXVNNIINT16).
27361         * config/i386/i386.opt: Add option -mavxvnniint16.
27362         * config/i386/immintrin.h: Include avxvnniint16.h.
27363         * config/i386/sse.md
27364         (vpdp<vpdpwprodtype>_<mode>): New define_insn.
27365         * doc/extend.texi: Document avxvnniint16.
27366         * doc/invoke.texi: Document -mavxvnniint16.
27367         * doc/sourcebuild.texi: Document target avxvnniint16.
27369 2023-07-16  Jan Hubicka  <jh@suse.cz>
27371         PR middle-end/110649
27372         * tree-vect-loop.cc (scale_profile_for_vect_loop): Rewrite.
27373         (vect_transform_loop): Move scale_profile_for_vect_loop after
27374         upper bound updates.
27376 2023-07-16  Jan Hubicka  <jh@suse.cz>
27378         PR tree-optimization/110649
27379         * tree-vect-loop.cc (optimize_mask_stores): Set correctly
27380         probability of the if-then-else construct.
27382 2023-07-16  Jan Hubicka  <jh@suse.cz>
27384         PR middle-end/110649
27385         * tree-ssa-loop-ivcanon.cc (try_peel_loop): Avoid double profile update.
27387 2023-07-15  Andrew Pinski  <apinski@marvell.com>
27389         * doc/contrib.texi: Update my entry.
27391 2023-07-15  John David Anglin  <danglin@gcc.gnu.org>
27393         * config/pa/pa.md: Define constants R1_REGNUM, R19_REGNUM and
27394         R27_REGNUM.
27395         (tgd_load): Restrict to !TARGET_64BIT. Use register constants.
27396         (tld_load): Likewise.
27397         (tgd_load_pic): Change to expander.
27398         (tld_load_pic, tld_offset_load, tp_load): Likewise.
27399         (tie_load_pic, tle_load): Likewise.
27400         (tgd_load_picsi, tgd_load_picdi): New.
27401         (tld_load_picsi, tld_load_picdi): New.
27402         (tld_offset_load<P:mode>): New.
27403         (tp_load<P:mode>): New.
27404         (tie_load_picsi, tie_load_picdi): New.
27405         (tle_load<P:mode>): New.
27407 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
27409         * config/arm/arm-mve-builtins-base.cc (vcmlaq, vcmlaq_rot90)
27410         (vcmlaq_rot180, vcmlaq_rot270): New.
27411         * config/arm/arm-mve-builtins-base.def (vcmlaq, vcmlaq_rot90)
27412         (vcmlaq_rot180, vcmlaq_rot270): New.
27413         * config/arm/arm-mve-builtins-base.h: (vcmlaq, vcmlaq_rot90)
27414         (vcmlaq_rot180, vcmlaq_rot270): New.
27415         * config/arm/arm-mve-builtins.cc
27416         (function_instance::has_inactive_argument): Handle vcmlaq,
27417         vcmlaq_rot90, vcmlaq_rot180, vcmlaq_rot270.
27418         * config/arm/arm_mve.h (vcmlaq): Delete.
27419         (vcmlaq_rot180): Delete.
27420         (vcmlaq_rot270): Delete.
27421         (vcmlaq_rot90): Delete.
27422         (vcmlaq_m): Delete.
27423         (vcmlaq_rot180_m): Delete.
27424         (vcmlaq_rot270_m): Delete.
27425         (vcmlaq_rot90_m): Delete.
27426         (vcmlaq_f16): Delete.
27427         (vcmlaq_rot180_f16): Delete.
27428         (vcmlaq_rot270_f16): Delete.
27429         (vcmlaq_rot90_f16): Delete.
27430         (vcmlaq_f32): Delete.
27431         (vcmlaq_rot180_f32): Delete.
27432         (vcmlaq_rot270_f32): Delete.
27433         (vcmlaq_rot90_f32): Delete.
27434         (vcmlaq_m_f32): Delete.
27435         (vcmlaq_m_f16): Delete.
27436         (vcmlaq_rot180_m_f32): Delete.
27437         (vcmlaq_rot180_m_f16): Delete.
27438         (vcmlaq_rot270_m_f32): Delete.
27439         (vcmlaq_rot270_m_f16): Delete.
27440         (vcmlaq_rot90_m_f32): Delete.
27441         (vcmlaq_rot90_m_f16): Delete.
27442         (__arm_vcmlaq_f16): Delete.
27443         (__arm_vcmlaq_rot180_f16): Delete.
27444         (__arm_vcmlaq_rot270_f16): Delete.
27445         (__arm_vcmlaq_rot90_f16): Delete.
27446         (__arm_vcmlaq_f32): Delete.
27447         (__arm_vcmlaq_rot180_f32): Delete.
27448         (__arm_vcmlaq_rot270_f32): Delete.
27449         (__arm_vcmlaq_rot90_f32): Delete.
27450         (__arm_vcmlaq_m_f32): Delete.
27451         (__arm_vcmlaq_m_f16): Delete.
27452         (__arm_vcmlaq_rot180_m_f32): Delete.
27453         (__arm_vcmlaq_rot180_m_f16): Delete.
27454         (__arm_vcmlaq_rot270_m_f32): Delete.
27455         (__arm_vcmlaq_rot270_m_f16): Delete.
27456         (__arm_vcmlaq_rot90_m_f32): Delete.
27457         (__arm_vcmlaq_rot90_m_f16): Delete.
27458         (__arm_vcmlaq): Delete.
27459         (__arm_vcmlaq_rot180): Delete.
27460         (__arm_vcmlaq_rot270): Delete.
27461         (__arm_vcmlaq_rot90): Delete.
27462         (__arm_vcmlaq_m): Delete.
27463         (__arm_vcmlaq_rot180_m): Delete.
27464         (__arm_vcmlaq_rot270_m): Delete.
27465         (__arm_vcmlaq_rot90_m): Delete.
27467 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
27469         * config/arm/arm_mve_builtins.def (vcmlaq_rot90_f)
27470         (vcmlaq_rot270_f, vcmlaq_rot180_f, vcmlaq_f): Add "_f" suffix.
27471         * config/arm/iterators.md (MVE_VCMLAQ_M): New.
27472         (mve_insn): Add vcmla.
27473         (rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F,
27474         VCMLAQ_ROT270_M_F.
27475         (mve_rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F,
27476         VCMLAQ_ROT270_M_F.
27477         * config/arm/mve.md (mve_vcmlaq<mve_rot><mode>): Rename into ...
27478         (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this.
27479         (mve_vcmlaq_m_f<mode>, mve_vcmlaq_rot180_m_f<mode>)
27480         (mve_vcmlaq_rot270_m_f<mode>, mve_vcmlaq_rot90_m_f<mode>): Merge
27481         into ...
27482         (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
27484 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
27486         * config/arm/arm-mve-builtins-base.cc (vcmulq, vcmulq_rot90)
27487         (vcmulq_rot180, vcmulq_rot270): New.
27488         * config/arm/arm-mve-builtins-base.def (vcmulq, vcmulq_rot90)
27489         (vcmulq_rot180, vcmulq_rot270): New.
27490         * config/arm/arm-mve-builtins-base.h: (vcmulq, vcmulq_rot90)
27491         (vcmulq_rot180, vcmulq_rot270): New.
27492         * config/arm/arm_mve.h (vcmulq_rot90): Delete.
27493         (vcmulq_rot270): Delete.
27494         (vcmulq_rot180): Delete.
27495         (vcmulq): Delete.
27496         (vcmulq_m): Delete.
27497         (vcmulq_rot180_m): Delete.
27498         (vcmulq_rot270_m): Delete.
27499         (vcmulq_rot90_m): Delete.
27500         (vcmulq_x): Delete.
27501         (vcmulq_rot90_x): Delete.
27502         (vcmulq_rot180_x): Delete.
27503         (vcmulq_rot270_x): Delete.
27504         (vcmulq_rot90_f16): Delete.
27505         (vcmulq_rot270_f16): Delete.
27506         (vcmulq_rot180_f16): Delete.
27507         (vcmulq_f16): Delete.
27508         (vcmulq_rot90_f32): Delete.
27509         (vcmulq_rot270_f32): Delete.
27510         (vcmulq_rot180_f32): Delete.
27511         (vcmulq_f32): Delete.
27512         (vcmulq_m_f32): Delete.
27513         (vcmulq_m_f16): Delete.
27514         (vcmulq_rot180_m_f32): Delete.
27515         (vcmulq_rot180_m_f16): Delete.
27516         (vcmulq_rot270_m_f32): Delete.
27517         (vcmulq_rot270_m_f16): Delete.
27518         (vcmulq_rot90_m_f32): Delete.
27519         (vcmulq_rot90_m_f16): Delete.
27520         (vcmulq_x_f16): Delete.
27521         (vcmulq_x_f32): Delete.
27522         (vcmulq_rot90_x_f16): Delete.
27523         (vcmulq_rot90_x_f32): Delete.
27524         (vcmulq_rot180_x_f16): Delete.
27525         (vcmulq_rot180_x_f32): Delete.
27526         (vcmulq_rot270_x_f16): Delete.
27527         (vcmulq_rot270_x_f32): Delete.
27528         (__arm_vcmulq_rot90_f16): Delete.
27529         (__arm_vcmulq_rot270_f16): Delete.
27530         (__arm_vcmulq_rot180_f16): Delete.
27531         (__arm_vcmulq_f16): Delete.
27532         (__arm_vcmulq_rot90_f32): Delete.
27533         (__arm_vcmulq_rot270_f32): Delete.
27534         (__arm_vcmulq_rot180_f32): Delete.
27535         (__arm_vcmulq_f32): Delete.
27536         (__arm_vcmulq_m_f32): Delete.
27537         (__arm_vcmulq_m_f16): Delete.
27538         (__arm_vcmulq_rot180_m_f32): Delete.
27539         (__arm_vcmulq_rot180_m_f16): Delete.
27540         (__arm_vcmulq_rot270_m_f32): Delete.
27541         (__arm_vcmulq_rot270_m_f16): Delete.
27542         (__arm_vcmulq_rot90_m_f32): Delete.
27543         (__arm_vcmulq_rot90_m_f16): Delete.
27544         (__arm_vcmulq_x_f16): Delete.
27545         (__arm_vcmulq_x_f32): Delete.
27546         (__arm_vcmulq_rot90_x_f16): Delete.
27547         (__arm_vcmulq_rot90_x_f32): Delete.
27548         (__arm_vcmulq_rot180_x_f16): Delete.
27549         (__arm_vcmulq_rot180_x_f32): Delete.
27550         (__arm_vcmulq_rot270_x_f16): Delete.
27551         (__arm_vcmulq_rot270_x_f32): Delete.
27552         (__arm_vcmulq_rot90): Delete.
27553         (__arm_vcmulq_rot270): Delete.
27554         (__arm_vcmulq_rot180): Delete.
27555         (__arm_vcmulq): Delete.
27556         (__arm_vcmulq_m): Delete.
27557         (__arm_vcmulq_rot180_m): Delete.
27558         (__arm_vcmulq_rot270_m): Delete.
27559         (__arm_vcmulq_rot90_m): Delete.
27560         (__arm_vcmulq_x): Delete.
27561         (__arm_vcmulq_rot90_x): Delete.
27562         (__arm_vcmulq_rot180_x): Delete.
27563         (__arm_vcmulq_rot270_x): Delete.
27565 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
27567         * config/arm/arm_mve_builtins.def (vcmulq_rot90_f)
27568         (vcmulq_rot270_f, vcmulq_rot180_f, vcmulq_f): Add "_f" suffix.
27569         * config/arm/iterators.md (MVE_VCADDQ_VCMULQ)
27570         (MVE_VCADDQ_VCMULQ_M): New.
27571         (mve_insn): Add vcmul.
27572         (rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F,
27573         VCMULQ_ROT270_M_F.
27574         (VCMUL): Delete.
27575         (mve_rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F,
27576         VCMULQ_ROT270_M_F.
27577         * config/arm/mve.md (mve_vcmulq<mve_rot><mode>): Merge into
27578         @mve_<mve_insn>q<mve_rot>_f<mode>.
27579         (mve_vcmulq_m_f<mode>, mve_vcmulq_rot180_m_f<mode>)
27580         (mve_vcmulq_rot270_m_f<mode>, mve_vcmulq_rot90_m_f<mode>): Merge
27581         into @mve_<mve_insn>q<mve_rot>_m_f<mode>.
27583 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
27585         * config/arm/arm-mve-builtins-base.cc (vcaddq_rot90)
27586         (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
27587         * config/arm/arm-mve-builtins-base.def (vcaddq_rot90)
27588         (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
27589         * config/arm/arm-mve-builtins-base.h: (vcaddq_rot90)
27590         (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
27591         * config/arm/arm-mve-builtins-functions.h (class
27592         unspec_mve_function_exact_insn_rot): New.
27593         * config/arm/arm_mve.h (vcaddq_rot90): Delete.
27594         (vcaddq_rot270): Delete.
27595         (vhcaddq_rot90): Delete.
27596         (vhcaddq_rot270): Delete.
27597         (vcaddq_rot270_m): Delete.
27598         (vcaddq_rot90_m): Delete.
27599         (vhcaddq_rot270_m): Delete.
27600         (vhcaddq_rot90_m): Delete.
27601         (vcaddq_rot90_x): Delete.
27602         (vcaddq_rot270_x): Delete.
27603         (vhcaddq_rot90_x): Delete.
27604         (vhcaddq_rot270_x): Delete.
27605         (vcaddq_rot90_u8): Delete.
27606         (vcaddq_rot270_u8): Delete.
27607         (vhcaddq_rot90_s8): Delete.
27608         (vhcaddq_rot270_s8): Delete.
27609         (vcaddq_rot90_s8): Delete.
27610         (vcaddq_rot270_s8): Delete.
27611         (vcaddq_rot90_u16): Delete.
27612         (vcaddq_rot270_u16): Delete.
27613         (vhcaddq_rot90_s16): Delete.
27614         (vhcaddq_rot270_s16): Delete.
27615         (vcaddq_rot90_s16): Delete.
27616         (vcaddq_rot270_s16): Delete.
27617         (vcaddq_rot90_u32): Delete.
27618         (vcaddq_rot270_u32): Delete.
27619         (vhcaddq_rot90_s32): Delete.
27620         (vhcaddq_rot270_s32): Delete.
27621         (vcaddq_rot90_s32): Delete.
27622         (vcaddq_rot270_s32): Delete.
27623         (vcaddq_rot90_f16): Delete.
27624         (vcaddq_rot270_f16): Delete.
27625         (vcaddq_rot90_f32): Delete.
27626         (vcaddq_rot270_f32): Delete.
27627         (vcaddq_rot270_m_s8): Delete.
27628         (vcaddq_rot270_m_s32): Delete.
27629         (vcaddq_rot270_m_s16): Delete.
27630         (vcaddq_rot270_m_u8): Delete.
27631         (vcaddq_rot270_m_u32): Delete.
27632         (vcaddq_rot270_m_u16): Delete.
27633         (vcaddq_rot90_m_s8): Delete.
27634         (vcaddq_rot90_m_s32): Delete.
27635         (vcaddq_rot90_m_s16): Delete.
27636         (vcaddq_rot90_m_u8): Delete.
27637         (vcaddq_rot90_m_u32): Delete.
27638         (vcaddq_rot90_m_u16): Delete.
27639         (vhcaddq_rot270_m_s8): Delete.
27640         (vhcaddq_rot270_m_s32): Delete.
27641         (vhcaddq_rot270_m_s16): Delete.
27642         (vhcaddq_rot90_m_s8): Delete.
27643         (vhcaddq_rot90_m_s32): Delete.
27644         (vhcaddq_rot90_m_s16): Delete.
27645         (vcaddq_rot270_m_f32): Delete.
27646         (vcaddq_rot270_m_f16): Delete.
27647         (vcaddq_rot90_m_f32): Delete.
27648         (vcaddq_rot90_m_f16): Delete.
27649         (vcaddq_rot90_x_s8): Delete.
27650         (vcaddq_rot90_x_s16): Delete.
27651         (vcaddq_rot90_x_s32): Delete.
27652         (vcaddq_rot90_x_u8): Delete.
27653         (vcaddq_rot90_x_u16): Delete.
27654         (vcaddq_rot90_x_u32): Delete.
27655         (vcaddq_rot270_x_s8): Delete.
27656         (vcaddq_rot270_x_s16): Delete.
27657         (vcaddq_rot270_x_s32): Delete.
27658         (vcaddq_rot270_x_u8): Delete.
27659         (vcaddq_rot270_x_u16): Delete.
27660         (vcaddq_rot270_x_u32): Delete.
27661         (vhcaddq_rot90_x_s8): Delete.
27662         (vhcaddq_rot90_x_s16): Delete.
27663         (vhcaddq_rot90_x_s32): Delete.
27664         (vhcaddq_rot270_x_s8): Delete.
27665         (vhcaddq_rot270_x_s16): Delete.
27666         (vhcaddq_rot270_x_s32): Delete.
27667         (vcaddq_rot90_x_f16): Delete.
27668         (vcaddq_rot90_x_f32): Delete.
27669         (vcaddq_rot270_x_f16): Delete.
27670         (vcaddq_rot270_x_f32): Delete.
27671         (__arm_vcaddq_rot90_u8): Delete.
27672         (__arm_vcaddq_rot270_u8): Delete.
27673         (__arm_vhcaddq_rot90_s8): Delete.
27674         (__arm_vhcaddq_rot270_s8): Delete.
27675         (__arm_vcaddq_rot90_s8): Delete.
27676         (__arm_vcaddq_rot270_s8): Delete.
27677         (__arm_vcaddq_rot90_u16): Delete.
27678         (__arm_vcaddq_rot270_u16): Delete.
27679         (__arm_vhcaddq_rot90_s16): Delete.
27680         (__arm_vhcaddq_rot270_s16): Delete.
27681         (__arm_vcaddq_rot90_s16): Delete.
27682         (__arm_vcaddq_rot270_s16): Delete.
27683         (__arm_vcaddq_rot90_u32): Delete.
27684         (__arm_vcaddq_rot270_u32): Delete.
27685         (__arm_vhcaddq_rot90_s32): Delete.
27686         (__arm_vhcaddq_rot270_s32): Delete.
27687         (__arm_vcaddq_rot90_s32): Delete.
27688         (__arm_vcaddq_rot270_s32): Delete.
27689         (__arm_vcaddq_rot270_m_s8): Delete.
27690         (__arm_vcaddq_rot270_m_s32): Delete.
27691         (__arm_vcaddq_rot270_m_s16): Delete.
27692         (__arm_vcaddq_rot270_m_u8): Delete.
27693         (__arm_vcaddq_rot270_m_u32): Delete.
27694         (__arm_vcaddq_rot270_m_u16): Delete.
27695         (__arm_vcaddq_rot90_m_s8): Delete.
27696         (__arm_vcaddq_rot90_m_s32): Delete.
27697         (__arm_vcaddq_rot90_m_s16): Delete.
27698         (__arm_vcaddq_rot90_m_u8): Delete.
27699         (__arm_vcaddq_rot90_m_u32): Delete.
27700         (__arm_vcaddq_rot90_m_u16): Delete.
27701         (__arm_vhcaddq_rot270_m_s8): Delete.
27702         (__arm_vhcaddq_rot270_m_s32): Delete.
27703         (__arm_vhcaddq_rot270_m_s16): Delete.
27704         (__arm_vhcaddq_rot90_m_s8): Delete.
27705         (__arm_vhcaddq_rot90_m_s32): Delete.
27706         (__arm_vhcaddq_rot90_m_s16): Delete.
27707         (__arm_vcaddq_rot90_x_s8): Delete.
27708         (__arm_vcaddq_rot90_x_s16): Delete.
27709         (__arm_vcaddq_rot90_x_s32): Delete.
27710         (__arm_vcaddq_rot90_x_u8): Delete.
27711         (__arm_vcaddq_rot90_x_u16): Delete.
27712         (__arm_vcaddq_rot90_x_u32): Delete.
27713         (__arm_vcaddq_rot270_x_s8): Delete.
27714         (__arm_vcaddq_rot270_x_s16): Delete.
27715         (__arm_vcaddq_rot270_x_s32): Delete.
27716         (__arm_vcaddq_rot270_x_u8): Delete.
27717         (__arm_vcaddq_rot270_x_u16): Delete.
27718         (__arm_vcaddq_rot270_x_u32): Delete.
27719         (__arm_vhcaddq_rot90_x_s8): Delete.
27720         (__arm_vhcaddq_rot90_x_s16): Delete.
27721         (__arm_vhcaddq_rot90_x_s32): Delete.
27722         (__arm_vhcaddq_rot270_x_s8): Delete.
27723         (__arm_vhcaddq_rot270_x_s16): Delete.
27724         (__arm_vhcaddq_rot270_x_s32): Delete.
27725         (__arm_vcaddq_rot90_f16): Delete.
27726         (__arm_vcaddq_rot270_f16): Delete.
27727         (__arm_vcaddq_rot90_f32): Delete.
27728         (__arm_vcaddq_rot270_f32): Delete.
27729         (__arm_vcaddq_rot270_m_f32): Delete.
27730         (__arm_vcaddq_rot270_m_f16): Delete.
27731         (__arm_vcaddq_rot90_m_f32): Delete.
27732         (__arm_vcaddq_rot90_m_f16): Delete.
27733         (__arm_vcaddq_rot90_x_f16): Delete.
27734         (__arm_vcaddq_rot90_x_f32): Delete.
27735         (__arm_vcaddq_rot270_x_f16): Delete.
27736         (__arm_vcaddq_rot270_x_f32): Delete.
27737         (__arm_vcaddq_rot90): Delete.
27738         (__arm_vcaddq_rot270): Delete.
27739         (__arm_vhcaddq_rot90): Delete.
27740         (__arm_vhcaddq_rot270): Delete.
27741         (__arm_vcaddq_rot270_m): Delete.
27742         (__arm_vcaddq_rot90_m): Delete.
27743         (__arm_vhcaddq_rot270_m): Delete.
27744         (__arm_vhcaddq_rot90_m): Delete.
27745         (__arm_vcaddq_rot90_x): Delete.
27746         (__arm_vcaddq_rot270_x): Delete.
27747         (__arm_vhcaddq_rot90_x): Delete.
27748         (__arm_vhcaddq_rot270_x): Delete.
27750 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
27752         * config/arm/arm_mve_builtins.def (vcaddq_rot90_, vcaddq_rot270_)
27753         (vcaddq_rot90_f, vcaddq_rot90_f): Add "_" or "_f" suffix.
27754         * config/arm/iterators.md (mve_insn): Add vcadd, vhcadd.
27755         (isu): Add UNSPEC_VCADD90, UNSPEC_VCADD270, VCADDQ_ROT270_M_U,
27756         VCADDQ_ROT270_M_S, VCADDQ_ROT90_M_U, VCADDQ_ROT90_M_S,
27757         VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S, VHCADDQ_ROT90_S,
27758         VHCADDQ_ROT270_S.
27759         (rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S, VCADDQ_ROT90_M_U,
27760         VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S, VCADDQ_ROT270_M_U,
27761         VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, VHCADDQ_ROT90_M_S,
27762         VHCADDQ_ROT270_M_S.
27763         (mve_rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S,
27764         VCADDQ_ROT90_M_U, VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S,
27765         VCADDQ_ROT270_M_U, VHCADDQ_ROT90_S, VHCADDQ_ROT270_S,
27766         VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S.
27767         (supf): Add VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S,
27768         VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, UNSPEC_VCADD90,
27769         UNSPEC_VCADD270.
27770         (VCADDQ_ROT270_M): Delete.
27771         (VCADDQ_M_F VxCADDQ VxCADDQ_M): New.
27772         (VCADDQ_ROT90_M): Delete.
27773         * config/arm/mve.md (mve_vcaddq<mve_rot><mode>)
27774         (mve_vhcaddq_rot270_s<mode>, mve_vhcaddq_rot90_s<mode>): Merge
27775         into ...
27776         (@mve_<mve_insn>q<mve_rot>_<supf><mode>): ... this.
27777         (mve_vcaddq<mve_rot><mode>): Rename into ...
27778         (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this
27779         (mve_vcaddq_rot270_m_<supf><mode>)
27780         (mve_vcaddq_rot90_m_<supf><mode>, mve_vhcaddq_rot270_m_s<mode>)
27781         (mve_vhcaddq_rot90_m_s<mode>): Merge into ...
27782         (@mve_<mve_insn>q<mve_rot>_m_<supf><mode>): ... this.
27783         (mve_vcaddq_rot270_m_f<mode>, mve_vcaddq_rot90_m_f<mode>): Merge
27784         into ...
27785         (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
27787 2023-07-14  Roger Sayle  <roger@nextmovesoftware.com>
27789         PR target/110588
27790         * config/i386/i386.md (*bt<mode>_setcqi): Prefer string form
27791         preparation statement over braces for a single statement.
27792         (*bt<mode>_setncqi): Likewise.
27793         (*bt<mode>_setncqi_2): New define_insn_and_split.
27795 2023-07-14  Roger Sayle  <roger@nextmovesoftware.com>
27797         * config/i386/i386-expand.cc (ix86_expand_move): Generalize special
27798         case inserting of 64-bit values into a TImode register, to handle
27799         both DImode and DFmode using either *insvti_lowpart_1
27800         or *isnvti_highpart_1.
27802 2023-07-14  Uros Bizjak  <ubizjak@gmail.com>
27804         PR target/110206
27805         * fwprop.cc (contains_paradoxical_subreg_p): Move to ...
27806         * rtlanal.cc (contains_paradoxical_subreg_p): ... here.
27807         * rtlanal.h (contains_paradoxical_subreg_p): Add prototype.
27808         * cprop.cc (try_replace_reg): Do not set REG_EQUAL note
27809         when the original source contains a paradoxical subreg.
27811 2023-07-14  Jan Hubicka  <jh@suse.cz>
27813         * passes.cc (execute_function_todo): Remove
27814         TODO_rebuild_frequencies
27815         * passes.def: Add rebuild_frequencies pass.
27816         * predict.cc (estimate_bb_frequencies): Drop
27817         force parameter.
27818         (tree_estimate_probability): Update call of
27819         estimate_bb_frequencies.
27820         (rebuild_frequencies): Turn into a pass; verify CFG profile consistency
27821         first and do not rebuild if not necessary.
27822         (class pass_rebuild_frequencies): New.
27823         (make_pass_rebuild_frequencies): New.
27824         * profile-count.h: Add profile_count::very_large_p.
27825         * tree-inline.cc (optimize_inline_calls): Do not return
27826         TODO_rebuild_frequencies
27827         * tree-pass.h (TODO_rebuild_frequencies): Remove.
27828         (make_pass_rebuild_frequencies): Declare.
27830 2023-07-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
27832         * config/riscv/autovec.md (cond_len_fma<mode>): New pattern.
27833         * config/riscv/riscv-protos.h (enum insn_type): New enum.
27834         (expand_cond_len_ternop): New function.
27835         * config/riscv/riscv-v.cc (emit_nonvlmax_fp_ternary_tu_insn): Ditto.
27836         (expand_cond_len_ternop): Ditto.
27838 2023-07-14  Jose E. Marchesi  <jose.marchesi@oracle.com>
27840         PR target/110657
27841         * config/bpf/bpf.md: Enable instruction scheduling.
27843 2023-07-14  Tamar Christina  <tamar.christina@arm.com>
27845         PR tree-optimization/109154
27846         * tree-if-conv.cc (INCLUDE_ALGORITHM): Include.
27847         (struct bb_predicate): Add no_predicate_stmts.
27848         (set_bb_predicate): Increase predicate count.
27849         (set_bb_predicate_gimplified_stmts): Conditionally initialize
27850         no_predicate_stmts.
27851         (get_bb_num_predicate_stmts): New.
27852         (init_bb_predicate): Initialzie no_predicate_stmts.
27853         (release_bb_predicate): Cleanup no_predicate_stmts.
27854         (insert_gimplified_predicates): Preserve no_predicate_stmts.
27856 2023-07-14  Tamar Christina  <tamar.christina@arm.com>
27858         PR tree-optimization/109154
27859         * tree-if-conv.cc (gen_simplified_condition,
27860         gen_phi_nest_statement): New.
27861         (gen_phi_arg_condition, predicate_scalar_phi): Use it.
27863 2023-07-14  Richard Biener  <rguenther@suse.de>
27865         * gimple.h (gimple_phi_arg): New const overload.
27866         (gimple_phi_arg_def): Make gimple arg const.
27867         (gimple_phi_arg_def_from_edge): New inline function.
27868         * tree-phinodes.h (gimple_phi_arg_imm_use_ptr_from_edge):
27869         Likewise.
27870         * tree-ssa-operands.h (PHI_ARG_DEF_FROM_EDGE): Direct to
27871         new inline function.
27872         (PHI_ARG_DEF_PTR_FROM_EDGE): Likewise.
27874 2023-07-14  Monk Chiang  <monk.chiang@sifive.com>
27876         * common/config/riscv/riscv-common.cc:
27877         (riscv_implied_info): Add zihintntl item.
27878         (riscv_ext_version_table): Ditto.
27879         (riscv_ext_flag_table): Ditto.
27880         * config/riscv/riscv-opts.h (MASK_ZIHINTNTL): New macro.
27881         (TARGET_ZIHINTNTL): Ditto.
27883 2023-07-14  Die Li  <lidie@eswincomputing.com>
27885         * config/riscv/riscv.md: Remove redundant portion in and<mode>3.
27887 2023-07-14  Oleg Endo  <olegendo@gcc.gnu.org>
27889         PR target/101469
27890         * config/sh/sh.md (peephole2): Handle case where eliminated reg is also
27891         used by the address of the following memory operand.
27893 2023-07-13  Mikael Pettersson  <mikpelinux@gmail.com>
27895         PR target/107841
27896         * config/pdp11/pdp11.cc (pdp11_expand_epilogue): Also
27897         deallocate alloca-only frame.
27899 2023-07-13  Iain Sandoe  <iain@sandoe.co.uk>
27901         PR target/110624
27902         * config/darwin.h (DARWIN_PLATFORM_ID): New.
27903         (LINK_COMMAND_A): Use DARWIN_PLATFORM_ID to pass OS, OS version
27904         and SDK data to the static linker.
27906 2023-07-13  Carl Love  <cel@us.ibm.com>
27908         * config/rs6000/rs6000-builtins.def (__builtin_set_fpscr_rn): Update
27909         built-in definition return type.
27910         * config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Add check,
27911         define __SET_FPSCR_RN_RETURNS_FPSCR__ macro.
27912         * config/rs6000/rs6000.md (rs6000_set_fpscr_rn): Add return
27913         argument to return FPSCR fields.
27914         * doc/extend.texi (__builtin_set_fpscr_rn): Update description for
27915         the return value.  Add description for
27916         __SET_FPSCR_RN_RETURNS_FPSCR__ macro.
27918 2023-07-13  Uros Bizjak  <ubizjak@gmail.com>
27920         PR target/106966
27921         * config/alpha/alpha.cc (alpha_emit_set_long_const):
27922         Always use DImode when constructing long const.
27924 2023-07-13  Uros Bizjak  <ubizjak@gmail.com>
27926         * haifa-sched.cc: Change TRUE/FALSE to true/false.
27927         * ira.cc: Ditto.
27928         * lra-assigns.cc: Ditto.
27929         * lra-constraints.cc: Ditto.
27930         * sel-sched.cc: Ditto.
27932 2023-07-13  Andrew Pinski  <apinski@marvell.com>
27934         PR tree-optimization/110293
27935         PR tree-optimization/110539
27936         * match.pd: Expand the `x != (typeof x)(x == 0)`
27937         pattern to handle where the inner and outer comparsions
27938         are either `!=` or `==` and handle other constants
27939         than 0.
27941 2023-07-13  Vladimir N. Makarov  <vmakarov@redhat.com>
27943         PR middle-end/109520
27944         * lra-int.h (lra_insn_recog_data): Add member asm_reloads_num.
27945         (lra_asm_insn_error): New prototype.
27946         * lra.cc: Include rtl_error.h.
27947         (lra_set_insn_recog_data): Initialize asm_reloads_num.
27948         (lra_asm_insn_error): New func whose code is taken from ...
27949         * lra-assigns.cc (lra_split_hard_reg_for): ... here.  Use lra_asm_insn_error.
27950         * lra-constraints.cc (curr_insn_transform): Check reloads nummber for asm.
27952 2023-07-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
27954         * genmatch.cc (commutative_op): Add COND_LEN_*
27955         * internal-fn.cc (first_commutative_argument): Ditto.
27956         (CASE): Ditto.
27957         (get_unconditional_internal_fn): Ditto.
27958         (can_interpret_as_conditional_op_p): Ditto.
27959         (internal_fn_len_index): Ditto.
27960         * internal-fn.h (can_interpret_as_conditional_op_p): Ditt.
27961         * tree-ssa-math-opts.cc (convert_mult_to_fma_1): Ditto.
27962         (convert_mult_to_fma): Ditto.
27963         (math_opts_dom_walker::after_dom_children): Ditto.
27965 2023-07-13  Pan Li  <pan2.li@intel.com>
27967         * config/riscv/riscv.cc (vxrm_rtx): New static var.
27968         (frm_rtx): Ditto.
27969         (global_state_unknown_p): Removed.
27970         (riscv_entity_mode_after): Removed.
27971         (asm_insn_p): New function.
27972         (vxrm_unknown_p): New function for fixed-point.
27973         (riscv_vxrm_mode_after): Ditto.
27974         (frm_unknown_dynamic_p): New function for floating-point.
27975         (riscv_frm_mode_after): Ditto.
27976         (riscv_mode_after): Leverage new functions.
27978 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
27980         * tree-vect-stmts.cc (vect_model_load_cost): Remove.
27981         (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS without
27982         calling vect_model_load_cost.
27984 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
27986         * tree-vect-stmts.cc (vect_model_load_cost): Assert this function only
27987         handle memory_access_type VMAT_CONTIGUOUS, remove some
27988         VMAT_CONTIGUOUS_PERMUTE related handlings.
27989         (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS_PERMUTE
27990         without calling vect_model_load_cost.
27992 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
27994         * tree-vect-stmts.cc (vect_model_load_cost): Assert it won't get
27995         VMAT_CONTIGUOUS_REVERSE any more.
27996         (vectorizable_load): Adjust the costing handling on
27997         VMAT_CONTIGUOUS_REVERSE without calling vect_model_load_cost.
27999 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
28001         * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on
28002         VMAT_LOAD_STORE_LANES without calling vect_model_load_cost.
28003         (vectorizable_load): Remove VMAT_LOAD_STORE_LANES related handling and
28004         assert it will never get VMAT_LOAD_STORE_LANES.
28006 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
28008         * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on
28009         VMAT_GATHER_SCATTER without calling vect_model_load_cost.
28010         (vect_model_load_cost): Adjut the assertion on VMAT_GATHER_SCATTER,
28011         remove VMAT_GATHER_SCATTER related handlings and the related parameter
28012         gs_info.
28014 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
28016         * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling
28017         on VMAT_ELEMENTWISE and VMAT_STRIDED_SLP without calling
28018         vect_model_load_cost.
28019         (vect_model_load_cost): Assert it won't get VMAT_ELEMENTWISE and
28020         VMAT_STRIDED_SLP any more, and remove their related handlings.
28022 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
28024         * tree-vect-stmts.cc (hoist_defs_of_uses): Add one argument HOIST_P.
28025         (vectorizable_load): Adjust the handling on VMAT_INVARIANT to respect
28026         hoisting decision and without calling vect_model_load_cost.
28027         (vect_model_load_cost): Assert it won't get VMAT_INVARIANT any more
28028         and remove VMAT_INVARIANT related handlings.
28030 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
28032         * tree-vect-stmts.cc (vect_build_gather_load_calls): Add the handlings
28033         on costing with one extra argument cost_vec.
28034         (vectorizable_load): Adjust the call to vect_build_gather_load_calls.
28035         (vect_model_load_cost): Assert it won't get VMAT_GATHER_SCATTER with
28036         gs_info.decl set any more.
28038 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
28040         * tree-vect-stmts.cc (vectorizable_load): Move and duplicate the call
28041         to vect_model_load_cost down to some different transform paths
28042         according to the handlings of different vect_memory_access_types.
28044 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
28046         * tree.h (wi::from_mpz): Hide from GENERATOR_FILE.
28048 2023-07-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
28050         * config/riscv/autovec.md
28051         (len_mask_gather_load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New pattern.
28052         (len_mask_gather_load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
28053         (len_mask_gather_load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
28054         (len_mask_gather_load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
28055         (len_mask_gather_load<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
28056         (len_mask_gather_load<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
28057         (len_mask_gather_load<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
28058         (len_mask_gather_load<mode><mode>): Ditto.
28059         (len_mask_scatter_store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
28060         (len_mask_scatter_store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
28061         (len_mask_scatter_store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
28062         (len_mask_scatter_store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
28063         (len_mask_scatter_store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
28064         (len_mask_scatter_store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
28065         (len_mask_scatter_store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
28066         (len_mask_scatter_store<mode><mode>): Ditto.
28067         * config/riscv/predicates.md (const_1_operand): New predicate.
28068         (vector_gs_scale_operand_16): Ditto.
28069         (vector_gs_scale_operand_32): Ditto.
28070         (vector_gs_scale_operand_64): Ditto.
28071         (vector_gs_extension_operand): Ditto.
28072         (vector_gs_scale_operand_16_rv32): Ditto.
28073         (vector_gs_scale_operand_32_rv32): Ditto.
28074         * config/riscv/riscv-protos.h (enum insn_type): Add gather/scatter.
28075         (expand_gather_scatter): New function.
28076         * config/riscv/riscv-v.cc (gen_const_vector_dup): Add gather/scatter.
28077         (emit_vlmax_masked_store_insn): New function.
28078         (emit_nonvlmax_masked_store_insn): Ditto.
28079         (modulo_sel_indices): Ditto.
28080         (expand_vec_perm): Fix SLP for gather/scatter.
28081         (prepare_gather_scatter): New function.
28082         (expand_gather_scatter): Ditto.
28083         * config/riscv/riscv.cc (riscv_legitimize_move): Fix bug of
28084         (subreg:SI (DI CONST_POLY_INT)).
28085         * config/riscv/vector-iterators.md: Add gather/scatter.
28086         * config/riscv/vector.md (vec_duplicate<mode>): Use "@" instead.
28087         (@vec_duplicate<mode>): Ditto.
28088         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>):
28089         Fix name.
28090         (@pred_indexed_<order>store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
28092 2023-07-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
28094         * config/riscv/autovec.md (cond_len_<optab><mode>): New pattern.
28095         * config/riscv/riscv-protos.h (enum insn_type): New enum.
28096         (expand_cond_len_binop): New function.
28097         * config/riscv/riscv-v.cc (emit_nonvlmax_tu_insn): Ditto.
28098         (emit_nonvlmax_fp_tu_insn): Ditto.
28099         (need_fp_rounding_p): Ditto.
28100         (expand_cond_len_binop): Ditto.
28101         * config/riscv/riscv.cc (riscv_preferred_else_value): Ditto.
28102         (TARGET_PREFERRED_ELSE_VALUE): New target hook.
28104 2023-07-12  Jan Hubicka  <jh@suse.cz>
28106         * tree-cfg.cc (gimple_duplicate_sese_region): Rename to ...
28107         (gimple_duplicate_seme_region): ... this; break out profile updating
28108         code to ...
28109         * tree-ssa-loop-ch.cc (update_profile_after_ch): ... here.
28110         (ch_base::copy_headers): Update.
28111         * tree-cfg.h (gimple_duplicate_sese_region): Rename to ...
28112         (gimple_duplicate_seme_region): ... this.
28114 2023-07-12  Aldy Hernandez  <aldyh@redhat.com>
28116         PR tree-optimization/107043
28117         * range-op.cc (operator_bitwise_and::op1_range): Update bitmask.
28119 2023-07-12  Aldy Hernandez  <aldyh@redhat.com>
28121         PR tree-optimization/107053
28122         * gimple-range-op.cc (cfn_popcount): Use known set bits.
28124 2023-07-12  Uros Bizjak  <ubizjak@gmail.com>
28126         * ira.cc (equiv_init_varies_p): Change return type from int to bool
28127         and adjust function body accordingly.
28128         (equiv_init_movable_p): Ditto.
28129         (memref_used_between_p): Ditto.
28130         * lra-constraints.cc (valid_address_p): Ditto.
28132 2023-07-12  Aldy Hernandez  <aldyh@redhat.com>
28134         * range-op.cc (irange_to_masked_value): Remove.
28135         (update_known_bitmask): Update irange value/mask pair instead of
28136         only updating nonzero bits.
28138 2023-07-12  Jan Hubicka  <jh@suse.cz>
28140         * tree-cfg.cc (gimple_duplicate_sese_region): Add ORIG_ELIMINATED_EDGES
28141         parameter and rewrite profile updating code to handle edges elimination.
28142         * tree-cfg.h (gimple_duplicate_sese_region): Update prototpe.
28143         * tree-ssa-loop-ch.cc (loop_invariant_op_p): New function.
28144         (loop_iv_derived_p): New function.
28145         (should_duplicate_loop_header_p): Track invariant exit edges; fix handling
28146         of PHIs and propagation of IV derived variables.
28147         (ch_base::copy_headers): Pass around the invariant edges hash set.
28149 2023-07-12  Uros Bizjak  <ubizjak@gmail.com>
28151         * ifcvt.cc (cond_exec_changed_p): Change variable to bool.
28152         (last_active_insn): Change "skip_use_p" function argument to bool.
28153         (noce_operand_ok): Change return type from int to bool.
28154         (find_cond_trap): Ditto.
28155         (block_jumps_and_fallthru_p): Change "fallthru_p" and
28156         "jump_p" variables to bool.
28157         (noce_find_if_block): Change return type from int to bool.
28158         (cond_exec_find_if_block): Ditto.
28159         (find_if_case_1): Ditto.
28160         (find_if_case_2): Ditto.
28161         (dead_or_predicable): Ditto. Change "reversep" function arg to bool.
28162         (block_jumps_and_fallthru): Rename from block_jumps_and_fallthru_p.
28163         (cond_exec_process_insns): Change return type from int to bool.
28164         Change "mod_ok" function arg to bool.
28165         (cond_exec_process_if_block): Change return type from int to bool.
28166         Change "do_multiple_p" function arg to bool.  Change "then_mod_ok"
28167         variable to bool.
28168         (noce_emit_store_flag): Change return type from int to bool.
28169         Change "reversep" function arg to bool.  Change "cond_complex"
28170         variable to bool.
28171         (noce_try_move): Change return type from int to bool.
28172         (noce_try_ifelse_collapse): Ditto.
28173         (noce_try_store_flag): Ditto. Change "reversep" variable to bool.
28174         (noce_try_addcc): Change return type from int to bool.  Change
28175         "subtract" variable to bool.
28176         (noce_try_store_flag_constants): Change return type from int to bool.
28177         (noce_try_store_flag_mask): Ditto.  Change "reversep" variable to bool.
28178         (noce_try_cmove): Change return type from int to bool.
28179         (noce_try_cmove_arith): Ditto. Change "is_mem" variable to bool.
28180         (noce_try_minmax): Change return type from int to bool.  Change
28181         "unsignedp" variable to bool.
28182         (noce_try_abs): Change return type from int to bool.  Change
28183         "negate" variable to bool.
28184         (noce_try_sign_mask): Change return type from int to bool.
28185         (noce_try_move): Ditto.
28186         (noce_try_store_flag_constants): Ditto.
28187         (noce_try_cmove): Ditto.
28188         (noce_try_cmove_arith): Ditto.
28189         (noce_try_minmax): Ditto.  Change "unsignedp" variable to bool.
28190         (noce_try_bitop): Change return type from int to bool.
28191         (noce_operand_ok): Ditto.
28192         (noce_convert_multiple_sets): Ditto.
28193         (noce_convert_multiple_sets_1): Ditto.
28194         (noce_process_if_block): Ditto.
28195         (check_cond_move_block): Ditto.
28196         (cond_move_process_if_block): Ditto. Change "success_p"
28197         variable to bool.
28198         (rest_of_handle_if_conversion): Change return type to void.
28200 2023-07-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
28202         * internal-fn.cc (FOR_EACH_CODE_MAPPING): Adapt for COND_LEN_* support.
28203         (CASE): Ditto.
28204         (get_conditional_len_internal_fn): New function.
28205         * internal-fn.h (get_conditional_len_internal_fn): Ditto.
28206         * tree-vect-stmts.cc (vectorizable_operation): Adapt for COND_LEN_*
28207         support.
28209 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
28211         PR target/91681
28212         * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): Typo.
28214 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
28216         PR target/91681
28217         * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): New
28218         define_insn_and_split derived from *add<dwi>3_doubleword_concat
28219         and *add<dwi>3_doubleword_zext.
28221 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
28223         PR target/110598
28224         * config/i386/i386.md (peephole2): Check !reg_mentioned_p when
28225         optimizing rega = 0; rega op= regb for op in [XOR,IOR,PLUS].
28226         (peephole2): Simplify rega = 0; rega op= rega cases.
28228 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
28230         * config/i386/i386-expand.cc (ix86_expand_int_compare): If
28231         testing a TImode SUBREG of a 128-bit vector register against
28232         zero, use a PTEST instruction instead of first moving it to
28233         a pair of scalar registers.
28235 2023-07-12  Robin Dapp  <rdapp@ventanamicro.com>
28237         * genopinit.cc (main): Adjust maximal number of optabs and
28238         machine modes.
28239         * gensupport.cc (find_optab): Shift optab by 20 and mode by
28240         10 bits.
28241         * optabs-query.h (optab_handler): Ditto.
28242         (convert_optab_handler): Ditto.
28244 2023-07-12  Richard Biener  <rguenther@suse.de>
28246         PR tree-optimization/110630
28247         * tree-vect-slp.cc (vect_add_slp_permutation): New
28248         offset parameter, honor that for the extract code generation.
28249         (vectorizable_slp_permutation_1): Handle offsetted identities.
28251 2023-07-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
28253         * config/riscv/autovec.md (smul<mode>3_highpart): New pattern.
28254         (umul<mode>3_highpart): Ditto.
28256 2023-07-12  Jan Beulich  <jbeulich@suse.com>
28258         * config/i386/i386.md (extendbfsf2_1): Add new AVX512F
28259         alternative. Adjust original last alternative's "prefix"
28260         attribute to maybe_evex.
28262 2023-07-12  Jan Beulich  <jbeulich@suse.com>
28264         * config/i386/sse.md (vec_dupv4sf): Make first alternative use
28265         vbroadcastss for AVX2. New AVX512F alternative.
28266         (*vec_dupv4si): New AVX2 and AVX512F alternatives using
28267         vpbroadcastd. Replace sselog1 by sseshuf1 in "type" attribute.
28269 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
28271         * config/riscv/peephole.md: Remove XThead* peephole passes.
28272         * config/riscv/thead.md: Include thead-peephole.md.
28273         * config/riscv/thead-peephole.md: New file.
28275 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
28277         * config/riscv/riscv-protos.h (riscv_regno_ok_for_index_p):
28278         New prototype.
28279         (riscv_index_reg_class): Likewise.
28280         * config/riscv/riscv.cc (riscv_regno_ok_for_index_p): New function.
28281         (riscv_index_reg_class): New function.
28282         * config/riscv/riscv.h (INDEX_REG_CLASS): Call new function
28283         riscv_index_reg_class().
28284         (REGNO_OK_FOR_INDEX_P): Call new function
28285         riscv_regno_ok_for_index_p().
28287 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
28289         * config/riscv/riscv-protos.h (enum riscv_address_type):
28290         New location of type definition.
28291         (struct riscv_address_info): Likewise.
28292         * config/riscv/riscv.cc (enum riscv_address_type):
28293         Old location of type definition.
28294         (struct riscv_address_info): Likewise.
28296 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
28298         * config/riscv/riscv.h (Xmode): New macro.
28300 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
28302         * config/riscv/riscv.cc (riscv_print_operand_address): Use
28303         output_addr_const rather than riscv_print_operand.
28305 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
28307         * config/riscv/thead.md: Adjust constraints of th_addsl.
28309 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
28311         * config/riscv/thead.cc (th_mempair_operands_p):
28312         Fix documentation of th_mempair_order_operands().
28314 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
28316         * config/riscv/thead.cc (th_mempair_save_regs):
28317         Emit REG_FRAME_RELATED_EXPR notes in prologue.
28319 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
28321         * config/riscv/riscv.md: No base-ISA extension splitter for XThead*.
28322         * config/riscv/thead.md (*extend<SHORT:mode><SUPERQI:mode>2_th_ext):
28323         New XThead extension INSN.
28324         (*zero_extendsidi2_th_extu): New XThead extension INSN.
28325         (*zero_extendhi<GPR:mode>2_th_extu): New XThead extension INSN.
28327 2023-07-12  liuhongt  <hongtao.liu@intel.com>
28329         PR target/110438
28330         PR target/110202
28331         * config/i386/predicates.md
28332         (int_float_vector_all_ones_operand): New predicate.
28333         * config/i386/sse.md (*vmov<mode>_constm1_pternlog_false_dep): New
28334         define_insn.
28335         (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
28336         Ditto.
28337         (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
28338         Ditto.
28339         (*<avx512>_cvtmask2<ssemodesuffix><mode>): Adjust to
28340         define_insn_and_split to avoid false dependence.
28341         (*<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto.
28342         (<mask_codefor>one_cmpl<mode>2<mask_name>): Adjust constraint
28343         of operands 1 to '0' to avoid false dependence.
28344         (*andnot<mode>3): Ditto.
28345         (iornot<mode>3): Ditto.
28346         (*<nlogic><mode>3): Ditto.
28348 2023-07-12  Mo, Zewei  <zewei.mo@intel.com>
28350         * common/config/i386/cpuinfo.h
28351         (get_intel_cpu): Handle Granite Rapids D.
28352         * common/config/i386/i386-common.cc:
28353         (processor_alias_table): Add graniterapids-d.
28354         * common/config/i386/i386-cpuinfo.h
28355         (enum processor_subtypes): Add INTEL_COREI7_GRANITERAPIDS_D.
28356         * config.gcc: Add -march=graniterapids-d.
28357         * config/i386/driver-i386.cc (host_detect_local_cpu):
28358         Handle graniterapids-d.
28359         * config/i386/i386.h: (PTA_GRANITERAPIDS_D): New.
28360         * doc/extend.texi: Add graniterapids-d.
28361         * doc/invoke.texi: Ditto.
28363 2023-07-12  Haochen Jiang  <haochen.jiang@intel.com>
28365         * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
28366         Add OPTION_MASK_ISA_AVX512VL.
28367         * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
28368         Ditto.
28370 2023-07-11  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
28372         * config/riscv/riscv-protos.h (enum insn_type): Add vcompress optimization.
28373         * config/riscv/riscv-v.cc (emit_vlmax_compress_insn): Ditto.
28374         (shuffle_compress_patterns): Ditto.
28375         (expand_vec_perm_const_1): Ditto.
28377 2023-07-11  Uros Bizjak  <ubizjak@gmail.com>
28379         * cfghooks.cc (verify_flow_info): Change "err" variable to bool.
28380         * cfghooks.h (struct cfg_hooks): Change return type of
28381         verify_flow_info from integer to bool.
28382         * cfgrtl.cc (can_delete_note_p): Change return type from int to bool.
28383         (can_delete_label_p): Ditto.
28384         (rtl_verify_flow_info): Change return type from int to bool
28385         and adjust function body accordingly.  Change "err" variable to bool.
28386         (rtl_verify_flow_info_1): Ditto.
28387         (free_bb_for_insn): Change return type to void.
28388         (rtl_merge_blocks): Change "b_empty" variable to bool.
28389         (try_redirect_by_replacing_jump): Change "fallthru" variable to bool.
28390         (verify_hot_cold_block_grouping): Change return type from int to bool.
28391         Change "err" variable to bool.
28392         (rtl_verify_edges): Ditto.
28393         (rtl_verify_bb_insns): Ditto.
28394         (rtl_verify_bb_pointers): Ditto.
28395         (rtl_verify_bb_insn_chain): Ditto.
28396         (rtl_verify_fallthru): Ditto.
28397         (rtl_verify_bb_layout): Ditto.
28398         (purge_all_dead_edges): Change "purged" variable to bool.
28399         * cfgrtl.h (free_bb_for_insn): Change return type from int to void.
28400         * postreload-gcse.cc (expr_hasher::equal): Change "equiv_p" to bool.
28401         (load_killed_in_block_p): Change return type from int to bool
28402         and adjust function body accordingly.
28403         (oprs_unchanged_p): Return true/false.
28404         (rest_of_handle_gcse2): Change return type to void.
28405         * tree-cfg.cc (gimple_verify_flow_info): Change return type from
28406         int to bool.  Change "err" variable to bool.
28408 2023-07-11  Gaius Mulley  <gaiusmod2@gmail.com>
28410         * doc/gm2.texi (-Wuninit-variable-checking=) New item.
28412 2023-07-11  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
28414         * doc/md.texi: Add COND_LEN_* operations for loop control with length.
28415         * internal-fn.cc (cond_len_unary_direct): Ditto.
28416         (cond_len_binary_direct): Ditto.
28417         (cond_len_ternary_direct): Ditto.
28418         (expand_cond_len_unary_optab_fn): Ditto.
28419         (expand_cond_len_binary_optab_fn): Ditto.
28420         (expand_cond_len_ternary_optab_fn): Ditto.
28421         (direct_cond_len_unary_optab_supported_p): Ditto.
28422         (direct_cond_len_binary_optab_supported_p): Ditto.
28423         (direct_cond_len_ternary_optab_supported_p): Ditto.
28424         * internal-fn.def (COND_LEN_ADD): Ditto.
28425         (COND_LEN_SUB): Ditto.
28426         (COND_LEN_MUL): Ditto.
28427         (COND_LEN_DIV): Ditto.
28428         (COND_LEN_MOD): Ditto.
28429         (COND_LEN_RDIV): Ditto.
28430         (COND_LEN_MIN): Ditto.
28431         (COND_LEN_MAX): Ditto.
28432         (COND_LEN_FMIN): Ditto.
28433         (COND_LEN_FMAX): Ditto.
28434         (COND_LEN_AND): Ditto.
28435         (COND_LEN_IOR): Ditto.
28436         (COND_LEN_XOR): Ditto.
28437         (COND_LEN_SHL): Ditto.
28438         (COND_LEN_SHR): Ditto.
28439         (COND_LEN_FMA): Ditto.
28440         (COND_LEN_FMS): Ditto.
28441         (COND_LEN_FNMA): Ditto.
28442         (COND_LEN_FNMS): Ditto.
28443         (COND_LEN_NEG): Ditto.
28444         * optabs.def (OPTAB_D): Ditto.
28446 2023-07-11  Richard Biener  <rguenther@suse.de>
28448         PR tree-optimization/110614
28449         * tree-vect-data-refs.cc (vect_supportable_dr_alignment):
28450         SLP splats are not suitable for re-align ops.
28452 2023-07-10  Peter Bergner  <bergner@linux.ibm.com>
28454         * config/rs6000/predicates.md (quad_memory_operand): Remove redundant
28455         MEM_P usage.
28456         (vsx_quad_dform_memory_operand): Likewise.
28458 2023-07-10  Uros Bizjak  <ubizjak@gmail.com>
28460         * reorg.cc (stop_search_p): Change return type from int to bool
28461         and adjust function body accordingly.
28462         (resource_conflicts_p): Ditto.
28463         (insn_references_resource_p): Change return type from int to bool.
28464         (insn_sets_resource_p): Ditto.
28465         (redirect_with_delay_slots_safe_p): Ditto.
28466         (condition_dominates_p): Change return type from int to bool
28467         and adjust function body accordingly.
28468         (redirect_with_delay_list_safe_p): Ditto.
28469         (check_annul_list_true_false): Ditto.  Change "annul_true_p"
28470         function argument to bool.
28471         (steal_delay_list_from_target): Change "pannul_p" function
28472         argument to bool pointer.  Change "must_annul" and "used_annul"
28473         variables from int to bool.
28474         (steal_delay_list_from_fallthrough): Ditto.
28475         (own_thread_p): Change return type from int to bool and adjust
28476         function body accordingly.  Change "allow_fallthrough" function
28477         argument to bool.
28478         (reorg_redirect_jump): Change return type from int to bool.
28479         (fill_simple_delay_slots): Change "non_jumps_p" function
28480         argument from int to bool.  Change "maybe_never" varible to bool.
28481         (fill_slots_from_thread): Change "likely", "thread_if_true" and
28482         "own_thread" function arguments to bool.  Change "lose" and
28483         "must_annul" variables to bool.
28484         (delete_from_delay_slot): Change "had_barrier" variable to bool.
28485         (try_merge_delay_insns): Change "annul_p" variable to bool.
28486         (fill_eager_delay_slots): Change "own_target" and "own_fallthrouhg"
28487         variables to bool.
28488         (rest_of_handle_delay_slots): Change return type from int to void
28489         and adjust function body accordingly.
28491 2023-07-10  Kito Cheng  <kito.cheng@sifive.com>
28493         * doc/extend.texi (RISC-V Operand Modifiers): New.
28495 2023-07-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
28497         * config/riscv/riscv-vsetvl.cc (add_label_notes): Remove it.
28498         (insert_insn_end_basic_block): Ditto.
28499         (pass_vsetvl::commit_vsetvls): Adapt for new helper function.
28500         * gcse.cc (insert_insn_end_basic_block):  Export as global function.
28501         * gcse.h (insert_insn_end_basic_block): Ditto.
28503 2023-07-10  Christophe Lyon   <christophe.lyon@linaro.org>
28505         PR target/110268
28506         * config/arm/arm-builtins.cc (arm_init_mve_builtins): Handle LTO.
28507         (arm_builtin_decl): Hahndle MVE builtins.
28508         * config/arm/arm-mve-builtins.cc (builtin_decl): New function.
28509         (add_unique_function): Fix handling of
28510         __ARM_MVE_PRESERVE_USER_NAMESPACE.
28511         (add_overloaded_function): Likewise.
28512         * config/arm/arm-protos.h (builtin_decl): New declaration.
28514 2023-07-10  Christophe Lyon  <christophe.lyon@linaro.org>
28516         * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Document.
28518 2023-07-10  Xi Ruoyao  <xry111@xry111.site>
28520         PR tree-optimization/110557
28521         * tree-vect-patterns.cc (vect_recog_bitfield_ref_pattern):
28522         Ensure the output sign-extended if necessary.
28524 2023-07-10  Roger Sayle  <roger@nextmovesoftware.com>
28526         * config/i386/i386.md (peephole2): Transform xchg insn with a
28527         REG_UNUSED note to a (simple) move.
28528         (*insvti_lowpart_1): New define_insn_and_split.
28529         (*insvdi_lowpart_1): Likewise.
28531 2023-07-10  Roger Sayle  <roger@nextmovesoftware.com>
28533         * config/i386/i386-features.cc (compute_convert_gain): Tweak
28534         gains/costs for ROTATE/ROTATERT by integer constant on AVX512VL.
28535         (general_scalar_chain::convert_rotate): On TARGET_AVX512F generate
28536         avx512vl_rolv2di or avx412vl_rolv4si when appropriate.
28538 2023-07-10  liuhongt  <hongtao.liu@intel.com>
28540         PR target/110170
28541         * config/i386/i386.md (*ieee_max<mode>3_1): New pre_reload
28542         splitter to detect fp max pattern.
28543         (*ieee_min<mode>3_1): Ditto, but for fp min pattern.
28545 2023-07-09  Jan Hubicka  <jh@suse.cz>
28547         * cfg.cc (check_bb_profile): Dump counts with relative frequency.
28548         (dump_edge_info): Likewise.
28549         (dump_bb_info): Likewise.
28550         * profile-count.cc (profile_count::dump): Add comma between quality and
28551         freq.
28553 2023-07-08  Jan Hubicka  <jh@suse.cz>
28555         PR tree-optimization/110600
28556         * cfgloopmanip.cc (scale_loop_profile): Add mising profile_dump check.
28558 2023-07-08  Jan Hubicka  <jh@suse.cz>
28560         PR middle-end/110590
28561         * cfgloopmanip.cc (scale_loop_profile): Avoid scaling exits within
28562         inner loops and be more careful about inconsistent profiles.
28563         (duplicate_loop_body_to_header_edge): Fix profile update when eliminated
28564         exit is followed by other exit.
28566 2023-07-08  Uros Bizjak  <ubizjak@gmail.com>
28568         * cprop.cc (reg_available_p): Change return type from int to bool.
28569         (reg_not_set_p): Ditto.
28570         (try_replace_reg): Ditto.  Change "success" variable to bool.
28571         (cprop_jump): Change return type from int to void
28572         and adjust function body accordingly.
28573         (constprop_register): Ditto.
28574         (cprop_insn): Ditto.  Change "changed" variable to bool.
28575         (local_cprop_pass): Change return type from int to void
28576         and adjust function body accordingly.
28577         (bypass_block): Ditto.  Change "change", "may_be_loop_header"
28578         and "removed_p" variables to bool.
28579         (bypass_conditional_jumps): Change return type from int to void
28580         and adjust function body accordingly.  Change "changed"
28581         variable to bool.
28582         (one_cprop_pass): Ditto.
28584 2023-07-08  Uros Bizjak  <ubizjak@gmail.com>
28586         * gcse.cc (expr_equiv_p): Change return type from int to bool.
28587         (oprs_unchanged_p): Change return type from int to void
28588         and adjust function body accordingly.
28589         (oprs_anticipatable_p): Ditto.
28590         (oprs_available_p): Ditto.
28591         (insert_expr_in_table): Ditto.  Change "antic_p" and "avail_p"
28592         arguments to bool. Change "found" variable to bool.
28593         (load_killed_in_block_p): Change return type from int to void and
28594         adjust function body accordingly.  Change "avail_p" argument to bool.
28595         (pre_expr_reaches_here_p): Change return type from int to void
28596         and adjust function body accordingly.
28597         (pre_delete): Ditto.  Change "changed" variable to bool.
28598         (pre_gcse): Change return type from int to void
28599         and adjust function body accordingly. Change "did_insert" and
28600         "changed" variables to bool.
28601         (one_pre_gcse_pass): Change return type from int to void
28602         and adjust function body accordingly.  Change "changed" variable
28603         to bool.
28604         (should_hoist_expr_to_dom): Change return type from int to void
28605         and adjust function body accordingly.  Change
28606         "visited_allocated_locally" variable to bool.
28607         (hoist_code): Change return type from int to void and adjust
28608         function body accordingly.  Change "changed" variable to bool.
28609         (one_code_hoisting_pass): Ditto.
28610         (pre_edge_insert): Change return type from int to void and adjust
28611         function body accordingly.  Change "did_insert" variable to bool.
28612         (pre_expr_reaches_here_p_work): Change return type from int to void
28613         and adjust function body accordingly.
28614         (simple_mem): Ditto.
28615         (want_to_gcse_p): Change return type from int to void
28616         and adjust function body accordingly.
28617         (can_assign_to_reg_without_clobbers_p): Update function body
28618         for bool return type.
28619         (hash_scan_set): Change "antic_p" and "avail_p" variables to bool.
28620         (pre_insert_copies): Change "added_copy" variable to bool.
28622 2023-07-08  Jonathan Wakely  <jwakely@redhat.com>
28624         PR c++/110595
28625         PR c++/110596
28626         * doc/invoke.texi (Warning Options): Fix typos.
28628 2023-07-07  Jan Hubicka  <jh@suse.cz>
28630         * profile-count.cc (profile_count::dump): Add FUN
28631         parameter; print relative frequency.
28632         (profile_count::debug): Update.
28633         * profile-count.h (profile_count::dump): Update
28634         prototype.
28636 2023-07-07  Roger Sayle  <roger@nextmovesoftware.com>
28638         PR target/43644
28639         PR target/110533
28640         * config/i386/i386-expand.cc (ix86_expand_move): Convert SETs of
28641         TImode destinations from paradoxical SUBREGs (setting the lowpart)
28642         into explicit zero extensions.  Use *insvti_highpart_1 instruction
28643         to set the highpart of a TImode destination.
28645 2023-07-07  Jan Hubicka  <jh@suse.cz>
28647         * predict.cc (force_edge_cold): Use
28648         set_edge_probability_and_rescale_others; improve dumps.
28650 2023-07-07  Jan Hubicka  <jh@suse.cz>
28652         * cfgloopmanip.cc (scale_loop_profile): Fix computation of count_in and scaling blocks
28653         after exit.
28654         * tree-vect-loop-manip.cc (vect_do_peeling): Scale loop profile of the epilogue if bound
28655         is known.
28657 2023-07-07  Juergen Christ  <jchrist@linux.ibm.com>
28659         * config/s390/s390.cc (vec_init): Fix default case
28661 2023-07-07  Vladimir N. Makarov  <vmakarov@redhat.com>
28663         * lra-assigns.cc (assign_by_spills): Add reload insns involving
28664         reload pseudos with non-refined class to be processed on the next
28665         sub-pass.
28666         * lra-constraints.cc (enough_allocatable_hard_regs_p): New func.
28667         (in_class_p): Use it.
28668         (print_curr_insn_alt): New func.
28669         (process_alt_operands): Use it.  Improve debug info.
28670         (curr_insn_transform): Use print_curr_insn_alt.  Refine reload
28671         pseudo class if it is not refined yet.
28673 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
28675         * value-range.cc (irange::get_bitmask_from_range): Return all the
28676         known bits for a singleton.
28677         (irange::set_range_from_bitmask): Set a range of a singleton when
28678         all bits are known.
28680 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
28682         * value-range.cc (irange::intersect): Leave normalization to
28683         caller.
28685 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
28687         * data-streamer-in.cc (streamer_read_value_range): Adjust for
28688         value/mask.
28689         * data-streamer-out.cc (streamer_write_vrange): Same.
28690         * range-op.cc (operator_cast::fold_range): Same.
28691         * value-range-pretty-print.cc
28692         (vrange_printer::print_irange_bitmasks): Same.
28693         * value-range-storage.cc (irange_storage::write_lengths_address):
28694         Same.
28695         (irange_storage::set_irange): Same.
28696         (irange_storage::get_irange): Same.
28697         (irange_storage::size): Same.
28698         (irange_storage::dump): Same.
28699         * value-range-storage.h: Same.
28700         * value-range.cc (debug): New.
28701         (irange_bitmask::dump): New.
28702         (add_vrange): Adjust for value/mask.
28703         (irange::operator=): Same.
28704         (irange::set): Same.
28705         (irange::verify_range): Same.
28706         (irange::operator==): Same.
28707         (irange::contains_p): Same.
28708         (irange::irange_single_pair_union): Same.
28709         (irange::union_): Same.
28710         (irange::intersect): Same.
28711         (irange::invert): Same.
28712         (irange::get_nonzero_bits_from_range): Rename to...
28713         (irange::get_bitmask_from_range): ...this.
28714         (irange::set_range_from_nonzero_bits): Rename to...
28715         (irange::set_range_from_bitmask): ...this.
28716         (irange::set_nonzero_bits): Rename to...
28717         (irange::update_bitmask): ...this.
28718         (irange::get_nonzero_bits): Rename to...
28719         (irange::get_bitmask): ...this.
28720         (irange::intersect_nonzero_bits): Rename to...
28721         (irange::intersect_bitmask): ...this.
28722         (irange::union_nonzero_bits): Rename to...
28723         (irange::union_bitmask): ...this.
28724         (irange_bitmask::verify_mask): New.
28725         * value-range.h (class irange_bitmask): New.
28726         (irange_bitmask::set_unknown): New.
28727         (irange_bitmask::unknown_p): New.
28728         (irange_bitmask::irange_bitmask): New.
28729         (irange_bitmask::get_precision): New.
28730         (irange_bitmask::get_nonzero_bits): New.
28731         (irange_bitmask::set_nonzero_bits): New.
28732         (irange_bitmask::operator==): New.
28733         (irange_bitmask::union_): New.
28734         (irange_bitmask::intersect): New.
28735         (class irange): Friend vrange_printer.
28736         (irange::varying_compatible_p): Adjust for bitmask.
28737         (irange::set_varying): Same.
28738         (irange::set_nonzero): Same.
28740 2023-07-07  Jan Beulich  <jbeulich@suse.com>
28742         * config/i386/sse.md (*vec_extractv2ti): Drop g modifiers.
28744 2023-07-07  Jan Beulich  <jbeulich@suse.com>
28746         * config/i386/sse.md (@vec_extract_hi_<mode>): Drop last
28747         alternative. Switch new last alternative's "isa" attribute to
28748         "avx512vl".
28749         (vec_extract_hi_v32qi): Likewise.
28751 2023-07-07  Pan Li  <pan2.li@intel.com>
28752             Robin Dapp  <rdapp@ventanamicro.com>
28754         * config/riscv/riscv.cc (riscv_emit_mode_set): Avoid emit insn
28755         when FRM_MODE_DYN.
28756         (riscv_mode_entry): Take FRM_MODE_DYN as entry mode.
28757         (riscv_mode_exit): Likewise for exit mode.
28758         (riscv_mode_needed): Likewise for needed mode.
28759         (riscv_mode_after): Likewise for after mode.
28761 2023-07-07  Pan Li  <pan2.li@intel.com>
28763         * config/riscv/vector.md: Fix typo.
28765 2023-07-06  Jan Hubicka  <jh@suse.cz>
28767         PR middle-end/25623
28768         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Scale loop frequency to maximal number
28769         of iterations determined.
28770         * tree-ssa-loop-ivcanon.cc (try_unroll_loop_completely): Likewise.
28772 2023-07-06  Jan Hubicka  <jh@suse.cz>
28774         * cfgloopmanip.cc (scale_loop_profile): Rewrite exit edge
28775         probability update to be safe on loops with subloops.
28776         Make bound parameter to be iteration bound.
28777         * tree-ssa-loop-ivcanon.cc (try_peel_loop): Update call
28778         of scale_loop_profile.
28779         * tree-vect-loop-manip.cc (vect_do_peeling): Likewise.
28781 2023-07-06  Hao Liu OS  <hliu@os.amperecomputing.com>
28783         PR tree-optimization/110449
28784         * tree-vect-loop.cc (vectorizable_induction): use vec_n to replace
28785         vec_loop for the unrolled loop.
28787 2023-07-06  Jan Hubicka  <jh@suse.cz>
28789         * cfg.cc (set_edge_probability_and_rescale_others): New function.
28790         (update_bb_profile_for_threading): Use it; simplify the rest.
28791         * cfg.h (set_edge_probability_and_rescale_others): Declare.
28792         * profile-count.h (profile_probability::apply_scale): New.
28794 2023-07-06  Claudiu Zissulescu  <claziss@gmail.com>
28796         * doc/extend.texi (ARC Built-in Functions): Update documentation
28797         with missing builtins.
28799 2023-07-06  Richard Biener  <rguenther@suse.de>
28801         PR tree-optimization/110556
28802         * tree-ssa-tail-merge.cc (gimple_equal_p): Check
28803         assign code and all operands of non-stores.
28805 2023-07-06  Richard Biener  <rguenther@suse.de>
28807         PR tree-optimization/110563
28808         * tree-vectorizer.h (vect_determine_partial_vectors_and_peeling):
28809         Remove second argument.
28810         * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
28811         Remove for_epilogue_p argument.  Merge assert ...
28812         (vect_analyze_loop_2): ... with check done before determining
28813         partial vectors by moving it after.
28814         * tree-vect-loop-manip.cc (vect_do_peeling): Adjust.
28816 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
28818         * ggc-common.cc (gt_pch_note_reorder, gt_pch_save): Tighten up a
28819         few things re 'reorder' option and strings.
28820         * stringpool.cc (gt_pch_p_S): This is now 'gcc_unreachable'.
28822 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
28824         * gengtype-parse.cc: Clean up obsolete parametrized structs
28825         remnants.
28826         * gengtype.cc: Likewise.
28827         * gengtype.h: Likewise.
28829 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
28831         * gengtype.cc (struct walk_type_data): Remove 'needs_cast_p'.
28832         Adjust all users.
28834 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
28836         * gengtype-parse.cc (token_names): Add '"user"'.
28837         * gengtype.h (gty_token): Add 'UNUSED_PARAM_IS' for use with
28838         'FIRST_TOKEN_WITH_VALUE'.
28840 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
28842         * doc/gty.texi (GTY Options) <string_length>: Enhance.
28844 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
28846         * gengtype.cc (write_root, write_roots): Explicitly reject
28847         'string_length' option.
28848         * doc/gty.texi (GTY Options) <string_length>: Document.
28850 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
28852         * ggc-internal.h (ggc_pch_count_object, ggc_pch_alloc_object)
28853         (ggc_pch_write_object): Remove 'bool is_string' argument.
28854         * ggc-common.cc: Adjust.
28855         * ggc-page.cc: Likewise.
28857 2023-07-06  Roger Sayle  <roger@nextmovesoftware.com>
28859         * dwarf2out.cc (mem_loc_descriptor): Handle COPYSIGN.
28861 2023-07-06  Hongyu Wang  <hongyu.wang@intel.com>
28863         * doc/extend.texi: Move x86 inlining rule to a new subsubsection
28864         and add description for inling of function with arch and tune
28865         attributes.
28867 2023-07-06  Richard Biener  <rguenther@suse.de>
28869         PR tree-optimization/110515
28870         * tree-ssa-pre.cc (compute_avail): Make code dealing
28871         with hoisting loads with different alias-sets more
28872         robust.
28874 2023-07-06  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
28876         * tree-vect-stmts.cc (vect_get_strided_load_store_ops): Fix ICE.
28878 2023-07-06  Hongyu Wang  <hongyu.wang@intel.com>
28880         * config/i386/i386.cc (ix86_can_inline_p): If callee has
28881         default arch=x86-64 and tune=generic, do not block the
28882         inlining to its caller. Also allow callee with different
28883         arch= to be inlined if it has always_inline attribute and
28884         it's ISA is subset of caller's.
28886 2023-07-06  liuhongt  <hongtao.liu@intel.com>
28888         * config/i386/i386.cc (ix86_rtx_costs): Adjust rtx_cost for
28889         DF/SFmode AND/IOR/XOR/ANDN operations.
28891 2023-07-06  Andrew Pinski  <apinski@marvell.com>
28893         PR middle-end/110554
28894         * tree-vect-generic.cc (expand_vector_condition): For comparisons,
28895         just build using boolean_type_node instead of the cond_type.
28896         For non-comparisons/non-scalar-bitmask, build a ` != 0` gimple
28897         that will feed into the COND_EXPR.
28899 2023-07-06  liuhongt  <hongtao.liu@intel.com>
28901         PR target/110170
28902         * config/i386/i386.md (movdf_internal): Disparage slightly for
28903         2 alternatives (r,v) and (v,r) by adding constraint modifier
28904         '?'.
28906 2023-07-06  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
28908         PR target/106907
28909         * config/rs6000/rs6000.cc (rs6000_expand_vector_extract): Remove redundant
28910         initialization of new_addr.
28912 2023-07-06  Hao Liu  <hliu@os.amperecomputing.com>
28914         PR tree-optimization/110474
28915         * tree-vect-loop.cc (vect_analyze_loop_2): unscale the VF by suggested
28916         unroll factor while selecting the epilog vect loop VF.
28918 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
28920         * gimple-range-gori.cc (compute_operand_range): Convert to a tail
28921         call.
28923 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
28925         * gimple-range-gori.cc (compute_operand_range): After calling
28926         compute_operand2_range, recursively call self if needed.
28927         (compute_operand2_range): Turn into a leaf function.
28928         (gori_compute::compute_operand1_and_operand2_range): Finish
28929         operand2 calculation.
28930         * gimple-range-gori.h (compute_operand2_range): Remove name param.
28932 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
28934         * gimple-range-gori.cc (compute_operand_range): After calling
28935         compute_operand1_range, recursively call self if needed.
28936         (compute_operand1_range): Turn into a leaf function.
28937         (gori_compute::compute_operand1_and_operand2_range): Finish
28938         operand1 calculation.
28939         * gimple-range-gori.h (compute_operand1_range): Remove name param.
28941 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
28943         * gimple-range-gori.cc (compute_operand_range): Check for
28944         operand interdependence when both op1 and op2 are computed.
28945         (compute_operand1_and_operand2_range): No checks required now.
28947 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
28949         * gimple-range-gori.cc (compute_operand_range): Check for
28950         a relation between op1 and op2 and use that instead.
28951         (compute_operand1_range): Don't look for a relation override.
28952         (compute_operand2_range): Ditto.
28954 2023-07-05  Jonathan Wakely  <jwakely@redhat.com>
28956         * doc/contrib.texi (Contributors): Update my entry.
28958 2023-07-05  Filip Kastl  <filip.kastl@gmail.com>
28960         * value-prof.cc (gimple_mod_subtract_transform): Correct edge
28961         prob calculation.
28963 2023-07-05  Uros Bizjak  <ubizjak@gmail.com>
28965         * sched-int.h (struct haifa_sched_info): Change can_schedule_ready_p,
28966         scehdule_more_p and contributes_to_priority indirect frunction
28967         type from int to bool.
28968         (no_real_insns_p): Change return type from int to bool.
28969         (contributes_to_priority): Ditto.
28970         * haifa-sched.cc (no_real_insns_p): Change return type from
28971         int to bool and adjust function body accordingly.
28972         * modulo-sched.cc (try_scheduling_node_in_cycle): Change "success"
28973         variable type from int to bool.
28974         (ps_insn_advance_column): Change return type from int to bool.
28975         (ps_has_conflicts): Ditto. Change "has_conflicts"
28976         variable type from int to bool.
28977         * sched-deps.cc (deps_may_trap_p): Change return type from int to bool.
28978         (conditions_mutex_p): Ditto.
28979         * sched-ebb.cc (schedule_more_p): Ditto.
28980         (ebb_contributes_to_priority): Change return type from
28981         int to bool and adjust function body accordingly.
28982         * sched-rgn.cc (is_cfg_nonregular): Ditto.
28983         (check_live_1): Ditto.
28984         (is_pfree): Ditto.
28985         (find_conditional_protection): Ditto.
28986         (is_conditionally_protected): Ditto.
28987         (is_prisky): Ditto.
28988         (is_exception_free): Ditto.
28989         (haifa_find_rgns): Change "unreachable" and "too_large_failure"
28990         variables from int to bool.
28991         (extend_rgns): Change "rescan" variable from int to bool.
28992         (check_live): Change return type from
28993         int to bool and adjust function body accordingly.
28994         (can_schedule_ready_p): Ditto.
28995         (schedule_more_p): Ditto.
28996         (contributes_to_priority): Ditto.
28998 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
29000         * doc/md.texi: Document that vec_set and vec_extract must not
29001         fail.
29002         * gimple-isel.cc (gimple_expand_vec_set_expr): Rename this...
29003         (gimple_expand_vec_set_extract_expr): ...to this.
29004         (gimple_expand_vec_exprs): Call renamed function.
29005         * internal-fn.cc (vec_extract_direct): Add.
29006         (expand_vec_extract_optab_fn): New function to expand
29007         vec_extract optab.
29008         (direct_vec_extract_optab_supported_p): Add.
29009         * internal-fn.def (VEC_EXTRACT): Add.
29010         * optabs.cc (can_vec_extract_var_idx_p): New function.
29011         * optabs.h (can_vec_extract_var_idx_p): Declare.
29013 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
29015         * config/riscv/autovec.md: Add gen_lowpart.
29017 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
29019         * config/riscv/autovec.md: Allow register index operand.
29021 2023-07-05  Pan Li  <pan2.li@intel.com>
29023         * config/riscv/riscv-vector-builtins.cc
29024         (function_expander::use_exact_insn): Use FRM_DYN instead of const0.
29026 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
29028         * config/riscv/autovec.md: Use float_truncate.
29030 2023-07-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
29032         * internal-fn.cc (internal_fn_len_index): Apply
29033         LEN_MASK_GATHER_LOAD/SCATTER_STORE into vectorizer.
29034         (internal_fn_mask_index): Ditto.
29035         * optabs-query.cc (supports_vec_gather_load_p): Ditto.
29036         (supports_vec_scatter_store_p): Ditto.
29037         * tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Ditto.
29038         * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Ditto.
29039         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
29040         (vect_get_strided_load_store_ops): Ditto.
29041         (vectorizable_store): Ditto.
29042         (vectorizable_load): Ditto.
29044 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
29045             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
29047         * simplify-rtx.cc (native_encode_rtx): Ditto.
29048         (native_decode_vector_rtx): Ditto.
29049         (simplify_const_vector_byte_offset): Ditto.
29050         (simplify_const_vector_subreg): Ditto.
29051         * tree.cc (build_truth_vector_type_for_mode): Ditto.
29052         * varasm.cc (output_constant_pool_2): Ditto.
29054 2023-07-05  YunQiang Su  <yunqiang.su@cipunited.com>
29056         * config/mips/mips.cc (mips_expand_block_move): don't expand for
29057         r6 with -mno-unaligned-access option if one or both of src and
29058         dest are unaligned. restruct: return directly if length is not const.
29059         (mips_block_move_straight): emit_move if ISA_HAS_UNALIGNED_ACCESS.
29061 2023-07-05  Jan Beulich  <jbeulich@suse.com>
29063         PR target/100711
29064         * config/i386/sse.md: New splitters to simplify
29065         not;vec_duplicate as a singular vpternlog.
29066         (one_cmpl<mode>2): Allow broadcast for operand 1.
29067         (<mask_codefor>one_cmpl<mode>2<mask_name>): Likewise.
29069 2023-07-05  Jan Beulich  <jbeulich@suse.com>
29071         PR target/100711
29072         * config/i386/sse.md: New splitters to simplify
29073         not;vec_duplicate;{ior,xor} as vec_duplicate;{iornot,xnor}.
29075 2023-07-05  Jan Beulich  <jbeulich@suse.com>
29077         PR target/100711
29078         * config/i386/sse.md: Permit non-immediate operand 1 in AVX2
29079         form of splitter for PR target/100711.
29081 2023-07-05  Richard Biener  <rguenther@suse.de>
29083         PR middle-end/110541
29084         * tree.def (VEC_PERM_EXPR): Adjust documentation to reflect
29085         reality.
29087 2023-07-05  Jan Beulich  <jbeulich@suse.com>
29089         PR target/93768
29090         * config/i386/sse.md (*andnot<mode>3): Add new alternatives
29091         for memory form operand 1.
29093 2023-07-05  Jan Beulich  <jbeulich@suse.com>
29095         PR target/93768
29096         * config/i386/i386.cc (ix86_rtx_costs): Further special-case
29097         bitwise vector operations.
29098         * config/i386/sse.md (*iornot<mode>3): New insn.
29099         (*xnor<mode>3): Likewise.
29100         (*<nlogic><mode>3): Likewise.
29101         (andor): New code iterator.
29102         (nlogic): New code attribute.
29103         (ternlog_nlogic): Likewise.
29105 2023-07-05  Richard Biener  <rguenther@suse.de>
29107         * tree-vect-stmts.cc (vect_mark_relevant): Fix typo.
29109 2023-07-05  yulong  <shiyulong@iscas.ac.cn>
29111         * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
29113 2023-07-05  yulong  <shiyulong@iscas.ac.cn>
29115         * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
29116         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
29117         (ADJUST_ALIGNMENT): Ditto.
29118         (RVV_TUPLE_PARTIAL_MODES): Ditto.
29119         (ADJUST_NUNITS): Ditto.
29120         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
29121         New types.
29122         (vfloat16mf4x3_t): Ditto.
29123         (vfloat16mf4x4_t): Ditto.
29124         (vfloat16mf4x5_t): Ditto.
29125         (vfloat16mf4x6_t): Ditto.
29126         (vfloat16mf4x7_t): Ditto.
29127         (vfloat16mf4x8_t): Ditto.
29128         (vfloat16mf2x2_t): Ditto.
29129         (vfloat16mf2x3_t): Ditto.
29130         (vfloat16mf2x4_t): Ditto.
29131         (vfloat16mf2x5_t): Ditto.
29132         (vfloat16mf2x6_t): Ditto.
29133         (vfloat16mf2x7_t): Ditto.
29134         (vfloat16mf2x8_t): Ditto.
29135         (vfloat16m1x2_t): Ditto.
29136         (vfloat16m1x3_t): Ditto.
29137         (vfloat16m1x4_t): Ditto.
29138         (vfloat16m1x5_t): Ditto.
29139         (vfloat16m1x6_t): Ditto.
29140         (vfloat16m1x7_t): Ditto.
29141         (vfloat16m1x8_t): Ditto.
29142         (vfloat16m2x2_t): Ditto.
29143         (vfloat16m2x3_t): Ditto.
29144         (vfloat16m2x4_t): Ditto.
29145         (vfloat16m4x2_t): Ditto.
29146         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
29147         (vfloat16mf4x3_t): Ditto.
29148         (vfloat16mf4x4_t): Ditto.
29149         (vfloat16mf4x5_t): Ditto.
29150         (vfloat16mf4x6_t): Ditto.
29151         (vfloat16mf4x7_t): Ditto.
29152         (vfloat16mf4x8_t): Ditto.
29153         (vfloat16mf2x2_t): Ditto.
29154         (vfloat16mf2x3_t): Ditto.
29155         (vfloat16mf2x4_t): Ditto.
29156         (vfloat16mf2x5_t): Ditto.
29157         (vfloat16mf2x6_t): Ditto.
29158         (vfloat16mf2x7_t): Ditto.
29159         (vfloat16mf2x8_t): Ditto.
29160         (vfloat16m1x2_t): Ditto.
29161         (vfloat16m1x3_t): Ditto.
29162         (vfloat16m1x4_t): Ditto.
29163         (vfloat16m1x5_t): Ditto.
29164         (vfloat16m1x6_t): Ditto.
29165         (vfloat16m1x7_t): Ditto.
29166         (vfloat16m1x8_t): Ditto.
29167         (vfloat16m2x2_t): Ditto.
29168         (vfloat16m2x3_t): Ditto.
29169         (vfloat16m2x4_t): Ditto.
29170         (vfloat16m4x2_t): Ditto.
29171         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
29172         * config/riscv/riscv.md: New.
29173         * config/riscv/vector-iterators.md: New.
29175 2023-07-04  Andrew Pinski  <apinski@marvell.com>
29177         PR tree-optimization/110487
29178         * match.pd (a !=/== CST1 ? CST2 : CST3): Always
29179         build a nonstandard integer and use that.
29181 2023-07-04  Andrew Pinski  <apinski@marvell.com>
29183         * match.pd (a?-1:0): Cast type an integer type
29184         rather the type before the negative.
29185         (a?0:-1): Likewise.
29187 2023-07-04  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
29189         * config/xtensa/xtensa.cc (machine_function, xtensa_expand_prologue):
29190         Change to use HARD_REG_BIT and its macros.
29191         * config/xtensa/xtensa.md
29192         (peephole2: regmove elimination during DFmode input reload):
29193         Likewise.
29195 2023-07-04  Richard Biener  <rguenther@suse.de>
29197         PR tree-optimization/110491
29198         * tree-ssa-phiopt.cc (match_simplify_replacement): Check
29199         whether the PHI args are possibly undefined before folding
29200         the COND_EXPR.
29202 2023-07-04  Pan Li  <pan2.li@intel.com>
29203             Thomas Schwinge  <thomas@codesourcery.com>
29205         * lto-streamer-in.cc (lto_input_mode_table): Stream in the mode
29206         bits for machine mode table.
29207         * lto-streamer-out.cc (lto_write_mode_table): Stream out the
29208         HOST machine mode bits.
29209         * lto-streamer.h (struct lto_file_decl_data): New fields mode_bits.
29210         * tree-streamer.cc (streamer_mode_table): Take MAX_MACHINE_MODE
29211         as the table size.
29212         * tree-streamer.h (streamer_mode_table): Ditto.
29213         (bp_pack_machine_mode): Take 1 << ceil_log2 (MAX_MACHINE_MODE)
29214         as the packing limit.
29215         (bp_unpack_machine_mode): Ditto with 'file_data->mode_bits'.
29217 2023-07-04  Thomas Schwinge  <thomas@codesourcery.com>
29219         * lto-streamer.h (class lto_input_block): Capture
29220         'lto_file_decl_data *file_data' instead of just
29221         'unsigned char *mode_table'.
29222         * ipa-devirt.cc (ipa_odr_read_section): Adjust.
29223         * ipa-fnsummary.cc (inline_read_section): Likewise.
29224         * ipa-icf.cc (sem_item_optimizer::read_section): Likewise.
29225         * ipa-modref.cc (read_section): Likewise.
29226         * ipa-prop.cc (ipa_prop_read_section, read_replacements_section):
29227         Likewise.
29228         * ipa-sra.cc (isra_read_summary_section): Likewise.
29229         * lto-cgraph.cc (input_cgraph_opt_section): Likewise.
29230         * lto-section-in.cc (lto_create_simple_input_block): Likewise.
29231         * lto-streamer-in.cc (lto_read_body_or_constructor)
29232         (lto_input_toplevel_asms): Likewise.
29233         * tree-streamer.h (bp_unpack_machine_mode): Likewise.
29235 2023-07-04  Richard Biener  <rguenther@suse.de>
29237         * tree-ssa-phiopt.cc (pass_phiopt::execute): Mark SSA undefs.
29238         (empty_bb_or_one_feeding_into_p): Check for them.
29239         * tree-ssa.h (gimple_uses_undefined_value_p): Remove.
29240         * tree-ssa.cc (gimple_uses_undefined_value_p): Likewise.
29242 2023-07-04  Richard Biener  <rguenther@suse.de>
29244         * tree-vect-loop.cc (vect_analyze_loop_costing): Remove
29245         check guarding scalar_niter underflow.
29247 2023-07-04  Hao Liu  <hliu@os.amperecomputing.com>
29249         PR tree-optimization/110531
29250         * tree-vect-loop.cc (vect_analyze_loop_1): initialize
29251         slp_done_for_suggested_uf to false.
29253 2023-07-04  Richard Biener  <rguenther@suse.de>
29255         PR tree-optimization/110228
29256         * tree-ssa-ifcombine.cc (pass_tree_ifcombine::execute):
29257         Mark SSA may-undefs.
29258         (bb_no_side_effects_p): Check stmt uses for undefs.
29260 2023-07-04  Richard Biener  <rguenther@suse.de>
29262         PR tree-optimization/110436
29263         * tree-vect-stmts.cc (vect_mark_relevant): Expand dumping,
29264         force live but not relevant pattern stmts relevant.
29266 2023-07-04  Lili Cui  <lili.cui@intel.com>
29268         * config/i386/i386.h: Add PTA_ENQCMD and PTA_UINTR to PTA_SIERRAFOREST.
29269         * doc/invoke.texi: Update new isa to march=sierraforest and grandridge.
29271 2023-07-04  Richard Biener  <rguenther@suse.de>
29273         PR middle-end/110495
29274         * tree.h (TREE_OVERFLOW): Do not mention VECTOR_CSTs
29275         since we do not set TREE_OVERFLOW on those since the
29276         introduction of VL vectors.
29277         * match.pd (x +- CST +- CST): For VECTOR_CST do not look
29278         at TREE_OVERFLOW to determine validity of association.
29280 2023-07-04  Richard Biener  <rguenther@suse.de>
29282         PR tree-optimization/110310
29283         * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
29284         Move costing part ...
29285         (vect_analyze_loop_costing): ... here.  Integrate better
29286         estimate for epilogues from ...
29287         (vect_analyze_loop_2): Call vect_determine_partial_vectors_and_peeling
29288         with actual epilogue status.
29289         * tree-vect-loop-manip.cc (vect_do_peeling): ... here and
29290         avoid cancelling epilogue vectorization.
29291         (vect_update_epilogue_niters): Remove.  No longer update
29292         epilogue LOOP_VINFO_NITERS.
29294 2023-07-04  Pan Li  <pan2.li@intel.com>
29296         Revert:
29297         2023-07-03  Pan Li  <pan2.li@intel.com>
29299         * config/riscv/vector.md: Fix typo.
29301 2023-07-04  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
29303         * doc/md.texi: Add len_mask_gather_load/len_mask_scatter_store.
29304         * internal-fn.cc (expand_scatter_store_optab_fn): Ditto.
29305         (expand_gather_load_optab_fn): Ditto.
29306         (internal_load_fn_p): Ditto.
29307         (internal_store_fn_p): Ditto.
29308         (internal_gather_scatter_fn_p): Ditto.
29309         (internal_fn_len_index): Ditto.
29310         (internal_fn_mask_index): Ditto.
29311         (internal_fn_stored_value_index): Ditto.
29312         * internal-fn.def (LEN_MASK_GATHER_LOAD): Ditto.
29313         (LEN_MASK_SCATTER_STORE): Ditto.
29314         * optabs.def (OPTAB_CD): Ditto.
29316 2023-07-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
29318         * config/riscv/riscv-vsetvl.cc
29319         (vector_insn_info::parse_insn): Add early break.
29321 2023-07-04  Hans-Peter Nilsson  <hp@axis.com>
29323         * config/cris/cris.md (CRIS_UNSPEC_SWAP_BITS): Remove.
29324         ("cris_swap_bits", "ctzsi2"): Use bitreverse instead.
29326 2023-07-04  Hans-Peter Nilsson  <hp@axis.com>
29328         * dwarf2out.cc (mem_loc_descriptor): Handle BITREVERSE.
29330 2023-07-03  Christoph Müllner  <christoph.muellner@vrull.eu>
29332         * common/config/riscv/riscv-common.cc: Add support for zvbb,
29333         zvbc, zvkg, zvkned, zvknha, zvknhb, zvksed, zvksh, zvkn,
29334         zvknc, zvkng, zvks, zvksc, zvksg, zvkt and the implied subsets.
29335         * config/riscv/arch-canonicalize: Add canonicalization info for
29336         zvkn, zvknc, zvkng, zvks, zvksc, zvksg.
29337         * config/riscv/riscv-opts.h (MASK_ZVBB): New macro.
29338         (MASK_ZVBC): Likewise.
29339         (TARGET_ZVBB): Likewise.
29340         (TARGET_ZVBC): Likewise.
29341         (MASK_ZVKG): Likewise.
29342         (MASK_ZVKNED): Likewise.
29343         (MASK_ZVKNHA): Likewise.
29344         (MASK_ZVKNHB): Likewise.
29345         (MASK_ZVKSED): Likewise.
29346         (MASK_ZVKSH): Likewise.
29347         (MASK_ZVKN): Likewise.
29348         (MASK_ZVKNC): Likewise.
29349         (MASK_ZVKNG): Likewise.
29350         (MASK_ZVKS): Likewise.
29351         (MASK_ZVKSC): Likewise.
29352         (MASK_ZVKSG): Likewise.
29353         (MASK_ZVKT): Likewise.
29354         (TARGET_ZVKG): Likewise.
29355         (TARGET_ZVKNED): Likewise.
29356         (TARGET_ZVKNHA): Likewise.
29357         (TARGET_ZVKNHB): Likewise.
29358         (TARGET_ZVKSED): Likewise.
29359         (TARGET_ZVKSH): Likewise.
29360         (TARGET_ZVKN): Likewise.
29361         (TARGET_ZVKNC): Likewise.
29362         (TARGET_ZVKNG): Likewise.
29363         (TARGET_ZVKS): Likewise.
29364         (TARGET_ZVKSC): Likewise.
29365         (TARGET_ZVKSG): Likewise.
29366         (TARGET_ZVKT): Likewise.
29367         * config/riscv/riscv.opt: Introduction of riscv_zv{b,k}_subext.
29369 2023-07-03  Andrew Pinski  <apinski@marvell.com>
29371         PR middle-end/110510
29372         * except.h (struct eh_landing_pad_d): Add chain_next GTY.
29374 2023-07-03  Iain Sandoe  <iain@sandoe.co.uk>
29376         * config/darwin.h: Avoid duplicate multiply_defined specs on
29377         earlier Darwin versions with shared libgcc.
29379 2023-07-03  Uros Bizjak  <ubizjak@gmail.com>
29381         * tree.h (tree_int_cst_equal): Change return type from int to bool.
29382         (operand_equal_for_phi_arg_p): Ditto.
29383         (tree_map_base_marked_p): Ditto.
29384         * tree.cc (contains_placeholder_p): Update function body
29385         for bool return type.
29386         (type_cache_hasher::equal): Ditto.
29387         (tree_map_base_hash): Change return type
29388         from int to void and adjust function body accordingly.
29389         (tree_int_cst_equal): Ditto.
29390         (operand_equal_for_phi_arg_p): Ditto.
29391         (get_narrower): Change "first" variable to bool.
29392         (cl_option_hasher::equal): Update function body for bool return type.
29393         * ggc.h (ggc_set_mark): Change return type from int to bool.
29394         (ggc_marked_p): Ditto.
29395         * ggc-page.cc (gt_ggc_mx): Change return type
29396         from int to void and adjust function body accordingly.
29397         (ggc_set_mark): Ditto.
29399 2023-07-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
29401         * config/riscv/autovec.md: Change order of
29402         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
29403         * config/riscv/riscv-v.cc (expand_load_store): Ditto.
29404         * doc/md.texi: Ditto.
29405         * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Ditto.
29406         * internal-fn.cc (len_maskload_direct): Ditto.
29407         (len_maskstore_direct): Ditto.
29408         (add_len_and_mask_args): New function.
29409         (expand_partial_load_optab_fn): Change order of
29410         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
29411         (expand_partial_store_optab_fn): Ditto.
29412         (internal_fn_len_index): New function.
29413         (internal_fn_mask_index): Change order of
29414         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
29415         (internal_fn_stored_value_index): Ditto.
29416         (internal_len_load_store_bias): Ditto.
29417         * internal-fn.h (internal_fn_len_index): New function.
29418         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Change order of
29419         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
29420         * tree-vect-stmts.cc (vectorizable_store): Ditto.
29421         (vectorizable_load): Ditto.
29423 2023-07-03  Gaius Mulley  <gaiusmod2@gmail.com>
29425         PR modula2/110125
29426         * doc/gm2.texi (Semantic checking): Include examples using
29427         -Wuninit-variable-checking.
29429 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
29431         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
29432         (*single_widen_fnma<mode>): Ditto.
29433         (*double_widen_fms<mode>): Ditto.
29434         (*single_widen_fms<mode>): Ditto.
29435         (*double_widen_fnms<mode>): Ditto.
29436         (*single_widen_fnms<mode>): Ditto.
29438 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
29440         * config/riscv/autovec-opt.md (@pred_single_widen_mul<any_extend:su><mode>): Change "@"
29441         into "*" in pattern name which simplifies build files.
29442         (*pred_single_widen_mul<any_extend:su><mode>): Ditto.
29443         (*pred_single_widen_mul<mode>): New pattern.
29445 2023-07-03  Richard Sandiford  <richard.sandiford@arm.com>
29447         * config/aarch64/aarch64-simd.md (vec_extract<mode><Vhalf>): Expect
29448         the index to be 0 or 1.
29450 2023-07-03  Lehua Ding  <lehua.ding@rivai.ai>
29452         Revert:
29453         2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
29455         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
29456         (*single_widen_fnma<mode>): Ditto.
29457         (*double_widen_fms<mode>): Ditto.
29458         (*single_widen_fms<mode>): Ditto.
29459         (*double_widen_fnms<mode>): Ditto.
29460         (*single_widen_fnms<mode>): Ditto.
29462 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
29464         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
29465         (*single_widen_fnma<mode>): Ditto.
29466         (*double_widen_fms<mode>): Ditto.
29467         (*single_widen_fms<mode>): Ditto.
29468         (*double_widen_fnms<mode>): Ditto.
29469         (*single_widen_fnms<mode>): Ditto.
29471 2023-07-03  Pan Li  <pan2.li@intel.com>
29473         * config/riscv/vector.md: Fix typo.
29475 2023-07-03  Richard Biener  <rguenther@suse.de>
29477         PR tree-optimization/110506
29478         * tree-vect-patterns.cc (vect_recog_rotate_pattern): Re-order
29479         TYPE_PRECISION access with INTEGRAL_TYPE_P check.
29481 2023-07-03  Richard Biener  <rguenther@suse.de>
29483         PR tree-optimization/110506
29484         * tree-ssa-ccp.cc (get_value_for_expr): Check for integral
29485         type before relying on TYPE_PRECISION to produce a nonzero mask.
29487 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
29489         * config/mips/mips.md(*and<mode>3_mips16): Generates
29490         ZEB/ZEH instructions.
29492 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
29494         * config/mips/mips.cc(mips_9bit_offset_address_p): Restrict the
29495         address register to M16_REGS for MIPS16.
29496         (BUILTIN_AVAIL_MIPS16E2): Defined a new macro.
29497         (AVAIL_MIPS16E2_OR_NON_MIPS16): Same as above.
29498         (AVAIL_NON_MIPS16 (cache..)): Update to
29499         AVAIL_MIPS16E2_OR_NON_MIPS16.
29500         * config/mips/mips.h (ISA_HAS_CACHE): Add clause for ISA_HAS_MIPS16E2.
29501         * config/mips/mips.md (mips_cache): Mark as extended MIPS16.
29503 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
29505         * config/mips/mips.h(ISA_HAS_9BIT_DISPLACEMENT): Add clause
29506         for ISA_HAS_MIPS16E2.
29507         (ISA_HAS_SYNC): Same as above.
29508         (ISA_HAS_LL_SC): Same as above.
29510 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
29512         * config/mips/mips.cc(mips_expand_ins_as_unaligned_store):
29513         Add logics for generating instruction.
29514         * config/mips/mips.h(ISA_HAS_LWL_LWR): Add clause for ISA_HAS_MIPS16E2.
29515         * config/mips/mips.md(mov_<load>l): Generates instructions.
29516         (mov_<load>r): Same as above.
29517         (mov_<store>l): Adjusted for the conditions above.
29518         (mov_<store>r): Same as above.
29519         (mov_<store>l_mips16e2): Add machine description for `define_insn mov_<store>l_mips16e2`.
29520         (mov_<store>r_mips16e2): Add machine description for `define_insn mov_<store>r_mips16e2`.
29522 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
29524         * config/mips/mips.cc(mips_symbol_insns_1): Generates LUI instruction.
29525         (mips_const_insns): Same as above.
29526         (mips_output_move): Same as above.
29527         (mips_output_function_prologue): Same as above.
29528         * config/mips/mips.md: Same as above
29530 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
29532         * config/mips/constraints.md(Yz): New constraints for mips16e2.
29533         * config/mips/mips-protos.h(mips_bit_clear_p): Declared new function.
29534         (mips_bit_clear_info): Same as above.
29535         * config/mips/mips.cc(mips_bit_clear_info): New function for
29536         generating instructions.
29537         (mips_bit_clear_p): Same as above.
29538         * config/mips/mips.h(ISA_HAS_EXT_INS): Add clause for ISA_HAS_MIPS16E2.
29539         * config/mips/mips.md(extended_mips16): Generates EXT and INS instructions.
29540         (*and<mode>3): Generates INS instruction.
29541         (*and<mode>3_mips16): Generates EXT, INS and ANDI instructions.
29542         (ior<mode>3): Add logics for ORI instruction.
29543         (*ior<mode>3_mips16_asmacro): Generates ORI instrucion.
29544         (*ior<mode>3_mips16): Add logics for XORI instruction.
29545         (*xor<mode>3_mips16): Generates XORI instrucion.
29546         (*extzv<mode>): Add logics for EXT instruction.
29547         (*insv<mode>): Add logics for INS instruction.
29548         * config/mips/predicates.md(bit_clear_operand): New predicate for
29549         generating bitwise instructions.
29550         (and_reg_operand): Add logics for generating bitwise instructions.
29552 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
29554         * config/mips/mips.cc(mips_regno_mode_ok_for_base_p): Generate instructions
29555         that uses global pointer register.
29556         (mips16_unextended_reference_p): Same as above.
29557         (mips_pic_base_register): Same as above.
29558         (mips_init_relocs): Same as above.
29559         * config/mips/mips.h(MIPS16_GP_LOADS): Defined a new macro.
29560         (GLOBAL_POINTER_REGNUM): Moved to machine description `mips.md`.
29561         * config/mips/mips.md(GLOBAL_POINTER_REGNUM): Moved to here from above.
29562         (*lowsi_mips16_gp):New `define_insn *low<mode>_mips16`.
29564 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
29566         * config/mips/mips.h(ISA_HAS_CONDMOVE): Add condition for ISA_HAS_MIPS16E2.
29567         * config/mips/mips.md(*mov<GPR:mode>_on_<MOVECC:mode>): Add logics for MOVx insts.
29568         (*mov<GPR:mode>_on_<MOVECC:mode>_mips16e2): Generate MOVx instruction.
29569         (*mov<GPR:mode>_on_<GPR2:mode>_ne): Add logics for MOVx insts.
29570         (*mov<GPR:mode>_on_<GPR2:mode>_ne_mips16e2): Generate MOVx instruction.
29571         * config/mips/predicates.md(reg_or_0_operand_mips16e2): New predicate for MOVx insts.
29573 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
29575         * config/mips/mips.cc(mips_file_start): Add mips16e2 info
29576         for output file.
29577         * config/mips/mips.h(__mips_mips16e2): Defined a new
29578         predefine macro.
29579         (ISA_HAS_MIPS16E2): Defined a new macro.
29580         (ASM_SPEC): Pass mmips16e2 to the assembler.
29581         * config/mips/mips.opt: Add -m(no-)mips16e2 option.
29582         * config/mips/predicates.md: Add clause for TARGET_MIPS16E2.
29583         * doc/invoke.texi: Add -m(no-)mips16e2 option..
29585 2023-07-02  Jakub Jelinek  <jakub@redhat.com>
29587         PR tree-optimization/110508
29588         * tree-ssa-math-opts.cc (match_uaddc_usubc): Only replace re2 with
29589         REALPART_EXPR opf nlhs if re2 is non-NULL.
29591 2023-07-02  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
29593         * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
29594         Simplify.
29595         * config/xtensa/xtensa.md (*xtensa_clamps):
29596         Add TARGET_MINMAX to the condition.
29598 2023-07-02  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
29600         * config/xtensa/xtensa.md (*eqne_INT_MIN):
29601         Add missing ":SI" to the match_operator.
29603 2023-07-02  Iain Sandoe  <iain@sandoe.co.uk>
29605         PR target/108743
29606         * config/darwin.opt: Add fconstant-cfstrings alias to
29607         mconstant-cfstrings.
29608         * doc/invoke.texi: Amend invocation descriptions to reflect
29609         that the fconstant-cfstrings is a target-option alias and to
29610         add the missing mconstant-cfstrings option description to the
29611         Darwin section.
29613 2023-07-01  Jan Hubicka  <jh@suse.cz>
29615         * tree-cfg.cc (gimple_duplicate_sese_region): Add elliminated_edge
29616         parmaeter; update profile.
29617         * tree-cfg.h (gimple_duplicate_sese_region): Update prototype.
29618         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Rename to ...
29619         (static_loop_exit): ... this; return the edge to be elliminated.
29620         (ch_base::copy_headers): Handle profile updating for eliminated exits.
29622 2023-07-01  Roger Sayle  <roger@nextmovesoftware.com>
29624         * config/i386/i386-features.cc (compute_convert_gain): Provide
29625         gains/costs for ROTATE and ROTATERT (by an integer constant).
29626         (general_scalar_chain::convert_rotate): New helper function to
29627         convert a DImode or SImode rotation by an integer constant into
29628         SSE vector form.
29629         (general_scalar_chain::convert_insn): Call the new convert_rotate
29630         for ROTATE and ROTATERT.
29631         (general_scalar_to_vector_candidate_p): Consider ROTATE and
29632         ROTATERT to be candidates if the second operand is an integer
29633         constant, valid for a rotation (or shift) in the given mode.
29634         * config/i386/i386-features.h (general_scalar_chain): Add new
29635         helper method convert_rotate.
29637 2023-07-01  Jan Hubicka  <jh@suse.cz>
29639         PR tree-optimization/103680
29640         * cfg.cc (update_bb_profile_for_threading): Fix profile update;
29641         make message clearer.
29643 2023-06-30  Qing Zhao  <qing.zhao@oracle.com>
29645         PR tree-optimization/101832
29646         * tree-object-size.cc (addr_object_size): Handle structure/union type
29647         when it has flexible size.
29649 2023-06-30  Eric Botcazou  <ebotcazou@adacore.com>
29651         * gimple-fold.cc (fold_array_ctor_reference): Fix head comment.
29652         (fold_nonarray_ctor_reference): Likewise.  Specifically deal
29653         with integral bit-fields.
29654         (fold_ctor_reference): Make sure that the constructor uses the
29655         native storage order.
29657 2023-06-30  Jan Hubicka  <jh@suse.cz>
29659         PR middle-end/109849
29660         * predict.cc (estimate_bb_frequencies): Turn to static function.
29661         (expr_expected_value_1): Fix handling of binary expressions with
29662         predicted values.
29663         * predict.def (PRED_MALLOC_NONNULL): Move later in the priority queue.
29664         (PRED_BUILTIN_EXPECT_WITH_PROBABILITY): Move to almost top of the priority
29665         queue.
29666         * predict.h (estimate_bb_frequencies): No longer declare it.
29668 2023-06-30  Uros Bizjak  <ubizjak@gmail.com>
29670         * fold-const.h (multiple_of_p): Change return type from int to bool.
29671         * fold-const.cc (split_tree): Change negl_p, neg_litp_p,
29672         neg_conp_p and neg_var_p variables to bool.
29673         (const_binop): Change sat_p variable to bool.
29674         (merge_ranges): Change no_overlap variable to bool.
29675         (extract_muldiv_1): Change same_p variable to bool.
29676         (tree_swap_operands_p): Update function body for bool return type.
29677         (fold_truth_andor): Change commutative variable to bool.
29678         (multiple_of_p): Change return type
29679         from int to void and adjust function body accordingly.
29680         * optabs.h (expand_twoval_unop): Change return type from int to bool.
29681         (expand_twoval_binop): Ditto.
29682         (can_compare_p): Ditto.
29683         (have_add2_insn): Ditto.
29684         (have_addptr3_insn): Ditto.
29685         (have_sub2_insn): Ditto.
29686         (have_insn_for): Ditto.
29687         * optabs.cc (add_equal_note): Ditto.
29688         (widen_operand): Change no_extend argument from int to bool.
29689         (expand_binop): Ditto.
29690         (expand_twoval_unop): Change return type
29691         from int to void and adjust function body accordingly.
29692         (expand_twoval_binop): Ditto.
29693         (can_compare_p): Ditto.
29694         (have_add2_insn): Ditto.
29695         (have_addptr3_insn): Ditto.
29696         (have_sub2_insn): Ditto.
29697         (have_insn_for): Ditto.
29699 2023-06-30  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
29701         * config/aarch64/aarch64-simd.md
29702         (vec_widen_<su>abdl_lo_<mode>, vec_widen_<su>abdl_hi_<mode>):
29703         Expansions for abd vec widen optabs.
29704         (aarch64_<su>abdl<mode>_insn): VQW based abdl RTL.
29705         * config/aarch64/iterators.md (USMAX_EXT): Code attributes
29706         that give the appropriate extend RTL for the max RTL.
29708 2023-06-30  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
29710         * internal-fn.def (VEC_WIDEN_ABD): New internal hilo optab.
29711         * optabs.def (vec_widen_sabd_optab,
29712         vec_widen_sabd_hi_optab, vec_widen_sabd_lo_optab,
29713         vec_widen_sabd_odd_even, vec_widen_sabd_even_optab,
29714         vec_widen_uabd_optab,
29715         vec_widen_uabd_hi_optab, vec_widen_uabd_lo_optab,
29716         vec_widen_uabd_odd_even, vec_widen_uabd_even_optab):
29717         New optabs.
29718         * doc/md.texi: Document them.
29719         * tree-vect-patterns.cc (vect_recog_abd_pattern): Update to
29720         to build a VEC_WIDEN_ABD call if the input precision is smaller
29721         than the precision of the output.
29722         (vect_recog_widen_abd_pattern): Should an ABD expression be
29723         found preceeding an extension, replace the two with a
29724         VEC_WIDEN_ABD.
29726 2023-06-30  Pan Li  <pan2.li@intel.com>
29728         * config/riscv/vector.md: Refactor the common condition.
29730 2023-06-30  Richard Biener  <rguenther@suse.de>
29732         PR tree-optimization/110496
29733         * gimple-ssa-store-merging.cc (find_bswap_or_nop_1): Re-order
29734         verifying and TYPE_PRECISION query for the BIT_FIELD_REF case.
29736 2023-06-30  Richard Biener  <rguenther@suse.de>
29738         PR middle-end/110489
29739         * statistics.cc (curr_statistics_hash): Add argument
29740         indicating whether we should allocate the hash.
29741         (statistics_fini_pass): If the hash isn't allocated
29742         only print the summary header.
29744 2023-06-30  Segher Boessenkool  <segher@kernel.crashing.org>
29745             Thomas Schwinge  <thomas@codesourcery.com>
29747         * config/nvptx/nvptx.cc (TARGET_LRA_P): Remove.
29749 2023-06-30  Jovan Dmitrović  <jovan.dmitrovic@syrmia.com>
29751         PR target/109435
29752         * config/mips/mips.cc (mips_function_arg_alignment): Returns
29753         the alignment of function argument. In case of typedef type,
29754         it returns the aligment of the aliased type.
29755         (mips_function_arg_boundary): Relocated calculation of the
29756         aligment of function arguments.
29758 2023-06-29  Jan Hubicka  <jh@suse.cz>
29760         PR tree-optimization/109849
29761         * ipa-fnsummary.cc (decompose_param_expr): Skip
29762         functions returning its parameter.
29763         (set_cond_stmt_execution_predicate): Return early
29764         if predicate was constructed.
29766 2023-06-29  Qing Zhao  <qing.zhao@oracle.com>
29768         PR c/77650
29769         * doc/extend.texi: Document GCC extension on a structure containing
29770         a flexible array member to be a member of another structure.
29772 2023-06-29  Qing Zhao  <qing.zhao@oracle.com>
29774         * print-tree.cc (print_node): Print new bit type_include_flexarray.
29775         * tree-core.h (struct tree_type_common): Use bit no_named_args_stdarg_p
29776         as type_include_flexarray for RECORD_TYPE or UNION_TYPE.
29777         * tree-streamer-in.cc (unpack_ts_type_common_value_fields): Stream
29778         in bit no_named_args_stdarg_p properly for its corresponding type.
29779         * tree-streamer-out.cc (pack_ts_type_common_value_fields): Stream
29780         out bit no_named_args_stdarg_p properly for its corresponding type.
29781         * tree.h (TYPE_INCLUDES_FLEXARRAY): New macro TYPE_INCLUDES_FLEXARRAY.
29783 2023-06-29  Aldy Hernandez  <aldyh@redhat.com>
29785         * tree-vrp.cc (maybe_set_nonzero_bits): Move from here...
29786         * tree-ssa-dom.cc (maybe_set_nonzero_bits): ...to here.
29787         * tree-vrp.h (maybe_set_nonzero_bits): Remove.
29789 2023-06-29  Aldy Hernandez  <aldyh@redhat.com>
29791         * value-range.cc (frange::set): Do not call verify_range.
29792         (frange::normalize_kind): Verify range.
29793         (frange::union_nans): Do not call verify_range.
29794         (frange::union_): Same.
29795         (frange::intersect): Same.
29796         (irange::irange_single_pair_union): Call normalize_kind if
29797         necessary.
29798         (irange::union_): Same.
29799         (irange::intersect): Same.
29800         (irange::set_range_from_nonzero_bits): Verify range.
29801         (irange::set_nonzero_bits): Call normalize_kind if necessary.
29802         (irange::get_nonzero_bits): Tweak comment.
29803         (irange::intersect_nonzero_bits): Call normalize_kind if
29804         necessary.
29805         (irange::union_nonzero_bits): Same.
29806         * value-range.h (irange::normalize_kind): Verify range.
29808 2023-06-29  Uros Bizjak  <ubizjak@gmail.com>
29810         * cselib.h (rtx_equal_for_cselib_1):
29811         Change return type from int to bool.
29812         (references_value_p): Ditto.
29813         (rtx_equal_for_cselib_p): Ditto.
29814         * expr.h (can_store_by_pieces): Ditto.
29815         (try_casesi): Ditto.
29816         (try_tablejump): Ditto.
29817         (safe_from_p): Ditto.
29818         * sbitmap.h (bitmap_equal_p): Ditto.
29819         * cselib.cc (references_value_p): Change return type
29820         from int to void and adjust function body accordingly.
29821         (rtx_equal_for_cselib_1): Ditto.
29822         * expr.cc (is_aligning_offset): Ditto.
29823         (can_store_by_pieces): Ditto.
29824         (mostly_zeros_p): Ditto.
29825         (all_zeros_p): Ditto.
29826         (safe_from_p): Ditto.
29827         (is_aligning_offset): Ditto.
29828         (try_casesi): Ditto.
29829         (try_tablejump): Ditto.
29830         (store_constructor): Change "need_to_clear" and
29831         "const_bounds_p" variables to bool.
29832         * sbitmap.cc (bitmap_equal_p):  Change return type from int to bool.
29834 2023-06-29  Robin Dapp  <rdapp@ventanamicro.com>
29836         * tree-ssa-math-opts.cc (divmod_candidate_p): Use
29837         element_precision.
29839 2023-06-29  Richard Biener  <rguenther@suse.de>
29841         PR tree-optimization/110460
29842         * tree-vect-stmts.cc (get_related_vectype_for_scalar_type):
29843         Only allow integral, pointer and scalar float type scalar_type.
29845 2023-06-29  Lili Cui  <lili.cui@intel.com>
29847         PR tree-optimization/110148
29848         * tree-ssa-reassoc.cc (rewrite_expr_tree_parallel): Handle loop-carried
29849         ops in this function.
29851 2023-06-29  Richard Biener  <rguenther@suse.de>
29853         PR middle-end/110452
29854         * expr.cc (store_constructor): Handle uniform boolean
29855         vectors with integer mode specially.
29857 2023-06-29  Richard Biener  <rguenther@suse.de>
29859         PR middle-end/110461
29860         * match.pd (bitop (convert@2 @0) (convert?@3 @1)): Disable
29861         for VECTOR_TYPE_P.
29863 2023-06-29  Richard Sandiford  <richard.sandiford@arm.com>
29865         * vec.h (gt_pch_nx): Add overloads for va_gc_atomic.
29866         (array_slice): Relax va_gc constructor to handle all vectors
29867         with a vl_embed layout.
29869 2023-06-29  Pan Li  <pan2.li@intel.com>
29871         * config/riscv/riscv.cc (riscv_emit_mode_set): Add emit for FRM.
29872         (riscv_mode_needed): Likewise.
29873         (riscv_entity_mode_after): Likewise.
29874         (riscv_mode_after): Likewise.
29875         (riscv_mode_entry): Likewise.
29876         (riscv_mode_exit): Likewise.
29877         * config/riscv/riscv.h (NUM_MODES_FOR_MODE_SWITCHING): Add number
29878         for FRM.
29879         * config/riscv/riscv.md: Add FRM register.
29880         * config/riscv/vector-iterators.md: Add FRM type.
29881         * config/riscv/vector.md (frm_mode): Define new attr for FRM mode.
29882         (fsrm): Define new insn for fsrm instruction.
29884 2023-06-29  Pan Li  <pan2.li@intel.com>
29886         * config/riscv/riscv-protos.h (enum floating_point_rounding_mode):
29887         Add macro for static frm min and max.
29888         * config/riscv/riscv-vector-builtins-bases.cc
29889         (class binop_frm): New class for floating-point with frm.
29890         (BASE): Add vfadd for frm.
29891         * config/riscv/riscv-vector-builtins-bases.h: Likewise.
29892         * config/riscv/riscv-vector-builtins-functions.def
29893         (vfadd_frm): Likewise.
29894         * config/riscv/riscv-vector-builtins-shapes.cc
29895         (struct alu_frm_def): New struct for alu with frm.
29896         (SHAPE): Add alu with frm.
29897         * config/riscv/riscv-vector-builtins-shapes.h: Likewise.
29898         * config/riscv/riscv-vector-builtins.cc
29899         (function_checker::report_out_of_range_and_not): New function
29900         for report out of range and not val.
29901         (function_checker::require_immediate_range_or): New function
29902         for checking in range or one val.
29903         * config/riscv/riscv-vector-builtins.h: Add function decl.
29905 2023-06-29  Cui, Lili  <lili.cui@intel.com>
29907         * common/config/i386/cpuinfo.h (get_intel_cpu): Remove model value 0xa8
29908         from Rocketlake, move model value 0xbf from Alderlake to Raptorlake.
29910 2023-06-28  Hans-Peter Nilsson  <hp@axis.com>
29912         PR target/110144
29913         * config/cris/cris.cc (cris_postdbr_cmpelim): Don't apply PATTERN
29914         to insn before validating it.
29916 2023-06-28  Jan Hubicka  <jh@suse.cz>
29918         PR middle-end/110334
29919         * ipa-fnsummary.h (ipa_fn_summary): Add
29920         safe_to_inline_to_always_inline.
29921         * ipa-inline.cc (can_early_inline_edge_p): ICE
29922         if SSA is not built; do cycle checking for
29923         always_inline functions.
29924         (inline_always_inline_functions): Be recrusive;
29925         watch for cycles; do not updat overall summary.
29926         (early_inliner): Do not give up on always_inlines.
29927         * ipa-utils.cc (ipa_reverse_postorder): Do not skip
29928         always inlines.
29930 2023-06-28  Uros Bizjak  <ubizjak@gmail.com>
29932         * output.h (leaf_function_p): Change return type from int to bool.
29933         (final_forward_branch_p): Ditto.
29934         (only_leaf_regs_used): Ditto.
29935         (maybe_assemble_visibility): Ditto.
29936         * varasm.h (supports_one_only): Ditto.
29937         * rtl.h (compute_alignments): Change return type from int to void.
29938         * final.cc (app_on): Change return type from int to bool.
29939         (compute_alignments): Change return type from int to void
29940         and adjust function body accordingly.
29941         (shorten_branches):  Change "something_changed" variable
29942         type from int to bool.
29943         (leaf_function_p):  Change return type from int to bool
29944         and adjust function body accordingly.
29945         (final_forward_branch_p): Ditto.
29946         (only_leaf_regs_used): Ditto.
29947         * varasm.cc (contains_pointers_p): Change return type from
29948         int to bool and adjust function body accordingly.
29949         (compare_constant): Ditto.
29950         (maybe_assemble_visibility): Ditto.
29951         (supports_one_only): Ditto.
29953 2023-06-28  Manolis Tsamis  <manolis.tsamis@vrull.eu>
29955         PR debug/110308
29956         * regcprop.cc (maybe_mode_change): Check stack_pointer_rtx mode.
29957         (maybe_copy_reg_attrs): New function.
29958         (find_oldest_value_reg): Use maybe_copy_reg_attrs.
29959         (copyprop_hardreg_forward_1): Ditto.
29961 2023-06-28  Richard Biener  <rguenther@suse.de>
29963         PR tree-optimization/110434
29964         * tree-nrv.cc (pass_nrv::execute): Remove CLOBBERs of
29965         VAR we replace with <retval>.
29967 2023-06-28  Richard Biener  <rguenther@suse.de>
29969         PR tree-optimization/110451
29970         * tree-ssa-loop-im.cc (stmt_cost): [VEC_]COND_EXPR and
29971         tcc_comparison are expensive.
29973 2023-06-28  Roger Sayle  <roger@nextmovesoftware.com>
29975         * config/i386/i386-expand.cc (ix86_expand_branch): Also use ptest
29976         for TImode comparisons on 32-bit architectures.
29977         * config/i386/i386.md (cbranch<mode>4): Change from SDWIM to
29978         SWIM1248x to exclude/avoid TImode being conditional on -m64.
29979         (cbranchti4): New define_expand for TImode on both TARGET_64BIT
29980         and/or with TARGET_SSE4_1.
29981         * config/i386/predicates.md (ix86_timode_comparison_operator):
29982         New predicate that depends upon TARGET_64BIT.
29983         (ix86_timode_comparison_operand): Likewise.
29985 2023-06-28  Roger Sayle  <roger@nextmovesoftware.com>
29987         PR target/78794
29988         * config/i386/i386-features.cc (compute_convert_gain): Provide
29989         more accurate gains for conversion of scalar comparisons to
29990         PTEST.
29992 2023-06-28  Richard Biener  <rguenther@suse.de>
29994         PR tree-optimization/110443
29995         * tree-vect-slp.cc (vect_build_slp_tree_1): Reject non-grouped
29996         gather loads.
29998 2023-06-28  Haochen Gui  <guihaoc@gcc.gnu.org>
30000         * config/rs6000/rs6000.md (peephole2 for compare_and_move): New.
30001         (peephole2 for move_and_compare): New.
30002         (mode_iterator WORD): New.  Set the mode to SI/DImode by
30003         TARGET_POWERPC64.
30004         (*mov<mode>_internal2): Change the mode iterator from P to WORD.
30005         (split pattern for compare_and_move): Likewise.
30007 2023-06-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
30009         * config/riscv/autovec-opt.md (*double_widen_fma<mode>): New pattern.
30010         (*single_widen_fma<mode>): Ditto.
30012 2023-06-28  Haochen Gui  <guihaoc@gcc.gnu.org>
30014         PR target/104124
30015         * config/rs6000/altivec.md (*altivec_vupkhs<VU_char>_direct): Rename
30016         to...
30017         (altivec_vupkhs<VU_char>_direct): ...this.
30018         * config/rs6000/predicates.md (vspltisw_vupkhsw_constant_split): New
30019         predicate to test if a constant can be loaded with vspltisw and
30020         vupkhsw.
30021         (easy_vector_constant): Call vspltisw_vupkhsw_constant_p to Check if
30022         a vector constant can be synthesized with a vspltisw and a vupkhsw.
30023         * config/rs6000/rs6000-protos.h (vspltisw_vupkhsw_constant_p):
30024         Declare.
30025         * config/rs6000/rs6000.cc (vspltisw_vupkhsw_constant_p): New
30026         function to return true if OP mode is V2DI and can be synthesized
30027         with vupkhsw and vspltisw.
30028         * config/rs6000/vsx.md (*vspltisw_v2di_split): New insn to load up
30029         constants with vspltisw and vupkhsw.
30031 2023-06-28  Jan Hubicka  <jh@suse.cz>
30033         PR tree-optimization/110377
30034         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Pass statement to
30035         the ranger query.
30036         (ipa_analyze_node): Enable ranger.
30038 2023-06-28  Richard Biener  <rguenther@suse.de>
30040         * tree.h (TYPE_PRECISION): Check for non-VECTOR_TYPE.
30041         (TYPE_PRECISION_RAW): Provide raw access to the precision
30042         field.
30043         * tree.cc (verify_type_variant): Compare TYPE_PRECISION_RAW.
30044         (gimple_canonical_types_compatible_p): Likewise.
30045         * tree-streamer-out.cc (pack_ts_type_common_value_fields):
30046         Stream TYPE_PRECISION_RAW.
30047         * tree-streamer-in.cc (unpack_ts_type_common_value_fields):
30048         Likewise.
30049         * lto-streamer-out.cc (hash_tree): Hash TYPE_PRECISION_RAW.
30051 2023-06-28  Alexandre Oliva  <oliva@adacore.com>
30053         * doc/extend.texi (zero-call-used-regs): Document leafy and
30054         variants thereof.
30055         * flag-types.h (zero_regs_flags): Add LEAFY_MODE, as well as
30056         LEAFY and variants.
30057         * function.cc (gen_call_ued_regs_seq): Set only_used for leaf
30058         functions in leafy mode.
30059         * opts.cc (zero_call_used_regs_opts): Add leafy and variants.
30061 2023-06-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
30063         * config/riscv/riscv-vector-builtins-bases.cc: Adapt expand.
30064         * config/riscv/vector.md (@pred_single_widen_<plus_minus:optab><mode>):
30065         Remove.
30066         (@pred_single_widen_add<mode>): New pattern.
30067         (@pred_single_widen_sub<mode>): New pattern.
30069 2023-06-28  liuhongt  <hongtao.liu@intel.com>
30071         * config/i386/i386.cc (ix86_invalid_conversion): New function.
30072         (TARGET_INVALID_CONVERSION): Define as
30073         ix86_invalid_conversion.
30075 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
30077         * config/riscv/autovec.md (<optab><vnconvert><mode>2): New
30078         expander.
30079         (<float_cvt><vnconvert><mode>2): Ditto.
30080         (<optab><mode><vnconvert>2): Ditto.
30081         (<float_cvt><mode><vnconvert>2): Ditto.
30082         * config/riscv/vector-iterators.md: Add vnconvert.
30084 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
30086         * config/riscv/autovec.md (extend<v_double_trunc><mode>2): New
30087         expander.
30088         (extend<v_quad_trunc><mode>2): Ditto.
30089         (trunc<mode><v_double_trunc>2): Ditto.
30090         (trunc<mode><v_quad_trunc>2): Ditto.
30091         * config/riscv/vector-iterators.md: Add VQEXTF and HF to
30092         V_QUAD_TRUNC and v_quad_trunc.
30094 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
30096         * config/riscv/autovec.md (<float_cvt><vconvert><mode>2): New
30097         expander.
30099 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
30101         * config/riscv/autovec.md (copysign<mode>3): Add expander.
30102         (xorsign<mode>3): Ditto.
30103         * config/riscv/riscv-vector-builtins-bases.cc (class vfsgnjn):
30104         New class.
30105         * config/riscv/vector-iterators.md (copysign): Remove ncopysign.
30106         (xorsign): Ditto.
30107         (n): Ditto.
30108         (x): Ditto.
30109         * config/riscv/vector.md (@pred_ncopysign<mode>): Split off.
30110         (@pred_ncopysign<mode>_scalar): Ditto.
30112 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
30114         * config/riscv/autovec.md: VF_AUTO -> VF.
30115         * config/riscv/vector-iterators.md: Introduce VF_ZVFHMIN,
30116         VWEXTF_ZVFHMIN and use TARGET_ZVFH in VWCONVERTI, VHF and
30117         VHF_LMUL1.
30118         * config/riscv/vector.md: Use new iterators.
30120 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
30122         * match.pd: Use element_mode and check if target supports
30123         operation with new type.
30125 2023-06-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
30127         * config/aarch64/aarch64-sve-builtins-base.cc
30128         (svdupq_impl::fold_nonconst_dupq): New method.
30129         (svdupq_impl::fold): Call fold_nonconst_dupq.
30131 2023-06-27  Andrew Pinski  <apinski@marvell.com>
30133         PR middle-end/110420
30134         PR middle-end/103979
30135         PR middle-end/98619
30136         * gimplify.cc (gimplify_asm_expr): Mark asm with labels as volatile.
30138 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
30140         * ipa-cp.cc (decide_whether_version_node): Adjust comment.
30141         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Adjust
30142         for Value_Range.
30143         (set_switch_stmt_execution_predicate): Same.
30144         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
30146 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
30148         * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Adjust for use with
30149         ipa_vr instead of value_range.
30150         (gt_pch_nx): Same.
30151         (gt_ggc_mx): Same.
30152         (ipa_get_value_range): Same.
30153         * value-range.cc (gt_pch_nx): Move to ipa-prop.cc and adjust for
30154         ipa_vr.
30155         (gt_ggc_mx): Same.
30157 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
30159         * ipa-cp.cc (ipa_vr_operation_and_type_effects): New.
30160         * ipa-prop.cc (ipa_get_value_range): Adjust for ipa_vr.
30161         (ipa_set_jfunc_vr): Take a range.
30162         (ipa_compute_jump_functions_for_edge): Pass range to
30163         ipa_set_jfunc_vr.
30164         (ipa_write_jump_function): Call streamer write helper.
30165         (ipa_read_jump_function): Call streamer read helper.
30166         * ipa-prop.h (class ipa_vr): Change m_vr to an ipa_vr.
30168 2023-06-27  Richard Sandiford  <richard.sandiford@arm.com>
30170         * gengtype-parse.cc (consume_until_comma_or_eos): Parse "= { ... }"
30171         as a probable initializer rather than a probable complete statement.
30173 2023-06-27  Richard Biener  <rguenther@suse.de>
30175         PR tree-optimization/96208
30176         * tree-vect-slp.cc (vect_build_slp_tree_1): Allow
30177         a non-grouped load if it is the same for all lanes.
30178         (vect_build_slp_tree_2): Handle not grouped loads.
30179         (vect_optimize_slp_pass::remove_redundant_permutations):
30180         Likewise.
30181         (vect_transform_slp_perm_load_1): Likewise.
30182         * tree-vect-stmts.cc (vect_model_load_cost): Likewise.
30183         (get_group_load_store_type): Likewise.  Handle
30184         invariant accesses.
30185         (vectorizable_load): Likewise.
30187 2023-06-27  liuhongt  <hongtao.liu@intel.com>
30189         PR rtl-optimization/110237
30190         * config/i386/sse.md (<avx512>_store<mode>_mask): Refine with
30191         UNSPEC_MASKMOV.
30192         (maskstore<mode><avx512fmaskmodelower): Ditto.
30193         (*<avx512>_store<mode>_mask): New define_insn, it's renamed
30194         from original <avx512>_store<mode>_mask.
30196 2023-06-27  liuhongt  <hongtao.liu@intel.com>
30198         * config/i386/i386-features.cc (pass_insert_vzeroupper:gate):
30199         Move flag_expensive_optimizations && !optimize_size to ..
30200         * config/i386/i386-options.cc (ix86_option_override_internal):
30201         .. this, it makes -mvzeroupper independent of optimization
30202         level, but still keeps the behavior of architecture
30203         tuning(emit_vzeroupper) unchanged.
30205 2023-06-27  liuhongt  <hongtao.liu@intel.com>
30207         PR target/82735
30208         * config/i386/i386.cc (ix86_avx_u127_mode_needed): Don't emit
30209         vzeroupper for vzeroupper call_insn.
30211 2023-06-27  Andrew Pinski  <apinski@marvell.com>
30213         * doc/extend.texi (__builtin_alloca_with_align_and_max): Fix
30214         defbuiltin usage.
30216 2023-06-27  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
30218         * config/riscv/riscv-v.cc (expand_const_vector): Fix stepped vector
30219         with base != 0.
30221 2023-06-26  Andrew Pinski  <apinski@marvell.com>
30223         * doc/extend.texi (access attribute): Add
30224         cindex for it.
30225         (interrupt/interrupt_handler attribute):
30226         Likewise.
30228 2023-06-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
30230         * config/aarch64/aarch64-simd.md (aarch64_sqrshrun_n<mode>_insn):
30231         Use <DWI> instead of <V2XWIDE>.
30232         (aarch64_sqrshrun_n<mode>): Likewise.
30234 2023-06-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
30236         * config/aarch64/aarch64-protos.h (aarch64_const_vec_rsra_rnd_imm_p):
30237         Rename to...
30238         (aarch64_rnd_imm_p): ... This.
30239         * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec):
30240         Rename to...
30241         (aarch64_int_rnd_operand): ... This.
30242         (aarch64_simd_rshrn_imm_vec): Delete.
30243         * config/aarch64/aarch64-simd.md (aarch64_<sra_op>rsra_n<mode>_insn):
30244         Adjust for the above.
30245         (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): Likewise.
30246         (*aarch64_<shrn_op>rshrn_n<mode>_insn): Likewise.
30247         (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
30248         (aarch64_sqrshrun_n<mode>_insn): Likewise.
30249         (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): Likewise.
30250         (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): Likewise.
30251         (aarch64_sqrshrun2_n<mode>_insn_le): Likewise.
30252         (aarch64_sqrshrun2_n<mode>_insn_be): Likewise.
30253         * config/aarch64/aarch64.cc (aarch64_const_vec_rsra_rnd_imm_p):
30254         Rename to...
30255         (aarch64_rnd_imm_p): ... This.
30257 2023-06-26  Andreas Krebbel  <krebbel@linux.ibm.com>
30259         * config/s390/s390.cc (s390_encode_section_info): Set
30260         SYMBOL_FLAG_SET_NOTALIGN2 only if the symbol has explicitely been
30261         misaligned.
30263 2023-06-26  Jan Hubicka  <jh@suse.cz>
30265         PR tree-optimization/109849
30266         * tree-ssa-dce.cc (make_forwarders_with_degenerate_phis): Fix profile
30267         count of newly constructed forwarder block.
30269 2023-06-26  Andrew Carlotti  <andrew.carlotti@arm.com>
30271         * doc/optinfo.texi: Fix "steam" -> "stream".
30273 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30275         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Add LEN_MASK_STORE and
30276         fix LEN_STORE.
30277         (dse_optimize_stmt): Add LEN_MASK_STORE.
30279 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30281         * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Fix gimple
30282         fold of LOAD/STORE with length.
30284 2023-06-26  Andrew MacLeod  <amacleod@redhat.com>
30286         * gimple-range-gori.cc (compute_operand1_and_operand2_range):
30287         Check for interdependence between operands 1 and 2.
30289 2023-06-26  Richard Sandiford  <richard.sandiford@arm.com>
30291         * tree-vect-stmts.cc (vectorizable_conversion): Take multi_step_cvt
30292         into account when costing non-widening/truncating conversions.
30294 2023-06-26  Richard Biener  <rguenther@suse.de>
30296         PR tree-optimization/110381
30297         * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
30298         Materialize permutes before fold-left reductions.
30300 2023-06-26  Pan Li  <pan2.li@intel.com>
30302         * config/riscv/riscv-vector-builtins-bases.h: Remove duplicated decl.
30304 2023-06-26  Richard Biener  <rguenther@suse.de>
30306         * varasm.cc (initializer_constant_valid_p_1): Also
30307         constrain the type of value to be scalar integral
30308         before dispatching to narrowing_initializer_constant_valid_p.
30310 2023-06-26  Richard Biener  <rguenther@suse.de>
30312         * tree-ssa-scopedtables.cc (hashable_expr_equal_p):
30313         Use element_precision.
30315 2023-06-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
30317         * config/riscv/autovec.md (vcond<V:mode><VI:mode>): Remove redundant
30318         vcond patterns.
30319         (vcondu<V:mode><VI:mode>): Ditto.
30320         * config/riscv/riscv-protos.h (expand_vcond): Ditto.
30321         * config/riscv/riscv-v.cc (expand_vcond): Ditto.
30323 2023-06-26  Richard Biener  <rguenther@suse.de>
30325         PR tree-optimization/110392
30326         * gimple-predicate-analysis.cc (uninit_analysis::is_use_guarded):
30327         Do early exits on true/false predicate only after normalization.
30329 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30331         * tree-ssa-sccvn.cc (vn_reference_lookup_3): Change name "len" into
30332         "length".
30334 2023-06-26  Roger Sayle  <roger@nextmovesoftware.com>
30336         * config/i386/i386.md (peephole2): Simplify zeroing a register
30337         followed by an IOR, XOR or PLUS operation on it, into a move.
30338         (*ashl<dwi>3_doubleword_highpart): New define_insn_and_split to
30339         eliminate (and hide from reload) unnecessary word to doubleword
30340         extensions that are followed by left shifts by sufficiently large,
30341         but valid, bit counts.
30343 2023-06-26  liuhongt  <hongtao.liu@intel.com>
30345         PR tree-optimization/110371
30346         PR tree-optimization/110018
30347         * tree-vect-stmts.cc (vectorizable_conversion): Use cvt_op to
30348         save intermediate type operand instead of "subtle" vec_dest
30349         for case NONE.
30351 2023-06-26  liuhongt  <hongtao.liu@intel.com>
30353         PR tree-optimization/110371
30354         PR tree-optimization/110018
30355         * tree-vect-stmts.cc (vectorizable_conversion): Don't use
30356         intermiediate type for FIX_TRUNC_EXPR when ftrapping-math.
30358 2023-06-26  Hongyu Wang  <hongyu.wang@intel.com>
30360         * config/i386/i386-options.cc (ix86_valid_target_attribute_tree):
30361         Override tune_string with arch_string if tune_string is not
30362         explicitly specified.
30364 2023-06-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
30366         * config/riscv/riscv-vsetvl.cc (vector_insn_info::parse_insn): Ehance
30367         AVL propagation.
30368         * config/riscv/riscv-vsetvl.h: New function.
30370 2023-06-25  Li Xu  <xuli1@eswincomputing.com>
30372         * config/riscv/riscv-vector-builtins-bases.cc: change emit_insn to
30373         emit_move_insn
30375 2023-06-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
30377         * config/riscv/autovec.md (len_load_<mode>): Remove.
30378         (len_maskload<mode><vm>): Remove.
30379         (len_store_<mode>): New pattern.
30380         (len_maskstore<mode><vm>): New pattern.
30381         * config/riscv/predicates.md (autovec_length_operand): New predicate.
30382         * config/riscv/riscv-protos.h (enum insn_type): New enum.
30383         (expand_load_store): New function.
30384         * config/riscv/riscv-v.cc (emit_vlmax_masked_insn): Ditto.
30385         (emit_nonvlmax_masked_insn): Ditto.
30386         (expand_load_store): Ditto.
30387         * config/riscv/riscv-vector-builtins.cc
30388         (function_expander::use_contiguous_store_insn): Add avl_type operand
30389         into pred_store.
30390         * config/riscv/vector.md: Ditto.
30392 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30394         * internal-fn.cc (expand_partial_store_optab_fn): Fix bug of BIAS
30395         argument index.
30397 2023-06-25  Pan Li  <pan2.li@intel.com>
30399         * config/riscv/vector.md: Revert.
30401 2023-06-25  Pan Li  <pan2.li@intel.com>
30403         * config/riscv/genrvv-type-indexer.cc (valid_type): Revert changes.
30404         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): Ditto.
30405         (ADJUST_ALIGNMENT): Ditto.
30406         (RVV_TUPLE_PARTIAL_MODES): Ditto.
30407         (ADJUST_NUNITS): Ditto.
30408         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t): Ditto.
30409         (vfloat16mf4x3_t): Ditto.
30410         (vfloat16mf4x4_t): Ditto.
30411         (vfloat16mf4x5_t): Ditto.
30412         (vfloat16mf4x6_t): Ditto.
30413         (vfloat16mf4x7_t): Ditto.
30414         (vfloat16mf4x8_t): Ditto.
30415         (vfloat16mf2x2_t): Ditto.
30416         (vfloat16mf2x3_t): Ditto.
30417         (vfloat16mf2x4_t): Ditto.
30418         (vfloat16mf2x5_t): Ditto.
30419         (vfloat16mf2x6_t): Ditto.
30420         (vfloat16mf2x7_t): Ditto.
30421         (vfloat16mf2x8_t): Ditto.
30422         (vfloat16m1x2_t): Ditto.
30423         (vfloat16m1x3_t): Ditto.
30424         (vfloat16m1x4_t): Ditto.
30425         (vfloat16m1x5_t): Ditto.
30426         (vfloat16m1x6_t): Ditto.
30427         (vfloat16m1x7_t): Ditto.
30428         (vfloat16m1x8_t): Ditto.
30429         (vfloat16m2x2_t): Ditto.
30430         (vfloat16m2x3_t): Diito.
30431         (vfloat16m2x4_t): Diito.
30432         (vfloat16m4x2_t): Diito.
30433         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): Ditto.
30434         (vfloat16mf4x3_t): Ditto.
30435         (vfloat16mf4x4_t): Ditto.
30436         (vfloat16mf4x5_t): Ditto.
30437         (vfloat16mf4x6_t): Ditto.
30438         (vfloat16mf4x7_t): Ditto.
30439         (vfloat16mf4x8_t): Ditto.
30440         (vfloat16mf2x2_t): Ditto.
30441         (vfloat16mf2x3_t): Ditto.
30442         (vfloat16mf2x4_t): Ditto.
30443         (vfloat16mf2x5_t): Ditto.
30444         (vfloat16mf2x6_t): Ditto.
30445         (vfloat16mf2x7_t): Ditto.
30446         (vfloat16mf2x8_t): Ditto.
30447         (vfloat16m1x2_t): Ditto.
30448         (vfloat16m1x3_t): Ditto.
30449         (vfloat16m1x4_t): Ditto.
30450         (vfloat16m1x5_t): Ditto.
30451         (vfloat16m1x6_t): Ditto.
30452         (vfloat16m1x7_t): Ditto.
30453         (vfloat16m1x8_t): Ditto.
30454         (vfloat16m2x2_t): Ditto.
30455         (vfloat16m2x3_t): Ditto.
30456         (vfloat16m2x4_t): Ditto.
30457         (vfloat16m4x2_t): Ditto.
30458         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
30459         * config/riscv/riscv.md: Ditto.
30460         * config/riscv/vector-iterators.md: Ditto.
30462 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30464         * gimple-fold.cc (arith_overflowed_p): Apply LEN_MASK_{LOAD,STORE}.
30465         (gimple_fold_partial_load_store_mem_ref): Ditto.
30466         (gimple_fold_partial_store): Ditto.
30467         (gimple_fold_call): Ditto.
30469 2023-06-25  liuhongt  <hongtao.liu@intel.com>
30471         PR target/110309
30472         * config/i386/sse.md (maskload<mode><avx512fmaskmodelower>):
30473         Refine pattern with UNSPEC_MASKLOAD.
30474         (maskload<mode><avx512fmaskmodelower>): Ditto.
30475         (*<avx512>_load<mode>_mask): Extend mode iterator to
30476         VI12HFBF_AVX512VL.
30477         (*<avx512>_load<mode>): Ditto.
30479 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30481         * tree-ssa-alias.cc (call_may_clobber_ref_p_1): Add LEN_MASK_STORE.
30483 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30485         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Apply
30486         LEN_MASK_{LOAD,STORE}
30488 2023-06-25  yulong  <shiyulong@iscas.ac.cn>
30490         * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
30492 2023-06-24  Roger Sayle  <roger@nextmovesoftware.com>
30494         * config/i386/i386.md (*<code>qi_ext<mode>_3): New define_insn.
30496 2023-06-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
30498         * config/riscv/autovec.md (*fma<mode>): set clobber to Pmode in expand stage.
30499         (*fma<VI:mode><P:mode>): Ditto.
30500         (*fnma<mode>): Ditto.
30501         (*fnma<VI:mode><P:mode>): Ditto.
30503 2023-06-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
30505         * config/riscv/autovec.md (fma<mode>4): New pattern.
30506         (*fma<mode>): Ditto.
30507         (fnma<mode>4): Ditto.
30508         (*fnma<mode>): Ditto.
30509         (fms<mode>4): Ditto.
30510         (*fms<mode>): Ditto.
30511         (fnms<mode>4): Ditto.
30512         (*fnms<mode>): Ditto.
30513         * config/riscv/riscv-protos.h (emit_vlmax_fp_ternary_insn):
30514         New function.
30515         * config/riscv/riscv-v.cc (emit_vlmax_fp_ternary_insn): Ditto.
30516         * config/riscv/vector.md: Fix attribute bug.
30518 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30520         * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn):
30521         Apply LEN_MASK_{LOAD,STORE}.
30523 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30525         * tree-ssa-loop-ivopts.cc (get_alias_ptr_type_for_ptr_address):
30526         Add LEN_MASK_{LOAD,STORE}.
30528 2023-06-24  David Malcolm  <dmalcolm@redhat.com>
30530         * diagnostic-format-sarif.cc: Add #define INCLUDE_VECTOR.
30531         * diagnostic.cc: Likewise.
30532         * text-art/box-drawing.cc: Likewise.
30533         * text-art/canvas.cc: Likewise.
30534         * text-art/ruler.cc: Likewise.
30535         * text-art/selftests.cc: Likewise.
30536         * text-art/selftests.h (text_art::canvas): New forward decl.
30537         * text-art/style.cc: Add #define INCLUDE_VECTOR.
30538         * text-art/styled-string.cc: Likewise.
30539         * text-art/table.cc: Likewise.
30540         * text-art/table.h: Remove #include <vector>.
30541         * text-art/theme.cc: Add #define INCLUDE_VECTOR.
30542         * text-art/types.h: Check that INCLUDE_VECTOR is defined.
30543         Remove #include of <vector> and <string>.
30544         * text-art/widget.cc: Add #define INCLUDE_VECTOR.
30545         * text-art/widget.h: Remove #include <vector>.
30547 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30549         * internal-fn.cc (expand_partial_store_optab_fn): Adapt for LEN_MASK_STORE.
30550         (internal_load_fn_p): Add LEN_MASK_LOAD.
30551         (internal_store_fn_p): Add LEN_MASK_STORE.
30552         (internal_fn_mask_index): Add LEN_MASK_{LOAD,STORE}.
30553         (internal_fn_stored_value_index): Add LEN_MASK_STORE.
30554         (internal_len_load_store_bias):  Add LEN_MASK_{LOAD,STORE}.
30555         * optabs-tree.cc (can_vec_mask_load_store_p): Adapt for LEN_MASK_{LOAD,STORE}.
30556         (get_len_load_store_mode): Ditto.
30557         * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
30558         (get_len_load_store_mode): Ditto.
30559         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
30560         (get_all_ones_mask): New function.
30561         (vectorizable_store): Apply LEN_MASK_{LOAD,STORE} into vectorizer.
30562         (vectorizable_load): Ditto.
30564 2023-06-23  Marek Polacek  <polacek@redhat.com>
30566         * doc/cpp.texi (__cplusplus): Document value for -std=c++26 and
30567         -std=gnu++26.  Document that for C++23, its value is 202302L.
30568         * doc/invoke.texi: Document -std=c++26 and -std=gnu++26.
30569         * dwarf2out.cc (highest_c_language): Handle GNU C++26.
30570         (gen_compile_unit_die): Likewise.
30572 2023-06-23  Jan Hubicka  <jh@suse.cz>
30574         * tree-ssa-phiprop.cc (propagate_with_phi): Compute post dominators on
30575         demand.
30576         (pass_phiprop::execute): Do not compute it here; return
30577         update_ssa_only_virtuals if something changed.
30578         (pass_data_phiprop): Remove TODO_update_ssa from todos.
30580 2023-06-23   Michael Meissner  <meissner@linux.ibm.com>
30581             Aaron Sawdey   <acsawdey@linux.ibm.com>
30583         PR target/105325
30584         * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): Fix problems that
30585         allowed prefixed lwa to be generated.
30586         * config/rs6000/fusion.md: Regenerate.
30587         * config/rs6000/predicates.md (ds_form_mem_operand): Delete.
30588         * config/rs6000/rs6000.md (prefixed attribute): Add support for load
30589         plus compare immediate fused insns.
30590         (maybe_prefixed): Likewise.
30592 2023-06-23  Roger Sayle  <roger@nextmovesoftware.com>
30594         * simplify-rtx.cc (simplify_subreg):  Optimize lowpart SUBREGs
30595         of ASHIFT to const0_rtx with sufficiently large shift count.
30596         Optimize highpart SUBREGs of ASHIFT as the shift operand when
30597         the shift count is the correct offset.  Optimize SUBREGs of
30598         multi-word logic operations if the SUBREGs of both operands
30599         can be simplified.
30601 2023-06-23  Richard Biener  <rguenther@suse.de>
30603         * varasm.cc (initializer_constant_valid_p_1): Only
30604         allow conversions between scalar floating point types.
30606 2023-06-23  Richard Biener  <rguenther@suse.de>
30608         * tree-vect-stmts.cc (vectorizable_assignment):
30609         Properly handle non-integral operands when analyzing
30610         conversions.
30612 2023-06-23  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
30614         PR tree-optimization/110280
30615         * match.pd (vec_perm_expr(v, v, mask) -> v): Explicitly build vector
30616         using build_vector_from_val with the element of input operand, and
30617         mask's type if operand and mask's types don't match.
30619 2023-06-23  Richard Biener  <rguenther@suse.de>
30621         * fold-const.cc (tree_simple_nonnegative_warnv_p): Guard
30622         the truth_value_p case with !VECTOR_TYPE_P.
30624 2023-06-23  Richard Biener  <rguenther@suse.de>
30626         * tree-vect-patterns.cc (vect_look_through_possible_promotion):
30627         Exit early when the type isn't scalar integral.
30629 2023-06-23  Richard Biener  <rguenther@suse.de>
30631         * match.pd ((outertype)((innertype0)a+(innertype1)b)
30632         -> ((newtype)a+(newtype)b)): Use element_precision
30633         where appropriate.
30635 2023-06-23  Richard Biener  <rguenther@suse.de>
30637         * fold-const.cc (fold_binary_loc): Use element_precision
30638         when trying (double)float1 CMP (double)float2 to
30639         float1 CMP float2 simplification.
30640         * match.pd: Likewise.
30642 2023-06-23  Richard Biener  <rguenther@suse.de>
30644         * tree-vect-stmts.cc (vectorizable_load): Avoid useless
30645         copies of VMAT_INVARIANT vectorized stmts, fix SLP support.
30647 2023-06-23  Richard Biener  <rguenther@suse.de>
30649         * tree-vect-stmts.cc (vector_vector_composition_type):
30650         Handle composition of a vector from a number of elements that
30651         happens to match its number of lanes.
30653 2023-06-22  Marek Polacek  <polacek@redhat.com>
30655         * configure.ac (--enable-host-bind-now): New check.  Add
30656         -Wl,-z,now to LD_PICFLAG if --enable-host-bind-now.
30657         * configure: Regenerate.
30658         * doc/install.texi: Document --enable-host-bind-now.
30660 2023-06-22  Di Zhao OS  <dizhao@os.amperecomputing.com>
30662         * config/aarch64/aarch64.cc: Change fma_reassoc_width for ampere1.
30664 2023-06-22  Richard Biener  <rguenther@suse.de>
30666         PR tree-optimization/110332
30667         * tree-ssa-phiprop.cc (propagate_with_phi): Always
30668         check aliasing with edge inserted loads.
30670 2023-06-22  Roger Sayle  <roger@nextmovesoftware.com>
30671             Uros Bizjak  <ubizjak@gmail.com>
30673         * config/i386/i386-expand.cc (ix86_expand_sse_ptest): Recognize
30674         expansion of ptestc with equal operands as producing const1_rtx.
30675         * config/i386/i386.cc (ix86_rtx_costs): Provide accurate cost
30676         estimates of UNSPEC_PTEST, where the ptest performs the PAND
30677         or PAND of its operands.
30678         * config/i386/sse.md (define_split): Transform CCCmode UNSPEC_PTEST
30679         of reg_equal_p operands into an x86_stc instruction.
30680         (define_split): Split pandn/ptestz/set{n?}e into ptestc/set{n?}c.
30681         (define_split): Similar to above for strict_low_part destinations.
30682         (define_split): Split pandn/ptestz/j{n?}e into ptestc/j{n?}c.
30684 2023-06-22  David Malcolm  <dmalcolm@redhat.com>
30686         PR analyzer/106626
30687         * Makefile.in (ANALYZER_OBJS): Add analyzer/access-diagram.o.
30688         * doc/invoke.texi (Wanalyzer-out-of-bounds): Add description of
30689         text art.
30690         (fanalyzer-debug-text-art): New.
30692 2023-06-22  David Malcolm  <dmalcolm@redhat.com>
30694         * Makefile.in (OBJS-libcommon): Add text-art/box-drawing.o,
30695         text-art/canvas.o, text-art/ruler.o, text-art/selftests.o,
30696         text-art/style.o, text-art/styled-string.o, text-art/table.o,
30697         text-art/theme.o, and text-art/widget.o.
30698         * color-macros.h (COLOR_FG_BRIGHT_BLACK): New.
30699         (COLOR_FG_BRIGHT_RED): New.
30700         (COLOR_FG_BRIGHT_GREEN): New.
30701         (COLOR_FG_BRIGHT_YELLOW): New.
30702         (COLOR_FG_BRIGHT_BLUE): New.
30703         (COLOR_FG_BRIGHT_MAGENTA): New.
30704         (COLOR_FG_BRIGHT_CYAN): New.
30705         (COLOR_FG_BRIGHT_WHITE): New.
30706         (COLOR_BG_BRIGHT_BLACK): New.
30707         (COLOR_BG_BRIGHT_RED): New.
30708         (COLOR_BG_BRIGHT_GREEN): New.
30709         (COLOR_BG_BRIGHT_YELLOW): New.
30710         (COLOR_BG_BRIGHT_BLUE): New.
30711         (COLOR_BG_BRIGHT_MAGENTA): New.
30712         (COLOR_BG_BRIGHT_CYAN): New.
30713         (COLOR_BG_BRIGHT_WHITE): New.
30714         * common.opt (fdiagnostics-text-art-charset=): New option.
30715         (diagnostic-text-art.h): New SourceInclude.
30716         (diagnostic_text_art_charset) New Enum and EnumValues.
30717         * configure: Regenerate.
30718         * configure.ac (gccdepdir): Add text-art to loop.
30719         * diagnostic-diagram.h: New file.
30720         * diagnostic-format-json.cc (json_emit_diagram): New.
30721         (diagnostic_output_format_init_json): Wire it up to
30722         context->m_diagrams.m_emission_cb.
30723         * diagnostic-format-sarif.cc: Include "diagnostic-diagram.h" and
30724         "text-art/canvas.h".
30725         (sarif_result::on_nested_diagnostic): Move code to...
30726         (sarif_result::add_related_location): ...this new function.
30727         (sarif_result::on_diagram): New.
30728         (sarif_builder::emit_diagram): New.
30729         (sarif_builder::make_message_object_for_diagram): New.
30730         (sarif_emit_diagram): New.
30731         (diagnostic_output_format_init_sarif): Set
30732         context->m_diagrams.m_emission_cb to sarif_emit_diagram.
30733         * diagnostic-text-art.h: New file.
30734         * diagnostic.cc: Include "diagnostic-text-art.h",
30735         "diagnostic-diagram.h", and "text-art/theme.h".
30736         (diagnostic_initialize): Initialize context->m_diagrams and
30737         call diagnostics_text_art_charset_init.
30738         (diagnostic_finish): Clean up context->m_diagrams.m_theme.
30739         (diagnostic_emit_diagram): New.
30740         (diagnostics_text_art_charset_init): New.
30741         * diagnostic.h (text_art::theme): New forward decl.
30742         (class diagnostic_diagram): Likewise.
30743         (diagnostic_context::m_diagrams): New field.
30744         (diagnostic_emit_diagram): New decl.
30745         * doc/invoke.texi (Diagnostic Message Formatting Options): Add
30746         -fdiagnostics-text-art-charset=.
30747         (-fdiagnostics-plain-output): Add
30748         -fdiagnostics-text-art-charset=none.
30749         * gcc.cc: Include "diagnostic-text-art.h".
30750         (driver_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
30751         * opts-common.cc (decode_cmdline_options_to_array): Add
30752         "-fdiagnostics-text-art-charset=none" to expanded_args for
30753         -fdiagnostics-plain-output.
30754         * opts.cc: Include "diagnostic-text-art.h".
30755         (common_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
30756         * pretty-print.cc (pp_unicode_character): New.
30757         * pretty-print.h (pp_unicode_character): New decl.
30758         * selftest-run-tests.cc: Include "text-art/selftests.h".
30759         (selftest::run_tests): Call text_art_tests.
30760         * text-art/box-drawing-chars.inc: New file, generated by
30761         contrib/unicode/gen-box-drawing-chars.py.
30762         * text-art/box-drawing.cc: New file.
30763         * text-art/box-drawing.h: New file.
30764         * text-art/canvas.cc: New file.
30765         * text-art/canvas.h: New file.
30766         * text-art/ruler.cc: New file.
30767         * text-art/ruler.h: New file.
30768         * text-art/selftests.cc: New file.
30769         * text-art/selftests.h: New file.
30770         * text-art/style.cc: New file.
30771         * text-art/styled-string.cc: New file.
30772         * text-art/table.cc: New file.
30773         * text-art/table.h: New file.
30774         * text-art/theme.cc: New file.
30775         * text-art/theme.h: New file.
30776         * text-art/types.h: New file.
30777         * text-art/widget.cc: New file.
30778         * text-art/widget.h: New file.
30780 2023-06-21  Uros Bizjak  <ubizjak@gmail.com>
30782         * function.h (emit_initial_value_sets):
30783         Change return type from int to void.
30784         (aggregate_value_p): Change return type from int to bool.
30785         (prologue_contains): Ditto.
30786         (epilogue_contains): Ditto.
30787         (prologue_epilogue_contains): Ditto.
30788         * function.cc (temp_slot): Make "in_use" variable bool.
30789         (make_slot_available): Update for changed "in_use" variable.
30790         (assign_stack_temp_for_type): Ditto.
30791         (emit_initial_value_sets): Change return type from int to void
30792         and update function body accordingly.
30793         (instantiate_virtual_regs): Ditto.
30794         (rest_of_handle_thread_prologue_and_epilogue): Ditto.
30795         (safe_insn_predicate): Change return type from int to bool.
30796         (aggregate_value_p): Change return type from int to bool
30797         and update function body accordingly.
30798         (prologue_contains): Change return type from int to bool.
30799         (prologue_epilogue_contains): Ditto.
30801 2023-06-21  Alexander Monakov  <amonakov@ispras.ru>
30803         * common.opt (fp_contract_mode) [on]: Remove fallback.
30804         * config/sh/sh.md (*fmasf4): Correct flag_fp_contract_mode test.
30805         * doc/invoke.texi (-ffp-contract): Update.
30806         * trans-mem.cc (diagnose_tm_1): Skip internal function calls.
30808 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
30810         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
30811         Add alternatives to prefer to avoid same input and output Z register.
30812         (mask_gather_load<mode><v_int_container>): Likewise.
30813         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
30814         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
30815         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
30816         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
30817         Likewise.
30818         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
30819         Likewise.
30820         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
30821         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
30822         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
30823         <SVE_2BHSI:mode>_sxtw): Likewise.
30824         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
30825         <SVE_2BHSI:mode>_uxtw): Likewise.
30826         (@aarch64_ldff1_gather<mode>): Likewise.
30827         (@aarch64_ldff1_gather<mode>): Likewise.
30828         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
30829         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
30830         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
30831         <VNx4_NARROW:mode>): Likewise.
30832         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
30833         <VNx2_NARROW:mode>): Likewise.
30834         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
30835         <VNx2_NARROW:mode>_sxtw): Likewise.
30836         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
30837         <VNx2_NARROW:mode>_uxtw): Likewise.
30838         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
30839         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
30840         <SVE_PARTIAL_I:mode>): Likewise.
30842 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
30844         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
30845         Convert to compact alternatives syntax.
30846         (mask_gather_load<mode><v_int_container>): Likewise.
30847         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
30848         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
30849         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
30850         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
30851         Likewise.
30852         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
30853         Likewise.
30854         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
30855         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
30856         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
30857         <SVE_2BHSI:mode>_sxtw): Likewise.
30858         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
30859         <SVE_2BHSI:mode>_uxtw): Likewise.
30860         (@aarch64_ldff1_gather<mode>): Likewise.
30861         (@aarch64_ldff1_gather<mode>): Likewise.
30862         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
30863         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
30864         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
30865         <VNx4_NARROW:mode>): Likewise.
30866         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
30867         <VNx2_NARROW:mode>): Likewise.
30868         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
30869         <VNx2_NARROW:mode>_sxtw): Likewise.
30870         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
30871         <VNx2_NARROW:mode>_uxtw): Likewise.
30872         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
30873         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
30874         <SVE_PARTIAL_I:mode>): Likewise.
30876 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
30878         Revert:
30879         2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
30881         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
30882         Convert to compact alternatives syntax.
30883         (mask_gather_load<mode><v_int_container>): Likewise.
30884         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
30885         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
30886         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
30887         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
30888         Likewise.
30889         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
30890         Likewise.
30891         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
30892         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
30893         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
30894         <SVE_2BHSI:mode>_sxtw): Likewise.
30895         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
30896         <SVE_2BHSI:mode>_uxtw): Likewise.
30897         (@aarch64_ldff1_gather<mode>): Likewise.
30898         (@aarch64_ldff1_gather<mode>): Likewise.
30899         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
30900         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
30901         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
30902         <VNx4_NARROW:mode>): Likewise.
30903         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
30904         <VNx2_NARROW:mode>): Likewise.
30905         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
30906         <VNx2_NARROW:mode>_sxtw): Likewise.
30907         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
30908         <VNx2_NARROW:mode>_uxtw): Likewise.
30909         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
30910         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
30911         <SVE_PARTIAL_I:mode>): Likewise.
30913 2023-06-21  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
30915         * optabs-query.cc (can_vec_mask_load_store_p): Move to optabs-tree.cc.
30916         (get_len_load_store_mode): Ditto.
30917         * optabs-query.h (can_vec_mask_load_store_p): Move to optabs-tree.h.
30918         (get_len_load_store_mode): Ditto.
30919         * optabs-tree.cc (can_vec_mask_load_store_p): New function.
30920         (get_len_load_store_mode): Ditto.
30921         * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
30922         (get_len_load_store_mode): Ditto.
30923         * tree-if-conv.cc: include optabs-tree instead of optabs-query
30925 2023-06-21  Richard Biener  <rguenther@suse.de>
30927         * tree-ssa-loop-ivopts.cc (add_iv_candidate_for_use): Use
30928         split_constant_offset for the POINTER_PLUS_EXPR case.
30930 2023-06-21  Richard Biener  <rguenther@suse.de>
30932         * tree-ssa-loop-ivopts.cc (record_group_use): Use
30933         split_constant_offset.
30935 2023-06-21  Richard Biener  <rguenther@suse.de>
30937         * tree-loop-distribution.cc (classify_builtin_st): Use
30938         split_constant_offset.
30939         * tree-ssa-loop-ivopts.h (strip_offset): Remove.
30940         * tree-ssa-loop-ivopts.cc (strip_offset): Make static.
30942 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
30944         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
30945         Convert to compact alternatives syntax.
30946         (mask_gather_load<mode><v_int_container>): Likewise.
30947         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
30948         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
30949         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
30950         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
30951         Likewise.
30952         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
30953         Likewise.
30954         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
30955         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
30956         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
30957         <SVE_2BHSI:mode>_sxtw): Likewise.
30958         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
30959         <SVE_2BHSI:mode>_uxtw): Likewise.
30960         (@aarch64_ldff1_gather<mode>): Likewise.
30961         (@aarch64_ldff1_gather<mode>): Likewise.
30962         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
30963         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
30964         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
30965         <VNx4_NARROW:mode>): Likewise.
30966         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
30967         <VNx2_NARROW:mode>): Likewise.
30968         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
30969         <VNx2_NARROW:mode>_sxtw): Likewise.
30970         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
30971         <VNx2_NARROW:mode>_uxtw): Likewise.
30972         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
30973         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
30974         <SVE_PARTIAL_I:mode>): Likewise.
30976 2023-06-21  Tamar Christina  <tamar.christina@arm.com>
30978         PR other/110329
30979         * doc/md.texi: Replace backslashchar.
30981 2023-06-21  Richard Biener  <rguenther@suse.de>
30983         * config/i386/i386.cc (ix86_vector_costs::finish_cost):
30984         Overload.  For masked main loops make sure the vectorization
30985         factor isn't more than double the number of iterations.
30987 2023-06-21  Jan Beulich  <jbeulich@suse.com>
30989         * config/i386/i386-expand.cc (ix86_expand_copysign): Request
30990         value duplication by ix86_build_signbit_mask() when AVX512F and
30991         not HFmode.
30992         * config/i386/sse.md (*<avx512>_vternlog<mode>_all): Convert to
30993         2-alternative form. Adjust "mode" attribute. Add "enabled"
30994         attribute.
30995         (*<avx512>_vpternlog<mode>_1): Also permit when TARGET_AVX512F
30996         && !TARGET_PREFER_AVX256.
30997         (*<avx512>_vpternlog<mode>_2): Likewise.
30998         (*<avx512>_vpternlog<mode>_3): Likewise.
31000 2023-06-21  liuhongt  <hongtao.liu@intel.com>
31002         PR target/110018
31003         * tree-vect-stmts.cc (vectorizable_conversion): Use
31004         intermiediate integer type for float_expr/fix_trunc_expr when
31005         direct optab is not existed.
31007 2023-06-20  Tamar Christina  <tamar.christina@arm.com>
31009         PR bootstrap/110324
31010         * gensupport.cc (convert_syntax): Explicitly check for RTX code.
31012 2023-06-20  Richard Sandiford  <richard.sandiford@arm.com>
31014         * config/aarch64/aarch64.md (stack_tie): Hard-code the first
31015         register operand to the stack pointer.  Require the second register
31016         operand to have the number specified in a separate const_int operand.
31017         * config/aarch64/aarch64.cc (aarch64_emit_stack_tie): New function.
31018         (aarch64_allocate_and_probe_stack_space): Use it.
31019         (aarch64_expand_prologue, aarch64_expand_epilogue): Likewise.
31020         (aarch64_expand_epilogue): Likewise.
31022 2023-06-20  Jakub Jelinek  <jakub@redhat.com>
31024         PR middle-end/79173
31025         * tree-ssa-math-opts.cc (match_uaddc_usubc): Remember lhs of
31026         IMAGPART_EXPR of arg2/arg3 and use that as arg3 if it has the right
31027         type.
31029 2023-06-20  Uros Bizjak  <ubizjak@gmail.com>
31031         * calls.h (setjmp_call_p): Change return type from int to bool.
31032         * calls.cc (struct arg_data): Change "pass_on_stack" to bool.
31033         (store_one_arg): Change return type from int to bool
31034         and adjust function body accordingly.  Change "sibcall_failure"
31035         variable to bool.
31036         (finalize_must_preallocate): Ditto.  Change *must_preallocate pointer
31037         argument  to bool.  Change "partial_seen" variable to bool.
31038         (load_register_parameters):  Change *sibcall_failure
31039         pointer argument to bool.
31040         (check_sibcall_argument_overlap_1): Change return type from int to bool
31041         and adjust function body accordingly.
31042         (check_sibcall_argument_overlap):  Ditto.  Change
31043         "mark_stored_args_map" argument to bool.
31044         (emit_call_1): Change "already_popped" variable to bool.
31045         (setjmp_call_p): Change return type from int to bool
31046         and adjust function body accordingly.
31047         (initialize_argument_information): Change *must_preallocate
31048         pointer argument to bool.
31049         (expand_call): Change "pcc_struct_value", "must_preallocate"
31050         and "sibcall_failure" variables to bool.
31051         (emit_library_call_value_1): Change "pcc_struct_value"
31052         variable to bool.
31054 2023-06-20  Martin Jambor  <mjambor@suse.cz>
31056         PR ipa/110276
31057         * ipa-sra.cc (struct caller_issues): New field there_is_one.
31058         (check_for_caller_issues): Set it.
31059         (check_all_callers_for_issues): Check it.
31061 2023-06-20  Martin Jambor  <mjambor@suse.cz>
31063         * ipa-prop.h (ipa_uid_to_idx_map_elt): New type.
31064         (struct ipcp_transformation): Rearrange members according to
31065         C++ class coding convention, add m_uid_to_idx,
31066         get_param_index and maybe_create_parm_idx_map.
31067         * ipa-cp.cc (ipcp_transformation::get_param_index): New function.
31068         (compare_uids): Likewise.
31069         (ipcp_transformation::maype_create_parm_idx_map): Likewise.
31070         * ipa-prop.cc (ipcp_get_parm_bits): Use get_param_index.
31071         (ipcp_update_bits): Accept TS as a parameter, assume it is not NULL.
31072         (ipcp_update_vr): Likewise.
31073         (ipcp_transform_function): Call, maybe_create_parm_idx_map of TS, bail
31074         out quickly if empty, pass it to ipcp_update_bits and ipcp_update_vr.
31076 2023-06-20  Carl Love  <cel@us.ibm.com>
31078         * config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin):
31079         Rename CODE_FOR_xsxsigqp_tf to CODE_FOR_xsxsigqp_tf_ti.
31080         Rename CODE_FOR_xsxsigqp_kf to CODE_FOR_xsxsigqp_kf_ti.
31081         Rename CCDE_FOR_xsxexpqp_tf to CODE_FOR_xsxexpqp_tf_di.
31082         Rename CODE_FOR_xsxexpqp_kf to CODE_FOR_xsxexpqp_kf_di.
31083         (CODE_FOR_xsxexpqp_kf_v2di, CODE_FOR_xsxsigqp_kf_v1ti,
31084         CODE_FOR_xsiexpqp_kf_v2di): Add case statements.
31085         * config/rs6000/rs6000-builtins.def
31086         (__builtin_vsx_scalar_extract_exp_to_vec,
31087         __builtin_vsx_scalar_extract_sig_to_vec,
31088         __builtin_vsx_scalar_insert_exp_vqp): Add new builtin definitions.
31089         Rename xsxexpqp_kf, xsxsigqp_kf, xsiexpqp_kf to xsexpqp_kf_di,
31090         xsxsigqp_kf_ti, xsiexpqp_kf_di respectively.
31091         * config/rs6000/rs6000-c.cc (altivec_resolve_overloaded_builtin):
31092         Update case RS6000_OVLD_VEC_VSIE to handle MODE_VECTOR_INT for new
31093         overloaded instance. Update comments.
31094         * config/rs6000/rs6000-overload.def
31095         (__builtin_vec_scalar_insert_exp): Add new overload definition with
31096         vector arguments.
31097         (scalar_extract_exp_to_vec, scalar_extract_sig_to_vec): New
31098         overloaded definitions.
31099         * config/rs6000/vsx.md (V2DI_DI): New mode iterator.
31100         (DI_to_TI): New mode attribute.
31101         Rename xsxexpqp_<mode> to sxexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
31102         Rename xsxsigqp_<mode> to xsxsigqp_<IEEE128:mode>_<VEC_TI:mode>.
31103         Rename xsiexpqp_<mode> to xsiexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
31104         * doc/extend.texi (scalar_extract_exp_to_vec,
31105         scalar_extract_sig_to_vec): Add documentation for new builtins.
31106         (scalar_insert_exp): Add new overloaded builtin definition.
31108 2023-06-20  Li Xu  <xuli1@eswincomputing.com>
31110         * config/riscv/riscv.cc (riscv_regmode_natural_size): set the natural
31111         size of vector mask mode to one rvv register.
31113 2023-06-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
31115         * config/riscv/riscv-v.cc (expand_const_vector): Optimize codegen.
31117 2023-06-20  Lehua Ding  <lehua.ding@rivai.ai>
31119         * config/riscv/riscv.cc (riscv_arg_has_vector): Add default
31120         switch handler.
31122 2023-06-20  Richard Biener  <rguenther@suse.de>
31124         * tree-ssa-dse.cc (dse_classify_store): When we found
31125         no defs and the basic-block with the original definition
31126         ends in __builtin_unreachable[_trap] the store is dead.
31128 2023-06-20  Richard Biener  <rguenther@suse.de>
31130         * tree-ssa-phiprop.cc (phiprop_insert_phi): For simple loads
31131         keep the virtual SSA form up-to-date.
31133 2023-06-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
31135         * config/aarch64/aarch64-simd.md (*aarch64_addp_same_reg<mode>):
31136         New define_insn_and_split.
31138 2023-06-20  Tamar Christina  <tamar.christina@arm.com>
31140         * config/aarch64/aarch64.md (*mov<mode>_aarch64): Drop test comment.
31142 2023-06-20  Jan Beulich  <jbeulich@suse.com>
31144         * config/i386/sse.md (vec_dupv2di): Correct %vmovddup input
31145         constraint. Add new AVX512F alternative.
31147 2023-06-20  Richard Biener  <rguenther@suse.de>
31149         PR debug/110295
31150         * dwarf2out.cc (process_scope_var): Continue processing
31151         the decl after setting a parent in case the existing DIE
31152         was in limbo.
31154 2023-06-20  Lehua Ding  <lehua.ding@rivai.ai>
31156         * config/riscv/riscv.cc (riscv_scalable_vector_type_p): Delete.
31157         (riscv_arg_has_vector): Simplify.
31158         (riscv_pass_in_vector_p): Adjust warning message.
31160 2023-06-19  Jin Ma  <jinma@linux.alibaba.com>
31162         * config/riscv/riscv.cc (riscv_compute_frame_info): Allocate frame for FCSR.
31163         (riscv_for_each_saved_reg): Save and restore FCSR in interrupt functions.
31164         * config/riscv/riscv.md (riscv_frcsr): New patterns.
31165         (riscv_fscsr): Likewise.
31167 2023-06-19  Toru Kisuki  <tkisuki@tachyum.com>
31169         PR rtl-optimization/110305
31170         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
31171         Handle HONOR_SNANS for x + 0.0.
31173 2023-06-19  Jan Hubicka  <jh@suse.cz>
31175         PR tree-optimization/109811
31176         PR tree-optimization/109849
31177         * passes.def: Add phiprop to early optimization passes.
31178         * tree-ssa-phiprop.cc: Allow clonning.
31180 2023-06-19  Tamar Christina  <tamar.christina@arm.com>
31182         * config/aarch64/aarch64.md (arches): Add nosimd.
31183         (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Rewrite to
31184         compact syntax.
31186 2023-06-19  Tamar Christina  <tamar.christina@arm.com>
31187             Omar Tahir  <Omar.Tahir2@arm.com>
31189         * gensupport.cc (class conlist, add_constraints, add_attributes,
31190         skip_spaces, expect_char, preprocess_compact_syntax,
31191         parse_section_layout, parse_section, convert_syntax): New.
31192         (process_rtx): Check for conversion.
31193         * genoutput.cc (process_template): Check for unresolved iterators.
31194         (class data): Add compact_syntax_p.
31195         (gen_insn): Use it.
31196         * gensupport.h (compact_syntax): New.
31197         (hash-set.h): Include.
31198         * doc/md.texi: Document it.
31200 2023-06-19  Uros Bizjak  <ubizjak@gmail.com>
31202         * recog.h (check_asm_operands): Change return type from int to bool.
31203         (insn_invalid_p): Ditto.
31204         (verify_changes): Ditto.
31205         (apply_change_group): Ditto.
31206         (constrain_operands): Ditto.
31207         (constrain_operands_cached): Ditto.
31208         (validate_replace_rtx_subexp): Ditto.
31209         (validate_replace_rtx): Ditto.
31210         (validate_replace_rtx_part): Ditto.
31211         (validate_replace_rtx_part_nosimplify): Ditto.
31212         (added_clobbers_hard_reg_p): Ditto.
31213         (peep2_regno_dead_p): Ditto.
31214         (peep2_reg_dead_p): Ditto.
31215         (store_data_bypass_p): Ditto.
31216         (if_test_bypass_p): Ditto.
31217         * rtl.h (split_all_insns_noflow): Change
31218         return type from unsigned int to void.
31219         * genemit.cc (output_added_clobbers_hard_reg_p): Change return type
31220         of generated added_clobbers_hard_reg_p from int to bool and adjust
31221         function body accordingly.  Change "used" variable type from
31222         int to bool.
31223         * recog.cc (check_asm_operands): Change return type
31224         from int to bool and adjust function body accordingly.
31225         (insn_invalid_p): Ditto.  Change "is_asm" variable to bool.
31226         (verify_changes): Change return type from int to bool.
31227         (apply_change_group): Change return type from int to bool
31228         and adjust function body accordingly.
31229         (validate_replace_rtx_subexp): Change return type from int to bool.
31230         (validate_replace_rtx): Ditto.
31231         (validate_replace_rtx_part): Ditto.
31232         (validate_replace_rtx_part_nosimplify): Ditto.
31233         (constrain_operands_cached): Ditto.
31234         (constrain_operands): Ditto.  Change "lose" and "win"
31235         variables type from int to bool.
31236         (split_all_insns_noflow): Change return type from unsigned int
31237         to void and adjust function body accordingly.
31238         (peep2_regno_dead_p): Change return type from int to bool.
31239         (peep2_reg_dead_p): Ditto.
31240         (peep2_find_free_register): Change "success"
31241         variable type from int to bool
31242         (store_data_bypass_p_1): Change return type from int to bool.
31243         (store_data_bypass_p): Ditto.
31245 2023-06-19  Li Xu  <xuli1@eswincomputing.com>
31247         * config/riscv/vector-iterators.md: zvfh/zvfhmin depends on the
31248         Zve32f extension.
31250 2023-06-19  Pan Li  <pan2.li@intel.com>
31252         PR target/110299
31253         * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
31254         modes.
31255         * config/riscv/vector-iterators.md: Remove VWLMUL1, VWLMUL1_ZVE64,
31256         VWLMUL1_ZVE32, VI_ZVE64, VI_ZVE32, VWI, VWI_ZVE64, VWI_ZVE32,
31257         VF_ZVE63 and VF_ZVE32.
31258         * config/riscv/vector.md
31259         (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Removed.
31260         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
31261         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>): Ditto.
31262         (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
31263         (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
31264         (@pred_widen_reduc_plus<v_su><VQI:mode><VHI_LMUL1:mode>): New pattern.
31265         (@pred_widen_reduc_plus<v_su><VHI:mode><VSI_LMUL1:mode>): Ditto.
31266         (@pred_widen_reduc_plus<v_su><VSI:mode><VDI_LMUL1:mode>): Ditto.
31267         (@pred_widen_reduc_plus<order><VHF:mode><VSF_LMUL1:mode>): Ditto.
31268         (@pred_widen_reduc_plus<order><VSF:mode><VDF_LMUL1:mode>): Ditto.
31270 2023-06-19  Pan Li  <pan2.li@intel.com>
31272         PR target/110277
31273         * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
31274         ret_mode.
31275         * config/riscv/vector-iterators.md: Add VHF, VSF, VDF,
31276         VHF_LMUL1, VSF_LMUL1, VDF_LMUL1, and remove unused attr.
31277         * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): Removed.
31278         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
31279         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
31280         (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
31281         (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
31282         (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
31283         (@pred_reduc_<reduc><VHF:mode><VHF_LMUL1:mode>): New pattern.
31284         (@pred_reduc_<reduc><VSF:mode><VSF_LMUL1:mode>): Ditto.
31285         (@pred_reduc_<reduc><VDF:mode><VDF_LMUL1:mode>): Ditto.
31286         (@pred_reduc_plus<order><VHF:mode><VHF_LMUL1:mode>): Ditto.
31287         (@pred_reduc_plus<order><VSF:mode><VSF_LMUL1:mode>): Ditto.
31288         (@pred_reduc_plus<order><VDF:mode><VDF_LMUL1:mode>): Ditto.
31290 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
31292         * config/gcn/gcn.cc (gcn_expand_divmod_libfunc): New function.
31293         (gcn_init_libfuncs): Add div and mod functions for all modes.
31294         Add placeholders for divmod functions.
31295         (TARGET_EXPAND_DIVMOD_LIBFUNC): Define.
31297 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
31299         * tree-vect-generic.cc: Include optabs-libfuncs.h.
31300         (get_compute_type): Check optab_libfunc.
31301         * tree-vect-stmts.cc: Include optabs-libfuncs.h.
31302         (vectorizable_operation): Check optab_libfunc.
31304 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
31306         * config/gcn/gcn-protos.h (vgpr_4reg_mode_p): New function.
31307         * config/gcn/gcn-valu.md (V_4REG, V_4REG_ALT): New iterators.
31308         (V_MOV, V_MOV_ALT): Likewise.
31309         (scalar_mode, SCALAR_MODE): Add TImode.
31310         (vnsi, VnSI, vndi, VnDI): Likewise.
31311         (vec_merge, vec_merge_with_clobber, vec_merge_with_vcc): Use V_MOV.
31312         (mov<mode>, mov<mode>_unspec): Use V_MOV.
31313         (*mov<mode>_4reg): New insn.
31314         (mov<mode>_exec): New 4reg variant.
31315         (mov<mode>_sgprbase): Likewise.
31316         (reload_in<mode>, reload_out<mode>): Use V_MOV.
31317         (vec_set<mode>): Likewise.
31318         (vec_duplicate<mode><exec>): New 4reg variant.
31319         (vec_extract<mode><scalar_mode>): Likewise.
31320         (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
31321         (vec_extract<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
31322         (vec_extract<V_4REG:mode><V_4REG_ALT:mode>_nop): New 4reg variant.
31323         (fold_extract_last_<mode>): Use V_MOV.
31324         (vec_init<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
31325         (vec_init<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
31326         (gather_load<mode><vnsi>, gather<mode>_expr<exec>,
31327         gather<mode>_insn_1offset<exec>, gather<mode>_insn_1offset_ds<exec>,
31328         gather<mode>_insn_2offsets<exec>): Use V_MOV.
31329         (scatter_store<mode><vnsi>, scatter<mode>_expr<exec_scatter>,
31330         scatter<mode>_insn_1offset<exec_scatter>,
31331         scatter<mode>_insn_1offset_ds<exec_scatter>,
31332         scatter<mode>_insn_2offsets<exec_scatter>): Likewise.
31333         (maskload<mode>di, maskstore<mode>di, mask_gather_load<mode><vnsi>,
31334         mask_scatter_store<mode><vnsi>): Likewise.
31335         * config/gcn/gcn.cc (gcn_class_max_nregs): Use vgpr_4reg_mode_p.
31336         (gcn_hard_regno_mode_ok): Likewise.
31337         (GEN_VNM): Add TImode support.
31338         (USE_TI): New macro. Separate TImode operations from non-TImode ones.
31339         (gcn_vector_mode_supported_p): Add V64TImode, V32TImode, V16TImode,
31340         V8TImode, and V2TImode.
31341         (print_operand):  Add 'J' and 'K' print codes.
31343 2023-06-19  Richard Biener  <rguenther@suse.de>
31345         PR tree-optimization/110298
31346         * tree-ssa-loop-ivcanon.cc (tree_unroll_loops_completely):
31347         Clear number of iterations info before cleaning up the CFG.
31349 2023-06-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
31351         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
31352         Simplify vec_concat of lowpart subreg and high part vec_select.
31354 2023-06-19  Tobias Burnus  <tobias@codesourcery.com>
31356         * doc/invoke.texi (-foffload-options): Remove '-O3' from the examples.
31358 2023-06-19  Richard Sandiford  <richard.sandiford@arm.com>
31360         * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
31361         Handle null niters_skip.
31363 2023-06-19  Richard Biener  <rguenther@suse.de>
31365         * config/aarch64/aarch64.cc
31366         (aarch64_vector_costs::analyze_loop_vinfo): Fix reference
31367         to LOOP_VINFO_MASKS.
31369 2023-06-19  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
31371         PR target/105523
31372         * common/config/avr/avr-common.cc: Remove setting
31373         of OPT_fdelete_null_pointer_checks.
31374         * config/avr/avr.cc (avr_option_override): Clear
31375         flag_delete_null_pointer_checks if zero_address_valid.
31376         (avr_addr_space_zero_address_valid): New function.
31377         (TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): Provide target
31378         hook.
31380 2023-06-19  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
31381             Robin Dapp  <rdapp.gcc@gmail.com>
31383         * doc/md.texi: Add len_mask{load,store}.
31384         * genopinit.cc (main): Ditto.
31385         (CMP_NAME): Ditto.
31386         * internal-fn.cc (len_maskload_direct): Ditto.
31387         (len_maskstore_direct): Ditto.
31388         (expand_call_mem_ref): Ditto.
31389         (expand_partial_load_optab_fn): Ditto.
31390         (expand_len_maskload_optab_fn): Ditto.
31391         (expand_partial_store_optab_fn): Ditto.
31392         (expand_len_maskstore_optab_fn): Ditto.
31393         (direct_len_maskload_optab_supported_p): Ditto.
31394         (direct_len_maskstore_optab_supported_p): Ditto.
31395         * internal-fn.def (LEN_MASK_LOAD): Ditto.
31396         (LEN_MASK_STORE): Ditto.
31397         * optabs.def (OPTAB_CD): Ditto.
31399 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
31401         * config/riscv/autovec.md (<optab><mode>2): Add unop expanders.
31403 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
31405         * config/riscv/autovec.md (<optab><mode>3): Implement binop
31406         expander.
31407         * config/riscv/riscv-protos.h (emit_vlmax_fp_insn): Declare.
31408         (enum vxrm_field_enum): Rename this...
31409         (enum fixed_point_rounding_mode): ...to this.
31410         (enum frm_field_enum): Rename this...
31411         (enum floating_point_rounding_mode): ...to this.
31412         * config/riscv/riscv-v.cc (emit_vlmax_fp_insn): New function
31413         * config/riscv/riscv.cc (riscv_const_insns): Clarify const
31414         vector handling.
31415         (riscv_libgcc_floating_mode_supported_p): Adjust comment.
31416         (riscv_excess_precision): Do not convert to float for ZVFH.
31417         * config/riscv/vector-iterators.md: Add VF_AUTO iterator.
31419 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
31421         * config/riscv/vector-iterators.md: Add VI_QH iterator.
31422         * config/riscv/autovec-opt.md
31423         (@pred_extract_first_sextdi<mode>): New vmv.x.s pattern
31424         that includes sign extension.
31425         (@pred_extract_first_sextsi<mode>): Dito for SImode.
31427 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
31429         * config/riscv/autovec.md (vec_set<mode>): Implement.
31430         (vec_extract<mode><vel>): Implement.
31431         * config/riscv/riscv-protos.h (enum insn_type): Add slide insn.
31432         (emit_vlmax_slide_insn): Declare.
31433         (emit_nonvlmax_slide_tu_insn): Declare.
31434         (emit_scalar_move_insn): Export.
31435         (emit_nonvlmax_integer_move_insn): Export.
31436         * config/riscv/riscv-v.cc (emit_vlmax_slide_insn): New function.
31437         (emit_nonvlmax_slide_tu_insn): New function.
31438         (emit_vlmax_masked_mu_insn): No change.
31439         (emit_vlmax_integer_move_insn): Export.
31441 2023-06-19  Richard Biener  <rguenther@suse.de>
31443         * tree-vectorizer.h (enum vect_partial_vector_style): New.
31444         (_loop_vec_info::partial_vector_style): Likewise.
31445         (LOOP_VINFO_PARTIAL_VECTORS_STYLE): Likewise.
31446         (rgroup_controls::compare_type): Add.
31447         (vec_loop_masks): Change from a typedef to auto_vec<>
31448         to a structure.
31449         * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
31450         Adjust.  Convert niters_skip to compare_type.
31451         (vect_set_loop_condition_partial_vectors_avx512): New function
31452         implementing the AVX512 partial vector codegen.
31453         (vect_set_loop_condition): Dispatch to the correct
31454         vect_set_loop_condition_partial_vectors_* function based on
31455         LOOP_VINFO_PARTIAL_VECTORS_STYLE.
31456         (vect_prepare_for_masked_peels): Compute LOOP_VINFO_MASK_SKIP_NITERS
31457         in the original niter type.
31458         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Initialize
31459         partial_vector_style.
31460         (can_produce_all_loop_masks_p): Adjust.
31461         (vect_verify_full_masking): Produce the rgroup_controls vector
31462         here.  Set LOOP_VINFO_PARTIAL_VECTORS_STYLE on success.
31463         (vect_verify_full_masking_avx512): New function implementing
31464         verification of AVX512 style masking.
31465         (vect_verify_loop_lens): Set LOOP_VINFO_PARTIAL_VECTORS_STYLE.
31466         (vect_analyze_loop_2): Also try AVX512 style masking.
31467         Adjust condition.
31468         (vect_estimate_min_profitable_iters): Implement AVX512 style
31469         mask producing cost.
31470         (vect_record_loop_mask): Do not build the rgroup_controls
31471         vector here but record masks in a hash-set.
31472         (vect_get_loop_mask): Implement AVX512 style mask query,
31473         complementing the existing while_ult style.
31475 2023-06-19  Richard Biener  <rguenther@suse.de>
31477         * tree-vectorizer.h (vect_get_loop_mask): Add loop_vec_info
31478         argument.
31479         * tree-vect-loop.cc (vect_get_loop_mask): Likewise.
31480         (vectorize_fold_left_reduction): Adjust.
31481         (vect_transform_reduction): Likewise.
31482         (vectorizable_live_operation): Likewise.
31483         * tree-vect-stmts.cc (vectorizable_call): Likewise.
31484         (vectorizable_operation): Likewise.
31485         (vectorizable_store): Likewise.
31486         (vectorizable_load): Likewise.
31487         (vectorizable_condition): Likewise.
31489 2023-06-19  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
31491         PR target/110086
31492         * config/avr/avr.opt (mgas-isr-prologues, mmain-is-OS_task):
31493         Add Optimization option property.
31495 2023-06-19  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
31497         * config/xtensa/xtensa.cc (xtensa_constantsynth_2insn):
31498         Add new pattern for the abovementioned case.
31500 2023-06-19  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
31502         * config/xtensa/xtensa.cc
31503         (TARGET_MEMORY_MOVE_COST, xtensa_memory_move_cost): Remove.
31505 2023-06-19  Jiufu Guo  <guojiufu@linux.ibm.com>
31507         * config/rs6000/rs6000.cc (TARGET_CONST_ANCHOR): New define.
31509 2023-06-19  Jiufu Guo  <guojiufu@linux.ibm.com>
31511         * cse.cc (try_const_anchors): Check SCALAR_INT_MODE.
31513 2023-06-19  liuhongt  <hongtao.liu@intel.com>
31515         PR target/110235
31516         * config/i386/sse.md (<sse2_avx2>_packsswb<mask_name>):
31517         Substitute with ..
31518         (sse2_packsswb<mask_name>): .. this, ..
31519         (avx2_packsswb<mask_name>): .. this and ..
31520         (avx512bw_packsswb<mask_name>): .. this.
31521         (<sse2_avx2>_packssdw<mask_name>): Substitute with ..
31522         (sse2_packssdw<mask_name>): .. this, ..
31523         (avx2_packssdw<mask_name>): .. this and ..
31524         (avx512bw_packssdw<mask_name>): .. this.
31526 2023-06-19  liuhongt  <hongtao.liu@intel.com>
31528         PR target/110235
31529         * config/i386/i386-expand.cc (ix86_split_mmx_pack): Use
31530         UNSPEC_US_TRUNCATE instead of original us_truncate for
31531         packusdw/packuswb.
31532         * config/i386/mmx.md (mmx_pack<s_trunsuffix>swb): Substitute
31533         with ..
31534         (mmx_packsswb): .. this and ..
31535         (mmx_packuswb): .. this.
31536         (mmx_packusdw): Use UNSPEC_US_TRUNCATE instead of original
31537         us_truncate.
31538         (s_trunsuffix): Removed code iterator.
31539         (any_s_truncate): Ditto.
31540         * config/i386/sse.md (<sse2_avx2>_packuswb<mask_name>): Use
31541         UNSPEC_US_TRUNCATE instead of original us_truncate.
31542         (<sse4_1_avx2>_packusdw<mask_name>): Ditto.
31543         * config/i386/i386.md (UNSPEC_US_TRUNCATE): New unspec_c_enum.
31545 2023-06-18  Pan Li  <pan2.li@intel.com>
31547         * config/riscv/riscv-vector-builtins-bases.cc: Fix one typo.
31549 2023-06-18  Uros Bizjak  <ubizjak@gmail.com>
31551         * rtl.h (*rtx_equal_p_callback_function):
31552         Change return type from int to bool.
31553         (rtx_equal_p): Ditto.
31554         (*hash_rtx_callback_function): Ditto.
31555         * rtl.cc (rtx_equal_p): Change return type from int to bool
31556         and adjust function body accordingly.
31557         * early-remat.cc (scratch_equal): Ditto.
31558         * sel-sched-ir.cc (skip_unspecs_callback): Ditto.
31559         (hash_with_unspec_callback): Ditto.
31561 2023-06-18  Jeff Law  <jlaw@ventanamicro.com>
31563         * config/arc/arc.md (movqi_insn): Allow certain constants to
31564         be stored into memory in the pattern's condition.
31565         (movsf_insn): Similarly.
31567 2023-06-18  Honza  <jh@ryzen3.suse.cz>
31569         PR tree-optimization/109849
31570         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Add new parameter
31571         ES; handle ipa_predicate::not_sra_candidate.
31572         (evaluate_properties_for_edge): Pass es to
31573         evaluate_conditions_for_known_args.
31574         (ipa_fn_summary_t::duplicate): Handle sra candidates.
31575         (dump_ipa_call_summary): Dump points_to_possible_sra_candidate.
31576         (load_or_store_of_ptr_parameter): New function.
31577         (points_to_possible_sra_candidate_p): New function.
31578         (analyze_function_body): Initialize points_to_possible_sra_candidate;
31579         determine sra predicates.
31580         (estimate_ipcp_clone_size_and_time): Update call of
31581         evaluate_conditions_for_known_args.
31582         (remap_edge_params): Update points_to_possible_sra_candidate.
31583         (read_ipa_call_summary): Stream points_to_possible_sra_candidate
31584         (write_ipa_call_summary): Likewise.
31585         * ipa-predicate.cc (ipa_predicate::add_clause): Handle not_sra_candidate.
31586         (dump_condition): Dump it.
31587         * ipa-predicate.h (struct inline_param_summary): Add
31588         points_to_possible_sra_candidate.
31590 2023-06-18  Roger Sayle  <roger@nextmovesoftware.com>
31592         * config/i386/i386-expand.cc (ix86_expand_carry): New helper
31593         function for setting the carry flag.
31594         (ix86_expand_builtin) <handlecarry>: Use it here.
31595         * config/i386/i386-protos.h (ix86_expand_carry): Prototype here.
31596         * config/i386/i386.md (uaddc<mode>5): Use ix86_expand_carry.
31597         (usubc<mode>5): Likewise.
31599 2023-06-18  Roger Sayle  <roger@nextmovesoftware.com>
31601         * config/i386/i386.md (*concat<mode><dwi>3_1): Use QImode
31602         for the immediate constant shift count.
31603         (*concat<mode><dwi>3_2): Likewise.
31604         (*concat<mode><dwi>3_3): Likewise.
31605         (*concat<mode><dwi>3_4): Likewise.
31606         (*concat<mode><dwi>3_5): Likewise.
31607         (*concat<mode><dwi>3_6): Likewise.
31609 2023-06-18  Uros Bizjak  <ubizjak@gmail.com>
31611         * cse.cc (hash_rtx_cb): Rename to hash_rtx.
31612         (hash_rtx): Remove.
31613         * early-remat.cc (remat_candidate_hasher::equal): Update
31614         to call rtx_equal_p with rtx_equal_p_callback_function argument.
31615         * rtl.cc (rtx_equal_p_cb): Rename to rtx_equal_p.
31616         (rtx_equal_p): Remove.
31617         * rtl.h (rtx_equal_p): Add rtx_equal_p_callback_function
31618         argument with NULL default value.
31619         (rtx_equal_p_cb): Remove function declaration.
31620         (hash_rtx_cb): Ditto.
31621         (hash_rtx): Add hash_rtx_callback_function argument
31622         with NULL default value.
31623         * sel-sched-ir.cc (free_nop_pool): Update function comment.
31624         (skip_unspecs_callback): Ditto.
31625         (vinsn_init): Update to call hash_rtx with
31626         hash_rtx_callback_function argument.
31627         (vinsn_equal_p): Ditto.
31629 2023-06-18  yulong  <shiyulong@iscas.ac.cn>
31631         * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
31632         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
31633         (ADJUST_ALIGNMENT): Ditto.
31634         (RVV_TUPLE_PARTIAL_MODES): Ditto.
31635         (ADJUST_NUNITS): Ditto.
31636         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
31637         New types.
31638         (vfloat16mf4x3_t): Ditto.
31639         (vfloat16mf4x4_t): Ditto.
31640         (vfloat16mf4x5_t): Ditto.
31641         (vfloat16mf4x6_t): Ditto.
31642         (vfloat16mf4x7_t): Ditto.
31643         (vfloat16mf4x8_t): Ditto.
31644         (vfloat16mf2x2_t): Ditto.
31645         (vfloat16mf2x3_t): Ditto.
31646         (vfloat16mf2x4_t): Ditto.
31647         (vfloat16mf2x5_t): Ditto.
31648         (vfloat16mf2x6_t): Ditto.
31649         (vfloat16mf2x7_t): Ditto.
31650         (vfloat16mf2x8_t): Ditto.
31651         (vfloat16m1x2_t): Ditto.
31652         (vfloat16m1x3_t): Ditto.
31653         (vfloat16m1x4_t): Ditto.
31654         (vfloat16m1x5_t): Ditto.
31655         (vfloat16m1x6_t): Ditto.
31656         (vfloat16m1x7_t): Ditto.
31657         (vfloat16m1x8_t): Ditto.
31658         (vfloat16m2x2_t): Ditto.
31659         (vfloat16m2x3_t): Ditto.
31660         (vfloat16m2x4_t): Ditto.
31661         (vfloat16m4x2_t): Ditto.
31662         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
31663         (vfloat16mf4x3_t): Ditto.
31664         (vfloat16mf4x4_t): Ditto.
31665         (vfloat16mf4x5_t): Ditto.
31666         (vfloat16mf4x6_t): Ditto.
31667         (vfloat16mf4x7_t): Ditto.
31668         (vfloat16mf4x8_t): Ditto.
31669         (vfloat16mf2x2_t): Ditto.
31670         (vfloat16mf2x3_t): Ditto.
31671         (vfloat16mf2x4_t): Ditto.
31672         (vfloat16mf2x5_t): Ditto.
31673         (vfloat16mf2x6_t): Ditto.
31674         (vfloat16mf2x7_t): Ditto.
31675         (vfloat16mf2x8_t): Ditto.
31676         (vfloat16m1x2_t): Ditto.
31677         (vfloat16m1x3_t): Ditto.
31678         (vfloat16m1x4_t): Ditto.
31679         (vfloat16m1x5_t): Ditto.
31680         (vfloat16m1x6_t): Ditto.
31681         (vfloat16m1x7_t): Ditto.
31682         (vfloat16m1x8_t): Ditto.
31683         (vfloat16m2x2_t): Ditto.
31684         (vfloat16m2x3_t): Ditto.
31685         (vfloat16m2x4_t): Ditto.
31686         (vfloat16m4x2_t): Ditto.
31687         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
31688         * config/riscv/riscv.md: New.
31689         * config/riscv/vector-iterators.md: New.
31691 2023-06-17  Roger Sayle  <roger@nextmovesoftware.com>
31693         * config/i386/i386-expand.cc (ix86_expand_move): Check that OP1 is
31694         CONST_WIDE_INT_P before calling ix86_convert_wide_int_to_broadcast.
31695         Generalize special case for converting TImode to V1TImode to handle
31696         all 128-bit vector conversions.
31698 2023-06-17  Costas Argyris  <costas.argyris@gmail.com>
31700         * gcc-ar.cc (main): Refactor to slightly reduce code
31701         duplication.  Avoid unnecessary elements in nargv.
31703 2023-06-16  Pan Li  <pan2.li@intel.com>
31705         PR target/110265
31706         * config/riscv/riscv-vector-builtins-bases.cc: Add ret_mode for
31707         integer reduction expand.
31708         * config/riscv/vector-iterators.md: Add VQI, VHI, VSI and VDI,
31709         and the LMUL1 attr respectively.
31710         * config/riscv/vector.md
31711         (@pred_reduc_<reduc><mode><vlmul1>): Removed.
31712         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Likewise.
31713         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Likewise.
31714         (@pred_reduc_<reduc><VQI:mode><VQI_LMUL1:mode>): New pattern.
31715         (@pred_reduc_<reduc><VHI:mode><VHI_LMUL1:mode>): Likewise.
31716         (@pred_reduc_<reduc><VSI:mode><VSI_LMUL1:mode>): Likewise.
31717         (@pred_reduc_<reduc><VDI:mode><VDI_LMUL1:mode>): Likewise.
31719 2023-06-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
31721         PR target/110264
31722         * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Fix bug.
31724 2023-06-16  Jakub Jelinek  <jakub@redhat.com>
31726         PR middle-end/79173
31727         * builtin-types.def (BT_FN_UINT_UINT_UINT_UINT_UINTPTR,
31728         BT_FN_ULONG_ULONG_ULONG_ULONG_ULONGPTR,
31729         BT_FN_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONGPTR): New
31730         types.
31731         * builtins.def (BUILT_IN_ADDC, BUILT_IN_ADDCL, BUILT_IN_ADDCLL,
31732         BUILT_IN_SUBC, BUILT_IN_SUBCL, BUILT_IN_SUBCLL): New builtins.
31733         * builtins.cc (fold_builtin_addc_subc): New function.
31734         (fold_builtin_varargs): Handle BUILT_IN_{ADD,SUB}C{,L,LL}.
31735         * doc/extend.texi (__builtin_addc, __builtin_subc): Document.
31737 2023-06-16  Jakub Jelinek  <jakub@redhat.com>
31739         PR tree-optimization/110271
31740         * tree-ssa-math-opts.cc (math_opts_dom_walker::after_dom_children)
31741         <case PLUS_EXPR>: Ignore return value from match_arith_overflow,
31742         instead call match_uaddc_usubc only if gsi_stmt (gsi) is still stmt.
31744 2023-06-16  Martin Jambor  <mjambor@suse.cz>
31746         * configure: Regenerate.
31748 2023-06-16  Roger Sayle  <roger@nextmovesoftware.com>
31749             Uros Bizjak  <ubizjak@gmail.com>
31751         PR target/31985
31752         * config/i386/i386.md (*add<dwi>3_doubleword_concat): New
31753         define_insn_and_split combine *add<dwi>3_doubleword with
31754         a *concat<mode><dwi>3 for more efficient lowering after reload.
31756 2023-06-16  Vladimir N. Makarov  <vmakarov@redhat.com>
31758         * ira-lives.cc: Include except.h.
31759         (process_bb_node_lives): Ignore conflicts from cleanup exceptions
31760         when the pseudo does not live at the exception landing pad.
31762 2023-06-16  Alex Coplan  <alex.coplan@arm.com>
31764         * doc/invoke.texi: Document -Welaborated-enum-base.
31766 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
31768         * config/aarch64/aarch64-simd-builtins.def (shrn2_n): Rename builtins to...
31769         (ushrn2_n): ... This.
31770         (sqshrn2_n): Rename builtins to...
31771         (ssqshrn2_n): ... This.
31772         (uqshrn2_n): Rename builtins to...
31773         (uqushrn2_n): ... This.
31774         * config/aarch64/arm_neon.h (vqshrn_high_n_s16): Adjust for the above.
31775         (vqshrn_high_n_s32): Likewise.
31776         (vqshrn_high_n_s64): Likewise.
31777         (vqshrn_high_n_u16): Likewise.
31778         (vqshrn_high_n_u32): Likewise.
31779         (vqshrn_high_n_u64): Likewise.
31780         (vshrn_high_n_s16): Likewise.
31781         (vshrn_high_n_s32): Likewise.
31782         (vshrn_high_n_s64): Likewise.
31783         (vshrn_high_n_u16): Likewise.
31784         (vshrn_high_n_u32): Likewise.
31785         (vshrn_high_n_u64): Likewise.
31786         * config/aarch64/aarch64-simd.md (aarch64_<shrn_op>shrn2_n<mode>_insn_le):
31787         Rename to...
31788         (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_le): ... This.
31789         Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
31790         (aarch64_<shrn_op>shrn2_n<mode>_insn_be): Rename to...
31791         (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_be): ... This.
31792         Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
31793         (aarch64_<shrn_op>shrn2_n<mode>): Rename to...
31794         (aarch64_<shrn_op><sra_op>shrn2_n<mode>): ... This.
31795         Update expander for the above.
31797 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
31799         * config/aarch64/aarch64-simd-builtins.def (shrn2): Rename builtins to...
31800         (shrn2_n): ... This.
31801         (rshrn2): Rename builtins to...
31802         (rshrn2_n): ... This.
31803         * config/aarch64/arm_neon.h (vrshrn_high_n_s16): Adjust for the above.
31804         (vrshrn_high_n_s32): Likewise.
31805         (vrshrn_high_n_s64): Likewise.
31806         (vrshrn_high_n_u16): Likewise.
31807         (vrshrn_high_n_u32): Likewise.
31808         (vrshrn_high_n_u64): Likewise.
31809         (vshrn_high_n_s16): Likewise.
31810         (vshrn_high_n_s32): Likewise.
31811         (vshrn_high_n_s64): Likewise.
31812         (vshrn_high_n_u16): Likewise.
31813         (vshrn_high_n_u32): Likewise.
31814         (vshrn_high_n_u64): Likewise.
31815         * config/aarch64/aarch64-simd.md (*aarch64_<srn_op>shrn<mode>2_vect_le):
31816         Delete.
31817         (*aarch64_<srn_op>shrn<mode>2_vect_be): Likewise.
31818         (aarch64_shrn2<mode>_insn_le): Likewise.
31819         (aarch64_shrn2<mode>_insn_be): Likewise.
31820         (aarch64_shrn2<mode>): Likewise.
31821         (aarch64_rshrn2<mode>_insn_le): Likewise.
31822         (aarch64_rshrn2<mode>_insn_be): Likewise.
31823         (aarch64_rshrn2<mode>): Likewise.
31824         (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_le): Likewise.
31825         (aarch64_<shrn_op>shrn2_n<mode>_insn_le): New define_insn.
31826         (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_be): Delete.
31827         (aarch64_<shrn_op>shrn2_n<mode>_insn_be): New define_insn.
31828         (aarch64_<sur>q<r>shr<u>n2_n<mode>): Delete.
31829         (aarch64_<shrn_op>shrn2_n<mode>): New define_expand.
31830         (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): New define_insn.
31831         (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): New define_insn.
31832         (aarch64_<shrn_op>rshrn2_n<mode>): New define_expand.
31833         (aarch64_sqshrun2_n<mode>_insn_le): New define_insn.
31834         (aarch64_sqshrun2_n<mode>_insn_be): New define_insn.
31835         (aarch64_sqshrun2_n<mode>): New define_expand.
31836         (aarch64_sqrshrun2_n<mode>_insn_le): New define_insn.
31837         (aarch64_sqrshrun2_n<mode>_insn_be): New define_insn.
31838         (aarch64_sqrshrun2_n<mode>): New define_expand.
31839         * config/aarch64/iterators.md (UNSPEC_SQSHRUN, UNSPEC_SQRSHRUN,
31840         UNSPEC_SQSHRN, UNSPEC_UQSHRN, UNSPEC_SQRSHRN, UNSPEC_UQRSHRN):
31841         Delete unspec values.
31842         (VQSHRN_N): Delete int iterator.
31844 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
31846         * config/aarch64/aarch64.h (AARCH64_VALID_SHRN_OP): Define.
31847         * config/aarch64/aarch64-simd.md
31848         (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): Rename to...
31849         (*aarch64_<shrn_op><shrn_s>shrn_n<mode>_insn<vczle><vczbe>): ... This.
31850         Use SHIFTRT iterator and add AARCH64_VALID_SHRN_OP to condition.
31851         * config/aarch64/iterators.md (shrn_s): New code attribute.
31853 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
31855         * config/aarch64/aarch64-simd.md (aarch64_<sur>q<r>shr<u>n_n<mode>):
31856         Rename to...
31857         (aarch64_<shrn_op>shrn_n<mode>): ... This.  Reimplement with RTL codes.
31858         (*aarch64_<shrn_op>rshrn_n<mode>_insn): New define_insn.
31859         (aarch64_sqrshrun_n<mode>_insn): Likewise.
31860         (aarch64_sqshrun_n<mode>_insn): Likewise.
31861         (aarch64_<shrn_op>rshrn_n<mode>): New define_expand.
31862         (aarch64_sqshrun_n<mode>): Likewise.
31863         (aarch64_sqrshrun_n<mode>): Likewise.
31864         * config/aarch64/iterators.md (V2XWIDE): Add HI and SI modes.
31866 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
31868         * config/aarch64/aarch64-simd-builtins.def (shrn): Rename builtins to...
31869         (shrn_n): ... This.
31870         (rshrn): Rename builtins to...
31871         (rshrn_n): ... This.
31872         * config/aarch64/arm_neon.h (vshrn_n_s16): Adjust for the above.
31873         (vshrn_n_s32): Likewise.
31874         (vshrn_n_s64): Likewise.
31875         (vshrn_n_u16): Likewise.
31876         (vshrn_n_u32): Likewise.
31877         (vshrn_n_u64): Likewise.
31878         (vrshrn_n_s16): Likewise.
31879         (vrshrn_n_s32): Likewise.
31880         (vrshrn_n_s64): Likewise.
31881         (vrshrn_n_u16): Likewise.
31882         (vrshrn_n_u32): Likewise.
31883         (vrshrn_n_u64): Likewise.
31884         * config/aarch64/aarch64-simd.md
31885         (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): Delete.
31886         (aarch64_shrn<mode>): Likewise.
31887         (aarch64_rshrn<mode><vczle><vczbe>_insn): Likewise.
31888         (aarch64_rshrn<mode>): Likewise.
31889         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): Likewise.
31890         (aarch64_<sur>q<r>shr<u>n_n<mode>): Likewise.
31891         (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): New define_insn.
31892         (*aarch64_<shrn_op>rshrn_n<mode>_insn<vczle><vczbe>): Likewise.
31893         (*aarch64_sqshrun_n<mode>_insn<vczle><vczbe>): Likewise.
31894         (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
31895         (aarch64_<shrn_op>shrn_n<mode>): New define_expand.
31896         (aarch64_<shrn_op>rshrn_n<mode>): Likewise.
31897         (aarch64_sqshrun_n<mode>): Likewise.
31898         (aarch64_sqrshrun_n<mode>): Likewise.
31899         * config/aarch64/iterators.md (ALL_TRUNC): New code iterator.
31900         (TRUNCEXTEND): New code attribute.
31901         (TRUNC_SHIFT): Likewise.
31902         (shrn_op): Likewise.
31903         * config/aarch64/predicates.md (aarch64_simd_umax_quarter_mode):
31904         New predicate.
31906 2023-06-16  Pan Li  <pan2.li@intel.com>
31908         * config/riscv/riscv-vsetvl.cc
31909         (pass_vsetvl::global_eliminate_vsetvl_insn): Initialize var by NULL.
31911 2023-06-16  Richard Biener  <rguenther@suse.de>
31913         PR tree-optimization/110278
31914         * match.pd (uns < (typeof uns)(uns != 0) -> false): New.
31915         (x != (typeof x)(x == 0) -> true): Likewise.
31917 2023-06-16  Pali Rohár  <pali@kernel.org>
31919         * config/i386/mingw-w64.h (CPP_SPEC): Adjust for -mcrtdll=.
31920         (REAL_LIBGCC_SPEC): New define.
31921         * config/i386/mingw.opt: Add mcrtdll=
31922         * config/i386/mingw32.h (CPP_SPEC): Adjust for -mcrtdll=.
31923         (REAL_LIBGCC_SPEC): Adjust for -mcrtdll=.
31924         (STARTFILE_SPEC): Adjust for -mcrtdll=.
31925         * doc/invoke.texi: Add mcrtdll= documentation.
31927 2023-06-16  Simon Dardis  <simon.dardis@imgtec.com>
31929         * config/mips/mips.cc (enum mips_code_readable_setting):New enmu.
31930         (mips_handle_code_readable_attr):New static function.
31931         (mips_get_code_readable_attr):New static enum function.
31932         (mips_set_current_function):Set the code_readable mode.
31933         (mips_option_override):Same as above.
31934         * doc/extend.texi:Document code_readable.
31936 2023-06-16  Richard Biener  <rguenther@suse.de>
31938         PR tree-optimization/110269
31939         * fold-const.cc (fold_binary_loc): Merge x != 0 folding
31940         with tree_expr_nonzero_p ...
31941         * match.pd (cmp (convert? addr@0) integer_zerop): With this
31942         pattern.
31944 2023-06-15  Marek Polacek  <polacek@redhat.com>
31946         * Makefile.in: Set LD_PICFLAG.  Use it.  Set enable_host_pie.
31947         Remove NO_PIE_CFLAGS and NO_PIE_FLAG.  Pass LD_PICFLAG to
31948         ALL_LINKERFLAGS.  Use the "pic" build of libiberty if --enable-host-pie.
31949         * configure.ac (--enable-host-shared): Don't set PICFLAG here.
31950         (--enable-host-pie): New check.  Set PICFLAG and LD_PICFLAG after this
31951         check.
31952         * configure: Regenerate.
31953         * doc/install.texi: Document --enable-host-pie.
31955 2023-06-15  Manolis Tsamis  <manolis.tsamis@vrull.eu>
31957         * regcprop.cc (maybe_mode_change): Enable stack pointer
31958         propagation.
31960 2023-06-15  Andrew MacLeod  <amacleod@redhat.com>
31962         PR tree-optimization/110266
31963         * gimple-range-fold.cc (adjust_imagpart_expr): Check for integer
31964         complex type.
31965         (adjust_realpart_expr): Ditto.
31967 2023-06-15  Jan Beulich  <jbeulich@suse.com>
31969         * config/i386/sse.md (<avx512>_vec_dup<mode><mask_name>): Use
31970         vmovddup.
31972 2023-06-15  Jan Beulich  <jbeulich@suse.com>
31974         * config/i386/constraints.md: Mention k and r for B.
31976 2023-06-15  Lulu Cheng  <chenglulu@loongson.cn>
31977             Andrew Pinski  <apinski@marvell.com>
31979         PR target/110136
31980         * config/loongarch/loongarch.md: Modify the register constraints for template
31981         "jumptable" and "indirect_jump" from "r" to "e".
31983 2023-06-15  Xi Ruoyao  <xry111@xry111.site>
31985         * config/loongarch/loongarch-tune.h (loongarch_align): New
31986         struct.
31987         * config/loongarch/loongarch-def.h (loongarch_cpu_align): New
31988         array.
31989         * config/loongarch/loongarch-def.c (loongarch_cpu_align): Define
31990         the array.
31991         * config/loongarch/loongarch.cc
31992         (loongarch_option_override_internal): Set the value of
31993         -falign-functions= if -falign-functions is enabled but no value
31994         is given.  Likewise for -falign-labels=.
31996 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
31998         PR middle-end/79173
31999         * internal-fn.def (UADDC, USUBC): New internal functions.
32000         * internal-fn.cc (expand_UADDC, expand_USUBC): New functions.
32001         (commutative_ternary_fn_p): Return true also for IFN_UADDC.
32002         * optabs.def (uaddc5_optab, usubc5_optab): New optabs.
32003         * tree-ssa-math-opts.cc (uaddc_cast, uaddc_ne0, uaddc_is_cplxpart,
32004         match_uaddc_usubc): New functions.
32005         (math_opts_dom_walker::after_dom_children): Call match_uaddc_usubc
32006         for PLUS_EXPR, MINUS_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR unless
32007         other optimizations have been successful for those.
32008         * gimple-fold.cc (gimple_fold_call): Handle IFN_UADDC and IFN_USUBC.
32009         * fold-const-call.cc (fold_const_call): Likewise.
32010         * gimple-range-fold.cc (adjust_imagpart_expr): Likewise.
32011         * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Likewise.
32012         * doc/md.texi (uaddc<mode>5, usubc<mode>5): Document new named
32013         patterns.
32014         * config/i386/i386.md (uaddc<mode>5, usubc<mode>5): New
32015         define_expand patterns.
32016         (*setcc_qi_addqi3_cconly_overflow_1_<mode>, *setccc): Split
32017         into NOTE_INSN_DELETED note rather than nop instruction.
32018         (*setcc_qi_negqi_ccc_1_<mode>, *setcc_qi_negqi_ccc_2_<mode>):
32019         Likewise.
32021 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
32023         PR middle-end/79173
32024         * config/i386/i386.md (subborrow<mode>): Add alternative with
32025         memory destination and add for it define_peephole2
32026         TARGET_READ_MODIFY_WRITE/-Os patterns to prefer using memory
32027         destination in these patterns.
32029 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
32031         PR middle-end/79173
32032         * config/i386/i386.md (*sub<mode>_3, @add<mode>3_carry,
32033         addcarry<mode>, @sub<mode>3_carry, *add<mode>3_cc_overflow_1): Add
32034         define_peephole2 TARGET_READ_MODIFY_WRITE/-Os patterns to prefer
32035         using memory destination in these patterns.
32037 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
32039         * gimple-fold.cc (gimple_fold_call): Move handling of arg0
32040         as well as arg1 INTEGER_CSTs for .UBSAN_CHECK_{ADD,SUB,MUL}
32041         and .{ADD,SUB,MUL}_OVERFLOW calls from here...
32042         * fold-const-call.cc (fold_const_call): ... here.
32044 2023-06-15  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
32046         * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>):
32047         Rename to <su>abd<mode>3.
32048         * config/aarch64/aarch64-sve.md (<su>abd<mode>_3): Rename
32049         to <su>abd<mode>3.
32051 2023-06-15  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
32053         * doc/md.texi (sabd, uabd): Document them.
32054         * internal-fn.def (ABD): Use new optab.
32055         * optabs.def (sabd_optab, uabd_optab): New optabs,
32056         * tree-vect-patterns.cc (vect_recog_absolute_difference):
32057         Recognize the following idiom abs (a - b).
32058         (vect_recog_sad_pattern): Refactor to use
32059         vect_recog_absolute_difference.
32060         (vect_recog_abd_pattern): Use patterns found by
32061         vect_recog_absolute_difference to build a new ABD
32062         internal call.
32064 2023-06-15  chenxiaolong  <chenxl04200420@163.com>
32066         * config/loongarch/loongarch.h (LARCH_CALL_RATIO): Modify the value
32067         of macro LARCH_CALL_RATIO on LoongArch to make it perform optimally.
32069 2023-06-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32071         * config/riscv/riscv-v.cc (shuffle_merge_patterns): New pattern.
32072         (expand_vec_perm_const_1): Add merge optmization.
32074 2023-06-15  Lehua Ding  <lehua.ding@rivai.ai>
32076         PR target/110119
32077         * config/riscv/riscv.cc (riscv_get_arg_info): Return NULL_RTX for vector mode
32078         (riscv_pass_by_reference): Return true for vector mode
32080 2023-06-15  Pan Li  <pan2.li@intel.com>
32082         * config/riscv/autovec-opt.md: Align the predictor sytle.
32083         * config/riscv/autovec.md: Ditto.
32085 2023-06-15  Pan Li  <pan2.li@intel.com>
32087         * config/riscv/riscv-v.cc (rvv_builder::get_merge_scalar_mask):
32088         Take elen instead of scalar BITS_PER_WORD.
32089         (expand_vector_init_merge_repeating_sequence): Use inner_bits_size
32090         instead of scaler BITS_PER_WORD.
32092 2023-06-14  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
32094         * config/moxie/uclinux.h (MFWRAP_SPEC): Remove
32096 2023-06-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
32098         * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold):
32099         Fix signed comparison warning in loop from npats to enelts.
32101 2023-06-14  Thomas Schwinge  <thomas@codesourcery.com>
32103         * gcc.cc (driver_handle_option): Forward host '-lgfortran', '-lm'
32104         to offloading compilation.
32105         * config/gcn/mkoffload.cc (main): Adjust.
32106         * config/nvptx/mkoffload.cc (main): Likewise.
32107         * doc/invoke.texi (foffload-options): Update example.
32109 2023-06-14  liuhongt  <hongtao.liu@intel.com>
32111         PR target/110227
32112         * config/i386/sse.md (mov<mode>_internal>): Use x instead of v
32113         for alternative 2 since there's no evex version for vpcmpeqd
32114         ymm, ymm, ymm.
32116 2023-06-13  Jeff Law  <jlaw@ventanamicro.com>
32118         * gcc.cc (LINK_COMMAND_SPEC): Remove mudflap spec handling.
32120 2023-06-13  Jeff Law  <jlaw@ventanamicro.com>
32122         * config/sh/divtab.cc: Remove.
32124 2023-06-13  Jakub Jelinek  <jakub@redhat.com>
32126         * config/i386/i386.cc (standard_sse_constant_opcode): Remove
32127         superfluous spaces around \t for vpcmpeqd.
32129 2023-06-13  Roger Sayle  <roger@nextmovesoftware.com>
32131         * expr.cc (store_constructor) <case VECTOR_TYPE>: Don't bother
32132         clearing vectors with only a single element.  Set CLEARED if the
32133         vector was initialized to zero.
32135 2023-06-13  Lehua Ding  <lehua.ding@rivai.ai>
32137         * config/riscv/riscv-v.cc (struct mode_vtype_group): Remove duplicate
32138         #include.
32139         (ENTRY): Undef.
32140         (TUPLE_ENTRY): Undef.
32142 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32144         * config/riscv/riscv-v.cc (rvv_builder::single_step_npatterns_p): Add comment.
32145         (shuffle_generic_patterns): Ditto.
32146         (expand_vec_perm_const_1): Ditto.
32148 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32150         * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): Fix bug.
32151         (shuffle_decompress_patterns): Ditto.
32153 2023-06-13  Richard Biener  <rguenther@suse.de>
32155         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Free loop BBs.
32157 2023-06-13  Yanzhang Wang  <yanzhang.wang@intel.com>
32158             Kito Cheng  <kito.cheng@sifive.com>
32160         * config/riscv/riscv-protos.h (riscv_init_cumulative_args): Set
32161         warning flag if func is not builtin
32162         * config/riscv/riscv.cc
32163         (riscv_scalable_vector_type_p): Determine whether the type is scalable vector.
32164         (riscv_arg_has_vector): Determine whether the arg is vector type.
32165         (riscv_pass_in_vector_p): Check the vector type param is passed by value.
32166         (riscv_init_cumulative_args): The same as header.
32167         (riscv_get_arg_info): Add the checking.
32168         (riscv_function_value): Check the func return and set warning flag
32169         * config/riscv/riscv.h (INIT_CUMULATIVE_ARGS): Add a flag to
32170         determine whether warning psabi or not.
32172 2023-06-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
32174         * config/arm/arm-opts.h (enum arm_tp_type): Remove TP_CP15.
32175         Add TP_TPIDRURW, TP_TPIDRURO, TP_TPIDRPRW values.
32176         * config/arm/arm-protos.h (arm_output_load_tpidr): Declare prototype.
32177         * config/arm/arm.cc (arm_option_reconfigure_globals): Replace TP_CP15
32178         with TP_TPIDRURO.
32179         (arm_output_load_tpidr): Define.
32180         * config/arm/arm.h (TARGET_HARD_TP): Define in terms of TARGET_SOFT_TP.
32181         * config/arm/arm.md (load_tp_hard): Call arm_output_load_tpidr to output
32182         assembly.
32183         (reload_tp_hard): Likewise.
32184         * config/arm/arm.opt (tpidrurw, tpidruro, tpidrprw): New values for
32185         arm_tp_type.
32186         * doc/invoke.texi (Arm Options, mtp): Document new values.
32188 2023-06-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
32190         PR target/108779
32191         * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Add
32192         AARCH64_TPIDRRO_EL0 value.
32193         * config/aarch64/aarch64.cc (aarch64_output_load_tp): Define.
32194         * config/aarch64/aarch64.opt (tpidr_el0, tpidr_el1, tpidr_el2,
32195         tpidr_el3, tpidrro_el3): New accepted values to -mtp=.
32196         * doc/invoke.texi (AArch64 Options): Document new -mtp= options.
32198 2023-06-13  Alexandre Oliva  <oliva@adacore.com>
32200         * range-op-float.cc (frange_nextafter): Drop inline.
32201         (frelop_early_resolve): Add static.
32202         (frange_float): Likewise.
32204 2023-06-13  Richard Biener  <rguenther@suse.de>
32206         PR middle-end/110232
32207         * fold-const.cc (native_interpret_vector): Use TYPE_SIZE_UNIT
32208         to check whether the buffer covers the whole vector.
32210 2023-06-13  Richard Biener  <rguenther@suse.de>
32212         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): For
32213         .MASK_LOAD and friends set the size of the access to unknown.
32215 2023-06-13  Tejas Belagod  <tbelagod@arm.com>
32217         PR target/96339
32218         * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold): Fold sve
32219         calls that have a constant input predicate vector.
32220         (svlast_impl::is_lasta): Query to check if intrinsic is svlasta.
32221         (svlast_impl::is_lastb): Query to check if intrinsic is svlastb.
32222         (svlast_impl::vect_all_same): Check if all vector elements are equal.
32224 2023-06-13  Andi Kleen  <ak@linux.intel.com>
32226         * config/i386/gcc-auto-profile: Regenerate.
32228 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32230         * config/riscv/vector-iterators.md: Fix requirement.
32232 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32234         * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): New function.
32235         (shuffle_decompress_patterns): New function.
32236         (expand_vec_perm_const_1): Add decompress optimization.
32238 2023-06-12  Jeff Law  <jlaw@ventanamicro.com>
32240         PR rtl-optimization/101188
32241         * postreload.cc (reload_cse_move2add_invalidate): New function,
32242         extracted from...
32243         (reload_cse_move2add): Call reload_cse_move2add_invalidate.
32245 2023-06-12  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
32247         * config/aarch64/aarch64.cc (aarch64_expand_vector_init): Tweak condition
32248         if (n_var == n_elts && n_elts <= 16) to allow a single constant,
32249         and if maxv == 1, use constant element for duplicating into register.
32251 2023-06-12  Tobias Burnus  <tobias@codesourcery.com>
32253         * gimplify.cc (gimplify_adjust_omp_clauses_1): Use
32254         GOMP_MAP_FORCE_PRESENT for 'present alloc' implicit mapping.
32255         (gimplify_adjust_omp_clauses): Change
32256         GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC} to the equivalent
32257         GOMP_MAP_FORCE_PRESENT.
32258         * omp-low.cc (lower_omp_target): Remove handling of no-longer valid
32259         GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC}; update map kinds used for
32260         to/from clauses with present modifier.
32262 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
32264         PR tree-optimization/110205
32265         * range-op-float.cc (range_operator::fold_range): Add default FII
32266         fold routine.
32267         * range-op-mixed.h (class operator_gt): Add missing final overrides.
32268         * range-op.cc (range_op_handler::fold_range): Add RO_FII case.
32269         (operator_lshift ::update_bitmask): Add final override.
32270         (operator_rshift ::update_bitmask): Add final override.
32271         * range-op.h (range_operator::fold_range): Add FII prototype.
32273 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
32275         * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
32276         Use range_op_handler directly.
32277         * range-op.cc (range_op_handler::range_op_handler): Unsigned
32278         param instead of tree-code.
32279         (ptr_op_widen_plus_signed): Delete.
32280         (ptr_op_widen_plus_unsigned): Delete.
32281         (ptr_op_widen_mult_signed): Delete.
32282         (ptr_op_widen_mult_unsigned): Delete.
32283         (range_op_table::initialize_integral_ops): Add new opcodes.
32284         * range-op.h (range_op_handler): Use unsigned.
32285         (OP_WIDEN_MULT_SIGNED): New.
32286         (OP_WIDEN_MULT_UNSIGNED): New.
32287         (OP_WIDEN_PLUS_SIGNED): New.
32288         (OP_WIDEN_PLUS_UNSIGNED): New.
32289         (RANGE_OP_TABLE_SIZE): New.
32290         (range_op_table::operator []): Use unsigned.
32291         (range_op_table::set): Use unsigned.
32292         (m_range_tree): Make unsigned.
32293         (ptr_op_widen_mult_signed): Remove.
32294         (ptr_op_widen_mult_unsigned): Remove.
32295         (ptr_op_widen_plus_signed): Remove.
32296         (ptr_op_widen_plus_unsigned): Remove.
32298 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
32300         * gimple-range-op.cc (gimple_range_op_handler): Set m_operator
32301         manually as there is no access to the default operator.
32302         (cfn_copysign::fold_range): Don't check for validity.
32303         (cfn_ubsan::fold_range): Ditto.
32304         (gimple_range_op_handler::maybe_builtin_call): Don't set to NULL.
32305         * range-op.cc (default_operator): New.
32306         (range_op_handler::range_op_handler): Use default_operator
32307         instead of NULL.
32308         (range_op_handler::operator bool): Move from header, compare
32309         against default operator.
32310         (range_op_handler::range_op): New.
32311         * range-op.h (range_op_handler::operator bool): Move.
32313 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
32315         * range-op.cc (unified_table): Delete.
32316         (range_op_table operator_table): Instantiate.
32317         (range_op_table::range_op_table): Rename from unified_table.
32318         (range_op_handler::range_op_handler): Use range_op_table.
32319         * range-op.h (range_op_table::operator []): Inline.
32320         (range_op_table::set): Inline.
32322 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
32324         * gimple-range-gori.cc (gori_compute::condexpr_adjust): Do not
32325         pass type.
32326         * gimple-range-op.cc (get_code): Rename from get_code_and_type
32327         and simplify.
32328         (gimple_range_op_handler::supported_p): No need for type.
32329         (gimple_range_op_handler::gimple_range_op_handler): Ditto.
32330         (cfn_copysign::fold_range): Ditto.
32331         (cfn_ubsan::fold_range): Ditto.
32332         * ipa-cp.cc (ipa_vr_operation_and_type_effects): Ditto.
32333         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Ditto.
32334         * range-op-float.cc (operator_plus::op1_range): Ditto.
32335         (operator_mult::op1_range): Ditto.
32336         (range_op_float_tests): Ditto.
32337         * range-op.cc (get_op_handler): Remove.
32338         (range_op_handler::set_op_handler): Remove.
32339         (operator_plus::op1_range): No need for type.
32340         (operator_minus::op1_range): Ditto.
32341         (operator_mult::op1_range): Ditto.
32342         (operator_exact_divide::op1_range): Ditto.
32343         (operator_cast::op1_range): Ditto.
32344         (perator_bitwise_not::fold_range): Ditto.
32345         (operator_negate::fold_range): Ditto.
32346         * range-op.h (range_op_handler::range_op_handler): Remove type param.
32347         (range_cast): No need for type.
32348         (range_op_table::operator[]): Check for enum_code >= 0.
32349         * tree-data-ref.cc (compute_distributive_range): No need for type.
32350         * tree-ssa-loop-unswitch.cc (unswitch_predicate): Ditto.
32351         * value-query.cc (range_query::get_tree_range): Ditto.
32352         * value-relation.cc (relation_oracle::validate_relation): Ditto.
32353         * vr-values.cc (range_of_var_in_loop): Ditto.
32354         (simplify_using_ranges::fold_cond_with_ops): Ditto.
32356 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
32358         * range-op-mixed.h (operator_max): Remove final.
32359         * range-op-ptr.cc (pointer_table::pointer_table): Remove MAX_EXPR.
32360         (pointer_table::pointer_table): Remove.
32361         (class hybrid_max_operator): New.
32362         (range_op_table::initialize_pointer_ops): Add hybrid_max_operator.
32363         * range-op.cc (pointer_tree_table): Remove.
32364         (unified_table::unified_table): Comment out MAX_EXPR.
32365         (get_op_handler): Remove check of pointer table.
32366         * range-op.h (class pointer_table): Remove.
32368 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
32370         * range-op-mixed.h (operator_min): Remove final.
32371         * range-op-ptr.cc (pointer_table::pointer_table): Remove MIN_EXPR.
32372         (class hybrid_min_operator): New.
32373         (range_op_table::initialize_pointer_ops): Add hybrid_min_operator.
32374         * range-op.cc (unified_table::unified_table): Comment out MIN_EXPR.
32376 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
32378         * range-op-mixed.h (operator_bitwise_or): Remove final.
32379         * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_IOR_EXPR.
32380         (class hybrid_or_operator): New.
32381         (range_op_table::initialize_pointer_ops): Add hybrid_or_operator.
32382         * range-op.cc (unified_table::unified_table): Comment out BIT_IOR_EXPR.
32384 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
32386         * range-op-mixed.h (operator_bitwise_and): Remove final.
32387         * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_AND_EXPR.
32388         (class hybrid_and_operator): New.
32389         (range_op_table::initialize_pointer_ops): Add hybrid_and_operator.
32390         * range-op.cc (unified_table::unified_table): Comment out BIT_AND_EXPR.
32392 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
32394         * Makefile.in (OBJS): Add range-op-ptr.o.
32395         * range-op-mixed.h (update_known_bitmask): Move prototype here.
32396         (minus_op1_op2_relation_effect): Move prototype here.
32397         (wi_includes_zero_p): Move function to here.
32398         (wi_zero_p): Ditto.
32399         * range-op.cc (update_known_bitmask): Remove static.
32400         (wi_includes_zero_p): Move to header.
32401         (wi_zero_p): Move to header.
32402         (minus_op1_op2_relation_effect): Remove static.
32403         (operator_pointer_diff): Move class and routines to range-op-ptr.cc.
32404         (pointer_plus_operator): Ditto.
32405         (pointer_min_max_operator): Ditto.
32406         (pointer_and_operator): Ditto.
32407         (pointer_or_operator): Ditto.
32408         (pointer_table): Ditto.
32409         (range_op_table::initialize_pointer_ops): Ditto.
32410         * range-op-ptr.cc: New.
32412 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
32414         * range-op-mixed.h (class operator_max): Move from...
32415         * range-op.cc (unified_table::unified_table): Add MAX_EXPR.
32416         (get_op_handler): Remove the integral table.
32417         (class operator_max): Move from here.
32418         (integral_table::integral_table): Delete.
32419         * range-op.h (class integral_table): Delete.
32421 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
32423         * range-op-mixed.h (class operator_min): Move from...
32424         * range-op.cc (unified_table::unified_table): Add MIN_EXPR.
32425         (class operator_min): Move from here.
32426         (integral_table::integral_table): Remove MIN_EXPR.
32428 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
32430         * range-op-mixed.h (class operator_bitwise_or): Move from...
32431         * range-op.cc (unified_table::unified_table): Add BIT_IOR_EXPR.
32432         (class operator_bitwise_or): Move from here.
32433         (integral_table::integral_table): Remove BIT_IOR_EXPR.
32435 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
32437         * range-op-mixed.h (class operator_bitwise_and): Move from...
32438         * range-op.cc (unified_table::unified_table): Add BIT_AND_EXPR.
32439         (get_op_handler): Check for a pointer table entry first.
32440         (class operator_bitwise_and): Move from here.
32441         (integral_table::integral_table): Remove BIT_AND_EXPR.
32443 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
32445         * range-op-mixed.h (class operator_bitwise_xor): Move from...
32446         * range-op.cc (unified_table::unified_table): Add BIT_XOR_EXPR.
32447         (class operator_bitwise_xor): Move from here.
32448         (integral_table::integral_table): Remove BIT_XOR_EXPR.
32449         (pointer_table::pointer_table): Remove BIT_XOR_EXPR.
32451 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
32453         * range-op-mixed.h (class operator_bitwise_not): Move from...
32454         * range-op.cc (unified_table::unified_table): Add BIT_NOT_EXPR.
32455         (class operator_bitwise_not): Move from here.
32456         (integral_table::integral_table): Remove BIT_NOT_EXPR.
32457         (pointer_table::pointer_table): Remove BIT_NOT_EXPR.
32459 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
32461         * range-op-mixed.h (class operator_addr_expr): Move from...
32462         * range-op.cc (unified_table::unified_table): Add ADDR_EXPR.
32463         (class operator_addr_expr): Move from here.
32464         (integral_table::integral_table): Remove ADDR_EXPR.
32465         (pointer_table::pointer_table): Remove ADDR_EXPR.
32467 2023-06-12  Pan Li  <pan2.li@intel.com>
32469         * config/riscv/riscv-vector-builtins-types.def
32470         (vfloat16m1_t): Add type to lmul1 ops.
32471         (vfloat16m2_t): Likewise.
32472         (vfloat16m4_t): Likewise.
32474 2023-06-12  Richard Biener  <rguenther@suse.de>
32476         * tree-ssa-alias.cc (call_may_clobber_ref_p_1): For
32477         .MASK_STORE and friend set the size of the access to
32478         unknown.
32480 2023-06-12  Tamar Christina  <tamar.christina@arm.com>
32482         * config.in: Regenerate.
32483         * configure: Regenerate.
32484         * configure.ac: Remove DEFAULT_MATCHPD_PARTITIONS.
32486 2023-06-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32488         * config/riscv/autovec-opt.md
32489         (*v<any_shiftrt:optab><any_extend:optab>trunc<mode>): New pattern.
32490         (*<any_shiftrt:optab>trunc<mode>): Ditto.
32491         * config/riscv/autovec.md (<optab><mode>3): Change to
32492         define_insn_and_split.
32493         (v<optab><mode>3): Ditto.
32494         (trunc<mode><v_double_trunc>2): Ditto.
32496 2023-06-12  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
32498         * simplify-rtx.cc (simplify_const_unary_operation):
32499         Handle US_TRUNCATE, SS_TRUNCATE.
32501 2023-06-12  Eric Botcazou  <ebotcazou@adacore.com>
32503         PR modula2/109952
32504         * doc/gm2.texi (Standard procedures): Fix Next link.
32506 2023-06-12  Tamar Christina  <tamar.christina@arm.com>
32508         * config.in: Regenerate.
32510 2023-06-12  Andre Vieira  <andre.simoesdiasvieira@arm.com>
32512         PR middle-end/110142
32513         * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Don't pass
32514         subtype to vect_widened_op_tree and remove subtype parameter, also
32515         remove superfluous overloaded function definition.
32516         (vect_recog_widen_plus_pattern): Remove subtype parameter and dont pass
32517         to call to vect_recog_widen_op_pattern.
32518         (vect_recog_widen_minus_pattern): Likewise.
32520 2023-06-12  liuhongt  <hongtao.liu@intel.com>
32522         * config/i386/sse.md (vec_pack<floatprefix>_float_<mode>): New expander.
32523         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
32524         (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
32525         (vec_unpacks_lo_<mode>): Ditto.
32526         (vec_unpacks_hi_<mode>): Ditto.
32527         (sse_movlhps_<mode>): New define_insn.
32528         (ssse3_palignr<mode>_perm): Extend to V_128H.
32529         (V_128H): New mode iterator.
32530         (ssepackPHmode): New mode attribute.
32531         (vunpck_extract_mode): Ditto.
32532         (vpckfloat_concat_mode): Extend to VxSI/VxSF for _Float16.
32533         (vpckfloat_temp_mode): Ditto.
32534         (vpckfloat_op_mode): Ditto.
32535         (vunpckfixt_mode): Extend to VxHF.
32536         (vunpckfixt_model): Ditto.
32537         (vunpckfixt_extract_mode): Ditto.
32539 2023-06-12  Richard Biener  <rguenther@suse.de>
32541         PR middle-end/110200
32542         * genmatch.cc (expr::gen_transform): Put braces around
32543         the if arm for the (convert ...) short-cut.
32545 2023-06-12  Kewen Lin  <linkw@linux.ibm.com>
32547         PR target/109932
32548         * config/rs6000/rs6000-builtins.def (__builtin_pack_vector_int128,
32549         __builtin_unpack_vector_int128): Move from stanza power7 to vsx.
32551 2023-06-12  Kewen Lin  <linkw@linux.ibm.com>
32553         PR target/110011
32554         * config/rs6000/rs6000.cc (output_toc): Use the mode of the 128-bit
32555         floating constant itself for real_to_target call.
32557 2023-06-12  Pan Li  <pan2.li@intel.com>
32559         * config/riscv/riscv-vector-builtins-types.def
32560         (vfloat16mf4_t): Add type to X2/X4/X8/X16/X32 vlmul ext ops.
32561         (vfloat16mf2_t): Ditto.
32562         (vfloat16m1_t): Ditto.
32563         (vfloat16m2_t): Ditto.
32564         (vfloat16m4_t): Ditto.
32566 2023-06-12  David Edelsohn  <dje.gcc@gmail.com>
32568         * config/rs6000/rs6000-logue.cc (rs6000_stack_info):
32569         Do not require a stack frame when debugging is enabled for AIX.
32571 2023-06-11  Georg-Johann Lay  <avr@gjlay.de>
32573         * config/avr/avr.md (adjust_len) [insv_notbit_0, insv_notbit_7]:
32574         Remove attribute values.
32575         (insv_notbit): New post-reload insn.
32576         (*insv.not-shiftrt_split, *insv.xor1-bit.0_split)
32577         (*insv.not-bit.0_split, *insv.not-bit.7_split)
32578         (*insv.xor-extract_split): Split to insv_notbit.
32579         (*insv.not-shiftrt, *insv.xor1-bit.0, *insv.not-bit.0, *insv.not-bit.7)
32580         (*insv.xor-extract): Remove post-reload insns.
32581         * config/avr/avr.cc (avr_out_insert_notbit) [bitno]: Remove parameter.
32582         (avr_adjust_insn_length): Adjust call of avr_out_insert_notbit.
32583         [ADJUST_LEN_INSV_NOTBIT_0, ADJUST_LEN_INSV_NOTBIT_7]: Remove cases.
32584         * config/avr/avr-protos.h (avr_out_insert_notbit): Adjust prototype.
32586 2023-06-11  Georg-Johann Lay  <avr@gjlay.de>
32588         PR target/109907
32589         * config/avr/avr.md (adjust_len) [extr, extr_not]: New elements.
32590         (MSB, SIZE): New mode attributes.
32591         (any_shift): New code iterator.
32592         (*lshr<mode>3_split, *lshr<mode>3, lshr<mode>3)
32593         (*lshr<mode>3_const_split): Add constraint alternative for
32594         the case of shift-offset = MSB.  Ditch "length" attribute.
32595         (extzv<mode): New. replaces extzv.  Adjust following patterns.
32596         Use avr_out_extr, avr_out_extr_not to print asm.
32597         (*extzv.subreg.<mode>, *extzv.<mode>.subreg, *extzv.xor)
32598         (*extzv<mode>.ge, *neg.ashiftrt<mode>.msb, *extzv.io.lsr7): New.
32599         * config/avr/constraints.md (C15, C23, C31, Yil): New
32600         * config/avr/predicates.md (reg_or_low_io_operand)
32601         (const7_operand, reg_or_low_io_operand)
32602         (const15_operand, const_0_to_15_operand)
32603         (const23_operand, const_0_to_23_operand)
32604         (const31_operand, const_0_to_31_operand): New.
32605         * config/avr/avr-protos.h (avr_out_extr, avr_out_extr_not): New.
32606         * config/avr/avr.cc (avr_out_extr, avr_out_extr_not): New funcs.
32607         (lshrqi3_out, lshrhi3_out, lshrpsi3_out, lshrsi3_out): Adjust
32608         MSB case to new insn constraint "r" for operands[1].
32609         (avr_adjust_insn_length) [ADJUST_LEN_EXTR_NOT, ADJUST_LEN_EXTR]:
32610         Handle these cases.
32611         (avr_rtx_costs_1): Adjust cost for a new pattern.
32613 2023-06-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32615         * config/riscv/riscv-vsetvl.cc (available_occurrence_p): Enhance user vsetvl optimization.
32616         (vector_insn_info::parse_insn): Add rtx_insn parse.
32617         (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance user vsetvl optimization.
32618         (get_first_vsetvl): New function.
32619         (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
32620         (pass_vsetvl::cleanup_insns): Remove it.
32621         (pass_vsetvl::ssa_post_optimization): New function.
32622         (has_no_uses): Ditto.
32623         (pass_vsetvl::propagate_avl): Remove it.
32624         (pass_vsetvl::df_post_optimization): New function.
32625         (pass_vsetvl::lazy_vsetvl): Rework Phase 5 && Phase 6.
32626         * config/riscv/riscv-vsetvl.h: Adapt declaration.
32628 2023-06-10  Aldy Hernandez  <aldyh@redhat.com>
32630         * ipa-cp.cc (ipcp_vr_lattice::init): Take type argument.
32631         (ipcp_vr_lattice::print): Call dump method.
32632         (ipcp_vr_lattice::meet_with): Adjust for m_vr being a
32633         Value_Range.
32634         (ipcp_vr_lattice::meet_with_1): Make argument a reference.
32635         (ipcp_vr_lattice::set_to_bottom): Set varying for an unsupported
32636         range.
32637         (initialize_node_lattices): Pass type when appropriate.
32638         (ipa_vr_operation_and_type_effects): Make type agnostic.
32639         (ipa_value_range_from_jfunc): Same.
32640         (propagate_vr_across_jump_function): Same.
32641         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
32642         (evaluate_properties_for_edge): Same.
32643         * ipa-prop.cc (ipa_vr::get_vrange): Same.
32644         (ipcp_update_vr): Same.
32645         * ipa-prop.h (ipa_value_range_from_jfunc): Same.
32646         (ipa_range_set_and_normalize): Same.
32648 2023-06-10  Georg-Johann Lay  <avr@gjlay.de>
32650         PR target/109650
32651         PR target/92729
32652         * config/avr/avr-passes.def (avr_pass_ifelse): Insert new pass.
32653         * config/avr/avr.cc (avr_pass_ifelse): New RTL pass.
32654         (avr_pass_data_ifelse): New pass_data for it.
32655         (make_avr_pass_ifelse, avr_redundant_compare, avr_cbranch_cost)
32656         (avr_canonicalize_comparison, avr_out_plus_set_ZN)
32657         (avr_out_cmp_ext): New functions.
32658         (compare_condtition): Make sure REG_CC dies in the branch insn.
32659         (avr_rtx_costs_1): Add computation of cbranch costs.
32660         (avr_adjust_insn_length) [ADJUST_LEN_ADD_SET_ZN, ADJUST_LEN_CMP_ZEXT]:
32661         [ADJUST_LEN_CMP_SEXT]Handle them.
32662         (TARGET_CANONICALIZE_COMPARISON): New define.
32663         (avr_simplify_comparison_p, compare_diff_p, avr_compare_pattern)
32664         (avr_reorg_remove_redundant_compare, avr_reorg): Remove functions.
32665         (TARGET_MACHINE_DEPENDENT_REORG): Remove define.
32666         * config/avr/avr-protos.h (avr_simplify_comparison_p): Remove proto.
32667         (make_avr_pass_ifelse, avr_out_plus_set_ZN, cc_reg_rtx)
32668         (avr_out_cmp_zext): New Protos
32669         * config/avr/avr.md (branch, difficult_branch): Don't split insns.
32670         (*cbranchhi.zero-extend.0", *cbranchhi.zero-extend.1")
32671         (*swapped_tst<mode>, *add.for.eqne.<mode>): New insns.
32672         (*cbranch<mode>4): Rename to cbranch<mode>4_insn.
32673         (define_peephole): Add dead_or_set_regno_p(insn,REG_CC) as needed.
32674         (define_deephole2): Add peep2_regno_dead_p(*,REG_CC) as needed.
32675         Add new RTL peepholes for decrement-and-branch and *swapped_tst<mode>.
32676         Rework signtest-and-branch peepholes for *sbrx_branch<mode>.
32677         (adjust_len) [add_set_ZN, cmp_zext]: New.
32678         (QIPSI): New mode iterator.
32679         (ALLs1, ALLs2, ALLs4, ALLs234): New mode iterators.
32680         (gelt): New code iterator.
32681         (gelt_eqne): New code attribute.
32682         (rvbranch, *rvbranch, difficult_rvbranch, *difficult_rvbranch)
32683         (branch_unspec, *negated_tst<mode>, *reversed_tst<mode>)
32684         (*cmpqi_sign_extend): Remove insns.
32685         (define_c_enum "unspec") [UNSPEC_IDENTITY]: Remove.
32686         * config/avr/avr-dimode.md (cbranch<mode>4): Canonicalize comparisons.
32687         * config/avr/predicates.md (scratch_or_d_register_operand): New.
32688         * config/avr/constraints.md (Yxx): New constraint.
32690 2023-06-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
32692         * config/riscv/autovec.md (select_vl<mode>): New pattern.
32693         * config/riscv/riscv-protos.h (expand_select_vl): New function.
32694         * config/riscv/riscv-v.cc (expand_select_vl): Ditto.
32696 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
32698         * range-op-float.cc (foperator_mult_div_base): Delete.
32699         (foperator_mult_div_base::find_range): Make static local function.
32700         (foperator_mult): Remove.  Move prototypes to range-op-mixed.h
32701         (operator_mult::op1_range): Rename from foperator_mult.
32702         (operator_mult::op2_range): Ditto.
32703         (operator_mult::rv_fold): Ditto.
32704         (float_table::float_table): Remove MULT_EXPR.
32705         (class foperator_div): Inherit from range_operator.
32706         (float_table::float_table): Delete.
32707         * range-op-mixed.h (class operator_mult): Combined from integer
32708         and float files.
32709         * range-op.cc (float_tree_table): Delete.
32710         (op_mult): New object.
32711         (unified_table::unified_table): Add MULT_EXPR.
32712         (get_op_handler): Do not check float table any longer.
32713         (class cross_product_operator): Move to range-op-mixed.h.
32714         (class operator_mult): Move to range-op-mixed.h.
32715         (integral_table::integral_table): Remove MULT_EXPR.
32716         (pointer_table::pointer_table): Remove MULT_EXPR.
32717         * range-op.h (float_table): Remove.
32719 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
32721         * range-op-float.cc (foperator_negate): Remove.  Move prototypes
32722         to range-op-mixed.h
32723         (operator_negate::fold_range): Rename from foperator_negate.
32724         (operator_negate::op1_range): Ditto.
32725         (float_table::float_table): Remove NEGATE_EXPR.
32726         * range-op-mixed.h (class operator_negate): Combined from integer
32727         and float files.
32728         * range-op.cc (op_negate): New object.
32729         (unified_table::unified_table): Add NEGATE_EXPR.
32730         (class operator_negate): Move to range-op-mixed.h.
32731         (integral_table::integral_table): Remove NEGATE_EXPR.
32732         (pointer_table::pointer_table): Remove NEGATE_EXPR.
32734 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
32736         * range-op-float.cc (foperator_minus): Remove.  Move prototypes
32737         to range-op-mixed.h
32738         (operator_minus::fold_range): Rename from foperator_minus.
32739         (operator_minus::op1_range): Ditto.
32740         (operator_minus::op2_range): Ditto.
32741         (operator_minus::rv_fold): Ditto.
32742         (float_table::float_table): Remove MINUS_EXPR.
32743         * range-op-mixed.h (class operator_minus): Combined from integer
32744         and float files.
32745         * range-op.cc (op_minus): New object.
32746         (unified_table::unified_table): Add MINUS_EXPR.
32747         (class operator_minus): Move to range-op-mixed.h.
32748         (integral_table::integral_table): Remove MINUS_EXPR.
32749         (pointer_table::pointer_table): Remove MINUS_EXPR.
32751 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
32753         * range-op-float.cc (foperator_abs): Remove.  Move prototypes
32754         to range-op-mixed.h
32755         (operator_abs::fold_range): Rename from foperator_abs.
32756         (operator_abs::op1_range): Ditto.
32757         (float_table::float_table): Remove ABS_EXPR.
32758         * range-op-mixed.h (class operator_abs): Combined from integer
32759         and float files.
32760         * range-op.cc (op_abs): New object.
32761         (unified_table::unified_table): Add ABS_EXPR.
32762         (class operator_abs): Move to range-op-mixed.h.
32763         (integral_table::integral_table): Remove ABS_EXPR.
32764         (pointer_table::pointer_table): Remove ABS_EXPR.
32766 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
32768         * range-op-float.cc (foperator_plus): Remove.  Move prototypes
32769         to range-op-mixed.h
32770         (operator_plus::fold_range): Rename from foperator_plus.
32771         (operator_plus::op1_range): Ditto.
32772         (operator_plus::op2_range): Ditto.
32773         (operator_plus::rv_fold): Ditto.
32774         (float_table::float_table): Remove PLUS_EXPR.
32775         * range-op-mixed.h (class operator_plus): Combined from integer
32776         and float files.
32777         * range-op.cc (op_plus): New object.
32778         (unified_table::unified_table): Add PLUS_EXPR.
32779         (class operator_plus): Move to range-op-mixed.h.
32780         (integral_table::integral_table): Remove PLUS_EXPR.
32781         (pointer_table::pointer_table): Remove PLUS_EXPR.
32783 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
32785         * range-op-mixed.h (class operator_cast): Combined from integer
32786         and float files.
32787         * range-op.cc (op_cast): New object.
32788         (unified_table::unified_table): Add op_cast
32789         (class operator_cast): Move to range-op-mixed.h.
32790         (integral_table::integral_table): Remove op_cast
32791         (pointer_table::pointer_table): Remove op_cast.
32793 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
32795         * range-op-float.cc (operator_cst::fold_range): New.
32796         * range-op-mixed.h (class operator_cst): Move from integer file.
32797         * range-op.cc (op_cst): New object.
32798         (unified_table::unified_table): Add op_cst. Also use for REAL_CST.
32799         (class operator_cst): Move to range-op-mixed.h.
32800         (integral_table::integral_table): Remove op_cst.
32801         (pointer_table::pointer_table): Remove op_cst.
32803 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
32805         * range-op-float.cc (foperator_identity): Remove.  Move prototypes
32806         to range-op-mixed.h
32807         (operator_identity::fold_range): Rename from foperator_identity.
32808         (operator_identity::op1_range): Ditto.
32809         (float_table::float_table): Remove fop_identity.
32810         * range-op-mixed.h (class operator_identity): Combined from integer
32811         and float files.
32812         * range-op.cc (op_identity): New object.
32813         (unified_table::unified_table): Add op_identity.
32814         (class operator_identity): Move to range-op-mixed.h.
32815         (integral_table::integral_table): Remove identity.
32816         (pointer_table::pointer_table): Remove identity.
32818 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
32820         * range-op-float.cc (foperator_ge): Remove.  Move prototypes
32821         to range-op-mixed.h
32822         (operator_ge::fold_range): Rename from foperator_ge.
32823         (operator_ge::op1_range): Ditto.
32824         (float_table::float_table): Remove GE_EXPR.
32825         * range-op-mixed.h (class operator_ge): Combined from integer
32826         and float files.
32827         * range-op.cc (op_ge): New object.
32828         (unified_table::unified_table): Add GE_EXPR.
32829         (class operator_ge): Move to range-op-mixed.h.
32830         (ge_op1_op2_relation): Fold into
32831         operator_ge::op1_op2_relation.
32832         (integral_table::integral_table): Remove GE_EXPR.
32833         (pointer_table::pointer_table): Remove GE_EXPR.
32834         * range-op.h (ge_op1_op2_relation): Delete.
32836 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
32838         * range-op-float.cc (foperator_gt): Remove.  Move prototypes
32839         to range-op-mixed.h
32840         (operator_gt::fold_range): Rename from foperator_gt.
32841         (operator_gt::op1_range): Ditto.
32842         (float_table::float_table): Remove GT_EXPR.
32843         * range-op-mixed.h (class operator_gt): Combined from integer
32844         and float files.
32845         * range-op.cc (op_gt): New object.
32846         (unified_table::unified_table): Add GT_EXPR.
32847         (class operator_gt): Move to range-op-mixed.h.
32848         (gt_op1_op2_relation): Fold into
32849         operator_gt::op1_op2_relation.
32850         (integral_table::integral_table): Remove GT_EXPR.
32851         (pointer_table::pointer_table): Remove GT_EXPR.
32852         * range-op.h (gt_op1_op2_relation): Delete.
32854 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
32856         * range-op-float.cc (foperator_le): Remove.  Move prototypes
32857         to range-op-mixed.h
32858         (operator_le::fold_range): Rename from foperator_le.
32859         (operator_le::op1_range): Ditto.
32860         (float_table::float_table): Remove LE_EXPR.
32861         * range-op-mixed.h (class operator_le): Combined from integer
32862         and float files.
32863         * range-op.cc (op_le): New object.
32864         (unified_table::unified_table): Add LE_EXPR.
32865         (class operator_le): Move to range-op-mixed.h.
32866         (le_op1_op2_relation): Fold into
32867         operator_le::op1_op2_relation.
32868         (integral_table::integral_table): Remove LE_EXPR.
32869         (pointer_table::pointer_table): Remove LE_EXPR.
32870         * range-op.h (le_op1_op2_relation): Delete.
32872 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
32874         * range-op-float.cc (foperator_lt): Remove.  Move prototypes
32875         to range-op-mixed.h
32876         (operator_lt::fold_range): Rename from foperator_lt.
32877         (operator_lt::op1_range): Ditto.
32878         (float_table::float_table): Remove LT_EXPR.
32879         * range-op-mixed.h (class operator_lt): Combined from integer
32880         and float files.
32881         * range-op.cc (op_lt): New object.
32882         (unified_table::unified_table): Add LT_EXPR.
32883         (class operator_lt): Move to range-op-mixed.h.
32884         (lt_op1_op2_relation): Fold into
32885         operator_lt::op1_op2_relation.
32886         (integral_table::integral_table): Remove LT_EXPR.
32887         (pointer_table::pointer_table): Remove LT_EXPR.
32888         * range-op.h (lt_op1_op2_relation): Delete.
32890 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
32892         * range-op-float.cc (foperator_not_equal): Remove.  Move prototypes
32893         to range-op-mixed.h
32894         (operator_equal::fold_range): Rename from foperator_not_equal.
32895         (operator_equal::op1_range): Ditto.
32896         (float_table::float_table): Remove NE_EXPR.
32897         * range-op-mixed.h (class operator_not_equal): Combined from integer
32898         and float files.
32899         * range-op.cc (op_equal): New object.
32900         (unified_table::unified_table): Add NE_EXPR.
32901         (class operator_not_equal): Move to range-op-mixed.h.
32902         (not_equal_op1_op2_relation): Fold into
32903         operator_not_equal::op1_op2_relation.
32904         (integral_table::integral_table): Remove NE_EXPR.
32905         (pointer_table::pointer_table): Remove NE_EXPR.
32906         * range-op.h (not_equal_op1_op2_relation): Delete.
32908 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
32910         * range-op-float.cc (foperator_equal): Remove.  Move prototypes
32911         to range-op-mixed.h
32912         (operator_equal::fold_range): Rename from foperator_equal.
32913         (operator_equal::op1_range): Ditto.
32914         (float_table::float_table): Remove EQ_EXPR.
32915         * range-op-mixed.h (class operator_equal): Combined from integer
32916         and float files.
32917         * range-op.cc (op_equal): New object.
32918         (unified_table::unified_table): Add EQ_EXPR.
32919         (class operator_equal): Move to range-op-mixed.h.
32920         (equal_op1_op2_relation): Fold into
32921         operator_equal::op1_op2_relation.
32922         (integral_table::integral_table): Remove EQ_EXPR.
32923         (pointer_table::pointer_table): Remove EQ_EXPR.
32924         * range-op.h (equal_op1_op2_relation): Delete.
32926 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
32928         * range-op-float.cc (class float_table): Move to header.
32929         (float_table::float_table): Move float only operators to...
32930         (range_op_table::initialize_float_ops): Here.
32931         * range-op-mixed.h: New.
32932         * range-op.cc (integral_tree_table, pointer_tree_table): Moved
32933         to top of file.
32934         (float_tree_table): Moved from range-op-float.cc.
32935         (unified_tree_table): New.
32936         (unified_table::unified_table): New.  Call initialize routines.
32937         (get_op_handler): Check unified table first.
32938         (range_op_handler::range_op_handler): Handle no type constructor.
32939         (integral_table::integral_table): Move integral only operators to...
32940         (range_op_table::initialize_integral_ops): Here.
32941         (pointer_table::pointer_table): Move pointer only operators to...
32942         (range_op_table::initialize_pointer_ops): Here.
32943         * range-op.h (enum bool_range_state): Move to range-op-mixed.h.
32944         (get_bool_state): Ditto.
32945         (empty_range_varying): Ditto.
32946         (relop_early_resolve): Ditto.
32947         (class range_op_table): Add new init methods for range types.
32948         (class integral_table): Move declaration to here.
32949         (class pointer_table): Move declaration to here.
32950         (class float_table): Move declaration to here.
32952 2023-06-09  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
32953             Richard Sandiford <richard.sandiford@arm.com>
32954             Richard Biener  <rguenther@suse.de>
32956         * doc/md.texi: Add SELECT_VL support.
32957         * internal-fn.def (SELECT_VL): Ditto.
32958         * optabs.def (OPTAB_D): Ditto.
32959         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Ditto.
32960         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Ditto.
32961         * tree-vect-stmts.cc (get_select_vl_data_ref_ptr): Ditto.
32962         (vectorizable_store): Ditto.
32963         (vectorizable_load): Ditto.
32964         * tree-vectorizer.h (LOOP_VINFO_USING_SELECT_VL_P): Ditto.
32966 2023-06-09  Andrew MacLeod  <amacleod@redhat.com>
32968         PR ipa/109886
32969         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Check param
32970         type as well.
32972 2023-06-09  Andrew MacLeod  <amacleod@redhat.com>
32974         * range-op.cc (range_cast): Move to...
32975         * range-op.h (range_cast): Here and add generic a version.
32977 2023-06-09  Marek Polacek  <polacek@redhat.com>
32979         PR c/39589
32980         PR c++/96868
32981         * doc/invoke.texi: Clarify that -Wmissing-field-initializers doesn't
32982         warn about designated initializers in C only.
32984 2023-06-09  Andrew Pinski  <apinski@marvell.com>
32986         PR tree-optimization/97711
32987         PR tree-optimization/110155
32988         * match.pd ((zero_one == 0) ? y : z <op> y): Add plus to the op.
32989         ((zero_one != 0) ? z <op> y : y): Likewise.
32991 2023-06-09  Andrew Pinski  <apinski@marvell.com>
32993         * match.pd ((zero_one ==/!= 0) ? y : z <op> y): Use
32994         multiply rather than negation/bit_and.
32996 2023-06-09  Andrew Pinski  <apinski@marvell.com>
32998         * match.pd (`X & -Y -> X * Y`): Allow for truncation
32999         and the same type for unsigned types.
33001 2023-06-09  Andrew Pinski  <apinski@marvell.com>
33003         PR tree-optimization/110165
33004         PR tree-optimization/110166
33005         * match.pd (zero_one_valued_p): Don't accept
33006         signed 1-bit integers.
33008 2023-06-09  Richard Biener  <rguenther@suse.de>
33010         * match.pd (two conversions in a row): Use element_precision
33011         to DTRT for VECTOR_TYPE.
33013 2023-06-09  Pan Li  <pan2.li@intel.com>
33015         * config/riscv/riscv.md (enabled): Move to another place, and
33016         add fp_vector_disabled to the cond.
33017         (fp_vector_disabled): New attr defined for disabling fp.
33018         * config/riscv/vector-iterators.md: Fix V_WHOLE and V_FRACT.
33020 2023-06-09  Pan Li  <pan2.li@intel.com>
33022         * config/riscv/riscv-protos.h (enum frm_field_enum): Adjust
33023         literal to int.
33025 2023-06-09  liuhongt  <hongtao.liu@intel.com>
33027         PR target/110108
33028         * config/i386/i386.cc (ix86_gimple_fold_builtin): Explicitly
33029         view_convert_expr mask to signed type when folding pblendvb
33030         builtins.
33032 2023-06-09  liuhongt  <hongtao.liu@intel.com>
33034         PR target/110108
33035         * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
33036         _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} into gimple
33037         ABSU_EXPR + VCE, don't fold _mm_abs_{pi8,pi16,pi32} w/o
33038         TARGET_64BIT.
33039         * config/i386/i386-builtin.def: Replace CODE_FOR_nothing with
33040         real codename for __builtin_ia32_pabs{b,w,d}.
33042 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
33044         * gimple-range-op.cc
33045         (gimple_range_op_handler::gimple_range_op_handler): Adjust.
33046         (gimple_range_op_handler::maybe_builtin_call): Adjust.
33047         * gimple-range-op.h (operand1, operand2): Use m_operator.
33048         * range-op.cc (integral_table, pointer_table): Relocate.
33049         (get_op_handler): Rename from get_handler and handle all types.
33050         (range_op_handler::range_op_handler): Relocate.
33051         (range_op_handler::set_op_handler): Relocate and adjust.
33052         (range_op_handler::range_op_handler): Relocate.
33053         (dispatch_trio): New.
33054         (RO_III, RO_IFI, RO_IFF, RO_FFF, RO_FIF, RO_FII): New consts.
33055         (range_op_handler::dispatch_kind): New.
33056         (range_op_handler::fold_range): Relocate and Use new dispatch value.
33057         (range_op_handler::op1_range): Ditto.
33058         (range_op_handler::op2_range): Ditto.
33059         (range_op_handler::lhs_op1_relation): Ditto.
33060         (range_op_handler::lhs_op2_relation): Ditto.
33061         (range_op_handler::op1_op2_relation): Ditto.
33062         (range_op_handler::set_op_handler): Use m_operator member.
33063         * range-op.h (range_op_handler::operator bool): Use m_operator.
33064         (range_op_handler::dispatch_kind): New.
33065         (range_op_handler::m_valid): Delete.
33066         (range_op_handler::m_int): Delete
33067         (range_op_handler::m_float): Delete
33068         (range_op_handler::m_operator): New.
33069         (range_op_table::operator[]): Relocate from .cc file.
33070         (range_op_table::set): Ditto.
33071         * value-range.h (class vrange): Make range_op_handler a friend.
33073 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
33075         * gimple-range-op.cc (cfn_constant_float_p): Change base class.
33076         (cfn_pass_through_arg1): Adjust using statemenmt.
33077         (cfn_signbit): Change base class, adjust using statement.
33078         (cfn_copysign): Ditto.
33079         (cfn_sqrt): Ditto.
33080         (cfn_sincos): Ditto.
33081         * range-op-float.cc (fold_range): Change class to range_operator.
33082         (rv_fold): Ditto.
33083         (op1_range): Ditto
33084         (op2_range): Ditto
33085         (lhs_op1_relation): Ditto.
33086         (lhs_op2_relation): Ditto.
33087         (op1_op2_relation): Ditto.
33088         (foperator_*): Ditto.
33089         (class float_table): New.  Inherit from range_op_table.
33090         (floating_tree_table) Change to range_op_table pointer.
33091         (class floating_op_table): Delete.
33092         * range-op.cc (operator_equal): Adjust using statement.
33093         (operator_not_equal): Ditto.
33094         (operator_lt, operator_le, operator_gt, operator_ge): Ditto.
33095         (operator_minus, operator_cast): Ditto.
33096         (operator_bitwise_and, pointer_plus_operator): Ditto.
33097         (get_float_handle): Change return type.
33098         * range-op.h (range_operator_float): Delete.  Relocate all methods
33099         into class range_operator.
33100         (range_op_handler::m_float): Change type to range_operator.
33101         (floating_op_table): Delete.
33102         (floating_tree_table): Change type.
33104 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
33106         * range-op.cc (range_operator::fold_range): Call virtual routine.
33107         (range_operator::update_bitmask): New.
33108         (operator_equal::update_bitmask): New.
33109         (operator_not_equal::update_bitmask): New.
33110         (operator_lt::update_bitmask): New.
33111         (operator_le::update_bitmask): New.
33112         (operator_gt::update_bitmask): New.
33113         (operator_ge::update_bitmask): New.
33114         (operator_ge::update_bitmask): New.
33115         (operator_plus::update_bitmask): New.
33116         (operator_minus::update_bitmask): New.
33117         (operator_pointer_diff::update_bitmask): New.
33118         (operator_min::update_bitmask): New.
33119         (operator_max::update_bitmask): New.
33120         (operator_mult::update_bitmask): New.
33121         (operator_div:operator_div):New.
33122         (operator_div::update_bitmask): New.
33123         (operator_div::m_code): New member.
33124         (operator_exact_divide::operator_exact_divide): New constructor.
33125         (operator_lshift::update_bitmask): New.
33126         (operator_rshift::update_bitmask): New.
33127         (operator_bitwise_and::update_bitmask): New.
33128         (operator_bitwise_or::update_bitmask): New.
33129         (operator_bitwise_xor::update_bitmask): New.
33130         (operator_trunc_mod::update_bitmask): New.
33131         (op_ident, op_unknown, op_ptr_min_max): New.
33132         (op_nop, op_convert): Delete.
33133         (op_ssa, op_paren, op_obj_type): Delete.
33134         (op_realpart, op_imagpart): Delete.
33135         (op_ptr_min, op_ptr_max): Delete.
33136         (pointer_plus_operator:update_bitmask): New.
33137         (range_op_table::set): Do not use m_code.
33138         (integral_table::integral_table): Adjust to single instances.
33139         * range-op.h (range_operator::range_operator): Delete.
33140         (range_operator::m_code): Delete.
33141         (range_operator::update_bitmask): New.
33143 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
33145         * range-op-float.cc (range_operator_float::fold_range): Return
33146         NAN of the result type.
33148 2023-06-08  Jakub Jelinek  <jakub@redhat.com>
33150         * optabs.cc (expand_ffs): Add forward declaration.
33151         (expand_doubleword_clz): Rename to ...
33152         (expand_doubleword_clz_ctz_ffs): ... this.  Add UNOPTAB argument,
33153         handle also doubleword CTZ and FFS in addition to CLZ.
33154         (expand_unop): Adjust caller.  Also call it for doubleword
33155         ctz_optab and ffs_optab.
33157 2023-06-08  Jakub Jelinek  <jakub@redhat.com>
33159         PR target/110152
33160         * config/i386/i386-expand.cc (ix86_expand_vector_init_general): For
33161         n_words == 2 recurse with mmx_ok as first argument rather than false.
33163 2023-06-07  Roger Sayle  <roger@nextmovesoftware.com>
33165         * wide-int.cc (wi::bitreverse_large): Use HOST_WIDE_INT_1U to
33166         avoid sign extension/undefined behaviour when setting each bit.
33168 2023-06-07  Roger Sayle  <roger@nextmovesoftware.com>
33169             Uros Bizjak  <ubizjak@gmail.com>
33171         * config/i386/i386-expand.cc (ix86_expand_builtin) <handlecarry>:
33172         Use new x86_stc instruction when the carry flag must be set.
33173         * config/i386/i386.cc (ix86_cc_mode): Use CCCmode for *x86_cmc.
33174         (ix86_rtx_costs): Provide accurate rtx_costs for *x86_cmc.
33175         * config/i386/i386.h (TARGET_SLOW_STC): New define.
33176         * config/i386/i386.md (UNSPEC_STC): New UNSPEC for stc.
33177         (x86_stc): New define_insn.
33178         (define_peephole2): Convert x86_stc into alternate implementation
33179         on pentium4 without -Os when a QImode register is available.
33180         (*x86_cmc): New define_insn.
33181         (define_peephole2): Convert *x86_cmc into alternate implementation
33182         on pentium4 without -Os when a QImode register is available.
33183         (*setccc): New define_insn_and_split for a no-op CCCmode move.
33184         (*setcc_qi_negqi_ccc_1_<mode>): New define_insn_and_split to
33185         recognize (and eliminate) the carry flag being copied to itself.
33186         (*setcc_qi_negqi_ccc_2_<mode>): Likewise.
33187         * config/i386/x86-tune.def (X86_TUNE_SLOW_STC): New tuning flag.
33189 2023-06-07  Andrew Pinski  <apinski@marvell.com>
33191         * match.pd: Fix comment for the
33192         `(zero_one ==/!= 0) ? y : z <op> y` patterns.
33194 2023-06-07  Jeff Law  <jlaw@ventanamicro.com>
33195             Jeff Law   <jlaw@ventanamicro.com>
33197         * config/riscv/bitmanip.md (rotrdi3, rotrsi3, rotlsi3): New expanders.
33198         (rotrsi3_sext): Expose generator.
33199         (rotlsi3 pattern): Hide generator.
33200         * config/riscv/riscv-protos.h (riscv_emit_binary): New function
33201         declaration.
33202         * config/riscv/riscv.cc (riscv_emit_binary): Removed static
33203         * config/riscv/riscv.md (addsi3, subsi3, negsi2): Hide generator.
33204         (mulsi3, <optab>si3): Likewise.
33205         (addsi3, subsi3, negsi2, mulsi3, <optab>si3): New expanders.
33206         (addv<mode>4, subv<mode>4, mulv<mode>4): Use riscv_emit_binary.
33207         (<u>mulsidi3): Likewise.
33208         (addsi3_extended, subsi3_extended, negsi2_extended): Expose generator.
33209         (mulsi3_extended, <optab>si3_extended): Likewise.
33210         (splitter for shadd feeding divison): Update RTL pattern to account
33211         for changes in how 32 bit ops are expanded for TARGET_64BIT.
33212         * loop-iv.cc (get_biv_step_1): Process src of extension when it PLUS.
33214 2023-06-07  Dimitar Dimitrov  <dimitar@dinux.eu>
33216         PR target/109725
33217         * config/riscv/riscv.cc (riscv_print_operand): Calculate
33218         memmodel only when it is valid.
33220 2023-06-07  Dimitar Dimitrov  <dimitar@dinux.eu>
33222         * config/riscv/riscv.cc (riscv_const_insns): Recursively call
33223         for constant element of a vector.
33225 2023-06-07  Jakub Jelinek  <jakub@redhat.com>
33227         * match.pd (zero_one_valued_p): Don't handle integer_zerop specially,
33228         instead compare tree_nonzero_bits <= 1U rather than just == 1.
33230 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
33232         PR target/110132
33233         * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin):
33234         New. Use it ...
33235         (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE
33236         names for builtins.
33237         (aarch64_general_init_builtins): Ensure we invoke the arm_acle.h
33238         setup if in_lto_p, just like we do for SVE.
33239         * config/aarch64/arm_acle.h: (__arm_ld64b): Delete.
33240         (__arm_st64b): Delete.
33241         (__arm_st64bv): Delete.
33242         (__arm_st64bv0): Delete.
33244 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
33246         PR target/110100
33247         * config/aarch64/aarch64-builtins.cc (aarch64_expand_builtin_ls64):
33248         Use input operand for the destination address.
33249         * config/aarch64/aarch64.md (st64b): Fix constraint on address
33250         operand.
33252 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
33254         PR target/110100
33255         * config/aarch64/aarch64-builtins.cc (aarch64_init_ls64_builtins_types):
33256         Replace eight consecutive spaces with tabs.
33257         (aarch64_init_ls64_builtins): Likewise.
33258         (aarch64_expand_builtin_ls64): Likewise.
33259         * config/aarch64/aarch64.md (ld64b): Likewise.
33260         (st64b): Likewise.
33261         (st64bv): Likewise
33262         (st64bv0): Likewise.
33264 2023-06-07  Vladimir N. Makarov  <vmakarov@redhat.com>
33266         * ira-costs.cc: (find_costs_and_classes): Constrain classes of pic
33267         offset table pseudo to a general reg subset.
33269 2023-06-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33271         * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode><vczle><vczbe>):
33272         Rename to...
33273         (*aarch64_sqmovun<mode>_insn<vczle><vczbe>): ... This.  Reimplement
33274         with RTL codes.
33275         (aarch64_sqmovun<mode> [SD_HSDI]): Reimplement with RTL codes.
33276         (aarch64_sqxtun2<mode>_le): Likewise.
33277         (aarch64_sqxtun2<mode>_be): Likewise.
33278         (aarch64_sqxtun2<mode>): Adjust for the above.
33279         (aarch64_sqmovun<mode>): New define_expand.
33280         * config/aarch64/iterators.md (UNSPEC_SQXTUN): Delete.
33281         (half_mask): New mode attribute.
33282         * config/aarch64/predicates.md (aarch64_simd_umax_half_mode):
33283         New predicate.
33285 2023-06-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33287         * config/aarch64/aarch64-simd.md (aarch64_addp<mode><vczle><vczbe>):
33288         Reimplement as...
33289         (aarch64_addp<mode>_insn): ... This...
33290         (aarch64_addp<mode><vczle><vczbe>_insn): ... And this.
33291         (aarch64_addp<mode>): New define_expand.
33293 2023-06-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33295         * config/riscv/riscv-protos.h (expand_vec_perm_const): New function.
33296         * config/riscv/riscv-v.cc
33297         (rvv_builder::can_duplicate_repeating_sequence_p): Support POLY
33298         handling.
33299         (rvv_builder::single_step_npatterns_p): New function.
33300         (rvv_builder::npatterns_all_equal_p): Ditto.
33301         (const_vec_all_in_range_p): Support POLY handling.
33302         (gen_const_vector_dup): Ditto.
33303         (emit_vlmax_gather_insn): Add vrgatherei16.
33304         (emit_vlmax_masked_gather_mu_insn): Ditto.
33305         (expand_const_vector): Add VLA SLP const vector support.
33306         (expand_vec_perm): Support POLY.
33307         (struct expand_vec_perm_d): New struct.
33308         (shuffle_generic_patterns): New function.
33309         (expand_vec_perm_const_1): Ditto.
33310         (expand_vec_perm_const): Ditto.
33311         * config/riscv/riscv.cc (riscv_vectorize_vec_perm_const): Ditto.
33312         (TARGET_VECTORIZE_VEC_PERM_CONST): New targethook.
33314 2023-06-07  Andrew Pinski  <apinski@marvell.com>
33316         PR middle-end/110117
33317         * expr.cc (expand_single_bit_test): Handle
33318         const_int from expand_expr.
33320 2023-06-07  Andrew Pinski  <apinski@marvell.com>
33322         * expr.cc (do_store_flag): Rearrange the
33323         TER code so that it overrides the nonzero bits
33324         info if we had `a & POW2`.
33326 2023-06-07  Andrew Pinski  <apinski@marvell.com>
33328         PR tree-optimization/110134
33329         * match.pd (-A CMP -B -> B CMP A): Allow EQ/NE for all integer
33330         types.
33331         (-A CMP CST -> B CMP (-CST)): Likewise.
33333 2023-06-07  Andrew Pinski  <apinski@marvell.com>
33335         PR tree-optimization/89263
33336         PR tree-optimization/99069
33337         PR tree-optimization/20083
33338         PR tree-optimization/94898
33339         * match.pd: Add patterns to optimize `a ? onezero : onezero` with
33340         one of the operands are constant.
33342 2023-06-07  Andrew Pinski  <apinski@marvell.com>
33344         * match.pd (zero_one_valued_p): Match 0 integer constant
33345         too.
33347 2023-06-07  Pan Li  <pan2.li@intel.com>
33349         * config/riscv/riscv-vector-builtins-types.def
33350         (vfloat32mf2_t): Take RVV_REQUIRE_ELEN_FP_16 as requirement.
33351         (vfloat32m1_t): Ditto.
33352         (vfloat32m2_t): Ditto.
33353         (vfloat32m4_t): Ditto.
33354         (vfloat32m8_t): Ditto.
33355         (vint16mf4_t): Ditto.
33356         (vint16mf2_t): Ditto.
33357         (vint16m1_t): Ditto.
33358         (vint16m2_t): Ditto.
33359         (vint16m4_t): Ditto.
33360         (vint16m8_t): Ditto.
33361         (vuint16mf4_t): Ditto.
33362         (vuint16mf2_t): Ditto.
33363         (vuint16m1_t): Ditto.
33364         (vuint16m2_t): Ditto.
33365         (vuint16m4_t): Ditto.
33366         (vuint16m8_t): Ditto.
33367         (vint32mf2_t): Ditto.
33368         (vint32m1_t): Ditto.
33369         (vint32m2_t): Ditto.
33370         (vint32m4_t): Ditto.
33371         (vint32m8_t): Ditto.
33372         (vuint32mf2_t): Ditto.
33373         (vuint32m1_t): Ditto.
33374         (vuint32m2_t): Ditto.
33375         (vuint32m4_t): Ditto.
33376         (vuint32m8_t): Ditto.
33378 2023-06-07  Jason Merrill  <jason@redhat.com>
33380         PR c++/58487
33381         * doc/invoke.texi: Document it.
33383 2023-06-06  Roger Sayle  <roger@nextmovesoftware.com>
33385         * doc/rtl.texi (bitreverse, copysign): Document new RTX codes.
33386         * rtl.def (BITREVERSE, COPYSIGN): Define new RTX codes.
33387         * simplify-rtx.cc (simplify_unary_operation_1): Optimize
33388         NOT (BITREVERSE x) as BITREVERSE (NOT x).
33389         Optimize POPCOUNT (BITREVERSE x) as POPCOUNT x.
33390         Optimize PARITY (BITREVERSE x) as PARITY x.
33391         Optimize BITREVERSE (BITREVERSE x) as x.
33392         (simplify_const_unary_operation) <case BITREVERSE>: Evaluate
33393         BITREVERSE of a constant integer at compile-time.
33394         (simplify_binary_operation_1) <case COPYSIGN>:  Optimize
33395         COPY_SIGN (x, x) as x.  Optimize COPYSIGN (x, C) as ABS x
33396         or NEG (ABS x) for constant C.  Optimize COPYSIGN (ABS x, y)
33397         and COPYSIGN (NEG x, y) as COPYSIGN (x, y).
33398         Optimize COPYSIGN (x, ABS y) as ABS x.
33399         Optimize COPYSIGN (COPYSIGN (x, y), z) as COPYSIGN (x, z).
33400         Optimize COPYSIGN (x, COPYSIGN (y, z)) as COPYSIGN (x, z).
33401         (simplify_const_binary_operation): Evaluate COPYSIGN of constant
33402         arguments at compile-time.
33404 2023-06-06  Uros Bizjak  <ubizjak@gmail.com>
33406         * rtl.h (function_invariant_p): Change return type from int to bool.
33407         * reload1.cc (function_invariant_p): Change return type from
33408         int to bool and adjust function body accordingly.
33410 2023-06-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33412         * config/riscv/autovec-opt.md (*<optab>_fma<mode>): New pattern.
33413         (*single_<optab>mult_plus<mode>): Ditto.
33414         (*double_<optab>mult_plus<mode>): Ditto.
33415         (*sign_zero_extend_fma): Ditto.
33416         (*zero_sign_extend_fma): Ditto.
33417         * config/riscv/riscv-protos.h (enum insn_type): New enum.
33419 2023-06-06  Kwok Cheung Yeung  <kcy@codesourcery.com>
33420             Tobias Burnus  <tobias@codesourcery.com>
33422         * gimplify.cc (omp_notice_variable): Apply GOVD_MAP_ALLOC_ONLY flag
33423         and defaultmap flags if the defaultmap has GOVD_MAP_FORCE_PRESENT flag
33424         set.
33425         (omp_get_attachment): Handle map clauses with 'present' modifier.
33426         (omp_group_base): Likewise.
33427         (gimplify_scan_omp_clauses): Reorder present maps to come first.
33428         Set GOVD flags for present defaultmaps.
33429         (gimplify_adjust_omp_clauses_1): Set map kind for present defaultmaps.
33430         * omp-low.cc (scan_sharing_clauses): Handle 'always, present' map
33431         clauses.
33432         (lower_omp_target): Handle map clauses with 'present' modifier.
33433         Handle 'to' and 'from' clauses with 'present'.
33434         * tree-core.h (enum omp_clause_defaultmap_kind): Add
33435         OMP_CLAUSE_DEFAULTMAP_PRESENT defaultmap kind.
33436         * tree-pretty-print.cc (dump_omp_clause): Handle 'map', 'to' and
33437         'from' clauses with 'present' modifier.  Handle present defaultmap.
33438         * tree.h (OMP_CLAUSE_MOTION_PRESENT): New #define.
33440 2023-06-06  Segher Boessenkool  <segher@kernel.crashing.org>
33442         * config/rs6000/genfusion.pl: Delete some dead code.
33444 2023-06-06  Segher Boessenkool  <segher@kernel.crashing.org>
33446         * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and
33447         split out from...
33448         (gen_ld_cmpi_p10): ... this.
33450 2023-06-06  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
33452         PR target/106907
33453         * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove
33454         duplicate expression.
33456 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33458         * config/aarch64/aarch64-builtins.cc (aarch64_general_gimple_fold_builtin):
33459         Handle unsigned reduc_plus_scal_ builtins.
33460         * config/aarch64/aarch64-simd-builtins.def (addp): Delete DImode instances.
33461         * config/aarch64/aarch64-simd.md (aarch64_addpdi): Delete.
33462         * config/aarch64/arm_neon.h (vpaddd_s64): Reimplement with
33463         __builtin_aarch64_reduc_plus_scal_v2di.
33464         (vpaddd_u64): Reimplement with __builtin_aarch64_reduc_plus_scal_v2di_uu.
33466 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33468         * config/aarch64/aarch64-simd.md (aarch64_<sur>shr_n<mode>): Delete.
33469         (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): New define_insn.
33470         (aarch64_<sra_op>rshr_n<mode>): New define_expand.
33472 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33474         * config/aarch64/aarch64-simd.md (aarch64_shrn<mode>_insn_le): Delete.
33475         (aarch64_shrn<mode>_insn_be): Delete.
33476         (*aarch64_<srn_op>shrn<mode>_vect):  Rename to...
33477         (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): ... This.
33478         (aarch64_shrn<mode>): Remove reference to the above deleted patterns.
33479         (aarch64_rshrn<mode>_insn_le): Delete.
33480         (aarch64_rshrn<mode>_insn_be): Delete.
33481         (aarch64_rshrn<mode><vczle><vczbe>_insn): New define_insn.
33482         (aarch64_rshrn<mode>): Remove references to the above deleted patterns.
33484 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
33486         * config/aarch64/aarch64-protos.h (aarch64_parallel_select_half_p):
33487         Define prototype.
33488         (aarch64_pars_overlap_p): Likewise.
33489         * config/aarch64/aarch64-simd.md (aarch64_<su>addlv<mode>):
33490         Express in terms of UNSPEC_ADDV.
33491         (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): Likewise.
33492         (*aarch64_<su>addlv<mode>_reduction): Define.
33493         (*aarch64_uaddlv<mode>_reduction_2): Likewise.
33494         * config/aarch64/aarch64.cc     (aarch64_parallel_select_half_p): Define.
33495         (aarch64_pars_overlap_p): Likewise.
33496         * config/aarch64/iterators.md (UNSPEC_SADDLV, UNSPEC_UADDLV): Delete.
33497         (VQUADW): New mode attribute.
33498         (VWIDE2X_S): Likewise.
33499         (USADDLV): Delete.
33500         (su): Delete handling of UNSPEC_SADDLV, UNSPEC_UADDLV.
33501         * config/aarch64/predicates.md (vect_par_cnst_select_half): Define.
33503 2023-06-06  Richard Biener  <rguenther@suse.de>
33505         PR middle-end/110055
33506         * gimplify.cc (gimplify_target_expr): Do not emit
33507         CLOBBERs for variables which have static storage duration
33508         after gimplifying their initializers.
33510 2023-06-06  Richard Biener  <rguenther@suse.de>
33512         PR tree-optimization/109143
33513         * tree-ssa-structalias.cc (solution_set_expand): Avoid
33514         one bitmap iteration and optimize bit range setting.
33516 2023-06-06  Hans-Peter Nilsson  <hp@axis.com>
33518         PR bootstrap/110120
33519         * postreload.cc (reload_cse_move2add, move2add_use_add2_insn): Use
33520         XVECEXP, not XEXP, to access first item of a PARALLEL.
33522 2023-06-06  Pan Li  <pan2.li@intel.com>
33524         * config/riscv/riscv-vector-builtins-types.def
33525         (vfloat16mf4_t): Add vfloat16mf4_t to WF operations.
33526         (vfloat16mf2_t): Likewise.
33527         (vfloat16m1_t): Likewise.
33528         (vfloat16m2_t): Likewise.
33529         (vfloat16m4_t): Likewise.
33530         (vfloat16m8_t): Likewise.
33531         * config/riscv/vector-iterators.md: Add FP=16 to VWF, VWF_ZVE64,
33532         VWLMUL1, VWLMUL1_ZVE64, vwlmul1 and vwlmul1_zve64.
33534 2023-06-06  Fei Gao  <gaofei@eswincomputing.com>
33536         * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Use Pmode
33537         for cfi reg/mem machmode
33538         (riscv_adjust_libcall_cfi_epilogue): Use Pmode for cfi reg machmode
33540 2023-06-06  Li Xu  <xuli1@eswincomputing.com>
33542         * config/riscv/vector-iterators.md:
33543         Fix 'REQUIREMENT' for machine_mode 'MODE'.
33544         * config/riscv/vector.md (@pred_indexed_<order>store<VNX16_QHS:mode>
33545         <VNX16_QHSI:mode>): change VNX16_QHSI to VNX16_QHSDI.
33546         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>): Ditto.
33548 2023-06-06  Pan Li  <pan2.li@intel.com>
33550         * config/riscv/vector-iterators.md: Fix typo in mode attr.
33552 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
33553             Joel Hutton  <joel.hutton@arm.com>
33555         * doc/generic.texi: Remove old tree codes.
33556         * expr.cc (expand_expr_real_2): Remove old tree code cases.
33557         * gimple-pretty-print.cc (dump_binary_rhs): Likewise.
33558         * optabs-tree.cc (optab_for_tree_code): Likewise.
33559         (supportable_half_widening_operation): Likewise.
33560         * tree-cfg.cc (verify_gimple_assign_binary): Likewise.
33561         * tree-inline.cc (estimate_operator_cost): Likewise.
33562         (op_symbol_code): Likewise.
33563         * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Likewise.
33564         (vect_analyze_data_ref_accesses): Likewise.
33565         * tree-vect-generic.cc (expand_vector_operations_1): Likewise.
33566         * cfgexpand.cc (expand_debug_expr): Likewise.
33567         * tree-vect-stmts.cc (vectorizable_conversion): Likewise.
33568         (supportable_widening_operation): Likewise.
33569         * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
33570         Likewise.
33571         * optabs.def (vec_widen_ssubl_hi_optab, vec_widen_ssubl_lo_optab,
33572         vec_widen_saddl_hi_optab, vec_widen_saddl_lo_optab,
33573         vec_widen_usubl_hi_optab, vec_widen_usubl_lo_optab,
33574         vec_widen_uaddl_hi_optab, vec_widen_uaddl_lo_optab): Remove optabs.
33575         * tree-pretty-print.cc (dump_generic_node): Remove tree code definition.
33576         * tree.def (WIDEN_PLUS_EXPR, WIDEN_MINUS_EXPR, VEC_WIDEN_PLUS_HI_EXPR,
33577         VEC_WIDEN_PLUS_LO_EXPR, VEC_WIDEN_MINUS_HI_EXPR,
33578         VEC_WIDEN_MINUS_LO_EXPR): Likewise.
33580 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
33581             Joel Hutton  <joel.hutton@arm.com>
33582             Tamar Christina  <tamar.christina@arm.com>
33584         * config/aarch64/aarch64-simd.md (vec_widen_<su>addl_lo_<mode>): Rename
33585         this ...
33586         (vec_widen_<su>add_lo_<mode>): ... to this.
33587         (vec_widen_<su>addl_hi_<mode>): Rename this ...
33588         (vec_widen_<su>add_hi_<mode>): ... to this.
33589         (vec_widen_<su>subl_lo_<mode>): Rename this ...
33590         (vec_widen_<su>sub_lo_<mode>): ... to this.
33591         (vec_widen_<su>subl_hi_<mode>): Rename this ...
33592         (vec_widen_<su>sub_hi_<mode>): ...to this.
33593         * doc/generic.texi: Document new IFN codes.
33594         * internal-fn.cc (lookup_hilo_internal_fn): Add lookup function.
33595         (commutative_binary_fn_p): Add widen_plus fn's.
33596         (widening_fn_p): New function.
33597         (narrowing_fn_p): New function.
33598         (direct_internal_fn_optab): Change visibility.
33599         * internal-fn.def (DEF_INTERNAL_WIDENING_OPTAB_FN): Macro to define an
33600         internal_fn that expands into multiple internal_fns for widening.
33601         (IFN_VEC_WIDEN_PLUS, IFN_VEC_WIDEN_PLUS_HI, IFN_VEC_WIDEN_PLUS_LO,
33602         IFN_VEC_WIDEN_PLUS_EVEN, IFN_VEC_WIDEN_PLUS_ODD,
33603         IFN_VEC_WIDEN_MINUS, IFN_VEC_WIDEN_MINUS_HI,
33604         IFN_VEC_WIDEN_MINUS_LO, IFN_VEC_WIDEN_MINUS_ODD,
33605         IFN_VEC_WIDEN_MINUS_EVEN): Define widening  plus,minus functions.
33606         * internal-fn.h (direct_internal_fn_optab): Declare new prototype.
33607         (lookup_hilo_internal_fn): Likewise.
33608         (widening_fn_p): Likewise.
33609         (Narrowing_fn_p): Likewise.
33610         * optabs.cc (commutative_optab_p): Add widening plus optabs.
33611         * optabs.def (OPTAB_D): Define widen add, sub optabs.
33612         * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Support
33613         patterns with a hi/lo or even/odd split.
33614         (vect_recog_sad_pattern): Refactor to use new IFN codes.
33615         (vect_recog_widen_plus_pattern): Likewise.
33616         (vect_recog_widen_minus_pattern): Likewise.
33617         (vect_recog_average_pattern): Likewise.
33618         * tree-vect-stmts.cc (vectorizable_conversion): Add support for
33619         _HILO IFNs.
33620         (supportable_widening_operation): Likewise.
33621         * tree.def (WIDEN_SUM_EXPR): Update example to use new IFNs.
33623 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
33624             Joel Hutton  <joel.hutton@arm.com>
33626         * tree-vect-patterns.cc: Add include for gimple-iterator.
33627         (vect_recog_widen_op_pattern): Refactor to use code_helper.
33628         (vect_gimple_build): New function.
33629         * tree-vect-stmts.cc (simple_integer_narrowing): Refactor to use
33630         code_helper.
33631         (vectorizable_call): Likewise.
33632         (vect_gen_widened_results_half): Likewise.
33633         (vect_create_vectorized_demotion_stmts): Likewise.
33634         (vect_create_vectorized_promotion_stmts): Likewise.
33635         (vect_create_half_widening_stmts): Likewise.
33636         (vectorizable_conversion): Likewise.
33637         (supportable_widening_operation): Likewise.
33638         (supportable_narrowing_operation): Likewise.
33639         * tree-vectorizer.h (supportable_widening_operation): Change
33640         prototype to use code_helper.
33641         (supportable_narrowing_operation): Likewise.
33642         (vect_gimple_build): New function prototype.
33643         * tree.h (code_helper::safe_as_tree_code): New function.
33644         (code_helper::safe_as_fn_code): New function.
33646 2023-06-05  Roger Sayle  <roger@nextmovesoftware.com>
33648         * wide-int.cc (wi::bitreverse_large): New function implementing
33649         bit reversal of an integer.
33650         * wide-int.h (wi::bitreverse): New (template) function prototype.
33651         (bitreverse_large): Prototype helper function/implementation.
33652         (wi::bitreverse): New template wrapper around bitreverse_large.
33654 2023-06-05  Uros Bizjak  <ubizjak@gmail.com>
33656         * rtl.h (print_rtl_single): Change return type from int to void.
33657         (print_rtl_single_with_indent): Ditto.
33658         * print-rtl.h (class rtx_writer): Ditto.  Change m_sawclose to bool.
33659         * print-rtl.cc (rtx_writer::rtx_writer): Update for m_sawclose change.
33660         (rtx_writer::print_rtx_operand_code_0): Ditto.
33661         (rtx_writer::print_rtx_operand_codes_E_and_V): Ditto.
33662         (rtx_writer::print_rtx_operand_code_i): Ditto.
33663         (rtx_writer::print_rtx_operand_code_u): Ditto.
33664         (rtx_writer::print_rtx_operand): Ditto.
33665         (rtx_writer::print_rtx): Ditto.
33666         (rtx_writer::finish_directive): Ditto.
33667         (print_rtl_single): Change return type from int to void
33668         and adjust function body accordingly.
33669         (rtx_writer::print_rtl_single_with_indent): Ditto.
33671 2023-06-05  Uros Bizjak  <ubizjak@gmail.com>
33673         * rtl.h (reg_classes_intersect_p): Change return type from int to bool.
33674         (reg_class_subset_p): Ditto.
33675         * reginfo.cc (reg_classes_intersect_p): Ditto.
33676         (reg_class_subset_p): Ditto.
33678 2023-06-05  Pan Li  <pan2.li@intel.com>
33680         * config/riscv/riscv-vector-builtins-types.def
33681         (vfloat32mf2_t): New type for DEF_RVV_WEXTF_OPS.
33682         (vfloat32m1_t): Ditto.
33683         (vfloat32m2_t): Ditto.
33684         (vfloat32m4_t): Ditto.
33685         (vfloat32m8_t): Ditto.
33686         (vint16mf4_t): New type for DEF_RVV_CONVERT_I_OPS.
33687         (vint16mf2_t): Ditto.
33688         (vint16m1_t): Ditto.
33689         (vint16m2_t): Ditto.
33690         (vint16m4_t): Ditto.
33691         (vint16m8_t): Ditto.
33692         (vuint16mf4_t): New type for DEF_RVV_CONVERT_U_OPS.
33693         (vuint16mf2_t): Ditto.
33694         (vuint16m1_t): Ditto.
33695         (vuint16m2_t): Ditto.
33696         (vuint16m4_t): Ditto.
33697         (vuint16m8_t): Ditto.
33698         (vint32mf2_t): New type for DEF_RVV_WCONVERT_I_OPS.
33699         (vint32m1_t): Ditto.
33700         (vint32m2_t): Ditto.
33701         (vint32m4_t): Ditto.
33702         (vint32m8_t): Ditto.
33703         (vuint32mf2_t): New type for DEF_RVV_WCONVERT_U_OPS.
33704         (vuint32m1_t): Ditto.
33705         (vuint32m2_t): Ditto.
33706         (vuint32m4_t): Ditto.
33707         (vuint32m8_t): Ditto.
33708         * config/riscv/vector-iterators.md: Add FP=16 support for V,
33709         VWCONVERTI, VCONVERT, VNCONVERT, VMUL1 and vlmul1.
33711 2023-06-05  Andrew Pinski  <apinski@marvell.com>
33713         PR bootstrap/110085
33714         * Makefile.in (clean): Remove the removing of
33715         MULTILIB_DIR/MULTILIB_OPTIONS directories.
33717 2023-06-05  YunQiang Su  <yunqiang.su@cipunited.com>
33719         * config/mips/mips-protos.h (mips_emit_speculation_barrier): New
33720         prototype.
33721         * config/mips/mips.cc (speculation_barrier_libfunc): New static
33722         variable.
33723         (mips_init_libfuncs): Initialize it.
33724         (mips_emit_speculation_barrier): New function.
33725         * config/mips/mips.md (speculation_barrier): Call
33726         mips_emit_speculation_barrier.
33728 2023-06-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33730         * config/riscv/riscv-v.cc (class rvv_builder): Reorganize functions.
33731         (rvv_builder::can_duplicate_repeating_sequence_p): Ditto.
33732         (rvv_builder::repeating_sequence_use_merge_profitable_p): Ditto.
33733         (rvv_builder::get_merged_repeating_sequence): Ditto.
33734         (rvv_builder::get_merge_scalar_mask): Ditto.
33735         (emit_scalar_move_insn): Ditto.
33736         (emit_vlmax_integer_move_insn): Ditto.
33737         (emit_nonvlmax_integer_move_insn): Ditto.
33738         (emit_vlmax_gather_insn): Ditto.
33739         (emit_vlmax_masked_gather_mu_insn): Ditto.
33740         (get_repeating_sequence_dup_machine_mode): Ditto.
33742 2023-06-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33744         * config/riscv/autovec.md: Split arguments.
33745         * config/riscv/riscv-protos.h (expand_vec_perm): Ditto.
33746         * config/riscv/riscv-v.cc (expand_vec_perm): Ditto.
33748 2023-06-04  Andrew Pinski  <apinski@marvell.com>
33750         * expr.cc (do_store_flag): Improve for single bit testing
33751         not against zero but against that single bit.
33753 2023-06-04  Andrew Pinski  <apinski@marvell.com>
33755         * expr.cc (do_store_flag): Extend the one bit checking case
33756         to handle the case where we don't have an and but rather still
33757         one bit is known to be non-zero.
33759 2023-06-04  Jeff Law  <jlaw@ventanamicro.com>
33761         * config/h8300/constraints.md (Zz): Make this a normal
33762         constraint.
33763         * config/h8300/h8300.cc (TARGET_LRA_P): Remove.
33764         * config/h8300/logical.md (H8/SX bit patterns): Remove.
33766 2023-06-04  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
33768         * config/xtensa/xtensa.md (*btrue_INT_MIN, *eqne_INT_MIN):
33769         New insn_and_split patterns.
33771 2023-06-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33773         PR target/110109
33774         * config/riscv/riscv-vector-builtins-bases.cc: Change expand approach.
33775         * config/riscv/vector.md (@vlmul_extx2<mode>): Remove it.
33776         (@vlmul_extx4<mode>): Ditto.
33777         (@vlmul_extx8<mode>): Ditto.
33778         (@vlmul_extx16<mode>): Ditto.
33779         (@vlmul_extx32<mode>): Ditto.
33780         (@vlmul_extx64<mode>): Ditto.
33781         (*vlmul_extx2<mode>): Ditto.
33782         (*vlmul_extx4<mode>): Ditto.
33783         (*vlmul_extx8<mode>): Ditto.
33784         (*vlmul_extx16<mode>): Ditto.
33785         (*vlmul_extx32<mode>): Ditto.
33786         (*vlmul_extx64<mode>): Ditto.
33788 2023-06-04  Pan Li  <pan2.li@intel.com>
33790         * config/riscv/riscv-vector-builtins-types.def
33791         (vfloat32mf2_t): Add vfloat32mf2_t type to vfncvt.f.f.w operations.
33792         (vfloat32m1_t): Likewise.
33793         (vfloat32m2_t): Likewise.
33794         (vfloat32m4_t): Likewise.
33795         (vfloat32m8_t): Likewise.
33796         * config/riscv/riscv-vector-builtins.def: Fix typo in comments.
33797         * config/riscv/vector-iterators.md: Add single to half machine
33798         mode conversion.
33800 2023-06-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33802         * config/riscv/autovec-opt.md (*<optab>not<mode>): Move to autovec-opt.md.
33803         (*n<optab><mode>): Ditto.
33804         * config/riscv/autovec.md (*<optab>not<mode>): Ditto.
33805         (*n<optab><mode>): Ditto.
33806         * config/riscv/vector.md: Ditto.
33808 2023-06-04  Roger Sayle  <roger@nextmovesoftware.com>
33810         PR target/110083
33811         * config/i386/i386-features.cc (scalar_chain::convert_compare):
33812         Update or delete REG_EQUAL notes, converting CONST_INT and
33813         CONST_WIDE_INT immediate operands to a suitable CONST_VECTOR.
33815 2023-06-04  Jason Merrill  <jason@redhat.com>
33817         PR c++/97720
33818         * tree-eh.cc (lower_resx): Pass the exception pointer to the
33819         failure_decl.
33820         * except.h: Tweak comment.
33822 2023-06-04  Hans-Peter Nilsson  <hp@axis.com>
33824         * postreload.cc (move2add_use_add2_insn): Handle
33825         trivial single_sets.  Rename variable PAT to SET.
33826         (move2add_use_add3_insn, reload_cse_move2add): Similar.
33828 2023-06-04  Pan Li  <pan2.li@intel.com>
33830         * config/riscv/riscv-vector-builtins-types.def
33831         (vfloat16mf4_t): Add the float16 type to DEF_RVV_F_OPS.
33832         (vfloat16mf2_t): Likewise.
33833         (vfloat16m1_t): Likewise.
33834         (vfloat16m2_t): Likewise.
33835         (vfloat16m4_t): Likewise.
33836         (vfloat16m8_t): Likewise.
33837         * config/riscv/riscv.md: Add vfloat16*_t to attr mode.
33838         * config/riscv/vector-iterators.md: Add vfloat16*_t machine mode
33839         to V, V_WHOLE, V_FRACT, VINDEX, VM, VEL and sew.
33840         * config/riscv/vector.md: Add vfloat16*_t machine mode to sew,
33841         vlmul and ratio.
33843 2023-06-03  Fei Gao  <gaofei@eswincomputing.com>
33845         * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
33846         correct offset.
33848 2023-06-03  Die Li  <lidie@eswincomputing.com>
33850         * config/riscv/thead.md (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Delete.
33852 2023-06-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33854         * config/riscv/predicates.md: Change INTVAL into UINTVAL.
33856 2023-06-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33858         * config/riscv/vector.md: Add vector-opt.md.
33859         * config/riscv/autovec-opt.md: New file.
33861 2023-06-03  liuhongt  <hongtao.liu@intel.com>
33863         PR tree-optimization/110067
33864         * gimple-ssa-store-merging.cc (find_bswap_or_nop): Don't try
33865         bswap + rotate when TYPE_PRECISION(n->type) > n->range.
33867 2023-06-03  liuhongt  <hongtao.liu@intel.com>
33869         PR target/92658
33870         * config/i386/mmx.md (truncv2hiv2qi2): New define_insn.
33871         (truncv2si<mode>2): Ditto.
33873 2023-06-02  Andrew Pinski  <apinski@marvell.com>
33875         PR rtl-optimization/102733
33876         * dse.cc (store_info): Add addrspace field.
33877         (record_store): Record the address space
33878         and check to make sure they are the same.
33880 2023-06-02  Andrew Pinski  <apinski@marvell.com>
33882         PR rtl-optimization/110042
33883         * ifcvt.cc (bbs_ok_for_cmove_arith): Allow paradoxical subregs.
33884         (bb_valid_for_noce_process_p): Strip the subreg for the SET_DEST.
33886 2023-06-02  Iain Sandoe  <iain@sandoe.co.uk>
33888         PR target/110044
33889         * config/rs6000/rs6000.cc (darwin_rs6000_special_round_type_align):
33890         Make sure that we do not have a cap on field alignment before altering
33891         the struct layout based on the type alignment of the first entry.
33893 2023-06-02  David Faust  <david.faust@oracle.com>
33895         PR debug/110073
33896         * btfout.cc (btf_absolute_func_id): New function.
33897         (btf_asm_func_type): Call it here.  Change index parameter from
33898         size_t to ctf_id_t.  Use PRIu64 formatter.
33900 2023-06-02  Alex Coplan  <alex.coplan@arm.com>
33902         * btfout.cc (btf_asm_type): Use PRIu64 instead of %lu for uint64_t.
33903         (btf_asm_datasec_type): Likewise.
33905 2023-06-02  Carl Love  <cel@us.ibm.com>
33907         * config/rs6000/rs6000-builtins.def (__builtin_altivec_tr_stxvrhx,
33908         __builtin_altivec_tr_stxvrwx): Fix type of third argument.
33910 2023-06-02  Jason Merrill  <jason@redhat.com>
33912         PR c++/110070
33913         PR c++/105838
33914         * tree.h (DECL_MERGEABLE): New.
33915         * tree-core.h (struct tree_decl_common): Mention it.
33916         * gimplify.cc (gimplify_init_constructor): Check it.
33917         * cgraph.cc (symtab_node::address_can_be_compared_p): Likewise.
33918         * varasm.cc (categorize_decl_for_section): Likewise.
33920 2023-06-02  Uros Bizjak  <ubizjak@gmail.com>
33922         * rtl.h (stack_regs_mentioned): Change return type from int to bool.
33923         * reg-stack.cc (struct_block_info_def): Change "done" to bool.
33924         (stack_regs_mentioned_p): Change return type from int to bool
33925         and adjust function body accordingly.
33926         (stack_regs_mentioned): Ditto.
33927         (check_asm_stack_operands): Ditto.  Change "malformed_asm"
33928         variable to bool.
33929         (move_for_stack_reg): Recode handling of control_flow_insn_deleted.
33930         (swap_rtx_condition_1): Change return type from int to bool
33931         and adjust function body accordingly.  Change "r" variable to bool.
33932         (swap_rtx_condition): Change return type from int to bool
33933         and adjust function body accordingly.
33934         (subst_stack_regs_pat): Recode handling of control_flow_insn_deleted.
33935         (subst_stack_regs): Ditto.
33936         (convert_regs_entry): Change return type from int to bool and adjust
33937         function body accordingly.  Change "inserted" variable to bool.
33938         (convert_regs_1): Recode handling of control_flow_insn_deleted.
33939         (convert_regs_2): Recode handling of cfg_altered.
33940         (convert_regs): Ditto.  Change "inserted" variable to bool.
33942 2023-06-02  Jason Merrill  <jason@redhat.com>
33944         PR c++/95226
33945         * varasm.cc (output_constant) [REAL_TYPE]: Check that sizes match.
33946         (initializer_constant_valid_p_1): Compare float precision.
33948 2023-06-02  Alexander Monakov  <amonakov@ispras.ru>
33950         * doc/extend.texi (Vector Extensions): Clarify bitwise shift
33951         semantics.
33953 2023-06-02  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
33955         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Change decrement IV flow.
33956         (vect_set_loop_condition_partial_vectors): Ditto.
33958 2023-06-02  Georg-Johann Lay  <avr@gjlay.de>
33960         PR target/110088
33961         * config/avr/avr.md: Add an RTL peephole to optimize operations on
33962         non-LD_REGS after a move from LD_REGS.
33963         (piaop): New code iterator.
33965 2023-06-02  Thomas Schwinge  <thomas@codesourcery.com>
33967         PR testsuite/66005
33968         * doc/install.texi: Document (optional) Perl usage for parallel
33969         testing of libgomp.
33971 2023-06-02  Thomas Schwinge  <thomas@codesourcery.com>
33973         PR bootstrap/82856
33974         * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
33975         later)".
33977 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33978             KuanLin Chen  <best124612@gmail.com>
33980         * config/riscv/riscv-vector-builtins-bases.cc: Add _mu overloaded intrinsics.
33981         * config/riscv/riscv-vector-builtins-shapes.cc (struct fault_load_def): Ditto.
33983 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33985         * config/riscv/riscv-v.cc (expand_vec_series): Optimize reverse series index vector.
33987 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33989         * config/riscv/predicates.md: Change INTVAL into UINTVAL.
33991 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33993         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_VXRM_ENUM): Add
33994         __RISCV_ prefix.
33995         (DEF_RVV_FRM_ENUM): Ditto.
33997 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
33999         * config/riscv/riscv-vector-builtins-bases.cc: Change vwadd.wv/vwsub.wv
34000         intrinsic API expander
34001         * config/riscv/vector.md
34002         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Remove it.
34003         (@pred_single_widen_sub<any_extend:su><mode>): New pattern.
34004         (@pred_single_widen_add<any_extend:su><mode>): New pattern.
34006 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
34008         * config/riscv/autovec.md (vec_perm<mode>): New pattern.
34009         * config/riscv/predicates.md (vector_perm_operand): New predicate.
34010         * config/riscv/riscv-protos.h (enum insn_type): New enum.
34011         (expand_vec_perm): New function.
34012         * config/riscv/riscv-v.cc (const_vec_all_in_range_p): Ditto.
34013         (gen_const_vector_dup): Ditto.
34014         (emit_vlmax_gather_insn): Ditto.
34015         (emit_vlmax_masked_gather_mu_insn): Ditto.
34016         (expand_vec_perm): Ditto.
34018 2023-06-01  Jason Merrill  <jason@redhat.com>
34020         * doc/invoke.texi (-Wpedantic): Improve clarity.
34022 2023-06-01  Uros Bizjak  <ubizjak@gmail.com>
34024         * rtl.h (exp_equiv_p): Change return type from int to bool.
34025         * cse.cc (mention_regs): Change return type from int to bool
34026         and adjust function body accordingly.
34027         (exp_equiv_p): Ditto.
34028         (insert_regs): Ditto. Change "modified" function argument to bool
34029         and update usage accordingly.
34030         (record_jump_cond): Remove always zero "reversed_nonequality"
34031         function argument and update usage accordingly.
34032         (fold_rtx): Change "changed" variable to bool.
34033         (record_jump_equiv): Remove unneeded "reversed_nonequality" variable.
34034         (is_dead_reg): Change return type from int to bool.
34036 2023-06-01  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
34038         * config/xtensa/xtensa.md (adddi3, subdi3):
34039         New RTL generation patterns implemented according to the instruc-
34040         tion idioms described in the Xtensa ISA reference manual (p. 600).
34042 2023-06-01  Roger Sayle  <roger@nextmovesoftware.com>
34043             Uros Bizjak  <ubizjak@gmail.com>
34045         PR target/109973
34046         * config/i386/i386-builtin.def (__builtin_ia32_ptestz128): Use new
34047         CODE_for_sse4_1_ptestzv2di.
34048         (__builtin_ia32_ptestc128): Use new CODE_for_sse4_1_ptestcv2di.
34049         (__builtin_ia32_ptestz256): Use new CODE_for_avx_ptestzv4di.
34050         (__builtin_ia32_ptestc256): Use new CODE_for_avx_ptestcv4di.
34051         * config/i386/i386-expand.cc (ix86_expand_branch): Use CCZmode
34052         when expanding UNSPEC_PTEST to compare against zero.
34053         * config/i386/i386-features.cc (scalar_chain::convert_compare):
34054         Likewise generate CCZmode UNSPEC_PTESTs when converting comparisons.
34055         (general_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
34056         (timode_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
34057         * config/i386/i386-protos.h (ix86_match_ptest_ccmode): Prototype.
34058         * config/i386/i386.cc (ix86_match_ptest_ccmode): New predicate to
34059         check for suitable matching modes for the UNSPEC_PTEST pattern.
34060         * config/i386/sse.md (define_split): When splitting UNSPEC_MOVMSK
34061         to UNSPEC_PTEST, preserve the FLAG_REG mode as CCZ.
34062         (*<sse4_1>_ptest<mode>): Add asterisk to hide define_insn.  Remove
34063         ":CC" mode of FLAGS_REG, instead use ix86_match_ptest_ccmode.
34064         (<sse4_1>_ptestz<mode>): New define_expand to specify CCZ.
34065         (<sse4_1>_ptestc<mode>): New define_expand to specify CCC.
34066         (<sse4_1>_ptest<mode>): A define_expand using CC to preserve the
34067         current behavior.
34068         (*ptest<mode>_and): Specify CCZ to only perform this optimization
34069         when only the Z flag is required.
34071 2023-06-01  Jonathan Wakely  <jwakely@redhat.com>
34073         PR target/109954
34074         * doc/invoke.texi (x86 Options): Fix description of -m32 option.
34076 2023-06-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
34078         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
34079         Add =r,m and =r,m alternatives.
34080         (load_pair<DREG:mode><DREG2:mode>): Likewise.
34081         (vec_store_pair<DREG:mode><DREG2:mode>): Likewise.
34083 2023-06-01  Pan Li  <pan2.li@intel.com>
34085         * common/config/riscv/riscv-common.cc: Add FP_16 mask to zvfhmin
34086         and zvfh.
34087         * config/riscv/genrvv-type-indexer.cc (valid_type): Allow FP16.
34088         (main): Disable FP16 tuple.
34089         * config/riscv/riscv-opts.h (MASK_VECTOR_ELEN_FP_16): New macro.
34090         (TARGET_VECTOR_ELEN_FP_16): Ditto.
34091         * config/riscv/riscv-vector-builtins.cc (check_required_extensions):
34092         Add FP16.
34093         * config/riscv/riscv-vector-builtins.def (vfloat16mf4_t): New type.
34094         (vfloat16mf2_t): Ditto.
34095         (vfloat16m1_t): Ditto.
34096         (vfloat16m2_t): Ditto.
34097         (vfloat16m4_t): Ditto.
34098         (vfloat16m8_t): Ditto.
34099         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ELEN_FP_16):
34100         New macro.
34101         * config/riscv/riscv-vector-switch.def (ENTRY): Allow FP16
34102         machine mode based on TARGET_VECTOR_ELEN_FP_16.
34104 2023-06-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
34106         * config/riscv/riscv-vector-builtins.cc (register_frm): New function.
34107         (DEF_RVV_FRM_ENUM): New macro.
34108         (handle_pragma_vector): Add FRM enum
34109         * config/riscv/riscv-vector-builtins.def (DEF_RVV_FRM_ENUM): New macro.
34110         (RNE): Ditto.
34111         (RTZ): Ditto.
34112         (RDN): Ditto.
34113         (RUP): Ditto.
34114         (RMM): Ditto.
34116 2023-05-31  Roger Sayle  <roger@nextmovesoftware.com>
34117             Richard Sandiford  <richard.sandiford@arm.com>
34119         * fold-const-call.cc (fold_const_call_ss) <CFN_BUILT_IN_BSWAP*>:
34120         Update call to wi::bswap.
34121         * simplify-rtx.cc (simplify_const_unary_operation) <case BSWAP>:
34122         Update call to wi::bswap.
34123         * tree-ssa-ccp.cc (evaluate_stmt) <case BUILT_IN_BSWAP*>:
34124         Update calls to wi::bswap.
34125         * wide-int.cc (wide_int_storage::bswap): Remove/rename to...
34126         (wi::bswap_large): New function, with revised API.
34127         * wide-int.h (wi::bswap): New (template) function prototype.
34128         (wide_int_storage::bswap): Remove method.
34129         (sext_large, zext_large): Consistent indentation/line wrapping.
34130         (bswap_large): Prototype helper function containing implementation.
34131         (wi::bswap): New template wrapper around bswap_large.
34133 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
34135         PR target/99195
34136         * config/aarch64/aarch64-simd.md (<sur>dot_prod<vsi2qi>): Rename to...
34137         (<sur>dot_prod<vsi2qi><vczle><vczbe>): ... This.
34138         (usdot_prod<vsi2qi>): Rename to...
34139         (usdot_prod<vsi2qi><vczle><vczbe>): ... This.
34140         (aarch64_<sur>dot_lane<vsi2qi>): Rename to...
34141         (aarch64_<sur>dot_lane<vsi2qi><vczle><vczbe>): ... This.
34142         (aarch64_<sur>dot_laneq<vsi2qi>): Rename to...
34143         (aarch64_<sur>dot_laneq<vsi2qi><vczle><vczbe>): ... This.
34144         (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi>): Rename to...
34145         (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi><vczle><vczbe>):
34146         ... This.
34148 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
34150         PR target/99195
34151         * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh<mode>): Rename to...
34152         (aarch64_sq<r>dmulh<mode><vczle><vczbe>): ... This.
34153         (aarch64_sq<r>dmulh_n<mode>): Rename to...
34154         (aarch64_sq<r>dmulh_n<mode><vczle><vczbe>): ... This.
34155         (aarch64_sq<r>dmulh_lane<mode>): Rename to...
34156         (aarch64_sq<r>dmulh_lane<mode><vczle><vczbe>): ... This.
34157         (aarch64_sq<r>dmulh_laneq<mode>): Rename to...
34158         (aarch64_sq<r>dmulh_laneq<mode><vczle><vczbe>): ... This.
34159         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>): Rename to...
34160         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode><vczle><vczbe>): ... This.
34161         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Rename to...
34162         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode><vczle><vczbe>): ... This.
34163         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Rename to...
34164         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode><vczle><vczbe>): ... This.
34166 2023-05-31  David Faust  <david.faust@oracle.com>
34168         * btfout.cc (btf_kind_names): New.
34169         (btf_kind_name): New.
34170         (btf_absolute_var_id): New utility function.
34171         (btf_relative_var_id): Likewise.
34172         (btf_relative_func_id): Likewise.
34173         (btf_absolute_datasec_id): Likewise.
34174         (btf_asm_type_ref): New.
34175         (btf_asm_type): Update asm comments and use btf_asm_type_ref ().
34176         (btf_asm_array): Likewise. Accept ctf_container_ref parameter.
34177         (btf_asm_varent): Likewise.
34178         (btf_asm_func_arg): Likewise.
34179         (btf_asm_datasec_entry): Likewise.
34180         (btf_asm_datasec_type): Likewise.
34181         (btf_asm_func_type): Likewise. Add index parameter.
34182         (btf_asm_enum_const): Likewise.
34183         (btf_asm_sou_member): Likewise.
34184         (output_btf_vars): Update btf_asm_* call accordingly.
34185         (output_asm_btf_sou_fields): Likewise.
34186         (output_asm_btf_enum_list): Likewise.
34187         (output_asm_btf_func_args_list): Likewise.
34188         (output_asm_btf_vlen_bytes): Likewise.
34189         (output_btf_func_types): Add ctf_container_ref parameter.
34190         Pass it to btf_asm_func_type.
34191         (output_btf_datasec_types): Update btf_asm_datsec_type call similarly.
34192         (btf_output): Update output_btf_func_types call similarly.
34194 2023-05-31  David Faust  <david.faust@oracle.com>
34196         * btfout.cc (btf_asm_type): Add dedicated cases for BTF_KIND_ARRAY
34197         and BTF_KIND_FWD which do not use the size/type field at all.
34199 2023-05-31  Uros Bizjak  <ubizjak@gmail.com>
34201         * rtl.h (subreg_lowpart_p): Change return type from int to bool.
34202         (active_insn_p): Ditto.
34203         (in_sequence_p): Ditto.
34204         (unshare_all_rtl): Change return type from int to void.
34205         * emit-rtl.h (mem_expr_equal_p): Change return type from int to bool.
34206         * emit-rtl.cc (subreg_lowpart_p): Change return type from int to bool
34207         and adjust function body accordingly.
34208         (mem_expr_equal_p): Ditto.
34209         (unshare_all_rtl): Change return type from int to void
34210         and adjust function body accordingly.
34211         (verify_rtx_sharing): Remove unneeded return.
34212         (active_insn_p): Change return type from int to bool
34213         and adjust function body accordingly.
34214         (in_sequence_p): Ditto.
34216 2023-05-31  Uros Bizjak  <ubizjak@gmail.com>
34218         * rtl.h (true_dependence): Change return type from int to bool.
34219         (canon_true_dependence): Ditto.
34220         (read_dependence): Ditto.
34221         (anti_dependence): Ditto.
34222         (canon_anti_dependence): Ditto.
34223         (output_dependence): Ditto.
34224         (canon_output_dependence): Ditto.
34225         (may_alias_p): Ditto.
34226         * alias.h (alias_sets_conflict_p): Ditto.
34227         (alias_sets_must_conflict_p): Ditto.
34228         (objects_must_conflict_p): Ditto.
34229         (nonoverlapping_memrefs_p): Ditto.
34230         * alias.cc (rtx_equal_for_memref_p): Remove forward declaration.
34231         (record_set): Ditto.
34232         (base_alias_check): Ditto.
34233         (find_base_value): Ditto.
34234         (mems_in_disjoint_alias_sets_p): Ditto.
34235         (get_alias_set_entry): Ditto.
34236         (decl_for_component_ref): Ditto.
34237         (write_dependence_p): Ditto.
34238         (memory_modified_1): Ditto.
34239         (mems_in_disjoint_alias_set_p): Change return type from int to bool
34240         and adjust function body accordingly.
34241         (alias_sets_conflict_p): Ditto.
34242         (alias_sets_must_conflict_p): Ditto.
34243         (objects_must_conflict_p): Ditto.
34244         (rtx_equal_for_memref_p): Ditto.
34245         (base_alias_check): Ditto.
34246         (read_dependence): Ditto.
34247         (nonoverlapping_memrefs_p): Ditto.
34248         (true_dependence_1): Ditto.
34249         (true_dependence): Ditto.
34250         (canon_true_dependence): Ditto.
34251         (write_dependence_p): Ditto.
34252         (anti_dependence): Ditto.
34253         (canon_anti_dependence): Ditto.
34254         (output_dependence): Ditto.
34255         (canon_output_dependence): Ditto.
34256         (may_alias_p): Ditto.
34257         (init_alias_analysis): Change "changed" variable to bool.
34259 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
34261         * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): Change
34262         expand into define_insn_and_split.
34264 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
34266         * config/riscv/vector.md: Remove FRM.
34268 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
34270         * config/riscv/vector.md: Remove FRM.
34272 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
34274         * config/riscv/vector.md: Remove FRM.
34276 2023-05-31  Christophe Lyon  <christophe.lyon@linaro.org>
34278         PR target/110039
34279         * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
34280         pattern.
34282 2023-05-31  Richard Biener  <rguenther@suse.de>
34284         PR ipa/109983
34285         PR tree-optimization/109143
34286         * tree-ssa-structalias.cc (struct topo_info): Remove.
34287         (init_topo_info): Likewise.
34288         (free_topo_info): Likewise.
34289         (compute_topo_order): Simplify API, put the component
34290         with ESCAPED last so it's processed first.
34291         (topo_visit): Adjust.
34292         (solve_graph): Likewise.
34294 2023-05-31  Richard Biener  <rguenther@suse.de>
34296         * tree-ssa-structalias.cc (constraint_stats::num_avoided_edges):
34297         New.
34298         (add_graph_edge): Count redundant edges we avoid to create.
34299         (dump_sa_stats): Dump them.
34300         (ipa_pta_execute): Do not dump generating constraints when
34301         we are not dumping them.
34303 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
34305         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>): Rewrite
34306         output template to avoid explicit switch on which_alternative.
34307         (*aarch64_simd_mov<VQMOV:mode>): Likewise.
34308         (and<mode>3): Likewise.
34309         (ior<mode>3): Likewise.
34310         * config/aarch64/aarch64.md (*mov<mode>_aarch64): Likewise.
34312 2023-05-31  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
34314         * config/xtensa/predicates.md (xtensa_bit_join_operator):
34315         New predicate.
34316         * config/xtensa/xtensa.md (ior_op): Remove.
34317         (*shlrd_reg): Rename from "*shlrd_reg_<code>", and add the
34318         insn_and_split pattern of the same name to express and capture
34319         the bit-combining operation with both sides swapped.
34320         In addition, replace use of code iterator with new operator
34321         predicate.
34322         (*shlrd_const, *shlrd_per_byte):
34323         Likewise regarding the code iterator.
34325 2023-05-31  Cui, Lili  <lili.cui@intel.com>
34327         PR tree-optimization/110038
34328         * params.opt: Add a limit on tree-reassoc-width.
34329         * tree-ssa-reassoc.cc
34330         (rewrite_expr_tree_parallel): Add width limit.
34332 2023-05-31  Pan Li  <pan2.li@intel.com>
34334         * common/config/riscv/riscv-common.cc:
34335         (riscv_implied_info): Add zvfh item.
34336         (riscv_ext_version_table): Ditto.
34337         (riscv_ext_flag_table): Ditto.
34338         * config/riscv/riscv-opts.h (MASK_ZVFH): New macro.
34339         (TARGET_ZVFH): Ditto.
34341 2023-05-30  liuhongt  <hongtao.liu@intel.com>
34343         PR tree-optimization/108804
34344         * tree-vect-patterns.cc (vect_get_range_info): Remove static.
34345         * tree-vect-stmts.cc (vect_create_vectorized_demotion_stmts):
34346         Add new parameter narrow_src_p.
34347         (vectorizable_conversion): Enhance NARROW FLOAT_EXPR
34348         vectorization by truncating to lower precision.
34349         * tree-vectorizer.h (vect_get_range_info): New declare.
34351 2023-05-30  Vladimir N. Makarov  <vmakarov@redhat.com>
34353         * lra-int.h (lra_update_sp_offset): Add the prototype.
34354         * lra.cc (setup_sp_offset): Change the return type.  Use
34355         lra_update_sp_offset.
34356         * lra-eliminations.cc (lra_update_sp_offset): New function.
34357         (lra_process_new_insns): Push the current insn to reprocess if the
34358         input reload changes sp offset.
34360 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
34362         PR target/110041
34363         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
34364         Fix misleading identation.
34366 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
34368         * rtl.h (comparison_dominates_p): Change return type from int to bool.
34369         (condjump_p): Ditto.
34370         (any_condjump_p): Ditto.
34371         (any_uncondjump_p): Ditto.
34372         (simplejump_p): Ditto.
34373         (returnjump_p): Ditto.
34374         (eh_returnjump_p): Ditto.
34375         (onlyjump_p): Ditto.
34376         (invert_jump_1): Ditto.
34377         (invert_jump): Ditto.
34378         (rtx_renumbered_equal_p): Ditto.
34379         (redirect_jump_1): Ditto.
34380         (redirect_jump): Ditto.
34381         (condjump_in_parallel_p): Ditto.
34382         * jump.cc (invert_exp_1): Adjust forward declaration.
34383         (comparison_dominates_p): Change return type from int to bool
34384         and adjust function body accordingly.
34385         (simplejump_p): Ditto.
34386         (condjump_p): Ditto.
34387         (condjump_in_parallel_p): Ditto.
34388         (any_uncondjump_p): Ditto.
34389         (any_condjump_p): Ditto.
34390         (returnjump_p): Ditto.
34391         (eh_returnjump_p): Ditto.
34392         (onlyjump_p): Ditto.
34393         (redirect_jump_1): Ditto.
34394         (redirect_jump): Ditto.
34395         (invert_exp_1): Ditto.
34396         (invert_jump_1): Ditto.
34397         (invert_jump): Ditto.
34398         (rtx_renumbered_equal_p): Ditto.
34400 2023-05-30  Andrew Pinski  <apinski@marvell.com>
34402         * fold-const.cc (minmax_from_comparison): Add support for NE_EXPR.
34403         * match.pd ((cond (cmp (convert1? x) c1) (convert2? x) c2) pattern):
34404         Add ne as a possible cmp.
34405         ((a CMP b) ? minmax<a, c> : minmax<b, c> pattern): Likewise.
34407 2023-05-30  Andrew Pinski  <apinski@marvell.com>
34409         * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): New
34410         pattern.
34412 2023-05-30  Roger Sayle  <roger@nextmovesoftware.com>
34414         * simplify-rtx.cc (simplify_binary_operation_1) <AND>: Use wide-int
34415         instead of HWI_COMPUTABLE_MODE_P and UINTVAL in transformation of
34416         (and (extend X) C) as (zero_extend (and X C)), to also optimize
34417         modes wider than HOST_WIDE_INT.
34419 2023-05-30  Roger Sayle  <roger@nextmovesoftware.com>
34421         PR target/107172
34422         * simplify-rtx.cc (simplify_const_relational_operation): Return
34423         early if we have a MODE_CC comparison that isn't a COMPARE against
34424         const0_rtx.
34426 2023-05-30  Robin Dapp  <rdapp@ventanamicro.com>
34428         * config/riscv/riscv.cc (riscv_const_insns): Allow
34429         const_vec_duplicates.
34431 2023-05-30  liuhongt  <hongtao.liu@intel.com>
34433         PR middle-end/108938
34434         * gimple-ssa-store-merging.cc (is_bswap_or_nop_p): New
34435         function, cut from original find_bswap_or_nop function.
34436         (find_bswap_or_nop): Add a new parameter, detect bswap +
34437         rotate and save rotate result in the new parameter.
34438         (bswap_replace): Add a new parameter to indicate rotate and
34439         generate rotate stmt if needed.
34440         (maybe_optimize_vector_constructor): Adjust for new rotate
34441         parameter in the upper 2 functions.
34442         (pass_optimize_bswap::execute): Ditto.
34443         (imm_store_chain_info::output_merged_store): Ditto.
34445 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
34447         * config/aarch64/aarch64-simd.md (aarch64_<sur>adalp<mode>): Delete.
34448         (aarch64_<su>adalp<mode>): New define_expand.
34449         (*aarch64_<su>adalp<mode><vczle><vczbe>_insn): New define_insn.
34450         (aarch64_<su>addlp<mode>): Convert to define_expand.
34451         (*aarch64_<su>addlp<mode><vczle><vczbe>_insn): New define_insn.
34452         * config/aarch64/iterators.md (UNSPEC_SADDLP, UNSPEC_UADDLP): Delete.
34453         (ADALP): Likewise.
34454         (USADDLP): Likewise.
34455         * config/aarch64/predicates.md (vect_par_cnst_even_or_odd_half): Define.
34457 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
34459         * config/aarch64/aarch64-builtins.cc (VAR1): Move to after inclusion of
34460         aarch64-builtin-iterators.h.  Add definition to remap shadd, uhadd,
34461         srhadd, urhadd builtin codes for standard optab ones.
34462         * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor): Rename to...
34463         (<su_optab>avg<mode>3_floor): ... This.  Expand to RTL codes rather than
34464         unspec.
34465         (<u>avg<mode>3_ceil): Rename to...
34466         (<su_optab>avg<mode>3_ceil): ... This.  Expand to RTL codes rather than
34467         unspec.
34468         (aarch64_<su>hsub<mode>): New define_expand.
34469         (aarch64_<sur>h<addsub><mode><vczle><vczbe>): Split into...
34470         (*aarch64_<su>h<ADDSUB:optab><mode><vczle><vczbe>_insn): ... This...
34471         (*aarch64_<su>rhadd<mode><vczle><vczbe>_insn): ... And this.
34473 2023-05-30  Andreas Schwab  <schwab@suse.de>
34475         PR target/110036
34476         * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
34477         match libsanitizer.
34479 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
34481         * config/aarch64/aarch64-modes.def (V16HI, V8SI, V4DI, V2TI): New modes.
34482         * config/aarch64/aarch64-protos.h (aarch64_const_vec_rnd_cst_p):
34483         Declare prototype.
34484         (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
34485         * config/aarch64/aarch64-simd.md (*aarch64_simd_sra<mode>): Rename to...
34486         (aarch64_<sra_op>sra_n<mode>_insn): ... This.
34487         (aarch64_<sra_op>rsra_n<mode>_insn): New define_insn.
34488         (aarch64_<sra_op>sra_n<mode>): New define_expand.
34489         (aarch64_<sra_op>rsra_n<mode>): Likewise.
34490         (aarch64_<sur>sra_n<mode>): Rename to...
34491         (aarch64_<sur>sra_ndi): ... This.
34492         * config/aarch64/aarch64.cc (aarch64_classify_vector_mode): Add
34493         any_target_p argument.
34494         (aarch64_extract_vec_duplicate_wide_int): Define.
34495         (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
34496         (aarch64_const_vec_rnd_cst_p): Likewise.
34497         (aarch64_vector_mode_supported_any_target_p): Likewise.
34498         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Likewise.
34499         * config/aarch64/iterators.md (UNSPEC_SRSRA, UNSPEC_URSRA): Delete.
34500         (VSRA): Adjust for the above.
34501         (sur): Likewise.
34502         (V2XWIDE): New mode_attr.
34503         (vec_or_offset): Likewise.
34504         (SHIFTEXTEND): Likewise.
34505         * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec): New
34506         predicate.
34507         * doc/tm.texi (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
34508         clarify that it applies to current target options.
34509         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Document.
34510         * doc/tm.texi.in: Regenerate.
34511         * stor-layout.cc (mode_for_vector): Check
34512         vector_mode_supported_any_target_p when iterating through vector modes.
34513         * target.def (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
34514         clarify that it applies to current target options.
34515         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Define.
34517 2023-05-30  Lili Cui  <lili.cui@intel.com>
34519         PR tree-optimization/98350
34520         * tree-ssa-reassoc.cc
34521         (rewrite_expr_tree_parallel): Rewrite this function.
34522         (rank_ops_for_fma): New.
34523         (reassociate_bb): Handle new function.
34525 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
34527         * rtl.h (rtx_addr_can_trap_p): Change return type from int to bool.
34528         (rtx_unstable_p): Ditto.
34529         (reg_mentioned_p): Ditto.
34530         (reg_referenced_p): Ditto.
34531         (reg_used_between_p): Ditto.
34532         (reg_set_between_p): Ditto.
34533         (modified_between_p): Ditto.
34534         (no_labels_between_p): Ditto.
34535         (modified_in_p): Ditto.
34536         (reg_set_p): Ditto.
34537         (multiple_sets): Ditto.
34538         (set_noop_p): Ditto.
34539         (noop_move_p): Ditto.
34540         (reg_overlap_mentioned_p): Ditto.
34541         (dead_or_set_p): Ditto.
34542         (dead_or_set_regno_p): Ditto.
34543         (find_reg_fusage): Ditto.
34544         (find_regno_fusage): Ditto.
34545         (side_effects_p): Ditto.
34546         (volatile_refs_p): Ditto.
34547         (volatile_insn_p): Ditto.
34548         (may_trap_p_1): Ditto.
34549         (may_trap_p): Ditto.
34550         (may_trap_or_fault_p): Ditto.
34551         (computed_jump_p): Ditto.
34552         (auto_inc_p): Ditto.
34553         (loc_mentioned_in_p): Ditto.
34554         * rtlanal.cc (computed_jump_p_1): Adjust forward declaration.
34555         (rtx_unstable_p): Change return type from int to bool
34556         and adjust function body accordingly.
34557         (rtx_addr_can_trap_p): Ditto.
34558         (reg_mentioned_p): Ditto.
34559         (no_labels_between_p): Ditto.
34560         (reg_used_between_p): Ditto.
34561         (reg_referenced_p): Ditto.
34562         (reg_set_between_p): Ditto.
34563         (reg_set_p): Ditto.
34564         (modified_between_p): Ditto.
34565         (modified_in_p): Ditto.
34566         (multiple_sets): Ditto.
34567         (set_noop_p): Ditto.
34568         (noop_move_p): Ditto.
34569         (reg_overlap_mentioned_p): Ditto.
34570         (dead_or_set_p): Ditto.
34571         (dead_or_set_regno_p): Ditto.
34572         (find_reg_fusage): Ditto.
34573         (find_regno_fusage): Ditto.
34574         (remove_node_from_insn_list): Ditto.
34575         (volatile_insn_p): Ditto.
34576         (volatile_refs_p): Ditto.
34577         (side_effects_p): Ditto.
34578         (may_trap_p_1): Ditto.
34579         (may_trap_p): Ditto.
34580         (may_trap_or_fault_p): Ditto.
34581         (computed_jump_p): Ditto.
34582         (auto_inc_p): Ditto.
34583         (loc_mentioned_in_p): Ditto.
34584         * combine.cc (can_combine_p): Update indirect function.
34586 2023-05-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
34588         * config/riscv/autovec.md (<optab><mode><vconvert>2): New pattern.
34589         * config/riscv/iterators.md: New attribute.
34590         * config/riscv/vector-iterators.md: New attribute.
34592 2023-05-30  From: Juzhe-Zhong  <juzhe.zhong@rivai.ai>
34594         * config/riscv/riscv.md: Fix signed and unsigned comparison
34595         warning.
34597 2023-05-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
34599         * config/riscv/autovec.md (fnma<mode>4): New pattern.
34600         (*fnma<mode>): Ditto.
34602 2023-05-29  Die Li  <lidie@eswincomputing.com>
34604         * config/riscv/riscv.cc (riscv_expand_conditional_move_onesided):
34605         Delete.
34606         (riscv_expand_conditional_move):  Reuse the TARGET_SFB_ALU expand
34607         process for TARGET_XTHEADCONDMOV
34609 2023-05-29  Uros Bizjak  <ubizjak@gmail.com>
34611         PR target/110021
34612         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also require
34613         TARGET_AVX512BW to generate truncv16hiv16qi2.
34615 2023-05-29  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
34617         * config/riscv/riscv.md (and<mode>3): New expander.
34618         (*and<mode>3) New pattern.
34619         * config/riscv/predicates.md (arith_operand_or_mode_mask): New
34620         predicate.
34622 2023-05-29  Pan Li  <pan2.li@intel.com>
34624         * config/riscv/riscv-v.cc (emit_vlmax_insn): Remove unnecessary
34625         comments and rename local variables.
34626         (emit_nonvlmax_insn): Diito.
34627         (emit_vlmax_merge_insn): Ditto.
34628         (emit_vlmax_cmp_insn): Ditto.
34629         (emit_vlmax_cmp_mu_insn): Ditto.
34630         (emit_scalar_move_insn): Ditto.
34632 2023-05-29  Pan Li  <pan2.li@intel.com>
34634         * config/riscv/riscv-v.cc (emit_vlmax_insn): Eliminate the
34635         magic number.
34636         (emit_nonvlmax_insn): Ditto.
34637         (emit_vlmax_merge_insn): Ditto.
34638         (emit_vlmax_cmp_insn): Ditto.
34639         (emit_vlmax_cmp_mu_insn): Ditto.
34640         (expand_vec_series): Ditto.
34642 2023-05-29  Pan Li  <pan2.li@intel.com>
34644         * config/riscv/riscv-protos.h (enum insn_type): New type.
34645         * config/riscv/riscv-v.cc (RVV_INSN_OPERANDS_MAX): New macro.
34646         (rvv_builder::can_duplicate_repeating_sequence_p): Align the referenced
34647         class member.
34648         (rvv_builder::get_merged_repeating_sequence): Ditto.
34649         (rvv_builder::repeating_sequence_use_merge_profitable_p): New function
34650         to evaluate the optimization cost.
34651         (rvv_builder::get_merge_scalar_mask): New function to get the merge
34652         mask.
34653         (emit_scalar_move_insn): New function to emit vmv.s.x.
34654         (emit_vlmax_integer_move_insn): New function to emit vlmax vmv.v.x.
34655         (emit_nonvlmax_integer_move_insn): New function to emit nonvlmax
34656         vmv.v.x.
34657         (get_repeating_sequence_dup_machine_mode): New function to get the dup
34658         machine mode.
34659         (expand_vector_init_merge_repeating_sequence): New function to perform
34660         the optimization.
34661         (expand_vec_init): Add this vector init optimization.
34662         * config/riscv/riscv.h (BITS_PER_WORD): New macro.
34664 2023-05-29  Eric Botcazou  <ebotcazou@adacore.com>
34666         * tree-ssa-loop-manip.cc (create_iv): Try harder to find a SLOC to
34667         put onto the increment when it is inserted after the position.
34669 2023-05-29  Eric Botcazou  <ebotcazou@adacore.com>
34671         * match.pd ((T)P - (T)(P + A) -> -(T) A): Avoid artificial overflow
34672         on constants.
34674 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
34676         * config/riscv/riscv-vsetvl.cc (source_equal_p): Fix ICE.
34678 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
34680         * config/riscv/autovec.md (fma<mode>4): New pattern.
34681         (*fma<mode>): Ditto.
34682         * config/riscv/riscv-protos.h (enum insn_type): New enum.
34683         (emit_vlmax_ternary_insn): New function.
34684         * config/riscv/riscv-v.cc (emit_vlmax_ternary_insn): Ditto.
34686 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
34688         * config/riscv/vector.md: Fix vimuladd instruction bug.
34690 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
34692         * config/riscv/riscv.cc (global_state_unknown_p): New function.
34693         (riscv_mode_after): Fix incorrect VXM.
34695 2023-05-29  Pan Li  <pan2.li@intel.com>
34697         * common/config/riscv/riscv-common.cc:
34698         (riscv_implied_info): Add zvfhmin item.
34699         (riscv_ext_version_table): Ditto.
34700         (riscv_ext_flag_table): Ditto.
34701         * config/riscv/riscv-opts.h (MASK_ZVFHMIN): New macro.
34702         (TARGET_ZFHMIN): Align indent.
34703         (TARGET_ZFH): Ditto.
34704         (TARGET_ZVFHMIN): New macro.
34706 2023-05-27  liuhongt  <hongtao.liu@intel.com>
34708         PR target/100711
34709         * config/i386/sse.md (*andnot<mode>3): Extend below splitter
34710         to VI_AVX2 to cover more modes.
34712 2023-05-27  liuhongt  <hongtao.liu@intel.com>
34714         * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
34715         Remove ATOM and ICELAKE(and later) core processors.
34717 2023-05-26  Robin Dapp  <rdapp@ventanamicro.com>
34719         * config/riscv/autovec.md (<optab><mode>2): Add vneg/vnot.
34720         (abs<mode>2): Add.
34721         * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
34722         Declare.
34723         * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
34724         function.
34726 2023-05-26  Robin Dapp  <rdapp@ventanamicro.com>
34727             Juzhe Zhong  <juzhe.zhong@rivai.ai>
34729         * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): New
34730         expander.
34731         (<optab><v_quad_trunc><mode>2): Dito.
34732         (<optab><v_oct_trunc><mode>2): Dito.
34733         (trunc<mode><v_double_trunc>2): Dito.
34734         (trunc<mode><v_quad_trunc>2): Dito.
34735         (trunc<mode><v_oct_trunc>2): Dito.
34736         * config/riscv/riscv-protos.h (vectorize_related_mode): Define.
34737         (autovectorize_vector_modes): Define.
34738         * config/riscv/riscv-v.cc (vectorize_related_mode): Implement
34739         hook.
34740         (autovectorize_vector_modes): Implement hook.
34741         * config/riscv/riscv.cc (riscv_autovectorize_vector_modes):
34742         Implement target hook.
34743         (riscv_vectorize_related_mode): Implement target hook.
34744         (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
34745         (TARGET_VECTORIZE_RELATED_MODE): Define.
34746         * config/riscv/vector-iterators.md: Add lowercase versions of
34747         mode_attr iterators.
34749 2023-05-26  Andrew Stubbs  <ams@codesourcery.com>
34750             Tobias Burnus  <tobias@codesourcery.com>
34752         * config/gcn/gcn-hsa.h (XNACKOPT): New macro.
34753         (ASM_SPEC): Use XNACKOPT.
34754         * config/gcn/gcn-opts.h (enum sram_ecc_type): Rename to ...
34755         (enum hsaco_attr_type): ... this, and generalize the names.
34756         (TARGET_XNACK): New macro.
34757         * config/gcn/gcn.cc (gcn_option_override): Update to sorry for all
34758         but -mxnack=off.
34759         (output_file_start): Update xnack handling.
34760         (gcn_hsa_declare_function_name): Use TARGET_XNACK.
34761         * config/gcn/gcn.opt (-mxnack): Add the "on/off/any" syntax.
34762         (sram_ecc_type): Rename to ...
34763         (hsaco_attr_type: ... this.)
34764         * config/gcn/mkoffload.cc (SET_XNACK_ANY): New macro.
34765         (TEST_XNACK): Delete.
34766         (TEST_XNACK_ANY): New macro.
34767         (TEST_XNACK_ON): New macro.
34768         (main): Support the new -mxnack=on/off/any syntax.
34769         * doc/invoke.texi (-mxnack): Update for new syntax.
34771 2023-05-26  Andrew Pinski  <apinski@marvell.com>
34773         * genmatch.cc (emit_debug_printf): New function.
34774         (dt_simplify::gen_1): Emit printf into the code
34775         before the `return true` or returning the folded result
34776         instead of emitting it always.
34778 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
34780         * config/xtensa/xtensa-protos.h
34781         (xtensa_expand_block_set_unrolled_loop,
34782         xtensa_expand_block_set_small_loop): Remove.
34783         (xtensa_expand_block_set): New prototype.
34784         * config/xtensa/xtensa.cc
34785         (xtensa_expand_block_set_libcall): New subfunction.
34786         (xtensa_expand_block_set_unrolled_loop,
34787         xtensa_expand_block_set_small_loop): Rewrite as subfunctions.
34788         (xtensa_expand_block_set): New function that calls the above
34789         subfunctions.
34790         * config/xtensa/xtensa.md (memsetsi): Change to invoke only
34791         xtensa_expand_block_set().
34793 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
34795         * config/xtensa/xtensa-protos.h (xtensa_m1_or_1_thru_15):
34796         New prototype.
34797         * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
34798         New function.
34799         * config/xtensa/constraints.md (O):
34800         Change to use the above function.
34801         * config/xtensa/xtensa.md (*subsi3_from_const):
34802         New insn_and_split pattern.
34804 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
34806         * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3):
34807         Retract excessive line folding, and correct the value of
34808         the "length" insn attribute related to TARGET_DENSITY.
34809         (*extzvsi-1bit_addsubx): Ditto.
34811 2023-05-26  Uros Bizjak  <ubizjak@gmail.com>
34813         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi):
34814         Do not disable call to ix86_expand_vecop_qihi2.
34816 2023-05-26  liuhongt  <hongtao.liu@intel.com>
34818         PR target/109610
34819         PR target/109858
34820         * ira-costs.cc (scan_one_insn): Only use NO_REGS in cost
34821         calculation when !hard_regno_mode_ok for GENERAL_REGS and
34822         mode, otherwise still use GENERAL_REGS.
34824 2023-05-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
34826         * config/riscv/riscv.cc (vector_zero_call_used_regs): Add
34827         explict VL and drop VL in ops.
34829 2023-05-25  Jin Ma  <jinma@linux.alibaba.com>
34831         * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion
34832         in different BB blocks.
34834 2023-05-25  Uros Bizjak  <ubizjak@gmail.com>
34836         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
34837         Rewrite to expand to 2x-wider (e.g. V16QI -> V16HImode)
34838         instructions when available.  Emulate truncation via
34839         ix86_expand_vec_perm_const_1 when native truncate insn
34840         is not available.
34841         (ix86_expand_vecop_qihi_partial) <case MULT>: Use pmovzx
34842         when available.  Trivially rename some variables.
34843         (ix86_expand_vecop_qihi): Unconditionally call ix86_expand_vecop_qihi2.
34844         * config/i386/i386.cc (ix86_multiplication_cost): Rewrite cost
34845         calculation of V*QImode emulations to account for generation of
34846         2x-wider mode instructions.
34847         (ix86_shift_rotate_cost): Update cost calculation of V*QImode
34848         emulations to account for generation of 2x-wider mode instructions.
34850 2023-05-25  Georg-Johann Lay  <avr@gjlay.de>
34852         PR target/104327
34853         * config/avr/avr.cc (avr_can_inline_p): New static function.
34854         (TARGET_CAN_INLINE_P): Define to that function.
34856 2023-05-25  Georg-Johann Lay  <avr@gjlay.de>
34858         PR target/82931
34859         * config/avr/avr.md (*movbitqi.0): Rename to *movbit<mode>.0-6.
34860         Handle any bit position and use mode QISI.
34861         * config/avr/avr.cc (avr_rtx_costs_1) [IOR]: Return a cost
34862         of 2 insns for bit-transfer of respective style.
34864 2023-05-25  Christophe Lyon  <christophe.lyon@linaro.org>
34866         * config/arm/iterators.md (MVE_6): Remove.
34867         * config/arm/mve.md: Replace MVE_6 with MVE_5.
34869 2023-05-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
34870             Richard Sandiford  <richard.sandiford@arm.com>
34872         * tree-vect-loop-manip.cc (vect_adjust_loop_lens_control): New
34873         function.
34874         (vect_set_loop_controls_directly): Add decrement IV support.
34875         (vect_set_loop_condition_partial_vectors): Ditto.
34876         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): New
34877         variable.
34878         * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
34879         macro.
34881 2023-05-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
34883         PR target/99195
34884         * config/aarch64/aarch64-simd.md (aarch64_fcadd<rot><mode>): Rename to...
34885         (aarch64_fcadd<rot><mode><vczle><vczbe>): ... This.
34886         Fix canonicalization of PLUS operands.
34887         (aarch64_fcmla<rot><mode>): Rename to...
34888         (aarch64_fcmla<rot><mode><vczle><vczbe>): ... This.
34889         Fix canonicalization of PLUS operands.
34890         (aarch64_fcmla_lane<rot><mode>): Rename to...
34891         (aarch64_fcmla_lane<rot><mode><vczle><vczbe>): ... This.
34892         Fix canonicalization of PLUS operands.
34893         (aarch64_fcmla_laneq<rot>v4hf): Rename to...
34894         (aarch64_fcmla_laneq<rot>v4hf<vczle><vczbe>): ... This.
34895         Fix canonicalization of PLUS operands.
34896         (aarch64_fcmlaq_lane<rot><mode>): Fix canonicalization of PLUS operands.
34898 2023-05-25  Chris Sidebottom  <chris.sidebottom@arm.com>
34900         * config/arm/arm.md (rbitsi2): Rename to...
34901         (arm_rbit): ... This.
34902         (ctzsi2): Adjust for the above.
34903         (arm_rev16si2): Convert to define_expand.
34904         (arm_rev16si2_alt1): New pattern.
34905         (arm_rev16si2_alt): Rename to...
34906         (*arm_rev16si2_alt2): ... This.
34907         * config/arm/arm_acle.h (__ror, __rorl, __rorll, __clz, __clzl, __clzll,
34908         __cls, __clsl, __clsll, __revsh, __rev, __revl, __revll, __rev16,
34909         __rev16l, __rev16ll, __rbit, __rbitl, __rbitll): Define intrinsics.
34910         * config/arm/arm_acle_builtins.def (rbit, rev16si2): Define builtins.
34912 2023-05-25  Alex Coplan  <alex.coplan@arm.com>
34914         PR target/109800
34915         * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
34916         instead of DFmode.
34917         * config/arm/vfp.md (no_literal_pool_df_immediate): Rather than punning an
34918         lvalue DFmode pseudo into DImode, use a DImode pseudo and pun it into
34919         DFmode as an rvalue.
34921 2023-05-25  Richard Biener  <rguenther@suse.de>
34923         PR target/109955
34924         * tree-vect-stmts.cc (vectorizable_condition): For
34925         embedded comparisons also handle the case when the target
34926         only provides vec_cmp and vcond_mask.
34928 2023-05-25  Claudiu Zissulescu  <claziss@gmail.com>
34930         * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using
34931         TLS Local Dynamic.
34933 2023-05-25  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
34935         * config/aarch64/aarch64.cc (scalar_move_insn_p): New function.
34936         (seq_cost_ignoring_scalar_moves): Likewise.
34937         (aarch64_expand_vector_init): Call seq_cost_ignoring_scalar_moves.
34939 2023-05-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
34941         * config/aarch64/arm_neon.h (vcage_f64): Reimplement with builtins.
34942         (vcage_f32): Likewise.
34943         (vcages_f32): Likewise.
34944         (vcageq_f32): Likewise.
34945         (vcaged_f64): Likewise.
34946         (vcageq_f64): Likewise.
34947         (vcagts_f32): Likewise.
34948         (vcagt_f32): Likewise.
34949         (vcagt_f64): Likewise.
34950         (vcagtq_f32): Likewise.
34951         (vcagtd_f64): Likewise.
34952         (vcagtq_f64): Likewise.
34953         (vcale_f32): Likewise.
34954         (vcale_f64): Likewise.
34955         (vcaled_f64): Likewise.
34956         (vcales_f32): Likewise.
34957         (vcaleq_f32): Likewise.
34958         (vcaleq_f64): Likewise.
34959         (vcalt_f32): Likewise.
34960         (vcalt_f64): Likewise.
34961         (vcaltd_f64): Likewise.
34962         (vcaltq_f32): Likewise.
34963         (vcaltq_f64): Likewise.
34964         (vcalts_f32): Likewise.
34966 2023-05-25  Hu, Lin1  <lin1.hu@intel.com>
34968         PR target/109173
34969         PR target/109174
34970         * config/i386/avx512bwintrin.h (_mm512_srli_epi16): Change type from
34971         int to const int or const int to const unsigned int.
34972         (_mm512_mask_srli_epi16): Ditto.
34973         (_mm512_slli_epi16): Ditto.
34974         (_mm512_mask_slli_epi16): Ditto.
34975         (_mm512_maskz_slli_epi16): Ditto.
34976         (_mm512_srai_epi16): Ditto.
34977         (_mm512_mask_srai_epi16): Ditto.
34978         (_mm512_maskz_srai_epi16): Ditto.
34979         * config/i386/avx512fintrin.h (_mm512_slli_epi64): Ditto.
34980         (_mm512_mask_slli_epi64): Ditto.
34981         (_mm512_maskz_slli_epi64): Ditto.
34982         (_mm512_srli_epi64): Ditto.
34983         (_mm512_mask_srli_epi64): Ditto.
34984         (_mm512_maskz_srli_epi64): Ditto.
34985         (_mm512_srai_epi64): Ditto.
34986         (_mm512_mask_srai_epi64): Ditto.
34987         (_mm512_maskz_srai_epi64): Ditto.
34988         (_mm512_slli_epi32): Ditto.
34989         (_mm512_mask_slli_epi32): Ditto.
34990         (_mm512_maskz_slli_epi32): Ditto.
34991         (_mm512_srli_epi32): Ditto.
34992         (_mm512_mask_srli_epi32): Ditto.
34993         (_mm512_maskz_srli_epi32): Ditto.
34994         (_mm512_srai_epi32): Ditto.
34995         (_mm512_mask_srai_epi32): Ditto.
34996         (_mm512_maskz_srai_epi32): Ditto.
34997         * config/i386/avx512vlbwintrin.h (_mm256_mask_srai_epi16): Ditto.
34998         (_mm256_maskz_srai_epi16): Ditto.
34999         (_mm_mask_srai_epi16): Ditto.
35000         (_mm_maskz_srai_epi16): Ditto.
35001         (_mm256_mask_slli_epi16): Ditto.
35002         (_mm256_maskz_slli_epi16): Ditto.
35003         (_mm_mask_slli_epi16): Ditto.
35004         (_mm_maskz_slli_epi16): Ditto.
35005         (_mm_maskz_srli_epi16): Ditto.
35006         * config/i386/avx512vlintrin.h (_mm256_mask_srli_epi32): Ditto.
35007         (_mm256_maskz_srli_epi32): Ditto.
35008         (_mm_mask_srli_epi32): Ditto.
35009         (_mm_maskz_srli_epi32): Ditto.
35010         (_mm256_mask_srli_epi64): Ditto.
35011         (_mm256_maskz_srli_epi64): Ditto.
35012         (_mm_mask_srli_epi64): Ditto.
35013         (_mm_maskz_srli_epi64): Ditto.
35014         (_mm256_mask_srai_epi32): Ditto.
35015         (_mm256_maskz_srai_epi32): Ditto.
35016         (_mm_mask_srai_epi32): Ditto.
35017         (_mm_maskz_srai_epi32): Ditto.
35018         (_mm256_srai_epi64): Ditto.
35019         (_mm256_mask_srai_epi64): Ditto.
35020         (_mm256_maskz_srai_epi64): Ditto.
35021         (_mm_srai_epi64): Ditto.
35022         (_mm_mask_srai_epi64): Ditto.
35023         (_mm_maskz_srai_epi64): Ditto.
35024         (_mm_mask_slli_epi32): Ditto.
35025         (_mm_maskz_slli_epi32): Ditto.
35026         (_mm_mask_slli_epi64): Ditto.
35027         (_mm_maskz_slli_epi64): Ditto.
35028         (_mm256_mask_slli_epi32): Ditto.
35029         (_mm256_maskz_slli_epi32): Ditto.
35030         (_mm256_mask_slli_epi64): Ditto.
35031         (_mm256_maskz_slli_epi64): Ditto.
35033 2023-05-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
35035         * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz
35036         instructions.
35038 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
35040         * data-streamer-in.cc (streamer_read_value_range): Handle NANs.
35041         * data-streamer-out.cc (streamer_write_vrange): Same.
35042         * value-range.h (class vrange): Make streamer_write_vrange a friend.
35044 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
35046         * value-query.cc (range_query::get_tree_range): Set NAN directly
35047         if necessary.
35048         * value-range.cc (frange::set): Assert that bounds are not NAN.
35050 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
35052         * value-range.cc (add_vrange): Handle known NANs.
35054 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
35056         * value-range.h (frange::set_nan): New.
35058 2023-05-25  Alexandre Oliva  <oliva@adacore.com>
35060         PR target/100106
35061         * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that
35062         requires stricter alignment than MEM's.
35064 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
35066         PR tree-optimization/107822
35067         PR tree-optimization/107986
35068         * Makefile.in (OBJS): Add gimple-range-phi.o.
35069         * gimple-range-cache.h (ranger_cache::m_estimate): New
35070         phi_analyzer pointer member.
35071         * gimple-range-fold.cc (fold_using_range::range_of_phi): Use
35072         phi_analyzer if no loop info is available.
35073         * gimple-range-phi.cc: New file.
35074         * gimple-range-phi.h: New file.
35075         * tree-vrp.cc (execute_ranger_vrp): Utililze a phi_analyzer.
35077 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
35079         * gimple-range-fold.cc (fur_list::fur_list): Add range_query param
35080         to contructors.
35081         (fold_range): Add range_query parameter.
35082         (fur_relation::fur_relation): New.
35083         (fur_relation::trio): New.
35084         (fur_relation::register_relation): New.
35085         (fold_relations): New.
35086         * gimple-range-fold.h (fold_range): Adjust prototypes.
35087         (fold_relations): New.
35089 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
35091         * gimple-range-cache.cc (ssa_cache::range_of_expr): New.
35092         * gimple-range-cache.h (class ssa_cache): Inherit from range_query.
35093         (ranger_cache::const_query): New.
35094         * gimple-range.cc (gimple_ranger::const_query): New.
35095         * gimple-range.h (gimple_ranger::const_query): New prototype.
35097 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
35099         * gimple-range-cache.cc (ssa_cache::dump): Use get_range.
35100         (ssa_cache::dump_range_query): Delete.
35101         (ssa_lazy_cache::dump_range_query): Delete.
35102         (ssa_lazy_cache::get_range): Move from header file.
35103         (ssa_lazy_cache::clear_range): ditto.
35104         (ssa_lazy_cache::clear): Ditto.
35105         * gimple-range-cache.h (class ssa_cache): Virtualize.
35106         (class ssa_lazy_cache): Inherit and virtualize.
35108 2023-05-24  Aldy Hernandez  <aldyh@redhat.com>
35110         * value-range.h (vrange::kind): Remove.
35112 2023-05-24  Roger Sayle  <roger@nextmovesoftware.com>
35114         PR middle-end/109840
35115         * match.pd <popcount optimizations>: Preserve zero-extension when
35116         optimizing popcount((T)bswap(x)) and popcount((T)rotate(x,y)) as
35117         popcount((T)x), so the popcount's argument keeps the same type.
35118         <parity optimizations>:  Likewise preserve extensions when
35119         simplifying parity((T)bswap(x)) and parity((T)rotate(x,y)) as
35120         parity((T)x), so that the parity's argument type is the same.
35122 2023-05-24  Aldy Hernandez  <aldyh@redhat.com>
35124         * ipa-cp.cc (ipa_value_range_from_jfunc): Use new ipa_vr API.
35125         (ipcp_store_vr_results): Same.
35126         * ipa-prop.cc (ipa_vr::ipa_vr): New.
35127         (ipa_vr::get_vrange): New.
35128         (ipa_vr::set_unknown): New.
35129         (ipa_vr::streamer_read): New.
35130         (ipa_vr::streamer_write): New.
35131         (write_ipcp_transformation_info): Use new ipa_vr API.
35132         (read_ipcp_transformation_info): Same.
35133         (ipa_vr::nonzero_p): Delete.
35134         (ipcp_update_vr): Use new ipa_vr API.
35135         * ipa-prop.h (class ipa_vr): Provide an API and hide internals.
35136         * ipa-sra.cc (zap_useless_ipcp_results): Use new ipa_vr API.
35138 2023-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
35140         * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to
35141         silence overflow warnings later on.
35143 2023-05-24  Uros Bizjak  <ubizjak@gmail.com>
35145         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
35146         Remove handling of V8QImode.
35147         * config/i386/mmx.md (v<insn>v8qi3): Move from sse.md.
35148         Call ix86_expand_vecop_qihi_partial.  Enable for TARGET_MMX_WITH_SSE.
35149         (v<insn>v4qi3): Ditto.
35150         * config/i386/sse.md (v<insn>v8qi3): Remove.
35152 2023-05-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35154         PR target/99195
35155         * config/aarch64/aarch64-simd.md (aarch64_simd_lshr<mode>): Rename to...
35156         (aarch64_simd_lshr<mode><vczle><vczbe>): ... This.
35157         (aarch64_simd_ashr<mode>): Rename to...
35158         (aarch64_simd_ashr<mode><vczle><vczbe>): ... This.
35159         (aarch64_simd_imm_shl<mode>): Rename to...
35160         (aarch64_simd_imm_shl<mode><vczle><vczbe>): ... This.
35161         (aarch64_simd_reg_sshl<mode>): Rename to...
35162         (aarch64_simd_reg_sshl<mode><vczle><vczbe>): ... This.
35163         (aarch64_simd_reg_shl<mode>_unsigned): Rename to...
35164         (aarch64_simd_reg_shl<mode>_unsigned<vczle><vczbe>): ... This.
35165         (aarch64_simd_reg_shl<mode>_signed): Rename to...
35166         (aarch64_simd_reg_shl<mode>_signed<vczle><vczbe>): ... This.
35167         (vec_shr_<mode>): Rename to...
35168         (vec_shr_<mode><vczle><vczbe>): ... This.
35169         (aarch64_<sur>shl<mode>): Rename to...
35170         (aarch64_<sur>shl<mode><vczle><vczbe>): ... This.
35171         (aarch64_<sur>q<r>shl<mode>): Rename to...
35172         (aarch64_<sur>q<r>shl<mode><vczle><vczbe>): ... This.
35174 2023-05-24  Richard Biener  <rguenther@suse.de>
35176         PR target/109944
35177         * config/i386/i386-expand.cc (ix86_expand_vector_init_general):
35178         Perform final vector composition using
35179         ix86_expand_vector_init_general instead of setting
35180         the highpart and lowpart which causes spilling.
35182 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
35184         PR tree-optimization/109695
35185         * gimple-range-cache.cc (ranger_cache::get_global_range): Add
35186         changed param.
35187         * gimple-range-cache.h (ranger_cache::get_global_range): Ditto.
35188         * gimple-range.cc (gimple_ranger::range_of_stmt): Pass changed
35189         flag to set_global_range.
35190         (gimple_ranger::prefill_stmt_dependencies): Ditto.
35192 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
35194         PR tree-optimization/109695
35195         * gimple-range-cache.cc (temporal_cache::temporal_value): Return
35196         a positive int.
35197         (temporal_cache::current_p): Check always_current method.
35198         (temporal_cache::set_always_current): Add param and set value
35199         appropriately.
35200         (temporal_cache::always_current_p): New.
35201         (ranger_cache::get_global_range): Adjust.
35202         (ranger_cache::set_global_range): set always current first.
35204 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
35206         PR tree-optimization/109695
35207         * gimple-range-cache.cc (ranger_cache::get_global_range): Call
35208         fold_range with global query to choose an initial value.
35210 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
35212         * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_
35213         prefix.
35215 2023-05-24  Richard Biener  <rguenther@suse.de>
35217         PR tree-optimization/109849
35218         * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect
35219         expressions but take the first sets.
35221 2023-05-24  Gaius Mulley  <gaiusmod2@gmail.com>
35223         PR modula2/109952
35224         * doc/gm2.texi (High procedure function): New node.
35225         (Using): New menu entry for High procedure function.
35227 2023-05-24  Richard Sandiford  <richard.sandiford@arm.com>
35229         PR rtl-optimization/109940
35230         * early-remat.cc (postorder_index): Rename to...
35231         (rpo_index): ...this.
35232         (compare_candidates): Sort by decreasing rpo_index rather than
35233         increasing postorder_index.
35234         (early_remat::sort_candidates): Calculate the forward RPO from
35235         DF_FORWARD.
35236         (early_remat::local_phase): Follow forward RPO using DF_FORWARD,
35237         rather than DF_BACKWARD in reverse.
35239 2023-05-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35241         PR target/109939
35242         * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use
35243         qualifier_none for the return operand.
35245 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
35247         * config/riscv/autovec.md (<optab><mode>3): New pattern.
35248         (one_cmpl<mode>2): Ditto.
35249         (*<optab>not<mode>): Ditto.
35250         (*n<optab><mode>): Ditto.
35251         * config/riscv/riscv-v.cc (expand_vec_cmp_float): Change to
35252         one_cmpl.
35254 2023-05-24  Kewen Lin  <linkw@linux.ibm.com>
35256         * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the
35257         calculation on n_perms by considering nvectors_per_build.
35259 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
35260             Richard Sandiford  <richard.sandiford@arm.com>
35262         * config/riscv/autovec.md (@vcond_mask_<mode><vm>): New pattern.
35263         (vec_cmp<mode><vm>): New pattern.
35264         (vec_cmpu<mode><vm>): New pattern.
35265         (vcond<V:mode><VI:mode>): New pattern.
35266         (vcondu<V:mode><VI:mode>): New pattern.
35267         * config/riscv/riscv-protos.h (enum insn_type): Add new enum.
35268         (emit_vlmax_merge_insn): New function.
35269         (emit_vlmax_cmp_insn): Ditto.
35270         (emit_vlmax_cmp_mu_insn): Ditto.
35271         (expand_vec_cmp): Ditto.
35272         (expand_vec_cmp_float): Ditto.
35273         (expand_vcond): Ditto.
35274         * config/riscv/riscv-v.cc (emit_vlmax_merge_insn): Ditto.
35275         (emit_vlmax_cmp_insn): Ditto.
35276         (emit_vlmax_cmp_mu_insn): Ditto.
35277         (get_cmp_insn_code): Ditto.
35278         (expand_vec_cmp): Ditto.
35279         (expand_vec_cmp_float): Ditto.
35280         (expand_vcond): Ditto.
35282 2023-05-24  Pan Li  <pan2.li@intel.com>
35284         * config/riscv/genrvv-type-indexer.cc (main): Add
35285         unsigned_eew*_lmul1_interpret for indexer.
35286         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
35287         Register vuint*m1_t interpret function.
35288         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
35289         New macro for vuint8m1_t.
35290         (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
35291         (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
35292         (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
35293         (vbool1_t): Add to unsigned_eew*_interpret_ops.
35294         (vbool2_t): Likewise.
35295         (vbool4_t): Likewise.
35296         (vbool8_t): Likewise.
35297         (vbool16_t): Likewise.
35298         (vbool32_t): Likewise.
35299         (vbool64_t): Likewise.
35300         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
35301         New macro for vuint*m1_t.
35302         (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
35303         (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
35304         (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
35305         (required_extensions_p): Add vuint*m1_t interpret case.
35306         * config/riscv/riscv-vector-builtins.def (unsigned_eew8_lmul1_interpret):
35307         Add vuint*m1_t interpret to base type.
35308         (unsigned_eew16_lmul1_interpret): Likewise.
35309         (unsigned_eew32_lmul1_interpret): Likewise.
35310         (unsigned_eew64_lmul1_interpret): Likewise.
35312 2023-05-24  Pan Li  <pan2.li@intel.com>
35314         * config/riscv/genrvv-type-indexer.cc (EEW_SIZE_LIST): New macro
35315         for the eew size list.
35316         (LMUL1_LOG2): New macro for the log2 value of lmul=1.
35317         (main): Add signed_eew*_lmul1_interpret for indexer.
35318         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
35319         Register vint*m1_t interpret function.
35320         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
35321         New macro for vint8m1_t.
35322         (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
35323         (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
35324         (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
35325         (vbool1_t): Add to signed_eew*_interpret_ops.
35326         (vbool2_t): Likewise.
35327         (vbool4_t): Likewise.
35328         (vbool8_t): Likewise.
35329         (vbool16_t): Likewise.
35330         (vbool32_t): Likewise.
35331         (vbool64_t): Likewise.
35332         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
35333         New macro for vint*m1_t.
35334         (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
35335         (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
35336         (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
35337         (required_extensions_p): Add vint8m1_t interpret case.
35338         * config/riscv/riscv-vector-builtins.def (signed_eew8_lmul1_interpret):
35339         Add vint*m1_t interpret to base type.
35340         (signed_eew16_lmul1_interpret): Likewise.
35341         (signed_eew32_lmul1_interpret): Likewise.
35342         (signed_eew64_lmul1_interpret): Likewise.
35344 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
35346         * config/riscv/autovec.md: Adjust for new interface.
35347         * config/riscv/riscv-protos.h (emit_vlmax_insn): Add VL operand.
35348         (emit_nonvlmax_insn): Add AVL operand.
35349         * config/riscv/riscv-v.cc (emit_vlmax_insn): Add VL operand.
35350         (emit_nonvlmax_insn): Add AVL operand.
35351         (sew64_scalar_helper): Adjust for new interface.
35352         (expand_tuple_move): Ditto.
35353         * config/riscv/vector.md: Ditto.
35355 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
35357         * config/riscv/riscv-v.cc (expand_vec_series): Remove magic number.
35358         (expand_const_vector): Ditto.
35359         (legitimize_move): Ditto.
35360         (sew64_scalar_helper): Ditto.
35361         (expand_tuple_move): Ditto.
35362         (expand_vector_init_insert_elems): Ditto.
35363         * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
35365 2023-05-24  liuhongt  <hongtao.liu@intel.com>
35367         PR target/109900
35368         * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
35369         _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} and
35370         _mm_abs_{pi8,pi16,pi32} into gimple ABS_EXPR.
35371         (ix86_masked_all_ones): Handle 64-bit mask.
35372         * config/i386/i386-builtin.def: Replace icode of related
35373         non-mask simd abs builtins with CODE_FOR_nothing.
35375 2023-05-23  Martin Uecker  <uecker@tugraz.at>
35377         PR c/109450
35378         * function.cc (gimplify_parm_type): Remove function.
35379         (gimplify_parameters): Call gimplify_type_sizes.
35381 2023-05-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
35383         * config/xtensa/xtensa.md (*addsubx): Rename from '*addx',
35384         and change to also accept '*subx' pattern.
35385         (*subx): Remove.
35387 2023-05-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
35389         * config/xtensa/predicates.md (addsub_operator): New.
35390         * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3,
35391         *extzvsi-1bit_addsubx): New insn_and_split patterns.
35392         * config/xtensa/xtensa.cc (xtensa_rtx_costs):
35393         Add a special case about ifcvt 'noce_try_cmove()' to handle
35394         constant loads that do not fit into signed 12 bits in the
35395         patterns added above.
35397 2023-05-23  Richard Biener  <rguenther@suse.de>
35399         PR tree-optimization/109747
35400         * tree-vect-slp.cc (vect_prologue_cost_for_slp): Pass down
35401         the SLP node only once to the cost hook.
35403 2023-05-23  Georg-Johann Lay  <avr@gjlay.de>
35405         * config/avr/avr.cc (avr_insn_cost): New static function.
35406         (TARGET_INSN_COST): Define to that function.
35408 2023-05-23  Richard Biener  <rguenther@suse.de>
35410         PR target/109944
35411         * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
35412         For vector construction or splats apply GPR->XMM move
35413         costing.  QImode memory can be handled directly only
35414         with SSE4.1 pinsrb.
35416 2023-05-23  Richard Biener  <rguenther@suse.de>
35418         PR tree-optimization/108752
35419         * tree-vect-stmts.cc (vectorizable_operation): For bit
35420         operations with generic word_mode vectors do not cost
35421         an extra stmt.  For plus, minus and negate also cost the
35422         constant materialization.
35424 2023-05-23  Uros Bizjak  <ubizjak@gmail.com>
35426         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial):
35427         Call ix86_expand_vec_shift_qihi_constant for shifts
35428         with constant count operand.
35429         * config/i386/i386.cc (ix86_shift_rotate_cost):
35430         Handle V4QImode and V8QImode.
35431         * config/i386/mmx.md (<insn>v8qi3): New insn pattern.
35432         (<insn>v4qi3): Ditto.
35434 2023-05-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
35436         * config/riscv/vector.md: Add mode.
35438 2023-05-23  Aldy Hernandez  <aldyh@redhat.com>
35440         PR tree-optimization/109934
35441         * value-range.cc (irange::invert): Remove buggy special case.
35443 2023-05-23  Richard Biener  <rguenther@suse.de>
35445         * tree-ssa-pre.cc (compute_antic_aux): Dump the correct
35446         ANTIC_OUT.
35448 2023-05-23  Richard Sandiford  <richard.sandiford@arm.com>
35450         PR target/109632
35451         * config/aarch64/aarch64.cc (aarch64_modes_tieable_p): Allow
35452         subregs between any scalars that are 64 bits or smaller.
35453         * config/aarch64/iterators.md (SUBDI_BITS): New int iterator.
35454         (bits_etype): New int attribute.
35455         * config/aarch64/aarch64.md (*insv_reg<mode>_<SUBDI_BITS>)
35456         (*aarch64_bfi<GPI:mode><ALLX:mode>_<SUBDI_BITS>): New patterns.
35457         (*aarch64_bfidi<ALLX:mode>_subreg_<SUBDI_BITS>): Likewise.
35459 2023-05-23  Richard Sandiford  <richard.sandiford@arm.com>
35461         * doc/md.texi: Document that <FOO> can be used to refer to the
35462         numerical value of an int iterator FOO.  Tweak other parts of
35463         the int iterator documentation.
35464         * read-rtl.cc (iterator_group::has_self_attr): New field.
35465         (map_attr_string): When has_self_attr is true, make <FOO>
35466         expand to the current value of iterator FOO.
35467         (initialize_iterators): Set has_self_attr for int iterators.
35469 2023-05-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
35471         * config/riscv/autovec.md: Refactor the framework of RVV auto-vectorization.
35472         * config/riscv/riscv-protos.h (RVV_MISC_OP_NUM): Ditto.
35473         (RVV_UNOP_NUM): New macro.
35474         (RVV_BINOP_NUM): Ditto.
35475         (legitimize_move): Refactor the framework of RVV auto-vectorization.
35476         (emit_vlmax_op): Ditto.
35477         (emit_vlmax_reg_op): Ditto.
35478         (emit_len_op): Ditto.
35479         (emit_len_binop): Ditto.
35480         (emit_vlmax_tany_many): Ditto.
35481         (emit_nonvlmax_tany_many): Ditto.
35482         (sew64_scalar_helper): Ditto.
35483         (expand_tuple_move): Ditto.
35484         * config/riscv/riscv-v.cc (emit_pred_op): Ditto.
35485         (emit_pred_binop): Ditto.
35486         (emit_vlmax_op): Ditto.
35487         (emit_vlmax_tany_many): New function.
35488         (emit_len_op): Remove.
35489         (emit_nonvlmax_tany_many): New function.
35490         (emit_vlmax_reg_op): Remove.
35491         (emit_len_binop): Ditto.
35492         (emit_index_op): Ditto.
35493         (expand_vec_series): Refactor the framework of RVV auto-vectorization.
35494         (expand_const_vector): Ditto.
35495         (legitimize_move): Ditto.
35496         (sew64_scalar_helper): Ditto.
35497         (expand_tuple_move): Ditto.
35498         (expand_vector_init_insert_elems): Ditto.
35499         * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
35500         * config/riscv/vector.md: Ditto.
35502 2023-05-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35504         PR target/109855
35505         * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Add predicate
35506         and constraint for operand 0.
35507         (add_vec_concat_subst_be): Likewise.
35509 2023-05-23  Richard Biener  <rguenther@suse.de>
35511         PR tree-optimization/109849
35512         * tree-ssa-pre.cc (do_hoist_insertion): Compute ANTIC_OUT
35513         and use that to determine what to hoist.
35515 2023-05-23  Eric Botcazou  <ebotcazou@adacore.com>
35517         * fold-const.cc (native_encode_initializer) <CONSTRUCTOR>: Apply the
35518         specific treatment for bit-fields only if they have an integral type
35519         and filter out non-integral bit-fields that do not start and end on
35520         a byte boundary.
35522 2023-05-23  Aldy Hernandez  <aldyh@redhat.com>
35524         PR tree-optimization/109920
35525         * value-range.h (RESIZABLE>::~int_range): Use delete[].
35527 2023-05-22  Uros Bizjak  <ubizjak@gmail.com>
35529         * config/i386/i386.cc (ix86_shift_rotate_cost): Correct
35530         calcuation of integer vector mode costs to reflect generated
35531         instruction sequences of different integer vector modes and
35532         different target ABIs.  Remove "speed" function argument.
35533         (ix86_rtx_costs): Update call for removed function argument.
35534         (ix86_vector_costs::add_stmt_cost): Ditto.
35536 2023-05-22  Aldy Hernandez  <aldyh@redhat.com>
35538         * value-range.h (class Value_Range): Implement set_zero,
35539         set_nonzero, and nonzero_p.
35541 2023-05-22  Uros Bizjak  <ubizjak@gmail.com>
35543         * config/i386/i386.cc (ix86_multiplication_cost): Add
35544         the cost of a memory read to the cost of V?QImode sequences.
35546 2023-05-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
35548         * config/riscv/riscv-v.cc: Add "m_" prefix.
35550 2023-05-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
35552         * tree-vect-loop.cc (vect_get_loop_len): Fix issue for
35553         multiple-rgroup of length.
35554         * tree-vect-stmts.cc (vectorizable_store): Ditto.
35555         (vectorizable_load): Ditto.
35556         * tree-vectorizer.h (vect_get_loop_len): Ditto.
35558 2023-05-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
35560         * config/riscv/riscv.cc (riscv_const_insns): Reorganize the
35561         codes.
35563 2023-05-22  Kewen Lin  <linkw@linux.ibm.com>
35565         * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the
35566         handling for the case index == count.
35568 2023-05-21  Georg-Johann Lay  <avr@gjlay.de>
35570         PR target/90622
35571         * config/avr/avr.cc (avr_fold_builtin) [AVR_BUILTIN_INSERT_BITS]:
35572         Don't fold to XOR / AND / XOR if just one bit is copied to the
35573         same position.
35575 2023-05-21  Roger Sayle  <roger@nextmovesoftware.com>
35577         * config/nvptx/nvptx.cc (nvptx_expand_brev): Expand target
35578         builtin for bit reversal using brev instruction.
35579         (enum nvptx_builtins): Add NVPTX_BUILTIN_BREV and
35580         NVPTX_BUILTIN_BREVLL.
35581         (nvptx_init_builtins): Define "brev" and "brevll".
35582         (nvptx_expand_builtin): Expand NVPTX_BUILTIN_BREV and
35583         NVPTX_BUILTIN_BREVLL via nvptx_expand_brev function.
35584         * doc/extend.texi (Nvidia PTX Builtin-in Functions): New
35585         section, document __builtin_nvptx_brev{,ll}.
35587 2023-05-21  Jakub Jelinek  <jakub@redhat.com>
35589         PR tree-optimization/109505
35590         * match.pd ((x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2),
35591         Combine successive equal operations with constants,
35592         (A +- CST1) +- CST2 -> A + CST3, (CST1 - A) +- CST2 -> CST3 - A,
35593         CST1 - (CST2 - A) -> CST3 + A): Use ! on ops with 2 CONSTANT_CLASS_P
35594         operands.
35596 2023-05-21  Andrew Pinski  <apinski@marvell.com>
35598         * expr.cc (expand_single_bit_test): Correct bitpos for big-endian.
35600 2023-05-21  Pan Li  <pan2.li@intel.com>
35602         * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): Add the
35603         rest bool size, aka 2, 4, 8, 16, 32, 64.
35604         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
35605         Register vbool[2|4|8|16|32|64] interpret function.
35606         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_BOOL2_INTERPRET_OPS):
35607         New macro for vbool2_t.
35608         (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
35609         (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
35610         (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
35611         (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
35612         (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
35613         (vint8m1_t): Add the type to bool[2|4|8|16|32|64]_interpret_ops.
35614         (vint16m1_t): Likewise.
35615         (vint32m1_t): Likewise.
35616         (vint64m1_t): Likewise.
35617         (vuint8m1_t): Likewise.
35618         (vuint16m1_t): Likewise.
35619         (vuint32m1_t): Likewise.
35620         (vuint64m1_t): Likewise.
35621         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_BOOL2_INTERPRET_OPS):
35622         New macro for vbool2_t.
35623         (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
35624         (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
35625         (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
35626         (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
35627         (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
35628         (required_extensions_p): Add vbool[2|4|8|16|32|64] interpret case.
35629         * config/riscv/riscv-vector-builtins.def (bool2_interpret): Add
35630         vbool2_t interprect to base type.
35631         (bool4_interpret): Likewise.
35632         (bool8_interpret): Likewise.
35633         (bool16_interpret): Likewise.
35634         (bool32_interpret): Likewise.
35635         (bool64_interpret): Likewise.
35637 2023-05-21  Andrew Pinski  <apinski@marvell.com>
35639         PR middle-end/109919
35640         * expr.cc (expand_single_bit_test): Don't use the
35641         target for expand_expr.
35643 2023-05-20  Gerald Pfeifer  <gerald@pfeifer.com>
35645         * doc/install.texi (Specific): Remove de facto empty alpha*-*-*
35646         section.
35648 2023-05-20  Pan Li  <pan2.li@intel.com>
35650         * mode-switching.cc (entity_map): Initialize the array to zero.
35651         (bb_info): Ditto.
35653 2023-05-20  Triffid Hunter  <triffid.hunter@gmail.com>
35655         PR target/105753
35656         * config/avr/avr.md (divmodpsi, udivmodpsi, divmodsi, udivmodsi):
35657         Remove superfluous "parallel" in insn pattern.
35658         ([u]divmod<mode>4): Tidy code.  Use gcc_unreachable() instead of
35659         printing error text to assembly.
35661 2023-05-20  Andrew Pinski  <apinski@marvell.com>
35663         * expr.cc (fold_single_bit_test): Rename to ...
35664         (expand_single_bit_test): This and expand directly.
35665         (do_store_flag): Update for the rename function.
35667 2023-05-20  Andrew Pinski  <apinski@marvell.com>
35669         * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF
35670         instead of shift/and.
35672 2023-05-20  Andrew Pinski  <apinski@marvell.com>
35674         * expr.cc (fold_single_bit_test): Add an assert
35675         and simplify based on code being NE_EXPR or EQ_EXPR.
35677 2023-05-20  Andrew Pinski  <apinski@marvell.com>
35679         * expr.cc (fold_single_bit_test): Take inner and bitnum
35680         instead of arg0 and arg1. Update the code.
35681         (do_store_flag): Don't create a tree when calling
35682         fold_single_bit_test instead just call it with the bitnum
35683         and the inner tree.
35685 2023-05-20  Andrew Pinski  <apinski@marvell.com>
35687         * expr.cc (fold_single_bit_test): Use get_def_for_expr
35688         instead of checking the inner's code.
35690 2023-05-20  Andrew Pinski  <apinski@marvell.com>
35692         * expr.cc (fold_single_bit_test_into_sign_test): Inline into ...
35693         (fold_single_bit_test): This and simplify.
35695 2023-05-20  Andrew Pinski  <apinski@marvell.com>
35697         * fold-const.cc (fold_single_bit_test_into_sign_test): Move to
35698         expr.cc.
35699         (fold_single_bit_test): Likewise.
35700         * expr.cc (fold_single_bit_test_into_sign_test): Move from fold-const.cc
35701         (fold_single_bit_test): Likewise and make static.
35702         * fold-const.h (fold_single_bit_test): Remove declaration.
35704 2023-05-20  Die Li  <lidie@eswincomputing.com>
35706         * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode
35707         checking.
35709 2023-05-20  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
35711         * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern.
35713 2023-05-20  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
35715         PR target/106888
35716         * config/riscv/bitmanip.md
35717         (<bitmanip_optab>disi2): Match with any_extend.
35718         (<bitmanip_optab>disi2_sext): New pattern to match
35719         with sign extend using an ANDI instruction.
35721 2023-05-19  Nathan Sidwell  <nathan@acm.org>
35723         PR other/99451
35724         * opts.h (handle_deferred_dump_options): Declare.
35725         * opts-global.cc (handle_common_deferred_options): Do not handle
35726         dump options here.
35727         (handle_deferred_dump_options): New.
35728         * toplev.cc (toplev::main): Call it after plugin init.
35730 2023-05-19  Joern Rennecke  <joern.rennecke@embecosm.com>
35732         * config/riscv/constraints.md (DsS, DsD): Restore agreement
35733         with shiftm1 mode attribute.
35735 2023-05-19  Andrew Pinski  <apinski@marvell.com>
35737         PR driver/33980
35738         * gcc.cc (default_compilers["@c-header"]): Add %w
35739         after the --output-pch.
35741 2023-05-19  Vineet Gupta  <vineetg@rivosinc.com>
35743         * config/riscv/riscv.cc (riscv_split_integer): if loval is equal
35744         to hival, ASHIFT the corresponding regs.
35746 2023-05-19  Robin Dapp  <rdapp@ventanamicro.com>
35748         * config/riscv/riscv.cc (riscv_const_insns): Remove else.
35750 2023-05-19  Jakub Jelinek  <jakub@redhat.com>
35752         PR tree-optimization/105776
35753         * tree-ssa-math-opts.cc (arith_overflow_check_p): If cast_stmt is
35754         non-NULL, allow division statement to have a cast as single imm use
35755         rather than comparison/condition.
35756         (match_arith_overflow): In that case remove the cast stmt in addition
35757         to the division statement.
35759 2023-05-19  Jakub Jelinek  <jakub@redhat.com>
35761         PR tree-optimization/101856
35762         * tree-ssa-math-opts.cc (match_arith_overflow): Pattern detect
35763         unsigned __builtin_mul_overflow_p even when umulv4_optab doesn't
35764         support it but umul_highpart_optab does.
35766 2023-05-19  Eric Botcazou  <ebotcazou@adacore.com>
35768         * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead
35769         of tree_to_shwi on array indices.  Minor tweaks.
35771 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
35773         * alias.cc (ref_all_alias_ptr_type_p): Use _P() defines from tree.h.
35774         * attribs.cc (diag_attr_exclusions): Ditto.
35775         (decl_attributes): Ditto.
35776         (build_type_attribute_qual_variant): Ditto.
35777         * builtins.cc (fold_builtin_carg): Ditto.
35778         (fold_builtin_next_arg): Ditto.
35779         (do_mpc_arg2): Ditto.
35780         * cfgexpand.cc (expand_return): Ditto.
35781         * cgraph.h (decl_in_symtab_p): Ditto.
35782         (symtab_node::get_create): Ditto.
35783         * dwarf2out.cc (base_type_die): Ditto.
35784         (implicit_ptr_descriptor): Ditto.
35785         (gen_array_type_die): Ditto.
35786         (gen_type_die_with_usage): Ditto.
35787         (optimize_location_into_implicit_ptr): Ditto.
35788         * expr.cc (do_store_flag): Ditto.
35789         * fold-const.cc (negate_expr_p): Ditto.
35790         (fold_negate_expr_1): Ditto.
35791         (fold_convert_const): Ditto.
35792         (fold_convert_loc): Ditto.
35793         (constant_boolean_node): Ditto.
35794         (fold_binary_op_with_conditional_arg): Ditto.
35795         (build_fold_addr_expr_with_type_loc): Ditto.
35796         (fold_comparison): Ditto.
35797         (fold_checksum_tree): Ditto.
35798         (tree_unary_nonnegative_warnv_p): Ditto.
35799         (integer_valued_real_unary_p): Ditto.
35800         (fold_read_from_constant_string): Ditto.
35801         * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text): Ditto.
35802         * gimple-expr.cc (useless_type_conversion_p): Ditto.
35803         (is_gimple_reg): Ditto.
35804         (is_gimple_asm_val): Ditto.
35805         (mark_addressable): Ditto.
35806         * gimple-expr.h (is_gimple_variable): Ditto.
35807         (virtual_operand_p): Ditto.
35808         * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): Ditto.
35809         * gimplify.cc (gimplify_bind_expr): Ditto.
35810         (gimplify_return_expr): Ditto.
35811         (gimple_add_padding_init_for_auto_var): Ditto.
35812         (gimplify_addr_expr): Ditto.
35813         (omp_add_variable): Ditto.
35814         (omp_notice_variable): Ditto.
35815         (omp_get_base_pointer): Ditto.
35816         (omp_strip_components_and_deref): Ditto.
35817         (omp_strip_indirections): Ditto.
35818         (omp_accumulate_sibling_list): Ditto.
35819         (omp_build_struct_sibling_lists): Ditto.
35820         (gimplify_adjust_omp_clauses_1): Ditto.
35821         (gimplify_adjust_omp_clauses): Ditto.
35822         (gimplify_omp_for): Ditto.
35823         (goa_lhs_expr_p): Ditto.
35824         (gimplify_one_sizepos): Ditto.
35825         * graphite-scop-detection.cc (scop_detection::graphite_can_represent_scev): Ditto.
35826         * ipa-devirt.cc (odr_types_equivalent_p): Ditto.
35827         * ipa-prop.cc (ipa_set_jf_constant): Ditto.
35828         (propagate_controlled_uses): Ditto.
35829         * ipa-sra.cc (type_prevails_p): Ditto.
35830         (scan_expr_access): Ditto.
35831         * optabs-tree.cc (optab_for_tree_code): Ditto.
35832         * toplev.cc (wrapup_global_declaration_1): Ditto.
35833         * trans-mem.cc (transaction_invariant_address_p): Ditto.
35834         * tree-cfg.cc (verify_types_in_gimple_reference): Ditto.
35835         (verify_gimple_comparison): Ditto.
35836         (verify_gimple_assign_binary): Ditto.
35837         (verify_gimple_assign_single): Ditto.
35838         * tree-complex.cc (get_component_ssa_name): Ditto.
35839         * tree-emutls.cc (lower_emutls_2): Ditto.
35840         * tree-inline.cc (copy_tree_body_r): Ditto.
35841         (estimate_move_cost): Ditto.
35842         (copy_decl_for_dup_finish): Ditto.
35843         * tree-nested.cc (convert_nonlocal_omp_clauses): Ditto.
35844         (note_nonlocal_vla_type): Ditto.
35845         (convert_local_omp_clauses): Ditto.
35846         (remap_vla_decls): Ditto.
35847         (fixup_vla_decls): Ditto.
35848         * tree-parloops.cc (loop_has_vector_phi_nodes): Ditto.
35849         * tree-pretty-print.cc (print_declaration): Ditto.
35850         (print_call_name): Ditto.
35851         * tree-sra.cc (compare_access_positions): Ditto.
35852         * tree-ssa-alias.cc (compare_type_sizes): Ditto.
35853         * tree-ssa-ccp.cc (get_default_value): Ditto.
35854         * tree-ssa-coalesce.cc (populate_coalesce_list_for_outofssa): Ditto.
35855         * tree-ssa-dom.cc (reduce_vector_comparison_to_scalar_comparison): Ditto.
35856         * tree-ssa-forwprop.cc (can_propagate_from): Ditto.
35857         * tree-ssa-propagate.cc (may_propagate_copy): Ditto.
35858         * tree-ssa-sccvn.cc (fully_constant_vn_reference_p): Ditto.
35859         * tree-ssa-sink.cc (statement_sink_location): Ditto.
35860         * tree-ssa-structalias.cc (type_must_have_pointers): Ditto.
35861         * tree-ssa-ter.cc (find_replaceable_in_bb): Ditto.
35862         * tree-ssa-uninit.cc (warn_uninit): Ditto.
35863         * tree-ssa.cc (maybe_rewrite_mem_ref_base): Ditto.
35864         (non_rewritable_mem_ref_base): Ditto.
35865         * tree-streamer-in.cc (lto_input_ts_type_non_common_tree_pointers): Ditto.
35866         * tree-streamer-out.cc (write_ts_type_non_common_tree_pointers): Ditto.
35867         * tree-vect-generic.cc (do_binop): Ditto.
35868         (do_cond): Ditto.
35869         * tree-vect-stmts.cc (vect_init_vector): Ditto.
35870         * tree-vector-builder.h (tree_vector_builder::note_representative): Ditto.
35871         * tree.cc (sign_mask_for): Ditto.
35872         (verify_type_variant): Ditto.
35873         (gimple_canonical_types_compatible_p): Ditto.
35874         (verify_type): Ditto.
35875         * ubsan.cc (get_ubsan_type_info_for_type): Ditto.
35876         * var-tracking.cc (prepare_call_arguments): Ditto.
35877         (vt_add_function_parameters): Ditto.
35878         * varasm.cc (decode_addr_const): Ditto.
35880 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
35882         * omp-low.cc (scan_sharing_clauses): Use _P() defines from tree.h.
35883         (lower_reduction_clauses): Ditto.
35884         (lower_send_clauses): Ditto.
35885         (lower_omp_task_reductions): Ditto.
35886         * omp-oacc-neuter-broadcast.cc (install_var_field): Ditto.
35887         (worker_single_copy): Ditto.
35888         * omp-offload.cc (oacc_rewrite_var_decl): Ditto.
35889         * omp-simd-clone.cc (plausible_type_for_simd_clone): Ditto.
35891 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
35893         * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from
35894         tree.h.
35895         (lto_read_body_or_constructor): Ditto.
35896         * lto-streamer-out.cc (tree_is_indexable): Ditto.
35897         (lto_output_var_decl_ref): Ditto.
35898         (DFS::DFS_write_tree_body): Ditto.
35899         (wrap_refs): Ditto.
35900         (write_symbol_extension_info): Ditto.
35902 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
35904         * config/aarch64/aarch64.cc (aarch64_short_vector_p): Use _P
35905         defines from tree.h.
35906         (aarch64_mangle_type): Ditto.
35907         * config/alpha/alpha.cc (alpha_in_small_data_p): Ditto.
35908         (alpha_gimplify_va_arg_1): Ditto.
35909         * config/arc/arc.cc (arc_encode_section_info): Ditto.
35910         (arc_is_aux_reg_p): Ditto.
35911         (arc_is_uncached_mem_p): Ditto.
35912         (arc_handle_aux_attribute): Ditto.
35913         * config/arm/arm.cc (arm_handle_isr_attribute): Ditto.
35914         (arm_handle_cmse_nonsecure_call): Ditto.
35915         (arm_set_default_type_attributes): Ditto.
35916         (arm_is_segment_info_known): Ditto.
35917         (arm_mangle_type): Ditto.
35918         * config/arm/unknown-elf.h (IN_NAMED_SECTION_P): Ditto.
35919         * config/avr/avr.cc (avr_lookup_function_attribute1): Ditto.
35920         (avr_decl_absdata_p): Ditto.
35921         (avr_insert_attributes): Ditto.
35922         (avr_section_type_flags): Ditto.
35923         (avr_encode_section_info): Ditto.
35924         * config/bfin/bfin.cc (bfin_handle_l2_attribute): Ditto.
35925         * config/bpf/bpf.cc (bpf_core_compute): Ditto.
35926         * config/c6x/c6x.cc (c6x_in_small_data_p): Ditto.
35927         * config/csky/csky.cc (csky_handle_isr_attribute): Ditto.
35928         (csky_mangle_type): Ditto.
35929         * config/darwin-c.cc (darwin_pragma_unused): Ditto.
35930         * config/darwin.cc (is_objc_metadata): Ditto.
35931         * config/epiphany/epiphany.cc (epiphany_function_ok_for_sibcall): Ditto.
35932         * config/epiphany/epiphany.h (ROUND_TYPE_ALIGN): Ditto.
35933         * config/frv/frv.cc (frv_emit_movsi): Ditto.
35934         * config/gcn/gcn-tree.cc (gcn_lockless_update): Ditto.
35935         * config/gcn/gcn.cc (gcn_asm_output_symbol_ref): Ditto.
35936         * config/h8300/h8300.cc (h8300_encode_section_info): Ditto.
35937         * config/i386/i386-expand.cc: Ditto.
35938         * config/i386/i386.cc (type_natural_mode): Ditto.
35939         (ix86_function_arg): Ditto.
35940         (ix86_data_alignment): Ditto.
35941         (ix86_local_alignment): Ditto.
35942         (ix86_simd_clone_compute_vecsize_and_simdlen): Ditto.
35943         * config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Ditto.
35944         (i386_pe_type_dllexport_p): Ditto.
35945         (i386_pe_adjust_class_at_definition): Ditto.
35946         * config/i386/winnt.cc (i386_pe_determine_dllimport_p): Ditto.
35947         (i386_pe_binds_local_p): Ditto.
35948         (i386_pe_section_type_flags): Ditto.
35949         * config/ia64/ia64.cc (ia64_encode_section_info): Ditto.
35950         (ia64_gimplify_va_arg): Ditto.
35951         (ia64_in_small_data_p): Ditto.
35952         * config/iq2000/iq2000.cc (iq2000_function_arg): Ditto.
35953         * config/lm32/lm32.cc (lm32_in_small_data_p): Ditto.
35954         * config/loongarch/loongarch.cc (loongarch_handle_model_attribute): Ditto.
35955         * config/m32c/m32c.cc (m32c_insert_attributes): Ditto.
35956         * config/mcore/mcore.cc (mcore_mark_dllimport): Ditto.
35957         (mcore_encode_section_info): Ditto.
35958         * config/microblaze/microblaze.cc (microblaze_elf_in_small_data_p): Ditto.
35959         * config/mips/mips.cc (mips_output_aligned_decl_common): Ditto.
35960         * config/mmix/mmix.cc (mmix_encode_section_info): Ditto.
35961         * config/nvptx/nvptx.cc (nvptx_encode_section_info): Ditto.
35962         (pass_in_memory): Ditto.
35963         (nvptx_generate_vector_shuffle): Ditto.
35964         (nvptx_lockless_update): Ditto.
35965         * config/pa/pa.cc (pa_function_arg_padding): Ditto.
35966         (pa_function_value): Ditto.
35967         (pa_function_arg): Ditto.
35968         * config/pa/pa.h (IN_NAMED_SECTION_P): Ditto.
35969         (TEXT_SPACE_P): Ditto.
35970         * config/pa/som.h (MAKE_DECL_ONE_ONLY): Ditto.
35971         * config/pdp11/pdp11.cc (pdp11_return_in_memory): Ditto.
35972         * config/riscv/riscv.cc (riscv_in_small_data_p): Ditto.
35973         (riscv_mangle_type): Ditto.
35974         * config/rl78/rl78.cc (rl78_insert_attributes): Ditto.
35975         (rl78_addsi3_internal): Ditto.
35976         * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Ditto.
35977         * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Ditto.
35978         * config/rs6000/freebsd64.h (ROUND_TYPE_ALIGN): Ditto.
35979         * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Ditto.
35980         * config/rs6000/rs6000-call.cc (rs6000_function_arg_boundary): Ditto.
35981         (rs6000_function_arg_advance_1): Ditto.
35982         (rs6000_function_arg): Ditto.
35983         (rs6000_pass_by_reference): Ditto.
35984         * config/rs6000/rs6000-logue.cc (rs6000_function_ok_for_sibcall): Ditto.
35985         * config/rs6000/rs6000.cc (rs6000_data_alignment): Ditto.
35986         (rs6000_set_default_type_attributes): Ditto.
35987         (rs6000_elf_in_small_data_p): Ditto.
35988         (IN_NAMED_SECTION): Ditto.
35989         (rs6000_xcoff_encode_section_info): Ditto.
35990         (rs6000_function_value): Ditto.
35991         (invalid_arg_for_unprototyped_fn): Ditto.
35992         * config/s390/s390-c.cc (s390_fn_types_compatible): Ditto.
35993         (s390_vec_n_elem): Ditto.
35994         * config/s390/s390.cc (s390_check_type_for_vector_abi): Ditto.
35995         (s390_function_arg_integer): Ditto.
35996         (s390_return_in_memory): Ditto.
35997         (s390_encode_section_info): Ditto.
35998         * config/sh/sh.cc (sh_gimplify_va_arg_expr): Ditto.
35999         (sh_function_value): Ditto.
36000         * config/sol2.cc (solaris_insert_attributes): Ditto.
36001         * config/sparc/sparc.cc (function_arg_slotno): Ditto.
36002         * config/sparc/sparc.h (ROUND_TYPE_ALIGN): Ditto.
36003         * config/stormy16/stormy16.cc (xstormy16_encode_section_info): Ditto.
36004         (xstormy16_handle_below100_attribute): Ditto.
36005         * config/v850/v850.cc (v850_encode_section_info): Ditto.
36006         (v850_insert_attributes): Ditto.
36007         * config/visium/visium.cc (visium_pass_by_reference): Ditto.
36008         (visium_return_in_memory): Ditto.
36009         * config/xtensa/xtensa.cc (xtensa_multibss_section_type_flags): Ditto.
36011 2023-05-18  Uros Bizjak  <ubizjak@gmail.com>
36013         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial): New.
36014         (ix86_expand_vecop_qihi): Add op2vec bool variable.
36015         Do not set REG_EQUAL note.
36016         * config/i386/i386-protos.h (ix86_expand_vecop_qihi_partial):
36017         Add prototype.
36018         * config/i386/i386.cc (ix86_multiplication_cost): Handle
36019         V4QImode and V8QImode.
36020         * config/i386/mmx.md (mulv8qi3): New expander.
36021         (mulv4qi3): Ditto.
36022         * config/i386/sse.md (mulv8qi3): Remove.
36024 2023-05-18  Georg-Johann Lay  <avr@gjlay.de>
36026         * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
36028 2023-05-18  Jonathan Wakely  <jwakely@redhat.com>
36030         PR bootstrap/105831
36031         * config.gcc: Use = operator instead of ==.
36033 2023-05-18  Michael Bäuerle  <micha@NetBSD.org>
36035         PR bootstrap/105831
36036         * config/nvptx/gen-opt.sh: Use = operator instead of ==.
36037         * configure.ac: Likewise.
36038         * configure: Regenerate.
36040 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
36042         * config/arm/arm_mve.h: (__ARM_mve_typeid): Add more pointer types.
36043         (__ARM_mve_coerce1): Remove.
36044         (__ARM_mve_coerce2): Remove.
36045         (__ARM_mve_coerce3): Remove.
36046         (__ARM_mve_coerce_i_scalar): New.
36047         (__ARM_mve_coerce_s8_ptr): New.
36048         (__ARM_mve_coerce_u8_ptr): New.
36049         (__ARM_mve_coerce_s16_ptr): New.
36050         (__ARM_mve_coerce_u16_ptr): New.
36051         (__ARM_mve_coerce_s32_ptr): New.
36052         (__ARM_mve_coerce_u32_ptr): New.
36053         (__ARM_mve_coerce_s64_ptr): New.
36054         (__ARM_mve_coerce_u64_ptr): New.
36055         (__ARM_mve_coerce_f_scalar): New.
36056         (__ARM_mve_coerce_f16_ptr): New.
36057         (__ARM_mve_coerce_f32_ptr): New.
36058         (__arm_vst4q): Change _coerce_ overloads.
36059         (__arm_vbicq): Change _coerce_ overloads.
36060         (__arm_vld1q): Change _coerce_ overloads.
36061         (__arm_vld1q_z): Change _coerce_ overloads.
36062         (__arm_vld2q): Change _coerce_ overloads.
36063         (__arm_vld4q): Change _coerce_ overloads.
36064         (__arm_vldrhq_gather_offset): Change _coerce_ overloads.
36065         (__arm_vldrhq_gather_offset_z): Change _coerce_ overloads.
36066         (__arm_vldrhq_gather_shifted_offset): Change _coerce_ overloads.
36067         (__arm_vldrhq_gather_shifted_offset_z): Change _coerce_ overloads.
36068         (__arm_vldrwq_gather_offset): Change _coerce_ overloads.
36069         (__arm_vldrwq_gather_offset_z): Change _coerce_ overloads.
36070         (__arm_vldrwq_gather_shifted_offset): Change _coerce_ overloads.
36071         (__arm_vldrwq_gather_shifted_offset_z): Change _coerce_ overloads.
36072         (__arm_vst1q_p): Change _coerce_ overloads.
36073         (__arm_vst2q): Change _coerce_ overloads.
36074         (__arm_vst1q): Change _coerce_ overloads.
36075         (__arm_vstrhq): Change _coerce_ overloads.
36076         (__arm_vstrhq_p): Change _coerce_ overloads.
36077         (__arm_vstrhq_scatter_offset_p): Change _coerce_ overloads.
36078         (__arm_vstrhq_scatter_offset): Change _coerce_ overloads.
36079         (__arm_vstrhq_scatter_shifted_offset_p): Change _coerce_ overloads.
36080         (__arm_vstrhq_scatter_shifted_offset): Change _coerce_ overloads.
36081         (__arm_vstrwq_p): Change _coerce_ overloads.
36082         (__arm_vstrwq): Change _coerce_ overloads.
36083         (__arm_vstrwq_scatter_offset): Change _coerce_ overloads.
36084         (__arm_vstrwq_scatter_offset_p): Change _coerce_ overloads.
36085         (__arm_vstrwq_scatter_shifted_offset): Change _coerce_ overloads.
36086         (__arm_vstrwq_scatter_shifted_offset_p): Change _coerce_ overloads.
36087         (__arm_vsetq_lane): Change _coerce_ overloads.
36088         (__arm_vldrbq_gather_offset): Change _coerce_ overloads.
36089         (__arm_vdwdupq_x_u8): Change _coerce_ overloads.
36090         (__arm_vdwdupq_x_u16): Change _coerce_ overloads.
36091         (__arm_vdwdupq_x_u32): Change _coerce_ overloads.
36092         (__arm_viwdupq_x_u8): Change _coerce_ overloads.
36093         (__arm_viwdupq_x_u16): Change _coerce_ overloads.
36094         (__arm_viwdupq_x_u32): Change _coerce_ overloads.
36095         (__arm_vidupq_x_u8): Change _coerce_ overloads.
36096         (__arm_vddupq_x_u8): Change _coerce_ overloads.
36097         (__arm_vidupq_x_u16): Change _coerce_ overloads.
36098         (__arm_vddupq_x_u16): Change _coerce_ overloads.
36099         (__arm_vidupq_x_u32): Change _coerce_ overloads.
36100         (__arm_vddupq_x_u32): Change _coerce_ overloads.
36101         (__arm_vldrdq_gather_offset): Change _coerce_ overloads.
36102         (__arm_vldrdq_gather_offset_z): Change _coerce_ overloads.
36103         (__arm_vldrdq_gather_shifted_offset): Change _coerce_ overloads.
36104         (__arm_vldrdq_gather_shifted_offset_z): Change _coerce_ overloads.
36105         (__arm_vldrbq_gather_offset_z): Change _coerce_ overloads.
36106         (__arm_vidupq_u16): Change _coerce_ overloads.
36107         (__arm_vidupq_u32): Change _coerce_ overloads.
36108         (__arm_vidupq_u8): Change _coerce_ overloads.
36109         (__arm_vddupq_u16): Change _coerce_ overloads.
36110         (__arm_vddupq_u32): Change _coerce_ overloads.
36111         (__arm_vddupq_u8): Change _coerce_ overloads.
36112         (__arm_viwdupq_m): Change _coerce_ overloads.
36113         (__arm_viwdupq_u16): Change _coerce_ overloads.
36114         (__arm_viwdupq_u32): Change _coerce_ overloads.
36115         (__arm_viwdupq_u8): Change _coerce_ overloads.
36116         (__arm_vdwdupq_m): Change _coerce_ overloads.
36117         (__arm_vdwdupq_u16): Change _coerce_ overloads.
36118         (__arm_vdwdupq_u32): Change _coerce_ overloads.
36119         (__arm_vdwdupq_u8): Change _coerce_ overloads.
36120         (__arm_vstrbq): Change _coerce_ overloads.
36121         (__arm_vstrbq_p): Change _coerce_ overloads.
36122         (__arm_vstrbq_scatter_offset_p): Change _coerce_ overloads.
36123         (__arm_vstrdq_scatter_offset_p): Change _coerce_ overloads.
36124         (__arm_vstrdq_scatter_offset): Change _coerce_ overloads.
36125         (__arm_vstrdq_scatter_shifted_offset_p): Change _coerce_ overloads.
36126         (__arm_vstrdq_scatter_shifted_offset): Change _coerce_ overloads.
36128 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
36130         * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
36131         scalar constant.
36133 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
36135         * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic.
36136         (__arm_vadcq_u32): Likewise.
36137         (__arm_vadcq_m_s32): Likewise.
36138         (__arm_vadcq_m_u32): Likewise.
36139         (__arm_vsbcq_s32): Likewise.
36140         (__arm_vsbcq_u32): Likewise.
36141         (__arm_vsbcq_m_s32): Likewise.
36142         (__arm_vsbcq_m_u32): Likewise.
36143         * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile.
36145 2023-05-18  Andrea Corallo  <andrea.corallo@arm.com>
36147         * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrev64q_f<mode>)
36148         (mve_vrev32q_fv8hf, mve_vcvttq_f32_f16v4sf)
36149         (mve_vcvtbq_f32_f16v4sf, mve_vcvtq_to_f_<supf><mode>)
36150         (mve_vrev64q_<supf><mode>, mve_vcvtq_from_f_<supf><mode>)
36151         (mve_vmovltq_<supf><mode>, mve_vmovlbq_<supf><mode>)
36152         (mve_vcvtpq_<supf><mode>, mve_vcvtnq_<supf><mode>)
36153         (mve_vcvtmq_<supf><mode>, mve_vcvtaq_<supf><mode>)
36154         (mve_vmvnq_n_<supf><mode>, mve_vrev16q_<supf>v16qi)
36155         (mve_vctp<MVE_vctp>q<MVE_vpred>, mve_vbrsrq_n_f<mode>)
36156         (mve_vbrsrq_n_<supf><mode>, mve_vandq_f<mode>, mve_vbicq_f<mode>)
36157         (mve_vctp<MVE_vctp>q_m<MVE_vpred>, mve_vcvtbq_f16_f32v8hf)
36158         (mve_vcvttq_f16_f32v8hf, mve_veorq_f<mode>)
36159         (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
36160         (mve_vmlsldavxq_s<mode>, mve_vornq_f<mode>, mve_vorrq_f<mode>)
36161         (mve_vrmlaldavhxq_sv4si, mve_vcvtq_m_to_f_<supf><mode>)
36162         (mve_vshlcq_<supf><mode>, mve_vmvnq_m_<supf><mode>)
36163         (mve_vpselq_<supf><mode>, mve_vcvtbq_m_f16_f32v8hf)
36164         (mve_vcvtbq_m_f32_f16v4sf, mve_vcvttq_m_f16_f32v8hf)
36165         (mve_vcvttq_m_f32_f16v4sf, mve_vmlaldavq_p_<supf><mode>)
36166         (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
36167         (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>)
36168         (mve_vmvnq_m_n_<supf><mode>, mve_vorrq_m_n_<supf><mode>)
36169         (mve_vpselq_f<mode>, mve_vrev32q_m_fv8hf)
36170         (mve_vrev32q_m_<supf><mode>, mve_vrev64q_m_f<mode>)
36171         (mve_vrmlaldavhaxq_sv4si, mve_vrmlaldavhxq_p_sv4si)
36172         (mve_vrmlsldavhaxq_sv4si, mve_vrmlsldavhq_p_sv4si)
36173         (mve_vrmlsldavhxq_p_sv4si, mve_vrev16q_m_<supf>v16qi)
36174         (mve_vrmlaldavhq_p_<supf>v4si, mve_vrmlsldavhaq_sv4si)
36175         (mve_vandq_m_<supf><mode>, mve_vbicq_m_<supf><mode>)
36176         (mve_veorq_m_<supf><mode>, mve_vornq_m_<supf><mode>)
36177         (mve_vorrq_m_<supf><mode>, mve_vandq_m_f<mode>)
36178         (mve_vbicq_m_f<mode>, mve_veorq_m_f<mode>, mve_vornq_m_f<mode>)
36179         (mve_vorrq_m_f<mode>)
36180         (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn)
36181         (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn)
36182         (mve_vstrdq_scatter_base_wb_p_<supf>v2di) : Fix spacing and
36183         capitalization in the emitted asm.
36185 2023-05-18  Andrea Corallo  <andrea.corallo@arm.com>
36187         * config/arm/constraints.md (mve_vldrd_immediate): Move it to
36188         predicates.md.
36189         (Ri): Move constraint definition from predicates.md.
36190         (Rl): Define new constraint.
36191         * config/arm/mve.md (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Add
36192         missing constraint.
36193         (mve_vstrwq_scatter_base_wb_p_fv4sf): Add missing Up constraint
36194         for op 1, use mve_vstrw_immediate predicate and Rl constraint for
36195         op 2. Fix asm output spacing.
36196         (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Add missing constraint.
36197         * config/arm/predicates.md (Ri) Move constraint to constraints.md
36198         (mve_vldrd_immediate): Move it from
36199         constraints.md.
36200         (mve_vstrw_immediate): New predicate.
36202 2023-05-18  Pan Li  <pan2.li@intel.com>
36203             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
36204             Kito Cheng  <kito.cheng@sifive.com>
36205             Richard Biener  <rguenther@suse.de>
36206             Richard Sandiford  <richard.sandiford@arm.com>
36208         * combine.cc (struct reg_stat_type): Extend machine_mode to 16 bits.
36209         * cse.cc (struct qty_table_elem): Extend machine_mode to 16 bits
36210         (struct table_elt): Extend machine_mode to 16 bits.
36211         (struct set): Ditto.
36212         * genmodes.cc (emit_mode_wider): Extend type from char to short.
36213         (emit_mode_complex): Ditto.
36214         (emit_mode_inner): Ditto.
36215         (emit_class_narrowest_mode): Ditto.
36216         * genopinit.cc (main): Extend the machine_mode limit.
36217         * ira-int.h (struct ira_allocno): Extend machine_mode to 16 bits and
36218         re-ordered the struct fields for padding.
36219         * machmode.h (MACHINE_MODE_BITSIZE): New macro.
36220         (GET_MODE_2XWIDER_MODE): Extend type from char to short.
36221         (get_mode_alignment): Extend type from char to short.
36222         * ree.cc (struct ext_modified): Extend machine_mode to 16 bits and
36223         removed the ATTRIBUTE_PACKED.
36224         * rtl-ssa/accesses.h: Extend machine_mode to 16 bits, narrow
36225         * rtl-ssa/internals.inl (rtl_ssa::access_info): Adjust the assignment.
36226         m_kind to 2 bits and remove m_spare.
36227         * rtl.h (RTX_CODE_BITSIZE): New macro.
36228         (struct rtx_def): Swap both the bit size and location between the
36229         rtx_code and the machine_mode.
36230         (subreg_shape::unique_id): Extend the machine_mode limit.
36231         * rtlanal.h: Extend machine_mode to 16 bits.
36232         * tree-core.h (struct tree_type_common): Extend machine_mode to 16
36233         bits and re-ordered the struct fields for padding.
36234         (struct tree_decl_common): Extend machine_mode to 16 bits.
36236 2023-05-17  Jin Ma  <jinma@linux.alibaba.com>
36238         * genrecog.cc (print_nonbool_test): Fix type error of
36239         switch (SUBREG_BYTE (op))'.
36241 2023-05-17  Jin Ma  <jinma@linux.alibaba.com>
36243         * common/config/riscv/riscv-common.cc: Remove
36244         trailing spaces on lines.
36245         * config/riscv/riscv.cc (riscv_legitimize_move): Likewise.
36246         * config/riscv/riscv.h (enum reg_class): Likewise.
36247         * config/riscv/riscv.md: Likewise.
36249 2023-05-17  John David Anglin  <danglin@gcc.gnu.org>
36251         * config/pa/pa.md (clear_cache): New.
36253 2023-05-17  Arsen Arsenović  <arsen@aarsen.me>
36255         * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
36256         parenthesis.  Fix misnamed index entry.
36257         <concept>: Fix misnamed index entry.
36259 2023-05-17  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
36261         * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern,
36262         combined from ...
36263         (*<optab>si3_mask, *<optab>di3_mask): Here.
36264         (*<optab>si3_mask_1, *<optab>di3_mask_1): And here.
36265         * config/riscv/bitmanip.md (*<bitmanip_optab><GPR:mode>3_mask): New
36266         pattern.
36267         (*<bitmanip_optab>si3_sext_mask): Likewise.
36268         * config/riscv/iterators.md (shiftm1): Use const_si_mask_operand
36269         and const_di_mask_operand.
36270         (bitmanip_rotate): New iterator.
36271         (bitmanip_optab): Add rotates.
36272         * config/riscv/predicates.md (const_si_mask_operand): Renamed
36273         from const31_operand.  Generalize to handle more mask constants.
36274         (const_di_mask_operand): Similarly.
36276 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
36278         PR c++/109884
36279         * config/i386/i386-builtin-types.def (FLOAT128): Use
36280         float128t_type_node rather than float128_type_node.
36282 2023-05-17  Alexander Monakov  <amonakov@ispras.ru>
36284         * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
36285         FP_CONTRACT_FAST (no functional change).
36287 2023-05-17  Uros Bizjak  <ubizjak@gmail.com>
36289         * config/i386/i386.cc (ix86_multiplication_cost): Correct
36290         calcuation of integer vector mode costs to reflect generated
36291         instruction sequences of different integer vector modes and
36292         different target ABIs.
36294 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
36296         * config/riscv/riscv-opts.h (enum riscv_entity): New enum.
36297         * config/riscv/riscv.cc (riscv_emit_mode_set): New function.
36298         (riscv_mode_needed): Ditto.
36299         (riscv_mode_after): Ditto.
36300         (riscv_mode_entry): Ditto.
36301         (riscv_mode_exit): Ditto.
36302         (riscv_mode_priority): Ditto.
36303         (TARGET_MODE_EMIT): New target hook.
36304         (TARGET_MODE_NEEDED): Ditto.
36305         (TARGET_MODE_AFTER): Ditto.
36306         (TARGET_MODE_ENTRY): Ditto.
36307         (TARGET_MODE_EXIT): Ditto.
36308         (TARGET_MODE_PRIORITY): Ditto.
36309         * config/riscv/riscv.h (OPTIMIZE_MODE_SWITCHING): Ditto.
36310         (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
36311         * config/riscv/riscv.md: Add csrwvxrm.
36312         * config/riscv/vector.md (rnu,rne,rdn,rod,none): New attribute.
36313         (vxrmsi): New pattern.
36315 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
36317         * config/riscv/riscv-vector-builtins-bases.cc: Introduce rounding mode.
36318         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
36319         (struct narrow_alu_def): Ditto.
36320         * config/riscv/riscv-vector-builtins.cc (function_builder::apply_predication): Ditto.
36321         (function_expander::use_exact_insn): Ditto.
36322         * config/riscv/riscv-vector-builtins.h (function_checker::arg_num): New function.
36323         (function_base::has_rounding_mode_operand_p): New function.
36325 2023-05-17  Andrew Pinski  <apinski@marvell.com>
36327         * tree-ssa-forwprop.cc (simplify_builtin_call): Check
36328         against 0 instead of calling integer_zerop.
36330 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
36332         * config/riscv/riscv-vector-builtins.cc (register_vxrm): New function.
36333         (DEF_RVV_VXRM_ENUM): New macro.
36334         (handle_pragma_vector): Add vxrm enum register.
36335         * config/riscv/riscv-vector-builtins.def (DEF_RVV_VXRM_ENUM): New macro.
36336         (RNU): Ditto.
36337         (RNE): Ditto.
36338         (RDN): Ditto.
36339         (ROD): Ditto.
36341 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
36343         * value-range.h (Value_Range::operator=): New.
36345 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
36347         * value-range.cc (vrange::operator=): Add a stub to copy
36348         unsupported ranges.
36349         * value-range.h (is_a <unsupported_range>): New.
36350         (Value_Range::operator=): Support copying unsupported ranges.
36352 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
36354         * data-streamer-in.cc (streamer_read_real_value): New.
36355         (streamer_read_value_range): New.
36356         * data-streamer-out.cc (streamer_write_real_value): New.
36357         (streamer_write_vrange): New.
36358         * data-streamer.h (streamer_write_vrange): New.
36359         (streamer_read_value_range): New.
36361 2023-05-17  Jonathan Wakely  <jwakely@redhat.com>
36363         PR c++/109532
36364         * doc/invoke.texi (Code Gen Options): Note that -fshort-enums
36365         is ignored for a fixed underlying type.
36366         (C++ Dialect Options): Likewise for -fstrict-enums.
36368 2023-05-17  Tobias Burnus  <tobias@codesourcery.com>
36370         * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
36371         special case.
36373 2023-05-17  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
36375         * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
36376         New.
36377         (s390_atomic_align_for_mode): New.
36379 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
36381         * wide-int.cc (wi::from_array): Add missing closing paren in function
36382         comment.
36384 2023-05-17  Kewen Lin  <linkw@linux.ibm.com>
36386         * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
36387         suggested unroll factor once the previous analysis fails.
36389 2023-05-17  Pan Li  <pan2.li@intel.com>
36391         * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New
36392         macro.
36393         (main): Add bool1 to the type indexer.
36394         * config/riscv/riscv-vector-builtins-functions.def
36395         (vreinterpret): Register vbool1 interpret function.
36396         * config/riscv/riscv-vector-builtins-types.def
36397         (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
36398         (vint8m1_t): Add the type to bool1_interpret_ops.
36399         (vint16m1_t): Ditto.
36400         (vint32m1_t): Ditto.
36401         (vint64m1_t): Ditto.
36402         (vuint8m1_t): Ditto.
36403         (vuint16m1_t): Ditto.
36404         (vuint32m1_t): Ditto.
36405         (vuint64m1_t): Ditto.
36406         * config/riscv/riscv-vector-builtins.cc
36407         (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
36408         (required_extensions_p): Add bool1 interpret case.
36409         * config/riscv/riscv-vector-builtins.def
36410         (bool1_interpret): Add bool1 interpret to base type.
36411         * config/riscv/vector.md (@vreinterpret<mode>): Add new expand
36412         with VB dest for vreinterpret.
36414 2023-05-17  Jiufu Guo  <guojiufu@linux.ibm.com>
36416         PR target/106708
36417         * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
36418         constants through "lis; xoris".
36420 2023-05-16  Ajit Kumar Agarwal  <aagarwa1@linux.ibm.com>
36422         * common/config/rs6000/rs6000-common.cc: Add REE pass as a
36423         default rs6000 target pass for O2 and above.
36424         * doc/invoke.texi: Document -free
36426 2023-05-16  Kito Cheng  <kito.cheng@sifive.com>
36428         * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
36429         Fix wrong select_kind...
36431 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
36433         * config/s390/s390-protos.h (s390_expand_setmem): Change
36434         function signature.
36435         * config/s390/s390.cc (s390_expand_setmem): For memset's less
36436         than or equal to 256 byte do not perform a libc call.
36437         * config/s390/s390.md: Change expander into a version which
36438         takes 8 operands.
36440 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
36442         * config/s390/s390-protos.h (s390_expand_movmem): New.
36443         * config/s390/s390.cc (s390_expand_movmem): New.
36444         * config/s390/s390.md (movmem<mode>): New.
36445         (*mvcrl): New.
36446         (mvcrl): New.
36448 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
36450         * config/s390/s390-protos.h (s390_expand_cpymem): Change
36451         function signature.
36452         * config/s390/s390.cc (s390_expand_cpymem): For memcpy's less
36453         than or equal to 256 byte do not perform a libc call.
36454         (s390_expand_insv): Adapt new function signature of
36455         s390_expand_cpymem.
36456         * config/s390/s390.md: Change expander into a version which
36457         takes 8 operands.
36459 2023-05-16  Andrew Pinski  <apinski@marvell.com>
36461         PR tree-optimization/109424
36462         * match.pd: Add patterns for min/max of zero_one_valued
36463         values to `&`/`|`.
36465 2023-05-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
36467         * config/riscv/riscv-protos.h (enum frm_field_enum): New enum.
36468         * config/riscv/riscv-vector-builtins.cc
36469         (function_expander::use_ternop_insn): Add default rounding mode.
36470         (function_expander::use_widen_ternop_insn): Ditto.
36471         * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add FRM REGNUM.
36472         (riscv_hard_regno_mode_ok): Ditto.
36473         (riscv_conditional_register_usage): Ditto.
36474         * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
36475         (FRM_REG_P): Ditto.
36476         (RISCV_DWARF_FRM): Ditto.
36477         * config/riscv/riscv.md: Ditto.
36478         * config/riscv/vector-iterators.md: split no frm and has frm operations.
36479         * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
36480         (@pred_<optab><mode>): Ditto.
36482 2023-05-15  Aldy Hernandez  <aldyh@redhat.com>
36484         PR tree-optimization/109695
36485         * value-range.cc (irange::operator=): Resize range.
36486         (irange::union_): Same.
36487         (irange::intersect): Same.
36488         (irange::invert): Same.
36489         (int_range_max): Default to 3 sub-ranges and resize as needed.
36490         * value-range.h (irange::maybe_resize): New.
36491         (~int_range): New.
36492         (int_range::int_range): Adjust for resizing.
36493         (int_range::operator=): Same.
36495 2023-05-15  Aldy Hernandez  <aldyh@redhat.com>
36497         * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary
36498         range copying
36499         * value-range.cc (irange::union_nonzero_bits): Return TRUE only
36500         when range changed.
36502 2023-05-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
36504         * config/riscv/riscv-protos.h (enum vxrm_field_enum): New enum.
36505         * config/riscv/riscv-vector-builtins.cc
36506         (function_expander::use_exact_insn): Add default rounding mode operand.
36507         * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add VXRM_REGNUM.
36508         (riscv_hard_regno_mode_ok): Ditto.
36509         (riscv_conditional_register_usage): Ditto.
36510         * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
36511         (VXRM_REG_P): Ditto.
36512         (RISCV_DWARF_VXRM): Ditto.
36513         * config/riscv/riscv.md: Ditto.
36514         * config/riscv/vector.md: Ditto
36516 2023-05-15  Pan Li  <pan2.li@intel.com>
36518         * optabs.cc (maybe_gen_insn): Add case to generate instruction
36519         that has 11 operands.
36521 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36523         * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
36524         logic for vector modes.
36526 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36528         PR target/99195
36529         * config/aarch64/aarch64-simd.md (aarch64_cm<optab><mode>): Rename to...
36530         (aarch64_cm<optab><mode><vczle><vczbe>): ... This.
36531         (aarch64_cmtst<mode>): Rename to...
36532         (aarch64_cmtst<mode><vczle><vczbe>): ... This.
36533         (*aarch64_cmtst_same_<mode>): Rename to...
36534         (*aarch64_cmtst_same_<mode><vczle><vczbe>): ... This.
36535         (*aarch64_cmtstdi): Rename to...
36536         (*aarch64_cmtstdi<vczle><vczbe>): ... This.
36537         (aarch64_fac<optab><mode>): Rename to...
36538         (aarch64_fac<optab><mode><vczle><vczbe>): ... This.
36540 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36542         PR target/99195
36543         * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
36544         (aarch64_s<optab><mode><vczle><vczbe>): ... This.
36546 2023-05-15  Pan Li  <pan2.li@intel.com>
36547             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
36548             kito-cheng  <kito.cheng@sifive.com>
36550         * config/riscv/riscv-v.cc (const_vlmax_p): New function for
36551         deciding the mode is constant or not.
36552         (set_len_and_policy): Optimize VLS-VLMAX code gen to vsetivli.
36554 2023-05-15  Richard Biener  <rguenther@suse.de>
36556         PR tree-optimization/109848
36557         * tree-ssa-forwprop.cc (pass_forwprop::execute): Put the
36558         TARGET_MEM_REF address preparation before the store, not
36559         before the CTOR.
36561 2023-05-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
36563         * config/riscv/riscv.cc
36564         (riscv_vectorize_preferred_vector_alignment): New function.
36565         (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
36567 2023-05-14  Andrew Pinski  <apinski@marvell.com>
36569         PR tree-optimization/109829
36570         * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
36572 2023-05-14  Uros Bizjak  <ubizjak@gmail.com>
36574         PR target/109807
36575         * config/i386/i386.cc: Revert the 2023-05-11 change.
36576         (ix86_widen_mult_cost): Return high value instead of
36577         ICEing for unsupported modes.
36579 2023-05-14  Ard Biesheuvel  <ardb@kernel.org>
36581         * config/i386/i386.cc (x86_function_profiler): Take
36582         ix86_direct_extern_access into account when generating calls
36583         to __fentry__()
36585 2023-05-14  Pan Li  <pan2.li@intel.com>
36587         * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
36588         Refactor the or pattern to switch cases.
36590 2023-05-13  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
36592         * config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Rename
36593         aarch64_expand_vector_init to this, and remove  interleaving case.
36594         Recursively call aarch64_expand_vector_init_fallback, instead of
36595         aarch64_expand_vector_init.
36596         (aarch64_unzip_vector_init): New function.
36597         (aarch64_expand_vector_init): Likewise.
36599 2023-05-13  Kito Cheng  <kito.cheng@sifive.com>
36601         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
36602         Pull out function call from the gcc_assert.
36604 2023-05-13  Kito Cheng  <kito.cheng@sifive.com>
36606         * config/riscv/riscv-vsetvl.cc (vlmul_to_str): New.
36607         (policy_to_str): New.
36608         (vector_insn_info::dump): Use vlmul_to_str and policy_to_str.
36610 2023-05-13  Andrew Pinski  <apinski@marvell.com>
36612         PR tree-optimization/109834
36613         * match.pd (popcount(bswap(x))->popcount(x)): Fix up unsigned type checking.
36614         (popcount(rotate(x,y))->popcount(x)): Likewise.
36616 2023-05-12  Uros Bizjak  <ubizjak@gmail.com>
36618         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also
36619         reject ymm instructions for TARGET_PREFER_AVX128.  Use generic
36620         gen_extend_insn to generate zero/sign extension instructions.
36621         Fix comments.
36622         (ix86_expand_vecop_qihi): Initialize interleave functions
36623         for MULT code only.  Fix comments.
36625 2023-05-12  Uros Bizjak  <ubizjak@gmail.com>
36627         PR target/109797
36628         * config/i386/mmx.md (mulv2si3): Remove expander.
36629         (mulv2si3): Rename insn pattern from *mulv2si.
36631 2023-05-12  Tobias Burnus  <tobias@codesourcery.com>
36633         PR libstdc++/109816
36634         * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
36635         '!lto_stream_offload_p'.
36637 2023-05-12  Kito Cheng  <kito.cheng@sifive.com>
36638             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
36640         PR target/109743
36641         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vsetvl_at_end): New.
36642         (local_avl_compatible_p): New.
36643         (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance local optimizations
36644         for LCM, rewrite as a backward algorithm.
36645         (pass_vsetvl::cleanup_insns): Use new local_eliminate_vsetvl_insn
36646         interface, handle a BB at once.
36648 2023-05-12  Richard Biener  <rguenther@suse.de>
36650         PR tree-optimization/64731
36651         * tree-ssa-forwprop.cc (pass_forwprop::execute): Also
36652         handle TARGET_MEM_REF destinations of stores from vector
36653         CTORs.
36655 2023-05-12  Richard Biener  <rguenther@suse.de>
36657         PR tree-optimization/109791
36658         * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))):
36659         New pattern.
36660         (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
36661         Likewise.
36663 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
36665         * config/arm/arm-mve-builtins-base.cc (vsriq): New.
36666         * config/arm/arm-mve-builtins-base.def (vsriq): New.
36667         * config/arm/arm-mve-builtins-base.h (vsriq): New.
36668         * config/arm/arm-mve-builtins.cc
36669         (function_instance::has_inactive_argument): Handle vsriq.
36670         * config/arm/arm_mve.h (vsriq): Remove.
36671         (vsriq_m): Remove.
36672         (vsriq_n_u8): Remove.
36673         (vsriq_n_s8): Remove.
36674         (vsriq_n_u16): Remove.
36675         (vsriq_n_s16): Remove.
36676         (vsriq_n_u32): Remove.
36677         (vsriq_n_s32): Remove.
36678         (vsriq_m_n_s8): Remove.
36679         (vsriq_m_n_u8): Remove.
36680         (vsriq_m_n_s16): Remove.
36681         (vsriq_m_n_u16): Remove.
36682         (vsriq_m_n_s32): Remove.
36683         (vsriq_m_n_u32): Remove.
36684         (__arm_vsriq_n_u8): Remove.
36685         (__arm_vsriq_n_s8): Remove.
36686         (__arm_vsriq_n_u16): Remove.
36687         (__arm_vsriq_n_s16): Remove.
36688         (__arm_vsriq_n_u32): Remove.
36689         (__arm_vsriq_n_s32): Remove.
36690         (__arm_vsriq_m_n_s8): Remove.
36691         (__arm_vsriq_m_n_u8): Remove.
36692         (__arm_vsriq_m_n_s16): Remove.
36693         (__arm_vsriq_m_n_u16): Remove.
36694         (__arm_vsriq_m_n_s32): Remove.
36695         (__arm_vsriq_m_n_u32): Remove.
36696         (__arm_vsriq): Remove.
36697         (__arm_vsriq_m): Remove.
36699 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
36701         * config/arm/iterators.md (mve_insn): Add vsri.
36702         * config/arm/mve.md (mve_vsriq_n_<supf><mode>): Rename into ...
36703         (@mve_<mve_insn>q_n_<supf><mode>): .,. this.
36704         (mve_vsriq_m_n_<supf><mode>): Rename into ...
36705         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
36707 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
36709         * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
36710         * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
36712 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
36714         * config/arm/arm-mve-builtins-base.cc (vsliq): New.
36715         * config/arm/arm-mve-builtins-base.def (vsliq): New.
36716         * config/arm/arm-mve-builtins-base.h (vsliq): New.
36717         * config/arm/arm-mve-builtins.cc
36718         (function_instance::has_inactive_argument): Handle vsliq.
36719         * config/arm/arm_mve.h (vsliq): Remove.
36720         (vsliq_m): Remove.
36721         (vsliq_n_u8): Remove.
36722         (vsliq_n_s8): Remove.
36723         (vsliq_n_u16): Remove.
36724         (vsliq_n_s16): Remove.
36725         (vsliq_n_u32): Remove.
36726         (vsliq_n_s32): Remove.
36727         (vsliq_m_n_s8): Remove.
36728         (vsliq_m_n_s32): Remove.
36729         (vsliq_m_n_s16): Remove.
36730         (vsliq_m_n_u8): Remove.
36731         (vsliq_m_n_u32): Remove.
36732         (vsliq_m_n_u16): Remove.
36733         (__arm_vsliq_n_u8): Remove.
36734         (__arm_vsliq_n_s8): Remove.
36735         (__arm_vsliq_n_u16): Remove.
36736         (__arm_vsliq_n_s16): Remove.
36737         (__arm_vsliq_n_u32): Remove.
36738         (__arm_vsliq_n_s32): Remove.
36739         (__arm_vsliq_m_n_s8): Remove.
36740         (__arm_vsliq_m_n_s32): Remove.
36741         (__arm_vsliq_m_n_s16): Remove.
36742         (__arm_vsliq_m_n_u8): Remove.
36743         (__arm_vsliq_m_n_u32): Remove.
36744         (__arm_vsliq_m_n_u16): Remove.
36745         (__arm_vsliq): Remove.
36746         (__arm_vsliq_m): Remove.
36748 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
36750         * config/arm/iterators.md (mve_insn>): Add vsli.
36751         * config/arm/mve.md (mve_vsliq_n_<supf><mode>): Rename into ...
36752         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
36753         (mve_vsliq_m_n_<supf><mode>): Rename into ...
36754         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
36756 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
36758         * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
36759         * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
36761 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
36763         * config/arm/arm-mve-builtins-base.cc (vpselq): New.
36764         * config/arm/arm-mve-builtins-base.def (vpselq): New.
36765         * config/arm/arm-mve-builtins-base.h (vpselq): New.
36766         * config/arm/arm_mve.h (vpselq): Remove.
36767         (vpselq_u8): Remove.
36768         (vpselq_s8): Remove.
36769         (vpselq_u16): Remove.
36770         (vpselq_s16): Remove.
36771         (vpselq_u32): Remove.
36772         (vpselq_s32): Remove.
36773         (vpselq_u64): Remove.
36774         (vpselq_s64): Remove.
36775         (vpselq_f16): Remove.
36776         (vpselq_f32): Remove.
36777         (__arm_vpselq_u8): Remove.
36778         (__arm_vpselq_s8): Remove.
36779         (__arm_vpselq_u16): Remove.
36780         (__arm_vpselq_s16): Remove.
36781         (__arm_vpselq_u32): Remove.
36782         (__arm_vpselq_s32): Remove.
36783         (__arm_vpselq_u64): Remove.
36784         (__arm_vpselq_s64): Remove.
36785         (__arm_vpselq_f16): Remove.
36786         (__arm_vpselq_f32): Remove.
36787         (__arm_vpselq): Remove.
36789 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
36791         * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
36792         * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
36794 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
36796         * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of
36797         gen_mve_vpselq.
36798         * config/arm/iterators.md (MVE_VPSELQ_F): New.
36799         (mve_insn): Add vpsel.
36800         * config/arm/mve.md (@mve_vpselq_<supf><mode>): Rename into ...
36801         (@mve_<mve_insn>q_<supf><mode>): ... this.
36802         (@mve_vpselq_f<mode>): Rename into ...
36803         (@mve_<mve_insn>q_f<mode>): ... this.
36805 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
36807         * config/arm/arm-mve-builtins-base.cc (vfmaq, vfmasq, vfmsq): New.
36808         * config/arm/arm-mve-builtins-base.def (vfmaq, vfmasq, vfmsq): New.
36809         * config/arm/arm-mve-builtins-base.h (vfmaq, vfmasq, vfmsq): New.
36810         * config/arm/arm-mve-builtins.cc
36811         (function_instance::has_inactive_argument): Handle vfmaq, vfmasq,
36812         vfmsq.
36813         * config/arm/arm_mve.h (vfmaq): Remove.
36814         (vfmasq): Remove.
36815         (vfmsq): Remove.
36816         (vfmaq_m): Remove.
36817         (vfmasq_m): Remove.
36818         (vfmsq_m): Remove.
36819         (vfmaq_f16): Remove.
36820         (vfmaq_n_f16): Remove.
36821         (vfmasq_n_f16): Remove.
36822         (vfmsq_f16): Remove.
36823         (vfmaq_f32): Remove.
36824         (vfmaq_n_f32): Remove.
36825         (vfmasq_n_f32): Remove.
36826         (vfmsq_f32): Remove.
36827         (vfmaq_m_f32): Remove.
36828         (vfmaq_m_f16): Remove.
36829         (vfmaq_m_n_f32): Remove.
36830         (vfmaq_m_n_f16): Remove.
36831         (vfmasq_m_n_f32): Remove.
36832         (vfmasq_m_n_f16): Remove.
36833         (vfmsq_m_f32): Remove.
36834         (vfmsq_m_f16): Remove.
36835         (__arm_vfmaq_f16): Remove.
36836         (__arm_vfmaq_n_f16): Remove.
36837         (__arm_vfmasq_n_f16): Remove.
36838         (__arm_vfmsq_f16): Remove.
36839         (__arm_vfmaq_f32): Remove.
36840         (__arm_vfmaq_n_f32): Remove.
36841         (__arm_vfmasq_n_f32): Remove.
36842         (__arm_vfmsq_f32): Remove.
36843         (__arm_vfmaq_m_f32): Remove.
36844         (__arm_vfmaq_m_f16): Remove.
36845         (__arm_vfmaq_m_n_f32): Remove.
36846         (__arm_vfmaq_m_n_f16): Remove.
36847         (__arm_vfmasq_m_n_f32): Remove.
36848         (__arm_vfmasq_m_n_f16): Remove.
36849         (__arm_vfmsq_m_f32): Remove.
36850         (__arm_vfmsq_m_f16): Remove.
36851         (__arm_vfmaq): Remove.
36852         (__arm_vfmasq): Remove.
36853         (__arm_vfmsq): Remove.
36854         (__arm_vfmaq_m): Remove.
36855         (__arm_vfmasq_m): Remove.
36856         (__arm_vfmsq_m): Remove.
36858 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
36860         * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_M_F,
36861         VFMSQ_M_F.
36862         (MVE_FP_M_N_BINARY): Add VFMAQ_M_N_F, VFMASQ_M_N_F.
36863         (MVE_VFMxQ_F, MVE_VFMAxQ_N_F): New.
36864         (mve_insn): Add vfma, vfmas, vfms.
36865         * config/arm/mve.md (mve_vfmaq_f<mode>, mve_vfmsq_f<mode>): Merge
36866         into ...
36867         (@mve_<mve_insn>q_f<mode>): ... this.
36868         (mve_vfmaq_n_f<mode>, mve_vfmasq_n_f<mode>): Merge into ...
36869         (@mve_<mve_insn>q_n_f<mode>): ... this.
36870         (mve_vfmaq_m_f<mode>, mve_vfmsq_m_f<mode>): Merge into
36871         @mve_<mve_insn>q_m_f<mode>.
36872         (mve_vfmaq_m_n_f<mode>, mve_vfmasq_m_n_f<mode>): Merge into
36873         @mve_<mve_insn>q_m_n_f<mode>.
36875 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
36877         * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
36878         * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
36880 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
36882         * config/arm/arm-mve-builtins-base.cc
36883         (FUNCTION_WITH_RTX_M_N_NO_F): New.
36884         (vmvnq): New.
36885         * config/arm/arm-mve-builtins-base.def (vmvnq): New.
36886         * config/arm/arm-mve-builtins-base.h (vmvnq): New.
36887         * config/arm/arm_mve.h (vmvnq): Remove.
36888         (vmvnq_m): Remove.
36889         (vmvnq_x): Remove.
36890         (vmvnq_s8): Remove.
36891         (vmvnq_s16): Remove.
36892         (vmvnq_s32): Remove.
36893         (vmvnq_n_s16): Remove.
36894         (vmvnq_n_s32): Remove.
36895         (vmvnq_u8): Remove.
36896         (vmvnq_u16): Remove.
36897         (vmvnq_u32): Remove.
36898         (vmvnq_n_u16): Remove.
36899         (vmvnq_n_u32): Remove.
36900         (vmvnq_m_u8): Remove.
36901         (vmvnq_m_s8): Remove.
36902         (vmvnq_m_u16): Remove.
36903         (vmvnq_m_s16): Remove.
36904         (vmvnq_m_u32): Remove.
36905         (vmvnq_m_s32): Remove.
36906         (vmvnq_m_n_s16): Remove.
36907         (vmvnq_m_n_u16): Remove.
36908         (vmvnq_m_n_s32): Remove.
36909         (vmvnq_m_n_u32): Remove.
36910         (vmvnq_x_s8): Remove.
36911         (vmvnq_x_s16): Remove.
36912         (vmvnq_x_s32): Remove.
36913         (vmvnq_x_u8): Remove.
36914         (vmvnq_x_u16): Remove.
36915         (vmvnq_x_u32): Remove.
36916         (vmvnq_x_n_s16): Remove.
36917         (vmvnq_x_n_s32): Remove.
36918         (vmvnq_x_n_u16): Remove.
36919         (vmvnq_x_n_u32): Remove.
36920         (__arm_vmvnq_s8): Remove.
36921         (__arm_vmvnq_s16): Remove.
36922         (__arm_vmvnq_s32): Remove.
36923         (__arm_vmvnq_n_s16): Remove.
36924         (__arm_vmvnq_n_s32): Remove.
36925         (__arm_vmvnq_u8): Remove.
36926         (__arm_vmvnq_u16): Remove.
36927         (__arm_vmvnq_u32): Remove.
36928         (__arm_vmvnq_n_u16): Remove.
36929         (__arm_vmvnq_n_u32): Remove.
36930         (__arm_vmvnq_m_u8): Remove.
36931         (__arm_vmvnq_m_s8): Remove.
36932         (__arm_vmvnq_m_u16): Remove.
36933         (__arm_vmvnq_m_s16): Remove.
36934         (__arm_vmvnq_m_u32): Remove.
36935         (__arm_vmvnq_m_s32): Remove.
36936         (__arm_vmvnq_m_n_s16): Remove.
36937         (__arm_vmvnq_m_n_u16): Remove.
36938         (__arm_vmvnq_m_n_s32): Remove.
36939         (__arm_vmvnq_m_n_u32): Remove.
36940         (__arm_vmvnq_x_s8): Remove.
36941         (__arm_vmvnq_x_s16): Remove.
36942         (__arm_vmvnq_x_s32): Remove.
36943         (__arm_vmvnq_x_u8): Remove.
36944         (__arm_vmvnq_x_u16): Remove.
36945         (__arm_vmvnq_x_u32): Remove.
36946         (__arm_vmvnq_x_n_s16): Remove.
36947         (__arm_vmvnq_x_n_s32): Remove.
36948         (__arm_vmvnq_x_n_u16): Remove.
36949         (__arm_vmvnq_x_n_u32): Remove.
36950         (__arm_vmvnq): Remove.
36951         (__arm_vmvnq_m): Remove.
36952         (__arm_vmvnq_x): Remove.
36954 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
36956         * config/arm/iterators.md (mve_insn): Add vmvn.
36957         * config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Rename into ...
36958         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
36959         (mve_vmvnq_m_<supf><mode>): Rename into ...
36960         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
36961         (mve_vmvnq_m_n_<supf><mode>): Rename into ...
36962         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
36964 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
36966         * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
36967         * config/arm/arm-mve-builtins-shapes.h (mvn): New.
36969 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
36971         * config/arm/arm-mve-builtins-base.cc (vbrsrq): New.
36972         * config/arm/arm-mve-builtins-base.def (vbrsrq): New.
36973         * config/arm/arm-mve-builtins-base.h (vbrsrq): New.
36974         * config/arm/arm_mve.h (vbrsrq): Remove.
36975         (vbrsrq_m): Remove.
36976         (vbrsrq_x): Remove.
36977         (vbrsrq_n_f16): Remove.
36978         (vbrsrq_n_f32): Remove.
36979         (vbrsrq_n_u8): Remove.
36980         (vbrsrq_n_s8): Remove.
36981         (vbrsrq_n_u16): Remove.
36982         (vbrsrq_n_s16): Remove.
36983         (vbrsrq_n_u32): Remove.
36984         (vbrsrq_n_s32): Remove.
36985         (vbrsrq_m_n_s8): Remove.
36986         (vbrsrq_m_n_s32): Remove.
36987         (vbrsrq_m_n_s16): Remove.
36988         (vbrsrq_m_n_u8): Remove.
36989         (vbrsrq_m_n_u32): Remove.
36990         (vbrsrq_m_n_u16): Remove.
36991         (vbrsrq_m_n_f32): Remove.
36992         (vbrsrq_m_n_f16): Remove.
36993         (vbrsrq_x_n_s8): Remove.
36994         (vbrsrq_x_n_s16): Remove.
36995         (vbrsrq_x_n_s32): Remove.
36996         (vbrsrq_x_n_u8): Remove.
36997         (vbrsrq_x_n_u16): Remove.
36998         (vbrsrq_x_n_u32): Remove.
36999         (vbrsrq_x_n_f16): Remove.
37000         (vbrsrq_x_n_f32): Remove.
37001         (__arm_vbrsrq_n_u8): Remove.
37002         (__arm_vbrsrq_n_s8): Remove.
37003         (__arm_vbrsrq_n_u16): Remove.
37004         (__arm_vbrsrq_n_s16): Remove.
37005         (__arm_vbrsrq_n_u32): Remove.
37006         (__arm_vbrsrq_n_s32): Remove.
37007         (__arm_vbrsrq_m_n_s8): Remove.
37008         (__arm_vbrsrq_m_n_s32): Remove.
37009         (__arm_vbrsrq_m_n_s16): Remove.
37010         (__arm_vbrsrq_m_n_u8): Remove.
37011         (__arm_vbrsrq_m_n_u32): Remove.
37012         (__arm_vbrsrq_m_n_u16): Remove.
37013         (__arm_vbrsrq_x_n_s8): Remove.
37014         (__arm_vbrsrq_x_n_s16): Remove.
37015         (__arm_vbrsrq_x_n_s32): Remove.
37016         (__arm_vbrsrq_x_n_u8): Remove.
37017         (__arm_vbrsrq_x_n_u16): Remove.
37018         (__arm_vbrsrq_x_n_u32): Remove.
37019         (__arm_vbrsrq_n_f16): Remove.
37020         (__arm_vbrsrq_n_f32): Remove.
37021         (__arm_vbrsrq_m_n_f32): Remove.
37022         (__arm_vbrsrq_m_n_f16): Remove.
37023         (__arm_vbrsrq_x_n_f16): Remove.
37024         (__arm_vbrsrq_x_n_f32): Remove.
37025         (__arm_vbrsrq): Remove.
37026         (__arm_vbrsrq_m): Remove.
37027         (__arm_vbrsrq_x): Remove.
37029 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
37031         * config/arm/iterators.md (MVE_VBRSR_M_N_FP, MVE_VBRSR_N_FP): New.
37032         (mve_insn): Add vbrsr.
37033         * config/arm/mve.md (mve_vbrsrq_n_f<mode>): Rename into ...
37034         (@mve_<mve_insn>q_n_f<mode>): ... this.
37035         (mve_vbrsrq_n_<supf><mode>): Rename into ...
37036         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
37037         (mve_vbrsrq_m_n_<supf><mode>): Rename into ...
37038         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
37039         (mve_vbrsrq_m_n_f<mode>): Rename into ...
37040         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
37042 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
37044         * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
37045         * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
37047 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
37049         * config/arm/arm-mve-builtins-base.cc (vqshluq): New.
37050         * config/arm/arm-mve-builtins-base.def (vqshluq): New.
37051         * config/arm/arm-mve-builtins-base.h (vqshluq): New.
37052         * config/arm/arm_mve.h (vqshluq): Remove.
37053         (vqshluq_m): Remove.
37054         (vqshluq_n_s8): Remove.
37055         (vqshluq_n_s16): Remove.
37056         (vqshluq_n_s32): Remove.
37057         (vqshluq_m_n_s8): Remove.
37058         (vqshluq_m_n_s16): Remove.
37059         (vqshluq_m_n_s32): Remove.
37060         (__arm_vqshluq_n_s8): Remove.
37061         (__arm_vqshluq_n_s16): Remove.
37062         (__arm_vqshluq_n_s32): Remove.
37063         (__arm_vqshluq_m_n_s8): Remove.
37064         (__arm_vqshluq_m_n_s16): Remove.
37065         (__arm_vqshluq_m_n_s32): Remove.
37066         (__arm_vqshluq): Remove.
37067         (__arm_vqshluq_m): Remove.
37069 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
37071         * config/arm/iterators.md (mve_insn): Add vqshlu.
37072         (supf): Add VQSHLUQ_M_N_S, VQSHLUQ_N_S.
37073         (VQSHLUQ_M_N, VQSHLUQ_N): New.
37074         * config/arm/mve.md (mve_vqshluq_n_s<mode>): Change name into ...
37075         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
37076         (mve_vqshluq_m_n_s<mode>): Change name into ...
37077         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
37079 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
37081         * config/arm/arm-mve-builtins-shapes.cc
37082         (binary_lshift_unsigned): New.
37083         * config/arm/arm-mve-builtins-shapes.h
37084         (binary_lshift_unsigned): New.
37086 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
37088         * config/arm/arm-mve-builtins-base.cc (vrmlaldavhaq)
37089         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
37090         * config/arm/arm-mve-builtins-base.def (vrmlaldavhaq)
37091         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
37092         * config/arm/arm-mve-builtins-base.h (vrmlaldavhaq)
37093         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
37094         * config/arm/arm-mve-builtins-functions.h: Handle vrmlaldavhaq,
37095         vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq.
37096         * config/arm/arm_mve.h (vrmlaldavhaq): Remove.
37097         (vrmlaldavhaxq): Remove.
37098         (vrmlsldavhaq): Remove.
37099         (vrmlsldavhaxq): Remove.
37100         (vrmlaldavhaq_p): Remove.
37101         (vrmlaldavhaxq_p): Remove.
37102         (vrmlsldavhaq_p): Remove.
37103         (vrmlsldavhaxq_p): Remove.
37104         (vrmlaldavhaq_s32): Remove.
37105         (vrmlaldavhaq_u32): Remove.
37106         (vrmlaldavhaxq_s32): Remove.
37107         (vrmlsldavhaq_s32): Remove.
37108         (vrmlsldavhaxq_s32): Remove.
37109         (vrmlaldavhaq_p_s32): Remove.
37110         (vrmlaldavhaq_p_u32): Remove.
37111         (vrmlaldavhaxq_p_s32): Remove.
37112         (vrmlsldavhaq_p_s32): Remove.
37113         (vrmlsldavhaxq_p_s32): Remove.
37114         (__arm_vrmlaldavhaq_s32): Remove.
37115         (__arm_vrmlaldavhaq_u32): Remove.
37116         (__arm_vrmlaldavhaxq_s32): Remove.
37117         (__arm_vrmlsldavhaq_s32): Remove.
37118         (__arm_vrmlsldavhaxq_s32): Remove.
37119         (__arm_vrmlaldavhaq_p_s32): Remove.
37120         (__arm_vrmlaldavhaq_p_u32): Remove.
37121         (__arm_vrmlaldavhaxq_p_s32): Remove.
37122         (__arm_vrmlsldavhaq_p_s32): Remove.
37123         (__arm_vrmlsldavhaxq_p_s32): Remove.
37124         (__arm_vrmlaldavhaq): Remove.
37125         (__arm_vrmlaldavhaxq): Remove.
37126         (__arm_vrmlsldavhaq): Remove.
37127         (__arm_vrmlsldavhaxq): Remove.
37128         (__arm_vrmlaldavhaq_p): Remove.
37129         (__arm_vrmlaldavhaxq_p): Remove.
37130         (__arm_vrmlsldavhaq_p): Remove.
37131         (__arm_vrmlsldavhaxq_p): Remove.
37133 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
37135         * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ)
37136         (MVE_VRMLxLDAVHAxQ_P): New.
37137         (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha,
37138         vrmlsldavhax.
37139         (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
37140         VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S,
37141         VRMLALDAVHAQ_P_S.
37142         * config/arm/mve.md (mve_vrmlaldavhaq_<supf>v4si)
37143         (mve_vrmlaldavhaxq_sv4si, mve_vrmlsldavhaxq_sv4si)
37144         (mve_vrmlsldavhaq_sv4si): Merge into ...
37145         (@mve_<mve_insn>q_<supf>v4si): ... this.
37146         (mve_vrmlaldavhaq_p_sv4si, mve_vrmlaldavhaq_p_uv4si)
37147         (mve_vrmlaldavhaxq_p_sv4si, mve_vrmlsldavhaq_p_sv4si)
37148         (mve_vrmlsldavhaxq_p_sv4si): Merge into ...
37149         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
37151 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
37153         * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New.
37154         * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq):
37155         New.
37156         * config/arm/arm-mve-builtins-base.h (vqdmullbq, vqdmulltq): New.
37157         * config/arm/arm_mve.h (vqdmulltq): Remove.
37158         (vqdmullbq): Remove.
37159         (vqdmullbq_m): Remove.
37160         (vqdmulltq_m): Remove.
37161         (vqdmulltq_s16): Remove.
37162         (vqdmulltq_n_s16): Remove.
37163         (vqdmullbq_s16): Remove.
37164         (vqdmullbq_n_s16): Remove.
37165         (vqdmulltq_s32): Remove.
37166         (vqdmulltq_n_s32): Remove.
37167         (vqdmullbq_s32): Remove.
37168         (vqdmullbq_n_s32): Remove.
37169         (vqdmullbq_m_n_s32): Remove.
37170         (vqdmullbq_m_n_s16): Remove.
37171         (vqdmullbq_m_s32): Remove.
37172         (vqdmullbq_m_s16): Remove.
37173         (vqdmulltq_m_n_s32): Remove.
37174         (vqdmulltq_m_n_s16): Remove.
37175         (vqdmulltq_m_s32): Remove.
37176         (vqdmulltq_m_s16): Remove.
37177         (__arm_vqdmulltq_s16): Remove.
37178         (__arm_vqdmulltq_n_s16): Remove.
37179         (__arm_vqdmullbq_s16): Remove.
37180         (__arm_vqdmullbq_n_s16): Remove.
37181         (__arm_vqdmulltq_s32): Remove.
37182         (__arm_vqdmulltq_n_s32): Remove.
37183         (__arm_vqdmullbq_s32): Remove.
37184         (__arm_vqdmullbq_n_s32): Remove.
37185         (__arm_vqdmullbq_m_n_s32): Remove.
37186         (__arm_vqdmullbq_m_n_s16): Remove.
37187         (__arm_vqdmullbq_m_s32): Remove.
37188         (__arm_vqdmullbq_m_s16): Remove.
37189         (__arm_vqdmulltq_m_n_s32): Remove.
37190         (__arm_vqdmulltq_m_n_s16): Remove.
37191         (__arm_vqdmulltq_m_s32): Remove.
37192         (__arm_vqdmulltq_m_s16): Remove.
37193         (__arm_vqdmulltq): Remove.
37194         (__arm_vqdmullbq): Remove.
37195         (__arm_vqdmullbq_m): Remove.
37196         (__arm_vqdmulltq_m): Remove.
37198 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
37200         * config/arm/iterators.md (MVE_VQDMULLxQ, MVE_VQDMULLxQ_M)
37201         (MVE_VQDMULLxQ_M_N, MVE_VQDMULLxQ_N): New.
37202         (mve_insn): Add vqdmullb, vqdmullt.
37203         (supf): Add VQDMULLBQ_S, VQDMULLBQ_M_S, VQDMULLBQ_M_N_S,
37204         VQDMULLBQ_N_S, VQDMULLTQ_S, VQDMULLTQ_M_S, VQDMULLTQ_M_N_S,
37205         VQDMULLTQ_N_S.
37206         * config/arm/mve.md (mve_vqdmullbq_n_s<mode>)
37207         (mve_vqdmulltq_n_s<mode>): Merge into ...
37208         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
37209         (mve_vqdmullbq_s<mode>, mve_vqdmulltq_s<mode>): Merge into ...
37210         (@mve_<mve_insn>q_<supf><mode>): ... this.
37211         (mve_vqdmullbq_m_n_s<mode>, mve_vqdmulltq_m_n_s<mode>): Merge into
37212         ...
37213         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
37214         (mve_vqdmullbq_m_s<mode>, mve_vqdmulltq_m_s<mode>): Merge into ...
37215         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
37217 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
37219         * config/arm/arm-mve-builtins-shapes.cc (binary_widen_opt_n): New.
37220         * config/arm/arm-mve-builtins-shapes.h (binary_widen_opt_n): New.
37222 2023-05-12  Kito Cheng  <kito.cheng@sifive.com>
37224         * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi):
37225         Drop unused parameter.
37226         (riscv_select_multilib): Ditto.
37227         (riscv_compute_multilib): Update call site of
37228         riscv_select_multilib_by_abi and riscv_select_multilib_by_abi.
37230 2023-05-12  Juzhe Zhong  <juzhe.zhong@rivai.ai>
37232         * config/riscv/autovec.md (vec_init<mode><vel>): New pattern.
37233         * config/riscv/riscv-protos.h (expand_vec_init): New function.
37234         * config/riscv/riscv-v.cc (class rvv_builder): New class.
37235         (rvv_builder::can_duplicate_repeating_sequence_p): New function.
37236         (rvv_builder::get_merged_repeating_sequence): Ditto.
37237         (expand_vector_init_insert_elems): Ditto.
37238         (expand_vec_init): Ditto.
37239         * config/riscv/vector-iterators.md: New attribute.
37241 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
37243         * config/rs6000/rs6000-builtins.def
37244         (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp
37245         to xsiexpdp_di.
37246         (__builtin_vsx_scalar_insert_exp_dp): Replace bif-pattern from
37247         xsiexpdpf to xsiexpdpf_di.
37248         * config/rs6000/vsx.md (xsiexpdp): Rename to...
37249         (xsiexpdp_<mode>): ..., set the mode of second operand to GPR and
37250         replace TARGET_64BIT with TARGET_POWERPC64.
37251         (xsiexpdpf): Rename to...
37252         (xsiexpdpf_<mode>): ..., set the mode of second operand to GPR and
37253         replace TARGET_64BIT with TARGET_POWERPC64.
37255 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
37257         * config/rs6000/rs6000-builtins.def
37258         (__builtin_vsx_scalar_extract_sig): Set return type to const signed
37259         long long.
37260         * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
37261         TARGET_POWERPC64.
37263 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
37265         * config/rs6000/rs6000-builtins.def
37266         (__builtin_vsx_scalar_extract_exp): Set return type to const signed
37267         int and set its bif-pattern to xsxexpdp_si, move it from power9-64
37268         to power9 catalog.
37269         * config/rs6000/vsx.md (xsxexpdp): Rename to ...
37270         (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
37271         TARGET_64BIT check.
37272         * doc/extend.texi (scalar_extract_exp): Remove 64-bit environment
37273         requirement when it has a 64-bit argument.
37275 2023-05-12  Pan Li  <pan2.li@intel.com>
37276             Richard Sandiford  <richard.sandiford@arm.com>
37277             Richard Biener  <rguenther@suse.de>
37278             Jakub Jelinek  <jakub@redhat.com>
37280         * mux-utils.h: Add overload operator == and != for pointer_mux.
37281         * var-tracking.cc: Included mux-utils.h for pointer_tmux.
37282         (decl_or_value): Changed from void * to pointer_mux<tree_node, rtx_def>.
37283         (dv_is_decl_p): Reconciled to the new type, aka pointer_mux.
37284         (dv_as_decl): Ditto.
37285         (dv_as_opaque): Removed due to unnecessary.
37286         (struct variable_hasher): Take decl_or_value as compare_type.
37287         (variable_hasher::equal): Diito.
37288         (dv_from_decl): Reconciled to the new type, aka pointer_mux.
37289         (dv_from_value): Ditto.
37290         (attrs_list_member):  Ditto.
37291         (vars_copy): Ditto.
37292         (var_reg_decl_set): Ditto.
37293         (var_reg_delete_and_set): Ditto.
37294         (find_loc_in_1pdv): Ditto.
37295         (canonicalize_values_star): Ditto.
37296         (variable_post_merge_new_vals): Ditto.
37297         (dump_onepart_variable_differences): Ditto.
37298         (variable_different_p): Ditto.
37299         (set_slot_part): Ditto.
37300         (clobber_slot_part): Ditto.
37301         (clobber_variable_part): Ditto.
37303 2023-05-11  mtsamis  <manolis.tsamis@vrull.eu>
37305         * match.pd: simplify vector shift + bit_and + multiply.
37307 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
37309         * config/arm/arm-mve-builtins-base.cc (vmlaq, vmlasq, vqdmlahq)
37310         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
37311         * config/arm/arm-mve-builtins-base.def (vmlaq, vmlasq, vqdmlahq)
37312         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
37313         * config/arm/arm-mve-builtins-base.h (vmlaq, vmlasq, vqdmlahq)
37314         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
37315         * config/arm/arm-mve-builtins.cc
37316         (function_instance::has_inactive_argument): Handle vmlaq, vmlasq,
37317         vqdmlahq, vqdmlashq, vqrdmlahq, vqrdmlashq.
37318         * config/arm/arm_mve.h (vqrdmlashq): Remove.
37319         (vqrdmlahq): Remove.
37320         (vqdmlashq): Remove.
37321         (vqdmlahq): Remove.
37322         (vmlasq): Remove.
37323         (vmlaq): Remove.
37324         (vmlaq_m): Remove.
37325         (vmlasq_m): Remove.
37326         (vqdmlashq_m): Remove.
37327         (vqdmlahq_m): Remove.
37328         (vqrdmlahq_m): Remove.
37329         (vqrdmlashq_m): Remove.
37330         (vmlasq_n_u8): Remove.
37331         (vmlaq_n_u8): Remove.
37332         (vqrdmlashq_n_s8): Remove.
37333         (vqrdmlahq_n_s8): Remove.
37334         (vqdmlahq_n_s8): Remove.
37335         (vqdmlashq_n_s8): Remove.
37336         (vmlasq_n_s8): Remove.
37337         (vmlaq_n_s8): Remove.
37338         (vmlasq_n_u16): Remove.
37339         (vmlaq_n_u16): Remove.
37340         (vqrdmlashq_n_s16): Remove.
37341         (vqrdmlahq_n_s16): Remove.
37342         (vqdmlashq_n_s16): Remove.
37343         (vqdmlahq_n_s16): Remove.
37344         (vmlasq_n_s16): Remove.
37345         (vmlaq_n_s16): Remove.
37346         (vmlasq_n_u32): Remove.
37347         (vmlaq_n_u32): Remove.
37348         (vqrdmlashq_n_s32): Remove.
37349         (vqrdmlahq_n_s32): Remove.
37350         (vqdmlashq_n_s32): Remove.
37351         (vqdmlahq_n_s32): Remove.
37352         (vmlasq_n_s32): Remove.
37353         (vmlaq_n_s32): Remove.
37354         (vmlaq_m_n_s8): Remove.
37355         (vmlaq_m_n_s32): Remove.
37356         (vmlaq_m_n_s16): Remove.
37357         (vmlaq_m_n_u8): Remove.
37358         (vmlaq_m_n_u32): Remove.
37359         (vmlaq_m_n_u16): Remove.
37360         (vmlasq_m_n_s8): Remove.
37361         (vmlasq_m_n_s32): Remove.
37362         (vmlasq_m_n_s16): Remove.
37363         (vmlasq_m_n_u8): Remove.
37364         (vmlasq_m_n_u32): Remove.
37365         (vmlasq_m_n_u16): Remove.
37366         (vqdmlashq_m_n_s8): Remove.
37367         (vqdmlashq_m_n_s32): Remove.
37368         (vqdmlashq_m_n_s16): Remove.
37369         (vqdmlahq_m_n_s8): Remove.
37370         (vqdmlahq_m_n_s32): Remove.
37371         (vqdmlahq_m_n_s16): Remove.
37372         (vqrdmlahq_m_n_s8): Remove.
37373         (vqrdmlahq_m_n_s32): Remove.
37374         (vqrdmlahq_m_n_s16): Remove.
37375         (vqrdmlashq_m_n_s8): Remove.
37376         (vqrdmlashq_m_n_s32): Remove.
37377         (vqrdmlashq_m_n_s16): Remove.
37378         (__arm_vmlasq_n_u8): Remove.
37379         (__arm_vmlaq_n_u8): Remove.
37380         (__arm_vqrdmlashq_n_s8): Remove.
37381         (__arm_vqdmlashq_n_s8): Remove.
37382         (__arm_vqrdmlahq_n_s8): Remove.
37383         (__arm_vqdmlahq_n_s8): Remove.
37384         (__arm_vmlasq_n_s8): Remove.
37385         (__arm_vmlaq_n_s8): Remove.
37386         (__arm_vmlasq_n_u16): Remove.
37387         (__arm_vmlaq_n_u16): Remove.
37388         (__arm_vqrdmlashq_n_s16): Remove.
37389         (__arm_vqdmlashq_n_s16): Remove.
37390         (__arm_vqrdmlahq_n_s16): Remove.
37391         (__arm_vqdmlahq_n_s16): Remove.
37392         (__arm_vmlasq_n_s16): Remove.
37393         (__arm_vmlaq_n_s16): Remove.
37394         (__arm_vmlasq_n_u32): Remove.
37395         (__arm_vmlaq_n_u32): Remove.
37396         (__arm_vqrdmlashq_n_s32): Remove.
37397         (__arm_vqdmlashq_n_s32): Remove.
37398         (__arm_vqrdmlahq_n_s32): Remove.
37399         (__arm_vqdmlahq_n_s32): Remove.
37400         (__arm_vmlasq_n_s32): Remove.
37401         (__arm_vmlaq_n_s32): Remove.
37402         (__arm_vmlaq_m_n_s8): Remove.
37403         (__arm_vmlaq_m_n_s32): Remove.
37404         (__arm_vmlaq_m_n_s16): Remove.
37405         (__arm_vmlaq_m_n_u8): Remove.
37406         (__arm_vmlaq_m_n_u32): Remove.
37407         (__arm_vmlaq_m_n_u16): Remove.
37408         (__arm_vmlasq_m_n_s8): Remove.
37409         (__arm_vmlasq_m_n_s32): Remove.
37410         (__arm_vmlasq_m_n_s16): Remove.
37411         (__arm_vmlasq_m_n_u8): Remove.
37412         (__arm_vmlasq_m_n_u32): Remove.
37413         (__arm_vmlasq_m_n_u16): Remove.
37414         (__arm_vqdmlahq_m_n_s8): Remove.
37415         (__arm_vqdmlahq_m_n_s32): Remove.
37416         (__arm_vqdmlahq_m_n_s16): Remove.
37417         (__arm_vqrdmlahq_m_n_s8): Remove.
37418         (__arm_vqrdmlahq_m_n_s32): Remove.
37419         (__arm_vqrdmlahq_m_n_s16): Remove.
37420         (__arm_vqrdmlashq_m_n_s8): Remove.
37421         (__arm_vqrdmlashq_m_n_s32): Remove.
37422         (__arm_vqrdmlashq_m_n_s16): Remove.
37423         (__arm_vqdmlashq_m_n_s8): Remove.
37424         (__arm_vqdmlashq_m_n_s16): Remove.
37425         (__arm_vqdmlashq_m_n_s32): Remove.
37426         (__arm_vmlasq): Remove.
37427         (__arm_vmlaq): Remove.
37428         (__arm_vqrdmlashq): Remove.
37429         (__arm_vqdmlashq): Remove.
37430         (__arm_vqrdmlahq): Remove.
37431         (__arm_vqdmlahq): Remove.
37432         (__arm_vmlaq_m): Remove.
37433         (__arm_vmlasq_m): Remove.
37434         (__arm_vqdmlahq_m): Remove.
37435         (__arm_vqrdmlahq_m): Remove.
37436         (__arm_vqrdmlashq_m): Remove.
37437         (__arm_vqdmlashq_m): Remove.
37439 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
37441         * config/arm/iterators.md (MVE_VMLxQ_N): New.
37442         (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah,
37443         vqrdmlash.
37444         (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S,
37445         VQRDMLASHQ_N_S.
37446         * config/arm/mve.md (mve_vmlaq_n_<supf><mode>)
37447         (mve_vmlasq_n_<supf><mode>, mve_vqdmlahq_n_<supf><mode>)
37448         (mve_vqdmlashq_n_<supf><mode>, mve_vqrdmlahq_n_<supf><mode>)
37449         (mve_vqrdmlashq_n_<supf><mode>): Merge into ...
37450         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
37452 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
37454         * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
37455         * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
37457 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
37459         * config/arm/arm-mve-builtins-base.cc (vqdmladhq, vqdmladhxq)
37460         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
37461         (vqrdmlsdhxq): New.
37462         * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
37463         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
37464         (vqrdmlsdhxq): New.
37465         * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
37466         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
37467         (vqrdmlsdhxq): New.
37468         * config/arm/arm-mve-builtins.cc
37469         (function_instance::has_inactive_argument): Handle vqrdmladhq,
37470         vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq vqdmladhq, vqdmladhxq,
37471         vqdmlsdhq, vqdmlsdhxq.
37472         * config/arm/arm_mve.h (vqrdmlsdhxq): Remove.
37473         (vqrdmlsdhq): Remove.
37474         (vqrdmladhxq): Remove.
37475         (vqrdmladhq): Remove.
37476         (vqdmlsdhxq): Remove.
37477         (vqdmlsdhq): Remove.
37478         (vqdmladhxq): Remove.
37479         (vqdmladhq): Remove.
37480         (vqdmladhq_m): Remove.
37481         (vqdmladhxq_m): Remove.
37482         (vqdmlsdhq_m): Remove.
37483         (vqdmlsdhxq_m): Remove.
37484         (vqrdmladhq_m): Remove.
37485         (vqrdmladhxq_m): Remove.
37486         (vqrdmlsdhq_m): Remove.
37487         (vqrdmlsdhxq_m): Remove.
37488         (vqrdmlsdhxq_s8): Remove.
37489         (vqrdmlsdhq_s8): Remove.
37490         (vqrdmladhxq_s8): Remove.
37491         (vqrdmladhq_s8): Remove.
37492         (vqdmlsdhxq_s8): Remove.
37493         (vqdmlsdhq_s8): Remove.
37494         (vqdmladhxq_s8): Remove.
37495         (vqdmladhq_s8): Remove.
37496         (vqrdmlsdhxq_s16): Remove.
37497         (vqrdmlsdhq_s16): Remove.
37498         (vqrdmladhxq_s16): Remove.
37499         (vqrdmladhq_s16): Remove.
37500         (vqdmlsdhxq_s16): Remove.
37501         (vqdmlsdhq_s16): Remove.
37502         (vqdmladhxq_s16): Remove.
37503         (vqdmladhq_s16): Remove.
37504         (vqrdmlsdhxq_s32): Remove.
37505         (vqrdmlsdhq_s32): Remove.
37506         (vqrdmladhxq_s32): Remove.
37507         (vqrdmladhq_s32): Remove.
37508         (vqdmlsdhxq_s32): Remove.
37509         (vqdmlsdhq_s32): Remove.
37510         (vqdmladhxq_s32): Remove.
37511         (vqdmladhq_s32): Remove.
37512         (vqdmladhq_m_s8): Remove.
37513         (vqdmladhq_m_s32): Remove.
37514         (vqdmladhq_m_s16): Remove.
37515         (vqdmladhxq_m_s8): Remove.
37516         (vqdmladhxq_m_s32): Remove.
37517         (vqdmladhxq_m_s16): Remove.
37518         (vqdmlsdhq_m_s8): Remove.
37519         (vqdmlsdhq_m_s32): Remove.
37520         (vqdmlsdhq_m_s16): Remove.
37521         (vqdmlsdhxq_m_s8): Remove.
37522         (vqdmlsdhxq_m_s32): Remove.
37523         (vqdmlsdhxq_m_s16): Remove.
37524         (vqrdmladhq_m_s8): Remove.
37525         (vqrdmladhq_m_s32): Remove.
37526         (vqrdmladhq_m_s16): Remove.
37527         (vqrdmladhxq_m_s8): Remove.
37528         (vqrdmladhxq_m_s32): Remove.
37529         (vqrdmladhxq_m_s16): Remove.
37530         (vqrdmlsdhq_m_s8): Remove.
37531         (vqrdmlsdhq_m_s32): Remove.
37532         (vqrdmlsdhq_m_s16): Remove.
37533         (vqrdmlsdhxq_m_s8): Remove.
37534         (vqrdmlsdhxq_m_s32): Remove.
37535         (vqrdmlsdhxq_m_s16): Remove.
37536         (__arm_vqrdmlsdhxq_s8): Remove.
37537         (__arm_vqrdmlsdhq_s8): Remove.
37538         (__arm_vqrdmladhxq_s8): Remove.
37539         (__arm_vqrdmladhq_s8): Remove.
37540         (__arm_vqdmlsdhxq_s8): Remove.
37541         (__arm_vqdmlsdhq_s8): Remove.
37542         (__arm_vqdmladhxq_s8): Remove.
37543         (__arm_vqdmladhq_s8): Remove.
37544         (__arm_vqrdmlsdhxq_s16): Remove.
37545         (__arm_vqrdmlsdhq_s16): Remove.
37546         (__arm_vqrdmladhxq_s16): Remove.
37547         (__arm_vqrdmladhq_s16): Remove.
37548         (__arm_vqdmlsdhxq_s16): Remove.
37549         (__arm_vqdmlsdhq_s16): Remove.
37550         (__arm_vqdmladhxq_s16): Remove.
37551         (__arm_vqdmladhq_s16): Remove.
37552         (__arm_vqrdmlsdhxq_s32): Remove.
37553         (__arm_vqrdmlsdhq_s32): Remove.
37554         (__arm_vqrdmladhxq_s32): Remove.
37555         (__arm_vqrdmladhq_s32): Remove.
37556         (__arm_vqdmlsdhxq_s32): Remove.
37557         (__arm_vqdmlsdhq_s32): Remove.
37558         (__arm_vqdmladhxq_s32): Remove.
37559         (__arm_vqdmladhq_s32): Remove.
37560         (__arm_vqdmladhq_m_s8): Remove.
37561         (__arm_vqdmladhq_m_s32): Remove.
37562         (__arm_vqdmladhq_m_s16): Remove.
37563         (__arm_vqdmladhxq_m_s8): Remove.
37564         (__arm_vqdmladhxq_m_s32): Remove.
37565         (__arm_vqdmladhxq_m_s16): Remove.
37566         (__arm_vqdmlsdhq_m_s8): Remove.
37567         (__arm_vqdmlsdhq_m_s32): Remove.
37568         (__arm_vqdmlsdhq_m_s16): Remove.
37569         (__arm_vqdmlsdhxq_m_s8): Remove.
37570         (__arm_vqdmlsdhxq_m_s32): Remove.
37571         (__arm_vqdmlsdhxq_m_s16): Remove.
37572         (__arm_vqrdmladhq_m_s8): Remove.
37573         (__arm_vqrdmladhq_m_s32): Remove.
37574         (__arm_vqrdmladhq_m_s16): Remove.
37575         (__arm_vqrdmladhxq_m_s8): Remove.
37576         (__arm_vqrdmladhxq_m_s32): Remove.
37577         (__arm_vqrdmladhxq_m_s16): Remove.
37578         (__arm_vqrdmlsdhq_m_s8): Remove.
37579         (__arm_vqrdmlsdhq_m_s32): Remove.
37580         (__arm_vqrdmlsdhq_m_s16): Remove.
37581         (__arm_vqrdmlsdhxq_m_s8): Remove.
37582         (__arm_vqrdmlsdhxq_m_s32): Remove.
37583         (__arm_vqrdmlsdhxq_m_s16): Remove.
37584         (__arm_vqrdmlsdhxq): Remove.
37585         (__arm_vqrdmlsdhq): Remove.
37586         (__arm_vqrdmladhxq): Remove.
37587         (__arm_vqrdmladhq): Remove.
37588         (__arm_vqdmlsdhxq): Remove.
37589         (__arm_vqdmlsdhq): Remove.
37590         (__arm_vqdmladhxq): Remove.
37591         (__arm_vqdmladhq): Remove.
37592         (__arm_vqdmladhq_m): Remove.
37593         (__arm_vqdmladhxq_m): Remove.
37594         (__arm_vqdmlsdhq_m): Remove.
37595         (__arm_vqdmlsdhxq_m): Remove.
37596         (__arm_vqrdmladhq_m): Remove.
37597         (__arm_vqrdmladhxq_m): Remove.
37598         (__arm_vqrdmlsdhq_m): Remove.
37599         (__arm_vqrdmlsdhxq_m): Remove.
37601 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
37603         * config/arm/iterators.md (MVE_VQxDMLxDHxQ_S): New.
37604         (mve_insn): Add vqdmladh, vqdmladhx, vqdmlsdh, vqdmlsdhx,
37605         vqrdmladh, vqrdmladhx, vqrdmlsdh, vqrdmlsdhx.
37606         (supf): Add VQDMLADHQ_S, VQDMLADHXQ_S, VQDMLSDHQ_S, VQDMLSDHXQ_S,
37607         VQRDMLADHQ_S,VQRDMLADHXQ_S, VQRDMLSDHQ_S, VQRDMLSDHXQ_S.
37608         * config/arm/mve.md (mve_vqrdmladhq_s<mode>)
37609         (mve_vqrdmladhxq_s<mode>, mve_vqrdmlsdhq_s<mode>)
37610         (mve_vqrdmlsdhxq_s<mode>, mve_vqdmlsdhxq_s<mode>)
37611         (mve_vqdmlsdhq_s<mode>, mve_vqdmladhxq_s<mode>)
37612         (mve_vqdmladhq_s<mode>): Merge into ...
37613         (@mve_<mve_insn>q_<supf><mode>): ... this.
37615 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
37617         * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
37618         * config/arm/arm-mve-builtins-shapes.h (ternary): New.
37620 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
37622         * config/arm/arm-mve-builtins-base.cc (vmlaldavaq, vmlaldavaxq)
37623         (vmlsldavaq, vmlsldavaxq): New.
37624         * config/arm/arm-mve-builtins-base.def (vmlaldavaq, vmlaldavaxq)
37625         (vmlsldavaq, vmlsldavaxq): New.
37626         * config/arm/arm-mve-builtins-base.h (vmlaldavaq, vmlaldavaxq)
37627         (vmlsldavaq, vmlsldavaxq): New.
37628         * config/arm/arm_mve.h (vmlaldavaq): Remove.
37629         (vmlaldavaxq): Remove.
37630         (vmlsldavaq): Remove.
37631         (vmlsldavaxq): Remove.
37632         (vmlaldavaq_p): Remove.
37633         (vmlaldavaxq_p): Remove.
37634         (vmlsldavaq_p): Remove.
37635         (vmlsldavaxq_p): Remove.
37636         (vmlaldavaq_s16): Remove.
37637         (vmlaldavaxq_s16): Remove.
37638         (vmlsldavaq_s16): Remove.
37639         (vmlsldavaxq_s16): Remove.
37640         (vmlaldavaq_u16): Remove.
37641         (vmlaldavaq_s32): Remove.
37642         (vmlaldavaxq_s32): Remove.
37643         (vmlsldavaq_s32): Remove.
37644         (vmlsldavaxq_s32): Remove.
37645         (vmlaldavaq_u32): Remove.
37646         (vmlaldavaq_p_s32): Remove.
37647         (vmlaldavaq_p_s16): Remove.
37648         (vmlaldavaq_p_u32): Remove.
37649         (vmlaldavaq_p_u16): Remove.
37650         (vmlaldavaxq_p_s32): Remove.
37651         (vmlaldavaxq_p_s16): Remove.
37652         (vmlsldavaq_p_s32): Remove.
37653         (vmlsldavaq_p_s16): Remove.
37654         (vmlsldavaxq_p_s32): Remove.
37655         (vmlsldavaxq_p_s16): Remove.
37656         (__arm_vmlaldavaq_s16): Remove.
37657         (__arm_vmlaldavaxq_s16): Remove.
37658         (__arm_vmlsldavaq_s16): Remove.
37659         (__arm_vmlsldavaxq_s16): Remove.
37660         (__arm_vmlaldavaq_u16): Remove.
37661         (__arm_vmlaldavaq_s32): Remove.
37662         (__arm_vmlaldavaxq_s32): Remove.
37663         (__arm_vmlsldavaq_s32): Remove.
37664         (__arm_vmlsldavaxq_s32): Remove.
37665         (__arm_vmlaldavaq_u32): Remove.
37666         (__arm_vmlaldavaq_p_s32): Remove.
37667         (__arm_vmlaldavaq_p_s16): Remove.
37668         (__arm_vmlaldavaq_p_u32): Remove.
37669         (__arm_vmlaldavaq_p_u16): Remove.
37670         (__arm_vmlaldavaxq_p_s32): Remove.
37671         (__arm_vmlaldavaxq_p_s16): Remove.
37672         (__arm_vmlsldavaq_p_s32): Remove.
37673         (__arm_vmlsldavaq_p_s16): Remove.
37674         (__arm_vmlsldavaxq_p_s32): Remove.
37675         (__arm_vmlsldavaxq_p_s16): Remove.
37676         (__arm_vmlaldavaq): Remove.
37677         (__arm_vmlaldavaxq): Remove.
37678         (__arm_vmlsldavaq): Remove.
37679         (__arm_vmlsldavaxq): Remove.
37680         (__arm_vmlaldavaq_p): Remove.
37681         (__arm_vmlaldavaxq_p): Remove.
37682         (__arm_vmlsldavaq_p): Remove.
37683         (__arm_vmlsldavaxq_p): Remove.
37685 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
37687         * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P):
37688         New.
37689         (mve_insn): Add vmlaldava, vmlaldavax, vmlsldava, vmlsldavax.
37690         (supf): Add VMLALDAVAXQ_P_S, VMLALDAVAXQ_S, VMLSLDAVAQ_P_S,
37691         VMLSLDAVAQ_S, VMLSLDAVAXQ_P_S, VMLSLDAVAXQ_S.
37692         * config/arm/mve.md (mve_vmlaldavaq_<supf><mode>)
37693         (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
37694         (mve_vmlaldavaxq_s<mode>): Merge into ...
37695         (@mve_<mve_insn>q_<supf><mode>): ... this.
37696         (mve_vmlaldavaq_p_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>)
37697         (mve_vmlsldavaq_p_s<mode>, mve_vmlsldavaxq_p_s<mode>): Merge into
37698         ...
37699         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
37701 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
37703         * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
37704         * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
37706 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
37708         * config/arm/arm-mve-builtins-base.cc (vrmlaldavhq, vrmlaldavhxq)
37709         (vrmlsldavhq, vrmlsldavhxq): New.
37710         * config/arm/arm-mve-builtins-base.def (vrmlaldavhq, vrmlaldavhxq)
37711         (vrmlsldavhq, vrmlsldavhxq): New.
37712         * config/arm/arm-mve-builtins-base.h (vrmlaldavhq, vrmlaldavhxq)
37713         (vrmlsldavhq, vrmlsldavhxq): New.
37714         * config/arm/arm-mve-builtins-functions.h
37715         (unspec_mve_function_exact_insn_pred_p): Handle vrmlaldavhq,
37716         vrmlaldavhxq, vrmlsldavhq, vrmlsldavhxq.
37717         * config/arm/arm_mve.h (vrmlaldavhq): Remove.
37718         (vrmlsldavhxq): Remove.
37719         (vrmlsldavhq): Remove.
37720         (vrmlaldavhxq): Remove.
37721         (vrmlaldavhq_p): Remove.
37722         (vrmlaldavhxq_p): Remove.
37723         (vrmlsldavhq_p): Remove.
37724         (vrmlsldavhxq_p): Remove.
37725         (vrmlaldavhq_u32): Remove.
37726         (vrmlsldavhxq_s32): Remove.
37727         (vrmlsldavhq_s32): Remove.
37728         (vrmlaldavhxq_s32): Remove.
37729         (vrmlaldavhq_s32): Remove.
37730         (vrmlaldavhq_p_s32): Remove.
37731         (vrmlaldavhxq_p_s32): Remove.
37732         (vrmlsldavhq_p_s32): Remove.
37733         (vrmlsldavhxq_p_s32): Remove.
37734         (vrmlaldavhq_p_u32): Remove.
37735         (__arm_vrmlaldavhq_u32): Remove.
37736         (__arm_vrmlsldavhxq_s32): Remove.
37737         (__arm_vrmlsldavhq_s32): Remove.
37738         (__arm_vrmlaldavhxq_s32): Remove.
37739         (__arm_vrmlaldavhq_s32): Remove.
37740         (__arm_vrmlaldavhq_p_s32): Remove.
37741         (__arm_vrmlaldavhxq_p_s32): Remove.
37742         (__arm_vrmlsldavhq_p_s32): Remove.
37743         (__arm_vrmlsldavhxq_p_s32): Remove.
37744         (__arm_vrmlaldavhq_p_u32): Remove.
37745         (__arm_vrmlaldavhq): Remove.
37746         (__arm_vrmlsldavhxq): Remove.
37747         (__arm_vrmlsldavhq): Remove.
37748         (__arm_vrmlaldavhxq): Remove.
37749         (__arm_vrmlaldavhq_p): Remove.
37750         (__arm_vrmlaldavhxq_p): Remove.
37751         (__arm_vrmlsldavhq_p): Remove.
37752         (__arm_vrmlsldavhxq_p): Remove.
37754 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
37756         * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P):
37757         New.
37758         (mve_insn): Add vrmlaldavh, vrmlaldavhx, vrmlsldavh, vrmlsldavhx.
37759         (supf): Add VRMLALDAVHXQ_P_S, VRMLALDAVHXQ_S, VRMLSLDAVHQ_P_S,
37760         VRMLSLDAVHQ_S, VRMLSLDAVHXQ_P_S, VRMLSLDAVHXQ_S.
37761         * config/arm/mve.md (mve_vrmlaldavhxq_sv4si)
37762         (mve_vrmlsldavhq_sv4si, mve_vrmlsldavhxq_sv4si)
37763         (mve_vrmlaldavhq_<supf>v4si): Merge into ...
37764         (@mve_<mve_insn>q_<supf>v4si): ... this.
37765         (mve_vrmlaldavhxq_p_sv4si, mve_vrmlsldavhq_p_sv4si)
37766         (mve_vrmlsldavhxq_p_sv4si, mve_vrmlaldavhq_p_<supf>v4si): Merge
37767         into ...
37768         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
37770 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
37772         * config/arm/arm-mve-builtins-base.cc (vmlaldavq, vmlaldavxq)
37773         (vmlsldavq, vmlsldavxq): New.
37774         * config/arm/arm-mve-builtins-base.def (vmlaldavq, vmlaldavxq)
37775         (vmlsldavq, vmlsldavxq): New.
37776         * config/arm/arm-mve-builtins-base.h (vmlaldavq, vmlaldavxq)
37777         (vmlsldavq, vmlsldavxq): New.
37778         * config/arm/arm_mve.h (vmlaldavq): Remove.
37779         (vmlsldavxq): Remove.
37780         (vmlsldavq): Remove.
37781         (vmlaldavxq): Remove.
37782         (vmlaldavq_p): Remove.
37783         (vmlaldavxq_p): Remove.
37784         (vmlsldavq_p): Remove.
37785         (vmlsldavxq_p): Remove.
37786         (vmlaldavq_u16): Remove.
37787         (vmlsldavxq_s16): Remove.
37788         (vmlsldavq_s16): Remove.
37789         (vmlaldavxq_s16): Remove.
37790         (vmlaldavq_s16): Remove.
37791         (vmlaldavq_u32): Remove.
37792         (vmlsldavxq_s32): Remove.
37793         (vmlsldavq_s32): Remove.
37794         (vmlaldavxq_s32): Remove.
37795         (vmlaldavq_s32): Remove.
37796         (vmlaldavq_p_s16): Remove.
37797         (vmlaldavxq_p_s16): Remove.
37798         (vmlsldavq_p_s16): Remove.
37799         (vmlsldavxq_p_s16): Remove.
37800         (vmlaldavq_p_u16): Remove.
37801         (vmlaldavq_p_s32): Remove.
37802         (vmlaldavxq_p_s32): Remove.
37803         (vmlsldavq_p_s32): Remove.
37804         (vmlsldavxq_p_s32): Remove.
37805         (vmlaldavq_p_u32): Remove.
37806         (__arm_vmlaldavq_u16): Remove.
37807         (__arm_vmlsldavxq_s16): Remove.
37808         (__arm_vmlsldavq_s16): Remove.
37809         (__arm_vmlaldavxq_s16): Remove.
37810         (__arm_vmlaldavq_s16): Remove.
37811         (__arm_vmlaldavq_u32): Remove.
37812         (__arm_vmlsldavxq_s32): Remove.
37813         (__arm_vmlsldavq_s32): Remove.
37814         (__arm_vmlaldavxq_s32): Remove.
37815         (__arm_vmlaldavq_s32): Remove.
37816         (__arm_vmlaldavq_p_s16): Remove.
37817         (__arm_vmlaldavxq_p_s16): Remove.
37818         (__arm_vmlsldavq_p_s16): Remove.
37819         (__arm_vmlsldavxq_p_s16): Remove.
37820         (__arm_vmlaldavq_p_u16): Remove.
37821         (__arm_vmlaldavq_p_s32): Remove.
37822         (__arm_vmlaldavxq_p_s32): Remove.
37823         (__arm_vmlsldavq_p_s32): Remove.
37824         (__arm_vmlsldavxq_p_s32): Remove.
37825         (__arm_vmlaldavq_p_u32): Remove.
37826         (__arm_vmlaldavq): Remove.
37827         (__arm_vmlsldavxq): Remove.
37828         (__arm_vmlsldavq): Remove.
37829         (__arm_vmlaldavxq): Remove.
37830         (__arm_vmlaldavq_p): Remove.
37831         (__arm_vmlaldavxq_p): Remove.
37832         (__arm_vmlsldavq_p): Remove.
37833         (__arm_vmlsldavxq_p): Remove.
37835 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
37837         * config/arm/iterators.md (MVE_VMLxLDAVxQ, MVE_VMLxLDAVxQ_P): New.
37838         (mve_insn): Add vmlaldav, vmlaldavx, vmlsldav, vmlsldavx.
37839         (supf): Add VMLALDAVXQ_S, VMLSLDAVQ_S, VMLSLDAVXQ_S,
37840         VMLALDAVXQ_P_S, VMLSLDAVQ_P_S, VMLSLDAVXQ_P_S.
37841         * config/arm/mve.md (mve_vmlaldavq_<supf><mode>)
37842         (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
37843         (mve_vmlsldavxq_s<mode>): Merge into ...
37844         (@mve_<mve_insn>q_<supf><mode>): ... this.
37845         (mve_vmlaldavq_p_<supf><mode>, mve_vmlaldavxq_p_s<mode>)
37846         (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>): Merge into
37847         ...
37848         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
37850 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
37852         * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
37853         * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
37855 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
37857         * config/arm/arm-mve-builtins-base.cc (vabavq): New.
37858         * config/arm/arm-mve-builtins-base.def (vabavq): New.
37859         * config/arm/arm-mve-builtins-base.h (vabavq): New.
37860         * config/arm/arm_mve.h (vabavq): Remove.
37861         (vabavq_p): Remove.
37862         (vabavq_s8): Remove.
37863         (vabavq_s16): Remove.
37864         (vabavq_s32): Remove.
37865         (vabavq_u8): Remove.
37866         (vabavq_u16): Remove.
37867         (vabavq_u32): Remove.
37868         (vabavq_p_s8): Remove.
37869         (vabavq_p_u8): Remove.
37870         (vabavq_p_s16): Remove.
37871         (vabavq_p_u16): Remove.
37872         (vabavq_p_s32): Remove.
37873         (vabavq_p_u32): Remove.
37874         (__arm_vabavq_s8): Remove.
37875         (__arm_vabavq_s16): Remove.
37876         (__arm_vabavq_s32): Remove.
37877         (__arm_vabavq_u8): Remove.
37878         (__arm_vabavq_u16): Remove.
37879         (__arm_vabavq_u32): Remove.
37880         (__arm_vabavq_p_s8): Remove.
37881         (__arm_vabavq_p_u8): Remove.
37882         (__arm_vabavq_p_s16): Remove.
37883         (__arm_vabavq_p_u16): Remove.
37884         (__arm_vabavq_p_s32): Remove.
37885         (__arm_vabavq_p_u32): Remove.
37886         (__arm_vabavq): Remove.
37887         (__arm_vabavq_p): Remove.
37889 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
37891         * config/arm/iterators.md (mve_insn): Add vabav.
37892         * config/arm/mve.md (mve_vabavq_<supf><mode>): Rename into ...
37893         (@mve_<mve_insn>q_<supf><mode>): ... this,.
37894         (mve_vabavq_p_<supf><mode>): Rename into ...
37895         (@mve_<mve_insn>q_p_<supf><mode>): ... this,.
37897 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
37899         * config/arm/arm-mve-builtins-base.cc (vmladavaxq, vmladavaq)
37900         (vmlsdavaq, vmlsdavaxq): New.
37901         * config/arm/arm-mve-builtins-base.def (vmladavaxq, vmladavaq)
37902         (vmlsdavaq, vmlsdavaxq): New.
37903         * config/arm/arm-mve-builtins-base.h (vmladavaxq, vmladavaq)
37904         (vmlsdavaq, vmlsdavaxq): New.
37905         * config/arm/arm_mve.h (vmladavaq): Remove.
37906         (vmlsdavaxq): Remove.
37907         (vmlsdavaq): Remove.
37908         (vmladavaxq): Remove.
37909         (vmladavaq_p): Remove.
37910         (vmladavaxq_p): Remove.
37911         (vmlsdavaq_p): Remove.
37912         (vmlsdavaxq_p): Remove.
37913         (vmladavaq_u8): Remove.
37914         (vmlsdavaxq_s8): Remove.
37915         (vmlsdavaq_s8): Remove.
37916         (vmladavaxq_s8): Remove.
37917         (vmladavaq_s8): Remove.
37918         (vmladavaq_u16): Remove.
37919         (vmlsdavaxq_s16): Remove.
37920         (vmlsdavaq_s16): Remove.
37921         (vmladavaxq_s16): Remove.
37922         (vmladavaq_s16): Remove.
37923         (vmladavaq_u32): Remove.
37924         (vmlsdavaxq_s32): Remove.
37925         (vmlsdavaq_s32): Remove.
37926         (vmladavaxq_s32): Remove.
37927         (vmladavaq_s32): Remove.
37928         (vmladavaq_p_s8): Remove.
37929         (vmladavaq_p_s32): Remove.
37930         (vmladavaq_p_s16): Remove.
37931         (vmladavaq_p_u8): Remove.
37932         (vmladavaq_p_u32): Remove.
37933         (vmladavaq_p_u16): Remove.
37934         (vmladavaxq_p_s8): Remove.
37935         (vmladavaxq_p_s32): Remove.
37936         (vmladavaxq_p_s16): Remove.
37937         (vmlsdavaq_p_s8): Remove.
37938         (vmlsdavaq_p_s32): Remove.
37939         (vmlsdavaq_p_s16): Remove.
37940         (vmlsdavaxq_p_s8): Remove.
37941         (vmlsdavaxq_p_s32): Remove.
37942         (vmlsdavaxq_p_s16): Remove.
37943         (__arm_vmladavaq_u8): Remove.
37944         (__arm_vmlsdavaxq_s8): Remove.
37945         (__arm_vmlsdavaq_s8): Remove.
37946         (__arm_vmladavaxq_s8): Remove.
37947         (__arm_vmladavaq_s8): Remove.
37948         (__arm_vmladavaq_u16): Remove.
37949         (__arm_vmlsdavaxq_s16): Remove.
37950         (__arm_vmlsdavaq_s16): Remove.
37951         (__arm_vmladavaxq_s16): Remove.
37952         (__arm_vmladavaq_s16): Remove.
37953         (__arm_vmladavaq_u32): Remove.
37954         (__arm_vmlsdavaxq_s32): Remove.
37955         (__arm_vmlsdavaq_s32): Remove.
37956         (__arm_vmladavaxq_s32): Remove.
37957         (__arm_vmladavaq_s32): Remove.
37958         (__arm_vmladavaq_p_s8): Remove.
37959         (__arm_vmladavaq_p_s32): Remove.
37960         (__arm_vmladavaq_p_s16): Remove.
37961         (__arm_vmladavaq_p_u8): Remove.
37962         (__arm_vmladavaq_p_u32): Remove.
37963         (__arm_vmladavaq_p_u16): Remove.
37964         (__arm_vmladavaxq_p_s8): Remove.
37965         (__arm_vmladavaxq_p_s32): Remove.
37966         (__arm_vmladavaxq_p_s16): Remove.
37967         (__arm_vmlsdavaq_p_s8): Remove.
37968         (__arm_vmlsdavaq_p_s32): Remove.
37969         (__arm_vmlsdavaq_p_s16): Remove.
37970         (__arm_vmlsdavaxq_p_s8): Remove.
37971         (__arm_vmlsdavaxq_p_s32): Remove.
37972         (__arm_vmlsdavaxq_p_s16): Remove.
37973         (__arm_vmladavaq): Remove.
37974         (__arm_vmlsdavaxq): Remove.
37975         (__arm_vmlsdavaq): Remove.
37976         (__arm_vmladavaxq): Remove.
37977         (__arm_vmladavaq_p): Remove.
37978         (__arm_vmladavaxq_p): Remove.
37979         (__arm_vmlsdavaq_p): Remove.
37980         (__arm_vmlsdavaxq_p): Remove.
37982 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
37984         * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
37985         * config/arm/arm-mve-builtins-shapes.h  (binary_acca_int32): New.
37987 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
37989         * config/arm/arm-mve-builtins-base.cc (vmladavq, vmladavxq)
37990         (vmlsdavq, vmlsdavxq): New.
37991         * config/arm/arm-mve-builtins-base.def (vmladavq, vmladavxq)
37992         (vmlsdavq, vmlsdavxq): New.
37993         * config/arm/arm-mve-builtins-base.h (vmladavq, vmladavxq)
37994         (vmlsdavq, vmlsdavxq): New.
37995         * config/arm/arm_mve.h (vmladavq): Remove.
37996         (vmlsdavxq): Remove.
37997         (vmlsdavq): Remove.
37998         (vmladavxq): Remove.
37999         (vmladavq_p): Remove.
38000         (vmlsdavxq_p): Remove.
38001         (vmlsdavq_p): Remove.
38002         (vmladavxq_p): Remove.
38003         (vmladavq_u8): Remove.
38004         (vmlsdavxq_s8): Remove.
38005         (vmlsdavq_s8): Remove.
38006         (vmladavxq_s8): Remove.
38007         (vmladavq_s8): Remove.
38008         (vmladavq_u16): Remove.
38009         (vmlsdavxq_s16): Remove.
38010         (vmlsdavq_s16): Remove.
38011         (vmladavxq_s16): Remove.
38012         (vmladavq_s16): Remove.
38013         (vmladavq_u32): Remove.
38014         (vmlsdavxq_s32): Remove.
38015         (vmlsdavq_s32): Remove.
38016         (vmladavxq_s32): Remove.
38017         (vmladavq_s32): Remove.
38018         (vmladavq_p_u8): Remove.
38019         (vmlsdavxq_p_s8): Remove.
38020         (vmlsdavq_p_s8): Remove.
38021         (vmladavxq_p_s8): Remove.
38022         (vmladavq_p_s8): Remove.
38023         (vmladavq_p_u16): Remove.
38024         (vmlsdavxq_p_s16): Remove.
38025         (vmlsdavq_p_s16): Remove.
38026         (vmladavxq_p_s16): Remove.
38027         (vmladavq_p_s16): Remove.
38028         (vmladavq_p_u32): Remove.
38029         (vmlsdavxq_p_s32): Remove.
38030         (vmlsdavq_p_s32): Remove.
38031         (vmladavxq_p_s32): Remove.
38032         (vmladavq_p_s32): Remove.
38033         (__arm_vmladavq_u8): Remove.
38034         (__arm_vmlsdavxq_s8): Remove.
38035         (__arm_vmlsdavq_s8): Remove.
38036         (__arm_vmladavxq_s8): Remove.
38037         (__arm_vmladavq_s8): Remove.
38038         (__arm_vmladavq_u16): Remove.
38039         (__arm_vmlsdavxq_s16): Remove.
38040         (__arm_vmlsdavq_s16): Remove.
38041         (__arm_vmladavxq_s16): Remove.
38042         (__arm_vmladavq_s16): Remove.
38043         (__arm_vmladavq_u32): Remove.
38044         (__arm_vmlsdavxq_s32): Remove.
38045         (__arm_vmlsdavq_s32): Remove.
38046         (__arm_vmladavxq_s32): Remove.
38047         (__arm_vmladavq_s32): Remove.
38048         (__arm_vmladavq_p_u8): Remove.
38049         (__arm_vmlsdavxq_p_s8): Remove.
38050         (__arm_vmlsdavq_p_s8): Remove.
38051         (__arm_vmladavxq_p_s8): Remove.
38052         (__arm_vmladavq_p_s8): Remove.
38053         (__arm_vmladavq_p_u16): Remove.
38054         (__arm_vmlsdavxq_p_s16): Remove.
38055         (__arm_vmlsdavq_p_s16): Remove.
38056         (__arm_vmladavxq_p_s16): Remove.
38057         (__arm_vmladavq_p_s16): Remove.
38058         (__arm_vmladavq_p_u32): Remove.
38059         (__arm_vmlsdavxq_p_s32): Remove.
38060         (__arm_vmlsdavq_p_s32): Remove.
38061         (__arm_vmladavxq_p_s32): Remove.
38062         (__arm_vmladavq_p_s32): Remove.
38063         (__arm_vmladavq): Remove.
38064         (__arm_vmlsdavxq): Remove.
38065         (__arm_vmlsdavq): Remove.
38066         (__arm_vmladavxq): Remove.
38067         (__arm_vmladavq_p): Remove.
38068         (__arm_vmlsdavxq_p): Remove.
38069         (__arm_vmlsdavq_p): Remove.
38070         (__arm_vmladavxq_p): Remove.
38072 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
38074         * config/arm/iterators.md (MVE_VMLxDAVQ, MVE_VMLxDAVQ_P)
38075         (MVE_VMLxDAVAQ, MVE_VMLxDAVAQ_P): New.
38076         (mve_insn): Add vmladava, vmladavax, vmladav, vmladavx, vmlsdava,
38077         vmlsdavax, vmlsdav, vmlsdavx.
38078         (supf): Add VMLADAVAXQ_P_S, VMLADAVAXQ_S, VMLADAVXQ_P_S,
38079         VMLADAVXQ_S, VMLSDAVAQ_P_S, VMLSDAVAQ_S, VMLSDAVAXQ_P_S,
38080         VMLSDAVAXQ_S, VMLSDAVQ_P_S, VMLSDAVQ_S, VMLSDAVXQ_P_S,
38081         VMLSDAVXQ_S.
38082         * config/arm/mve.md (mve_vmladavq_<supf><mode>)
38083         (mve_vmladavxq_s<mode>, mve_vmlsdavq_s<mode>)
38084         (mve_vmlsdavxq_s<mode>): Merge into ...
38085         (@mve_<mve_insn>q_<supf><mode>): ... this.
38086         (mve_vmlsdavaq_s<mode>, mve_vmladavaxq_s<mode>)
38087         (mve_vmlsdavaxq_s<mode>, mve_vmladavaq_<supf><mode>): Merge into
38088         ...
38089         (@mve_<mve_insn>q_<supf><mode>): ... this.
38090         (mve_vmladavq_p_<supf><mode>, mve_vmladavxq_p_s<mode>)
38091         (mve_vmlsdavq_p_s<mode>, mve_vmlsdavxq_p_s<mode>): Merge into ...
38092         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
38093         (mve_vmladavaq_p_<supf><mode>, mve_vmladavaxq_p_s<mode>)
38094         (mve_vmlsdavaq_p_s<mode>, mve_vmlsdavaxq_p_s<mode>): Merge into
38095         ...
38096         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
38098 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
38100         * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
38101         * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
38103 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
38105         * config/arm/arm-mve-builtins-base.cc (vaddlvaq): New.
38106         * config/arm/arm-mve-builtins-base.def (vaddlvaq): New.
38107         * config/arm/arm-mve-builtins-base.h (vaddlvaq): New.
38108         * config/arm/arm_mve.h (vaddlvaq): Remove.
38109         (vaddlvaq_p): Remove.
38110         (vaddlvaq_u32): Remove.
38111         (vaddlvaq_s32): Remove.
38112         (vaddlvaq_p_s32): Remove.
38113         (vaddlvaq_p_u32): Remove.
38114         (__arm_vaddlvaq_u32): Remove.
38115         (__arm_vaddlvaq_s32): Remove.
38116         (__arm_vaddlvaq_p_s32): Remove.
38117         (__arm_vaddlvaq_p_u32): Remove.
38118         (__arm_vaddlvaq): Remove.
38119         (__arm_vaddlvaq_p): Remove.
38121 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
38123         * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
38124         * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
38126 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
38128         * config/arm/iterators.md (mve_insn): Add vaddlva.
38129         * config/arm/mve.md (mve_vaddlvaq_<supf>v4si): Rename into ...
38130         (@mve_<mve_insn>q_<supf>v4si): ... this.
38131         (mve_vaddlvaq_p_<supf>v4si): Rename into ...
38132         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
38134 2023-05-11  Uros Bizjak  <ubizjak@gmail.com>
38136         PR target/109807
38137         * config/i386/i386.cc (ix86_widen_mult_cost):
38138         Handle V4HImode and V2SImode.
38140 2023-05-11  Andrew Pinski  <apinski@marvell.com>
38142         * tree-ssa-dce.cc (simple_dce_from_worklist): For ssa names
38143         defined by a phi node with more than one uses, allow for the
38144         only uses are in that same defining statement.
38146 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
38148         * config/riscv/riscv.cc (riscv_const_insns): Add permissible
38149         vector constants.
38151 2023-05-11  Pan Li  <pan2.li@intel.com>
38153         * config/riscv/vector.md: Add comments for simplifying to vmset.
38155 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
38157         * config/riscv/autovec.md (<optab><mode>3): Add scalar shift
38158         pattern.
38159         (v<optab><mode>3): Add vector shift pattern.
38160         * config/riscv/vector-iterators.md: New iterator.
38162 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
38164         * config/riscv/autovec.md: Use renamed functions.
38165         * config/riscv/riscv-protos.h (emit_vlmax_op): Rename.
38166         (emit_vlmax_reg_op): To this.
38167         (emit_nonvlmax_op): Rename.
38168         (emit_len_op): To this.
38169         (emit_nonvlmax_binop): Rename.
38170         (emit_len_binop): To this.
38171         * config/riscv/riscv-v.cc (emit_pred_op): Add default parameter.
38172         (emit_pred_binop): Remove vlmax_p.
38173         (emit_vlmax_op): Rename.
38174         (emit_vlmax_reg_op): To this.
38175         (emit_nonvlmax_op): Rename.
38176         (emit_len_op): To this.
38177         (emit_nonvlmax_binop): Rename.
38178         (emit_len_binop): To this.
38179         (sew64_scalar_helper): Use renamed functions.
38180         (expand_tuple_move): Use renamed functions.
38181         * config/riscv/riscv.cc (vector_zero_call_used_regs): Use
38182         renamed functions.
38183         * config/riscv/vector.md: Use renamed functions.
38185 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
38186             Michael Collison  <collison@rivosinc.com>
38188         * config/riscv/autovec.md (<optab><mode>3): Add integer binops.
38189         * config/riscv/riscv-protos.h (emit_nonvlmax_binop): Declare.
38190         * config/riscv/riscv-v.cc (emit_pred_op): New function.
38191         (set_expander_dest_and_mask): New function.
38192         (emit_pred_binop): New function.
38193         (emit_nonvlmax_binop): New function.
38195 2023-05-11  Pan Li  <pan2.li@intel.com>
38197         * cfgloopmanip.cc (create_empty_loop_on_edge): Add PLUS_EXPR.
38198         * gimple-loop-interchange.cc
38199         (tree_loop_interchange::map_inductions_to_loop): Ditto.
38200         * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Ditto.
38201         * tree-ssa-loop-ivopts.cc (create_new_iv): Ditto.
38202         * tree-ssa-loop-manip.cc (create_iv): Ditto.
38203         (tree_transform_and_unroll_loop): Ditto.
38204         (canonicalize_loop_ivs): Ditto.
38205         * tree-ssa-loop-manip.h (create_iv): Ditto.
38206         * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Ditto.
38207         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly):
38208         Ditto.
38209         (vect_set_loop_condition_normal): Ditto.
38210         * tree-vect-loop.cc (vect_create_epilog_for_reduction): Ditto.
38211         * tree-vect-stmts.cc (vectorizable_store): Ditto.
38212         (vectorizable_load): Ditto.
38214 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
38216         * config/arm/arm-mve-builtins-base.cc (vmovlbq, vmovltq): New.
38217         * config/arm/arm-mve-builtins-base.def (vmovlbq, vmovltq): New.
38218         * config/arm/arm-mve-builtins-base.h (vmovlbq, vmovltq): New.
38219         * config/arm/arm_mve.h (vmovlbq): Remove.
38220         (vmovltq): Remove.
38221         (vmovlbq_m): Remove.
38222         (vmovltq_m): Remove.
38223         (vmovlbq_x): Remove.
38224         (vmovltq_x): Remove.
38225         (vmovlbq_s8): Remove.
38226         (vmovlbq_s16): Remove.
38227         (vmovltq_s8): Remove.
38228         (vmovltq_s16): Remove.
38229         (vmovltq_u8): Remove.
38230         (vmovltq_u16): Remove.
38231         (vmovlbq_u8): Remove.
38232         (vmovlbq_u16): Remove.
38233         (vmovlbq_m_s8): Remove.
38234         (vmovltq_m_s8): Remove.
38235         (vmovlbq_m_u8): Remove.
38236         (vmovltq_m_u8): Remove.
38237         (vmovlbq_m_s16): Remove.
38238         (vmovltq_m_s16): Remove.
38239         (vmovlbq_m_u16): Remove.
38240         (vmovltq_m_u16): Remove.
38241         (vmovlbq_x_s8): Remove.
38242         (vmovlbq_x_s16): Remove.
38243         (vmovlbq_x_u8): Remove.
38244         (vmovlbq_x_u16): Remove.
38245         (vmovltq_x_s8): Remove.
38246         (vmovltq_x_s16): Remove.
38247         (vmovltq_x_u8): Remove.
38248         (vmovltq_x_u16): Remove.
38249         (__arm_vmovlbq_s8): Remove.
38250         (__arm_vmovlbq_s16): Remove.
38251         (__arm_vmovltq_s8): Remove.
38252         (__arm_vmovltq_s16): Remove.
38253         (__arm_vmovltq_u8): Remove.
38254         (__arm_vmovltq_u16): Remove.
38255         (__arm_vmovlbq_u8): Remove.
38256         (__arm_vmovlbq_u16): Remove.
38257         (__arm_vmovlbq_m_s8): Remove.
38258         (__arm_vmovltq_m_s8): Remove.
38259         (__arm_vmovlbq_m_u8): Remove.
38260         (__arm_vmovltq_m_u8): Remove.
38261         (__arm_vmovlbq_m_s16): Remove.
38262         (__arm_vmovltq_m_s16): Remove.
38263         (__arm_vmovlbq_m_u16): Remove.
38264         (__arm_vmovltq_m_u16): Remove.
38265         (__arm_vmovlbq_x_s8): Remove.
38266         (__arm_vmovlbq_x_s16): Remove.
38267         (__arm_vmovlbq_x_u8): Remove.
38268         (__arm_vmovlbq_x_u16): Remove.
38269         (__arm_vmovltq_x_s8): Remove.
38270         (__arm_vmovltq_x_s16): Remove.
38271         (__arm_vmovltq_x_u8): Remove.
38272         (__arm_vmovltq_x_u16): Remove.
38273         (__arm_vmovlbq): Remove.
38274         (__arm_vmovltq): Remove.
38275         (__arm_vmovlbq_m): Remove.
38276         (__arm_vmovltq_m): Remove.
38277         (__arm_vmovlbq_x): Remove.
38278         (__arm_vmovltq_x): Remove.
38280 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
38282         * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
38283         * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
38285 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
38287         * config/arm/iterators.md (mve_insn): Add vmovlb, vmovlt.
38288         (VMOVLBQ, VMOVLTQ): Merge into ...
38289         (VMOVLxQ): ... this.
38290         (VMOVLTQ_M, VMOVLBQ_M): Merge into ...
38291         (VMOVLxQ_M): ... this.
38292         * config/arm/mve.md (mve_vmovltq_<supf><mode>)
38293         (mve_vmovlbq_<supf><mode>): Merge into ...
38294         (@mve_<mve_insn>q_<supf><mode>): ... this.
38295         (mve_vmovlbq_m_<supf><mode>, mve_vmovltq_m_<supf><mode>): Merge
38296         into ...
38297         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
38299 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
38301         * config/arm/arm-mve-builtins-base.cc (vaddlvq): New.
38302         * config/arm/arm-mve-builtins-base.def (vaddlvq): New.
38303         * config/arm/arm-mve-builtins-base.h (vaddlvq): New.
38304         * config/arm/arm-mve-builtins-functions.h
38305         (unspec_mve_function_exact_insn_pred_p): Handle vaddlvq.
38306         * config/arm/arm_mve.h (vaddlvq): Remove.
38307         (vaddlvq_p): Remove.
38308         (vaddlvq_s32): Remove.
38309         (vaddlvq_u32): Remove.
38310         (vaddlvq_p_s32): Remove.
38311         (vaddlvq_p_u32): Remove.
38312         (__arm_vaddlvq_s32): Remove.
38313         (__arm_vaddlvq_u32): Remove.
38314         (__arm_vaddlvq_p_s32): Remove.
38315         (__arm_vaddlvq_p_u32): Remove.
38316         (__arm_vaddlvq): Remove.
38317         (__arm_vaddlvq_p): Remove.
38319 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
38321         * config/arm/iterators.md (mve_insn): Add vaddlv.
38322         * config/arm/mve.md (mve_vaddlvq_<supf>v4si): Rename into ...
38323         (@mve_<mve_insn>q_<supf>v4si): ... this.
38324         (mve_vaddlvq_p_<supf>v4si): Rename into ...
38325         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
38327 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
38329         * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
38330         * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
38332 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
38334         * config/arm/arm-mve-builtins-base.cc (vaddvaq): New.
38335         * config/arm/arm-mve-builtins-base.def (vaddvaq): New.
38336         * config/arm/arm-mve-builtins-base.h (vaddvaq): New.
38337         * config/arm/arm_mve.h (vaddvaq): Remove.
38338         (vaddvaq_p): Remove.
38339         (vaddvaq_u8): Remove.
38340         (vaddvaq_s8): Remove.
38341         (vaddvaq_u16): Remove.
38342         (vaddvaq_s16): Remove.
38343         (vaddvaq_u32): Remove.
38344         (vaddvaq_s32): Remove.
38345         (vaddvaq_p_u8): Remove.
38346         (vaddvaq_p_s8): Remove.
38347         (vaddvaq_p_u16): Remove.
38348         (vaddvaq_p_s16): Remove.
38349         (vaddvaq_p_u32): Remove.
38350         (vaddvaq_p_s32): Remove.
38351         (__arm_vaddvaq_u8): Remove.
38352         (__arm_vaddvaq_s8): Remove.
38353         (__arm_vaddvaq_u16): Remove.
38354         (__arm_vaddvaq_s16): Remove.
38355         (__arm_vaddvaq_u32): Remove.
38356         (__arm_vaddvaq_s32): Remove.
38357         (__arm_vaddvaq_p_u8): Remove.
38358         (__arm_vaddvaq_p_s8): Remove.
38359         (__arm_vaddvaq_p_u16): Remove.
38360         (__arm_vaddvaq_p_s16): Remove.
38361         (__arm_vaddvaq_p_u32): Remove.
38362         (__arm_vaddvaq_p_s32): Remove.
38363         (__arm_vaddvaq): Remove.
38364         (__arm_vaddvaq_p): Remove.
38366 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
38368         * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
38369         * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
38371 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
38373         * config/arm/iterators.md (mve_insn): Add vaddva.
38374         * config/arm/mve.md (mve_vaddvaq_<supf><mode>): Rename into ...
38375         (@mve_<mve_insn>q_<supf><mode>): ... this.
38376         (mve_vaddvaq_p_<supf><mode>): Rename into ...
38377         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
38379 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
38381         * config/arm/arm-mve-builtins-base.cc (vaddvq): New.
38382         * config/arm/arm-mve-builtins-base.def (vaddvq): New.
38383         * config/arm/arm-mve-builtins-base.h (vaddvq): New.
38384         * config/arm/arm_mve.h (vaddvq): Remove.
38385         (vaddvq_p): Remove.
38386         (vaddvq_s8): Remove.
38387         (vaddvq_s16): Remove.
38388         (vaddvq_s32): Remove.
38389         (vaddvq_u8): Remove.
38390         (vaddvq_u16): Remove.
38391         (vaddvq_u32): Remove.
38392         (vaddvq_p_u8): Remove.
38393         (vaddvq_p_s8): Remove.
38394         (vaddvq_p_u16): Remove.
38395         (vaddvq_p_s16): Remove.
38396         (vaddvq_p_u32): Remove.
38397         (vaddvq_p_s32): Remove.
38398         (__arm_vaddvq_s8): Remove.
38399         (__arm_vaddvq_s16): Remove.
38400         (__arm_vaddvq_s32): Remove.
38401         (__arm_vaddvq_u8): Remove.
38402         (__arm_vaddvq_u16): Remove.
38403         (__arm_vaddvq_u32): Remove.
38404         (__arm_vaddvq_p_u8): Remove.
38405         (__arm_vaddvq_p_s8): Remove.
38406         (__arm_vaddvq_p_u16): Remove.
38407         (__arm_vaddvq_p_s16): Remove.
38408         (__arm_vaddvq_p_u32): Remove.
38409         (__arm_vaddvq_p_s32): Remove.
38410         (__arm_vaddvq): Remove.
38411         (__arm_vaddvq_p): Remove.
38413 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
38415         * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
38416         * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
38418 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
38420         * config/arm/iterators.md (mve_insn): Add vaddv.
38421         * config/arm/mve.md (@mve_vaddvq_<supf><mode>): Rename into ...
38422         (@mve_<mve_insn>q_<supf><mode>): ... this.
38423         (mve_vaddvq_p_<supf><mode>): Rename into ...
38424         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
38425         * config/arm/vec-common.md: Use gen_mve_q instead of
38426         gen_mve_vaddvq.
38428 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
38430         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New.
38431         (vdupq): New.
38432         * config/arm/arm-mve-builtins-base.def (vdupq): New.
38433         * config/arm/arm-mve-builtins-base.h: (vdupq): New.
38434         * config/arm/arm_mve.h (vdupq_n): Remove.
38435         (vdupq_m): Remove.
38436         (vdupq_n_f16): Remove.
38437         (vdupq_n_f32): Remove.
38438         (vdupq_n_s8): Remove.
38439         (vdupq_n_s16): Remove.
38440         (vdupq_n_s32): Remove.
38441         (vdupq_n_u8): Remove.
38442         (vdupq_n_u16): Remove.
38443         (vdupq_n_u32): Remove.
38444         (vdupq_m_n_u8): Remove.
38445         (vdupq_m_n_s8): Remove.
38446         (vdupq_m_n_u16): Remove.
38447         (vdupq_m_n_s16): Remove.
38448         (vdupq_m_n_u32): Remove.
38449         (vdupq_m_n_s32): Remove.
38450         (vdupq_m_n_f16): Remove.
38451         (vdupq_m_n_f32): Remove.
38452         (vdupq_x_n_s8): Remove.
38453         (vdupq_x_n_s16): Remove.
38454         (vdupq_x_n_s32): Remove.
38455         (vdupq_x_n_u8): Remove.
38456         (vdupq_x_n_u16): Remove.
38457         (vdupq_x_n_u32): Remove.
38458         (vdupq_x_n_f16): Remove.
38459         (vdupq_x_n_f32): Remove.
38460         (__arm_vdupq_n_s8): Remove.
38461         (__arm_vdupq_n_s16): Remove.
38462         (__arm_vdupq_n_s32): Remove.
38463         (__arm_vdupq_n_u8): Remove.
38464         (__arm_vdupq_n_u16): Remove.
38465         (__arm_vdupq_n_u32): Remove.
38466         (__arm_vdupq_m_n_u8): Remove.
38467         (__arm_vdupq_m_n_s8): Remove.
38468         (__arm_vdupq_m_n_u16): Remove.
38469         (__arm_vdupq_m_n_s16): Remove.
38470         (__arm_vdupq_m_n_u32): Remove.
38471         (__arm_vdupq_m_n_s32): Remove.
38472         (__arm_vdupq_x_n_s8): Remove.
38473         (__arm_vdupq_x_n_s16): Remove.
38474         (__arm_vdupq_x_n_s32): Remove.
38475         (__arm_vdupq_x_n_u8): Remove.
38476         (__arm_vdupq_x_n_u16): Remove.
38477         (__arm_vdupq_x_n_u32): Remove.
38478         (__arm_vdupq_n_f16): Remove.
38479         (__arm_vdupq_n_f32): Remove.
38480         (__arm_vdupq_m_n_f16): Remove.
38481         (__arm_vdupq_m_n_f32): Remove.
38482         (__arm_vdupq_x_n_f16): Remove.
38483         (__arm_vdupq_x_n_f32): Remove.
38484         (__arm_vdupq_n): Remove.
38485         (__arm_vdupq_m): Remove.
38487 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
38489         * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
38490         * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
38492 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
38494         * config/arm/iterators.md (MVE_FP_M_N_VDUPQ_ONLY)
38495         (MVE_FP_N_VDUPQ_ONLY): New.
38496         (mve_insn): Add vdupq.
38497         * config/arm/mve.md (mve_vdupq_n_f<mode>): Rename into ...
38498         (@mve_<mve_insn>q_n_f<mode>): ... this.
38499         (mve_vdupq_n_<supf><mode>): Rename into ...
38500         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
38501         (mve_vdupq_m_n_<supf><mode>): Rename into ...
38502         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
38503         (mve_vdupq_m_n_f<mode>): Rename into ...
38504         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
38506 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
38508         * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q):
38509         New.
38510         * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
38511         (vrev64q): New.
38512         * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
38513         (vrev64q): New.
38514         * config/arm/arm_mve.h (vrev16q): Remove.
38515         (vrev32q): Remove.
38516         (vrev64q): Remove.
38517         (vrev64q_m): Remove.
38518         (vrev16q_m): Remove.
38519         (vrev32q_m): Remove.
38520         (vrev16q_x): Remove.
38521         (vrev32q_x): Remove.
38522         (vrev64q_x): Remove.
38523         (vrev64q_f16): Remove.
38524         (vrev64q_f32): Remove.
38525         (vrev32q_f16): Remove.
38526         (vrev16q_s8): Remove.
38527         (vrev32q_s8): Remove.
38528         (vrev32q_s16): Remove.
38529         (vrev64q_s8): Remove.
38530         (vrev64q_s16): Remove.
38531         (vrev64q_s32): Remove.
38532         (vrev64q_u8): Remove.
38533         (vrev64q_u16): Remove.
38534         (vrev64q_u32): Remove.
38535         (vrev32q_u8): Remove.
38536         (vrev32q_u16): Remove.
38537         (vrev16q_u8): Remove.
38538         (vrev64q_m_u8): Remove.
38539         (vrev64q_m_s8): Remove.
38540         (vrev64q_m_u16): Remove.
38541         (vrev64q_m_s16): Remove.
38542         (vrev64q_m_u32): Remove.
38543         (vrev64q_m_s32): Remove.
38544         (vrev16q_m_s8): Remove.
38545         (vrev32q_m_f16): Remove.
38546         (vrev16q_m_u8): Remove.
38547         (vrev32q_m_s8): Remove.
38548         (vrev64q_m_f16): Remove.
38549         (vrev32q_m_u8): Remove.
38550         (vrev32q_m_s16): Remove.
38551         (vrev64q_m_f32): Remove.
38552         (vrev32q_m_u16): Remove.
38553         (vrev16q_x_s8): Remove.
38554         (vrev16q_x_u8): Remove.
38555         (vrev32q_x_s8): Remove.
38556         (vrev32q_x_s16): Remove.
38557         (vrev32q_x_u8): Remove.
38558         (vrev32q_x_u16): Remove.
38559         (vrev64q_x_s8): Remove.
38560         (vrev64q_x_s16): Remove.
38561         (vrev64q_x_s32): Remove.
38562         (vrev64q_x_u8): Remove.
38563         (vrev64q_x_u16): Remove.
38564         (vrev64q_x_u32): Remove.
38565         (vrev32q_x_f16): Remove.
38566         (vrev64q_x_f16): Remove.
38567         (vrev64q_x_f32): Remove.
38568         (__arm_vrev16q_s8): Remove.
38569         (__arm_vrev32q_s8): Remove.
38570         (__arm_vrev32q_s16): Remove.
38571         (__arm_vrev64q_s8): Remove.
38572         (__arm_vrev64q_s16): Remove.
38573         (__arm_vrev64q_s32): Remove.
38574         (__arm_vrev64q_u8): Remove.
38575         (__arm_vrev64q_u16): Remove.
38576         (__arm_vrev64q_u32): Remove.
38577         (__arm_vrev32q_u8): Remove.
38578         (__arm_vrev32q_u16): Remove.
38579         (__arm_vrev16q_u8): Remove.
38580         (__arm_vrev64q_m_u8): Remove.
38581         (__arm_vrev64q_m_s8): Remove.
38582         (__arm_vrev64q_m_u16): Remove.
38583         (__arm_vrev64q_m_s16): Remove.
38584         (__arm_vrev64q_m_u32): Remove.
38585         (__arm_vrev64q_m_s32): Remove.
38586         (__arm_vrev16q_m_s8): Remove.
38587         (__arm_vrev16q_m_u8): Remove.
38588         (__arm_vrev32q_m_s8): Remove.
38589         (__arm_vrev32q_m_u8): Remove.
38590         (__arm_vrev32q_m_s16): Remove.
38591         (__arm_vrev32q_m_u16): Remove.
38592         (__arm_vrev16q_x_s8): Remove.
38593         (__arm_vrev16q_x_u8): Remove.
38594         (__arm_vrev32q_x_s8): Remove.
38595         (__arm_vrev32q_x_s16): Remove.
38596         (__arm_vrev32q_x_u8): Remove.
38597         (__arm_vrev32q_x_u16): Remove.
38598         (__arm_vrev64q_x_s8): Remove.
38599         (__arm_vrev64q_x_s16): Remove.
38600         (__arm_vrev64q_x_s32): Remove.
38601         (__arm_vrev64q_x_u8): Remove.
38602         (__arm_vrev64q_x_u16): Remove.
38603         (__arm_vrev64q_x_u32): Remove.
38604         (__arm_vrev64q_f16): Remove.
38605         (__arm_vrev64q_f32): Remove.
38606         (__arm_vrev32q_f16): Remove.
38607         (__arm_vrev32q_m_f16): Remove.
38608         (__arm_vrev64q_m_f16): Remove.
38609         (__arm_vrev64q_m_f32): Remove.
38610         (__arm_vrev32q_x_f16): Remove.
38611         (__arm_vrev64q_x_f16): Remove.
38612         (__arm_vrev64q_x_f32): Remove.
38613         (__arm_vrev16q): Remove.
38614         (__arm_vrev32q): Remove.
38615         (__arm_vrev64q): Remove.
38616         (__arm_vrev64q_m): Remove.
38617         (__arm_vrev16q_m): Remove.
38618         (__arm_vrev32q_m): Remove.
38619         (__arm_vrev16q_x): Remove.
38620         (__arm_vrev32q_x): Remove.
38621         (__arm_vrev64q_x): Remove.
38623 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
38625         * config/arm/iterators.md (MVE_V8HF, MVE_V16QI)
38626         (MVE_FP_VREV64Q_ONLY, MVE_FP_M_VREV64Q_ONLY, MVE_FP_VREV32Q_ONLY)
38627         (MVE_FP_M_VREV32Q_ONLY): New iterators.
38628         (mve_insn): Add vrev16q, vrev32q, vrev64q.
38629         * config/arm/mve.md (mve_vrev64q_f<mode>): Rename into ...
38630         (@mve_<mve_insn>q_f<mode>): ... this
38631         (mve_vrev32q_fv8hf): Rename into @mve_<mve_insn>q_f<mode>.
38632         (mve_vrev64q_<supf><mode>): Rename into ...
38633         (@mve_<mve_insn>q_<supf><mode>): ... this.
38634         (mve_vrev32q_<supf><mode>): Rename into
38635         @mve_<mve_insn>q_<supf><mode>.
38636         (mve_vrev16q_<supf>v16qi): Rename into
38637         @mve_<mve_insn>q_<supf><mode>.
38638         (mve_vrev64q_m_<supf><mode>): Rename into
38639         @mve_<mve_insn>q_m_<supf><mode>.
38640         (mve_vrev32q_m_fv8hf): Rename into @mve_<mve_insn>q_m_f<mode>.
38641         (mve_vrev32q_m_<supf><mode>): Rename into
38642         @mve_<mve_insn>q_m_<supf><mode>.
38643         (mve_vrev64q_m_f<mode>): Rename into @mve_<mve_insn>q_m_f<mode>.
38644         (mve_vrev16q_m_<supf>v16qi): Rename into
38645         @mve_<mve_insn>q_m_<supf><mode>.
38647 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
38649         * config/arm/arm-mve-builtins-base.cc (vcmpeqq, vcmpneq, vcmpgeq)
38650         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
38651         * config/arm/arm-mve-builtins-base.def (vcmpeqq, vcmpneq, vcmpgeq)
38652         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
38653         * config/arm/arm-mve-builtins-base.h (vcmpeqq, vcmpneq, vcmpgeq)
38654         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
38655         * config/arm/arm-mve-builtins-functions.h (class
38656         unspec_based_mve_function_exact_insn_vcmp): New.
38657         * config/arm/arm-mve-builtins.cc
38658         (function_instance::has_inactive_argument): Handle vcmp.
38659         * config/arm/arm_mve.h (vcmpneq): Remove.
38660         (vcmphiq): Remove.
38661         (vcmpeqq): Remove.
38662         (vcmpcsq): Remove.
38663         (vcmpltq): Remove.
38664         (vcmpleq): Remove.
38665         (vcmpgtq): Remove.
38666         (vcmpgeq): Remove.
38667         (vcmpneq_m): Remove.
38668         (vcmphiq_m): Remove.
38669         (vcmpeqq_m): Remove.
38670         (vcmpcsq_m): Remove.
38671         (vcmpcsq_m_n): Remove.
38672         (vcmpltq_m): Remove.
38673         (vcmpleq_m): Remove.
38674         (vcmpgtq_m): Remove.
38675         (vcmpgeq_m): Remove.
38676         (vcmpneq_s8): Remove.
38677         (vcmpneq_s16): Remove.
38678         (vcmpneq_s32): Remove.
38679         (vcmpneq_u8): Remove.
38680         (vcmpneq_u16): Remove.
38681         (vcmpneq_u32): Remove.
38682         (vcmpneq_n_u8): Remove.
38683         (vcmphiq_u8): Remove.
38684         (vcmphiq_n_u8): Remove.
38685         (vcmpeqq_u8): Remove.
38686         (vcmpeqq_n_u8): Remove.
38687         (vcmpcsq_u8): Remove.
38688         (vcmpcsq_n_u8): Remove.
38689         (vcmpneq_n_s8): Remove.
38690         (vcmpltq_s8): Remove.
38691         (vcmpltq_n_s8): Remove.
38692         (vcmpleq_s8): Remove.
38693         (vcmpleq_n_s8): Remove.
38694         (vcmpgtq_s8): Remove.
38695         (vcmpgtq_n_s8): Remove.
38696         (vcmpgeq_s8): Remove.
38697         (vcmpgeq_n_s8): Remove.
38698         (vcmpeqq_s8): Remove.
38699         (vcmpeqq_n_s8): Remove.
38700         (vcmpneq_n_u16): Remove.
38701         (vcmphiq_u16): Remove.
38702         (vcmphiq_n_u16): Remove.
38703         (vcmpeqq_u16): Remove.
38704         (vcmpeqq_n_u16): Remove.
38705         (vcmpcsq_u16): Remove.
38706         (vcmpcsq_n_u16): Remove.
38707         (vcmpneq_n_s16): Remove.
38708         (vcmpltq_s16): Remove.
38709         (vcmpltq_n_s16): Remove.
38710         (vcmpleq_s16): Remove.
38711         (vcmpleq_n_s16): Remove.
38712         (vcmpgtq_s16): Remove.
38713         (vcmpgtq_n_s16): Remove.
38714         (vcmpgeq_s16): Remove.
38715         (vcmpgeq_n_s16): Remove.
38716         (vcmpeqq_s16): Remove.
38717         (vcmpeqq_n_s16): Remove.
38718         (vcmpneq_n_u32): Remove.
38719         (vcmphiq_u32): Remove.
38720         (vcmphiq_n_u32): Remove.
38721         (vcmpeqq_u32): Remove.
38722         (vcmpeqq_n_u32): Remove.
38723         (vcmpcsq_u32): Remove.
38724         (vcmpcsq_n_u32): Remove.
38725         (vcmpneq_n_s32): Remove.
38726         (vcmpltq_s32): Remove.
38727         (vcmpltq_n_s32): Remove.
38728         (vcmpleq_s32): Remove.
38729         (vcmpleq_n_s32): Remove.
38730         (vcmpgtq_s32): Remove.
38731         (vcmpgtq_n_s32): Remove.
38732         (vcmpgeq_s32): Remove.
38733         (vcmpgeq_n_s32): Remove.
38734         (vcmpeqq_s32): Remove.
38735         (vcmpeqq_n_s32): Remove.
38736         (vcmpneq_n_f16): Remove.
38737         (vcmpneq_f16): Remove.
38738         (vcmpltq_n_f16): Remove.
38739         (vcmpltq_f16): Remove.
38740         (vcmpleq_n_f16): Remove.
38741         (vcmpleq_f16): Remove.
38742         (vcmpgtq_n_f16): Remove.
38743         (vcmpgtq_f16): Remove.
38744         (vcmpgeq_n_f16): Remove.
38745         (vcmpgeq_f16): Remove.
38746         (vcmpeqq_n_f16): Remove.
38747         (vcmpeqq_f16): Remove.
38748         (vcmpneq_n_f32): Remove.
38749         (vcmpneq_f32): Remove.
38750         (vcmpltq_n_f32): Remove.
38751         (vcmpltq_f32): Remove.
38752         (vcmpleq_n_f32): Remove.
38753         (vcmpleq_f32): Remove.
38754         (vcmpgtq_n_f32): Remove.
38755         (vcmpgtq_f32): Remove.
38756         (vcmpgeq_n_f32): Remove.
38757         (vcmpgeq_f32): Remove.
38758         (vcmpeqq_n_f32): Remove.
38759         (vcmpeqq_f32): Remove.
38760         (vcmpeqq_m_f16): Remove.
38761         (vcmpeqq_m_f32): Remove.
38762         (vcmpneq_m_u8): Remove.
38763         (vcmpneq_m_n_u8): Remove.
38764         (vcmphiq_m_u8): Remove.
38765         (vcmphiq_m_n_u8): Remove.
38766         (vcmpeqq_m_u8): Remove.
38767         (vcmpeqq_m_n_u8): Remove.
38768         (vcmpcsq_m_u8): Remove.
38769         (vcmpcsq_m_n_u8): Remove.
38770         (vcmpneq_m_s8): Remove.
38771         (vcmpneq_m_n_s8): Remove.
38772         (vcmpltq_m_s8): Remove.
38773         (vcmpltq_m_n_s8): Remove.
38774         (vcmpleq_m_s8): Remove.
38775         (vcmpleq_m_n_s8): Remove.
38776         (vcmpgtq_m_s8): Remove.
38777         (vcmpgtq_m_n_s8): Remove.
38778         (vcmpgeq_m_s8): Remove.
38779         (vcmpgeq_m_n_s8): Remove.
38780         (vcmpeqq_m_s8): Remove.
38781         (vcmpeqq_m_n_s8): Remove.
38782         (vcmpneq_m_u16): Remove.
38783         (vcmpneq_m_n_u16): Remove.
38784         (vcmphiq_m_u16): Remove.
38785         (vcmphiq_m_n_u16): Remove.
38786         (vcmpeqq_m_u16): Remove.
38787         (vcmpeqq_m_n_u16): Remove.
38788         (vcmpcsq_m_u16): Remove.
38789         (vcmpcsq_m_n_u16): Remove.
38790         (vcmpneq_m_s16): Remove.
38791         (vcmpneq_m_n_s16): Remove.
38792         (vcmpltq_m_s16): Remove.
38793         (vcmpltq_m_n_s16): Remove.
38794         (vcmpleq_m_s16): Remove.
38795         (vcmpleq_m_n_s16): Remove.
38796         (vcmpgtq_m_s16): Remove.
38797         (vcmpgtq_m_n_s16): Remove.
38798         (vcmpgeq_m_s16): Remove.
38799         (vcmpgeq_m_n_s16): Remove.
38800         (vcmpeqq_m_s16): Remove.
38801         (vcmpeqq_m_n_s16): Remove.
38802         (vcmpneq_m_u32): Remove.
38803         (vcmpneq_m_n_u32): Remove.
38804         (vcmphiq_m_u32): Remove.
38805         (vcmphiq_m_n_u32): Remove.
38806         (vcmpeqq_m_u32): Remove.
38807         (vcmpeqq_m_n_u32): Remove.
38808         (vcmpcsq_m_u32): Remove.
38809         (vcmpcsq_m_n_u32): Remove.
38810         (vcmpneq_m_s32): Remove.
38811         (vcmpneq_m_n_s32): Remove.
38812         (vcmpltq_m_s32): Remove.
38813         (vcmpltq_m_n_s32): Remove.
38814         (vcmpleq_m_s32): Remove.
38815         (vcmpleq_m_n_s32): Remove.
38816         (vcmpgtq_m_s32): Remove.
38817         (vcmpgtq_m_n_s32): Remove.
38818         (vcmpgeq_m_s32): Remove.
38819         (vcmpgeq_m_n_s32): Remove.
38820         (vcmpeqq_m_s32): Remove.
38821         (vcmpeqq_m_n_s32): Remove.
38822         (vcmpeqq_m_n_f16): Remove.
38823         (vcmpgeq_m_f16): Remove.
38824         (vcmpgeq_m_n_f16): Remove.
38825         (vcmpgtq_m_f16): Remove.
38826         (vcmpgtq_m_n_f16): Remove.
38827         (vcmpleq_m_f16): Remove.
38828         (vcmpleq_m_n_f16): Remove.
38829         (vcmpltq_m_f16): Remove.
38830         (vcmpltq_m_n_f16): Remove.
38831         (vcmpneq_m_f16): Remove.
38832         (vcmpneq_m_n_f16): Remove.
38833         (vcmpeqq_m_n_f32): Remove.
38834         (vcmpgeq_m_f32): Remove.
38835         (vcmpgeq_m_n_f32): Remove.
38836         (vcmpgtq_m_f32): Remove.
38837         (vcmpgtq_m_n_f32): Remove.
38838         (vcmpleq_m_f32): Remove.
38839         (vcmpleq_m_n_f32): Remove.
38840         (vcmpltq_m_f32): Remove.
38841         (vcmpltq_m_n_f32): Remove.
38842         (vcmpneq_m_f32): Remove.
38843         (vcmpneq_m_n_f32): Remove.
38844         (__arm_vcmpneq_s8): Remove.
38845         (__arm_vcmpneq_s16): Remove.
38846         (__arm_vcmpneq_s32): Remove.
38847         (__arm_vcmpneq_u8): Remove.
38848         (__arm_vcmpneq_u16): Remove.
38849         (__arm_vcmpneq_u32): Remove.
38850         (__arm_vcmpneq_n_u8): Remove.
38851         (__arm_vcmphiq_u8): Remove.
38852         (__arm_vcmphiq_n_u8): Remove.
38853         (__arm_vcmpeqq_u8): Remove.
38854         (__arm_vcmpeqq_n_u8): Remove.
38855         (__arm_vcmpcsq_u8): Remove.
38856         (__arm_vcmpcsq_n_u8): Remove.
38857         (__arm_vcmpneq_n_s8): Remove.
38858         (__arm_vcmpltq_s8): Remove.
38859         (__arm_vcmpltq_n_s8): Remove.
38860         (__arm_vcmpleq_s8): Remove.
38861         (__arm_vcmpleq_n_s8): Remove.
38862         (__arm_vcmpgtq_s8): Remove.
38863         (__arm_vcmpgtq_n_s8): Remove.
38864         (__arm_vcmpgeq_s8): Remove.
38865         (__arm_vcmpgeq_n_s8): Remove.
38866         (__arm_vcmpeqq_s8): Remove.
38867         (__arm_vcmpeqq_n_s8): Remove.
38868         (__arm_vcmpneq_n_u16): Remove.
38869         (__arm_vcmphiq_u16): Remove.
38870         (__arm_vcmphiq_n_u16): Remove.
38871         (__arm_vcmpeqq_u16): Remove.
38872         (__arm_vcmpeqq_n_u16): Remove.
38873         (__arm_vcmpcsq_u16): Remove.
38874         (__arm_vcmpcsq_n_u16): Remove.
38875         (__arm_vcmpneq_n_s16): Remove.
38876         (__arm_vcmpltq_s16): Remove.
38877         (__arm_vcmpltq_n_s16): Remove.
38878         (__arm_vcmpleq_s16): Remove.
38879         (__arm_vcmpleq_n_s16): Remove.
38880         (__arm_vcmpgtq_s16): Remove.
38881         (__arm_vcmpgtq_n_s16): Remove.
38882         (__arm_vcmpgeq_s16): Remove.
38883         (__arm_vcmpgeq_n_s16): Remove.
38884         (__arm_vcmpeqq_s16): Remove.
38885         (__arm_vcmpeqq_n_s16): Remove.
38886         (__arm_vcmpneq_n_u32): Remove.
38887         (__arm_vcmphiq_u32): Remove.
38888         (__arm_vcmphiq_n_u32): Remove.
38889         (__arm_vcmpeqq_u32): Remove.
38890         (__arm_vcmpeqq_n_u32): Remove.
38891         (__arm_vcmpcsq_u32): Remove.
38892         (__arm_vcmpcsq_n_u32): Remove.
38893         (__arm_vcmpneq_n_s32): Remove.
38894         (__arm_vcmpltq_s32): Remove.
38895         (__arm_vcmpltq_n_s32): Remove.
38896         (__arm_vcmpleq_s32): Remove.
38897         (__arm_vcmpleq_n_s32): Remove.
38898         (__arm_vcmpgtq_s32): Remove.
38899         (__arm_vcmpgtq_n_s32): Remove.
38900         (__arm_vcmpgeq_s32): Remove.
38901         (__arm_vcmpgeq_n_s32): Remove.
38902         (__arm_vcmpeqq_s32): Remove.
38903         (__arm_vcmpeqq_n_s32): Remove.
38904         (__arm_vcmpneq_m_u8): Remove.
38905         (__arm_vcmpneq_m_n_u8): Remove.
38906         (__arm_vcmphiq_m_u8): Remove.
38907         (__arm_vcmphiq_m_n_u8): Remove.
38908         (__arm_vcmpeqq_m_u8): Remove.
38909         (__arm_vcmpeqq_m_n_u8): Remove.
38910         (__arm_vcmpcsq_m_u8): Remove.
38911         (__arm_vcmpcsq_m_n_u8): Remove.
38912         (__arm_vcmpneq_m_s8): Remove.
38913         (__arm_vcmpneq_m_n_s8): Remove.
38914         (__arm_vcmpltq_m_s8): Remove.
38915         (__arm_vcmpltq_m_n_s8): Remove.
38916         (__arm_vcmpleq_m_s8): Remove.
38917         (__arm_vcmpleq_m_n_s8): Remove.
38918         (__arm_vcmpgtq_m_s8): Remove.
38919         (__arm_vcmpgtq_m_n_s8): Remove.
38920         (__arm_vcmpgeq_m_s8): Remove.
38921         (__arm_vcmpgeq_m_n_s8): Remove.
38922         (__arm_vcmpeqq_m_s8): Remove.
38923         (__arm_vcmpeqq_m_n_s8): Remove.
38924         (__arm_vcmpneq_m_u16): Remove.
38925         (__arm_vcmpneq_m_n_u16): Remove.
38926         (__arm_vcmphiq_m_u16): Remove.
38927         (__arm_vcmphiq_m_n_u16): Remove.
38928         (__arm_vcmpeqq_m_u16): Remove.
38929         (__arm_vcmpeqq_m_n_u16): Remove.
38930         (__arm_vcmpcsq_m_u16): Remove.
38931         (__arm_vcmpcsq_m_n_u16): Remove.
38932         (__arm_vcmpneq_m_s16): Remove.
38933         (__arm_vcmpneq_m_n_s16): Remove.
38934         (__arm_vcmpltq_m_s16): Remove.
38935         (__arm_vcmpltq_m_n_s16): Remove.
38936         (__arm_vcmpleq_m_s16): Remove.
38937         (__arm_vcmpleq_m_n_s16): Remove.
38938         (__arm_vcmpgtq_m_s16): Remove.
38939         (__arm_vcmpgtq_m_n_s16): Remove.
38940         (__arm_vcmpgeq_m_s16): Remove.
38941         (__arm_vcmpgeq_m_n_s16): Remove.
38942         (__arm_vcmpeqq_m_s16): Remove.
38943         (__arm_vcmpeqq_m_n_s16): Remove.
38944         (__arm_vcmpneq_m_u32): Remove.
38945         (__arm_vcmpneq_m_n_u32): Remove.
38946         (__arm_vcmphiq_m_u32): Remove.
38947         (__arm_vcmphiq_m_n_u32): Remove.
38948         (__arm_vcmpeqq_m_u32): Remove.
38949         (__arm_vcmpeqq_m_n_u32): Remove.
38950         (__arm_vcmpcsq_m_u32): Remove.
38951         (__arm_vcmpcsq_m_n_u32): Remove.
38952         (__arm_vcmpneq_m_s32): Remove.
38953         (__arm_vcmpneq_m_n_s32): Remove.
38954         (__arm_vcmpltq_m_s32): Remove.
38955         (__arm_vcmpltq_m_n_s32): Remove.
38956         (__arm_vcmpleq_m_s32): Remove.
38957         (__arm_vcmpleq_m_n_s32): Remove.
38958         (__arm_vcmpgtq_m_s32): Remove.
38959         (__arm_vcmpgtq_m_n_s32): Remove.
38960         (__arm_vcmpgeq_m_s32): Remove.
38961         (__arm_vcmpgeq_m_n_s32): Remove.
38962         (__arm_vcmpeqq_m_s32): Remove.
38963         (__arm_vcmpeqq_m_n_s32): Remove.
38964         (__arm_vcmpneq_n_f16): Remove.
38965         (__arm_vcmpneq_f16): Remove.
38966         (__arm_vcmpltq_n_f16): Remove.
38967         (__arm_vcmpltq_f16): Remove.
38968         (__arm_vcmpleq_n_f16): Remove.
38969         (__arm_vcmpleq_f16): Remove.
38970         (__arm_vcmpgtq_n_f16): Remove.
38971         (__arm_vcmpgtq_f16): Remove.
38972         (__arm_vcmpgeq_n_f16): Remove.
38973         (__arm_vcmpgeq_f16): Remove.
38974         (__arm_vcmpeqq_n_f16): Remove.
38975         (__arm_vcmpeqq_f16): Remove.
38976         (__arm_vcmpneq_n_f32): Remove.
38977         (__arm_vcmpneq_f32): Remove.
38978         (__arm_vcmpltq_n_f32): Remove.
38979         (__arm_vcmpltq_f32): Remove.
38980         (__arm_vcmpleq_n_f32): Remove.
38981         (__arm_vcmpleq_f32): Remove.
38982         (__arm_vcmpgtq_n_f32): Remove.
38983         (__arm_vcmpgtq_f32): Remove.
38984         (__arm_vcmpgeq_n_f32): Remove.
38985         (__arm_vcmpgeq_f32): Remove.
38986         (__arm_vcmpeqq_n_f32): Remove.
38987         (__arm_vcmpeqq_f32): Remove.
38988         (__arm_vcmpeqq_m_f16): Remove.
38989         (__arm_vcmpeqq_m_f32): Remove.
38990         (__arm_vcmpeqq_m_n_f16): Remove.
38991         (__arm_vcmpgeq_m_f16): Remove.
38992         (__arm_vcmpgeq_m_n_f16): Remove.
38993         (__arm_vcmpgtq_m_f16): Remove.
38994         (__arm_vcmpgtq_m_n_f16): Remove.
38995         (__arm_vcmpleq_m_f16): Remove.
38996         (__arm_vcmpleq_m_n_f16): Remove.
38997         (__arm_vcmpltq_m_f16): Remove.
38998         (__arm_vcmpltq_m_n_f16): Remove.
38999         (__arm_vcmpneq_m_f16): Remove.
39000         (__arm_vcmpneq_m_n_f16): Remove.
39001         (__arm_vcmpeqq_m_n_f32): Remove.
39002         (__arm_vcmpgeq_m_f32): Remove.
39003         (__arm_vcmpgeq_m_n_f32): Remove.
39004         (__arm_vcmpgtq_m_f32): Remove.
39005         (__arm_vcmpgtq_m_n_f32): Remove.
39006         (__arm_vcmpleq_m_f32): Remove.
39007         (__arm_vcmpleq_m_n_f32): Remove.
39008         (__arm_vcmpltq_m_f32): Remove.
39009         (__arm_vcmpltq_m_n_f32): Remove.
39010         (__arm_vcmpneq_m_f32): Remove.
39011         (__arm_vcmpneq_m_n_f32): Remove.
39012         (__arm_vcmpneq): Remove.
39013         (__arm_vcmphiq): Remove.
39014         (__arm_vcmpeqq): Remove.
39015         (__arm_vcmpcsq): Remove.
39016         (__arm_vcmpltq): Remove.
39017         (__arm_vcmpleq): Remove.
39018         (__arm_vcmpgtq): Remove.
39019         (__arm_vcmpgeq): Remove.
39020         (__arm_vcmpneq_m): Remove.
39021         (__arm_vcmphiq_m): Remove.
39022         (__arm_vcmpeqq_m): Remove.
39023         (__arm_vcmpcsq_m): Remove.
39024         (__arm_vcmpltq_m): Remove.
39025         (__arm_vcmpleq_m): Remove.
39026         (__arm_vcmpgtq_m): Remove.
39027         (__arm_vcmpgeq_m): Remove.
39029 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
39031         * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
39032         * config/arm/arm-mve-builtins-shapes.h (cmp): New.
39034 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
39036         * config/arm/iterators.md (MVE_CMP_M, MVE_CMP_M_F, MVE_CMP_M_N)
39037         (MVE_CMP_M_N_F, mve_cmp_op1): New.
39038         (isu): Add VCMP*
39039         (supf): Likewise.
39040         * config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>): Rename into ...
39041         (@mve_vcmp<mve_cmp_op>q_n_<mode>): ... this.
39042         (mve_vcmpeqq_m_f<mode>, mve_vcmpgeq_m_f<mode>)
39043         (mve_vcmpgtq_m_f<mode>, mve_vcmpleq_m_f<mode>)
39044         (mve_vcmpltq_m_f<mode>, mve_vcmpneq_m_f<mode>): Merge into ...
39045         (@mve_vcmp<mve_cmp_op1>q_m_f<mode>): ... this.
39046         (mve_vcmpcsq_m_u<mode>, mve_vcmpeqq_m_<supf><mode>)
39047         (mve_vcmpgeq_m_s<mode>, mve_vcmpgtq_m_s<mode>)
39048         (mve_vcmphiq_m_u<mode>, mve_vcmpleq_m_s<mode>)
39049         (mve_vcmpltq_m_s<mode>, mve_vcmpneq_m_<supf><mode>): Merge into
39050         ...
39051         (@mve_vcmp<mve_cmp_op1>q_m_<supf><mode>): ... this.
39052         (mve_vcmpcsq_m_n_u<mode>, mve_vcmpeqq_m_n_<supf><mode>)
39053         (mve_vcmpgeq_m_n_s<mode>, mve_vcmpgtq_m_n_s<mode>)
39054         (mve_vcmphiq_m_n_u<mode>, mve_vcmpleq_m_n_s<mode>)
39055         (mve_vcmpltq_m_n_s<mode>, mve_vcmpneq_m_n_<supf><mode>): Merge
39056         into ...
39057         (@mve_vcmp<mve_cmp_op1>q_m_n_<supf><mode>): ... this.
39058         (mve_vcmpeqq_m_n_f<mode>, mve_vcmpgeq_m_n_f<mode>)
39059         (mve_vcmpgtq_m_n_f<mode>, mve_vcmpleq_m_n_f<mode>)
39060         (mve_vcmpltq_m_n_f<mode>, mve_vcmpneq_m_n_f<mode>): Merge into ...
39061         (@mve_vcmp<mve_cmp_op1>q_m_n_f<mode>): ... this.
39063 2023-05-11  Roger Sayle  <roger@nextmovesoftware.com>
39065         * match.pd <popcount optimizations>: Simplify popcount(X|Y) +
39066         popcount(X&Y) as popcount(X)+popcount(Y).  Likewise, simplify
39067         popcount(X)+popcount(Y)-popcount(X&Y) as popcount(X|Y), and
39068         vice versa.
39070 2023-05-11  Roger Sayle  <roger@nextmovesoftware.com>
39072         * match.pd <popcount optimizations>: Simplify popcount(bswap(x))
39073         as popcount(x).  Simplify popcount(rotate(x,y)) as popcount(x).
39074         <parity optimizations>:  Simplify parity(bswap(x)) as parity(x).
39075         Simplify parity(rotate(x,y)) as parity(x).
39077 2023-05-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
39079         * config/riscv/autovec.md (@vec_series<mode>): New pattern
39080         * config/riscv/riscv-protos.h (expand_vec_series): New function.
39081         * config/riscv/riscv-v.cc (emit_binop): Ditto.
39082         (emit_index_op): Ditto.
39083         (expand_vec_series): Ditto.
39084         (expand_const_vector): Add series vector handling.
39085         * config/riscv/riscv.cc (riscv_const_insns): Enable series vector for testing.
39087 2023-05-10  Roger Sayle  <roger@nextmovesoftware.com>
39089         * config/i386/i386.md (*concat<mode><dwi>3_1): Use preferred
39090         [(const_int 0)] idiom, instead of [(clobber (const_int 0))].
39091         (*concat<mode><dwi>3_2): Likewise.
39092         (*concat<mode><dwi>3_3): Likewise.
39093         (*concat<mode><dwi>3_4): Likewise.
39094         (*concat<mode><dwi>3_5): Likewise.
39095         (*concat<mode><dwi>3_6): Likewise.
39096         (*concat<mode><dwi>3_7): Likewise.
39098 2023-05-10  Uros Bizjak  <ubizjak@gmail.com>
39100         PR target/92658
39101         * config/i386/mmx.md (sse4_1_<code>v2qiv2si2): New insn pattern.
39102         (<insn>v4qiv4hi2): New expander.
39103         (<insn>v2hiv2si2): Ditto.
39104         (<insn>v2qiv2si2): Ditto.
39105         (<insn>v2qiv2hi2): Ditto.
39107 2023-05-10  Jeff Law  <jlaw@ventanamicro>
39109         * config/h8300/constraints.md (Q): Make this a special memory
39110         constraint.
39111         (Zz): Similarly.
39113 2023-05-10  Jakub Jelinek  <jakub@redhat.com>
39115         PR fortran/109788
39116         * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t)
39117         if t is void_list_node.
39119 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
39121         * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode>_insn_le): Delete.
39122         (aarch64_sqmovun<mode>_insn_be): Delete.
39123         (aarch64_sqmovun<mode><vczle><vczbe>): New define_insn.
39124         (aarch64_sqmovun<mode>): Delete expander.
39126 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
39128         PR target/99195
39129         * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
39130         Rename to...
39131         (aarch64_<PERMUTE:perm_insn><mode><vczle><vczbe>): ... This.
39132         (aarch64_rev<REVERSE:rev_op><mode>): Rename to...
39133         (aarch64_rev<REVERSE:rev_op><mode><vczle><vczbe>): ... This.
39135 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
39137         PR target/99195
39138         * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
39139         Rename to...
39140         (aarch64_<su_optab>q<addsub><mode><vczle><vczbe>): ... This.
39141         (aarch64_<sur>qadd<mode>): Rename to...
39142         (aarch64_<sur>qadd<mode><vczle><vczbe>): ... This.
39144 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
39146         * config/aarch64/aarch64-simd.md
39147         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): Delete.
39148         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): Delete.
39149         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): New define_insn.
39150         (aarch64_<sur>q<r>shr<u>n_n<mode>): Simplify expander.
39152 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
39154         PR target/99195
39155         * config/aarch64/aarch64-simd.md (aarch64_xtn<mode>_insn_le): Delete.
39156         (aarch64_xtn<mode>_insn_be): Likewise.
39157         (trunc<mode><Vnarrowq>2): Rename to...
39158         (trunc<mode><Vnarrowq>2<vczle><vczbe>): ... This.
39159         (aarch64_xtn<mode>): Move under the above.  Just emit the truncate RTL.
39160         (aarch64_<su>qmovn<mode>): Likewise.
39161         (aarch64_<su>qmovn<mode><vczle><vczbe>): New define_insn.
39162         (aarch64_<su>qmovn<mode>_insn_le): Delete.
39163         (aarch64_<su>qmovn<mode>_insn_be): Likewise.
39165 2023-05-10  Li Xu  <xuli1@eswincomputing.com>
39167         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): For vfmv.f.s/vmv.x.s
39168         intruction replace null avl with (const_int 0).
39170 2023-05-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
39172         * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
39173         incorrect codes.
39175 2023-05-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
39177         PR target/109773
39178         * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function.
39179         (source_equal_p): Fix dead loop in vsetvl avl checking.
39181 2023-05-10  Hans-Peter Nilsson  <hp@axis.com>
39183         * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
39184         of modeadjusted_dccr.
39186 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39188         * config/arm/arm-mve-builtins-base.cc (vmaxaq, vminaq): New.
39189         * config/arm/arm-mve-builtins-base.def (vmaxaq, vminaq): New.
39190         * config/arm/arm-mve-builtins-base.h (vmaxaq, vminaq): New.
39191         * config/arm/arm-mve-builtins.cc
39192         (function_instance::has_inactive_argument): Handle vmaxaq and
39193         vminaq.
39194         * config/arm/arm_mve.h (vminaq): Remove.
39195         (vmaxaq): Remove.
39196         (vminaq_m): Remove.
39197         (vmaxaq_m): Remove.
39198         (vminaq_s8): Remove.
39199         (vmaxaq_s8): Remove.
39200         (vminaq_s16): Remove.
39201         (vmaxaq_s16): Remove.
39202         (vminaq_s32): Remove.
39203         (vmaxaq_s32): Remove.
39204         (vminaq_m_s8): Remove.
39205         (vmaxaq_m_s8): Remove.
39206         (vminaq_m_s16): Remove.
39207         (vmaxaq_m_s16): Remove.
39208         (vminaq_m_s32): Remove.
39209         (vmaxaq_m_s32): Remove.
39210         (__arm_vminaq_s8): Remove.
39211         (__arm_vmaxaq_s8): Remove.
39212         (__arm_vminaq_s16): Remove.
39213         (__arm_vmaxaq_s16): Remove.
39214         (__arm_vminaq_s32): Remove.
39215         (__arm_vmaxaq_s32): Remove.
39216         (__arm_vminaq_m_s8): Remove.
39217         (__arm_vmaxaq_m_s8): Remove.
39218         (__arm_vminaq_m_s16): Remove.
39219         (__arm_vmaxaq_m_s16): Remove.
39220         (__arm_vminaq_m_s32): Remove.
39221         (__arm_vmaxaq_m_s32): Remove.
39222         (__arm_vminaq): Remove.
39223         (__arm_vmaxaq): Remove.
39224         (__arm_vminaq_m): Remove.
39225         (__arm_vmaxaq_m): Remove.
39227 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39229         * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M):
39230         New.
39231         (mve_insn): Add vmaxa, vmina.
39232         (supf): Add VMAXAQ_S, VMAXAQ_M_S, VMINAQ_S, VMINAQ_M_S.
39233         * config/arm/mve.md (mve_vmaxaq_s<mode>, mve_vminaq_s<mode>):
39234         Merge into ...
39235         (@mve_<mve_insn>q_<supf><mode>): ... this.
39236         (mve_vmaxaq_m_s<mode>, mve_vminaq_m_s<mode>): Merge into ...
39237         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
39239 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39241         * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
39242         * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
39244 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39246         * config/arm/arm-mve-builtins-base.cc (vmaxnmaq, vminnmaq): New.
39247         * config/arm/arm-mve-builtins-base.def (vmaxnmaq, vminnmaq): New.
39248         * config/arm/arm-mve-builtins-base.h (vmaxnmaq, vminnmaq): New.
39249         * config/arm/arm-mve-builtins.cc
39250         (function_instance::has_inactive_argument): Handle vmaxnmaq and
39251         vminnmaq.
39252         * config/arm/arm_mve.h (vminnmaq): Remove.
39253         (vmaxnmaq): Remove.
39254         (vmaxnmaq_m): Remove.
39255         (vminnmaq_m): Remove.
39256         (vminnmaq_f16): Remove.
39257         (vmaxnmaq_f16): Remove.
39258         (vminnmaq_f32): Remove.
39259         (vmaxnmaq_f32): Remove.
39260         (vmaxnmaq_m_f16): Remove.
39261         (vminnmaq_m_f16): Remove.
39262         (vmaxnmaq_m_f32): Remove.
39263         (vminnmaq_m_f32): Remove.
39264         (__arm_vminnmaq_f16): Remove.
39265         (__arm_vmaxnmaq_f16): Remove.
39266         (__arm_vminnmaq_f32): Remove.
39267         (__arm_vmaxnmaq_f32): Remove.
39268         (__arm_vmaxnmaq_m_f16): Remove.
39269         (__arm_vminnmaq_m_f16): Remove.
39270         (__arm_vmaxnmaq_m_f32): Remove.
39271         (__arm_vminnmaq_m_f32): Remove.
39272         (__arm_vminnmaq): Remove.
39273         (__arm_vmaxnmaq): Remove.
39274         (__arm_vmaxnmaq_m): Remove.
39275         (__arm_vminnmaq_m): Remove.
39277 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39279         * config/arm/iterators.md (MVE_VMAXNMA_VMINNMAQ)
39280         (MVE_VMAXNMA_VMINNMAQ_M): New.
39281         (mve_insn): Add vmaxnma, vminnma.
39282         * config/arm/mve.md (mve_vmaxnmaq_f<mode>, mve_vminnmaq_f<mode>):
39283         Merge into ...
39284         (@mve_<mve_insn>q_f<mode>): ... this.
39285         (mve_vmaxnmaq_m_f<mode>, mve_vminnmaq_m_f<mode>): Merge into ...
39286         (@mve_<mve_insn>q_m_f<mode>): ... this.
39288 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39290         * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_F): New.
39291         (vmaxnmavq, vmaxnmvq, vminnmavq, vminnmvq): New.
39292         * config/arm/arm-mve-builtins-base.def (vmaxnmavq, vmaxnmvq)
39293         (vminnmavq, vminnmvq): New.
39294         * config/arm/arm-mve-builtins-base.h (vmaxnmavq, vmaxnmvq)
39295         (vminnmavq, vminnmvq): New.
39296         * config/arm/arm_mve.h (vminnmvq): Remove.
39297         (vminnmavq): Remove.
39298         (vmaxnmvq): Remove.
39299         (vmaxnmavq): Remove.
39300         (vmaxnmavq_p): Remove.
39301         (vmaxnmvq_p): Remove.
39302         (vminnmavq_p): Remove.
39303         (vminnmvq_p): Remove.
39304         (vminnmvq_f16): Remove.
39305         (vminnmavq_f16): Remove.
39306         (vmaxnmvq_f16): Remove.
39307         (vmaxnmavq_f16): Remove.
39308         (vminnmvq_f32): Remove.
39309         (vminnmavq_f32): Remove.
39310         (vmaxnmvq_f32): Remove.
39311         (vmaxnmavq_f32): Remove.
39312         (vmaxnmavq_p_f16): Remove.
39313         (vmaxnmvq_p_f16): Remove.
39314         (vminnmavq_p_f16): Remove.
39315         (vminnmvq_p_f16): Remove.
39316         (vmaxnmavq_p_f32): Remove.
39317         (vmaxnmvq_p_f32): Remove.
39318         (vminnmavq_p_f32): Remove.
39319         (vminnmvq_p_f32): Remove.
39320         (__arm_vminnmvq_f16): Remove.
39321         (__arm_vminnmavq_f16): Remove.
39322         (__arm_vmaxnmvq_f16): Remove.
39323         (__arm_vmaxnmavq_f16): Remove.
39324         (__arm_vminnmvq_f32): Remove.
39325         (__arm_vminnmavq_f32): Remove.
39326         (__arm_vmaxnmvq_f32): Remove.
39327         (__arm_vmaxnmavq_f32): Remove.
39328         (__arm_vmaxnmavq_p_f16): Remove.
39329         (__arm_vmaxnmvq_p_f16): Remove.
39330         (__arm_vminnmavq_p_f16): Remove.
39331         (__arm_vminnmvq_p_f16): Remove.
39332         (__arm_vmaxnmavq_p_f32): Remove.
39333         (__arm_vmaxnmvq_p_f32): Remove.
39334         (__arm_vminnmavq_p_f32): Remove.
39335         (__arm_vminnmvq_p_f32): Remove.
39336         (__arm_vminnmvq): Remove.
39337         (__arm_vminnmavq): Remove.
39338         (__arm_vmaxnmvq): Remove.
39339         (__arm_vmaxnmavq): Remove.
39340         (__arm_vmaxnmavq_p): Remove.
39341         (__arm_vmaxnmvq_p): Remove.
39342         (__arm_vminnmavq_p): Remove.
39343         (__arm_vminnmvq_p): Remove.
39344         (__arm_vmaxnmavq_m): Remove.
39345         (__arm_vmaxnmvq_m): Remove.
39347 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39349         * config/arm/arm-mve-builtins-functions.h
39350         (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
39352 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39354         * config/arm/iterators.md (MVE_VMAXNMxV_MINNMxVQ)
39355         (MVE_VMAXNMxV_MINNMxVQ_P): New.
39356         (mve_insn): Add vmaxnmav, vmaxnmv, vminnmav, vminnmv.
39357         * config/arm/mve.md (mve_vmaxnmavq_f<mode>, mve_vmaxnmvq_f<mode>)
39358         (mve_vminnmavq_f<mode>, mve_vminnmvq_f<mode>): Merge into ...
39359         (@mve_<mve_insn>q_f<mode>): ... this.
39360         (mve_vmaxnmavq_p_f<mode>, mve_vmaxnmvq_p_f<mode>)
39361         (mve_vminnmavq_p_f<mode>, mve_vminnmvq_p_f<mode>): Merge into ...
39362         (@mve_<mve_insn>q_p_f<mode>): ... this.
39364 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39366         * config/arm/arm-mve-builtins-base.cc (vmaxnmq, vminnmq): New.
39367         * config/arm/arm-mve-builtins-base.def (vmaxnmq, vminnmq): New.
39368         * config/arm/arm-mve-builtins-base.h (vmaxnmq, vminnmq): New.
39369         * config/arm/arm_mve.h (vminnmq): Remove.
39370         (vmaxnmq): Remove.
39371         (vmaxnmq_m): Remove.
39372         (vminnmq_m): Remove.
39373         (vminnmq_x): Remove.
39374         (vmaxnmq_x): Remove.
39375         (vminnmq_f16): Remove.
39376         (vmaxnmq_f16): Remove.
39377         (vminnmq_f32): Remove.
39378         (vmaxnmq_f32): Remove.
39379         (vmaxnmq_m_f32): Remove.
39380         (vmaxnmq_m_f16): Remove.
39381         (vminnmq_m_f32): Remove.
39382         (vminnmq_m_f16): Remove.
39383         (vminnmq_x_f16): Remove.
39384         (vminnmq_x_f32): Remove.
39385         (vmaxnmq_x_f16): Remove.
39386         (vmaxnmq_x_f32): Remove.
39387         (__arm_vminnmq_f16): Remove.
39388         (__arm_vmaxnmq_f16): Remove.
39389         (__arm_vminnmq_f32): Remove.
39390         (__arm_vmaxnmq_f32): Remove.
39391         (__arm_vmaxnmq_m_f32): Remove.
39392         (__arm_vmaxnmq_m_f16): Remove.
39393         (__arm_vminnmq_m_f32): Remove.
39394         (__arm_vminnmq_m_f16): Remove.
39395         (__arm_vminnmq_x_f16): Remove.
39396         (__arm_vminnmq_x_f32): Remove.
39397         (__arm_vmaxnmq_x_f16): Remove.
39398         (__arm_vmaxnmq_x_f32): Remove.
39399         (__arm_vminnmq): Remove.
39400         (__arm_vmaxnmq): Remove.
39401         (__arm_vmaxnmq_m): Remove.
39402         (__arm_vminnmq_m): Remove.
39403         (__arm_vminnmq_x): Remove.
39404         (__arm_vmaxnmq_x): Remove.
39406 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39408         * config/arm/iterators.md (MAX_MIN_F): New.
39409         (MVE_FP_M_BINARY): Add VMAXNMQ_M_F, VMINNMQ_M_F.
39410         (mve_insn): Add vmaxnm, vminnm.
39411         (max_min_f_str): New.
39412         * config/arm/mve.md (mve_vmaxnmq_f<mode>, mve_vminnmq_f<mode>):
39413         Merge into ...
39414         (@mve_<max_min_f_str>q_f<mode>): ... this.
39415         (mve_vmaxnmq_m_f<mode>, mve_vminnmq_m_f<mode>): Merge into ...
39416         (@mve_<mve_insn>q_m_f<mode>): ... this.
39418 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39420         * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
39421         (smax<mode>3): Likewise.
39423 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39425         * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_S_U)
39426         (FUNCTION_PRED_P_S): New.
39427         (vmaxavq, vminavq, vmaxvq, vminvq): New.
39428         * config/arm/arm-mve-builtins-base.def (vmaxavq, vminavq, vmaxvq)
39429         (vminvq): New.
39430         * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
39431         (vminvq): New.
39432         * config/arm/arm_mve.h (vminvq): Remove.
39433         (vmaxvq): Remove.
39434         (vminvq_p): Remove.
39435         (vmaxvq_p): Remove.
39436         (vminvq_u8): Remove.
39437         (vmaxvq_u8): Remove.
39438         (vminvq_s8): Remove.
39439         (vmaxvq_s8): Remove.
39440         (vminvq_u16): Remove.
39441         (vmaxvq_u16): Remove.
39442         (vminvq_s16): Remove.
39443         (vmaxvq_s16): Remove.
39444         (vminvq_u32): Remove.
39445         (vmaxvq_u32): Remove.
39446         (vminvq_s32): Remove.
39447         (vmaxvq_s32): Remove.
39448         (vminvq_p_u8): Remove.
39449         (vmaxvq_p_u8): Remove.
39450         (vminvq_p_s8): Remove.
39451         (vmaxvq_p_s8): Remove.
39452         (vminvq_p_u16): Remove.
39453         (vmaxvq_p_u16): Remove.
39454         (vminvq_p_s16): Remove.
39455         (vmaxvq_p_s16): Remove.
39456         (vminvq_p_u32): Remove.
39457         (vmaxvq_p_u32): Remove.
39458         (vminvq_p_s32): Remove.
39459         (vmaxvq_p_s32): Remove.
39460         (__arm_vminvq_u8): Remove.
39461         (__arm_vmaxvq_u8): Remove.
39462         (__arm_vminvq_s8): Remove.
39463         (__arm_vmaxvq_s8): Remove.
39464         (__arm_vminvq_u16): Remove.
39465         (__arm_vmaxvq_u16): Remove.
39466         (__arm_vminvq_s16): Remove.
39467         (__arm_vmaxvq_s16): Remove.
39468         (__arm_vminvq_u32): Remove.
39469         (__arm_vmaxvq_u32): Remove.
39470         (__arm_vminvq_s32): Remove.
39471         (__arm_vmaxvq_s32): Remove.
39472         (__arm_vminvq_p_u8): Remove.
39473         (__arm_vmaxvq_p_u8): Remove.
39474         (__arm_vminvq_p_s8): Remove.
39475         (__arm_vmaxvq_p_s8): Remove.
39476         (__arm_vminvq_p_u16): Remove.
39477         (__arm_vmaxvq_p_u16): Remove.
39478         (__arm_vminvq_p_s16): Remove.
39479         (__arm_vmaxvq_p_s16): Remove.
39480         (__arm_vminvq_p_u32): Remove.
39481         (__arm_vmaxvq_p_u32): Remove.
39482         (__arm_vminvq_p_s32): Remove.
39483         (__arm_vmaxvq_p_s32): Remove.
39484         (__arm_vminvq): Remove.
39485         (__arm_vmaxvq): Remove.
39486         (__arm_vminvq_p): Remove.
39487         (__arm_vmaxvq_p): Remove.
39488         (vminavq): Remove.
39489         (vmaxavq): Remove.
39490         (vminavq_p): Remove.
39491         (vmaxavq_p): Remove.
39492         (vminavq_s8): Remove.
39493         (vmaxavq_s8): Remove.
39494         (vminavq_s16): Remove.
39495         (vmaxavq_s16): Remove.
39496         (vminavq_s32): Remove.
39497         (vmaxavq_s32): Remove.
39498         (vminavq_p_s8): Remove.
39499         (vmaxavq_p_s8): Remove.
39500         (vminavq_p_s16): Remove.
39501         (vmaxavq_p_s16): Remove.
39502         (vminavq_p_s32): Remove.
39503         (vmaxavq_p_s32): Remove.
39504         (__arm_vminavq_s8): Remove.
39505         (__arm_vmaxavq_s8): Remove.
39506         (__arm_vminavq_s16): Remove.
39507         (__arm_vmaxavq_s16): Remove.
39508         (__arm_vminavq_s32): Remove.
39509         (__arm_vmaxavq_s32): Remove.
39510         (__arm_vminavq_p_s8): Remove.
39511         (__arm_vmaxavq_p_s8): Remove.
39512         (__arm_vminavq_p_s16): Remove.
39513         (__arm_vmaxavq_p_s16): Remove.
39514         (__arm_vminavq_p_s32): Remove.
39515         (__arm_vmaxavq_p_s32): Remove.
39516         (__arm_vminavq): Remove.
39517         (__arm_vmaxavq): Remove.
39518         (__arm_vminavq_p): Remove.
39519         (__arm_vmaxavq_p): Remove.
39521 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39523         * config/arm/iterators.md (MVE_VMAXVQ_VMINVQ, MVE_VMAXVQ_VMINVQ_P): New.
39524         (mve_insn): Add vmaxav, vmaxv, vminav, vminv.
39525         (supf): Add VMAXAVQ_S, VMAXAVQ_P_S, VMINAVQ_S, VMINAVQ_P_S.
39526         * config/arm/mve.md (mve_vmaxavq_s<mode>, mve_vmaxvq_<supf><mode>)
39527         (mve_vminavq_s<mode>, mve_vminvq_<supf><mode>): Merge into ...
39528         (@mve_<mve_insn>q_<supf><mode>): ... this.
39529         (mve_vmaxavq_p_s<mode>, mve_vmaxvq_p_<supf><mode>)
39530         (mve_vminavq_p_s<mode>, mve_vminvq_p_<supf><mode>): Merge into ...
39531         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
39533 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39535         * config/arm/arm-mve-builtins-functions.h (class
39536         unspec_mve_function_exact_insn_pred_p): New.
39538 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39540         * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
39541         * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
39543 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39545         * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
39546         * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
39548 2023-05-09  Richard Sandiford  <richard.sandiford@arm.com>
39550         * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order):
39551         Declare.
39552         * config/aarch64/aarch64.h (REG_ALLOC_ORDER): Define.
39553         (ADJUST_REG_ALLOC_ORDER): Likewise.
39554         * config/aarch64/aarch64.cc (aarch64_adjust_reg_alloc_order): New
39555         function.
39556         * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use
39557         Upa rather than Upl for unpredicated movprfx alternatives.
39559 2023-05-09  Jeff Law  <jlaw@ventanamicro>
39561         * config/h8300/testcompare.md: Add peephole2 which uses a memory
39562         load to set flags, thus eliminating a compare against zero.
39564 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39566         * config/arm/arm-mve-builtins-base.cc (vshllbq, vshlltq): New.
39567         * config/arm/arm-mve-builtins-base.def (vshllbq, vshlltq): New.
39568         * config/arm/arm-mve-builtins-base.h (vshllbq, vshlltq): New.
39569         * config/arm/arm_mve.h (vshlltq): Remove.
39570         (vshllbq): Remove.
39571         (vshllbq_m): Remove.
39572         (vshlltq_m): Remove.
39573         (vshllbq_x): Remove.
39574         (vshlltq_x): Remove.
39575         (vshlltq_n_u8): Remove.
39576         (vshllbq_n_u8): Remove.
39577         (vshlltq_n_s8): Remove.
39578         (vshllbq_n_s8): Remove.
39579         (vshlltq_n_u16): Remove.
39580         (vshllbq_n_u16): Remove.
39581         (vshlltq_n_s16): Remove.
39582         (vshllbq_n_s16): Remove.
39583         (vshllbq_m_n_s8): Remove.
39584         (vshllbq_m_n_s16): Remove.
39585         (vshllbq_m_n_u8): Remove.
39586         (vshllbq_m_n_u16): Remove.
39587         (vshlltq_m_n_s8): Remove.
39588         (vshlltq_m_n_s16): Remove.
39589         (vshlltq_m_n_u8): Remove.
39590         (vshlltq_m_n_u16): Remove.
39591         (vshllbq_x_n_s8): Remove.
39592         (vshllbq_x_n_s16): Remove.
39593         (vshllbq_x_n_u8): Remove.
39594         (vshllbq_x_n_u16): Remove.
39595         (vshlltq_x_n_s8): Remove.
39596         (vshlltq_x_n_s16): Remove.
39597         (vshlltq_x_n_u8): Remove.
39598         (vshlltq_x_n_u16): Remove.
39599         (__arm_vshlltq_n_u8): Remove.
39600         (__arm_vshllbq_n_u8): Remove.
39601         (__arm_vshlltq_n_s8): Remove.
39602         (__arm_vshllbq_n_s8): Remove.
39603         (__arm_vshlltq_n_u16): Remove.
39604         (__arm_vshllbq_n_u16): Remove.
39605         (__arm_vshlltq_n_s16): Remove.
39606         (__arm_vshllbq_n_s16): Remove.
39607         (__arm_vshllbq_m_n_s8): Remove.
39608         (__arm_vshllbq_m_n_s16): Remove.
39609         (__arm_vshllbq_m_n_u8): Remove.
39610         (__arm_vshllbq_m_n_u16): Remove.
39611         (__arm_vshlltq_m_n_s8): Remove.
39612         (__arm_vshlltq_m_n_s16): Remove.
39613         (__arm_vshlltq_m_n_u8): Remove.
39614         (__arm_vshlltq_m_n_u16): Remove.
39615         (__arm_vshllbq_x_n_s8): Remove.
39616         (__arm_vshllbq_x_n_s16): Remove.
39617         (__arm_vshllbq_x_n_u8): Remove.
39618         (__arm_vshllbq_x_n_u16): Remove.
39619         (__arm_vshlltq_x_n_s8): Remove.
39620         (__arm_vshlltq_x_n_s16): Remove.
39621         (__arm_vshlltq_x_n_u8): Remove.
39622         (__arm_vshlltq_x_n_u16): Remove.
39623         (__arm_vshlltq): Remove.
39624         (__arm_vshllbq): Remove.
39625         (__arm_vshllbq_m): Remove.
39626         (__arm_vshlltq_m): Remove.
39627         (__arm_vshllbq_x): Remove.
39628         (__arm_vshlltq_x): Remove.
39630 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39632         * config/arm/iterators.md (mve_insn): Add vshllb, vshllt.
39633         (VSHLLBQ_N, VSHLLTQ_N): Remove.
39634         (VSHLLxQ_N): New.
39635         (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
39636         (VSHLLxQ_M_N): New.
39637         * config/arm/mve.md (mve_vshllbq_n_<supf><mode>)
39638         (mve_vshlltq_n_<supf><mode>): Merge into ...
39639         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
39640         (mve_vshllbq_m_n_<supf><mode>, mve_vshlltq_m_n_<supf><mode>):
39641         Merge into ...
39642         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
39644 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39646         * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
39647         * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
39649 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39651         * config/arm/arm-mve-builtins-base.cc (vmovnbq, vmovntq, vqmovnbq)
39652         (vqmovntq, vqmovunbq, vqmovuntq): New.
39653         * config/arm/arm-mve-builtins-base.def (vmovnbq, vmovntq)
39654         (vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq): New.
39655         * config/arm/arm-mve-builtins-base.h (vmovnbq, vmovntq, vqmovnbq)
39656         (vqmovntq, vqmovunbq, vqmovuntq): New.
39657         * config/arm/arm-mve-builtins.cc
39658         (function_instance::has_inactive_argument): Handle vmovnbq,
39659         vmovntq, vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq.
39660         * config/arm/arm_mve.h (vqmovntq): Remove.
39661         (vqmovnbq): Remove.
39662         (vqmovnbq_m): Remove.
39663         (vqmovntq_m): Remove.
39664         (vqmovntq_u16): Remove.
39665         (vqmovnbq_u16): Remove.
39666         (vqmovntq_s16): Remove.
39667         (vqmovnbq_s16): Remove.
39668         (vqmovntq_u32): Remove.
39669         (vqmovnbq_u32): Remove.
39670         (vqmovntq_s32): Remove.
39671         (vqmovnbq_s32): Remove.
39672         (vqmovnbq_m_s16): Remove.
39673         (vqmovntq_m_s16): Remove.
39674         (vqmovnbq_m_u16): Remove.
39675         (vqmovntq_m_u16): Remove.
39676         (vqmovnbq_m_s32): Remove.
39677         (vqmovntq_m_s32): Remove.
39678         (vqmovnbq_m_u32): Remove.
39679         (vqmovntq_m_u32): Remove.
39680         (__arm_vqmovntq_u16): Remove.
39681         (__arm_vqmovnbq_u16): Remove.
39682         (__arm_vqmovntq_s16): Remove.
39683         (__arm_vqmovnbq_s16): Remove.
39684         (__arm_vqmovntq_u32): Remove.
39685         (__arm_vqmovnbq_u32): Remove.
39686         (__arm_vqmovntq_s32): Remove.
39687         (__arm_vqmovnbq_s32): Remove.
39688         (__arm_vqmovnbq_m_s16): Remove.
39689         (__arm_vqmovntq_m_s16): Remove.
39690         (__arm_vqmovnbq_m_u16): Remove.
39691         (__arm_vqmovntq_m_u16): Remove.
39692         (__arm_vqmovnbq_m_s32): Remove.
39693         (__arm_vqmovntq_m_s32): Remove.
39694         (__arm_vqmovnbq_m_u32): Remove.
39695         (__arm_vqmovntq_m_u32): Remove.
39696         (__arm_vqmovntq): Remove.
39697         (__arm_vqmovnbq): Remove.
39698         (__arm_vqmovnbq_m): Remove.
39699         (__arm_vqmovntq_m): Remove.
39700         (vmovntq): Remove.
39701         (vmovnbq): Remove.
39702         (vmovnbq_m): Remove.
39703         (vmovntq_m): Remove.
39704         (vmovntq_u16): Remove.
39705         (vmovnbq_u16): Remove.
39706         (vmovntq_s16): Remove.
39707         (vmovnbq_s16): Remove.
39708         (vmovntq_u32): Remove.
39709         (vmovnbq_u32): Remove.
39710         (vmovntq_s32): Remove.
39711         (vmovnbq_s32): Remove.
39712         (vmovnbq_m_s16): Remove.
39713         (vmovntq_m_s16): Remove.
39714         (vmovnbq_m_u16): Remove.
39715         (vmovntq_m_u16): Remove.
39716         (vmovnbq_m_s32): Remove.
39717         (vmovntq_m_s32): Remove.
39718         (vmovnbq_m_u32): Remove.
39719         (vmovntq_m_u32): Remove.
39720         (__arm_vmovntq_u16): Remove.
39721         (__arm_vmovnbq_u16): Remove.
39722         (__arm_vmovntq_s16): Remove.
39723         (__arm_vmovnbq_s16): Remove.
39724         (__arm_vmovntq_u32): Remove.
39725         (__arm_vmovnbq_u32): Remove.
39726         (__arm_vmovntq_s32): Remove.
39727         (__arm_vmovnbq_s32): Remove.
39728         (__arm_vmovnbq_m_s16): Remove.
39729         (__arm_vmovntq_m_s16): Remove.
39730         (__arm_vmovnbq_m_u16): Remove.
39731         (__arm_vmovntq_m_u16): Remove.
39732         (__arm_vmovnbq_m_s32): Remove.
39733         (__arm_vmovntq_m_s32): Remove.
39734         (__arm_vmovnbq_m_u32): Remove.
39735         (__arm_vmovntq_m_u32): Remove.
39736         (__arm_vmovntq): Remove.
39737         (__arm_vmovnbq): Remove.
39738         (__arm_vmovnbq_m): Remove.
39739         (__arm_vmovntq_m): Remove.
39740         (vqmovuntq): Remove.
39741         (vqmovunbq): Remove.
39742         (vqmovunbq_m): Remove.
39743         (vqmovuntq_m): Remove.
39744         (vqmovuntq_s16): Remove.
39745         (vqmovunbq_s16): Remove.
39746         (vqmovuntq_s32): Remove.
39747         (vqmovunbq_s32): Remove.
39748         (vqmovunbq_m_s16): Remove.
39749         (vqmovuntq_m_s16): Remove.
39750         (vqmovunbq_m_s32): Remove.
39751         (vqmovuntq_m_s32): Remove.
39752         (__arm_vqmovuntq_s16): Remove.
39753         (__arm_vqmovunbq_s16): Remove.
39754         (__arm_vqmovuntq_s32): Remove.
39755         (__arm_vqmovunbq_s32): Remove.
39756         (__arm_vqmovunbq_m_s16): Remove.
39757         (__arm_vqmovuntq_m_s16): Remove.
39758         (__arm_vqmovunbq_m_s32): Remove.
39759         (__arm_vqmovuntq_m_s32): Remove.
39760         (__arm_vqmovuntq): Remove.
39761         (__arm_vqmovunbq): Remove.
39762         (__arm_vqmovunbq_m): Remove.
39763         (__arm_vqmovuntq_m): Remove.
39765 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39767         * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New.
39768         (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb,
39769         vqmovunt.
39770         (isu): Likewise.
39771         (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S,
39772         VQMOVUNTQ_S.
39773         * config/arm/mve.md (mve_vmovnbq_<supf><mode>)
39774         (mve_vmovntq_<supf><mode>, mve_vqmovnbq_<supf><mode>)
39775         (mve_vqmovntq_<supf><mode>, mve_vqmovunbq_s<mode>)
39776         (mve_vqmovuntq_s<mode>): Merge into ...
39777         (@mve_<mve_insn>q_<supf><mode>): ... this.
39778         (mve_vmovnbq_m_<supf><mode>, mve_vmovntq_m_<supf><mode>)
39779         (mve_vqmovnbq_m_<supf><mode>, mve_vqmovntq_m_<supf><mode>)
39780         (mve_vqmovunbq_m_s<mode>, mve_vqmovuntq_m_s<mode>): Merge into ...
39781         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
39783 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39785         * config/arm/arm-mve-builtins-shapes.cc (binary_move_narrow): New.
39786         (binary_move_narrow_unsigned): New.
39787         * config/arm/arm-mve-builtins-shapes.h (binary_move_narrow): New.
39788         (binary_move_narrow_unsigned): New.
39790 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39792         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_F): New.
39793         (vrndaq, vrndmq, vrndnq, vrndpq, vrndq, vrndxq): New.
39794         * config/arm/arm-mve-builtins-base.def (vrndaq, vrndmq, vrndnq)
39795         (vrndpq, vrndq, vrndxq): New.
39796         * config/arm/arm-mve-builtins-base.h (vrndaq, vrndmq, vrndnq)
39797         (vrndpq, vrndq, vrndxq): New.
39798         * config/arm/arm_mve.h (vrndxq): Remove.
39799         (vrndq): Remove.
39800         (vrndpq): Remove.
39801         (vrndnq): Remove.
39802         (vrndmq): Remove.
39803         (vrndaq): Remove.
39804         (vrndaq_m): Remove.
39805         (vrndmq_m): Remove.
39806         (vrndnq_m): Remove.
39807         (vrndpq_m): Remove.
39808         (vrndq_m): Remove.
39809         (vrndxq_m): Remove.
39810         (vrndq_x): Remove.
39811         (vrndnq_x): Remove.
39812         (vrndmq_x): Remove.
39813         (vrndpq_x): Remove.
39814         (vrndaq_x): Remove.
39815         (vrndxq_x): Remove.
39816         (vrndxq_f16): Remove.
39817         (vrndxq_f32): Remove.
39818         (vrndq_f16): Remove.
39819         (vrndq_f32): Remove.
39820         (vrndpq_f16): Remove.
39821         (vrndpq_f32): Remove.
39822         (vrndnq_f16): Remove.
39823         (vrndnq_f32): Remove.
39824         (vrndmq_f16): Remove.
39825         (vrndmq_f32): Remove.
39826         (vrndaq_f16): Remove.
39827         (vrndaq_f32): Remove.
39828         (vrndaq_m_f16): Remove.
39829         (vrndmq_m_f16): Remove.
39830         (vrndnq_m_f16): Remove.
39831         (vrndpq_m_f16): Remove.
39832         (vrndq_m_f16): Remove.
39833         (vrndxq_m_f16): Remove.
39834         (vrndaq_m_f32): Remove.
39835         (vrndmq_m_f32): Remove.
39836         (vrndnq_m_f32): Remove.
39837         (vrndpq_m_f32): Remove.
39838         (vrndq_m_f32): Remove.
39839         (vrndxq_m_f32): Remove.
39840         (vrndq_x_f16): Remove.
39841         (vrndq_x_f32): Remove.
39842         (vrndnq_x_f16): Remove.
39843         (vrndnq_x_f32): Remove.
39844         (vrndmq_x_f16): Remove.
39845         (vrndmq_x_f32): Remove.
39846         (vrndpq_x_f16): Remove.
39847         (vrndpq_x_f32): Remove.
39848         (vrndaq_x_f16): Remove.
39849         (vrndaq_x_f32): Remove.
39850         (vrndxq_x_f16): Remove.
39851         (vrndxq_x_f32): Remove.
39852         (__arm_vrndxq_f16): Remove.
39853         (__arm_vrndxq_f32): Remove.
39854         (__arm_vrndq_f16): Remove.
39855         (__arm_vrndq_f32): Remove.
39856         (__arm_vrndpq_f16): Remove.
39857         (__arm_vrndpq_f32): Remove.
39858         (__arm_vrndnq_f16): Remove.
39859         (__arm_vrndnq_f32): Remove.
39860         (__arm_vrndmq_f16): Remove.
39861         (__arm_vrndmq_f32): Remove.
39862         (__arm_vrndaq_f16): Remove.
39863         (__arm_vrndaq_f32): Remove.
39864         (__arm_vrndaq_m_f16): Remove.
39865         (__arm_vrndmq_m_f16): Remove.
39866         (__arm_vrndnq_m_f16): Remove.
39867         (__arm_vrndpq_m_f16): Remove.
39868         (__arm_vrndq_m_f16): Remove.
39869         (__arm_vrndxq_m_f16): Remove.
39870         (__arm_vrndaq_m_f32): Remove.
39871         (__arm_vrndmq_m_f32): Remove.
39872         (__arm_vrndnq_m_f32): Remove.
39873         (__arm_vrndpq_m_f32): Remove.
39874         (__arm_vrndq_m_f32): Remove.
39875         (__arm_vrndxq_m_f32): Remove.
39876         (__arm_vrndq_x_f16): Remove.
39877         (__arm_vrndq_x_f32): Remove.
39878         (__arm_vrndnq_x_f16): Remove.
39879         (__arm_vrndnq_x_f32): Remove.
39880         (__arm_vrndmq_x_f16): Remove.
39881         (__arm_vrndmq_x_f32): Remove.
39882         (__arm_vrndpq_x_f16): Remove.
39883         (__arm_vrndpq_x_f32): Remove.
39884         (__arm_vrndaq_x_f16): Remove.
39885         (__arm_vrndaq_x_f32): Remove.
39886         (__arm_vrndxq_x_f16): Remove.
39887         (__arm_vrndxq_x_f32): Remove.
39888         (__arm_vrndxq): Remove.
39889         (__arm_vrndq): Remove.
39890         (__arm_vrndpq): Remove.
39891         (__arm_vrndnq): Remove.
39892         (__arm_vrndmq): Remove.
39893         (__arm_vrndaq): Remove.
39894         (__arm_vrndaq_m): Remove.
39895         (__arm_vrndmq_m): Remove.
39896         (__arm_vrndnq_m): Remove.
39897         (__arm_vrndpq_m): Remove.
39898         (__arm_vrndq_m): Remove.
39899         (__arm_vrndxq_m): Remove.
39900         (__arm_vrndq_x): Remove.
39901         (__arm_vrndnq_x): Remove.
39902         (__arm_vrndmq_x): Remove.
39903         (__arm_vrndpq_x): Remove.
39904         (__arm_vrndaq_x): Remove.
39905         (__arm_vrndxq_x): Remove.
39907 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
39909         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N_NO_U_F): New.
39910         (vabsq, vnegq, vclsq, vclzq, vqabsq, vqnegq): New.
39911         * config/arm/arm-mve-builtins-base.def (vabsq, vnegq, vclsq)
39912         (vclzq, vqabsq, vqnegq): New.
39913         * config/arm/arm-mve-builtins-base.h (vabsq, vnegq, vclsq, vclzq)
39914         (vqabsq, vqnegq): New.
39915         * config/arm/arm_mve.h (vabsq): Remove.
39916         (vabsq_m): Remove.
39917         (vabsq_x): Remove.
39918         (vabsq_f16): Remove.
39919         (vabsq_f32): Remove.
39920         (vabsq_s8): Remove.
39921         (vabsq_s16): Remove.
39922         (vabsq_s32): Remove.
39923         (vabsq_m_s8): Remove.
39924         (vabsq_m_s16): Remove.
39925         (vabsq_m_s32): Remove.
39926         (vabsq_m_f16): Remove.
39927         (vabsq_m_f32): Remove.
39928         (vabsq_x_s8): Remove.
39929         (vabsq_x_s16): Remove.
39930         (vabsq_x_s32): Remove.
39931         (vabsq_x_f16): Remove.
39932         (vabsq_x_f32): Remove.
39933         (__arm_vabsq_s8): Remove.
39934         (__arm_vabsq_s16): Remove.
39935         (__arm_vabsq_s32): Remove.
39936         (__arm_vabsq_m_s8): Remove.
39937         (__arm_vabsq_m_s16): Remove.
39938         (__arm_vabsq_m_s32): Remove.
39939         (__arm_vabsq_x_s8): Remove.
39940         (__arm_vabsq_x_s16): Remove.
39941         (__arm_vabsq_x_s32): Remove.
39942         (__arm_vabsq_f16): Remove.
39943         (__arm_vabsq_f32): Remove.
39944         (__arm_vabsq_m_f16): Remove.
39945         (__arm_vabsq_m_f32): Remove.
39946         (__arm_vabsq_x_f16): Remove.
39947         (__arm_vabsq_x_f32): Remove.
39948         (__arm_vabsq): Remove.
39949         (__arm_vabsq_m): Remove.
39950         (__arm_vabsq_x): Remove.
39951         (vnegq): Remove.
39952         (vnegq_m): Remove.
39953         (vnegq_x): Remove.
39954         (vnegq_f16): Remove.
39955         (vnegq_f32): Remove.
39956         (vnegq_s8): Remove.
39957         (vnegq_s16): Remove.
39958         (vnegq_s32): Remove.
39959         (vnegq_m_s8): Remove.
39960         (vnegq_m_s16): Remove.
39961         (vnegq_m_s32): Remove.
39962         (vnegq_m_f16): Remove.
39963         (vnegq_m_f32): Remove.
39964         (vnegq_x_s8): Remove.
39965         (vnegq_x_s16): Remove.
39966         (vnegq_x_s32): Remove.
39967         (vnegq_x_f16): Remove.
39968         (vnegq_x_f32): Remove.
39969         (__arm_vnegq_s8): Remove.
39970         (__arm_vnegq_s16): Remove.
39971         (__arm_vnegq_s32): Remove.
39972         (__arm_vnegq_m_s8): Remove.
39973         (__arm_vnegq_m_s16): Remove.
39974         (__arm_vnegq_m_s32): Remove.
39975         (__arm_vnegq_x_s8): Remove.
39976         (__arm_vnegq_x_s16): Remove.
39977         (__arm_vnegq_x_s32): Remove.
39978         (__arm_vnegq_f16): Remove.
39979         (__arm_vnegq_f32): Remove.
39980         (__arm_vnegq_m_f16): Remove.
39981         (__arm_vnegq_m_f32): Remove.
39982         (__arm_vnegq_x_f16): Remove.
39983         (__arm_vnegq_x_f32): Remove.
39984         (__arm_vnegq): Remove.
39985         (__arm_vnegq_m): Remove.
39986         (__arm_vnegq_x): Remove.
39987         (vclsq): Remove.
39988         (vclsq_m): Remove.
39989         (vclsq_x): Remove.
39990         (vclsq_s8): Remove.
39991         (vclsq_s16): Remove.
39992         (vclsq_s32): Remove.
39993         (vclsq_m_s8): Remove.
39994         (vclsq_m_s16): Remove.
39995         (vclsq_m_s32): Remove.
39996         (vclsq_x_s8): Remove.
39997         (vclsq_x_s16): Remove.
39998         (vclsq_x_s32): Remove.
39999         (__arm_vclsq_s8): Remove.
40000         (__arm_vclsq_s16): Remove.
40001         (__arm_vclsq_s32): Remove.
40002         (__arm_vclsq_m_s8): Remove.
40003         (__arm_vclsq_m_s16): Remove.
40004         (__arm_vclsq_m_s32): Remove.
40005         (__arm_vclsq_x_s8): Remove.
40006         (__arm_vclsq_x_s16): Remove.
40007         (__arm_vclsq_x_s32): Remove.
40008         (__arm_vclsq): Remove.
40009         (__arm_vclsq_m): Remove.
40010         (__arm_vclsq_x): Remove.
40011         (vclzq): Remove.
40012         (vclzq_m): Remove.
40013         (vclzq_x): Remove.
40014         (vclzq_s8): Remove.
40015         (vclzq_s16): Remove.
40016         (vclzq_s32): Remove.
40017         (vclzq_u8): Remove.
40018         (vclzq_u16): Remove.
40019         (vclzq_u32): Remove.
40020         (vclzq_m_u8): Remove.
40021         (vclzq_m_s8): Remove.
40022         (vclzq_m_u16): Remove.
40023         (vclzq_m_s16): Remove.
40024         (vclzq_m_u32): Remove.
40025         (vclzq_m_s32): Remove.
40026         (vclzq_x_s8): Remove.
40027         (vclzq_x_s16): Remove.
40028         (vclzq_x_s32): Remove.
40029         (vclzq_x_u8): Remove.
40030         (vclzq_x_u16): Remove.
40031         (vclzq_x_u32): Remove.
40032         (__arm_vclzq_s8): Remove.
40033         (__arm_vclzq_s16): Remove.
40034         (__arm_vclzq_s32): Remove.
40035         (__arm_vclzq_u8): Remove.
40036         (__arm_vclzq_u16): Remove.
40037         (__arm_vclzq_u32): Remove.
40038         (__arm_vclzq_m_u8): Remove.
40039         (__arm_vclzq_m_s8): Remove.
40040         (__arm_vclzq_m_u16): Remove.
40041         (__arm_vclzq_m_s16): Remove.
40042         (__arm_vclzq_m_u32): Remove.
40043         (__arm_vclzq_m_s32): Remove.
40044         (__arm_vclzq_x_s8): Remove.
40045         (__arm_vclzq_x_s16): Remove.
40046         (__arm_vclzq_x_s32): Remove.
40047         (__arm_vclzq_x_u8): Remove.
40048         (__arm_vclzq_x_u16): Remove.
40049         (__arm_vclzq_x_u32): Remove.
40050         (__arm_vclzq): Remove.
40051         (__arm_vclzq_m): Remove.
40052         (__arm_vclzq_x): Remove.
40053         (vqabsq): Remove.
40054         (vqnegq): Remove.
40055         (vqnegq_m): Remove.
40056         (vqabsq_m): Remove.
40057         (vqabsq_s8): Remove.
40058         (vqabsq_s16): Remove.
40059         (vqabsq_s32): Remove.
40060         (vqnegq_s8): Remove.
40061         (vqnegq_s16): Remove.
40062         (vqnegq_s32): Remove.
40063         (vqnegq_m_s8): Remove.
40064         (vqabsq_m_s8): Remove.
40065         (vqnegq_m_s16): Remove.
40066         (vqabsq_m_s16): Remove.
40067         (vqnegq_m_s32): Remove.
40068         (vqabsq_m_s32): Remove.
40069         (__arm_vqabsq_s8): Remove.
40070         (__arm_vqabsq_s16): Remove.
40071         (__arm_vqabsq_s32): Remove.
40072         (__arm_vqnegq_s8): Remove.
40073         (__arm_vqnegq_s16): Remove.
40074         (__arm_vqnegq_s32): Remove.
40075         (__arm_vqnegq_m_s8): Remove.
40076         (__arm_vqabsq_m_s8): Remove.
40077         (__arm_vqnegq_m_s16): Remove.
40078         (__arm_vqabsq_m_s16): Remove.
40079         (__arm_vqnegq_m_s32): Remove.
40080         (__arm_vqabsq_m_s32): Remove.
40081         (__arm_vqabsq): Remove.
40082         (__arm_vqnegq): Remove.
40083         (__arm_vqnegq_m): Remove.
40084         (__arm_vqabsq_m): Remove.
40086 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
40088         * config/arm/iterators.md (MVE_INT_M_UNARY, MVE_INT_UNARY)
40089         (MVE_FP_UNARY, MVE_FP_M_UNARY): New.
40090         (mve_insn): Add vabs, vcls, vclz, vneg, vqabs, vqneg, vrnda,
40091         vrndm, vrndn, vrndp, vrnd, vrndx.
40092         (isu): Add VABSQ_M_S, VCLSQ_M_S, VCLZQ_M_S, VCLZQ_M_U, VNEGQ_M_S,
40093         VQABSQ_M_S, VQNEGQ_M_S.
40094         (mve_mnemo): New.
40095         * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrndxq_f<mode>)
40096         (mve_vrndq_f<mode>, mve_vrndpq_f<mode>, mve_vrndnq_f<mode>)
40097         (mve_vrndmq_f<mode>, mve_vrndaq_f<mode>): Merge into ...
40098         (@mve_<mve_insn>q_f<mode>): ... this.
40099         (mve_vnegq_f<mode>, mve_vabsq_f<mode>): Merge into ...
40100         (mve_v<absneg_str>q_f<mode>): ... this.
40101         (mve_vnegq_s<mode>, mve_vabsq_s<mode>): Merge into ...
40102         (mve_v<absneg_str>q_s<mode>): ... this.
40103         (mve_vclsq_s<mode>, mve_vqnegq_s<mode>, mve_vqabsq_s<mode>): Merge into ...
40104         (@mve_<mve_insn>q_<supf><mode>): ... this.
40105         (mve_vabsq_m_s<mode>, mve_vclsq_m_s<mode>)
40106         (mve_vclzq_m_<supf><mode>, mve_vnegq_m_s<mode>)
40107         (mve_vqabsq_m_s<mode>, mve_vqnegq_m_s<mode>): Merge into ...
40108         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
40109         (mve_vabsq_m_f<mode>, mve_vnegq_m_f<mode>, mve_vrndaq_m_f<mode>)
40110         (mve_vrndmq_m_f<mode>, mve_vrndnq_m_f<mode>, mve_vrndpq_m_f<mode>)
40111         (mve_vrndxq_m_f<mode>): Merge into ...
40112         (@mve_<mve_insn>q_m_f<mode>): ... this.
40114 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
40116         * config/arm/arm-mve-builtins-shapes.cc (unary): New.
40117         * config/arm/arm-mve-builtins-shapes.h (unary): New.
40119 2023-05-09  Jakub Jelinek  <jakub@redhat.com>
40121         * mux-utils.h: Fix comment typo, avoides -> avoids.
40123 2023-05-09  Jakub Jelinek  <jakub@redhat.com>
40125         PR tree-optimization/109778
40126         * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on
40127         wi::zext (x, width) rather than x if width != precision, rather
40128         than using wi::zext (right, width) after the shift.
40129         * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results
40130         of wi::lrotate or wi::rrotate.
40132 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
40134         * genmatch.cc (get_out_file): Make static and rename to ...
40135         (choose_output): ... this. Reimplement. Update all uses ...
40136         (decision_tree::gen): ... here and ...
40137         (main): ... here.
40139 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
40141         * genmatch.cc (showUsage): Reimplement as ...
40142         (usage): ...this.  Adjust all uses.
40143         (main): Print usage when no arguments.  Add missing 'return 1'.
40145 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
40147         * genmatch.cc (header_file): Make static.
40148         (emit_func): Rename to...
40149         (fp_decl): ... this.  Adjust all uses.
40150         (fp_decl_done): New function.  Use it...
40151         (decision_tree::gen): ... here and...
40152         (write_predicate): ... here.
40153         (main): Adjust.
40155 2023-05-09  Richard Sandiford  <richard.sandiford@arm.com>
40157         * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
40158         earlyclobbers.
40160 2023-05-08  Roger Sayle  <roger@nextmovesoftware.com>
40161             Uros Bizjak  <ubizjak@gmail.com>
40163         * config/i386/i386.md (any_or_plus): Move definition earlier.
40164         (*insvti_highpart_1): New define_insn_and_split to overwrite
40165         (insv) the highpart of a TImode register/memory.
40167 2023-05-08  Eugene Rozenfeld  <erozen@microsoft.com>
40169         * auto-profile.cc (auto_profile): Check todo from early_inline
40170         to see if cleanup_tree_vfg needs to be called.
40171         (early_inline): Return todo from early_inliner.
40173 2023-05-08  Kito Cheng  <kito.cheng@sifive.com>
40175         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info):
40176         New.
40177         (pass_vsetvl::get_block_info): New.
40178         (pass_vsetvl::update_vector_info): New.
40179         (pass_vsetvl::simple_vsetvl): Use get_vector_info.
40180         (pass_vsetvl::compute_local_backward_infos): Ditto.
40181         (pass_vsetvl::transfer_before): Ditto.
40182         (pass_vsetvl::transfer_after): Ditto.
40183         (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
40184         (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
40185         (pass_vsetvl::cleanup_insns): Ditto.
40186         (pass_vsetvl::compute_local_backward_infos): Use
40187         update_vector_info.
40189 2023-05-08  Jeff Law  <jlaw@ventanamicro>
40191         * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
40193 2023-05-08  Richard Biener  <rguenther@suse.de>
40194             Michael Meissner  <meissner@linux.ibm.com>
40196         PR middle-end/108623
40197         * tree-core.h (tree_type_common): Bump up precision field to 16 bits.
40198         Align bit fields > 1 bit to at least an 8-bit boundary.
40200 2023-05-08  Andrew Pinski  <apinski@marvell.com>
40202         PR tree-optimization/109424
40203         PR tree-optimization/59424
40204         * tree-ssa-phiopt.cc (factor_out_conditional_conversion): Rename to ...
40205         (factor_out_conditional_operation): This and add support for all unary
40206         operations.
40207         (pass_phiopt::execute): Update call to factor_out_conditional_conversion
40208         to call factor_out_conditional_operation instead.
40210 2023-05-08  Andrew Pinski  <apinski@marvell.com>
40212         * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
40213         over factor_out_conditional_conversion.
40215 2023-05-08  Andrew Pinski  <apinski@marvell.com>
40217         PR tree-optimization/49959
40218         PR tree-optimization/103771
40219         * tree-ssa-phiopt.cc (pass_phiopt::execute): Support
40220         Diamond shapped bb form for factor_out_conditional_conversion.
40222 2023-05-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
40224         * config/riscv/autovec.md (movmisalign<mode>): New pattern.
40225         * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): Delete.
40226         (riscv_vector_get_mask_mode): Ditto.
40227         (get_mask_policy_no_pred): Ditto.
40228         (get_tail_policy_no_pred): Ditto.
40229         (get_mask_mode): New function.
40230         * config/riscv/riscv-v.cc (get_mask_policy_no_pred): Delete.
40231         (get_tail_policy_no_pred): Ditto.
40232         (riscv_vector_mask_mode_p): Ditto.
40233         (riscv_vector_get_mask_mode): Ditto.
40234         (get_mask_mode): New function.
40235         * config/riscv/riscv-vector-builtins.cc (use_real_merge_p): Remove
40236         global extern.
40237         (get_tail_policy_for_pred): Ditto.
40238         * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred): Ditto.
40239         (get_mask_policy_for_pred): Ditto
40240         * config/riscv/riscv.cc (riscv_get_mask_mode): Refine codes.
40242 2023-05-08  Kito Cheng  <kito.cheng@sifive.com>
40244         * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi): New.
40245         (riscv_select_multilib): New.
40246         (riscv_compute_multilib): Extract logic to riscv_select_multilib and
40247         also handle select_by_abi.
40248         * config/riscv/elf.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Change it
40249         to select_by_abi_arch_cmodel from 1.
40250         * config/riscv/linux.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Define.
40251         * config/riscv/riscv-opts.h (enum riscv_multilib_select_kind): New.
40253 2023-05-08  Alexander Monakov  <amonakov@ispras.ru>
40255         * Makefile.in: (gimple-match-head.o-warn): Remove.
40256         (GIMPLE_MATCH_PD_SEQ_SRC): Do not depend on
40257         gimple-match-exports.cc.
40258         (gimple-match-auto.h): Only depend on s-gimple-match.
40259         (generic-match-auto.h): Likewise.
40261 2023-05-08  Andrew Pinski  <apinski@marvell.com>
40263         PR tree-optimization/109691
40264         * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
40265         argument.
40266         If the removed statement can throw, have need_eh_cleanup
40267         include the bb of that statement.
40268         * tree-ssa-dce.h (simple_dce_from_worklist): Update declaration.
40269         * tree-ssa-propagate.cc (struct prop_stats_d): Remove
40270         num_dce.
40271         (substitute_and_fold_dom_walker::substitute_and_fold_dom_walker):
40272         Initialize dceworklist instead of stmts_to_remove.
40273         (substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker):
40274         Destore dceworklist instead of stmts_to_remove.
40275         (substitute_and_fold_dom_walker::before_dom_children):
40276         Set dceworklist instead of adding to stmts_to_remove.
40277         (substitute_and_fold_engine::substitute_and_fold):
40278         Call simple_dce_from_worklist instead of poping
40279         from the list.
40280         Don't update the stat on removal statements.
40282 2023-05-07  Andrew Pinski  <apinski@marvell.com>
40284         PR target/109762
40285         * config/aarch64/aarch64-builtins.cc (aarch64_simd_switcher::aarch64_simd_switcher):
40286         Change argument type to aarch64_feature_flags.
40287         * config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Change
40288         constructor argument type to aarch64_feature_flags.
40289         Change m_old_asm_isa_flags to be aarch64_feature_flags.
40291 2023-05-07  Jiufu Guo  <guojiufu@linux.ibm.com>
40293         * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
40294         more parallel code if can_create_pseudo_p.
40296 2023-05-07  Roger Sayle  <roger@nextmovesoftware.com>
40298         PR target/43644
40299         * lower-subreg.cc (resolve_simple_move): Don't emit a clobber
40300         immediately before moving a multi-word register by parts.
40302 2023-05-06  Jeff Law  <jlaw@ventanamicro>
40304         * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
40306 2023-05-06  Michael Collison  <collison@rivosinc.com>
40308         * tree-vect-slp.cc (can_duplicate_and_interleave_p):
40309         Check that GET_MODE_NUNITS is a multiple of 2.
40311 2023-05-06  Michael Collison  <collison@rivosinc.com>
40313         * config/riscv/riscv.cc
40314         (riscv_estimated_poly_value): Implement
40315         TARGET_ESTIMATED_POLY_VALUE.
40316         (riscv_preferred_simd_mode): Implement
40317         TARGET_VECTORIZE_PREFERRED_SIMD_MODE.
40318         (riscv_get_mask_mode): Implement TARGET_VECTORIZE_GET_MASK_MODE.
40319         (riscv_empty_mask_is_expensive): Implement
40320         TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE.
40321         (riscv_vectorize_create_costs): Implement
40322         TARGET_VECTORIZE_CREATE_COSTS.
40323         (riscv_support_vector_misalignment): Implement
40324         TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT.
40325         (TARGET_ESTIMATED_POLY_VALUE): Register target macro.
40326         (TARGET_VECTORIZE_GET_MASK_MODE): Ditto.
40327         (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Ditto.
40328         (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
40330 2023-05-06  Jeff Law  <jlaw@ventanamicro>
40332         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
40333         duplicate definition.
40335 2023-05-06  Michael Collison  <collison@rivosinc.com>
40337         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): New function.
40338         (riscv_vector_preferred_simd_mode): Ditto.
40339         (get_mask_policy_no_pred): Ditto.
40340         (get_tail_policy_no_pred): Ditto.
40341         (riscv_vector_mask_mode_p): Ditto.
40342         (riscv_vector_get_mask_mode): Ditto.
40344 2023-05-06  Michael Collison  <collison@rivosinc.com>
40346         * config/riscv/riscv-vector-builtins.cc (get_tail_policy_for_pred):
40347         Remove static declaration to to make externally visible.
40348         (get_mask_policy_for_pred): Ditto.
40349         * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred):
40350         New external declaration.
40351         (get_mask_policy_for_pred): Ditto.
40353 2023-05-06  Michael Collison  <collison@rivosinc.com>
40355         * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): New.
40356         (riscv_vector_get_mask_mode): Ditto.
40357         (get_mask_policy_no_pred): Ditto.
40358         (get_tail_policy_no_pred): Ditto.
40360 2023-05-06  Xi Ruoyao  <xry111@xry111.site>
40362         * config/loongarch/loongarch.h (struct machine_function): Add
40363         reg_is_wrapped_separately array for register wrapping
40364         information.
40365         * config/loongarch/loongarch.cc
40366         (loongarch_get_separate_components): New function.
40367         (loongarch_components_for_bb): Likewise.
40368         (loongarch_disqualify_components): Likewise.
40369         (loongarch_process_components): Likewise.
40370         (loongarch_emit_prologue_components): Likewise.
40371         (loongarch_emit_epilogue_components): Likewise.
40372         (loongarch_set_handled_components): Likewise.
40373         (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define.
40374         (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise.
40375         (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise.
40376         (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise.
40377         (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise.
40378         (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise.
40379         (loongarch_for_each_saved_reg): Skip registers that are wrapped
40380         separately.
40382 2023-05-06  Xi Ruoyao  <xry111@xry111.site>
40384         PR other/109522
40385         * Makefile.in (s-macro_list): Pass -nostdinc to
40386         $(GCC_FOR_TARGET).
40388 2023-05-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
40390         * config/riscv/riscv-protos.h (preferred_simd_mode): New function.
40391         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto.
40392         (preferred_simd_mode): Ditto.
40393         * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function arg.
40394         (riscv_convert_vector_bits): Adjust for RVV auto-vectorization.
40395         (riscv_preferred_simd_mode): New function.
40396         (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): New target hook support.
40397         * config/riscv/vector.md: Add autovec.md.
40398         * config/riscv/autovec.md: New file.
40400 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
40402         * real.h (dconst_pi): Define.
40403         (dconst_e_ptr): Formatting fix.
40404         (dconst_pi_ptr): Declare.
40405         * real.cc (dconst_pi_ptr): New function.
40406         * gimple-range-op.cc (cfn_sincos::fold_range): Intersect the generic
40407         boundaries range with range computed from sin/cos of the particular
40408         bounds if the argument range is shorter than 2*pi.
40409         (cfn_sincos::op1_range): Take bulps into account when determining
40410         which result ranges are always invalid or behave like known NAN.
40412 2023-05-06  Aldy Hernandez  <aldyh@redhat.com>
40414         * gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not
40415         pass type to vrange_storage::equal_p.
40416         * value-range-storage.cc (vrange_storage::equal_p): Remove type.
40417         (irange_storage::equal_p): Same.
40418         (frange_storage::equal_p): Same.
40419         * value-range-storage.h (class frange_storage): Same.
40421 2023-05-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
40423         PR target/109748
40424         * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it.
40425         (pass_vsetvl::local_eliminate_vsetvl_insn): New function.
40427 2023-05-06  liuhongt  <hongtao.liu@intel.com>
40429         * combine.cc (maybe_swap_commutative_operands): Canonicalize
40430         vec_merge when mask is constant.
40431         * doc/md.texi: Document vec_merge canonicalization.
40433 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
40435         * value-range.h (frange_arithmetic): Declare.
40436         * range-op-float.cc (frange_arithmetic): No longer static.
40437         * gimple-range-op.cc (frange_mpfr_arg1): New function.
40438         (cfn_sqrt::fold_range): Intersect the generic boundaries range
40439         with range computed from sqrt of the particular bounds.
40440         (cfn_sqrt::op1_range): Intersect the generic boundaries range
40441         with range computed from squared particular bounds.
40443 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
40445         * Makefile.in (check_p_numbers): Rename to one_to_9999, move
40446         earlier with helper variables also renamed.
40447         (MATCH_SPLUT_SEQ): Use $(wordlist 1,$(NUM_MATCH_SPLITS),$(one_to_9999))
40448         instead of $(shell seq 1 $(NUM_MATCH_SPLITS)).
40449         (check_p_subdirs): Use $(one_to_9999) instead of $(check_p_numbers).
40451 2023-05-06  Hans-Peter Nilsson  <hp@axis.com>
40453         * config/cris/cris.md (splitop): Add PLUS.
40454         * config/cris/cris.cc (cris_split_constant): Also handle
40455         PLUS when a split into two insns may be useful.
40457 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
40459         * config/cris/cris.md (movandsplit1): New define_peephole2.
40461 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
40463         * config/cris/cris.md (lsrandsplit1): New define_peephole2.
40465 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
40467         * doc/md.texi (define_peephole2): Document order of scanning.
40469 2023-05-05  Pan Li  <pan2.li@intel.com>
40470             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
40472         * config/riscv/vector.md: Allow const as the operand of RVV
40473         indexed load/store.
40475 2023-05-05  Pan Li  <pan2.li@intel.com>
40477         * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
40478         consumed by simplify_rtx.
40480 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
40482         * config/arm/arm-mve-builtins-base.cc (vrshrq, vshrq): New.
40483         * config/arm/arm-mve-builtins-base.def (vrshrq, vshrq): New.
40484         * config/arm/arm-mve-builtins-base.h (vrshrq, vshrq): New.
40485         * config/arm/arm_mve.h (vshrq): Remove.
40486         (vrshrq): Remove.
40487         (vrshrq_m): Remove.
40488         (vshrq_m): Remove.
40489         (vrshrq_x): Remove.
40490         (vshrq_x): Remove.
40491         (vshrq_n_s8): Remove.
40492         (vshrq_n_s16): Remove.
40493         (vshrq_n_s32): Remove.
40494         (vshrq_n_u8): Remove.
40495         (vshrq_n_u16): Remove.
40496         (vshrq_n_u32): Remove.
40497         (vrshrq_n_u8): Remove.
40498         (vrshrq_n_s8): Remove.
40499         (vrshrq_n_u16): Remove.
40500         (vrshrq_n_s16): Remove.
40501         (vrshrq_n_u32): Remove.
40502         (vrshrq_n_s32): Remove.
40503         (vrshrq_m_n_s8): Remove.
40504         (vrshrq_m_n_s32): Remove.
40505         (vrshrq_m_n_s16): Remove.
40506         (vrshrq_m_n_u8): Remove.
40507         (vrshrq_m_n_u32): Remove.
40508         (vrshrq_m_n_u16): Remove.
40509         (vshrq_m_n_s8): Remove.
40510         (vshrq_m_n_s32): Remove.
40511         (vshrq_m_n_s16): Remove.
40512         (vshrq_m_n_u8): Remove.
40513         (vshrq_m_n_u32): Remove.
40514         (vshrq_m_n_u16): Remove.
40515         (vrshrq_x_n_s8): Remove.
40516         (vrshrq_x_n_s16): Remove.
40517         (vrshrq_x_n_s32): Remove.
40518         (vrshrq_x_n_u8): Remove.
40519         (vrshrq_x_n_u16): Remove.
40520         (vrshrq_x_n_u32): Remove.
40521         (vshrq_x_n_s8): Remove.
40522         (vshrq_x_n_s16): Remove.
40523         (vshrq_x_n_s32): Remove.
40524         (vshrq_x_n_u8): Remove.
40525         (vshrq_x_n_u16): Remove.
40526         (vshrq_x_n_u32): Remove.
40527         (__arm_vshrq_n_s8): Remove.
40528         (__arm_vshrq_n_s16): Remove.
40529         (__arm_vshrq_n_s32): Remove.
40530         (__arm_vshrq_n_u8): Remove.
40531         (__arm_vshrq_n_u16): Remove.
40532         (__arm_vshrq_n_u32): Remove.
40533         (__arm_vrshrq_n_u8): Remove.
40534         (__arm_vrshrq_n_s8): Remove.
40535         (__arm_vrshrq_n_u16): Remove.
40536         (__arm_vrshrq_n_s16): Remove.
40537         (__arm_vrshrq_n_u32): Remove.
40538         (__arm_vrshrq_n_s32): Remove.
40539         (__arm_vrshrq_m_n_s8): Remove.
40540         (__arm_vrshrq_m_n_s32): Remove.
40541         (__arm_vrshrq_m_n_s16): Remove.
40542         (__arm_vrshrq_m_n_u8): Remove.
40543         (__arm_vrshrq_m_n_u32): Remove.
40544         (__arm_vrshrq_m_n_u16): Remove.
40545         (__arm_vshrq_m_n_s8): Remove.
40546         (__arm_vshrq_m_n_s32): Remove.
40547         (__arm_vshrq_m_n_s16): Remove.
40548         (__arm_vshrq_m_n_u8): Remove.
40549         (__arm_vshrq_m_n_u32): Remove.
40550         (__arm_vshrq_m_n_u16): Remove.
40551         (__arm_vrshrq_x_n_s8): Remove.
40552         (__arm_vrshrq_x_n_s16): Remove.
40553         (__arm_vrshrq_x_n_s32): Remove.
40554         (__arm_vrshrq_x_n_u8): Remove.
40555         (__arm_vrshrq_x_n_u16): Remove.
40556         (__arm_vrshrq_x_n_u32): Remove.
40557         (__arm_vshrq_x_n_s8): Remove.
40558         (__arm_vshrq_x_n_s16): Remove.
40559         (__arm_vshrq_x_n_s32): Remove.
40560         (__arm_vshrq_x_n_u8): Remove.
40561         (__arm_vshrq_x_n_u16): Remove.
40562         (__arm_vshrq_x_n_u32): Remove.
40563         (__arm_vshrq): Remove.
40564         (__arm_vrshrq): Remove.
40565         (__arm_vrshrq_m): Remove.
40566         (__arm_vshrq_m): Remove.
40567         (__arm_vrshrq_x): Remove.
40568         (__arm_vshrq_x): Remove.
40570 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
40572         * config/arm/iterators.md (MVE_VSHRQ_M_N, MVE_VSHRQ_N): New.
40573         (mve_insn): Add vrshr, vshr.
40574         * config/arm/mve.md (mve_vshrq_n_<supf><mode>)
40575         (mve_vrshrq_n_<supf><mode>): Merge into ...
40576         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
40577         (mve_vrshrq_m_n_<supf><mode>, mve_vshrq_m_n_<supf><mode>): Merge
40578         into ...
40579         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
40581 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
40583         * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
40584         * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
40586 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
40588         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_U_F): New.
40589         (vqshrunbq, vqshruntq, vqrshrunbq, vqrshruntq): New.
40590         * config/arm/arm-mve-builtins-base.def (vqshrunbq, vqshruntq)
40591         (vqrshrunbq, vqrshruntq): New.
40592         * config/arm/arm-mve-builtins-base.h (vqshrunbq, vqshruntq)
40593         (vqrshrunbq, vqrshruntq): New.
40594         * config/arm/arm-mve-builtins.cc
40595         (function_instance::has_inactive_argument): Handle vqshrunbq,
40596         vqshruntq, vqrshrunbq, vqrshruntq.
40597         * config/arm/arm_mve.h (vqrshrunbq): Remove.
40598         (vqrshruntq): Remove.
40599         (vqrshrunbq_m): Remove.
40600         (vqrshruntq_m): Remove.
40601         (vqrshrunbq_n_s16): Remove.
40602         (vqrshrunbq_n_s32): Remove.
40603         (vqrshruntq_n_s16): Remove.
40604         (vqrshruntq_n_s32): Remove.
40605         (vqrshrunbq_m_n_s32): Remove.
40606         (vqrshrunbq_m_n_s16): Remove.
40607         (vqrshruntq_m_n_s32): Remove.
40608         (vqrshruntq_m_n_s16): Remove.
40609         (__arm_vqrshrunbq_n_s16): Remove.
40610         (__arm_vqrshrunbq_n_s32): Remove.
40611         (__arm_vqrshruntq_n_s16): Remove.
40612         (__arm_vqrshruntq_n_s32): Remove.
40613         (__arm_vqrshrunbq_m_n_s32): Remove.
40614         (__arm_vqrshrunbq_m_n_s16): Remove.
40615         (__arm_vqrshruntq_m_n_s32): Remove.
40616         (__arm_vqrshruntq_m_n_s16): Remove.
40617         (__arm_vqrshrunbq): Remove.
40618         (__arm_vqrshruntq): Remove.
40619         (__arm_vqrshrunbq_m): Remove.
40620         (__arm_vqrshruntq_m): Remove.
40621         (vqshrunbq): Remove.
40622         (vqshruntq): Remove.
40623         (vqshrunbq_m): Remove.
40624         (vqshruntq_m): Remove.
40625         (vqshrunbq_n_s16): Remove.
40626         (vqshruntq_n_s16): Remove.
40627         (vqshrunbq_n_s32): Remove.
40628         (vqshruntq_n_s32): Remove.
40629         (vqshrunbq_m_n_s32): Remove.
40630         (vqshrunbq_m_n_s16): Remove.
40631         (vqshruntq_m_n_s32): Remove.
40632         (vqshruntq_m_n_s16): Remove.
40633         (__arm_vqshrunbq_n_s16): Remove.
40634         (__arm_vqshruntq_n_s16): Remove.
40635         (__arm_vqshrunbq_n_s32): Remove.
40636         (__arm_vqshruntq_n_s32): Remove.
40637         (__arm_vqshrunbq_m_n_s32): Remove.
40638         (__arm_vqshrunbq_m_n_s16): Remove.
40639         (__arm_vqshruntq_m_n_s32): Remove.
40640         (__arm_vqshruntq_m_n_s16): Remove.
40641         (__arm_vqshrunbq): Remove.
40642         (__arm_vqshruntq): Remove.
40643         (__arm_vqshrunbq_m): Remove.
40644         (__arm_vqshruntq_m): Remove.
40646 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
40648         * config/arm/iterators.md (MVE_SHRN_N): Add VQRSHRUNBQ,
40649         VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
40650         (MVE_SHRN_M_N): Likewise.
40651         (mve_insn): Add vqrshrunb, vqrshrunt, vqshrunb, vqshrunt.
40652         (isu): Add VQRSHRUNBQ, VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
40653         (supf): Likewise.
40654         * config/arm/mve.md (mve_vqrshrunbq_n_s<mode>): Remove.
40655         (mve_vqrshruntq_n_s<mode>): Remove.
40656         (mve_vqshrunbq_n_s<mode>): Remove.
40657         (mve_vqshruntq_n_s<mode>): Remove.
40658         (mve_vqrshrunbq_m_n_s<mode>): Remove.
40659         (mve_vqrshruntq_m_n_s<mode>): Remove.
40660         (mve_vqshrunbq_m_n_s<mode>): Remove.
40661         (mve_vqshruntq_m_n_s<mode>): Remove.
40663 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
40665         * config/arm/arm-mve-builtins-shapes.cc
40666         (binary_rshift_narrow_unsigned): New.
40667         * config/arm/arm-mve-builtins-shapes.h
40668         (binary_rshift_narrow_unsigned): New.
40670 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
40672         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_F): New.
40673         (vshrnbq, vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq)
40674         (vqrshrnbq, vqrshrntq): New.
40675         * config/arm/arm-mve-builtins-base.def (vshrnbq, vshrntq)
40676         (vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq):
40677         New.
40678         * config/arm/arm-mve-builtins-base.h (vshrnbq, vshrntq, vrshrnbq)
40679         (vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq): New.
40680         * config/arm/arm-mve-builtins.cc
40681         (function_instance::has_inactive_argument): Handle vshrnbq,
40682         vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq,
40683         vqrshrntq.
40684         * config/arm/arm_mve.h (vshrnbq): Remove.
40685         (vshrntq): Remove.
40686         (vshrnbq_m): Remove.
40687         (vshrntq_m): Remove.
40688         (vshrnbq_n_s16): Remove.
40689         (vshrntq_n_s16): Remove.
40690         (vshrnbq_n_u16): Remove.
40691         (vshrntq_n_u16): Remove.
40692         (vshrnbq_n_s32): Remove.
40693         (vshrntq_n_s32): Remove.
40694         (vshrnbq_n_u32): Remove.
40695         (vshrntq_n_u32): Remove.
40696         (vshrnbq_m_n_s32): Remove.
40697         (vshrnbq_m_n_s16): Remove.
40698         (vshrnbq_m_n_u32): Remove.
40699         (vshrnbq_m_n_u16): Remove.
40700         (vshrntq_m_n_s32): Remove.
40701         (vshrntq_m_n_s16): Remove.
40702         (vshrntq_m_n_u32): Remove.
40703         (vshrntq_m_n_u16): Remove.
40704         (__arm_vshrnbq_n_s16): Remove.
40705         (__arm_vshrntq_n_s16): Remove.
40706         (__arm_vshrnbq_n_u16): Remove.
40707         (__arm_vshrntq_n_u16): Remove.
40708         (__arm_vshrnbq_n_s32): Remove.
40709         (__arm_vshrntq_n_s32): Remove.
40710         (__arm_vshrnbq_n_u32): Remove.
40711         (__arm_vshrntq_n_u32): Remove.
40712         (__arm_vshrnbq_m_n_s32): Remove.
40713         (__arm_vshrnbq_m_n_s16): Remove.
40714         (__arm_vshrnbq_m_n_u32): Remove.
40715         (__arm_vshrnbq_m_n_u16): Remove.
40716         (__arm_vshrntq_m_n_s32): Remove.
40717         (__arm_vshrntq_m_n_s16): Remove.
40718         (__arm_vshrntq_m_n_u32): Remove.
40719         (__arm_vshrntq_m_n_u16): Remove.
40720         (__arm_vshrnbq): Remove.
40721         (__arm_vshrntq): Remove.
40722         (__arm_vshrnbq_m): Remove.
40723         (__arm_vshrntq_m): Remove.
40724         (vrshrnbq): Remove.
40725         (vrshrntq): Remove.
40726         (vrshrnbq_m): Remove.
40727         (vrshrntq_m): Remove.
40728         (vrshrnbq_n_s16): Remove.
40729         (vrshrntq_n_s16): Remove.
40730         (vrshrnbq_n_u16): Remove.
40731         (vrshrntq_n_u16): Remove.
40732         (vrshrnbq_n_s32): Remove.
40733         (vrshrntq_n_s32): Remove.
40734         (vrshrnbq_n_u32): Remove.
40735         (vrshrntq_n_u32): Remove.
40736         (vrshrnbq_m_n_s32): Remove.
40737         (vrshrnbq_m_n_s16): Remove.
40738         (vrshrnbq_m_n_u32): Remove.
40739         (vrshrnbq_m_n_u16): Remove.
40740         (vrshrntq_m_n_s32): Remove.
40741         (vrshrntq_m_n_s16): Remove.
40742         (vrshrntq_m_n_u32): Remove.
40743         (vrshrntq_m_n_u16): Remove.
40744         (__arm_vrshrnbq_n_s16): Remove.
40745         (__arm_vrshrntq_n_s16): Remove.
40746         (__arm_vrshrnbq_n_u16): Remove.
40747         (__arm_vrshrntq_n_u16): Remove.
40748         (__arm_vrshrnbq_n_s32): Remove.
40749         (__arm_vrshrntq_n_s32): Remove.
40750         (__arm_vrshrnbq_n_u32): Remove.
40751         (__arm_vrshrntq_n_u32): Remove.
40752         (__arm_vrshrnbq_m_n_s32): Remove.
40753         (__arm_vrshrnbq_m_n_s16): Remove.
40754         (__arm_vrshrnbq_m_n_u32): Remove.
40755         (__arm_vrshrnbq_m_n_u16): Remove.
40756         (__arm_vrshrntq_m_n_s32): Remove.
40757         (__arm_vrshrntq_m_n_s16): Remove.
40758         (__arm_vrshrntq_m_n_u32): Remove.
40759         (__arm_vrshrntq_m_n_u16): Remove.
40760         (__arm_vrshrnbq): Remove.
40761         (__arm_vrshrntq): Remove.
40762         (__arm_vrshrnbq_m): Remove.
40763         (__arm_vrshrntq_m): Remove.
40764         (vqshrnbq): Remove.
40765         (vqshrntq): Remove.
40766         (vqshrnbq_m): Remove.
40767         (vqshrntq_m): Remove.
40768         (vqshrnbq_n_s16): Remove.
40769         (vqshrntq_n_s16): Remove.
40770         (vqshrnbq_n_u16): Remove.
40771         (vqshrntq_n_u16): Remove.
40772         (vqshrnbq_n_s32): Remove.
40773         (vqshrntq_n_s32): Remove.
40774         (vqshrnbq_n_u32): Remove.
40775         (vqshrntq_n_u32): Remove.
40776         (vqshrnbq_m_n_s32): Remove.
40777         (vqshrnbq_m_n_s16): Remove.
40778         (vqshrnbq_m_n_u32): Remove.
40779         (vqshrnbq_m_n_u16): Remove.
40780         (vqshrntq_m_n_s32): Remove.
40781         (vqshrntq_m_n_s16): Remove.
40782         (vqshrntq_m_n_u32): Remove.
40783         (vqshrntq_m_n_u16): Remove.
40784         (__arm_vqshrnbq_n_s16): Remove.
40785         (__arm_vqshrntq_n_s16): Remove.
40786         (__arm_vqshrnbq_n_u16): Remove.
40787         (__arm_vqshrntq_n_u16): Remove.
40788         (__arm_vqshrnbq_n_s32): Remove.
40789         (__arm_vqshrntq_n_s32): Remove.
40790         (__arm_vqshrnbq_n_u32): Remove.
40791         (__arm_vqshrntq_n_u32): Remove.
40792         (__arm_vqshrnbq_m_n_s32): Remove.
40793         (__arm_vqshrnbq_m_n_s16): Remove.
40794         (__arm_vqshrnbq_m_n_u32): Remove.
40795         (__arm_vqshrnbq_m_n_u16): Remove.
40796         (__arm_vqshrntq_m_n_s32): Remove.
40797         (__arm_vqshrntq_m_n_s16): Remove.
40798         (__arm_vqshrntq_m_n_u32): Remove.
40799         (__arm_vqshrntq_m_n_u16): Remove.
40800         (__arm_vqshrnbq): Remove.
40801         (__arm_vqshrntq): Remove.
40802         (__arm_vqshrnbq_m): Remove.
40803         (__arm_vqshrntq_m): Remove.
40804         (vqrshrnbq): Remove.
40805         (vqrshrntq): Remove.
40806         (vqrshrnbq_m): Remove.
40807         (vqrshrntq_m): Remove.
40808         (vqrshrnbq_n_s16): Remove.
40809         (vqrshrnbq_n_u16): Remove.
40810         (vqrshrnbq_n_s32): Remove.
40811         (vqrshrnbq_n_u32): Remove.
40812         (vqrshrntq_n_s16): Remove.
40813         (vqrshrntq_n_u16): Remove.
40814         (vqrshrntq_n_s32): Remove.
40815         (vqrshrntq_n_u32): Remove.
40816         (vqrshrnbq_m_n_s32): Remove.
40817         (vqrshrnbq_m_n_s16): Remove.
40818         (vqrshrnbq_m_n_u32): Remove.
40819         (vqrshrnbq_m_n_u16): Remove.
40820         (vqrshrntq_m_n_s32): Remove.
40821         (vqrshrntq_m_n_s16): Remove.
40822         (vqrshrntq_m_n_u32): Remove.
40823         (vqrshrntq_m_n_u16): Remove.
40824         (__arm_vqrshrnbq_n_s16): Remove.
40825         (__arm_vqrshrnbq_n_u16): Remove.
40826         (__arm_vqrshrnbq_n_s32): Remove.
40827         (__arm_vqrshrnbq_n_u32): Remove.
40828         (__arm_vqrshrntq_n_s16): Remove.
40829         (__arm_vqrshrntq_n_u16): Remove.
40830         (__arm_vqrshrntq_n_s32): Remove.
40831         (__arm_vqrshrntq_n_u32): Remove.
40832         (__arm_vqrshrnbq_m_n_s32): Remove.
40833         (__arm_vqrshrnbq_m_n_s16): Remove.
40834         (__arm_vqrshrnbq_m_n_u32): Remove.
40835         (__arm_vqrshrnbq_m_n_u16): Remove.
40836         (__arm_vqrshrntq_m_n_s32): Remove.
40837         (__arm_vqrshrntq_m_n_s16): Remove.
40838         (__arm_vqrshrntq_m_n_u32): Remove.
40839         (__arm_vqrshrntq_m_n_u16): Remove.
40840         (__arm_vqrshrnbq): Remove.
40841         (__arm_vqrshrntq): Remove.
40842         (__arm_vqrshrnbq_m): Remove.
40843         (__arm_vqrshrntq_m): Remove.
40845 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
40847         * config/arm/iterators.md (MVE_SHRN_N, MVE_SHRN_M_N): New.
40848         (mve_insn): Add vqrshrnb, vqrshrnt, vqshrnb, vqshrnt, vrshrnb,
40849         vrshrnt, vshrnb, vshrnt.
40850         (isu): New.
40851         * config/arm/mve.md (mve_vqrshrnbq_n_<supf><mode>)
40852         (mve_vqrshrntq_n_<supf><mode>, mve_vqshrnbq_n_<supf><mode>)
40853         (mve_vqshrntq_n_<supf><mode>, mve_vrshrnbq_n_<supf><mode>)
40854         (mve_vrshrntq_n_<supf><mode>, mve_vshrnbq_n_<supf><mode>)
40855         (mve_vshrntq_n_<supf><mode>): Merge into ...
40856         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
40857         (mve_vqrshrnbq_m_n_<supf><mode>, mve_vqrshrntq_m_n_<supf><mode>)
40858         (mve_vqshrnbq_m_n_<supf><mode>, mve_vqshrntq_m_n_<supf><mode>)
40859         (mve_vrshrnbq_m_n_<supf><mode>, mve_vrshrntq_m_n_<supf><mode>)
40860         (mve_vshrnbq_m_n_<supf><mode>, mve_vshrntq_m_n_<supf><mode>):
40861         Merge into ...
40862         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
40864 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
40866         * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow):
40867         New.
40868         * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New.
40870 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
40872         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_NO_F): New.
40873         (vmaxq, vminq): New.
40874         * config/arm/arm-mve-builtins-base.def (vmaxq, vminq): New.
40875         * config/arm/arm-mve-builtins-base.h (vmaxq, vminq): New.
40876         * config/arm/arm_mve.h (vminq): Remove.
40877         (vmaxq): Remove.
40878         (vmaxq_m): Remove.
40879         (vminq_m): Remove.
40880         (vminq_x): Remove.
40881         (vmaxq_x): Remove.
40882         (vminq_u8): Remove.
40883         (vmaxq_u8): Remove.
40884         (vminq_s8): Remove.
40885         (vmaxq_s8): Remove.
40886         (vminq_u16): Remove.
40887         (vmaxq_u16): Remove.
40888         (vminq_s16): Remove.
40889         (vmaxq_s16): Remove.
40890         (vminq_u32): Remove.
40891         (vmaxq_u32): Remove.
40892         (vminq_s32): Remove.
40893         (vmaxq_s32): Remove.
40894         (vmaxq_m_s8): Remove.
40895         (vmaxq_m_s32): Remove.
40896         (vmaxq_m_s16): Remove.
40897         (vmaxq_m_u8): Remove.
40898         (vmaxq_m_u32): Remove.
40899         (vmaxq_m_u16): Remove.
40900         (vminq_m_s8): Remove.
40901         (vminq_m_s32): Remove.
40902         (vminq_m_s16): Remove.
40903         (vminq_m_u8): Remove.
40904         (vminq_m_u32): Remove.
40905         (vminq_m_u16): Remove.
40906         (vminq_x_s8): Remove.
40907         (vminq_x_s16): Remove.
40908         (vminq_x_s32): Remove.
40909         (vminq_x_u8): Remove.
40910         (vminq_x_u16): Remove.
40911         (vminq_x_u32): Remove.
40912         (vmaxq_x_s8): Remove.
40913         (vmaxq_x_s16): Remove.
40914         (vmaxq_x_s32): Remove.
40915         (vmaxq_x_u8): Remove.
40916         (vmaxq_x_u16): Remove.
40917         (vmaxq_x_u32): Remove.
40918         (__arm_vminq_u8): Remove.
40919         (__arm_vmaxq_u8): Remove.
40920         (__arm_vminq_s8): Remove.
40921         (__arm_vmaxq_s8): Remove.
40922         (__arm_vminq_u16): Remove.
40923         (__arm_vmaxq_u16): Remove.
40924         (__arm_vminq_s16): Remove.
40925         (__arm_vmaxq_s16): Remove.
40926         (__arm_vminq_u32): Remove.
40927         (__arm_vmaxq_u32): Remove.
40928         (__arm_vminq_s32): Remove.
40929         (__arm_vmaxq_s32): Remove.
40930         (__arm_vmaxq_m_s8): Remove.
40931         (__arm_vmaxq_m_s32): Remove.
40932         (__arm_vmaxq_m_s16): Remove.
40933         (__arm_vmaxq_m_u8): Remove.
40934         (__arm_vmaxq_m_u32): Remove.
40935         (__arm_vmaxq_m_u16): Remove.
40936         (__arm_vminq_m_s8): Remove.
40937         (__arm_vminq_m_s32): Remove.
40938         (__arm_vminq_m_s16): Remove.
40939         (__arm_vminq_m_u8): Remove.
40940         (__arm_vminq_m_u32): Remove.
40941         (__arm_vminq_m_u16): Remove.
40942         (__arm_vminq_x_s8): Remove.
40943         (__arm_vminq_x_s16): Remove.
40944         (__arm_vminq_x_s32): Remove.
40945         (__arm_vminq_x_u8): Remove.
40946         (__arm_vminq_x_u16): Remove.
40947         (__arm_vminq_x_u32): Remove.
40948         (__arm_vmaxq_x_s8): Remove.
40949         (__arm_vmaxq_x_s16): Remove.
40950         (__arm_vmaxq_x_s32): Remove.
40951         (__arm_vmaxq_x_u8): Remove.
40952         (__arm_vmaxq_x_u16): Remove.
40953         (__arm_vmaxq_x_u32): Remove.
40954         (__arm_vminq): Remove.
40955         (__arm_vmaxq): Remove.
40956         (__arm_vmaxq_m): Remove.
40957         (__arm_vminq_m): Remove.
40958         (__arm_vminq_x): Remove.
40959         (__arm_vmaxq_x): Remove.
40961 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
40963         * config/arm/iterators.md (MAX_MIN_SU): New.
40964         (max_min_su_str): New.
40965         (max_min_supf): New.
40966         * config/arm/mve.md (mve_vmaxq_s<mode>, mve_vmaxq_u<mode>)
40967         (mve_vminq_s<mode>, mve_vminq_u<mode>): Merge into ...
40968         (mve_<max_min_su_str>q_<max_min_supf><mode>): ... this.
40970 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
40972         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_R): New.
40973         (vqshlq, vshlq): New.
40974         * config/arm/arm-mve-builtins-base.def (vqshlq, vshlq): New.
40975         * config/arm/arm-mve-builtins-base.h (vqshlq, vshlq): New.
40976         * config/arm/arm_mve.h (vshlq): Remove.
40977         (vshlq_r): Remove.
40978         (vshlq_n): Remove.
40979         (vshlq_m_r): Remove.
40980         (vshlq_m): Remove.
40981         (vshlq_m_n): Remove.
40982         (vshlq_x): Remove.
40983         (vshlq_x_n): Remove.
40984         (vshlq_s8): Remove.
40985         (vshlq_s16): Remove.
40986         (vshlq_s32): Remove.
40987         (vshlq_u8): Remove.
40988         (vshlq_u16): Remove.
40989         (vshlq_u32): Remove.
40990         (vshlq_r_u8): Remove.
40991         (vshlq_n_u8): Remove.
40992         (vshlq_r_s8): Remove.
40993         (vshlq_n_s8): Remove.
40994         (vshlq_r_u16): Remove.
40995         (vshlq_n_u16): Remove.
40996         (vshlq_r_s16): Remove.
40997         (vshlq_n_s16): Remove.
40998         (vshlq_r_u32): Remove.
40999         (vshlq_n_u32): Remove.
41000         (vshlq_r_s32): Remove.
41001         (vshlq_n_s32): Remove.
41002         (vshlq_m_r_u8): Remove.
41003         (vshlq_m_r_s8): Remove.
41004         (vshlq_m_r_u16): Remove.
41005         (vshlq_m_r_s16): Remove.
41006         (vshlq_m_r_u32): Remove.
41007         (vshlq_m_r_s32): Remove.
41008         (vshlq_m_u8): Remove.
41009         (vshlq_m_s8): Remove.
41010         (vshlq_m_u16): Remove.
41011         (vshlq_m_s16): Remove.
41012         (vshlq_m_u32): Remove.
41013         (vshlq_m_s32): Remove.
41014         (vshlq_m_n_s8): Remove.
41015         (vshlq_m_n_s32): Remove.
41016         (vshlq_m_n_s16): Remove.
41017         (vshlq_m_n_u8): Remove.
41018         (vshlq_m_n_u32): Remove.
41019         (vshlq_m_n_u16): Remove.
41020         (vshlq_x_s8): Remove.
41021         (vshlq_x_s16): Remove.
41022         (vshlq_x_s32): Remove.
41023         (vshlq_x_u8): Remove.
41024         (vshlq_x_u16): Remove.
41025         (vshlq_x_u32): Remove.
41026         (vshlq_x_n_s8): Remove.
41027         (vshlq_x_n_s16): Remove.
41028         (vshlq_x_n_s32): Remove.
41029         (vshlq_x_n_u8): Remove.
41030         (vshlq_x_n_u16): Remove.
41031         (vshlq_x_n_u32): Remove.
41032         (__arm_vshlq_s8): Remove.
41033         (__arm_vshlq_s16): Remove.
41034         (__arm_vshlq_s32): Remove.
41035         (__arm_vshlq_u8): Remove.
41036         (__arm_vshlq_u16): Remove.
41037         (__arm_vshlq_u32): Remove.
41038         (__arm_vshlq_r_u8): Remove.
41039         (__arm_vshlq_n_u8): Remove.
41040         (__arm_vshlq_r_s8): Remove.
41041         (__arm_vshlq_n_s8): Remove.
41042         (__arm_vshlq_r_u16): Remove.
41043         (__arm_vshlq_n_u16): Remove.
41044         (__arm_vshlq_r_s16): Remove.
41045         (__arm_vshlq_n_s16): Remove.
41046         (__arm_vshlq_r_u32): Remove.
41047         (__arm_vshlq_n_u32): Remove.
41048         (__arm_vshlq_r_s32): Remove.
41049         (__arm_vshlq_n_s32): Remove.
41050         (__arm_vshlq_m_r_u8): Remove.
41051         (__arm_vshlq_m_r_s8): Remove.
41052         (__arm_vshlq_m_r_u16): Remove.
41053         (__arm_vshlq_m_r_s16): Remove.
41054         (__arm_vshlq_m_r_u32): Remove.
41055         (__arm_vshlq_m_r_s32): Remove.
41056         (__arm_vshlq_m_u8): Remove.
41057         (__arm_vshlq_m_s8): Remove.
41058         (__arm_vshlq_m_u16): Remove.
41059         (__arm_vshlq_m_s16): Remove.
41060         (__arm_vshlq_m_u32): Remove.
41061         (__arm_vshlq_m_s32): Remove.
41062         (__arm_vshlq_m_n_s8): Remove.
41063         (__arm_vshlq_m_n_s32): Remove.
41064         (__arm_vshlq_m_n_s16): Remove.
41065         (__arm_vshlq_m_n_u8): Remove.
41066         (__arm_vshlq_m_n_u32): Remove.
41067         (__arm_vshlq_m_n_u16): Remove.
41068         (__arm_vshlq_x_s8): Remove.
41069         (__arm_vshlq_x_s16): Remove.
41070         (__arm_vshlq_x_s32): Remove.
41071         (__arm_vshlq_x_u8): Remove.
41072         (__arm_vshlq_x_u16): Remove.
41073         (__arm_vshlq_x_u32): Remove.
41074         (__arm_vshlq_x_n_s8): Remove.
41075         (__arm_vshlq_x_n_s16): Remove.
41076         (__arm_vshlq_x_n_s32): Remove.
41077         (__arm_vshlq_x_n_u8): Remove.
41078         (__arm_vshlq_x_n_u16): Remove.
41079         (__arm_vshlq_x_n_u32): Remove.
41080         (__arm_vshlq): Remove.
41081         (__arm_vshlq_r): Remove.
41082         (__arm_vshlq_n): Remove.
41083         (__arm_vshlq_m_r): Remove.
41084         (__arm_vshlq_m): Remove.
41085         (__arm_vshlq_m_n): Remove.
41086         (__arm_vshlq_x): Remove.
41087         (__arm_vshlq_x_n): Remove.
41088         (vqshlq): Remove.
41089         (vqshlq_r): Remove.
41090         (vqshlq_n): Remove.
41091         (vqshlq_m_r): Remove.
41092         (vqshlq_m_n): Remove.
41093         (vqshlq_m): Remove.
41094         (vqshlq_u8): Remove.
41095         (vqshlq_r_u8): Remove.
41096         (vqshlq_n_u8): Remove.
41097         (vqshlq_s8): Remove.
41098         (vqshlq_r_s8): Remove.
41099         (vqshlq_n_s8): Remove.
41100         (vqshlq_u16): Remove.
41101         (vqshlq_r_u16): Remove.
41102         (vqshlq_n_u16): Remove.
41103         (vqshlq_s16): Remove.
41104         (vqshlq_r_s16): Remove.
41105         (vqshlq_n_s16): Remove.
41106         (vqshlq_u32): Remove.
41107         (vqshlq_r_u32): Remove.
41108         (vqshlq_n_u32): Remove.
41109         (vqshlq_s32): Remove.
41110         (vqshlq_r_s32): Remove.
41111         (vqshlq_n_s32): Remove.
41112         (vqshlq_m_r_u8): Remove.
41113         (vqshlq_m_r_s8): Remove.
41114         (vqshlq_m_r_u16): Remove.
41115         (vqshlq_m_r_s16): Remove.
41116         (vqshlq_m_r_u32): Remove.
41117         (vqshlq_m_r_s32): Remove.
41118         (vqshlq_m_n_s8): Remove.
41119         (vqshlq_m_n_s32): Remove.
41120         (vqshlq_m_n_s16): Remove.
41121         (vqshlq_m_n_u8): Remove.
41122         (vqshlq_m_n_u32): Remove.
41123         (vqshlq_m_n_u16): Remove.
41124         (vqshlq_m_s8): Remove.
41125         (vqshlq_m_s32): Remove.
41126         (vqshlq_m_s16): Remove.
41127         (vqshlq_m_u8): Remove.
41128         (vqshlq_m_u32): Remove.
41129         (vqshlq_m_u16): Remove.
41130         (__arm_vqshlq_u8): Remove.
41131         (__arm_vqshlq_r_u8): Remove.
41132         (__arm_vqshlq_n_u8): Remove.
41133         (__arm_vqshlq_s8): Remove.
41134         (__arm_vqshlq_r_s8): Remove.
41135         (__arm_vqshlq_n_s8): Remove.
41136         (__arm_vqshlq_u16): Remove.
41137         (__arm_vqshlq_r_u16): Remove.
41138         (__arm_vqshlq_n_u16): Remove.
41139         (__arm_vqshlq_s16): Remove.
41140         (__arm_vqshlq_r_s16): Remove.
41141         (__arm_vqshlq_n_s16): Remove.
41142         (__arm_vqshlq_u32): Remove.
41143         (__arm_vqshlq_r_u32): Remove.
41144         (__arm_vqshlq_n_u32): Remove.
41145         (__arm_vqshlq_s32): Remove.
41146         (__arm_vqshlq_r_s32): Remove.
41147         (__arm_vqshlq_n_s32): Remove.
41148         (__arm_vqshlq_m_r_u8): Remove.
41149         (__arm_vqshlq_m_r_s8): Remove.
41150         (__arm_vqshlq_m_r_u16): Remove.
41151         (__arm_vqshlq_m_r_s16): Remove.
41152         (__arm_vqshlq_m_r_u32): Remove.
41153         (__arm_vqshlq_m_r_s32): Remove.
41154         (__arm_vqshlq_m_n_s8): Remove.
41155         (__arm_vqshlq_m_n_s32): Remove.
41156         (__arm_vqshlq_m_n_s16): Remove.
41157         (__arm_vqshlq_m_n_u8): Remove.
41158         (__arm_vqshlq_m_n_u32): Remove.
41159         (__arm_vqshlq_m_n_u16): Remove.
41160         (__arm_vqshlq_m_s8): Remove.
41161         (__arm_vqshlq_m_s32): Remove.
41162         (__arm_vqshlq_m_s16): Remove.
41163         (__arm_vqshlq_m_u8): Remove.
41164         (__arm_vqshlq_m_u32): Remove.
41165         (__arm_vqshlq_m_u16): Remove.
41166         (__arm_vqshlq): Remove.
41167         (__arm_vqshlq_r): Remove.
41168         (__arm_vqshlq_n): Remove.
41169         (__arm_vqshlq_m_r): Remove.
41170         (__arm_vqshlq_m_n): Remove.
41171         (__arm_vqshlq_m): Remove.
41173 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
41175         * config/arm/arm-mve-builtins-functions.h (class
41176         unspec_mve_function_exact_insn_vshl): New.
41178 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
41180         * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
41181         * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
41183 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
41185         * config/arm/arm-mve-builtins.cc (has_inactive_argument)
41186         (finish_opt_n_resolution): Handle MODE_r.
41187         * config/arm/arm-mve-builtins.def (r): New mode.
41189 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
41191         * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
41192         * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
41194 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
41196         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): New.
41197         (vabdq): New.
41198         * config/arm/arm-mve-builtins-base.def (vabdq): New.
41199         * config/arm/arm-mve-builtins-base.h (vabdq): New.
41200         * config/arm/arm_mve.h (vabdq): Remove.
41201         (vabdq_m): Remove.
41202         (vabdq_x): Remove.
41203         (vabdq_u8): Remove.
41204         (vabdq_s8): Remove.
41205         (vabdq_u16): Remove.
41206         (vabdq_s16): Remove.
41207         (vabdq_u32): Remove.
41208         (vabdq_s32): Remove.
41209         (vabdq_f16): Remove.
41210         (vabdq_f32): Remove.
41211         (vabdq_m_s8): Remove.
41212         (vabdq_m_s32): Remove.
41213         (vabdq_m_s16): Remove.
41214         (vabdq_m_u8): Remove.
41215         (vabdq_m_u32): Remove.
41216         (vabdq_m_u16): Remove.
41217         (vabdq_m_f32): Remove.
41218         (vabdq_m_f16): Remove.
41219         (vabdq_x_s8): Remove.
41220         (vabdq_x_s16): Remove.
41221         (vabdq_x_s32): Remove.
41222         (vabdq_x_u8): Remove.
41223         (vabdq_x_u16): Remove.
41224         (vabdq_x_u32): Remove.
41225         (vabdq_x_f16): Remove.
41226         (vabdq_x_f32): Remove.
41227         (__arm_vabdq_u8): Remove.
41228         (__arm_vabdq_s8): Remove.
41229         (__arm_vabdq_u16): Remove.
41230         (__arm_vabdq_s16): Remove.
41231         (__arm_vabdq_u32): Remove.
41232         (__arm_vabdq_s32): Remove.
41233         (__arm_vabdq_m_s8): Remove.
41234         (__arm_vabdq_m_s32): Remove.
41235         (__arm_vabdq_m_s16): Remove.
41236         (__arm_vabdq_m_u8): Remove.
41237         (__arm_vabdq_m_u32): Remove.
41238         (__arm_vabdq_m_u16): Remove.
41239         (__arm_vabdq_x_s8): Remove.
41240         (__arm_vabdq_x_s16): Remove.
41241         (__arm_vabdq_x_s32): Remove.
41242         (__arm_vabdq_x_u8): Remove.
41243         (__arm_vabdq_x_u16): Remove.
41244         (__arm_vabdq_x_u32): Remove.
41245         (__arm_vabdq_f16): Remove.
41246         (__arm_vabdq_f32): Remove.
41247         (__arm_vabdq_m_f32): Remove.
41248         (__arm_vabdq_m_f16): Remove.
41249         (__arm_vabdq_x_f16): Remove.
41250         (__arm_vabdq_x_f32): Remove.
41251         (__arm_vabdq): Remove.
41252         (__arm_vabdq_m): Remove.
41253         (__arm_vabdq_x): Remove.
41255 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
41257         * config/arm/iterators.md (MVE_FP_M_BINARY): Add vabdq.
41258         (MVE_FP_VABDQ_ONLY): New.
41259         (mve_insn): Add vabd.
41260         * config/arm/mve.md (mve_vabdq_f<mode>): Move into ...
41261         (@mve_<mve_insn>q_f<mode>): ... this.
41262         (mve_vabdq_m_f<mode>): Remove.
41264 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
41266         * config/arm/arm-mve-builtins-base.cc (vqrdmulhq): New.
41267         * config/arm/arm-mve-builtins-base.def (vqrdmulhq): New.
41268         * config/arm/arm-mve-builtins-base.h (vqrdmulhq): New.
41269         * config/arm/arm_mve.h (vqrdmulhq): Remove.
41270         (vqrdmulhq_m): Remove.
41271         (vqrdmulhq_s8): Remove.
41272         (vqrdmulhq_n_s8): Remove.
41273         (vqrdmulhq_s16): Remove.
41274         (vqrdmulhq_n_s16): Remove.
41275         (vqrdmulhq_s32): Remove.
41276         (vqrdmulhq_n_s32): Remove.
41277         (vqrdmulhq_m_n_s8): Remove.
41278         (vqrdmulhq_m_n_s32): Remove.
41279         (vqrdmulhq_m_n_s16): Remove.
41280         (vqrdmulhq_m_s8): Remove.
41281         (vqrdmulhq_m_s32): Remove.
41282         (vqrdmulhq_m_s16): Remove.
41283         (__arm_vqrdmulhq_s8): Remove.
41284         (__arm_vqrdmulhq_n_s8): Remove.
41285         (__arm_vqrdmulhq_s16): Remove.
41286         (__arm_vqrdmulhq_n_s16): Remove.
41287         (__arm_vqrdmulhq_s32): Remove.
41288         (__arm_vqrdmulhq_n_s32): Remove.
41289         (__arm_vqrdmulhq_m_n_s8): Remove.
41290         (__arm_vqrdmulhq_m_n_s32): Remove.
41291         (__arm_vqrdmulhq_m_n_s16): Remove.
41292         (__arm_vqrdmulhq_m_s8): Remove.
41293         (__arm_vqrdmulhq_m_s32): Remove.
41294         (__arm_vqrdmulhq_m_s16): Remove.
41295         (__arm_vqrdmulhq): Remove.
41296         (__arm_vqrdmulhq_m): Remove.
41298 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
41300         * config/arm/iterators.md (MVE_SHIFT_M_R, MVE_SHIFT_M_N)
41301         (MVE_SHIFT_N, MVE_SHIFT_R): New.
41302         (mve_insn): Add vqshl, vshl.
41303         * config/arm/mve.md (mve_vqshlq_n_<supf><mode>)
41304         (mve_vshlq_n_<supf><mode>): Merge into ...
41305         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
41306         (mve_vqshlq_r_<supf><mode>, mve_vshlq_r_<supf><mode>): Merge into
41307         ...
41308         (@mve_<mve_insn>q_r_<supf><mode>): ... this.
41309         (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
41310         into ...
41311         (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
41312         (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
41313         into ...
41314         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
41315         * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
41316         into ...
41317         (@mve_<mve_insn>q_<supf><mode>): ... this.
41319 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
41321         * config/arm/arm-mve-builtins-base.cc (vqrshlq, vrshlq): New.
41322         * config/arm/arm-mve-builtins-base.def (vqrshlq, vrshlq): New.
41323         * config/arm/arm-mve-builtins-base.h (vqrshlq, vrshlq): New.
41324         * config/arm/arm-mve-builtins.cc (has_inactive_argument): Handle
41325         vqrshlq, vrshlq.
41326         * config/arm/arm_mve.h (vrshlq): Remove.
41327         (vrshlq_m_n): Remove.
41328         (vrshlq_m): Remove.
41329         (vrshlq_x): Remove.
41330         (vrshlq_u8): Remove.
41331         (vrshlq_n_u8): Remove.
41332         (vrshlq_s8): Remove.
41333         (vrshlq_n_s8): Remove.
41334         (vrshlq_u16): Remove.
41335         (vrshlq_n_u16): Remove.
41336         (vrshlq_s16): Remove.
41337         (vrshlq_n_s16): Remove.
41338         (vrshlq_u32): Remove.
41339         (vrshlq_n_u32): Remove.
41340         (vrshlq_s32): Remove.
41341         (vrshlq_n_s32): Remove.
41342         (vrshlq_m_n_u8): Remove.
41343         (vrshlq_m_n_s8): Remove.
41344         (vrshlq_m_n_u16): Remove.
41345         (vrshlq_m_n_s16): Remove.
41346         (vrshlq_m_n_u32): Remove.
41347         (vrshlq_m_n_s32): Remove.
41348         (vrshlq_m_s8): Remove.
41349         (vrshlq_m_s32): Remove.
41350         (vrshlq_m_s16): Remove.
41351         (vrshlq_m_u8): Remove.
41352         (vrshlq_m_u32): Remove.
41353         (vrshlq_m_u16): Remove.
41354         (vrshlq_x_s8): Remove.
41355         (vrshlq_x_s16): Remove.
41356         (vrshlq_x_s32): Remove.
41357         (vrshlq_x_u8): Remove.
41358         (vrshlq_x_u16): Remove.
41359         (vrshlq_x_u32): Remove.
41360         (__arm_vrshlq_u8): Remove.
41361         (__arm_vrshlq_n_u8): Remove.
41362         (__arm_vrshlq_s8): Remove.
41363         (__arm_vrshlq_n_s8): Remove.
41364         (__arm_vrshlq_u16): Remove.
41365         (__arm_vrshlq_n_u16): Remove.
41366         (__arm_vrshlq_s16): Remove.
41367         (__arm_vrshlq_n_s16): Remove.
41368         (__arm_vrshlq_u32): Remove.
41369         (__arm_vrshlq_n_u32): Remove.
41370         (__arm_vrshlq_s32): Remove.
41371         (__arm_vrshlq_n_s32): Remove.
41372         (__arm_vrshlq_m_n_u8): Remove.
41373         (__arm_vrshlq_m_n_s8): Remove.
41374         (__arm_vrshlq_m_n_u16): Remove.
41375         (__arm_vrshlq_m_n_s16): Remove.
41376         (__arm_vrshlq_m_n_u32): Remove.
41377         (__arm_vrshlq_m_n_s32): Remove.
41378         (__arm_vrshlq_m_s8): Remove.
41379         (__arm_vrshlq_m_s32): Remove.
41380         (__arm_vrshlq_m_s16): Remove.
41381         (__arm_vrshlq_m_u8): Remove.
41382         (__arm_vrshlq_m_u32): Remove.
41383         (__arm_vrshlq_m_u16): Remove.
41384         (__arm_vrshlq_x_s8): Remove.
41385         (__arm_vrshlq_x_s16): Remove.
41386         (__arm_vrshlq_x_s32): Remove.
41387         (__arm_vrshlq_x_u8): Remove.
41388         (__arm_vrshlq_x_u16): Remove.
41389         (__arm_vrshlq_x_u32): Remove.
41390         (__arm_vrshlq): Remove.
41391         (__arm_vrshlq_m_n): Remove.
41392         (__arm_vrshlq_m): Remove.
41393         (__arm_vrshlq_x): Remove.
41394         (vqrshlq): Remove.
41395         (vqrshlq_m_n): Remove.
41396         (vqrshlq_m): Remove.
41397         (vqrshlq_u8): Remove.
41398         (vqrshlq_n_u8): Remove.
41399         (vqrshlq_s8): Remove.
41400         (vqrshlq_n_s8): Remove.
41401         (vqrshlq_u16): Remove.
41402         (vqrshlq_n_u16): Remove.
41403         (vqrshlq_s16): Remove.
41404         (vqrshlq_n_s16): Remove.
41405         (vqrshlq_u32): Remove.
41406         (vqrshlq_n_u32): Remove.
41407         (vqrshlq_s32): Remove.
41408         (vqrshlq_n_s32): Remove.
41409         (vqrshlq_m_n_u8): Remove.
41410         (vqrshlq_m_n_s8): Remove.
41411         (vqrshlq_m_n_u16): Remove.
41412         (vqrshlq_m_n_s16): Remove.
41413         (vqrshlq_m_n_u32): Remove.
41414         (vqrshlq_m_n_s32): Remove.
41415         (vqrshlq_m_s8): Remove.
41416         (vqrshlq_m_s32): Remove.
41417         (vqrshlq_m_s16): Remove.
41418         (vqrshlq_m_u8): Remove.
41419         (vqrshlq_m_u32): Remove.
41420         (vqrshlq_m_u16): Remove.
41421         (__arm_vqrshlq_u8): Remove.
41422         (__arm_vqrshlq_n_u8): Remove.
41423         (__arm_vqrshlq_s8): Remove.
41424         (__arm_vqrshlq_n_s8): Remove.
41425         (__arm_vqrshlq_u16): Remove.
41426         (__arm_vqrshlq_n_u16): Remove.
41427         (__arm_vqrshlq_s16): Remove.
41428         (__arm_vqrshlq_n_s16): Remove.
41429         (__arm_vqrshlq_u32): Remove.
41430         (__arm_vqrshlq_n_u32): Remove.
41431         (__arm_vqrshlq_s32): Remove.
41432         (__arm_vqrshlq_n_s32): Remove.
41433         (__arm_vqrshlq_m_n_u8): Remove.
41434         (__arm_vqrshlq_m_n_s8): Remove.
41435         (__arm_vqrshlq_m_n_u16): Remove.
41436         (__arm_vqrshlq_m_n_s16): Remove.
41437         (__arm_vqrshlq_m_n_u32): Remove.
41438         (__arm_vqrshlq_m_n_s32): Remove.
41439         (__arm_vqrshlq_m_s8): Remove.
41440         (__arm_vqrshlq_m_s32): Remove.
41441         (__arm_vqrshlq_m_s16): Remove.
41442         (__arm_vqrshlq_m_u8): Remove.
41443         (__arm_vqrshlq_m_u32): Remove.
41444         (__arm_vqrshlq_m_u16): Remove.
41445         (__arm_vqrshlq): Remove.
41446         (__arm_vqrshlq_m_n): Remove.
41447         (__arm_vqrshlq_m): Remove.
41449 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
41451         * config/arm/iterators.md (MVE_RSHIFT_M_N, MVE_RSHIFT_N): New.
41452         (mve_insn): Add vqrshl, vrshl.
41453         * config/arm/mve.md (mve_vqrshlq_n_<supf><mode>)
41454         (mve_vrshlq_n_<supf><mode>): Merge into ...
41455         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
41456         (mve_vqrshlq_m_n_<supf><mode>, mve_vrshlq_m_n_<supf><mode>): Merge
41457         into ...
41458         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
41460 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
41462         * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
41463         * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
41465 2023-05-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
41467         PR target/109615
41468         * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
41469         denegrate PHI optmization.
41471 2023-05-05  Uros Bizjak  <ubizjak@gmail.com>
41473         * config/i386/predicates.md (register_no_SP_operand):
41474         Rename from index_register_operand.
41475         (call_register_operand): Update for rename.
41476         * config/i386/i386.md (*lea<mode>_general_[1234]): Update for rename.
41478 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
41480         PR bootstrap/84402
41481         * Makefile.in (NUM_MATCH_SPLITS, MATCH_SPLITS_SEQ,
41482         GIMPLE_MATCH_PD_SEQ_SRC, GIMPLE_MATCH_PD_SEQ_O,
41483         GENERIC_MATCH_PD_SEQ_SRC, GENERIC_MATCH_PD_SEQ_O): New.
41484         (OBJS, MOSTLYCLEANFILES, .PRECIOUS): Use them.
41485         (s-match): Split into s-generic-match and s-gimple-match.
41486         * configure.ac (with-matchpd-partitions,
41487         DEFAULT_MATCHPD_PARTITIONS): New.
41488         * configure: Regenerate.
41490 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
41492         PR bootstrap/84402
41493         * genmatch.cc (emit_func, SIZED_BASED_CHUNKS, get_out_file): New.
41494         (decision_tree::gen): Accept list of files instead of single and update
41495         to write function definition to header and main file.
41496         (write_predicate): Likewise.
41497         (write_header): Emit pragmas and new includes.
41498         (main): Create file buffers and cleanup.
41499         (showUsage, write_header_includes): New.
41501 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
41503         PR bootstrap/84402
41504         * Makefile.in (OBJS): Add gimple-match-exports.o.
41505         * genmatch.cc (decision_tree::gen): Export gimple_gimplify helpers.
41506         * gimple-match-head.cc (gimple_simplify, gimple_resimplify1,
41507         gimple_resimplify2, gimple_resimplify3, gimple_resimplify4,
41508         gimple_resimplify5, constant_for_folding, convert_conditional_op,
41509         maybe_resimplify_conditional_op, gimple_match_op::resimplify,
41510         maybe_build_generic_op, build_call_internal, maybe_push_res_to_seq,
41511         do_valueize, try_conditional_simplification, gimple_extract,
41512         gimple_extract_op, canonicalize_code, commutative_binary_op_p,
41513         commutative_ternary_op_p, first_commutative_argument,
41514         associative_binary_op_p, directly_supported_p,
41515         get_conditional_internal_fn): Moved to gimple-match-exports.cc
41516         * gimple-match-exports.cc: New file.
41518 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
41520         PR bootstrap/84402
41521         * genmatch.cc (decision_tree::gen, write_predicate): Generate new
41522         debug_dump var.
41523         (dt_simplify::gen_1): Use it.
41525 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
41527         PR bootstrap/84402
41528         * genmatch.cc (output_line_directive): Only emit commented directive
41529         when -vv.
41531 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
41533         PR bootstrap/84402
41534         * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
41536 2023-05-05  Tobias Burnus  <tobias@codesourcery.com>
41538         * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
41539         unused in_mode/in_n variables.
41541 2023-05-05  Richard Biener  <rguenther@suse.de>
41543         PR tree-optimization/109735
41544         * tree-vect-stmts.cc (vectorizable_operation): Perform
41545         conversion for POINTER_DIFF_EXPR unconditionally.
41547 2023-05-05  Uros Bizjak  <ubizjak@gmail.com>
41549         * config/i386/mmx.md (mulv2si3): New expander.
41550         (*mulv2si3): New insn pattern.
41552 2023-05-05  Tobias Burnus  <tobias@codesourcery.com>
41553             Thomas Schwinge  <thomas@codesourcery.com>
41555         PR libgomp/108098
41556         * config/nvptx/mkoffload.cc (process): Emit dummy procedure
41557         alongside reverse-offload function table to prevent NULL values
41558         of the function addresses.
41560 2023-05-05  Jakub Jelinek  <jakub@redhat.com>
41562         * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo,
41563         mpft_t -> mpfr_t.
41564         * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise.
41566 2023-05-05  Andrew Pinski  <apinski@marvell.com>
41568         PR tree-optimization/109732
41569         * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
41570         of the argtrue/argfalse.
41572 2023-05-05  Andrew Pinski  <apinski@marvell.com>
41574         PR tree-optimization/109722
41575         * match.pd: Extend the `ABS<a> == 0` pattern
41576         to cover `ABSU<a> == 0` too.
41578 2023-05-04  Uros Bizjak  <ubizjak@gmail.com>
41580         PR target/109733
41581         * config/i386/predicates.md (index_reg_operand): New predicate.
41582         * config/i386/i386.md (ashift to lea spliter): Use
41583         general_reg_operand and index_reg_operand predicates.
41585 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
41587         * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn2<mode>_insn_le):
41588         Rename and reimplement with RTL codes to...
41589         (aarch64_<optab>hn2<mode>_insn_le): .. This.
41590         (aarch64_r<optab>hn2<mode>_insn_le): New pattern.
41591         (aarch64_<sur><addsub>hn2<mode>_insn_be): Rename and reimplement with RTL
41592         codes to...
41593         (aarch64_<optab>hn2<mode>_insn_be): ... This.
41594         (aarch64_r<optab>hn2<mode>_insn_be): New pattern.
41595         (aarch64_<sur><addsub>hn2<mode>): Rename and adjust expander to...
41596         (aarch64_<optab>hn2<mode>): ... This.
41597         (aarch64_r<optab>hn2<mode>): New expander.
41598         * config/aarch64/iterators.md (UNSPEC_ADDHN, UNSPEC_RADDHN,
41599         UNSPEC_SUBHN, UNSPEC_RSUBHN): Delete unspecs.
41600         (ADDSUBHN): Delete.
41601         (sur): Remove handling of the above.
41602         (addsub): Likewise.
41604 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
41606         * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
41607         Delete.
41608         (aarch64_<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
41609         (aarch64_<sur><addsub>hn<mode>_insn_be): Delete.
41610         (aarch64_r<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
41611         (aarch64_<sur><addsub>hn<mode>): Delete.
41612         (aarch64_<optab>hn<mode>): New define_expand.
41613         (aarch64_r<optab>hn<mode>): Likewise.
41614         * config/aarch64/predicates.md (aarch64_simd_raddsubhn_imm_vec):
41615         New predicate.
41617 2023-05-04  Andrew Pinski  <apinski@marvell.com>
41619         * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
41620         diamond form bb with forwarder only empty blocks better.
41622 2023-05-04  Andrew Pinski  <apinski@marvell.com>
41624         * tree-ssa-threadupdate.cc (copy_phi_arg_into_existing_phi): Move to ...
41625         * tree-cfg.cc (copy_phi_arg_into_existing_phi): Here and remove static.
41626         (gimple_duplicate_sese_tail): Use copy_phi_arg_into_existing_phi instead
41627         of an inline version of it.
41628         * tree-cfgcleanup.cc (remove_forwarder_block): Likewise.
41629         * tree-cfg.h (copy_phi_arg_into_existing_phi): New declaration.
41631 2023-05-04  Andrew Pinski  <apinski@marvell.com>
41633         * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Change
41634         the default argument value for dce_ssa_names to nullptr.
41635         Check to make sure dce_ssa_names is a non-nullptr before
41636         calling simple_dce_from_worklist.
41638 2023-05-04  Uros Bizjak  <ubizjak@gmail.com>
41640         * config/i386/predicates.md (index_register_operand): Reject
41641         arg_pointer_rtx, frame_pointer_rtx, stack_pointer_rtx and
41642         VIRTUAL_REGISTER_P operands.  Allow subregs of memory before reload.
41643         (call_register_no_elim_operand): Rewrite as ...
41644         (call_register_operand): ... this.
41645         (call_insn_operand): Use call_register_operand predicate.
41647 2023-05-04  Richard Biener  <rguenther@suse.de>
41649         PR tree-optimization/109721
41650         * tree-vect-stmts.cc (vectorizable_operation): Make sure
41651         to test word_mode for all !target_support_p operations.
41653 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
41655         PR target/99195
41656         * config/aarch64/aarch64-simd.md (aarch64_<su>aba<mode>): Rename to...
41657         (aarch64_<su>aba<mode><vczle><vczbe>): ... This.
41658         (aarch64_mla<mode>): Rename to...
41659         (aarch64_mla<mode><vczle><vczbe>): ... This.
41660         (*aarch64_mla_elt<mode>): Rename to...
41661         (*aarch64_mla_elt<mode><vczle><vczbe>): ... This.
41662         (*aarch64_mla_elt_<vswap_width_name><mode>): Rename to...
41663         (*aarch64_mla_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
41664         (aarch64_mla_n<mode>): Rename to...
41665         (aarch64_mla_n<mode><vczle><vczbe>): ... This.
41666         (aarch64_mls<mode>): Rename to...
41667         (aarch64_mls<mode><vczle><vczbe>): ... This.
41668         (*aarch64_mls_elt<mode>): Rename to...
41669         (*aarch64_mls_elt<mode><vczle><vczbe>): ... This.
41670         (*aarch64_mls_elt_<vswap_width_name><mode>): Rename to...
41671         (*aarch64_mls_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
41672         (aarch64_mls_n<mode>): Rename to...
41673         (aarch64_mls_n<mode><vczle><vczbe>): ... This.
41674         (fma<mode>4): Rename to...
41675         (fma<mode>4<vczle><vczbe>): ... This.
41676         (*aarch64_fma4_elt<mode>): Rename to...
41677         (*aarch64_fma4_elt<mode><vczle><vczbe>): ... This.
41678         (*aarch64_fma4_elt_<vswap_width_name><mode>): Rename to...
41679         (*aarch64_fma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
41680         (*aarch64_fma4_elt_from_dup<mode>): Rename to...
41681         (*aarch64_fma4_elt_from_dup<mode><vczle><vczbe>): ... This.
41682         (fnma<mode>4): Rename to...
41683         (fnma<mode>4<vczle><vczbe>): ... This.
41684         (*aarch64_fnma4_elt<mode>): Rename to...
41685         (*aarch64_fnma4_elt<mode><vczle><vczbe>): ... This.
41686         (*aarch64_fnma4_elt_<vswap_width_name><mode>): Rename to...
41687         (*aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
41688         (*aarch64_fnma4_elt_from_dup<mode>): Rename to...
41689         (*aarch64_fnma4_elt_from_dup<mode><vczle><vczbe>): ... This.
41690         (aarch64_simd_bsl<mode>_internal): Rename to...
41691         (aarch64_simd_bsl<mode>_internal<vczle><vczbe>): ... This.
41692         (*aarch64_simd_bsl<mode>_alt): Rename to...
41693         (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>): ... This.
41695 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
41697         PR target/99195
41698         * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>): Rename to...
41699         (aarch64_<su>abd<mode><vczle><vczbe>): ... This.
41700         (fabd<mode>3): Rename to...
41701         (fabd<mode>3<vczle><vczbe>): ... This.
41702         (aarch64_<optab>p<mode>): Rename to...
41703         (aarch64_<optab>p<mode><vczle><vczbe>): ... This.
41704         (aarch64_faddp<mode>): Rename to...
41705         (aarch64_faddp<mode><vczle><vczbe>): ... This.
41707 2023-05-04  Martin Liska  <mliska@suse.cz>
41709         * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
41710         (print_version): Use it.
41711         (generate_results): Likewise.
41713 2023-05-04  Richard Biener  <rguenther@suse.de>
41715         * tree-cfg.h (last_stmt): Rename to ...
41716         (last_nondebug_stmt): ... this.
41717         * tree-cfg.cc (last_stmt): Rename to ...
41718         (last_nondebug_stmt): ... this.
41719         (assign_discriminators): Adjust.
41720         (group_case_labels_stmt): Likewise.
41721         (gimple_can_duplicate_bb_p): Likewise.
41722         (execute_fixup_cfg): Likewise.
41723         * auto-profile.cc (afdo_propagate_circuit): Likewise.
41724         * gimple-range.cc (gimple_ranger::range_on_exit): Likewise.
41725         * omp-expand.cc (workshare_safe_to_combine_p): Likewise.
41726         (determine_parallel_type): Likewise.
41727         (adjust_context_and_scope): Likewise.
41728         (expand_task_call): Likewise.
41729         (remove_exit_barrier): Likewise.
41730         (expand_omp_taskreg): Likewise.
41731         (expand_omp_for_init_counts): Likewise.
41732         (expand_omp_for_init_vars): Likewise.
41733         (expand_omp_for_static_chunk): Likewise.
41734         (expand_omp_simd): Likewise.
41735         (expand_oacc_for): Likewise.
41736         (expand_omp_for): Likewise.
41737         (expand_omp_sections): Likewise.
41738         (expand_omp_atomic_fetch_op): Likewise.
41739         (expand_omp_atomic_cas): Likewise.
41740         (expand_omp_atomic): Likewise.
41741         (expand_omp_target): Likewise.
41742         (expand_omp): Likewise.
41743         (omp_make_gimple_edges): Likewise.
41744         * trans-mem.cc (tm_region_init): Likewise.
41745         * tree-inline.cc (redirect_all_calls): Likewise.
41746         * tree-parloops.cc (gen_parallel_loop): Likewise.
41747         * tree-ssa-loop-ch.cc (do_while_loop_p): Likewise.
41748         * tree-ssa-loop-ivcanon.cc (canonicalize_loop_induction_variables):
41749         Likewise.
41750         * tree-ssa-loop-ivopts.cc (stmt_after_ip_normal_pos): Likewise.
41751         (may_eliminate_iv): Likewise.
41752         * tree-ssa-loop-manip.cc (standard_iv_increment_position): Likewise.
41753         * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations):
41754         Likewise.
41755         (estimate_numbers_of_iterations): Likewise.
41756         * tree-ssa-loop-split.cc (compute_added_num_insns): Likewise.
41757         * tree-ssa-loop-unswitch.cc (get_predicates_for_bb): Likewise.
41758         (set_predicates_for_bb): Likewise.
41759         (init_loop_unswitch_info): Likewise.
41760         (hoist_guard): Likewise.
41761         * tree-ssa-phiopt.cc (match_simplify_replacement): Likewise.
41762         (minmax_replacement): Likewise.
41763         * tree-ssa-reassoc.cc (update_range_test): Likewise.
41764         (optimize_range_tests_to_bit_test): Likewise.
41765         (optimize_range_tests_var_bound): Likewise.
41766         (optimize_range_tests): Likewise.
41767         (no_side_effect_bb): Likewise.
41768         (suitable_cond_bb): Likewise.
41769         (maybe_optimize_range_tests): Likewise.
41770         (reassociate_bb): Likewise.
41771         * tree-vrp.cc (rvrp_folder::pre_fold_bb): Likewise.
41773 2023-05-04  Jakub Jelinek  <jakub@redhat.com>
41775         PR debug/109676
41776         * config/i386/i386-features.cc (timode_scalar_chain::convert_insn):
41777         If src is REG, change its mode to V1TImode and call fix_debug_reg_uses
41778         for it only if it still has TImode.  Don't decide whether to call
41779         fix_debug_reg_uses based on whether SRC is ever set or not.
41781 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
41783         * config/cris/cris.cc (cris_split_constant): New function.
41784         * config/cris/cris.md (splitop): New iterator.
41785         (opsplit1): New define_peephole2.
41786         * config/cris/cris-protos.h (cris_split_constant): Declare.
41787         (cris_splittable_constant_p): New macro.
41789 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
41791         * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
41792         to ALL_REGS.
41794 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
41796         * config/cris/cris.cc (cris_side_effect_mode_ok): Use
41797         lra_in_progress, not reload_in_progress.
41798         * config/cris/cris.md ("movdi", "*addi_reload"): Ditto.
41799         * config/cris/constraints.md ("Q"): Ditto.
41801 2023-05-03  Andrew Pinski  <apinski@marvell.com>
41803         * tree-ssa-dce.cc (simple_dce_from_worklist): Record
41804         stats on removed number of statements and phis.
41806 2023-05-03  Aldy Hernandez  <aldyh@redhat.com>
41808         PR tree-optimization/109711
41809         * value-range.cc (irange::verify_range): Allow types of
41810         error_mark_node.
41812 2023-05-03  Alexander Monakov  <amonakov@ispras.ru>
41814         PR sanitizer/90746
41815         * calls.cc (can_implement_as_sibling_call_p): Reject calls
41816         to __sanitizer_cov_trace_pc.
41818 2023-05-03  Richard Sandiford  <richard.sandiford@arm.com>
41820         PR target/109661
41821         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Add
41822         a new ABI break parameter for GCC 14.  Set it to the alignment
41823         of enums that have an underlying type.  Take the true alignment
41824         of such enums from the TYPE_ALIGN of the underlying type's
41825         TYPE_MAIN_VARIANT.
41826         (aarch64_function_arg_boundary): Update accordingly.
41827         (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise.
41828         Warn about ABI differences.
41830 2023-05-03  Richard Sandiford  <richard.sandiford@arm.com>
41832         PR target/109661
41833         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Rename
41834         ABI break variables to abi_break_gcc_9 and abi_break_gcc_13.
41835         (aarch64_layout_arg, aarch64_function_arg_boundary): Likewise.
41836         (aarch64_gimplify_va_arg_expr): Likewise.
41838 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
41840         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_NO_F)
41841         (FUNCTION_WITHOUT_N_NO_F, FUNCTION_WITH_M_N_NO_U_F): New.
41842         (vhaddq, vhsubq, vmulhq, vqaddq, vqsubq, vqdmulhq, vrhaddq)
41843         (vrmulhq): New.
41844         * config/arm/arm-mve-builtins-base.def (vhaddq, vhsubq, vmulhq)
41845         (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
41846         * config/arm/arm-mve-builtins-base.h (vhaddq, vhsubq, vmulhq)
41847         (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
41848         * config/arm/arm_mve.h (vhsubq): Remove.
41849         (vhaddq): Remove.
41850         (vhaddq_m): Remove.
41851         (vhsubq_m): Remove.
41852         (vhaddq_x): Remove.
41853         (vhsubq_x): Remove.
41854         (vhsubq_u8): Remove.
41855         (vhsubq_n_u8): Remove.
41856         (vhaddq_u8): Remove.
41857         (vhaddq_n_u8): Remove.
41858         (vhsubq_s8): Remove.
41859         (vhsubq_n_s8): Remove.
41860         (vhaddq_s8): Remove.
41861         (vhaddq_n_s8): Remove.
41862         (vhsubq_u16): Remove.
41863         (vhsubq_n_u16): Remove.
41864         (vhaddq_u16): Remove.
41865         (vhaddq_n_u16): Remove.
41866         (vhsubq_s16): Remove.
41867         (vhsubq_n_s16): Remove.
41868         (vhaddq_s16): Remove.
41869         (vhaddq_n_s16): Remove.
41870         (vhsubq_u32): Remove.
41871         (vhsubq_n_u32): Remove.
41872         (vhaddq_u32): Remove.
41873         (vhaddq_n_u32): Remove.
41874         (vhsubq_s32): Remove.
41875         (vhsubq_n_s32): Remove.
41876         (vhaddq_s32): Remove.
41877         (vhaddq_n_s32): Remove.
41878         (vhaddq_m_n_s8): Remove.
41879         (vhaddq_m_n_s32): Remove.
41880         (vhaddq_m_n_s16): Remove.
41881         (vhaddq_m_n_u8): Remove.
41882         (vhaddq_m_n_u32): Remove.
41883         (vhaddq_m_n_u16): Remove.
41884         (vhaddq_m_s8): Remove.
41885         (vhaddq_m_s32): Remove.
41886         (vhaddq_m_s16): Remove.
41887         (vhaddq_m_u8): Remove.
41888         (vhaddq_m_u32): Remove.
41889         (vhaddq_m_u16): Remove.
41890         (vhsubq_m_n_s8): Remove.
41891         (vhsubq_m_n_s32): Remove.
41892         (vhsubq_m_n_s16): Remove.
41893         (vhsubq_m_n_u8): Remove.
41894         (vhsubq_m_n_u32): Remove.
41895         (vhsubq_m_n_u16): Remove.
41896         (vhsubq_m_s8): Remove.
41897         (vhsubq_m_s32): Remove.
41898         (vhsubq_m_s16): Remove.
41899         (vhsubq_m_u8): Remove.
41900         (vhsubq_m_u32): Remove.
41901         (vhsubq_m_u16): Remove.
41902         (vhaddq_x_n_s8): Remove.
41903         (vhaddq_x_n_s16): Remove.
41904         (vhaddq_x_n_s32): Remove.
41905         (vhaddq_x_n_u8): Remove.
41906         (vhaddq_x_n_u16): Remove.
41907         (vhaddq_x_n_u32): Remove.
41908         (vhaddq_x_s8): Remove.
41909         (vhaddq_x_s16): Remove.
41910         (vhaddq_x_s32): Remove.
41911         (vhaddq_x_u8): Remove.
41912         (vhaddq_x_u16): Remove.
41913         (vhaddq_x_u32): Remove.
41914         (vhsubq_x_n_s8): Remove.
41915         (vhsubq_x_n_s16): Remove.
41916         (vhsubq_x_n_s32): Remove.
41917         (vhsubq_x_n_u8): Remove.
41918         (vhsubq_x_n_u16): Remove.
41919         (vhsubq_x_n_u32): Remove.
41920         (vhsubq_x_s8): Remove.
41921         (vhsubq_x_s16): Remove.
41922         (vhsubq_x_s32): Remove.
41923         (vhsubq_x_u8): Remove.
41924         (vhsubq_x_u16): Remove.
41925         (vhsubq_x_u32): Remove.
41926         (__arm_vhsubq_u8): Remove.
41927         (__arm_vhsubq_n_u8): Remove.
41928         (__arm_vhaddq_u8): Remove.
41929         (__arm_vhaddq_n_u8): Remove.
41930         (__arm_vhsubq_s8): Remove.
41931         (__arm_vhsubq_n_s8): Remove.
41932         (__arm_vhaddq_s8): Remove.
41933         (__arm_vhaddq_n_s8): Remove.
41934         (__arm_vhsubq_u16): Remove.
41935         (__arm_vhsubq_n_u16): Remove.
41936         (__arm_vhaddq_u16): Remove.
41937         (__arm_vhaddq_n_u16): Remove.
41938         (__arm_vhsubq_s16): Remove.
41939         (__arm_vhsubq_n_s16): Remove.
41940         (__arm_vhaddq_s16): Remove.
41941         (__arm_vhaddq_n_s16): Remove.
41942         (__arm_vhsubq_u32): Remove.
41943         (__arm_vhsubq_n_u32): Remove.
41944         (__arm_vhaddq_u32): Remove.
41945         (__arm_vhaddq_n_u32): Remove.
41946         (__arm_vhsubq_s32): Remove.
41947         (__arm_vhsubq_n_s32): Remove.
41948         (__arm_vhaddq_s32): Remove.
41949         (__arm_vhaddq_n_s32): Remove.
41950         (__arm_vhaddq_m_n_s8): Remove.
41951         (__arm_vhaddq_m_n_s32): Remove.
41952         (__arm_vhaddq_m_n_s16): Remove.
41953         (__arm_vhaddq_m_n_u8): Remove.
41954         (__arm_vhaddq_m_n_u32): Remove.
41955         (__arm_vhaddq_m_n_u16): Remove.
41956         (__arm_vhaddq_m_s8): Remove.
41957         (__arm_vhaddq_m_s32): Remove.
41958         (__arm_vhaddq_m_s16): Remove.
41959         (__arm_vhaddq_m_u8): Remove.
41960         (__arm_vhaddq_m_u32): Remove.
41961         (__arm_vhaddq_m_u16): Remove.
41962         (__arm_vhsubq_m_n_s8): Remove.
41963         (__arm_vhsubq_m_n_s32): Remove.
41964         (__arm_vhsubq_m_n_s16): Remove.
41965         (__arm_vhsubq_m_n_u8): Remove.
41966         (__arm_vhsubq_m_n_u32): Remove.
41967         (__arm_vhsubq_m_n_u16): Remove.
41968         (__arm_vhsubq_m_s8): Remove.
41969         (__arm_vhsubq_m_s32): Remove.
41970         (__arm_vhsubq_m_s16): Remove.
41971         (__arm_vhsubq_m_u8): Remove.
41972         (__arm_vhsubq_m_u32): Remove.
41973         (__arm_vhsubq_m_u16): Remove.
41974         (__arm_vhaddq_x_n_s8): Remove.
41975         (__arm_vhaddq_x_n_s16): Remove.
41976         (__arm_vhaddq_x_n_s32): Remove.
41977         (__arm_vhaddq_x_n_u8): Remove.
41978         (__arm_vhaddq_x_n_u16): Remove.
41979         (__arm_vhaddq_x_n_u32): Remove.
41980         (__arm_vhaddq_x_s8): Remove.
41981         (__arm_vhaddq_x_s16): Remove.
41982         (__arm_vhaddq_x_s32): Remove.
41983         (__arm_vhaddq_x_u8): Remove.
41984         (__arm_vhaddq_x_u16): Remove.
41985         (__arm_vhaddq_x_u32): Remove.
41986         (__arm_vhsubq_x_n_s8): Remove.
41987         (__arm_vhsubq_x_n_s16): Remove.
41988         (__arm_vhsubq_x_n_s32): Remove.
41989         (__arm_vhsubq_x_n_u8): Remove.
41990         (__arm_vhsubq_x_n_u16): Remove.
41991         (__arm_vhsubq_x_n_u32): Remove.
41992         (__arm_vhsubq_x_s8): Remove.
41993         (__arm_vhsubq_x_s16): Remove.
41994         (__arm_vhsubq_x_s32): Remove.
41995         (__arm_vhsubq_x_u8): Remove.
41996         (__arm_vhsubq_x_u16): Remove.
41997         (__arm_vhsubq_x_u32): Remove.
41998         (__arm_vhsubq): Remove.
41999         (__arm_vhaddq): Remove.
42000         (__arm_vhaddq_m): Remove.
42001         (__arm_vhsubq_m): Remove.
42002         (__arm_vhaddq_x): Remove.
42003         (__arm_vhsubq_x): Remove.
42004         (vmulhq): Remove.
42005         (vmulhq_m): Remove.
42006         (vmulhq_x): Remove.
42007         (vmulhq_u8): Remove.
42008         (vmulhq_s8): Remove.
42009         (vmulhq_u16): Remove.
42010         (vmulhq_s16): Remove.
42011         (vmulhq_u32): Remove.
42012         (vmulhq_s32): Remove.
42013         (vmulhq_m_s8): Remove.
42014         (vmulhq_m_s32): Remove.
42015         (vmulhq_m_s16): Remove.
42016         (vmulhq_m_u8): Remove.
42017         (vmulhq_m_u32): Remove.
42018         (vmulhq_m_u16): Remove.
42019         (vmulhq_x_s8): Remove.
42020         (vmulhq_x_s16): Remove.
42021         (vmulhq_x_s32): Remove.
42022         (vmulhq_x_u8): Remove.
42023         (vmulhq_x_u16): Remove.
42024         (vmulhq_x_u32): Remove.
42025         (__arm_vmulhq_u8): Remove.
42026         (__arm_vmulhq_s8): Remove.
42027         (__arm_vmulhq_u16): Remove.
42028         (__arm_vmulhq_s16): Remove.
42029         (__arm_vmulhq_u32): Remove.
42030         (__arm_vmulhq_s32): Remove.
42031         (__arm_vmulhq_m_s8): Remove.
42032         (__arm_vmulhq_m_s32): Remove.
42033         (__arm_vmulhq_m_s16): Remove.
42034         (__arm_vmulhq_m_u8): Remove.
42035         (__arm_vmulhq_m_u32): Remove.
42036         (__arm_vmulhq_m_u16): Remove.
42037         (__arm_vmulhq_x_s8): Remove.
42038         (__arm_vmulhq_x_s16): Remove.
42039         (__arm_vmulhq_x_s32): Remove.
42040         (__arm_vmulhq_x_u8): Remove.
42041         (__arm_vmulhq_x_u16): Remove.
42042         (__arm_vmulhq_x_u32): Remove.
42043         (__arm_vmulhq): Remove.
42044         (__arm_vmulhq_m): Remove.
42045         (__arm_vmulhq_x): Remove.
42046         (vqsubq): Remove.
42047         (vqaddq): Remove.
42048         (vqaddq_m): Remove.
42049         (vqsubq_m): Remove.
42050         (vqsubq_u8): Remove.
42051         (vqsubq_n_u8): Remove.
42052         (vqaddq_u8): Remove.
42053         (vqaddq_n_u8): Remove.
42054         (vqsubq_s8): Remove.
42055         (vqsubq_n_s8): Remove.
42056         (vqaddq_s8): Remove.
42057         (vqaddq_n_s8): Remove.
42058         (vqsubq_u16): Remove.
42059         (vqsubq_n_u16): Remove.
42060         (vqaddq_u16): Remove.
42061         (vqaddq_n_u16): Remove.
42062         (vqsubq_s16): Remove.
42063         (vqsubq_n_s16): Remove.
42064         (vqaddq_s16): Remove.
42065         (vqaddq_n_s16): Remove.
42066         (vqsubq_u32): Remove.
42067         (vqsubq_n_u32): Remove.
42068         (vqaddq_u32): Remove.
42069         (vqaddq_n_u32): Remove.
42070         (vqsubq_s32): Remove.
42071         (vqsubq_n_s32): Remove.
42072         (vqaddq_s32): Remove.
42073         (vqaddq_n_s32): Remove.
42074         (vqaddq_m_n_s8): Remove.
42075         (vqaddq_m_n_s32): Remove.
42076         (vqaddq_m_n_s16): Remove.
42077         (vqaddq_m_n_u8): Remove.
42078         (vqaddq_m_n_u32): Remove.
42079         (vqaddq_m_n_u16): Remove.
42080         (vqaddq_m_s8): Remove.
42081         (vqaddq_m_s32): Remove.
42082         (vqaddq_m_s16): Remove.
42083         (vqaddq_m_u8): Remove.
42084         (vqaddq_m_u32): Remove.
42085         (vqaddq_m_u16): Remove.
42086         (vqsubq_m_n_s8): Remove.
42087         (vqsubq_m_n_s32): Remove.
42088         (vqsubq_m_n_s16): Remove.
42089         (vqsubq_m_n_u8): Remove.
42090         (vqsubq_m_n_u32): Remove.
42091         (vqsubq_m_n_u16): Remove.
42092         (vqsubq_m_s8): Remove.
42093         (vqsubq_m_s32): Remove.
42094         (vqsubq_m_s16): Remove.
42095         (vqsubq_m_u8): Remove.
42096         (vqsubq_m_u32): Remove.
42097         (vqsubq_m_u16): Remove.
42098         (__arm_vqsubq_u8): Remove.
42099         (__arm_vqsubq_n_u8): Remove.
42100         (__arm_vqaddq_u8): Remove.
42101         (__arm_vqaddq_n_u8): Remove.
42102         (__arm_vqsubq_s8): Remove.
42103         (__arm_vqsubq_n_s8): Remove.
42104         (__arm_vqaddq_s8): Remove.
42105         (__arm_vqaddq_n_s8): Remove.
42106         (__arm_vqsubq_u16): Remove.
42107         (__arm_vqsubq_n_u16): Remove.
42108         (__arm_vqaddq_u16): Remove.
42109         (__arm_vqaddq_n_u16): Remove.
42110         (__arm_vqsubq_s16): Remove.
42111         (__arm_vqsubq_n_s16): Remove.
42112         (__arm_vqaddq_s16): Remove.
42113         (__arm_vqaddq_n_s16): Remove.
42114         (__arm_vqsubq_u32): Remove.
42115         (__arm_vqsubq_n_u32): Remove.
42116         (__arm_vqaddq_u32): Remove.
42117         (__arm_vqaddq_n_u32): Remove.
42118         (__arm_vqsubq_s32): Remove.
42119         (__arm_vqsubq_n_s32): Remove.
42120         (__arm_vqaddq_s32): Remove.
42121         (__arm_vqaddq_n_s32): Remove.
42122         (__arm_vqaddq_m_n_s8): Remove.
42123         (__arm_vqaddq_m_n_s32): Remove.
42124         (__arm_vqaddq_m_n_s16): Remove.
42125         (__arm_vqaddq_m_n_u8): Remove.
42126         (__arm_vqaddq_m_n_u32): Remove.
42127         (__arm_vqaddq_m_n_u16): Remove.
42128         (__arm_vqaddq_m_s8): Remove.
42129         (__arm_vqaddq_m_s32): Remove.
42130         (__arm_vqaddq_m_s16): Remove.
42131         (__arm_vqaddq_m_u8): Remove.
42132         (__arm_vqaddq_m_u32): Remove.
42133         (__arm_vqaddq_m_u16): Remove.
42134         (__arm_vqsubq_m_n_s8): Remove.
42135         (__arm_vqsubq_m_n_s32): Remove.
42136         (__arm_vqsubq_m_n_s16): Remove.
42137         (__arm_vqsubq_m_n_u8): Remove.
42138         (__arm_vqsubq_m_n_u32): Remove.
42139         (__arm_vqsubq_m_n_u16): Remove.
42140         (__arm_vqsubq_m_s8): Remove.
42141         (__arm_vqsubq_m_s32): Remove.
42142         (__arm_vqsubq_m_s16): Remove.
42143         (__arm_vqsubq_m_u8): Remove.
42144         (__arm_vqsubq_m_u32): Remove.
42145         (__arm_vqsubq_m_u16): Remove.
42146         (__arm_vqsubq): Remove.
42147         (__arm_vqaddq): Remove.
42148         (__arm_vqaddq_m): Remove.
42149         (__arm_vqsubq_m): Remove.
42150         (vqdmulhq): Remove.
42151         (vqdmulhq_m): Remove.
42152         (vqdmulhq_s8): Remove.
42153         (vqdmulhq_n_s8): Remove.
42154         (vqdmulhq_s16): Remove.
42155         (vqdmulhq_n_s16): Remove.
42156         (vqdmulhq_s32): Remove.
42157         (vqdmulhq_n_s32): Remove.
42158         (vqdmulhq_m_n_s8): Remove.
42159         (vqdmulhq_m_n_s32): Remove.
42160         (vqdmulhq_m_n_s16): Remove.
42161         (vqdmulhq_m_s8): Remove.
42162         (vqdmulhq_m_s32): Remove.
42163         (vqdmulhq_m_s16): Remove.
42164         (__arm_vqdmulhq_s8): Remove.
42165         (__arm_vqdmulhq_n_s8): Remove.
42166         (__arm_vqdmulhq_s16): Remove.
42167         (__arm_vqdmulhq_n_s16): Remove.
42168         (__arm_vqdmulhq_s32): Remove.
42169         (__arm_vqdmulhq_n_s32): Remove.
42170         (__arm_vqdmulhq_m_n_s8): Remove.
42171         (__arm_vqdmulhq_m_n_s32): Remove.
42172         (__arm_vqdmulhq_m_n_s16): Remove.
42173         (__arm_vqdmulhq_m_s8): Remove.
42174         (__arm_vqdmulhq_m_s32): Remove.
42175         (__arm_vqdmulhq_m_s16): Remove.
42176         (__arm_vqdmulhq): Remove.
42177         (__arm_vqdmulhq_m): Remove.
42178         (vrhaddq): Remove.
42179         (vrhaddq_m): Remove.
42180         (vrhaddq_x): Remove.
42181         (vrhaddq_u8): Remove.
42182         (vrhaddq_s8): Remove.
42183         (vrhaddq_u16): Remove.
42184         (vrhaddq_s16): Remove.
42185         (vrhaddq_u32): Remove.
42186         (vrhaddq_s32): Remove.
42187         (vrhaddq_m_s8): Remove.
42188         (vrhaddq_m_s32): Remove.
42189         (vrhaddq_m_s16): Remove.
42190         (vrhaddq_m_u8): Remove.
42191         (vrhaddq_m_u32): Remove.
42192         (vrhaddq_m_u16): Remove.
42193         (vrhaddq_x_s8): Remove.
42194         (vrhaddq_x_s16): Remove.
42195         (vrhaddq_x_s32): Remove.
42196         (vrhaddq_x_u8): Remove.
42197         (vrhaddq_x_u16): Remove.
42198         (vrhaddq_x_u32): Remove.
42199         (__arm_vrhaddq_u8): Remove.
42200         (__arm_vrhaddq_s8): Remove.
42201         (__arm_vrhaddq_u16): Remove.
42202         (__arm_vrhaddq_s16): Remove.
42203         (__arm_vrhaddq_u32): Remove.
42204         (__arm_vrhaddq_s32): Remove.
42205         (__arm_vrhaddq_m_s8): Remove.
42206         (__arm_vrhaddq_m_s32): Remove.
42207         (__arm_vrhaddq_m_s16): Remove.
42208         (__arm_vrhaddq_m_u8): Remove.
42209         (__arm_vrhaddq_m_u32): Remove.
42210         (__arm_vrhaddq_m_u16): Remove.
42211         (__arm_vrhaddq_x_s8): Remove.
42212         (__arm_vrhaddq_x_s16): Remove.
42213         (__arm_vrhaddq_x_s32): Remove.
42214         (__arm_vrhaddq_x_u8): Remove.
42215         (__arm_vrhaddq_x_u16): Remove.
42216         (__arm_vrhaddq_x_u32): Remove.
42217         (__arm_vrhaddq): Remove.
42218         (__arm_vrhaddq_m): Remove.
42219         (__arm_vrhaddq_x): Remove.
42220         (vrmulhq): Remove.
42221         (vrmulhq_m): Remove.
42222         (vrmulhq_x): Remove.
42223         (vrmulhq_u8): Remove.
42224         (vrmulhq_s8): Remove.
42225         (vrmulhq_u16): Remove.
42226         (vrmulhq_s16): Remove.
42227         (vrmulhq_u32): Remove.
42228         (vrmulhq_s32): Remove.
42229         (vrmulhq_m_s8): Remove.
42230         (vrmulhq_m_s32): Remove.
42231         (vrmulhq_m_s16): Remove.
42232         (vrmulhq_m_u8): Remove.
42233         (vrmulhq_m_u32): Remove.
42234         (vrmulhq_m_u16): Remove.
42235         (vrmulhq_x_s8): Remove.
42236         (vrmulhq_x_s16): Remove.
42237         (vrmulhq_x_s32): Remove.
42238         (vrmulhq_x_u8): Remove.
42239         (vrmulhq_x_u16): Remove.
42240         (vrmulhq_x_u32): Remove.
42241         (__arm_vrmulhq_u8): Remove.
42242         (__arm_vrmulhq_s8): Remove.
42243         (__arm_vrmulhq_u16): Remove.
42244         (__arm_vrmulhq_s16): Remove.
42245         (__arm_vrmulhq_u32): Remove.
42246         (__arm_vrmulhq_s32): Remove.
42247         (__arm_vrmulhq_m_s8): Remove.
42248         (__arm_vrmulhq_m_s32): Remove.
42249         (__arm_vrmulhq_m_s16): Remove.
42250         (__arm_vrmulhq_m_u8): Remove.
42251         (__arm_vrmulhq_m_u32): Remove.
42252         (__arm_vrmulhq_m_u16): Remove.
42253         (__arm_vrmulhq_x_s8): Remove.
42254         (__arm_vrmulhq_x_s16): Remove.
42255         (__arm_vrmulhq_x_s32): Remove.
42256         (__arm_vrmulhq_x_u8): Remove.
42257         (__arm_vrmulhq_x_u16): Remove.
42258         (__arm_vrmulhq_x_u32): Remove.
42259         (__arm_vrmulhq): Remove.
42260         (__arm_vrmulhq_m): Remove.
42261         (__arm_vrmulhq_x): Remove.
42263 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
42265         * config/arm/iterators.md (MVE_INT_SU_BINARY): New.
42266         (mve_insn): Add vabdq, vhaddq, vhsubq, vmulhq, vqaddq, vqdmulhq,
42267         vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq.
42268         (supf): Add VQDMULHQ_S, VQRDMULHQ_S.
42269         * config/arm/mve.md (mve_vabdq_<supf><mode>)
42270         (@mve_vhaddq_<supf><mode>, mve_vhsubq_<supf><mode>)
42271         (mve_vmulhq_<supf><mode>, mve_vqaddq_<supf><mode>)
42272         (mve_vqdmulhq_s<mode>, mve_vqrdmulhq_s<mode>)
42273         (mve_vqrshlq_<supf><mode>, mve_vqshlq_<supf><mode>)
42274         (mve_vqsubq_<supf><mode>, @mve_vrhaddq_<supf><mode>)
42275         (mve_vrmulhq_<supf><mode>, mve_vrshlq_<supf><mode>): Merge into
42276         ...
42277         (@mve_<mve_insn>q_<supf><mode>): ... this.
42278         * config/arm/vec-common.md (avg<mode>3_floor, uavg<mode>3_floor)
42279         (avg<mode>3_ceil, uavg<mode>3_ceil): Use gen_mve_q instead of
42280         gen_mve_vhaddq / gen_mve_vrhaddq.
42282 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
42284         * config/arm/iterators.md (MVE_INT_SU_M_N_BINARY): New.
42285         (mve_insn): Add vhaddq, vhsubq, vmlaq, vmlasq, vqaddq, vqdmlahq,
42286         vqdmlashq, vqdmulhq, vqrdmlahq, vqrdmlashq, vqrdmulhq, vqsubq.
42287         (supf): Add VQDMLAHQ_M_N_S, VQDMLASHQ_M_N_S, VQRDMLAHQ_M_N_S,
42288         VQRDMLASHQ_M_N_S, VQDMULHQ_M_N_S, VQRDMULHQ_M_N_S.
42289         * config/arm/mve.md (mve_vhaddq_m_n_<supf><mode>)
42290         (mve_vhsubq_m_n_<supf><mode>, mve_vmlaq_m_n_<supf><mode>)
42291         (mve_vmlasq_m_n_<supf><mode>, mve_vqaddq_m_n_<supf><mode>)
42292         (mve_vqdmlahq_m_n_s<mode>, mve_vqdmlashq_m_n_s<mode>)
42293         (mve_vqrdmlahq_m_n_s<mode>, mve_vqrdmlashq_m_n_s<mode>)
42294         (mve_vqsubq_m_n_<supf><mode>, mve_vqdmulhq_m_n_s<mode>)
42295         (mve_vqrdmulhq_m_n_s<mode>): Merge into ...
42296         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
42298 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
42300         * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New.
42301         (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq,
42302         vqsubq.
42303         (supf): Add VQDMULHQ_N_S, VQRDMULHQ_N_S.
42304         * config/arm/mve.md (mve_vhaddq_n_<supf><mode>)
42305         (mve_vhsubq_n_<supf><mode>, mve_vqaddq_n_<supf><mode>)
42306         (mve_vqdmulhq_n_s<mode>, mve_vqrdmulhq_n_s<mode>)
42307         (mve_vqsubq_n_<supf><mode>): Merge into ...
42308         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
42310 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
42312         * config/arm/iterators.md (MVE_INT_SU_M_BINARY): New.
42313         (mve_insn): Add vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq,
42314         vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq,
42315         vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq,
42316         vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq.
42317         (supf): Add VQDMLADHQ_M_S, VQDMLADHXQ_M_S, VQDMLSDHQ_M_S,
42318         VQDMLSDHXQ_M_S, VQDMULHQ_M_S, VQRDMLADHQ_M_S, VQRDMLADHXQ_M_S,
42319         VQRDMLSDHQ_M_S, VQRDMLSDHXQ_M_S, VQRDMULHQ_M_S.
42320         * config/arm/mve.md (@mve_<mve_insn>q_m_<supf><mode>): New.
42321         (mve_vshlq_m_<supf><mode>): Merged into
42322         @mve_<mve_insn>q_m_<supf><mode>.
42323         (mve_vabdq_m_<supf><mode>): Likewise.
42324         (mve_vhaddq_m_<supf><mode>): Likewise.
42325         (mve_vhsubq_m_<supf><mode>): Likewise.
42326         (mve_vmaxq_m_<supf><mode>): Likewise.
42327         (mve_vminq_m_<supf><mode>): Likewise.
42328         (mve_vmulhq_m_<supf><mode>): Likewise.
42329         (mve_vqaddq_m_<supf><mode>): Likewise.
42330         (mve_vqrshlq_m_<supf><mode>): Likewise.
42331         (mve_vqshlq_m_<supf><mode>): Likewise.
42332         (mve_vqsubq_m_<supf><mode>): Likewise.
42333         (mve_vrhaddq_m_<supf><mode>): Likewise.
42334         (mve_vrmulhq_m_<supf><mode>): Likewise.
42335         (mve_vrshlq_m_<supf><mode>): Likewise.
42336         (mve_vqdmladhq_m_s<mode>): Likewise.
42337         (mve_vqdmladhxq_m_s<mode>): Likewise.
42338         (mve_vqdmlsdhq_m_s<mode>): Likewise.
42339         (mve_vqdmlsdhxq_m_s<mode>): Likewise.
42340         (mve_vqdmulhq_m_s<mode>): Likewise.
42341         (mve_vqrdmladhq_m_s<mode>): Likewise.
42342         (mve_vqrdmladhxq_m_s<mode>): Likewise.
42343         (mve_vqrdmlsdhq_m_s<mode>): Likewise.
42344         (mve_vqrdmlsdhxq_m_s<mode>): Likewise.
42345         (mve_vqrdmulhq_m_s<mode>): Likewise.
42347 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
42349         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_M_N): New. (vcreateq): New.
42350         * config/arm/arm-mve-builtins-base.def (vcreateq): New.
42351         * config/arm/arm-mve-builtins-base.h (vcreateq): New.
42352         * config/arm/arm_mve.h (vcreateq_f16): Remove.
42353         (vcreateq_f32): Remove.
42354         (vcreateq_u8): Remove.
42355         (vcreateq_u16): Remove.
42356         (vcreateq_u32): Remove.
42357         (vcreateq_u64): Remove.
42358         (vcreateq_s8): Remove.
42359         (vcreateq_s16): Remove.
42360         (vcreateq_s32): Remove.
42361         (vcreateq_s64): Remove.
42362         (__arm_vcreateq_u8): Remove.
42363         (__arm_vcreateq_u16): Remove.
42364         (__arm_vcreateq_u32): Remove.
42365         (__arm_vcreateq_u64): Remove.
42366         (__arm_vcreateq_s8): Remove.
42367         (__arm_vcreateq_s16): Remove.
42368         (__arm_vcreateq_s32): Remove.
42369         (__arm_vcreateq_s64): Remove.
42370         (__arm_vcreateq_f16): Remove.
42371         (__arm_vcreateq_f32): Remove.
42373 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
42375         * config/arm/iterators.md (MVE_FP_CREATE_ONLY): New.
42376         (mve_insn): Add VCREATEQ_S, VCREATEQ_U, VCREATEQ_F.
42377         * config/arm/mve.md (mve_vcreateq_f<mode>): Rename into ...
42378         (@mve_<mve_insn>q_f<mode>): ... this.
42379         (mve_vcreateq_<supf><mode>): Rename into ...
42380         (@mve_<mve_insn>q_<supf><mode>): ... this.
42382 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
42384         * config/arm/arm-mve-builtins-shapes.cc (create): New.
42385         * config/arm/arm-mve-builtins-shapes.h: (create): New.
42387 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
42389         * config/arm/arm-mve-builtins-functions.h (class
42390         unspec_mve_function_exact_insn): New.
42392 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
42394         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): New.
42395         (vorrq): New.
42396         * config/arm/arm-mve-builtins-base.def (vorrq): New.
42397         * config/arm/arm-mve-builtins-base.h (vorrq): New.
42398         * config/arm/arm-mve-builtins.cc
42399         (function_instance::has_inactive_argument): Handle vorrq.
42400         * config/arm/arm_mve.h (vorrq): Remove.
42401         (vorrq_m_n): Remove.
42402         (vorrq_m): Remove.
42403         (vorrq_x): Remove.
42404         (vorrq_u8): Remove.
42405         (vorrq_s8): Remove.
42406         (vorrq_u16): Remove.
42407         (vorrq_s16): Remove.
42408         (vorrq_u32): Remove.
42409         (vorrq_s32): Remove.
42410         (vorrq_n_u16): Remove.
42411         (vorrq_f16): Remove.
42412         (vorrq_n_s16): Remove.
42413         (vorrq_n_u32): Remove.
42414         (vorrq_f32): Remove.
42415         (vorrq_n_s32): Remove.
42416         (vorrq_m_n_s16): Remove.
42417         (vorrq_m_n_u16): Remove.
42418         (vorrq_m_n_s32): Remove.
42419         (vorrq_m_n_u32): Remove.
42420         (vorrq_m_s8): Remove.
42421         (vorrq_m_s32): Remove.
42422         (vorrq_m_s16): Remove.
42423         (vorrq_m_u8): Remove.
42424         (vorrq_m_u32): Remove.
42425         (vorrq_m_u16): Remove.
42426         (vorrq_m_f32): Remove.
42427         (vorrq_m_f16): Remove.
42428         (vorrq_x_s8): Remove.
42429         (vorrq_x_s16): Remove.
42430         (vorrq_x_s32): Remove.
42431         (vorrq_x_u8): Remove.
42432         (vorrq_x_u16): Remove.
42433         (vorrq_x_u32): Remove.
42434         (vorrq_x_f16): Remove.
42435         (vorrq_x_f32): Remove.
42436         (__arm_vorrq_u8): Remove.
42437         (__arm_vorrq_s8): Remove.
42438         (__arm_vorrq_u16): Remove.
42439         (__arm_vorrq_s16): Remove.
42440         (__arm_vorrq_u32): Remove.
42441         (__arm_vorrq_s32): Remove.
42442         (__arm_vorrq_n_u16): Remove.
42443         (__arm_vorrq_n_s16): Remove.
42444         (__arm_vorrq_n_u32): Remove.
42445         (__arm_vorrq_n_s32): Remove.
42446         (__arm_vorrq_m_n_s16): Remove.
42447         (__arm_vorrq_m_n_u16): Remove.
42448         (__arm_vorrq_m_n_s32): Remove.
42449         (__arm_vorrq_m_n_u32): Remove.
42450         (__arm_vorrq_m_s8): Remove.
42451         (__arm_vorrq_m_s32): Remove.
42452         (__arm_vorrq_m_s16): Remove.
42453         (__arm_vorrq_m_u8): Remove.
42454         (__arm_vorrq_m_u32): Remove.
42455         (__arm_vorrq_m_u16): Remove.
42456         (__arm_vorrq_x_s8): Remove.
42457         (__arm_vorrq_x_s16): Remove.
42458         (__arm_vorrq_x_s32): Remove.
42459         (__arm_vorrq_x_u8): Remove.
42460         (__arm_vorrq_x_u16): Remove.
42461         (__arm_vorrq_x_u32): Remove.
42462         (__arm_vorrq_f16): Remove.
42463         (__arm_vorrq_f32): Remove.
42464         (__arm_vorrq_m_f32): Remove.
42465         (__arm_vorrq_m_f16): Remove.
42466         (__arm_vorrq_x_f16): Remove.
42467         (__arm_vorrq_x_f32): Remove.
42468         (__arm_vorrq): Remove.
42469         (__arm_vorrq_m_n): Remove.
42470         (__arm_vorrq_m): Remove.
42471         (__arm_vorrq_x): Remove.
42473 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
42475         * config/arm/arm-mve-builtins-shapes.cc (binary_orrq): New.
42476         * config/arm/arm-mve-builtins-shapes.h (binary_orrq): New.
42477         * config/arm/arm-mve-builtins.cc (preds_m_or_none): Remove static.
42478         * config/arm/arm-mve-builtins.h (preds_m_or_none): Declare.
42480 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
42482         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M): New.
42483         (vandq,veorq): New.
42484         * config/arm/arm-mve-builtins-base.def (vandq, veorq): New.
42485         * config/arm/arm-mve-builtins-base.h (vandq, veorq): New.
42486         * config/arm/arm_mve.h (vandq): Remove.
42487         (vandq_m): Remove.
42488         (vandq_x): Remove.
42489         (vandq_u8): Remove.
42490         (vandq_s8): Remove.
42491         (vandq_u16): Remove.
42492         (vandq_s16): Remove.
42493         (vandq_u32): Remove.
42494         (vandq_s32): Remove.
42495         (vandq_f16): Remove.
42496         (vandq_f32): Remove.
42497         (vandq_m_s8): Remove.
42498         (vandq_m_s32): Remove.
42499         (vandq_m_s16): Remove.
42500         (vandq_m_u8): Remove.
42501         (vandq_m_u32): Remove.
42502         (vandq_m_u16): Remove.
42503         (vandq_m_f32): Remove.
42504         (vandq_m_f16): Remove.
42505         (vandq_x_s8): Remove.
42506         (vandq_x_s16): Remove.
42507         (vandq_x_s32): Remove.
42508         (vandq_x_u8): Remove.
42509         (vandq_x_u16): Remove.
42510         (vandq_x_u32): Remove.
42511         (vandq_x_f16): Remove.
42512         (vandq_x_f32): Remove.
42513         (__arm_vandq_u8): Remove.
42514         (__arm_vandq_s8): Remove.
42515         (__arm_vandq_u16): Remove.
42516         (__arm_vandq_s16): Remove.
42517         (__arm_vandq_u32): Remove.
42518         (__arm_vandq_s32): Remove.
42519         (__arm_vandq_m_s8): Remove.
42520         (__arm_vandq_m_s32): Remove.
42521         (__arm_vandq_m_s16): Remove.
42522         (__arm_vandq_m_u8): Remove.
42523         (__arm_vandq_m_u32): Remove.
42524         (__arm_vandq_m_u16): Remove.
42525         (__arm_vandq_x_s8): Remove.
42526         (__arm_vandq_x_s16): Remove.
42527         (__arm_vandq_x_s32): Remove.
42528         (__arm_vandq_x_u8): Remove.
42529         (__arm_vandq_x_u16): Remove.
42530         (__arm_vandq_x_u32): Remove.
42531         (__arm_vandq_f16): Remove.
42532         (__arm_vandq_f32): Remove.
42533         (__arm_vandq_m_f32): Remove.
42534         (__arm_vandq_m_f16): Remove.
42535         (__arm_vandq_x_f16): Remove.
42536         (__arm_vandq_x_f32): Remove.
42537         (__arm_vandq): Remove.
42538         (__arm_vandq_m): Remove.
42539         (__arm_vandq_x): Remove.
42540         (veorq_m): Remove.
42541         (veorq_x): Remove.
42542         (veorq_u8): Remove.
42543         (veorq_s8): Remove.
42544         (veorq_u16): Remove.
42545         (veorq_s16): Remove.
42546         (veorq_u32): Remove.
42547         (veorq_s32): Remove.
42548         (veorq_f16): Remove.
42549         (veorq_f32): Remove.
42550         (veorq_m_s8): Remove.
42551         (veorq_m_s32): Remove.
42552         (veorq_m_s16): Remove.
42553         (veorq_m_u8): Remove.
42554         (veorq_m_u32): Remove.
42555         (veorq_m_u16): Remove.
42556         (veorq_m_f32): Remove.
42557         (veorq_m_f16): Remove.
42558         (veorq_x_s8): Remove.
42559         (veorq_x_s16): Remove.
42560         (veorq_x_s32): Remove.
42561         (veorq_x_u8): Remove.
42562         (veorq_x_u16): Remove.
42563         (veorq_x_u32): Remove.
42564         (veorq_x_f16): Remove.
42565         (veorq_x_f32): Remove.
42566         (__arm_veorq_u8): Remove.
42567         (__arm_veorq_s8): Remove.
42568         (__arm_veorq_u16): Remove.
42569         (__arm_veorq_s16): Remove.
42570         (__arm_veorq_u32): Remove.
42571         (__arm_veorq_s32): Remove.
42572         (__arm_veorq_m_s8): Remove.
42573         (__arm_veorq_m_s32): Remove.
42574         (__arm_veorq_m_s16): Remove.
42575         (__arm_veorq_m_u8): Remove.
42576         (__arm_veorq_m_u32): Remove.
42577         (__arm_veorq_m_u16): Remove.
42578         (__arm_veorq_x_s8): Remove.
42579         (__arm_veorq_x_s16): Remove.
42580         (__arm_veorq_x_s32): Remove.
42581         (__arm_veorq_x_u8): Remove.
42582         (__arm_veorq_x_u16): Remove.
42583         (__arm_veorq_x_u32): Remove.
42584         (__arm_veorq_f16): Remove.
42585         (__arm_veorq_f32): Remove.
42586         (__arm_veorq_m_f32): Remove.
42587         (__arm_veorq_m_f16): Remove.
42588         (__arm_veorq_x_f16): Remove.
42589         (__arm_veorq_x_f32): Remove.
42590         (__arm_veorq): Remove.
42591         (__arm_veorq_m): Remove.
42592         (__arm_veorq_x): Remove.
42594 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
42596         * config/arm/iterators.md (MVE_INT_M_BINARY_LOGIC)
42597         (MVE_FP_M_BINARY_LOGIC): New.
42598         (MVE_INT_M_N_BINARY_LOGIC): New.
42599         (MVE_INT_N_BINARY_LOGIC): New.
42600         (mve_insn): Add vand, veor, vorr, vbic.
42601         * config/arm/mve.md (mve_vandq_m_<supf><mode>)
42602         (mve_veorq_m_<supf><mode>, mve_vorrq_m_<supf><mode>)
42603         (mve_vbicq_m_<supf><mode>): Merge into ...
42604         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
42605         (mve_vandq_m_f<mode>, mve_veorq_m_f<mode>, mve_vorrq_m_f<mode>)
42606         (mve_vbicq_m_f<mode>): Merge into ...
42607         (@mve_<mve_insn>q_m_f<mode>): ... this.
42608         (mve_vorrq_n_<supf><mode>)
42609         (mve_vbicq_n_<supf><mode>): Merge into ...
42610         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
42611         (mve_vorrq_m_n_<supf><mode>, mve_vbicq_m_n_<supf><mode>): Merge
42612         into ...
42613         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
42615 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
42617         * config/arm/arm-mve-builtins-shapes.cc (binary): New.
42618         * config/arm/arm-mve-builtins-shapes.h (binary): New.
42620 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
42622         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N):
42623         New.
42624         (vaddq, vmulq, vsubq): New.
42625         * config/arm/arm-mve-builtins-base.def (vaddq, vmulq, vsubq): New.
42626         * config/arm/arm-mve-builtins-base.h (vaddq, vmulq, vsubq): New.
42627         * config/arm/arm_mve.h (vaddq): Remove.
42628         (vaddq_m): Remove.
42629         (vaddq_x): Remove.
42630         (vaddq_n_u8): Remove.
42631         (vaddq_n_s8): Remove.
42632         (vaddq_n_u16): Remove.
42633         (vaddq_n_s16): Remove.
42634         (vaddq_n_u32): Remove.
42635         (vaddq_n_s32): Remove.
42636         (vaddq_n_f16): Remove.
42637         (vaddq_n_f32): Remove.
42638         (vaddq_m_n_s8): Remove.
42639         (vaddq_m_n_s32): Remove.
42640         (vaddq_m_n_s16): Remove.
42641         (vaddq_m_n_u8): Remove.
42642         (vaddq_m_n_u32): Remove.
42643         (vaddq_m_n_u16): Remove.
42644         (vaddq_m_s8): Remove.
42645         (vaddq_m_s32): Remove.
42646         (vaddq_m_s16): Remove.
42647         (vaddq_m_u8): Remove.
42648         (vaddq_m_u32): Remove.
42649         (vaddq_m_u16): Remove.
42650         (vaddq_m_f32): Remove.
42651         (vaddq_m_f16): Remove.
42652         (vaddq_m_n_f32): Remove.
42653         (vaddq_m_n_f16): Remove.
42654         (vaddq_s8): Remove.
42655         (vaddq_s16): Remove.
42656         (vaddq_s32): Remove.
42657         (vaddq_u8): Remove.
42658         (vaddq_u16): Remove.
42659         (vaddq_u32): Remove.
42660         (vaddq_f16): Remove.
42661         (vaddq_f32): Remove.
42662         (vaddq_x_s8): Remove.
42663         (vaddq_x_s16): Remove.
42664         (vaddq_x_s32): Remove.
42665         (vaddq_x_n_s8): Remove.
42666         (vaddq_x_n_s16): Remove.
42667         (vaddq_x_n_s32): Remove.
42668         (vaddq_x_u8): Remove.
42669         (vaddq_x_u16): Remove.
42670         (vaddq_x_u32): Remove.
42671         (vaddq_x_n_u8): Remove.
42672         (vaddq_x_n_u16): Remove.
42673         (vaddq_x_n_u32): Remove.
42674         (vaddq_x_f16): Remove.
42675         (vaddq_x_f32): Remove.
42676         (vaddq_x_n_f16): Remove.
42677         (vaddq_x_n_f32): Remove.
42678         (__arm_vaddq_n_u8): Remove.
42679         (__arm_vaddq_n_s8): Remove.
42680         (__arm_vaddq_n_u16): Remove.
42681         (__arm_vaddq_n_s16): Remove.
42682         (__arm_vaddq_n_u32): Remove.
42683         (__arm_vaddq_n_s32): Remove.
42684         (__arm_vaddq_m_n_s8): Remove.
42685         (__arm_vaddq_m_n_s32): Remove.
42686         (__arm_vaddq_m_n_s16): Remove.
42687         (__arm_vaddq_m_n_u8): Remove.
42688         (__arm_vaddq_m_n_u32): Remove.
42689         (__arm_vaddq_m_n_u16): Remove.
42690         (__arm_vaddq_m_s8): Remove.
42691         (__arm_vaddq_m_s32): Remove.
42692         (__arm_vaddq_m_s16): Remove.
42693         (__arm_vaddq_m_u8): Remove.
42694         (__arm_vaddq_m_u32): Remove.
42695         (__arm_vaddq_m_u16): Remove.
42696         (__arm_vaddq_s8): Remove.
42697         (__arm_vaddq_s16): Remove.
42698         (__arm_vaddq_s32): Remove.
42699         (__arm_vaddq_u8): Remove.
42700         (__arm_vaddq_u16): Remove.
42701         (__arm_vaddq_u32): Remove.
42702         (__arm_vaddq_x_s8): Remove.
42703         (__arm_vaddq_x_s16): Remove.
42704         (__arm_vaddq_x_s32): Remove.
42705         (__arm_vaddq_x_n_s8): Remove.
42706         (__arm_vaddq_x_n_s16): Remove.
42707         (__arm_vaddq_x_n_s32): Remove.
42708         (__arm_vaddq_x_u8): Remove.
42709         (__arm_vaddq_x_u16): Remove.
42710         (__arm_vaddq_x_u32): Remove.
42711         (__arm_vaddq_x_n_u8): Remove.
42712         (__arm_vaddq_x_n_u16): Remove.
42713         (__arm_vaddq_x_n_u32): Remove.
42714         (__arm_vaddq_n_f16): Remove.
42715         (__arm_vaddq_n_f32): Remove.
42716         (__arm_vaddq_m_f32): Remove.
42717         (__arm_vaddq_m_f16): Remove.
42718         (__arm_vaddq_m_n_f32): Remove.
42719         (__arm_vaddq_m_n_f16): Remove.
42720         (__arm_vaddq_f16): Remove.
42721         (__arm_vaddq_f32): Remove.
42722         (__arm_vaddq_x_f16): Remove.
42723         (__arm_vaddq_x_f32): Remove.
42724         (__arm_vaddq_x_n_f16): Remove.
42725         (__arm_vaddq_x_n_f32): Remove.
42726         (__arm_vaddq): Remove.
42727         (__arm_vaddq_m): Remove.
42728         (__arm_vaddq_x): Remove.
42729         (vmulq): Remove.
42730         (vmulq_m): Remove.
42731         (vmulq_x): Remove.
42732         (vmulq_u8): Remove.
42733         (vmulq_n_u8): Remove.
42734         (vmulq_s8): Remove.
42735         (vmulq_n_s8): Remove.
42736         (vmulq_u16): Remove.
42737         (vmulq_n_u16): Remove.
42738         (vmulq_s16): Remove.
42739         (vmulq_n_s16): Remove.
42740         (vmulq_u32): Remove.
42741         (vmulq_n_u32): Remove.
42742         (vmulq_s32): Remove.
42743         (vmulq_n_s32): Remove.
42744         (vmulq_n_f16): Remove.
42745         (vmulq_f16): Remove.
42746         (vmulq_n_f32): Remove.
42747         (vmulq_f32): Remove.
42748         (vmulq_m_n_s8): Remove.
42749         (vmulq_m_n_s32): Remove.
42750         (vmulq_m_n_s16): Remove.
42751         (vmulq_m_n_u8): Remove.
42752         (vmulq_m_n_u32): Remove.
42753         (vmulq_m_n_u16): Remove.
42754         (vmulq_m_s8): Remove.
42755         (vmulq_m_s32): Remove.
42756         (vmulq_m_s16): Remove.
42757         (vmulq_m_u8): Remove.
42758         (vmulq_m_u32): Remove.
42759         (vmulq_m_u16): Remove.
42760         (vmulq_m_f32): Remove.
42761         (vmulq_m_f16): Remove.
42762         (vmulq_m_n_f32): Remove.
42763         (vmulq_m_n_f16): Remove.
42764         (vmulq_x_s8): Remove.
42765         (vmulq_x_s16): Remove.
42766         (vmulq_x_s32): Remove.
42767         (vmulq_x_n_s8): Remove.
42768         (vmulq_x_n_s16): Remove.
42769         (vmulq_x_n_s32): Remove.
42770         (vmulq_x_u8): Remove.
42771         (vmulq_x_u16): Remove.
42772         (vmulq_x_u32): Remove.
42773         (vmulq_x_n_u8): Remove.
42774         (vmulq_x_n_u16): Remove.
42775         (vmulq_x_n_u32): Remove.
42776         (vmulq_x_f16): Remove.
42777         (vmulq_x_f32): Remove.
42778         (vmulq_x_n_f16): Remove.
42779         (vmulq_x_n_f32): Remove.
42780         (__arm_vmulq_u8): Remove.
42781         (__arm_vmulq_n_u8): Remove.
42782         (__arm_vmulq_s8): Remove.
42783         (__arm_vmulq_n_s8): Remove.
42784         (__arm_vmulq_u16): Remove.
42785         (__arm_vmulq_n_u16): Remove.
42786         (__arm_vmulq_s16): Remove.
42787         (__arm_vmulq_n_s16): Remove.
42788         (__arm_vmulq_u32): Remove.
42789         (__arm_vmulq_n_u32): Remove.
42790         (__arm_vmulq_s32): Remove.
42791         (__arm_vmulq_n_s32): Remove.
42792         (__arm_vmulq_m_n_s8): Remove.
42793         (__arm_vmulq_m_n_s32): Remove.
42794         (__arm_vmulq_m_n_s16): Remove.
42795         (__arm_vmulq_m_n_u8): Remove.
42796         (__arm_vmulq_m_n_u32): Remove.
42797         (__arm_vmulq_m_n_u16): Remove.
42798         (__arm_vmulq_m_s8): Remove.
42799         (__arm_vmulq_m_s32): Remove.
42800         (__arm_vmulq_m_s16): Remove.
42801         (__arm_vmulq_m_u8): Remove.
42802         (__arm_vmulq_m_u32): Remove.
42803         (__arm_vmulq_m_u16): Remove.
42804         (__arm_vmulq_x_s8): Remove.
42805         (__arm_vmulq_x_s16): Remove.
42806         (__arm_vmulq_x_s32): Remove.
42807         (__arm_vmulq_x_n_s8): Remove.
42808         (__arm_vmulq_x_n_s16): Remove.
42809         (__arm_vmulq_x_n_s32): Remove.
42810         (__arm_vmulq_x_u8): Remove.
42811         (__arm_vmulq_x_u16): Remove.
42812         (__arm_vmulq_x_u32): Remove.
42813         (__arm_vmulq_x_n_u8): Remove.
42814         (__arm_vmulq_x_n_u16): Remove.
42815         (__arm_vmulq_x_n_u32): Remove.
42816         (__arm_vmulq_n_f16): Remove.
42817         (__arm_vmulq_f16): Remove.
42818         (__arm_vmulq_n_f32): Remove.
42819         (__arm_vmulq_f32): Remove.
42820         (__arm_vmulq_m_f32): Remove.
42821         (__arm_vmulq_m_f16): Remove.
42822         (__arm_vmulq_m_n_f32): Remove.
42823         (__arm_vmulq_m_n_f16): Remove.
42824         (__arm_vmulq_x_f16): Remove.
42825         (__arm_vmulq_x_f32): Remove.
42826         (__arm_vmulq_x_n_f16): Remove.
42827         (__arm_vmulq_x_n_f32): Remove.
42828         (__arm_vmulq): Remove.
42829         (__arm_vmulq_m): Remove.
42830         (__arm_vmulq_x): Remove.
42831         (vsubq): Remove.
42832         (vsubq_m): Remove.
42833         (vsubq_x): Remove.
42834         (vsubq_n_f16): Remove.
42835         (vsubq_n_f32): Remove.
42836         (vsubq_u8): Remove.
42837         (vsubq_n_u8): Remove.
42838         (vsubq_s8): Remove.
42839         (vsubq_n_s8): Remove.
42840         (vsubq_u16): Remove.
42841         (vsubq_n_u16): Remove.
42842         (vsubq_s16): Remove.
42843         (vsubq_n_s16): Remove.
42844         (vsubq_u32): Remove.
42845         (vsubq_n_u32): Remove.
42846         (vsubq_s32): Remove.
42847         (vsubq_n_s32): Remove.
42848         (vsubq_f16): Remove.
42849         (vsubq_f32): Remove.
42850         (vsubq_m_s8): Remove.
42851         (vsubq_m_u8): Remove.
42852         (vsubq_m_s16): Remove.
42853         (vsubq_m_u16): Remove.
42854         (vsubq_m_s32): Remove.
42855         (vsubq_m_u32): Remove.
42856         (vsubq_m_n_s8): Remove.
42857         (vsubq_m_n_s32): Remove.
42858         (vsubq_m_n_s16): Remove.
42859         (vsubq_m_n_u8): Remove.
42860         (vsubq_m_n_u32): Remove.
42861         (vsubq_m_n_u16): Remove.
42862         (vsubq_m_f32): Remove.
42863         (vsubq_m_f16): Remove.
42864         (vsubq_m_n_f32): Remove.
42865         (vsubq_m_n_f16): Remove.
42866         (vsubq_x_s8): Remove.
42867         (vsubq_x_s16): Remove.
42868         (vsubq_x_s32): Remove.
42869         (vsubq_x_n_s8): Remove.
42870         (vsubq_x_n_s16): Remove.
42871         (vsubq_x_n_s32): Remove.
42872         (vsubq_x_u8): Remove.
42873         (vsubq_x_u16): Remove.
42874         (vsubq_x_u32): Remove.
42875         (vsubq_x_n_u8): Remove.
42876         (vsubq_x_n_u16): Remove.
42877         (vsubq_x_n_u32): Remove.
42878         (vsubq_x_f16): Remove.
42879         (vsubq_x_f32): Remove.
42880         (vsubq_x_n_f16): Remove.
42881         (vsubq_x_n_f32): Remove.
42882         (__arm_vsubq_u8): Remove.
42883         (__arm_vsubq_n_u8): Remove.
42884         (__arm_vsubq_s8): Remove.
42885         (__arm_vsubq_n_s8): Remove.
42886         (__arm_vsubq_u16): Remove.
42887         (__arm_vsubq_n_u16): Remove.
42888         (__arm_vsubq_s16): Remove.
42889         (__arm_vsubq_n_s16): Remove.
42890         (__arm_vsubq_u32): Remove.
42891         (__arm_vsubq_n_u32): Remove.
42892         (__arm_vsubq_s32): Remove.
42893         (__arm_vsubq_n_s32): Remove.
42894         (__arm_vsubq_m_s8): Remove.
42895         (__arm_vsubq_m_u8): Remove.
42896         (__arm_vsubq_m_s16): Remove.
42897         (__arm_vsubq_m_u16): Remove.
42898         (__arm_vsubq_m_s32): Remove.
42899         (__arm_vsubq_m_u32): Remove.
42900         (__arm_vsubq_m_n_s8): Remove.
42901         (__arm_vsubq_m_n_s32): Remove.
42902         (__arm_vsubq_m_n_s16): Remove.
42903         (__arm_vsubq_m_n_u8): Remove.
42904         (__arm_vsubq_m_n_u32): Remove.
42905         (__arm_vsubq_m_n_u16): Remove.
42906         (__arm_vsubq_x_s8): Remove.
42907         (__arm_vsubq_x_s16): Remove.
42908         (__arm_vsubq_x_s32): Remove.
42909         (__arm_vsubq_x_n_s8): Remove.
42910         (__arm_vsubq_x_n_s16): Remove.
42911         (__arm_vsubq_x_n_s32): Remove.
42912         (__arm_vsubq_x_u8): Remove.
42913         (__arm_vsubq_x_u16): Remove.
42914         (__arm_vsubq_x_u32): Remove.
42915         (__arm_vsubq_x_n_u8): Remove.
42916         (__arm_vsubq_x_n_u16): Remove.
42917         (__arm_vsubq_x_n_u32): Remove.
42918         (__arm_vsubq_n_f16): Remove.
42919         (__arm_vsubq_n_f32): Remove.
42920         (__arm_vsubq_f16): Remove.
42921         (__arm_vsubq_f32): Remove.
42922         (__arm_vsubq_m_f32): Remove.
42923         (__arm_vsubq_m_f16): Remove.
42924         (__arm_vsubq_m_n_f32): Remove.
42925         (__arm_vsubq_m_n_f16): Remove.
42926         (__arm_vsubq_x_f16): Remove.
42927         (__arm_vsubq_x_f32): Remove.
42928         (__arm_vsubq_x_n_f16): Remove.
42929         (__arm_vsubq_x_n_f32): Remove.
42930         (__arm_vsubq): Remove.
42931         (__arm_vsubq_m): Remove.
42932         (__arm_vsubq_x): Remove.
42933         * config/arm/arm_mve_builtins.def (vsubq_u, vsubq_s, vsubq_f):
42934         Remove.
42935         (vmulq_u, vmulq_s, vmulq_f): Remove.
42936         * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove.
42937         (mve_vmulq_<supf><mode>): Remove.
42939 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
42941         * config/arm/iterators.md (MVE_INT_BINARY_RTX, MVE_INT_M_BINARY)
42942         (MVE_INT_M_N_BINARY, MVE_INT_N_BINARY, MVE_FP_M_BINARY)
42943         (MVE_FP_M_N_BINARY, MVE_FP_N_BINARY, mve_addsubmul, mve_insn): New
42944         iterators.
42945         * config/arm/mve.md
42946         (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
42947         Factorize into ...
42948         (@mve_<mve_insn>q_n_f<mode>): ... this.
42949         (mve_vaddq_n_<supf><mode>, mve_vmulq_n_<supf><mode>)
42950         (mve_vsubq_n_<supf><mode>): Factorize into ...
42951         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
42952         (mve_vaddq<mode>, mve_vmulq<mode>, mve_vsubq<mode>): Factorize
42953         into ...
42954         (mve_<mve_addsubmul>q<mode>): ... this.
42955         (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
42956         Factorize into ...
42957         (mve_<mve_addsubmul>q_f<mode>): ... this.
42958         (mve_vaddq_m_<supf><mode>, mve_vmulq_m_<supf><mode>)
42959         (mve_vsubq_m_<supf><mode>): Factorize into ...
42960         (@mve_<mve_insn>q_m_<supf><mode>): ... this,
42961         (mve_vaddq_m_n_<supf><mode>, mve_vmulq_m_n_<supf><mode>)
42962         (mve_vsubq_m_n_<supf><mode>): Factorize into ...
42963         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
42964         (mve_vaddq_m_f<mode>, mve_vmulq_m_f<mode>, mve_vsubq_m_f<mode>):
42965         Factorize into ...
42966         (@mve_<mve_insn>q_m_f<mode>): ... this.
42967         (mve_vaddq_m_n_f<mode>, mve_vmulq_m_n_f<mode>)
42968         (mve_vsubq_m_n_f<mode>): Factorize into ...
42969         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
42971 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
42973         * config/arm/arm-mve-builtins-functions.h (class
42974         unspec_based_mve_function_base): New.
42975         (class unspec_based_mve_function_exact_insn): New.
42977 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
42979         * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
42980         * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
42982 2023-05-03  Murray Steele  <murray.steele@arm.com>
42983             Christophe Lyon  <christophe.lyon@arm.com>
42985         * config/arm/arm-mve-builtins-base.cc (class
42986         vuninitializedq_impl): New.
42987         * config/arm/arm-mve-builtins-base.def (vuninitializedq): New.
42988         * config/arm/arm-mve-builtins-base.h (vuninitializedq): New
42989         declaration.
42990         * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
42991         * config/arm/arm-mve-builtins-shapes.h (inherent): New
42992         declaration.
42993         * config/arm/arm_mve_types.h (__arm_vuninitializedq): Move to ...
42994         * config/arm/arm_mve.h (__arm_vuninitializedq): ... here.
42995         (__arm_vuninitializedq_u8): Remove.
42996         (__arm_vuninitializedq_u16): Remove.
42997         (__arm_vuninitializedq_u32): Remove.
42998         (__arm_vuninitializedq_u64): Remove.
42999         (__arm_vuninitializedq_s8): Remove.
43000         (__arm_vuninitializedq_s16): Remove.
43001         (__arm_vuninitializedq_s32): Remove.
43002         (__arm_vuninitializedq_s64): Remove.
43003         (__arm_vuninitializedq_f16): Remove.
43004         (__arm_vuninitializedq_f32): Remove.
43006 2023-05-03  Murray Steele  <murray.steele@arm.com>
43007             Christophe Lyon  <christophe.lyon@arm.com>
43009         * config/arm/arm-mve-builtins-base.cc (vreinterpretq_impl): New class.
43010         * config/arm/arm-mve-builtins-base.def: Define vreinterpretq.
43011         * config/arm/arm-mve-builtins-base.h (vreinterpretq): New declaration.
43012         * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): New function.
43013         (parse_type): Likewise.
43014         (parse_signature): Likewise.
43015         (build_one): Likewise.
43016         (build_all): Likewise.
43017         (overloaded_base): New struct.
43018         (unary_convert_def): Likewise.
43019         * config/arm/arm-mve-builtins-shapes.h (unary_convert): Declare.
43020         * config/arm/arm-mve-builtins.cc (TYPES_reinterpret_signed1): New
43021         macro.
43022         (TYPES_reinterpret_unsigned1): Likewise.
43023         (TYPES_reinterpret_integer): Likewise.
43024         (TYPES_reinterpret_integer1): Likewise.
43025         (TYPES_reinterpret_float1): Likewise.
43026         (TYPES_reinterpret_float): Likewise.
43027         (reinterpret_integer): New.
43028         (reinterpret_float): New.
43029         (handle_arm_mve_h): Register builtins.
43030         * config/arm/arm_mve.h (vreinterpretq_s16): Remove.
43031         (vreinterpretq_s32): Likewise.
43032         (vreinterpretq_s64): Likewise.
43033         (vreinterpretq_s8): Likewise.
43034         (vreinterpretq_u16): Likewise.
43035         (vreinterpretq_u32): Likewise.
43036         (vreinterpretq_u64): Likewise.
43037         (vreinterpretq_u8): Likewise.
43038         (vreinterpretq_f16): Likewise.
43039         (vreinterpretq_f32): Likewise.
43040         (vreinterpretq_s16_s32): Likewise.
43041         (vreinterpretq_s16_s64): Likewise.
43042         (vreinterpretq_s16_s8): Likewise.
43043         (vreinterpretq_s16_u16): Likewise.
43044         (vreinterpretq_s16_u32): Likewise.
43045         (vreinterpretq_s16_u64): Likewise.
43046         (vreinterpretq_s16_u8): Likewise.
43047         (vreinterpretq_s32_s16): Likewise.
43048         (vreinterpretq_s32_s64): Likewise.
43049         (vreinterpretq_s32_s8): Likewise.
43050         (vreinterpretq_s32_u16): Likewise.
43051         (vreinterpretq_s32_u32): Likewise.
43052         (vreinterpretq_s32_u64): Likewise.
43053         (vreinterpretq_s32_u8): Likewise.
43054         (vreinterpretq_s64_s16): Likewise.
43055         (vreinterpretq_s64_s32): Likewise.
43056         (vreinterpretq_s64_s8): Likewise.
43057         (vreinterpretq_s64_u16): Likewise.
43058         (vreinterpretq_s64_u32): Likewise.
43059         (vreinterpretq_s64_u64): Likewise.
43060         (vreinterpretq_s64_u8): Likewise.
43061         (vreinterpretq_s8_s16): Likewise.
43062         (vreinterpretq_s8_s32): Likewise.
43063         (vreinterpretq_s8_s64): Likewise.
43064         (vreinterpretq_s8_u16): Likewise.
43065         (vreinterpretq_s8_u32): Likewise.
43066         (vreinterpretq_s8_u64): Likewise.
43067         (vreinterpretq_s8_u8): Likewise.
43068         (vreinterpretq_u16_s16): Likewise.
43069         (vreinterpretq_u16_s32): Likewise.
43070         (vreinterpretq_u16_s64): Likewise.
43071         (vreinterpretq_u16_s8): Likewise.
43072         (vreinterpretq_u16_u32): Likewise.
43073         (vreinterpretq_u16_u64): Likewise.
43074         (vreinterpretq_u16_u8): Likewise.
43075         (vreinterpretq_u32_s16): Likewise.
43076         (vreinterpretq_u32_s32): Likewise.
43077         (vreinterpretq_u32_s64): Likewise.
43078         (vreinterpretq_u32_s8): Likewise.
43079         (vreinterpretq_u32_u16): Likewise.
43080         (vreinterpretq_u32_u64): Likewise.
43081         (vreinterpretq_u32_u8): Likewise.
43082         (vreinterpretq_u64_s16): Likewise.
43083         (vreinterpretq_u64_s32): Likewise.
43084         (vreinterpretq_u64_s64): Likewise.
43085         (vreinterpretq_u64_s8): Likewise.
43086         (vreinterpretq_u64_u16): Likewise.
43087         (vreinterpretq_u64_u32): Likewise.
43088         (vreinterpretq_u64_u8): Likewise.
43089         (vreinterpretq_u8_s16): Likewise.
43090         (vreinterpretq_u8_s32): Likewise.
43091         (vreinterpretq_u8_s64): Likewise.
43092         (vreinterpretq_u8_s8): Likewise.
43093         (vreinterpretq_u8_u16): Likewise.
43094         (vreinterpretq_u8_u32): Likewise.
43095         (vreinterpretq_u8_u64): Likewise.
43096         (vreinterpretq_s32_f16): Likewise.
43097         (vreinterpretq_s32_f32): Likewise.
43098         (vreinterpretq_u16_f16): Likewise.
43099         (vreinterpretq_u16_f32): Likewise.
43100         (vreinterpretq_u32_f16): Likewise.
43101         (vreinterpretq_u32_f32): Likewise.
43102         (vreinterpretq_u64_f16): Likewise.
43103         (vreinterpretq_u64_f32): Likewise.
43104         (vreinterpretq_u8_f16): Likewise.
43105         (vreinterpretq_u8_f32): Likewise.
43106         (vreinterpretq_f16_f32): Likewise.
43107         (vreinterpretq_f16_s16): Likewise.
43108         (vreinterpretq_f16_s32): Likewise.
43109         (vreinterpretq_f16_s64): Likewise.
43110         (vreinterpretq_f16_s8): Likewise.
43111         (vreinterpretq_f16_u16): Likewise.
43112         (vreinterpretq_f16_u32): Likewise.
43113         (vreinterpretq_f16_u64): Likewise.
43114         (vreinterpretq_f16_u8): Likewise.
43115         (vreinterpretq_f32_f16): Likewise.
43116         (vreinterpretq_f32_s16): Likewise.
43117         (vreinterpretq_f32_s32): Likewise.
43118         (vreinterpretq_f32_s64): Likewise.
43119         (vreinterpretq_f32_s8): Likewise.
43120         (vreinterpretq_f32_u16): Likewise.
43121         (vreinterpretq_f32_u32): Likewise.
43122         (vreinterpretq_f32_u64): Likewise.
43123         (vreinterpretq_f32_u8): Likewise.
43124         (vreinterpretq_s16_f16): Likewise.
43125         (vreinterpretq_s16_f32): Likewise.
43126         (vreinterpretq_s64_f16): Likewise.
43127         (vreinterpretq_s64_f32): Likewise.
43128         (vreinterpretq_s8_f16): Likewise.
43129         (vreinterpretq_s8_f32): Likewise.
43130         (__arm_vreinterpretq_f16): Likewise.
43131         (__arm_vreinterpretq_f32): Likewise.
43132         (__arm_vreinterpretq_s16): Likewise.
43133         (__arm_vreinterpretq_s32): Likewise.
43134         (__arm_vreinterpretq_s64): Likewise.
43135         (__arm_vreinterpretq_s8): Likewise.
43136         (__arm_vreinterpretq_u16): Likewise.
43137         (__arm_vreinterpretq_u32): Likewise.
43138         (__arm_vreinterpretq_u64): Likewise.
43139         (__arm_vreinterpretq_u8): Likewise.
43140         * config/arm/arm_mve_types.h (__arm_vreinterpretq_s16_s32): Remove.
43141         (__arm_vreinterpretq_s16_s64): Likewise.
43142         (__arm_vreinterpretq_s16_s8): Likewise.
43143         (__arm_vreinterpretq_s16_u16): Likewise.
43144         (__arm_vreinterpretq_s16_u32): Likewise.
43145         (__arm_vreinterpretq_s16_u64): Likewise.
43146         (__arm_vreinterpretq_s16_u8): Likewise.
43147         (__arm_vreinterpretq_s32_s16): Likewise.
43148         (__arm_vreinterpretq_s32_s64): Likewise.
43149         (__arm_vreinterpretq_s32_s8): Likewise.
43150         (__arm_vreinterpretq_s32_u16): Likewise.
43151         (__arm_vreinterpretq_s32_u32): Likewise.
43152         (__arm_vreinterpretq_s32_u64): Likewise.
43153         (__arm_vreinterpretq_s32_u8): Likewise.
43154         (__arm_vreinterpretq_s64_s16): Likewise.
43155         (__arm_vreinterpretq_s64_s32): Likewise.
43156         (__arm_vreinterpretq_s64_s8): Likewise.
43157         (__arm_vreinterpretq_s64_u16): Likewise.
43158         (__arm_vreinterpretq_s64_u32): Likewise.
43159         (__arm_vreinterpretq_s64_u64): Likewise.
43160         (__arm_vreinterpretq_s64_u8): Likewise.
43161         (__arm_vreinterpretq_s8_s16): Likewise.
43162         (__arm_vreinterpretq_s8_s32): Likewise.
43163         (__arm_vreinterpretq_s8_s64): Likewise.
43164         (__arm_vreinterpretq_s8_u16): Likewise.
43165         (__arm_vreinterpretq_s8_u32): Likewise.
43166         (__arm_vreinterpretq_s8_u64): Likewise.
43167         (__arm_vreinterpretq_s8_u8): Likewise.
43168         (__arm_vreinterpretq_u16_s16): Likewise.
43169         (__arm_vreinterpretq_u16_s32): Likewise.
43170         (__arm_vreinterpretq_u16_s64): Likewise.
43171         (__arm_vreinterpretq_u16_s8): Likewise.
43172         (__arm_vreinterpretq_u16_u32): Likewise.
43173         (__arm_vreinterpretq_u16_u64): Likewise.
43174         (__arm_vreinterpretq_u16_u8): Likewise.
43175         (__arm_vreinterpretq_u32_s16): Likewise.
43176         (__arm_vreinterpretq_u32_s32): Likewise.
43177         (__arm_vreinterpretq_u32_s64): Likewise.
43178         (__arm_vreinterpretq_u32_s8): Likewise.
43179         (__arm_vreinterpretq_u32_u16): Likewise.
43180         (__arm_vreinterpretq_u32_u64): Likewise.
43181         (__arm_vreinterpretq_u32_u8): Likewise.
43182         (__arm_vreinterpretq_u64_s16): Likewise.
43183         (__arm_vreinterpretq_u64_s32): Likewise.
43184         (__arm_vreinterpretq_u64_s64): Likewise.
43185         (__arm_vreinterpretq_u64_s8): Likewise.
43186         (__arm_vreinterpretq_u64_u16): Likewise.
43187         (__arm_vreinterpretq_u64_u32): Likewise.
43188         (__arm_vreinterpretq_u64_u8): Likewise.
43189         (__arm_vreinterpretq_u8_s16): Likewise.
43190         (__arm_vreinterpretq_u8_s32): Likewise.
43191         (__arm_vreinterpretq_u8_s64): Likewise.
43192         (__arm_vreinterpretq_u8_s8): Likewise.
43193         (__arm_vreinterpretq_u8_u16): Likewise.
43194         (__arm_vreinterpretq_u8_u32): Likewise.
43195         (__arm_vreinterpretq_u8_u64): Likewise.
43196         (__arm_vreinterpretq_s32_f16): Likewise.
43197         (__arm_vreinterpretq_s32_f32): Likewise.
43198         (__arm_vreinterpretq_s16_f16): Likewise.
43199         (__arm_vreinterpretq_s16_f32): Likewise.
43200         (__arm_vreinterpretq_s64_f16): Likewise.
43201         (__arm_vreinterpretq_s64_f32): Likewise.
43202         (__arm_vreinterpretq_s8_f16): Likewise.
43203         (__arm_vreinterpretq_s8_f32): Likewise.
43204         (__arm_vreinterpretq_u16_f16): Likewise.
43205         (__arm_vreinterpretq_u16_f32): Likewise.
43206         (__arm_vreinterpretq_u32_f16): Likewise.
43207         (__arm_vreinterpretq_u32_f32): Likewise.
43208         (__arm_vreinterpretq_u64_f16): Likewise.
43209         (__arm_vreinterpretq_u64_f32): Likewise.
43210         (__arm_vreinterpretq_u8_f16): Likewise.
43211         (__arm_vreinterpretq_u8_f32): Likewise.
43212         (__arm_vreinterpretq_f16_f32): Likewise.
43213         (__arm_vreinterpretq_f16_s16): Likewise.
43214         (__arm_vreinterpretq_f16_s32): Likewise.
43215         (__arm_vreinterpretq_f16_s64): Likewise.
43216         (__arm_vreinterpretq_f16_s8): Likewise.
43217         (__arm_vreinterpretq_f16_u16): Likewise.
43218         (__arm_vreinterpretq_f16_u32): Likewise.
43219         (__arm_vreinterpretq_f16_u64): Likewise.
43220         (__arm_vreinterpretq_f16_u8): Likewise.
43221         (__arm_vreinterpretq_f32_f16): Likewise.
43222         (__arm_vreinterpretq_f32_s16): Likewise.
43223         (__arm_vreinterpretq_f32_s32): Likewise.
43224         (__arm_vreinterpretq_f32_s64): Likewise.
43225         (__arm_vreinterpretq_f32_s8): Likewise.
43226         (__arm_vreinterpretq_f32_u16): Likewise.
43227         (__arm_vreinterpretq_f32_u32): Likewise.
43228         (__arm_vreinterpretq_f32_u64): Likewise.
43229         (__arm_vreinterpretq_f32_u8): Likewise.
43230         (__arm_vreinterpretq_s16): Likewise.
43231         (__arm_vreinterpretq_s32): Likewise.
43232         (__arm_vreinterpretq_s64): Likewise.
43233         (__arm_vreinterpretq_s8): Likewise.
43234         (__arm_vreinterpretq_u16): Likewise.
43235         (__arm_vreinterpretq_u32): Likewise.
43236         (__arm_vreinterpretq_u64): Likewise.
43237         (__arm_vreinterpretq_u8): Likewise.
43238         (__arm_vreinterpretq_f16): Likewise.
43239         (__arm_vreinterpretq_f32): Likewise.
43240         * config/arm/mve.md (@arm_mve_reinterpret<mode>): New pattern.
43241         * config/arm/unspecs.md: (REINTERPRET): New unspec.
43243 2023-05-03  Murray Steele  <murray.steele@arm.com>
43244             Christophe Lyon  <christophe.lyon@arm.com>
43245             Christophe Lyon   <christophe.lyon@arm.com
43247         * config.gcc: Add arm-mve-builtins-base.o and
43248         arm-mve-builtins-shapes.o to extra_objs.
43249         * config/arm/arm-builtins.cc (arm_builtin_decl): Handle MVE builtin
43250         numberspace.
43251         (arm_expand_builtin): Likewise
43252         (arm_check_builtin_call): Likewise
43253         (arm_describe_resolver): Likewise.
43254         * config/arm/arm-builtins.h (enum resolver_ident): Add
43255         arm_mve_resolver.
43256         * config/arm/arm-c.cc (arm_pragma_arm): Handle new pragma.
43257         (arm_resolve_overloaded_builtin): Handle MVE builtins.
43258         (arm_register_target_pragmas): Register arm_check_builtin_call.
43259         * config/arm/arm-mve-builtins.cc (class registered_function): New
43260         class.
43261         (struct registered_function_hasher): New struct.
43262         (pred_suffixes): New table.
43263         (mode_suffixes): New table.
43264         (type_suffix_info): New table.
43265         (TYPES_float16): New.
43266         (TYPES_all_float): New.
43267         (TYPES_integer_8): New.
43268         (TYPES_integer_8_16): New.
43269         (TYPES_integer_16_32): New.
43270         (TYPES_integer_32): New.
43271         (TYPES_signed_16_32): New.
43272         (TYPES_signed_32): New.
43273         (TYPES_all_signed): New.
43274         (TYPES_all_unsigned): New.
43275         (TYPES_all_integer): New.
43276         (TYPES_all_integer_with_64): New.
43277         (DEF_VECTOR_TYPE): New.
43278         (DEF_DOUBLE_TYPE): New.
43279         (DEF_MVE_TYPES_ARRAY): New.
43280         (all_integer): New.
43281         (all_integer_with_64): New.
43282         (float16): New.
43283         (all_float): New.
43284         (all_signed): New.
43285         (all_unsigned): New.
43286         (integer_8): New.
43287         (integer_8_16): New.
43288         (integer_16_32): New.
43289         (integer_32): New.
43290         (signed_16_32): New.
43291         (signed_32): New.
43292         (register_vector_type): Use void_type_node for mve.fp-only types when
43293         mve.fp is not enabled.
43294         (register_builtin_tuple_types): Likewise.
43295         (handle_arm_mve_h): New function..
43296         (matches_type_p): Likewise..
43297         (report_out_of_range): Likewise.
43298         (report_not_enum): Likewise.
43299         (report_missing_float): Likewise.
43300         (report_non_ice): Likewise.
43301         (check_requires_float): Likewise.
43302         (function_instance::hash): Likewise
43303         (function_instance::call_properties): Likewise.
43304         (function_instance::reads_global_state_p): Likewise.
43305         (function_instance::modifies_global_state_p): Likewise.
43306         (function_instance::could_trap_p): Likewise.
43307         (function_instance::has_inactive_argument): Likewise.
43308         (registered_function_hasher::hash): Likewise.
43309         (registered_function_hasher::equal): Likewise.
43310         (function_builder::function_builder): Likewise.
43311         (function_builder::~function_builder): Likewise.
43312         (function_builder::append_name): Likewise.
43313         (function_builder::finish_name): Likewise.
43314         (function_builder::get_name): Likewise.
43315         (add_attribute): Likewise.
43316         (function_builder::get_attributes): Likewise.
43317         (function_builder::add_function): Likewise.
43318         (function_builder::add_unique_function): Likewise.
43319         (function_builder::add_overloaded_function): Likewise.
43320         (function_builder::add_overloaded_functions): Likewise.
43321         (function_builder::register_function_group): Likewise.
43322         (function_call_info::function_call_info): Likewise.
43323         (function_resolver::function_resolver): Likewise.
43324         (function_resolver::get_vector_type): Likewise.
43325         (function_resolver::get_scalar_type_name): Likewise.
43326         (function_resolver::get_argument_type): Likewise.
43327         (function_resolver::scalar_argument_p): Likewise.
43328         (function_resolver::report_no_such_form): Likewise.
43329         (function_resolver::lookup_form): Likewise.
43330         (function_resolver::resolve_to): Likewise.
43331         (function_resolver::infer_vector_or_tuple_type): Likewise.
43332         (function_resolver::infer_vector_type): Likewise.
43333         (function_resolver::require_vector_or_scalar_type): Likewise.
43334         (function_resolver::require_vector_type): Likewise.
43335         (function_resolver::require_matching_vector_type): Likewise.
43336         (function_resolver::require_derived_vector_type): Likewise.
43337         (function_resolver::require_derived_scalar_type): Likewise.
43338         (function_resolver::require_integer_immediate): Likewise.
43339         (function_resolver::require_scalar_type): Likewise.
43340         (function_resolver::check_num_arguments): Likewise.
43341         (function_resolver::check_gp_argument): Likewise.
43342         (function_resolver::finish_opt_n_resolution): Likewise.
43343         (function_resolver::resolve_unary): Likewise.
43344         (function_resolver::resolve_unary_n): Likewise.
43345         (function_resolver::resolve_uniform): Likewise.
43346         (function_resolver::resolve_uniform_opt_n): Likewise.
43347         (function_resolver::resolve): Likewise.
43348         (function_checker::function_checker): Likewise.
43349         (function_checker::argument_exists_p): Likewise.
43350         (function_checker::require_immediate): Likewise.
43351         (function_checker::require_immediate_enum): Likewise.
43352         (function_checker::require_immediate_range): Likewise.
43353         (function_checker::check): Likewise.
43354         (gimple_folder::gimple_folder): Likewise.
43355         (gimple_folder::fold): Likewise.
43356         (function_expander::function_expander): Likewise.
43357         (function_expander::direct_optab_handler): Likewise.
43358         (function_expander::get_fallback_value): Likewise.
43359         (function_expander::get_reg_target): Likewise.
43360         (function_expander::add_output_operand): Likewise.
43361         (function_expander::add_input_operand): Likewise.
43362         (function_expander::add_integer_operand): Likewise.
43363         (function_expander::generate_insn): Likewise.
43364         (function_expander::use_exact_insn): Likewise.
43365         (function_expander::use_unpred_insn): Likewise.
43366         (function_expander::use_pred_x_insn): Likewise.
43367         (function_expander::use_cond_insn): Likewise.
43368         (function_expander::map_to_rtx_codes): Likewise.
43369         (function_expander::expand): Likewise.
43370         (resolve_overloaded_builtin): Likewise.
43371         (check_builtin_call): Likewise.
43372         (gimple_fold_builtin): Likewise.
43373         (expand_builtin): Likewise.
43374         (gt_ggc_mx): Likewise.
43375         (gt_pch_nx): Likewise.
43376         (gt_pch_nx): Likewise.
43377         * config/arm/arm-mve-builtins.def(s8): Define new type suffix.
43378         (s16): Likewise.
43379         (s32): Likewise.
43380         (s64): Likewise.
43381         (u8): Likewise.
43382         (u16): Likewise.
43383         (u32): Likewise.
43384         (u64): Likewise.
43385         (f16): Likewise.
43386         (f32): Likewise.
43387         (n): New mode.
43388         (offset): New mode.
43389         * config/arm/arm-mve-builtins.h (MAX_TUPLE_SIZE): New constant.
43390         (CP_READ_FPCR): Likewise.
43391         (CP_RAISE_FP_EXCEPTIONS): Likewise.
43392         (CP_READ_MEMORY): Likewise.
43393         (CP_WRITE_MEMORY): Likewise.
43394         (enum units_index): New enum.
43395         (enum predication_index): New.
43396         (enum type_class_index): New.
43397         (enum mode_suffix_index): New enum.
43398         (enum type_suffix_index): New.
43399         (struct mode_suffix_info): New struct.
43400         (struct type_suffix_info): New.
43401         (struct function_group_info): Likewise.
43402         (class function_instance): Likewise.
43403         (class registered_function): Likewise.
43404         (class function_builder): Likewise.
43405         (class function_call_info): Likewise.
43406         (class function_resolver): Likewise.
43407         (class function_checker): Likewise.
43408         (class gimple_folder): Likewise.
43409         (class function_expander): Likewise.
43410         (get_mve_pred16_t): Likewise.
43411         (find_mode_suffix): New function.
43412         (class function_base): Likewise.
43413         (class function_shape): Likewise.
43414         (function_instance::operator==): New function.
43415         (function_instance::operator!=): Likewise.
43416         (function_instance::vectors_per_tuple): Likewise.
43417         (function_instance::mode_suffix): Likewise.
43418         (function_instance::type_suffix): Likewise.
43419         (function_instance::scalar_type): Likewise.
43420         (function_instance::vector_type): Likewise.
43421         (function_instance::tuple_type): Likewise.
43422         (function_instance::vector_mode): Likewise.
43423         (function_call_info::function_returns_void_p): Likewise.
43424         (function_base::call_properties): Likewise.
43425         * config/arm/arm-protos.h (enum arm_builtin_class): Add
43426         ARM_BUILTIN_MVE.
43427         (handle_arm_mve_h): New.
43428         (resolve_overloaded_builtin): New.
43429         (check_builtin_call): New.
43430         (gimple_fold_builtin): New.
43431         (expand_builtin): New.
43432         * config/arm/arm.cc (TARGET_GIMPLE_FOLD_BUILTIN): Define as
43433         arm_gimple_fold_builtin.
43434         (arm_gimple_fold_builtin): New function.
43435         * config/arm/arm_mve.h: Use new arm_mve.h pragma.
43436         * config/arm/predicates.md (arm_any_register_operand): New predicate.
43437         * config/arm/t-arm: (arm-mve-builtins.o): Add includes.
43438         (arm-mve-builtins-shapes.o): New target.
43439         (arm-mve-builtins-base.o): New target.
43440         * config/arm/arm-mve-builtins-base.cc: New file.
43441         * config/arm/arm-mve-builtins-base.def: New file.
43442         * config/arm/arm-mve-builtins-base.h: New file.
43443         * config/arm/arm-mve-builtins-functions.h: New file.
43444         * config/arm/arm-mve-builtins-shapes.cc: New file.
43445         * config/arm/arm-mve-builtins-shapes.h: New file.
43447 2023-05-03  Murray Steele  <murray.steele@arm.com>
43448             Christophe Lyon  <christophe.lyon@arm.com>
43449             Christophe Lyon   <christophe.lyon@arm.com>
43451         * config/arm/arm-builtins.cc (arm_general_add_builtin_function):
43452         New function.
43453         (arm_init_builtin): Use arm_general_add_builtin_function instead
43454         of arm_add_builtin_function.
43455         (arm_init_acle_builtins): Likewise.
43456         (arm_init_mve_builtins): Likewise.
43457         (arm_init_crypto_builtins): Likewise.
43458         (arm_init_builtins): Likewise.
43459         (arm_general_builtin_decl): New function.
43460         (arm_builtin_decl): Defer to numberspace-specialized functions.
43461         (arm_expand_builtin_args): Rename into arm_general_expand_builtin_args.
43462         (arm_expand_builtin_1): Rename into arm_general_expand_builtin_1 and ...
43463         (arm_general_expand_builtin_1): ... specialize for general builtins.
43464         (arm_expand_acle_builtin): Use arm_general_expand_builtin
43465         instead of arm_expand_builtin.
43466         (arm_expand_mve_builtin): Likewise.
43467         (arm_expand_neon_builtin): Likewise.
43468         (arm_expand_vfp_builtin): Likewise.
43469         (arm_general_expand_builtin): New function.
43470         (arm_expand_builtin): Specialize for general builtins.
43471         (arm_general_check_builtin_call): New function.
43472         (arm_check_builtin_call): Specialize for general builtins.
43473         (arm_describe_resolver): Validate numberspace.
43474         (arm_cde_end_args): Likewise.
43475         * config/arm/arm-protos.h (enum arm_builtin_class): New enum.
43476         (ARM_BUILTIN_SHIFT, ARM_BUILTIN_CLASS): New constants.
43478 2023-05-03  Martin Liska  <mliska@suse.cz>
43480         PR target/109713
43481         * config/riscv/sync.md: Add gcc_unreachable to a switch.
43483 2023-05-03  Richard Biener  <rguenther@suse.de>
43485         * tree-ssa-loop-split.cc (split_at_bb_p): Avoid last_stmt.
43486         (patch_loop_exit): Likewise.
43487         (connect_loops): Likewise.
43488         (split_loop): Likewise.
43489         (control_dep_semi_invariant_p): Likewise.
43490         (do_split_loop_on_cond): Likewise.
43491         (split_loop_on_cond): Likewise.
43492         * tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
43493         Likewise.
43494         (simplify_loop_version): Likewise.
43495         (evaluate_bbs): Likewise.
43496         (find_loop_guard): Likewise.
43497         (clean_up_after_unswitching): Likewise.
43498         * tree-ssa-math-opts.cc (maybe_optimize_guarding_check):
43499         Likewise.
43500         (optimize_spaceship): Take a gcond * argument, avoid
43501         last_stmt.
43502         (math_opts_dom_walker::after_dom_children): Adjust call to
43503         optimize_spaceship.
43504         * tree-vrp.cc (maybe_set_nonzero_bits): Avoid last_stmt.
43505         * value-pointer-equiv.cc (pointer_equiv_analyzer::visit_edge):
43506         Likewise.
43508 2023-05-03  Andreas Schwab  <schwab@suse.de>
43510         * config/riscv/linux.h (LIB_SPEC): Don't redefine.
43512 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43514         * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
43515         New function.
43516         (class vlseg): New class.
43517         (class vsseg): Ditto.
43518         (class vlsseg): Ditto.
43519         (class vssseg): Ditto.
43520         (class seg_indexed_load): Ditto.
43521         (class seg_indexed_store): Ditto.
43522         (class vlsegff): Ditto.
43523         (BASE): Ditto.
43524         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
43525         * config/riscv/riscv-vector-builtins-functions.def (vlseg):
43526         Ditto.
43527         (vsseg): Ditto.
43528         (vlsseg): Ditto.
43529         (vssseg): Ditto.
43530         (vluxseg): Ditto.
43531         (vloxseg): Ditto.
43532         (vsuxseg): Ditto.
43533         (vsoxseg): Ditto.
43534         (vlsegff): Ditto.
43535         * config/riscv/riscv-vector-builtins-shapes.cc (struct
43536         seg_loadstore_def): Ditto.
43537         (struct seg_indexed_loadstore_def): Ditto.
43538         (struct seg_fault_load_def): Ditto.
43539         (SHAPE): Ditto.
43540         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
43541         * config/riscv/riscv-vector-builtins.cc
43542         (function_builder::append_nf): New function.
43543         * config/riscv/riscv-vector-builtins.def (vfloat32m1x2_t):
43544         Change ptr from double into float.
43545         (vfloat32m1x3_t): Ditto.
43546         (vfloat32m1x4_t): Ditto.
43547         (vfloat32m1x5_t): Ditto.
43548         (vfloat32m1x6_t): Ditto.
43549         (vfloat32m1x7_t): Ditto.
43550         (vfloat32m1x8_t): Ditto.
43551         (vfloat32m2x2_t): Ditto.
43552         (vfloat32m2x3_t): Ditto.
43553         (vfloat32m2x4_t): Ditto.
43554         (vfloat32m4x2_t): Ditto.
43555         * config/riscv/riscv-vector-builtins.h: Add segment intrinsics.
43556         * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Adapt for
43557         segment ff load.
43558         * config/riscv/riscv.md: Add segment instructions.
43559         * config/riscv/vector-iterators.md: Support segment intrinsics.
43560         * config/riscv/vector.md (@pred_unit_strided_load<mode>): New
43561         pattern.
43562         (@pred_unit_strided_store<mode>): Ditto.
43563         (@pred_strided_load<mode>): Ditto.
43564         (@pred_strided_store<mode>): Ditto.
43565         (@pred_fault_load<mode>): Ditto.
43566         (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
43567         (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
43568         (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
43569         (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
43570         (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
43571         (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
43572         (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
43573         (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
43574         (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
43575         (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
43576         (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
43577         (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
43578         (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
43579         (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
43581 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43583         * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
43584         tuple type support.
43585         (inttype): Ditto.
43586         (floattype): Ditto.
43587         (main): Ditto.
43588         * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
43589         * config/riscv/riscv-vector-builtins-functions.def (vset): Add
43590         tuple type vset.
43591         (vget): Add tuple type vget.
43592         * config/riscv/riscv-vector-builtins-types.def
43593         (DEF_RVV_TUPLE_OPS): New macro.
43594         (vint8mf8x2_t): Ditto.
43595         (vuint8mf8x2_t): Ditto.
43596         (vint8mf8x3_t): Ditto.
43597         (vuint8mf8x3_t): Ditto.
43598         (vint8mf8x4_t): Ditto.
43599         (vuint8mf8x4_t): Ditto.
43600         (vint8mf8x5_t): Ditto.
43601         (vuint8mf8x5_t): Ditto.
43602         (vint8mf8x6_t): Ditto.
43603         (vuint8mf8x6_t): Ditto.
43604         (vint8mf8x7_t): Ditto.
43605         (vuint8mf8x7_t): Ditto.
43606         (vint8mf8x8_t): Ditto.
43607         (vuint8mf8x8_t): Ditto.
43608         (vint8mf4x2_t): Ditto.
43609         (vuint8mf4x2_t): Ditto.
43610         (vint8mf4x3_t): Ditto.
43611         (vuint8mf4x3_t): Ditto.
43612         (vint8mf4x4_t): Ditto.
43613         (vuint8mf4x4_t): Ditto.
43614         (vint8mf4x5_t): Ditto.
43615         (vuint8mf4x5_t): Ditto.
43616         (vint8mf4x6_t): Ditto.
43617         (vuint8mf4x6_t): Ditto.
43618         (vint8mf4x7_t): Ditto.
43619         (vuint8mf4x7_t): Ditto.
43620         (vint8mf4x8_t): Ditto.
43621         (vuint8mf4x8_t): Ditto.
43622         (vint8mf2x2_t): Ditto.
43623         (vuint8mf2x2_t): Ditto.
43624         (vint8mf2x3_t): Ditto.
43625         (vuint8mf2x3_t): Ditto.
43626         (vint8mf2x4_t): Ditto.
43627         (vuint8mf2x4_t): Ditto.
43628         (vint8mf2x5_t): Ditto.
43629         (vuint8mf2x5_t): Ditto.
43630         (vint8mf2x6_t): Ditto.
43631         (vuint8mf2x6_t): Ditto.
43632         (vint8mf2x7_t): Ditto.
43633         (vuint8mf2x7_t): Ditto.
43634         (vint8mf2x8_t): Ditto.
43635         (vuint8mf2x8_t): Ditto.
43636         (vint8m1x2_t): Ditto.
43637         (vuint8m1x2_t): Ditto.
43638         (vint8m1x3_t): Ditto.
43639         (vuint8m1x3_t): Ditto.
43640         (vint8m1x4_t): Ditto.
43641         (vuint8m1x4_t): Ditto.
43642         (vint8m1x5_t): Ditto.
43643         (vuint8m1x5_t): Ditto.
43644         (vint8m1x6_t): Ditto.
43645         (vuint8m1x6_t): Ditto.
43646         (vint8m1x7_t): Ditto.
43647         (vuint8m1x7_t): Ditto.
43648         (vint8m1x8_t): Ditto.
43649         (vuint8m1x8_t): Ditto.
43650         (vint8m2x2_t): Ditto.
43651         (vuint8m2x2_t): Ditto.
43652         (vint8m2x3_t): Ditto.
43653         (vuint8m2x3_t): Ditto.
43654         (vint8m2x4_t): Ditto.
43655         (vuint8m2x4_t): Ditto.
43656         (vint8m4x2_t): Ditto.
43657         (vuint8m4x2_t): Ditto.
43658         (vint16mf4x2_t): Ditto.
43659         (vuint16mf4x2_t): Ditto.
43660         (vint16mf4x3_t): Ditto.
43661         (vuint16mf4x3_t): Ditto.
43662         (vint16mf4x4_t): Ditto.
43663         (vuint16mf4x4_t): Ditto.
43664         (vint16mf4x5_t): Ditto.
43665         (vuint16mf4x5_t): Ditto.
43666         (vint16mf4x6_t): Ditto.
43667         (vuint16mf4x6_t): Ditto.
43668         (vint16mf4x7_t): Ditto.
43669         (vuint16mf4x7_t): Ditto.
43670         (vint16mf4x8_t): Ditto.
43671         (vuint16mf4x8_t): Ditto.
43672         (vint16mf2x2_t): Ditto.
43673         (vuint16mf2x2_t): Ditto.
43674         (vint16mf2x3_t): Ditto.
43675         (vuint16mf2x3_t): Ditto.
43676         (vint16mf2x4_t): Ditto.
43677         (vuint16mf2x4_t): Ditto.
43678         (vint16mf2x5_t): Ditto.
43679         (vuint16mf2x5_t): Ditto.
43680         (vint16mf2x6_t): Ditto.
43681         (vuint16mf2x6_t): Ditto.
43682         (vint16mf2x7_t): Ditto.
43683         (vuint16mf2x7_t): Ditto.
43684         (vint16mf2x8_t): Ditto.
43685         (vuint16mf2x8_t): Ditto.
43686         (vint16m1x2_t): Ditto.
43687         (vuint16m1x2_t): Ditto.
43688         (vint16m1x3_t): Ditto.
43689         (vuint16m1x3_t): Ditto.
43690         (vint16m1x4_t): Ditto.
43691         (vuint16m1x4_t): Ditto.
43692         (vint16m1x5_t): Ditto.
43693         (vuint16m1x5_t): Ditto.
43694         (vint16m1x6_t): Ditto.
43695         (vuint16m1x6_t): Ditto.
43696         (vint16m1x7_t): Ditto.
43697         (vuint16m1x7_t): Ditto.
43698         (vint16m1x8_t): Ditto.
43699         (vuint16m1x8_t): Ditto.
43700         (vint16m2x2_t): Ditto.
43701         (vuint16m2x2_t): Ditto.
43702         (vint16m2x3_t): Ditto.
43703         (vuint16m2x3_t): Ditto.
43704         (vint16m2x4_t): Ditto.
43705         (vuint16m2x4_t): Ditto.
43706         (vint16m4x2_t): Ditto.
43707         (vuint16m4x2_t): Ditto.
43708         (vint32mf2x2_t): Ditto.
43709         (vuint32mf2x2_t): Ditto.
43710         (vint32mf2x3_t): Ditto.
43711         (vuint32mf2x3_t): Ditto.
43712         (vint32mf2x4_t): Ditto.
43713         (vuint32mf2x4_t): Ditto.
43714         (vint32mf2x5_t): Ditto.
43715         (vuint32mf2x5_t): Ditto.
43716         (vint32mf2x6_t): Ditto.
43717         (vuint32mf2x6_t): Ditto.
43718         (vint32mf2x7_t): Ditto.
43719         (vuint32mf2x7_t): Ditto.
43720         (vint32mf2x8_t): Ditto.
43721         (vuint32mf2x8_t): Ditto.
43722         (vint32m1x2_t): Ditto.
43723         (vuint32m1x2_t): Ditto.
43724         (vint32m1x3_t): Ditto.
43725         (vuint32m1x3_t): Ditto.
43726         (vint32m1x4_t): Ditto.
43727         (vuint32m1x4_t): Ditto.
43728         (vint32m1x5_t): Ditto.
43729         (vuint32m1x5_t): Ditto.
43730         (vint32m1x6_t): Ditto.
43731         (vuint32m1x6_t): Ditto.
43732         (vint32m1x7_t): Ditto.
43733         (vuint32m1x7_t): Ditto.
43734         (vint32m1x8_t): Ditto.
43735         (vuint32m1x8_t): Ditto.
43736         (vint32m2x2_t): Ditto.
43737         (vuint32m2x2_t): Ditto.
43738         (vint32m2x3_t): Ditto.
43739         (vuint32m2x3_t): Ditto.
43740         (vint32m2x4_t): Ditto.
43741         (vuint32m2x4_t): Ditto.
43742         (vint32m4x2_t): Ditto.
43743         (vuint32m4x2_t): Ditto.
43744         (vint64m1x2_t): Ditto.
43745         (vuint64m1x2_t): Ditto.
43746         (vint64m1x3_t): Ditto.
43747         (vuint64m1x3_t): Ditto.
43748         (vint64m1x4_t): Ditto.
43749         (vuint64m1x4_t): Ditto.
43750         (vint64m1x5_t): Ditto.
43751         (vuint64m1x5_t): Ditto.
43752         (vint64m1x6_t): Ditto.
43753         (vuint64m1x6_t): Ditto.
43754         (vint64m1x7_t): Ditto.
43755         (vuint64m1x7_t): Ditto.
43756         (vint64m1x8_t): Ditto.
43757         (vuint64m1x8_t): Ditto.
43758         (vint64m2x2_t): Ditto.
43759         (vuint64m2x2_t): Ditto.
43760         (vint64m2x3_t): Ditto.
43761         (vuint64m2x3_t): Ditto.
43762         (vint64m2x4_t): Ditto.
43763         (vuint64m2x4_t): Ditto.
43764         (vint64m4x2_t): Ditto.
43765         (vuint64m4x2_t): Ditto.
43766         (vfloat32mf2x2_t): Ditto.
43767         (vfloat32mf2x3_t): Ditto.
43768         (vfloat32mf2x4_t): Ditto.
43769         (vfloat32mf2x5_t): Ditto.
43770         (vfloat32mf2x6_t): Ditto.
43771         (vfloat32mf2x7_t): Ditto.
43772         (vfloat32mf2x8_t): Ditto.
43773         (vfloat32m1x2_t): Ditto.
43774         (vfloat32m1x3_t): Ditto.
43775         (vfloat32m1x4_t): Ditto.
43776         (vfloat32m1x5_t): Ditto.
43777         (vfloat32m1x6_t): Ditto.
43778         (vfloat32m1x7_t): Ditto.
43779         (vfloat32m1x8_t): Ditto.
43780         (vfloat32m2x2_t): Ditto.
43781         (vfloat32m2x3_t): Ditto.
43782         (vfloat32m2x4_t): Ditto.
43783         (vfloat32m4x2_t): Ditto.
43784         (vfloat64m1x2_t): Ditto.
43785         (vfloat64m1x3_t): Ditto.
43786         (vfloat64m1x4_t): Ditto.
43787         (vfloat64m1x5_t): Ditto.
43788         (vfloat64m1x6_t): Ditto.
43789         (vfloat64m1x7_t): Ditto.
43790         (vfloat64m1x8_t): Ditto.
43791         (vfloat64m2x2_t): Ditto.
43792         (vfloat64m2x3_t): Ditto.
43793         (vfloat64m2x4_t): Ditto.
43794         (vfloat64m4x2_t): Ditto.
43795         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_OPS):
43796         Ditto.
43797         (DEF_RVV_TYPE_INDEX): Ditto.
43798         (rvv_arg_type_info::get_tuple_subpart_type): New function.
43799         (DEF_RVV_TUPLE_TYPE): New macro.
43800         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE_INDEX):
43801         Adapt for tuple vget/vset support.
43802         (vint8mf4_t): Ditto.
43803         (vuint8mf4_t): Ditto.
43804         (vint8mf2_t): Ditto.
43805         (vuint8mf2_t): Ditto.
43806         (vint8m1_t): Ditto.
43807         (vuint8m1_t): Ditto.
43808         (vint8m2_t): Ditto.
43809         (vuint8m2_t): Ditto.
43810         (vint8m4_t): Ditto.
43811         (vuint8m4_t): Ditto.
43812         (vint8m8_t): Ditto.
43813         (vuint8m8_t): Ditto.
43814         (vint16mf4_t): Ditto.
43815         (vuint16mf4_t): Ditto.
43816         (vint16mf2_t): Ditto.
43817         (vuint16mf2_t): Ditto.
43818         (vint16m1_t): Ditto.
43819         (vuint16m1_t): Ditto.
43820         (vint16m2_t): Ditto.
43821         (vuint16m2_t): Ditto.
43822         (vint16m4_t): Ditto.
43823         (vuint16m4_t): Ditto.
43824         (vint16m8_t): Ditto.
43825         (vuint16m8_t): Ditto.
43826         (vint32mf2_t): Ditto.
43827         (vuint32mf2_t): Ditto.
43828         (vint32m1_t): Ditto.
43829         (vuint32m1_t): Ditto.
43830         (vint32m2_t): Ditto.
43831         (vuint32m2_t): Ditto.
43832         (vint32m4_t): Ditto.
43833         (vuint32m4_t): Ditto.
43834         (vint32m8_t): Ditto.
43835         (vuint32m8_t): Ditto.
43836         (vint64m1_t): Ditto.
43837         (vuint64m1_t): Ditto.
43838         (vint64m2_t): Ditto.
43839         (vuint64m2_t): Ditto.
43840         (vint64m4_t): Ditto.
43841         (vuint64m4_t): Ditto.
43842         (vint64m8_t): Ditto.
43843         (vuint64m8_t): Ditto.
43844         (vfloat32mf2_t): Ditto.
43845         (vfloat32m1_t): Ditto.
43846         (vfloat32m2_t): Ditto.
43847         (vfloat32m4_t): Ditto.
43848         (vfloat32m8_t): Ditto.
43849         (vfloat64m1_t): Ditto.
43850         (vfloat64m2_t): Ditto.
43851         (vfloat64m4_t): Ditto.
43852         (vfloat64m8_t): Ditto.
43853         (tuple_subpart): Add tuple subpart base type.
43854         * config/riscv/riscv-vector-builtins.h (struct
43855         rvv_arg_type_info): Ditto.
43856         (tuple_type_field): New function.
43858 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
43860         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
43861         (RVV_TUPLE_PARTIAL_MODES): Ditto.
43862         * config/riscv/riscv-protos.h (riscv_v_ext_tuple_mode_p): New
43863         function.
43864         (get_nf): Ditto.
43865         (get_subpart_mode): Ditto.
43866         (get_tuple_mode): Ditto.
43867         (expand_tuple_move): Ditto.
43868         * config/riscv/riscv-v.cc (ENTRY): New macro.
43869         (TUPLE_ENTRY): Ditto.
43870         (get_nf): New function.
43871         (get_subpart_mode): Ditto.
43872         (get_tuple_mode): Ditto.
43873         (expand_tuple_move): Ditto.
43874         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_TYPE):
43875         New macro.
43876         (register_tuple_type): New function
43877         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
43878         New macro.
43879         (vint8mf8x2_t): New macro.
43880         (vuint8mf8x2_t): Ditto.
43881         (vint8mf8x3_t): Ditto.
43882         (vuint8mf8x3_t): Ditto.
43883         (vint8mf8x4_t): Ditto.
43884         (vuint8mf8x4_t): Ditto.
43885         (vint8mf8x5_t): Ditto.
43886         (vuint8mf8x5_t): Ditto.
43887         (vint8mf8x6_t): Ditto.
43888         (vuint8mf8x6_t): Ditto.
43889         (vint8mf8x7_t): Ditto.
43890         (vuint8mf8x7_t): Ditto.
43891         (vint8mf8x8_t): Ditto.
43892         (vuint8mf8x8_t): Ditto.
43893         (vint8mf4x2_t): Ditto.
43894         (vuint8mf4x2_t): Ditto.
43895         (vint8mf4x3_t): Ditto.
43896         (vuint8mf4x3_t): Ditto.
43897         (vint8mf4x4_t): Ditto.
43898         (vuint8mf4x4_t): Ditto.
43899         (vint8mf4x5_t): Ditto.
43900         (vuint8mf4x5_t): Ditto.
43901         (vint8mf4x6_t): Ditto.
43902         (vuint8mf4x6_t): Ditto.
43903         (vint8mf4x7_t): Ditto.
43904         (vuint8mf4x7_t): Ditto.
43905         (vint8mf4x8_t): Ditto.
43906         (vuint8mf4x8_t): Ditto.
43907         (vint8mf2x2_t): Ditto.
43908         (vuint8mf2x2_t): Ditto.
43909         (vint8mf2x3_t): Ditto.
43910         (vuint8mf2x3_t): Ditto.
43911         (vint8mf2x4_t): Ditto.
43912         (vuint8mf2x4_t): Ditto.
43913         (vint8mf2x5_t): Ditto.
43914         (vuint8mf2x5_t): Ditto.
43915         (vint8mf2x6_t): Ditto.
43916         (vuint8mf2x6_t): Ditto.
43917         (vint8mf2x7_t): Ditto.
43918         (vuint8mf2x7_t): Ditto.
43919         (vint8mf2x8_t): Ditto.
43920         (vuint8mf2x8_t): Ditto.
43921         (vint8m1x2_t): Ditto.
43922         (vuint8m1x2_t): Ditto.
43923         (vint8m1x3_t): Ditto.
43924         (vuint8m1x3_t): Ditto.
43925         (vint8m1x4_t): Ditto.
43926         (vuint8m1x4_t): Ditto.
43927         (vint8m1x5_t): Ditto.
43928         (vuint8m1x5_t): Ditto.
43929         (vint8m1x6_t): Ditto.
43930         (vuint8m1x6_t): Ditto.
43931         (vint8m1x7_t): Ditto.
43932         (vuint8m1x7_t): Ditto.
43933         (vint8m1x8_t): Ditto.
43934         (vuint8m1x8_t): Ditto.
43935         (vint8m2x2_t): Ditto.
43936         (vuint8m2x2_t): Ditto.
43937         (vint8m2x3_t): Ditto.
43938         (vuint8m2x3_t): Ditto.
43939         (vint8m2x4_t): Ditto.
43940         (vuint8m2x4_t): Ditto.
43941         (vint8m4x2_t): Ditto.
43942         (vuint8m4x2_t): Ditto.
43943         (vint16mf4x2_t): Ditto.
43944         (vuint16mf4x2_t): Ditto.
43945         (vint16mf4x3_t): Ditto.
43946         (vuint16mf4x3_t): Ditto.
43947         (vint16mf4x4_t): Ditto.
43948         (vuint16mf4x4_t): Ditto.
43949         (vint16mf4x5_t): Ditto.
43950         (vuint16mf4x5_t): Ditto.
43951         (vint16mf4x6_t): Ditto.
43952         (vuint16mf4x6_t): Ditto.
43953         (vint16mf4x7_t): Ditto.
43954         (vuint16mf4x7_t): Ditto.
43955         (vint16mf4x8_t): Ditto.
43956         (vuint16mf4x8_t): Ditto.
43957         (vint16mf2x2_t): Ditto.
43958         (vuint16mf2x2_t): Ditto.
43959         (vint16mf2x3_t): Ditto.
43960         (vuint16mf2x3_t): Ditto.
43961         (vint16mf2x4_t): Ditto.
43962         (vuint16mf2x4_t): Ditto.
43963         (vint16mf2x5_t): Ditto.
43964         (vuint16mf2x5_t): Ditto.
43965         (vint16mf2x6_t): Ditto.
43966         (vuint16mf2x6_t): Ditto.
43967         (vint16mf2x7_t): Ditto.
43968         (vuint16mf2x7_t): Ditto.
43969         (vint16mf2x8_t): Ditto.
43970         (vuint16mf2x8_t): Ditto.
43971         (vint16m1x2_t): Ditto.
43972         (vuint16m1x2_t): Ditto.
43973         (vint16m1x3_t): Ditto.
43974         (vuint16m1x3_t): Ditto.
43975         (vint16m1x4_t): Ditto.
43976         (vuint16m1x4_t): Ditto.
43977         (vint16m1x5_t): Ditto.
43978         (vuint16m1x5_t): Ditto.
43979         (vint16m1x6_t): Ditto.
43980         (vuint16m1x6_t): Ditto.
43981         (vint16m1x7_t): Ditto.
43982         (vuint16m1x7_t): Ditto.
43983         (vint16m1x8_t): Ditto.
43984         (vuint16m1x8_t): Ditto.
43985         (vint16m2x2_t): Ditto.
43986         (vuint16m2x2_t): Ditto.
43987         (vint16m2x3_t): Ditto.
43988         (vuint16m2x3_t): Ditto.
43989         (vint16m2x4_t): Ditto.
43990         (vuint16m2x4_t): Ditto.
43991         (vint16m4x2_t): Ditto.
43992         (vuint16m4x2_t): Ditto.
43993         (vint32mf2x2_t): Ditto.
43994         (vuint32mf2x2_t): Ditto.
43995         (vint32mf2x3_t): Ditto.
43996         (vuint32mf2x3_t): Ditto.
43997         (vint32mf2x4_t): Ditto.
43998         (vuint32mf2x4_t): Ditto.
43999         (vint32mf2x5_t): Ditto.
44000         (vuint32mf2x5_t): Ditto.
44001         (vint32mf2x6_t): Ditto.
44002         (vuint32mf2x6_t): Ditto.
44003         (vint32mf2x7_t): Ditto.
44004         (vuint32mf2x7_t): Ditto.
44005         (vint32mf2x8_t): Ditto.
44006         (vuint32mf2x8_t): Ditto.
44007         (vint32m1x2_t): Ditto.
44008         (vuint32m1x2_t): Ditto.
44009         (vint32m1x3_t): Ditto.
44010         (vuint32m1x3_t): Ditto.
44011         (vint32m1x4_t): Ditto.
44012         (vuint32m1x4_t): Ditto.
44013         (vint32m1x5_t): Ditto.
44014         (vuint32m1x5_t): Ditto.
44015         (vint32m1x6_t): Ditto.
44016         (vuint32m1x6_t): Ditto.
44017         (vint32m1x7_t): Ditto.
44018         (vuint32m1x7_t): Ditto.
44019         (vint32m1x8_t): Ditto.
44020         (vuint32m1x8_t): Ditto.
44021         (vint32m2x2_t): Ditto.
44022         (vuint32m2x2_t): Ditto.
44023         (vint32m2x3_t): Ditto.
44024         (vuint32m2x3_t): Ditto.
44025         (vint32m2x4_t): Ditto.
44026         (vuint32m2x4_t): Ditto.
44027         (vint32m4x2_t): Ditto.
44028         (vuint32m4x2_t): Ditto.
44029         (vint64m1x2_t): Ditto.
44030         (vuint64m1x2_t): Ditto.
44031         (vint64m1x3_t): Ditto.
44032         (vuint64m1x3_t): Ditto.
44033         (vint64m1x4_t): Ditto.
44034         (vuint64m1x4_t): Ditto.
44035         (vint64m1x5_t): Ditto.
44036         (vuint64m1x5_t): Ditto.
44037         (vint64m1x6_t): Ditto.
44038         (vuint64m1x6_t): Ditto.
44039         (vint64m1x7_t): Ditto.
44040         (vuint64m1x7_t): Ditto.
44041         (vint64m1x8_t): Ditto.
44042         (vuint64m1x8_t): Ditto.
44043         (vint64m2x2_t): Ditto.
44044         (vuint64m2x2_t): Ditto.
44045         (vint64m2x3_t): Ditto.
44046         (vuint64m2x3_t): Ditto.
44047         (vint64m2x4_t): Ditto.
44048         (vuint64m2x4_t): Ditto.
44049         (vint64m4x2_t): Ditto.
44050         (vuint64m4x2_t): Ditto.
44051         (vfloat32mf2x2_t): Ditto.
44052         (vfloat32mf2x3_t): Ditto.
44053         (vfloat32mf2x4_t): Ditto.
44054         (vfloat32mf2x5_t): Ditto.
44055         (vfloat32mf2x6_t): Ditto.
44056         (vfloat32mf2x7_t): Ditto.
44057         (vfloat32mf2x8_t): Ditto.
44058         (vfloat32m1x2_t): Ditto.
44059         (vfloat32m1x3_t): Ditto.
44060         (vfloat32m1x4_t): Ditto.
44061         (vfloat32m1x5_t): Ditto.
44062         (vfloat32m1x6_t): Ditto.
44063         (vfloat32m1x7_t): Ditto.
44064         (vfloat32m1x8_t): Ditto.
44065         (vfloat32m2x2_t): Ditto.
44066         (vfloat32m2x3_t): Ditto.
44067         (vfloat32m2x4_t): Ditto.
44068         (vfloat32m4x2_t): Ditto.
44069         (vfloat64m1x2_t): Ditto.
44070         (vfloat64m1x3_t): Ditto.
44071         (vfloat64m1x4_t): Ditto.
44072         (vfloat64m1x5_t): Ditto.
44073         (vfloat64m1x6_t): Ditto.
44074         (vfloat64m1x7_t): Ditto.
44075         (vfloat64m1x8_t): Ditto.
44076         (vfloat64m2x2_t): Ditto.
44077         (vfloat64m2x3_t): Ditto.
44078         (vfloat64m2x4_t): Ditto.
44079         (vfloat64m4x2_t): Ditto.
44080         * config/riscv/riscv-vector-builtins.h (DEF_RVV_TUPLE_TYPE):
44081         Ditto.
44082         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
44083         * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
44084         function.
44085         (TUPLE_ENTRY): Ditto.
44086         (riscv_v_ext_mode_p): New function.
44087         (riscv_v_adjust_nunits): Add tuple mode adjustment.
44088         (riscv_classify_address): Ditto.
44089         (riscv_binary_cost): Ditto.
44090         (riscv_rtx_costs): Ditto.
44091         (riscv_secondary_memory_needed): Ditto.
44092         (riscv_hard_regno_nregs): Ditto.
44093         (riscv_hard_regno_mode_ok): Ditto.
44094         (riscv_vector_mode_supported_p): Ditto.
44095         (riscv_regmode_natural_size): Ditto.
44096         (riscv_array_mode): New function.
44097         (TARGET_ARRAY_MODE): New target hook.
44098         * config/riscv/riscv.md: Add tuple modes.
44099         * config/riscv/vector-iterators.md: Ditto.
44100         * config/riscv/vector.md (mov<mode>): Add tuple modes data
44101         movement.
44102         (*mov<VT:mode>_<P:mode>): Ditto.
44104 2023-05-03  Richard Biener  <rguenther@suse.de>
44106         * cse.cc (cse_insn): Track an equivalence to the destination
44107         separately and delay using src_related for it.
44109 2023-05-03  Richard Biener  <rguenther@suse.de>
44111         * cse.cc (HASH): Turn into inline function and mix
44112         in another HASH_SHIFT bits.
44113         (SAFE_HASH): Likewise.
44115 2023-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
44117         PR target/99195
44118         * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to...
44119         (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This.
44121 2023-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
44123         PR target/99195
44124         * config/aarch64/aarch64-simd.md (add<mode>3): Rename to...
44125         (add<mode>3<vczle><vczbe>): ... This.
44126         (sub<mode>3): Rename to...
44127         (sub<mode>3<vczle><vczbe>): ... This.
44128         (mul<mode>3): Rename to...
44129         (mul<mode>3<vczle><vczbe>): ... This.
44130         (*div<mode>3): Rename to...
44131         (*div<mode>3<vczle><vczbe>): ... This.
44132         (neg<mode>2): Rename to...
44133         (neg<mode>2<vczle><vczbe>): ... This.
44134         (abs<mode>2): Rename to...
44135         (abs<mode>2<vczle><vczbe>): ... This.
44136         (<frint_pattern><mode>2): Rename to...
44137         (<frint_pattern><mode>2<vczle><vczbe>): ... This.
44138         (<fmaxmin><mode>3): Rename to...
44139         (<fmaxmin><mode>3<vczle><vczbe>): ... This.
44140         (*sqrt<mode>2): Rename to...
44141         (*sqrt<mode>2<vczle><vczbe>): ... This.
44143 2023-05-03  Kito Cheng  <kito.cheng@sifive.com>
44145         * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
44147 2023-05-03  Martin Liska  <mliska@suse.cz>
44149         PR tree-optimization/109693
44150         * value-range-storage.cc (vrange_allocator::vrange_allocator):
44151         Remove unused field.
44152         * value-range-storage.h: Likewise.
44154 2023-05-02  Andrew Pinski  <apinski@marvell.com>
44156         * tree-ssa-phiopt.cc (move_stmt): New function.
44157         (match_simplify_replacement): Use move_stmt instead
44158         of the inlined version.
44160 2023-05-02  Andrew Pinski  <apinski@marvell.com>
44162         * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
44163         pattern.
44165 2023-05-02  Andrew Pinski  <apinski@marvell.com>
44167         PR tree-optimization/109702
44168         * match.pd: Fix "a != 0 ? FUNC(a) : CST" patterns
44169         for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
44171 2023-05-02  Andrew Pinski  <apinski@marvell.com>
44173         PR target/109657
44174         * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
44175         insn_and_split pattern.
44177 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
44179         * config/riscv/sync.md (atomic_load<mode>): Implement atomic
44180         load mapping.
44182 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
44184         * config/riscv/sync.md (mem_thread_fence_1): Change fence
44185         depending on the given memory model.
44187 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
44189         * config/riscv/riscv-protos.h (riscv_union_memmodels): Expose
44190         riscv_union_memmodels function to sync.md.
44191         * config/riscv/riscv.cc (riscv_union_memmodels): Add function to
44192         get the union of two memmodels in sync.md.
44193         (riscv_print_operand): Add %I and %J flags that output the
44194         optimal LR/SC flag bits for a given memory model.
44195         * config/riscv/sync.md: Remove static .aqrl bits on LR op/.rl
44196         bits on SC op and replace with optimized %I, %J flags.
44198 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
44200         * config/riscv/riscv.cc
44201         (riscv_memmodel_needs_amo_release): Change function name.
44202         (riscv_print_operand): Remove unneeded %F case.
44203         * config/riscv/sync.md: Remove unneeded fences.
44205 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
44207         PR target/89835
44208         * config/riscv/sync.md (atomic_store<mode>): Use simple store
44209         instruction in combination with fence(s).
44211 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
44213         * config/riscv/riscv.cc (riscv_print_operand): Change behavior
44214         of %A to include release bits.
44216 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
44218         * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change
44219         FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl
44220         pair.
44222 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
44224         * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
44225         sequentially consistent LR.aqrl/SC.rl pairs.
44227 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
44229         * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
44230         sanitize memmodel input with memmodel_base.
44232 2023-05-02  Yanzhang Wang  <yanzhang.wang@intel.com>
44233             Pan Li  <pan2.li@intel.com>
44235         PR target/109617
44236         * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
44238 2023-05-02  Romain Naour  <romain.naour@gmail.com>
44240         * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
44241         the namespace.
44243 2023-05-02  Martin Liska  <mliska@suse.cz>
44245         * doc/invoke.texi: Update documentation based on param.opt file.
44247 2023-05-02  Richard Biener  <rguenther@suse.de>
44249         PR tree-optimization/109672
44250         * tree-vect-stmts.cc (vectorizable_operation): For plus,
44251         minus and negate always check the vector mode is word mode.
44253 2023-05-01  Andrew Pinski  <apinski@marvell.com>
44255         * tree-ssa-phiopt.cc: Update comment about
44256         how the transformation are implemented.
44258 2023-05-01  Jeff Law  <jlaw@ventanamicro>
44260         * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
44262 2023-05-01  Jeff Law  <jlaw@ventanamicro>
44264         * config/cris/cris.cc (TARGET_LRA_P): Remove.
44265         * config/epiphany/epiphany.cc (TARGET_LRA_P): Remove.
44266         * config/iq2000/iq2000.cc (TARGET_LRA_P): Remove.
44267         * config/m32r/m32r.cc (TARGET_LRA_P): Remove.
44268         * config/microblaze/microblaze.cc (TARGET_LRA_P): Remove.
44269         * config/mmix/mmix.cc (TARGET_LRA_P): Remove.
44271 2023-05-01  Rasmus Villemoes  <rasmus.villemoes@prevas.dk>
44273         * print-tree.h (PRINT_DECL_REMAP_DEBUG): New flag.
44274         * print-tree.cc (print_decl_identifier): Implement it.
44275         * toplev.cc (output_stack_usage_1): Use it.
44277 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
44279         * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
44280         friends.
44282 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
44284         * value-range.h (irange::set_nonzero): Inline.
44286 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
44288         * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct
44289         precision.
44290         * gimple-ssa-warn-alloca.cc (alloca_call_type): Use <2> for
44291         invalid_range, as it is an inverse range.
44292         * tree-vrp.cc (find_case_label_range): Avoid trees.
44293         * value-range.cc (irange::irange_set): Delete.
44294         (irange::irange_set_1bit_anti_range): Delete.
44295         (irange::irange_set_anti_range): Delete.
44296         (irange::set): Cleanup.
44297         * value-range.h (class irange): Remove irange_set,
44298         irange_set_anti_range, irange_set_1bit_anti_range.
44299         (irange::set_undefined): Remove set to m_type.
44301 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
44303         * range-op.cc (update_known_bitmask): Adjust for irange containing
44304         wide_ints internally.
44305         * tree-ssanames.cc (set_nonzero_bits): Same.
44306         * tree-ssanames.h (set_nonzero_bits): Same.
44307         * value-range-storage.cc (irange_storage::set_irange): Same.
44308         (irange_storage::get_irange): Same.
44309         * value-range.cc (irange::operator=): Same.
44310         (irange::irange_set): Same.
44311         (irange::irange_set_1bit_anti_range): Same.
44312         (irange::irange_set_anti_range): Same.
44313         (irange::set): Same.
44314         (irange::verify_range): Same.
44315         (irange::contains_p): Same.
44316         (irange::irange_single_pair_union): Same.
44317         (irange::union_): Same.
44318         (irange::irange_contains_p): Same.
44319         (irange::intersect): Same.
44320         (irange::invert): Same.
44321         (irange::set_range_from_nonzero_bits): Same.
44322         (irange::set_nonzero_bits): Same.
44323         (mask_to_wi): Same.
44324         (irange::intersect_nonzero_bits): Same.
44325         (irange::union_nonzero_bits): Same.
44326         (gt_ggc_mx): Same.
44327         (gt_pch_nx): Same.
44328         (tree_range): Same.
44329         (range_tests_strict_enum): Same.
44330         (range_tests_misc): Same.
44331         (range_tests_nonzero_bits): Same.
44332         * value-range.h (irange::type): Same.
44333         (irange::varying_compatible_p): Same.
44334         (irange::irange): Same.
44335         (int_range::int_range): Same.
44336         (irange::set_undefined): Same.
44337         (irange::set_varying): Same.
44338         (irange::lower_bound): Same.
44339         (irange::upper_bound): Same.
44341 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
44343         * gimple-range-fold.cc (tree_lower_bound): Delete.
44344         (tree_upper_bound): Delete.
44345         (vrp_val_max): Delete.
44346         (vrp_val_min): Delete.
44347         (fold_using_range::range_of_ssa_name_with_loop_info): Call
44348         range_of_var_in_loop.
44349         * vr-values.cc (valid_value_p): Delete.
44350         (fix_overflow): Delete.
44351         (get_scev_info): New.
44352         (bounds_of_var_in_loop): Refactor into...
44353         (induction_variable_may_overflow_p): ...this,
44354         (range_from_loop_direction): ...and this,
44355         (range_of_var_in_loop): ...and this.
44356         * vr-values.h (bounds_of_var_in_loop): Delete.
44357         (range_of_var_in_loop): New.
44359 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
44361         * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with
44362         irange_val*.
44363         (vrp_val_max): New.
44364         (vrp_val_min): New.
44365         * gimple-range-op.cc (cfn_strlen::fold_range): Use irange_val_*.
44366         * range-op.cc (max_limit): Same.
44367         (min_limit): Same.
44368         (plus_minus_ranges): Same.
44369         (operator_rshift::op1_range): Same.
44370         (operator_cast::inside_domain_p): Same.
44371         * value-range.cc (vrp_val_is_max): Delete.
44372         (vrp_val_is_min): Delete.
44373         (range_tests_misc): Use irange_val_*.
44374         * value-range.h (vrp_val_is_min): Delete.
44375         (vrp_val_is_max): Delete.
44376         (vrp_val_max): Delete.
44377         (irange_val_min): New.
44378         (vrp_val_min): Delete.
44379         (irange_val_max): New.
44380         * vr-values.cc (check_for_binary_op_overflow): Use irange_val_*.
44382 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
44384         * fold-const.cc (expr_not_equal_to): Convert to irange wide_int API.
44385         * gimple-fold.cc (size_must_be_zero_p): Same.
44386         * gimple-loop-versioning.cc
44387         (loop_versioning::prune_loop_conditions): Same.
44388         * gimple-range-edge.cc (gcond_edge_range): Same.
44389         (gimple_outgoing_range::calc_switch_ranges): Same.
44390         * gimple-range-fold.cc (adjust_imagpart_expr): Same.
44391         (adjust_realpart_expr): Same.
44392         (fold_using_range::range_of_address): Same.
44393         (fold_using_range::relation_fold_and_or): Same.
44394         * gimple-range-gori.cc (gori_compute::gori_compute): Same.
44395         (range_is_either_true_or_false): Same.
44396         * gimple-range-op.cc (cfn_toupper_tolower::get_letter_range): Same.
44397         (cfn_clz::fold_range): Same.
44398         (cfn_ctz::fold_range): Same.
44399         * gimple-range-tests.cc (class test_expr_eval): Same.
44400         * gimple-ssa-warn-alloca.cc (alloca_call_type): Same.
44401         * ipa-cp.cc (ipa_value_range_from_jfunc): Same.
44402         (propagate_vr_across_jump_function): Same.
44403         (decide_whether_version_node): Same.
44404         * ipa-prop.cc (ipa_get_value_range): Same.
44405         * ipa-prop.h (ipa_range_set_and_normalize): Same.
44406         * range-op.cc (get_shift_range): Same.
44407         (value_range_from_overflowed_bounds): Same.
44408         (value_range_with_overflow): Same.
44409         (create_possibly_reversed_range): Same.
44410         (equal_op1_op2_relation): Same.
44411         (not_equal_op1_op2_relation): Same.
44412         (lt_op1_op2_relation): Same.
44413         (le_op1_op2_relation): Same.
44414         (gt_op1_op2_relation): Same.
44415         (ge_op1_op2_relation): Same.
44416         (operator_mult::op1_range): Same.
44417         (operator_exact_divide::op1_range): Same.
44418         (operator_lshift::op1_range): Same.
44419         (operator_rshift::op1_range): Same.
44420         (operator_cast::op1_range): Same.
44421         (operator_logical_and::fold_range): Same.
44422         (set_nonzero_range_from_mask): Same.
44423         (operator_bitwise_or::op1_range): Same.
44424         (operator_bitwise_xor::op1_range): Same.
44425         (operator_addr_expr::fold_range): Same.
44426         (pointer_plus_operator::wi_fold): Same.
44427         (pointer_or_operator::op1_range): Same.
44428         (INT): Same.
44429         (UINT): Same.
44430         (INT16): Same.
44431         (UINT16): Same.
44432         (SCHAR): Same.
44433         (UCHAR): Same.
44434         (range_op_cast_tests): Same.
44435         (range_op_lshift_tests): Same.
44436         (range_op_rshift_tests): Same.
44437         (range_op_bitwise_and_tests): Same.
44438         (range_relational_tests): Same.
44439         * range.cc (range_zero): Same.
44440         (range_nonzero): Same.
44441         * range.h (range_true): Same.
44442         (range_false): Same.
44443         (range_true_and_false): Same.
44444         * tree-data-ref.cc (split_constant_offset_1): Same.
44445         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Same.
44446         * tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Same.
44447         (find_unswitching_predicates_for_bb): Same.
44448         * tree-ssa-phiopt.cc (value_replacement): Same.
44449         * tree-ssa-threadbackward.cc
44450         (back_threader::find_taken_edge_cond): Same.
44451         * tree-ssanames.cc (ssa_name_has_boolean_range): Same.
44452         * tree-vrp.cc (find_case_label_range): Same.
44453         * value-query.cc (range_query::get_tree_range): Same.
44454         * value-range.cc (irange::set_nonnegative): Same.
44455         (frange::contains_p): Same.
44456         (frange::singleton_p): Same.
44457         (frange::internal_singleton_p): Same.
44458         (irange::irange_set): Same.
44459         (irange::irange_set_1bit_anti_range): Same.
44460         (irange::irange_set_anti_range): Same.
44461         (irange::set): Same.
44462         (irange::operator==): Same.
44463         (irange::singleton_p): Same.
44464         (irange::contains_p): Same.
44465         (irange::set_range_from_nonzero_bits): Same.
44466         (DEFINE_INT_RANGE_INSTANCE): Same.
44467         (INT): Same.
44468         (UINT): Same.
44469         (SCHAR): Same.
44470         (UINT128): Same.
44471         (UCHAR): Same.
44472         (range): New.
44473         (tree_range): New.
44474         (range_int): New.
44475         (range_uint): New.
44476         (range_uint128): New.
44477         (range_uchar): New.
44478         (range_char): New.
44479         (build_range3): Convert to irange wide_int API.
44480         (range_tests_irange3): Same.
44481         (range_tests_int_range_max): Same.
44482         (range_tests_strict_enum): Same.
44483         (range_tests_misc): Same.
44484         (range_tests_nonzero_bits): Same.
44485         (range_tests_nan): Same.
44486         (range_tests_signed_zeros): Same.
44487         * value-range.h (Value_Range::Value_Range): Same.
44488         (irange::set): Same.
44489         (irange::nonzero_p): Same.
44490         (irange::contains_p): Same.
44491         (range_includes_zero_p): Same.
44492         (irange::set_nonzero): Same.
44493         (irange::set_zero): Same.
44494         (contains_zero_p): Same.
44495         (frange::contains_p): Same.
44496         * vr-values.cc
44497         (simplify_using_ranges::op_with_boolean_value_range_p): Same.
44498         (bounds_of_var_in_loop): Same.
44499         (simplify_using_ranges::legacy_fold_cond_overflow): Same.
44501 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
44503         * value-range.cc (irange::irange_union): Rename to...
44504         (irange::union_): ...this.
44505         (irange::irange_intersect): Rename to...
44506         (irange::intersect): ...this.
44507         * value-range.h (irange::union_): Delete.
44508         (irange::intersect): Delete.
44510 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
44512         * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
44514 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
44516         * vr-values.cc (check_for_binary_op_overflow): Tidy up by using
44517         ranger API.
44518         (compare_ranges): Delete.
44519         (compare_range_with_value): Delete.
44520         (bounds_of_var_in_loop): Tidy up by using ranger API.
44521         (simplify_using_ranges::fold_cond_with_ops): Cleanup and rename
44522         from vrp_evaluate_conditional_warnv_with_ops_using_ranges.
44523         (simplify_using_ranges::legacy_fold_cond_overflow): Remove
44524         strict_overflow_p and only_ranges.
44525         (simplify_using_ranges::legacy_fold_cond): Adjust call to
44526         legacy_fold_cond_overflow.
44527         (simplify_using_ranges::simplify_abs_using_ranges): Adjust for
44528         rename.
44529         (range_fits_type_p): Rename value_range to irange.
44530         * vr-values.h (range_fits_type_p): Adjust prototype.
44532 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
44534         * value-range.cc (irange::irange_set_anti_range): Remove uses of
44535         tree_lower_bound and tree_upper_bound.
44536         (irange::verify_range): Same.
44537         (irange::operator==): Same.
44538         (irange::singleton_p): Same.
44539         * value-range.h (irange::tree_lower_bound): Delete.
44540         (irange::tree_upper_bound): Delete.
44541         (irange::lower_bound): Delete.
44542         (irange::upper_bound): Delete.
44543         (irange::zero_p): Remove uses of tree_lower_bound and
44544         tree_upper_bound.
44546 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
44548         * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
44549         kind() call.
44550         (determine_value_range): Same.
44551         (record_nonwrapping_iv): Same.
44552         (infer_loop_bounds_from_signedness): Same.
44553         (scev_var_range_cant_overflow): Same.
44554         * tree-vrp.cc (operand_less_p): Delete.
44555         * tree-vrp.h (operand_less_p): Delete.
44556         * value-range.cc (get_legacy_range): Remove uses of deprecated API.
44557         (irange::value_inside_range): Delete.
44558         * value-range.h (vrange::kind): Delete.
44559         (irange::num_pairs): Remove check of m_kind.
44560         (irange::min): Delete.
44561         (irange::max): Delete.
44563 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
44565         * gimple-fold.cc (maybe_fold_comparisons_from_match_pd): Adjust
44566         for vrange_storage.
44567         * gimple-range-cache.cc (sbr_vector::sbr_vector): Same.
44568         (sbr_vector::grow): Same.
44569         (sbr_vector::set_bb_range): Same.
44570         (sbr_vector::get_bb_range): Same.
44571         (sbr_sparse_bitmap::sbr_sparse_bitmap): Same.
44572         (sbr_sparse_bitmap::set_bb_range): Same.
44573         (sbr_sparse_bitmap::get_bb_range): Same.
44574         (block_range_cache::block_range_cache): Same.
44575         (ssa_global_cache::ssa_global_cache): Same.
44576         (ssa_global_cache::get_global_range): Same.
44577         (ssa_global_cache::set_global_range): Same.
44578         * gimple-range-cache.h: Same.
44579         * gimple-range-edge.cc
44580         (gimple_outgoing_range::gimple_outgoing_range): Same.
44581         (gimple_outgoing_range::switch_edge_range): Same.
44582         (gimple_outgoing_range::calc_switch_ranges): Same.
44583         * gimple-range-edge.h: Same.
44584         * gimple-range-infer.cc
44585         (infer_range_manager::infer_range_manager): Same.
44586         (infer_range_manager::get_nonzero): Same.
44587         (infer_range_manager::maybe_adjust_range): Same.
44588         (infer_range_manager::add_range): Same.
44589         * gimple-range-infer.h: Rename obstack_vrange_allocator to
44590         vrange_allocator.
44591         * tree-core.h (struct irange_storage_slot): Remove.
44592         (struct tree_ssa_name): Remove irange_info and frange_info.  Make
44593         range_info a pointer to vrange_storage.
44594         * tree-ssanames.cc (range_info_fits_p): Adjust for vrange_storage.
44595         (range_info_alloc): Same.
44596         (range_info_free): Same.
44597         (range_info_get_range): Same.
44598         (range_info_set_range): Same.
44599         (get_nonzero_bits): Same.
44600         * value-query.cc (get_ssa_name_range_info): Same.
44601         * value-range-storage.cc (class vrange_internal_alloc): New.
44602         (class vrange_obstack_alloc): New.
44603         (class vrange_ggc_alloc): New.
44604         (vrange_allocator::vrange_allocator): New.
44605         (vrange_allocator::~vrange_allocator): New.
44606         (vrange_storage::alloc_slot): New.
44607         (vrange_allocator::alloc): New.
44608         (vrange_allocator::free): New.
44609         (vrange_allocator::clone): New.
44610         (vrange_allocator::clone_varying): New.
44611         (vrange_allocator::clone_undefined): New.
44612         (vrange_storage::alloc): New.
44613         (vrange_storage::set_vrange): Remove slot argument.
44614         (vrange_storage::get_vrange): Same.
44615         (vrange_storage::fits_p): Same.
44616         (vrange_storage::equal_p): New.
44617         (irange_storage::write_lengths_address): New.
44618         (irange_storage::lengths_address): New.
44619         (irange_storage_slot::alloc_slot): Remove.
44620         (irange_storage::alloc): New.
44621         (irange_storage_slot::irange_storage_slot): Remove.
44622         (irange_storage::irange_storage): New.
44623         (write_wide_int): New.
44624         (irange_storage_slot::set_irange): Remove.
44625         (irange_storage::set_irange): New.
44626         (read_wide_int): New.
44627         (irange_storage_slot::get_irange): Remove.
44628         (irange_storage::get_irange): New.
44629         (irange_storage_slot::size): Remove.
44630         (irange_storage::equal_p): New.
44631         (irange_storage_slot::num_wide_ints_needed): Remove.
44632         (irange_storage::size): New.
44633         (irange_storage_slot::fits_p): Remove.
44634         (irange_storage::fits_p): New.
44635         (irange_storage_slot::dump): Remove.
44636         (irange_storage::dump): New.
44637         (frange_storage_slot::alloc_slot): Remove.
44638         (frange_storage::alloc): New.
44639         (frange_storage_slot::set_frange): Remove.
44640         (frange_storage::set_frange): New.
44641         (frange_storage_slot::get_frange): Remove.
44642         (frange_storage::get_frange): New.
44643         (frange_storage_slot::fits_p): Remove.
44644         (frange_storage::equal_p): New.
44645         (frange_storage::fits_p): New.
44646         (ggc_vrange_allocator): New.
44647         (ggc_alloc_vrange_storage): New.
44648         * value-range-storage.h (class vrange_storage): Rewrite.
44649         (class irange_storage): Rewrite.
44650         (class frange_storage): Rewrite.
44651         (class obstack_vrange_allocator): Remove.
44652         (class ggc_vrange_allocator): Remove.
44653         (vrange_allocator::alloc_vrange): Remove.
44654         (vrange_allocator::alloc_irange): Remove.
44655         (vrange_allocator::alloc_frange): Remove.
44656         (ggc_alloc_vrange_storage): New.
44657         * value-range.h (class irange): Rename vrange_allocator to
44658         irange_storage.
44659         (class frange): Same.
44661 2023-04-30  Roger Sayle  <roger@nextmovesoftware.com>
44663         * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
44664         inc to avoid clobbering the carry flag.
44666 2023-04-30  Andrew Pinski  <apinski@marvell.com>
44668         * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
44669         for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
44671 2023-04-30  Andrew Pinski  <apinski@marvell.com>
44673         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
44674         Allow some builtin/internal function calls which
44675         are known not to trap/throw.
44676         (phiopt_worker::match_simplify_replacement):
44677         Use name instead of getting the lhs again.
44679 2023-04-30  Joakim Nohlgård  <joakim@nohlgard.se>
44681         * configure: Regenerate.
44682         * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
44684 2023-04-29  Hans-Peter Nilsson  <hp@axis.com>
44686         * reload1.cc (emit_insn_if_valid_for_reload_1): Rename from
44687         emit_insn_if_valid_for_reload.
44688         (emit_insn_if_valid_for_reload): Call new helper, and if a SET fails
44689         to be recognized, also try emitting a parallel that clobbers
44690         TARGET_FLAGS_REGNUM, as applicable.
44692 2023-04-29  Roger Sayle  <roger@nextmovesoftware.com>
44694         * config/stormy16/stormy16.md (neghi2): Convert from a define_expand
44695         to a define_insn.
44696         (*rotatehi_1): New define_insn for efficient 2 insn sequence.
44697         (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb.
44699 2023-04-29  Roger Sayle  <roger@nextmovesoftware.com>
44701         * config/stormy16/stormy16.md (any_lshift): New code iterator.
44702         (any_or_plus): Likewise.
44703         (any_rotate): Likewise.
44704         (*<any_lshift>_and_internal): New define_insn_and_split to
44705         recognize a logical shift followed by an AND, and split it
44706         again after reload.
44707         (*swpn): New define_insn matching xstormy16's swpn.
44708         (*swpn_zext): New define_insn recognizing swpn followed by
44709         zero_extendqihi2, i.e. with the high byte set to zero.
44710         (*swpn_sext): Likewise, for swpn followed by cbw.
44711         (*swpn_sext_2): Likewise, for an alternate RTL form.
44712         (*swpn_zext_ior): A pre-reload splitter so that an swpn+zext+ior
44713         sequence is split in the correct place to recognize the *swpn_zext
44714         followed by any_or_plus (ior, xor or plus) instruction.
44716 2023-04-29  Mikael Pettersson  <mikpelinux@gmail.com>
44718         PR target/105525
44719         * config.gcc (vax-*-linux*): Add glibc-stdint.h.
44720         (lm32-*-uclinux*): Likewise.
44722 2023-04-29  Fei Gao  <gaofei@eswincomputing.com>
44724         * config/riscv/riscv.cc (riscv_avoid_save_libcall): helper function
44725         for riscv_use_save_libcall.
44726         (riscv_use_save_libcall): call riscv_avoid_save_libcall.
44727         (riscv_compute_frame_info): restructure to decouple stack allocation
44728         for rv32e w/o save-restore.
44730 2023-04-28  Eugene Rozenfeld  <erozen@microsoft.com>
44732         * doc/install.texi: Fix documentation typo
44734 2023-04-28  Matevos Mehrabyan  <matevosmehrabyan@gmail.com>
44736         * config/riscv/iterators.md (only_div, paired_mod): New iterators.
44737         (u): Add div/udiv cases.
44738         * config/riscv/riscv-protos.h (riscv_use_divmod_expander): Prototype.
44739         * config/riscv/riscv.cc (struct riscv_tune_param): Add field for
44740         divmod expansion.
44741         (rocket_tune_info, sifive_7_tune_info): Initialize new field.
44742         (thead_c906_tune_info): Likewise.
44743         (optimize_size_tune_info): Likewise.
44744         (riscv_use_divmod_expander): New function.
44745         * config/riscv/riscv.md (<u>divmod<mode>4): New expander.
44747 2023-04-28  Karen Sargsyan  <karen1999411@gmail.com>
44749         * config/riscv/bitmanip.md: Added clmulr instruction.
44750         * config/riscv/riscv-builtins.cc (AVAIL): Add new.
44751         * config/riscv/riscv.md: (UNSPEC_CLMULR): Add new unspec type.
44752         (type): Add clmul
44753         * config/riscv/riscv-cmo.def: Added built-in function for clmulr.
44754         * config/riscv/crypto.md: Move clmul[h] instructions to bitmanip.md.
44755         * config/riscv/riscv-scalar-crypto.def: Move clmul[h] built-in
44756         functions to riscv-cmo.def.
44757         * config/riscv/generic.md: Add clmul to list of instructions
44758         using the generic_imul reservation.
44760 2023-04-28  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
44762         * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
44764 2023-04-28  Andrew Pinski  <apinski@marvell.com>
44766         PR tree-optimization/100958
44767         * tree-ssa-phiopt.cc (two_value_replacement): Remove.
44768         (pass_phiopt::execute): Don't call two_value_replacement.
44769         * match.pd (a !=/== CST1 ? CST2 : CST3): Add pattern to
44770         handle what two_value_replacement did.
44772 2023-04-28  Andrew Pinski  <apinski@marvell.com>
44774         * match.pd: Add patterns for
44775         "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
44777 2023-04-28  Andrew Pinski  <apinski@marvell.com>
44779         * match.pd: Factor out the deciding the min/max from
44780         the "(cond (cmp (convert1? x) c1) (convert2? x) c2)"
44781         pattern to ...
44782         * fold-const.cc (minmax_from_comparison): this new function.
44783         * fold-const.h (minmax_from_comparison): New prototype.
44785 2023-04-28  Roger Sayle  <roger@nextmovesoftware.com>
44787         PR rtl-optimization/109476
44788         * lower-subreg.cc: Include explow.h for force_reg.
44789         (find_decomposable_shift_zext): Pass an additional SPEED_P argument.
44790         If decomposing a suitable LSHIFTRT and we're not splitting
44791         ZERO_EXTEND (based on the current SPEED_P), then use a ZERO_EXTEND
44792         instead of setting a high part SUBREG to zero, which helps combine.
44793         (decompose_multiword_subregs): Update call to resolve_shift_zext.
44795 2023-04-28  Richard Biener  <rguenther@suse.de>
44797         * tree-vect-data-refs.cc (vect_analyze_data_refs): Always
44798         consider scatters.
44799         * tree-vect-stmts.cc (vect_model_store_cost): Pass in the
44800         gather-scatter info and cost emulated scatters accordingly.
44801         (get_load_store_type): Support emulated scatters.
44802         (vectorizable_store): Likewise.  Emulate them by extracting
44803         scalar offsets and data, doing scalar stores.
44805 2023-04-28  Richard Biener  <rguenther@suse.de>
44807         * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
44808         Tame down element extracts and scalar loads for gather/scatter
44809         similar to elementwise strided accesses.
44811 2023-04-28  Pan Li  <pan2.li@intel.com>
44812             kito-cheng  <kito.cheng@sifive.com>
44814         * config/riscv/vector.md: Add new define split to perform
44815         the simplification.
44817 2023-04-28  Richard Biener  <rguenther@suse.de>
44819         PR ipa/109652
44820         * ipa-param-manipulation.cc
44821         (ipa_param_body_adjustments::modify_expression): Allow
44822         conversion of a register to a non-register type.  Elide
44823         conversions inside BIT_FIELD_REFs.
44825 2023-04-28  Richard Biener  <rguenther@suse.de>
44827         PR tree-optimization/109644
44828         * tree-cfg.cc (verify_types_in_gimple_reference): Check
44829         register constraints on the outermost VIEW_CONVERT_EXPR
44830         only.  Do not allow register or invariant bases on
44831         multi-level or possibly variable index handled components.
44833 2023-04-28  Richard Biener  <rguenther@suse.de>
44835         * gimplify.cc (gimplify_compound_lval): When there's a
44836         non-register type produced by one of the handled component
44837         operations make sure we get a non-register base.
44839 2023-04-28  Richard Biener  <rguenther@suse.de>
44841         PR tree-optimization/108752
44842         * tree-vect-generic.cc (build_replicated_const): Rename
44843         to build_replicated_int_cst and move to tree.{h,cc}.
44844         (do_plus_minus): Adjust.
44845         (do_negate): Likewise.
44846         * tree-vect-stmts.cc (vectorizable_operation): Emit emulated
44847         arithmetic vector operations in lowered form.
44848         * tree.h (build_replicated_int_cst): Declare.
44849         * tree.cc (build_replicated_int_cst): Moved from
44850         tree-vect-generic.cc build_replicated_const.
44852 2023-04-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
44854         PR target/99195
44855         * config/aarch64/aarch64-simd.md (aarch64_rbit<mode>): Rename to...
44856         (aarch64_rbit<mode><vczle><vczbe>): ... This.
44857         (neg<mode>2): Rename to...
44858         (neg<mode>2<vczle><vczbe>): ... This.
44859         (abs<mode>2): Rename to...
44860         (abs<mode>2<vczle><vczbe>): ... This.
44861         (aarch64_abs<mode>): Rename to...
44862         (aarch64_abs<mode><vczle><vczbe>): ... This.
44863         (one_cmpl<mode>2): Rename to...
44864         (one_cmpl<mode>2<vczle><vczbe>): ... This.
44865         (clrsb<mode>2): Rename to...
44866         (clrsb<mode>2<vczle><vczbe>): ... This.
44867         (clz<mode>2): Rename to...
44868         (clz<mode>2<vczle><vczbe>): ... This.
44869         (popcount<mode>2): Rename to...
44870         (popcount<mode>2<vczle><vczbe>): ... This.
44872 2023-04-28  Jakub Jelinek  <jakub@redhat.com>
44874         * gimple-range-op.cc (class cfn_sqrt): New type.
44875         (op_cfn_sqrt): New variable.
44876         (gimple_range_op_handler::maybe_builtin_call): Handle
44877         CASE_CFN_SQRT{,_FN}.
44879 2023-04-28  Aldy Hernandez  <aldyh@redhat.com>
44880             Jakub Jelinek  <jakub@redhat.com>
44882         * value-range.h (frange_nextafter): Declare.
44883         * gimple-range-op.cc (class cfn_sincos): New.
44884         (op_cfn_sin, op_cfn_cos): New variables.
44885         (gimple_range_op_handler::maybe_builtin_call): Handle
44886         CASE_CFN_{SIN,COS}{,_FN}.
44888 2023-04-28  Jakub Jelinek  <jakub@redhat.com>
44890         * target.def (libm_function_max_error): New target hook.
44891         * doc/tm.texi.in (TARGET_LIBM_FUNCTION_MAX_ERROR): Add.
44892         * doc/tm.texi: Regenerated.
44893         * targhooks.h (default_libm_function_max_error,
44894         glibc_linux_libm_function_max_error): Declare.
44895         * targhooks.cc: Include case-cfn-macros.h.
44896         (default_libm_function_max_error,
44897         glibc_linux_libm_function_max_error): New functions.
44898         * config/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
44899         * config/linux-protos.h (linux_libm_function_max_error): Declare.
44900         * config/linux.cc: Include target.h and targhooks.h.
44901         (linux_libm_function_max_error): New function.
44902         * config/arc/arc.cc: Include targhooks.h and case-cfn-macros.h.
44903         (arc_libm_function_max_error): New function.
44904         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
44905         * config/i386/i386.cc (ix86_libc_has_fast_function): Formatting fix.
44906         (ix86_libm_function_max_error): New function.
44907         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
44908         * config/rs6000/rs6000-protos.h
44909         (rs6000_linux_libm_function_max_error): Declare.
44910         * config/rs6000/rs6000-linux.cc: Include target.h, targhooks.h, tree.h
44911         and case-cfn-macros.h.
44912         (rs6000_linux_libm_function_max_error): New function.
44913         * config/rs6000/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
44914         * config/rs6000/linux64.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
44915         * config/or1k/or1k.cc: Include targhooks.h and case-cfn-macros.h.
44916         (or1k_libm_function_max_error): New function.
44917         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
44919 2023-04-28  Alexandre Oliva  <oliva@adacore.com>
44921         * gimple-harden-conditionals.cc (insert_edge_check_and_trap):
44922         Move detach value calls...
44923         (pass_harden_conditional_branches::execute): ... here.
44924         (pass_harden_compares::execute): Detach values before
44925         compares.
44927 2023-04-27  Andrew Stubbs  <ams@codesourcery.com>
44929         * config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef.
44930         (cml<addsub_as><mode>4): Likewise.
44931         (vec_addsub<mode>3): Likewise.
44932         (cadd<rot><mode>3): Likewise.
44933         (vec_fmaddsub<mode>4): Likewise.
44934         (vec_fmsubadd<mode>4): Likewise, and use sub for the odd lanes.
44936 2023-04-27  Andrew Pinski  <apinski@marvell.com>
44938         * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
44939         up to 2 min/max expressions in the sequence/match code.
44941 2023-04-27  Andrew Pinski  <apinski@marvell.com>
44943         * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
44944         COMPARISON.
44945         * tree-eh.cc (operation_could_trap_helper_p): Treate
44946         MIN_EXPR/MAX_EXPR similar as other comparisons.
44948 2023-04-27  Andrew Pinski  <apinski@marvell.com>
44950         * tree-ssa-phiopt.cc (cond_store_replacement): Remove
44951         prototype.
44952         (cond_if_else_store_replacement): Likewise.
44953         (get_non_trapping): Likewise.
44954         (store_elim_worker): Move into ...
44955         (pass_cselim::execute): This.
44957 2023-04-27  Andrew Pinski  <apinski@marvell.com>
44959         * tree-ssa-phiopt.cc (two_value_replacement): Remove
44960         prototype.
44961         (match_simplify_replacement): Likewise.
44962         (factor_out_conditional_conversion): Likewise.
44963         (value_replacement): Likewise.
44964         (minmax_replacement): Likewise.
44965         (spaceship_replacement): Likewise.
44966         (cond_removal_in_builtin_zero_pattern): Likewise.
44967         (hoist_adjacent_loads): Likewise.
44968         (tree_ssa_phiopt_worker): Move into ...
44969         (pass_phiopt::execute): this.
44971 2023-04-27  Andrew Pinski  <apinski@marvell.com>
44973         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove
44974         do_store_elim argument and split that part out to ...
44975         (store_elim_worker): This new function.
44976         (pass_cselim::execute): Call store_elim_worker.
44977         (pass_phiopt::execute): Update call to tree_ssa_phiopt_worker.
44979 2023-04-27  Jan Hubicka  <jh@suse.cz>
44981         * cfgloopmanip.h (unloop_loops): Export.
44982         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Unloop loops
44983         that no longer loop.
44984         * tree-ssa-loop-ivcanon.cc (unloop_loops): Export; do not free
44985         vectors of loops to unloop.
44986         (canonicalize_induction_variables): Free vectors here.
44987         (tree_unroll_loops_completely): Free vectors here.
44989 2023-04-27  Richard Biener  <rguenther@suse.de>
44991         PR tree-optimization/109170
44992         * gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call):
44993         Handle __builtin_expect and similar via cfn_pass_through_arg1
44994         and inspecting the calls fnspec.
44995         * builtins.cc (builtin_fnspec): Handle BUILT_IN_EXPECT
44996         and BUILT_IN_EXPECT_WITH_PROBABILITY.
44998 2023-04-27  Alexandre Oliva  <oliva@adacore.com>
45000         * genmultilib: Use CONFIG_SHELL to run sub-scripts.
45002 2023-04-27  Aldy Hernandez  <aldyh@redhat.com>
45004         PR tree-optimization/109639
45005         * ipa-cp.cc (ipa_value_range_from_jfunc): Normalize range.
45006         (propagate_vr_across_jump_function): Same.
45007         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
45008         * ipa-prop.h (ipa_range_set_and_normalize): New.
45009         * value-range.cc (irange::set): Assert min and max are INTEGER_CST.
45011 2023-04-27  Richard Biener  <rguenther@suse.de>
45013         * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
45014         create a CTOR operand in the result when simplifying GIMPLE.
45016 2023-04-27  Richard Biener  <rguenther@suse.de>
45018         * gimplify.cc (gimplify_compound_lval): When the base
45019         gimplified to a register make sure to split up chains
45020         of operations.
45022 2023-04-27  Richard Biener  <rguenther@suse.de>
45024         PR ipa/109607
45025         * ipa-param-manipulation.h
45026         (ipa_param_body_adjustments::modify_expression): Add extra_stmts
45027         argument.
45028         * ipa-param-manipulation.cc
45029         (ipa_param_body_adjustments::modify_expression): Likewise.
45030         When we need a conversion and the replacement is a register
45031         split the conversion out.
45032         (ipa_param_body_adjustments::modify_assignment): Pass
45033         extra_stmts to RHS modify_expression.
45035 2023-04-27  Jonathan Wakely  <jwakely@redhat.com>
45037         * doc/extend.texi (Zero Length): Describe example.
45039 2023-04-27  Richard Biener  <rguenther@suse.de>
45041         PR tree-optimization/109594
45042         * tree-ssa.cc (non_rewritable_mem_ref_base): Constrain
45043         what we rewrite to a register based on the above.
45045 2023-04-26  Patrick O'Neill  <patrick@rivosinc.com>
45047         * config/riscv/riscv.cc: Fix whitespace.
45048         * config/riscv/sync.md: Fix whitespace.
45050 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
45052         PR tree-optimization/108697
45053         * gimple-range-cache.cc (ssa_global_cache::clear_range): Do
45054         not clear the vector on an out of range query.
45055         (ssa_cache::dump): Use dump_range_query instead of get_range.
45056         (ssa_cache::dump_range_query): New.
45057         (ssa_lazy_cache::dump_range_query): New.
45058         (ssa_lazy_cache::set_range): New.
45059         * gimple-range-cache.h (ssa_cache::dump_range_query): New.
45060         (class ssa_lazy_cache): New.
45061         (ssa_lazy_cache::ssa_lazy_cache): New.
45062         (ssa_lazy_cache::~ssa_lazy_cache): New.
45063         (ssa_lazy_cache::get_range): New.
45064         (ssa_lazy_cache::clear_range): New.
45065         (ssa_lazy_cache::clear): New.
45066         (ssa_lazy_cache::dump): New.
45067         * gimple-range-path.cc (path_range_query::path_range_query): Do
45068         not allocate a ssa_cache object nor has_cache bitmap.
45069         (path_range_query::~path_range_query): Do not free objects.
45070         (path_range_query::clear_cache): Remove.
45071         (path_range_query::get_cache): Adjust.
45072         (path_range_query::set_cache): Remove.
45073         (path_range_query::dump): Don't call through a pointer.
45074         (path_range_query::internal_range_of_expr): Set cache directly.
45075         (path_range_query::reset_path): Clear cache directly.
45076         (path_range_query::ssa_range_in_phi): Fold with globals only.
45077         (path_range_query::compute_ranges_in_phis): Simply set range.
45078         (path_range_query::compute_ranges_in_block): Call cache directly.
45079         * gimple-range-path.h (class path_range_query): Replace bitmap
45080         and cache pointer with lazy cache object.
45081         * gimple-range.h (class assume_query): Use ssa_lazy_cache.
45083 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
45085         * gimple-range-cache.cc (ssa_cache::ssa_cache): Rename.
45086         (ssa_cache::~ssa_cache): Rename.
45087         (ssa_cache::has_range): New.
45088         (ssa_cache::get_range): Rename.
45089         (ssa_cache::set_range): Rename.
45090         (ssa_cache::clear_range): Rename.
45091         (ssa_cache::clear): Rename.
45092         (ssa_cache::dump): Rename and use get_range.
45093         (ranger_cache::get_global_range): Use get_range and set_range.
45094         (ranger_cache::range_of_def): Use get_range.
45095         * gimple-range-cache.h (class ssa_cache): Rename class and methods.
45096         (class ranger_cache): Use ssa_cache.
45097         * gimple-range-path.cc (path_range_query::path_range_query): Use
45098         ssa_cache.
45099         (path_range_query::get_cache): Use get_range.
45100         (path_range_query::set_cache): Use set_range.
45101         * gimple-range-path.h (class path_range_query): Use ssa_cache.
45102         * gimple-range.cc (assume_query::assume_range_p): Use get_range.
45103         (assume_query::range_of_expr): Use get_range.
45104         (assume_query::assume_query): Use set_range.
45105         (assume_query::calculate_op): Use get_range and set_range.
45106         * gimple-range.h (class assume_query): Use ssa_cache.
45108 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
45110         * gimple-range-cache.cc (sbr_vector::sbr_vector): Add parameter
45111         and local to optionally zero memory.
45112         (br_vector::grow): Only zero memory if flag is set.
45113         (class sbr_lazy_vector): New.
45114         (sbr_lazy_vector::sbr_lazy_vector): New.
45115         (sbr_lazy_vector::set_bb_range): New.
45116         (sbr_lazy_vector::get_bb_range): New.
45117         (sbr_lazy_vector::bb_range_p): New.
45118         (block_range_cache::set_bb_range): Check flags and Use sbr_lazy_vector.
45119         * gimple-range-gori.cc (gori_map::calculate_gori): Use
45120         param_vrp_switch_limit.
45121         (gori_compute::gori_compute): Use param_vrp_switch_limit.
45122         * params.opt (vrp_sparse_threshold): Rename from evrp_sparse_threshold.
45123         (vrp_switch_limit): Rename from evrp_switch_limit.
45124         (vrp_vector_threshold): New.
45126 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
45128         * value-relation.cc (dom_oracle::query_relation): Check early for lack
45129         of any relation.
45130         * value-relation.h (equiv_oracle::has_equiv_p): New.
45132 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
45134         PR tree-optimization/109417
45135         * gimple-range-gori.cc (range_def_chain::register_dependency):
45136         Save the ssa version number, not the pointer.
45137         (gori_compute::may_recompute_p): No need to check if a dependency
45138         is in the free list.
45139         * gimple-range-gori.h (class range_def_chain): Change ssa1 and ssa2
45140         fields to be unsigned int instead of trees.
45141         (ange_def_chain::depend1): Adjust.
45142         (ange_def_chain::depend2): Adjust.
45143         * gimple-range.h: Include "ssa.h" to inline ssa_name().
45145 2023-04-26  David Edelsohn  <dje.gcc@gmail.com>
45147         * config/rs6000/aix72.h (TARGET_DEFAULT): Use ISA_2_6_MASKS_SERVER.
45148         * config/rs6000/aix73.h (TARGET_DEFAULT): Use ISA_2_7_MASKS_SERVER.
45149         (PROCESSOR_DEFAULT): Use PROCESSOR_POWER8.
45151 2023-04-26  Patrick O'Neill  <patrick@rivosinc.com>
45153         PR target/104338
45154         * config/riscv/riscv-protos.h: Add helper function stubs.
45155         * config/riscv/riscv.cc: Add helper functions for subword masking.
45156         * config/riscv/riscv.opt: Add command-line flags -minline-atomics and
45157         -mno-inline-atomics.
45158         * config/riscv/sync.md: Add masking logic and inline asm for fetch_and_op,
45159         fetch_and_nand, CAS, and exchange ops.
45160         * doc/invoke.texi: Add blurb regarding new command-line flags
45161         -minline-atomics and -mno-inline-atomics.
45163 2023-04-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
45165         * config/aarch64/aarch64-simd.md (aarch64_rshrn2<mode>_insn_le):
45166         Reimplement using standard RTL codes instead of unspec.
45167         (aarch64_rshrn2<mode>_insn_be): Likewise.
45168         (aarch64_rshrn2<mode>): Adjust for the above.
45169         * config/aarch64/aarch64.md (UNSPEC_RSHRN): Delete.
45171 2023-04-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
45173         * config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le): Reimplement
45174         with standard RTL codes instead of an UNSPEC.
45175         (aarch64_rshrn<mode>_insn_be): Likewise.
45176         (aarch64_rshrn<mode>): Adjust for the above.
45177         * config/aarch64/predicates.md (aarch64_simd_rshrn_imm_vec): Define.
45179 2023-04-26  Pan Li  <pan2.li@intel.com>
45180             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
45182         * config/riscv/riscv.cc (riscv_classify_address): Allow
45183         const0_rtx for the RVV load/store.
45185 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
45187         * range-op.cc (range_op_cast_tests): Remove legacy support.
45188         * value-range-storage.h (vrange_allocator::alloc_irange): Same.
45189         * value-range.cc (irange::operator=): Same.
45190         (get_legacy_range): Same.
45191         (irange::copy_legacy_to_multi_range): Delete.
45192         (irange::copy_to_legacy): Delete.
45193         (irange::irange_set_anti_range): Delete.
45194         (irange::set): Remove legacy support.
45195         (irange::verify_range): Same.
45196         (irange::legacy_lower_bound): Delete.
45197         (irange::legacy_upper_bound): Delete.
45198         (irange::legacy_equal_p): Delete.
45199         (irange::operator==): Remove legacy support.
45200         (irange::singleton_p): Same.
45201         (irange::value_inside_range): Same.
45202         (irange::contains_p): Same.
45203         (intersect_ranges): Delete.
45204         (irange::legacy_intersect): Delete.
45205         (union_ranges): Delete.
45206         (irange::legacy_union): Delete.
45207         (irange::legacy_verbose_union_): Delete.
45208         (irange::legacy_verbose_intersect): Delete.
45209         (irange::irange_union): Remove legacy support.
45210         (irange::irange_intersect): Same.
45211         (irange::intersect): Same.
45212         (irange::invert): Same.
45213         (ranges_from_anti_range): Delete.
45214         (gt_pch_nx): Adjust for legacy removal.
45215         (gt_ggc_mx): Same.
45216         (range_tests_legacy): Delete.
45217         (range_tests_misc): Adjust for legacy removal.
45218         (range_tests): Same.
45219         * value-range.h (class irange): Same.
45220         (irange::legacy_mode_p): Delete.
45221         (ranges_from_anti_range): Delete.
45222         (irange::nonzero_p): Adjust for legacy removal.
45223         (irange::lower_bound): Same.
45224         (irange::upper_bound): Same.
45225         (irange::union_): Same.
45226         (irange::intersect): Same.
45227         (irange::set_nonzero): Same.
45228         (irange::set_zero): Same.
45229         * vr-values.cc (simplify_using_ranges::legacy_fold_cond_overflow): Same.
45231 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
45233         * value-range.cc (irange::copy_legacy_to_multi_range): Rewrite use
45234         of range_has_numeric_bounds_p with irange API.
45235         (range_has_numeric_bounds_p): Delete.
45236         * value-range.h (range_has_numeric_bounds_p): Delete.
45238 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
45240         * tree-data-ref.cc (compute_distributive_range): Replace uses of
45241         range_int_cst_p with irange API.
45242         * tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.
45243         * tree-vrp.h (range_int_cst_p): Delete.
45244         * vr-values.cc (check_for_binary_op_overflow): Replace usees of
45245         range_int_cst_p with irange API.
45246         (vr_set_zero_nonzero_bits): Same.
45247         (range_fits_type_p): Same.
45248         (simplify_using_ranges::simplify_casted_cond): Same.
45249         * tree-vrp.cc (range_int_cst_p): Remove.
45251 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
45253         * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
45255 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
45257         * builtins.cc (expand_builtin_strnlen): Rewrite deprecated irange
45258         API uses to new API.
45259         * gimple-predicate-analysis.cc (find_var_cmp_const): Same.
45260         * internal-fn.cc (get_min_precision): Same.
45261         * match.pd: Same.
45262         * tree-affine.cc (expr_to_aff_combination): Same.
45263         * tree-data-ref.cc (dr_step_indicator): Same.
45264         * tree-dfa.cc (get_ref_base_and_extent): Same.
45265         * tree-scalar-evolution.cc (iv_can_overflow_p): Same.
45266         * tree-ssa-phiopt.cc (two_value_replacement): Same.
45267         * tree-ssa-pre.cc (insert_into_preds_of_block): Same.
45268         * tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): Same.
45269         * tree-ssa-strlen.cc (compare_nonzero_chars): Same.
45270         * tree-switch-conversion.cc (bit_test_cluster::emit): Same.
45271         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Same.
45272         * tree.cc (get_range_pos_neg): Same.
45274 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
45276         * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Use
45277         vrange::dump instead of ad-hoc dumper.
45278         * tree-ssa-strlen.cc (dump_strlen_info): Same.
45279         * value-range-pretty-print.cc (visit): Pass TDF_NOUID to
45280         dump_generic_node.
45282 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
45284         * range-op.cc (operator_cast::op1_range): Use
45285         create_possibly_reversed_range.
45286         (operator_bitwise_and::simple_op1_range_solver): Same.
45287         * value-range.cc (swap_out_of_order_endpoints): Delete.
45288         (irange::set): Remove call to swap_out_of_order_endpoints.
45290 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
45292         * builtins.cc (determine_block_size): Convert use of legacy API to
45293         get_legacy_range.
45294         * gimple-array-bounds.cc (check_out_of_bounds_and_warn): Same.
45295         (array_bounds_checker::check_array_ref): Same.
45296         * gimple-ssa-warn-restrict.cc
45297         (builtin_memref::extend_offset_range): Same.
45298         * ipa-cp.cc (ipcp_store_vr_results): Same.
45299         * ipa-fnsummary.cc (set_switch_stmt_execution_predicate): Same.
45300         * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Same.
45301         (ipa_write_jump_function): Same.
45302         * pointer-query.cc (get_size_range): Same.
45303         * tree-data-ref.cc (split_constant_offset): Same.
45304         * tree-ssa-strlen.cc (get_range): Same.
45305         (maybe_diag_stxncpy_trunc): Same.
45306         (strlen_pass::get_len_or_size): Same.
45307         (strlen_pass::count_nonzero_bytes_addr): Same.
45308         * tree-vect-patterns.cc (vect_get_range_info): Same.
45309         * value-range.cc (irange::maybe_anti_range): Remove.
45310         (get_legacy_range): New.
45311         (irange::copy_to_legacy): Use get_legacy_range.
45312         (ranges_from_anti_range): Same.
45313         * value-range.h (class irange): Remove maybe_anti_range.
45314         (get_legacy_range): New.
45315         * vr-values.cc (check_for_binary_op_overflow): Convert use of
45316         legacy API to get_legacy_range.
45317         (compare_ranges): Same.
45318         (compare_range_with_value): Same.
45319         (bounds_of_var_in_loop): Same.
45320         (find_case_label_ranges): Same.
45321         (simplify_using_ranges::simplify_switch_using_ranges): Same.
45323 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
45325         * value-range-pretty-print.cc (vrange_printer::visit): Remove
45326         constant_p use.
45327         * value-range.cc (irange::constant_p): Remove.
45328         (irange::get_nonzero_bits_from_range): Remove constant_p use.
45329         * value-range.h (class irange): Remove constant_p.
45330         (irange::num_pairs): Remove constant_p use.
45332 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
45334         * value-range.cc (irange::copy_legacy_to_multi_range): Remove
45335         symbolics support.
45336         (irange::set): Same.
45337         (irange::legacy_lower_bound): Same.
45338         (irange::legacy_upper_bound): Same.
45339         (irange::contains_p): Same.
45340         (range_tests_legacy): Same.
45341         (irange::normalize_addresses): Remove.
45342         (irange::normalize_symbolics): Remove.
45343         (irange::symbolic_p): Remove.
45344         * value-range.h (class irange): Remove symbolic_p,
45345         normalize_symbolics, and normalize_addresses.
45346         * vr-values.cc (simplify_using_ranges::two_valued_val_range_p):
45347         Remove symbolics support.
45349 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
45351         * value-range.cc (irange::may_contain_p): Remove.
45352         * value-range.h (range_includes_zero_p):  Rewrite may_contain_p
45353         usage with contains_p.
45354         * vr-values.cc (compare_range_with_value): Same.
45356 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
45358         * tree-vrp.cc (supported_types_p): Remove.
45359         (defined_ranges_p): Remove.
45360         (range_fold_binary_expr): Remove.
45361         (range_fold_unary_expr): Remove.
45362         * tree-vrp.h (range_fold_unary_expr): Remove.
45363         (range_fold_binary_expr): Remove.
45365 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
45367         * ipa-cp.cc (ipa_vr_operation_and_type_effects): Convert to ranger API.
45368         (ipa_value_range_from_jfunc): Same.
45369         (propagate_vr_across_jump_function): Same.
45370         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
45371         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
45372         * vr-values.cc (bounds_of_var_in_loop): Same.
45374 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
45376         * gimple-array-bounds.cc (array_bounds_checker::get_value_range):
45377         Add irange argument.
45378         (check_out_of_bounds_and_warn): Remove check for vr.
45379         (array_bounds_checker::check_array_ref): Remove pointer qualifier
45380         for vr and adjust accordingly.
45381         * gimple-array-bounds.h (get_value_range): Add irange argument.
45382         * value-query.cc (class equiv_allocator): Delete.
45383         (range_query::get_value_range): Delete.
45384         (range_query::range_query): Remove allocator access.
45385         (range_query::~range_query): Same.
45386         * value-query.h (get_value_range): Delete.
45387         * vr-values.cc
45388         (simplify_using_ranges::op_with_boolean_value_range_p): Remove
45389         call to get_value_range.
45390         (check_for_binary_op_overflow): Same.
45391         (simplify_using_ranges::legacy_fold_cond_overflow): Same.
45392         (simplify_using_ranges::simplify_abs_using_ranges): Same.
45393         (simplify_using_ranges::simplify_cond_using_ranges_1): Same.
45394         (simplify_using_ranges::simplify_casted_cond): Same.
45395         (simplify_using_ranges::simplify_switch_using_ranges): Same.
45396         (simplify_using_ranges::two_valued_val_range_p): Same.
45398 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
45400         * vr-values.cc
45401         (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
45402         Rename to...
45403         (simplify_using_ranges::legacy_fold_cond_overflow): ...this.
45404         (simplify_using_ranges::vrp_visit_cond_stmt): Rename to...
45405         (simplify_using_ranges::legacy_fold_cond): ...this.
45406         (simplify_using_ranges::fold_cond): Rename
45407         vrp_evaluate_conditional_warnv_with_ops to
45408         legacy_fold_cond_overflow.
45409         * vr-values.h (class vr_values): Replace vrp_visit_cond_stmt and
45410         vrp_evaluate_conditional_warnv_with_ops with legacy_fold_cond and
45411         legacy_fold_cond_overflow respectively.
45413 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
45415         * vr-values.cc (get_vr_for_comparison): Remove.
45416         (compare_name_with_value): Same.
45417         (vrp_evaluate_conditional_warnv_with_ops): Remove calls to
45418         compare_name_with_value.
45419         * vr-values.h: Remove compare_name_with_value.
45420         Remove get_vr_for_comparison.
45422 2023-04-26  Roger Sayle  <roger@nextmovesoftware.com>
45424         * config/stormy16/stormy16.md (bswaphi2): New define_insn.
45425         (bswapsi2): New define_insn.
45426         (swaphi): New define_insn to exchange two registers (swpw).
45427         (define_peephole2): Recognize exchange of registers as swaphi.
45429 2023-04-26  Richard Biener  <rguenther@suse.de>
45431         * gimple-range-path.cc (path_range_query::compute_outgoing_relations):
45432         Avoid last_stmt.
45433         * ipa-pure-const.cc (pass_nothrow::execute): Likewise.
45434         * predict.cc (apply_return_prediction): Likewise.
45435         * sese.cc (set_ifsese_condition): Likewise.  Simplify.
45436         * tree-cfg.cc (assert_unreachable_fallthru_edge_p): Avoid last_stmt.
45437         (make_edges_bb): Likewise.
45438         (make_cond_expr_edges): Likewise.
45439         (end_recording_case_labels): Likewise.
45440         (make_gimple_asm_edges): Likewise.
45441         (cleanup_dead_labels): Likewise.
45442         (group_case_labels): Likewise.
45443         (gimple_can_merge_blocks_p): Likewise.
45444         (gimple_merge_blocks): Likewise.
45445         (find_taken_edge): Likewise.  Also handle empty fallthru blocks.
45446         (gimple_duplicate_sese_tail): Avoid last_stmt.
45447         (find_loop_dist_alias): Likewise.
45448         (gimple_block_ends_with_condjump_p): Likewise.
45449         (gimple_purge_dead_eh_edges): Likewise.
45450         (gimple_purge_dead_abnormal_call_edges): Likewise.
45451         (pass_warn_function_return::execute): Likewise.
45452         (execute_fixup_cfg): Likewise.
45453         * tree-eh.cc (redirect_eh_edge_1): Likewise.
45454         (pass_lower_resx::execute): Likewise.
45455         (pass_lower_eh_dispatch::execute): Likewise.
45456         (cleanup_empty_eh): Likewise.
45457         * tree-if-conv.cc (if_convertible_bb_p): Likewise.
45458         (predicate_bbs): Likewise.
45459         (ifcvt_split_critical_edges): Likewise.
45460         * tree-loop-distribution.cc (create_edge_for_control_dependence):
45461         Likewise.
45462         (loop_distribution::transform_reduction_loop): Likewise.
45463         * tree-parloops.cc (transform_to_exit_first_loop_alt): Likewise.
45464         (try_transform_to_exit_first_loop_alt): Likewise.
45465         (transform_to_exit_first_loop): Likewise.
45466         (create_parallel_loop): Likewise.
45467         * tree-scalar-evolution.cc (get_loop_exit_condition): Likewise.
45468         * tree-ssa-dce.cc (mark_last_stmt_necessary): Likewise.
45469         (eliminate_unnecessary_stmts): Likewise.
45470         * tree-ssa-dom.cc
45471         (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
45472         Likewise.
45473         * tree-ssa-ifcombine.cc (ifcombine_ifandif): Likewise.
45474         (pass_tree_ifcombine::execute): Likewise.
45475         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Likewise.
45476         (should_duplicate_loop_header_p): Likewise.
45477         * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Likewise.
45478         (tree_estimate_loop_size): Likewise.
45479         (try_unroll_loop_completely): Likewise.
45480         * tree-ssa-loop-ivopts.cc (tree_ssa_iv_optimize_loop): Likewise.
45481         * tree-ssa-loop-manip.cc (ip_normal_pos): Likewise.
45482         (canonicalize_loop_ivs): Likewise.
45483         * tree-ssa-loop-niter.cc (determine_value_range): Likewise.
45484         (bound_difference): Likewise.
45485         (number_of_iterations_popcount): Likewise.
45486         (number_of_iterations_cltz): Likewise.
45487         (number_of_iterations_cltz_complement): Likewise.
45488         (simplify_using_initial_conditions): Likewise.
45489         (number_of_iterations_exit_assumptions): Likewise.
45490         (loop_niter_by_eval): Likewise.
45491         (estimate_numbers_of_iterations): Likewise.
45493 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
45495         * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
45497 2023-04-26  Kewen Lin  <linkw@linux.ibm.com>
45499         PR target/108758
45500         * config/rs6000/rs6000-builtins.def
45501         (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt
45502         __builtin_vsx_scalar_cmp_exp_qp_lt,
45503         __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw
45504         to power9-vector.
45506 2023-04-26  Kewen Lin  <linkw@linux.ibm.com>
45508         PR target/109069
45509         * config/rs6000/altivec.md (sldoi_to_mov<mode>): Replace predicate
45510         easy_vector_constant with const_vector_each_byte_same, add
45511         handlings in preparation for !easy_vector_constant, and update
45512         VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P.
45513         * config/rs6000/predicates.md (const_vector_each_byte_same): New
45514         predicate.
45516 2023-04-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
45518         * config/riscv/vector.md (*pred_cmp<mode>_merge_tie_mask): New pattern.
45519         (*pred_ltge<mode>_merge_tie_mask): Ditto.
45520         (*pred_cmp<mode>_scalar_merge_tie_mask): Ditto.
45521         (*pred_eqne<mode>_scalar_merge_tie_mask): Ditto.
45522         (*pred_cmp<mode>_extended_scalar_merge_tie_mask): Ditto.
45523         (*pred_eqne<mode>_extended_scalar_merge_tie_mask): Ditto.
45524         (*pred_cmp<mode>_narrow_merge_tie_mask): Ditto.
45526 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
45528         * config/riscv/vector.md: Fix redundant vmv1r.v.
45530 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
45532         * config/riscv/vector.md: Fix RA constraint.
45534 2023-04-26  Pan Li  <pan2.li@intel.com>
45536         PR target/109272
45537         * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
45538         check for vn_reference equal.
45540 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
45542         * config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Add enum for
45543         auto-vectorization preference.
45544         (enum riscv_autovec_lmul_enum): Add enum for choosing LMUL of RVV
45545         auto-vectorization.
45546         * config/riscv/riscv.opt: Add compile option for RVV auto-vectorization.
45548 2023-04-26  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
45550         * config/riscv/bitmanip.md: Updated predicates of bclri<mode>_nottwobits
45551         and bclridisi_nottwobits patterns.
45552         * config/riscv/predicates.md: (not_uimm_extra_bit_or_nottwobits): Adjust
45553         predicate to avoid splitting arith constants.
45554         (const_nottwobits_not_arith_operand): New predicate.
45556 2023-04-25  Hans-Peter Nilsson  <hp@axis.com>
45558         * recog.cc (peep2_attempt, peep2_update_life): Correct
45559         head-comment description of parameter match_len.
45561 2023-04-25  Vineet Gupta  <vineetg@rivosinc.com>
45563         * config/riscv/riscv.md: riscv_move_integer() drop in_splitter arg.
45564         riscv_split_symbol() drop in_splitter arg.
45565         * config/riscv/riscv.cc: riscv_move_integer() drop in_splitter arg.
45566         riscv_split_symbol() drop in_splitter arg.
45567         riscv_force_temporary() drop in_splitter arg.
45568         * config/riscv/riscv-protos.h: riscv_move_integer() drop in_splitter arg.
45569         riscv_split_symbol() drop in_splitter arg.
45571 2023-04-25  Eric Botcazou  <ebotcazou@adacore.com>
45573         * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
45574         superfluous debug temporaries for single GIMPLE assignments.
45576 2023-04-25  Richard Biener  <rguenther@suse.de>
45578         PR tree-optimization/109609
45579         * attr-fnspec.h (arg_max_access_size_given_by_arg_p):
45580         Clarify semantics.
45581         * tree-ssa-alias.cc (check_fnspec): Correctly interpret
45582         the size given by arg_max_access_size_given_by_arg_p as
45583         maximum, not exact, size.
45585 2023-04-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
45587         PR target/99195
45588         * config/aarch64/aarch64-simd.md (orn<mode>3): Rename to...
45589         (orn<mode>3<vczle><vczbe>): ... This.
45590         (bic<mode>3): Rename to...
45591         (bic<mode>3<vczle><vczbe>): ... This.
45592         (<su><maxmin><mode>3): Rename to...
45593         (<su><maxmin><mode>3<vczle><vczbe>): ... This.
45595 2023-04-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
45597         * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3): New define_expand.
45598         * config/aarch64/iterators.md (VQDIV): New mode iterator.
45599         (vnx2di): New mode attribute.
45601 2023-04-25  Richard Biener  <rguenther@suse.de>
45603         PR rtl-optimization/109585
45604         * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
45606 2023-04-25  Jakub Jelinek  <jakub@redhat.com>
45608         PR target/109566
45609         * config/rs6000/rs6000.cc (rs6000_is_valid_rotate_dot_mask): For
45610         !TARGET_64BIT, don't return true if UINTVAL (mask) << (63 - nb)
45611         is larger than signed int maximum.
45613 2023-04-25  Martin Liska  <mliska@suse.cz>
45615         * doc/gcov.texi: Document the new "calls" field and document
45616         the API bump. Mention also "block_ids" for lines.
45617         * gcov.cc (output_intermediate_json_line): Output info about
45618         calls and extend branches as well.
45619         (generate_results): Bump version to 2.
45620         (output_line_details): Use block ID instead of a non-sensual
45621         index.
45623 2023-04-25  Roger Sayle  <roger@nextmovesoftware.com>
45625         * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
45626         length attribute for the first (memory operand) alternative.
45628 2023-04-25  Victor Do Nascimento  <victor.donascimento@arm.com>
45630         * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New.
45631         * config/aarch64/constraints.md: Make "Umn" relaxed memory
45632         constraint.
45633         * config/aarch64/iterators.md(ldpstp_vel_sz): New.
45635 2023-04-25  Aldy Hernandez  <aldyh@redhat.com>
45637         * value-range.cc (frange::set): Adjust constructor.
45638         * value-range.h (nan_state::nan_state): Replace default
45639         constructor with one taking an argument.
45641 2023-04-25  Aldy Hernandez  <aldyh@redhat.com>
45643         * ipa-cp.cc (ipa_range_contains_p): New.
45644         (decide_whether_version_node): Use it.
45646 2023-04-24  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
45648         * tree-ssa-forwprop.cc (is_combined_permutation_identity): Try to
45649         simplify two successive VEC_PERM_EXPRs with same VLA mask,
45650         where mask chooses elements in reverse order.
45652 2023-04-24  Andrew Pinski  <apinski@marvell.com>
45654         * tree-ssa-phiopt.cc (match_simplify_replacement): Add new arguments
45655         and support diamond shaped basic block form.
45656         (tree_ssa_phiopt_worker): Update call to match_simplify_replacement
45658 2023-04-24  Andrew Pinski  <apinski@marvell.com>
45660         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
45661         Instead of calling last_and_only_stmt, look for the last statement
45662         manually.
45664 2023-04-24  Andrew Pinski  <apinski@marvell.com>
45666         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
45667         New function.
45668         (match_simplify_replacement): Call
45669         empty_bb_or_one_feeding_into_p instead of doing it inline.
45671 2023-04-24  Andrew Pinski  <apinski@marvell.com>
45673         PR tree-optimization/68894
45674         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove the
45675         continue for the do_hoist_loads diamond case.
45677 2023-04-24  Andrew Pinski  <apinski@marvell.com>
45679         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
45680         code for better code readability.
45682 2023-04-24  Andrew Pinski  <apinski@marvell.com>
45684         PR tree-optimization/109604
45685         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Move the
45686         diamond form check from ...
45687         (minmax_replacement): Here.
45689 2023-04-24  Patrick Palka  <ppalka@redhat.com>
45691         * tree.cc (strip_array_types): Don't define here.
45692         (is_typedef_decl): Don't define here.
45693         (typedef_variant_p): Don't define here.
45694         * tree.h (strip_array_types): Define here.
45695         (is_typedef_decl): Define here.
45696         (typedef_variant_p): Define here.
45698 2023-04-24  Frederik Harwath  <frederik@codesourcery.com>
45700         * doc/generic.texi (OpenMP): Add != to allowed
45701         conditions and state that vars can be unsigned.
45702         * tree.def (OMP_FOR): Likewise.
45704 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
45706         * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
45708 2023-04-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
45710         * doc/install.texi: Consistently use Solaris rather than Solaris 2.
45711         Remove explicit Solaris 11 references.
45712         Markup fixes.
45713         (Options specification, --with-gnu-as): as and gas always differ
45714         on Solaris.
45715         Remove /usr/ccs/bin reference.
45716         (Installing GCC: Binaries, Solaris (SPARC, Intel)): Remove.
45717         (i?86-*-solaris2*): Merge assembler, linker recommendations ...
45718         (*-*-solaris2*): ... here.
45719         Update bundled GCC versions.
45720         Don't refer to pre-built binaries.
45721         Remove /bin/sh warning.
45722         Update assembler, linker recommendations.
45723         Document GNAT bootstrap compiler.
45724         (sparc-sun-solaris2*): Remove non-UltraSPARC reference.
45725         (sparc64-*-solaris2*): Move content...
45726         (sparcv9-*-solaris2*): ...here.
45727         Add GDC for 64-bit bootstrap compilers.
45729 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
45731         PR target/109406
45732         * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
45733         case.
45734         * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
45735         pattern.
45737 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
45739         * config/aarch64/aarch64-simd.md (aarch64_<sur>abal2<mode>): Rename to...
45740         (aarch64_<su>abal2<mode>_insn): ... This.  Use RTL codes instead of unspec.
45741         (aarch64_<su>abal2<mode>): New define_expand.
45742         * config/aarch64/aarch64.cc (aarch64_abd_rtx_p): New function.
45743         (aarch64_rtx_costs): Handle ABD rtxes.
45744         * config/aarch64/aarch64.md (UNSPEC_SABAL2, UNSPEC_UABAL2): Delete.
45745         * config/aarch64/iterators.md (ABAL2): Delete.
45746         (sur): Remove handling of UNSPEC_UABAL2 and UNSPEC_SABAL2.
45748 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
45750         * config/aarch64/aarch64-simd.md (aarch64_<sur>abal<mode>): Rename to...
45751         (aarch64_<su>abal<mode>): ... This.  Use RTL codes instead of unspec.
45752         (<sur>sadv16qi): Rename to...
45753         (<su>sadv16qi): ... This.  Adjust for the above.
45754         * config/aarch64/aarch64-sve.md (<sur>sad<vsi2qi>): Rename to...
45755         (<su>sad<vsi2qi>): ... This.  Adjust for the above.
45756         * config/aarch64/aarch64.md (UNSPEC_SABAL, UNSPEC_UABAL): Delete.
45757         * config/aarch64/iterators.md (ABAL): Delete.
45758         (sur): Remove handling of UNSPEC_SABAL and UNSPEC_UABAL.
45760 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
45762         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>): Rename to...
45763         (aarch64_<su>abdl2<mode>_insn): ... This.  Use RTL codes instead of unspec.
45764         (aarch64_<su>abdl2<mode>): New define_expand.
45765         * config/aarch64/aarch64.md (UNSPEC_SABDL2, UNSPEC_UABDL2): Delete.
45766         * config/aarch64/iterators.md (ABDL2): Delete.
45767         (sur): Remove handling of UNSPEC_SABDL2 and UNSPEC_UABDL2.
45769 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
45771         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to...
45772         (aarch64_<su>abdl<mode>): ... This.  Use standard RTL ops instead of
45773         unspec.
45774         * config/aarch64/aarch64.md (UNSPEC_SABDL, UNSPEC_UABDL): Delete.
45775         * config/aarch64/iterators.md (ABDL): Delete.
45776         (sur): Remove handling of UNSPEC_SABDL and UNSPEC_UABDL.
45778 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
45780         * config/aarch64/aarch64-simd.md
45781         (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
45783 2023-04-24  Richard Biener  <rguenther@suse.de>
45785         * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid
45786         last_stmt.
45787         * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
45788         Likewise.
45789         * ipa-fnsummary.cc (set_cond_stmt_execution_predicate): Likewise.
45790         (set_switch_stmt_execution_predicate): Likewise.
45791         (phi_result_unknown_predicate): Likewise.
45792         * ipa-prop.cc (compute_complex_ancestor_jump_func): Likewise.
45793         (ipa_analyze_indirect_call_uses): Likewise.
45794         * predict.cc (predict_iv_comparison): Likewise.
45795         (predict_extra_loop_exits): Likewise.
45796         (predict_loops): Likewise.
45797         (tree_predict_by_opcode): Likewise.
45798         * gimple-predicate-analysis.cc (predicate::init_from_control_deps):
45799         Likewise.
45800         * gimple-pretty-print.cc (dump_implicit_edges): Likewise.
45801         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Likewise.
45802         (replace_phi_edge_with_variable): Likewise.
45803         (two_value_replacement): Likewise.
45804         (value_replacement): Likewise.
45805         (minmax_replacement): Likewise.
45806         (spaceship_replacement): Likewise.
45807         (cond_removal_in_builtin_zero_pattern): Likewise.
45808         * tree-ssa-reassoc.cc (maybe_optimize_range_tests): Likewise.
45809         * tree-ssa-sccvn.cc (vn_phi_eq): Likewise.
45810         (vn_phi_lookup): Likewise.
45811         (vn_phi_insert): Likewise.
45812         * tree-ssa-structalias.cc (compute_points_to_sets): Likewise.
45813         * tree-ssa-threadbackward.cc (back_threader::maybe_thread_block):
45814         Likewise.
45815         (back_threader_profitability::possibly_profitable_path_p):
45816         Likewise.
45817         * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
45818         Likewise.
45819         * tree-switch-conversion.cc (pass_convert_switch::execute):
45820         Likewise.
45821         (pass_lower_switch<O0>::execute): Likewise.
45822         * tree-tailcall.cc (tree_optimize_tail_calls_1): Likewise.
45823         * tree-vect-loop-manip.cc (vect_loop_versioning): Likewise.
45824         * tree-vect-slp.cc (vect_slp_function): Likewise.
45825         * tree-vect-stmts.cc (cfun_returns): Likewise.
45826         * tree-vectorizer.cc (vect_loop_vectorized_call): Likewise.
45827         (vect_loop_dist_alias_call): Likewise.
45829 2023-04-24  Richard Biener  <rguenther@suse.de>
45831         * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
45833 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
45835         * config/riscv/riscv-vsetvl.cc
45836         (vector_infos_manager::all_avail_in_compatible_p): New function.
45837         (pass_vsetvl::refine_vsetvls): Optimize vsetvls.
45838         * config/riscv/riscv-vsetvl.h: New function.
45840 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
45842         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
45843         comment for cleanup_insns.
45845 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
45847         * config/riscv/vector-iterators.md: New unspec to refine fault first load pattern.
45848         * config/riscv/vector.md: Refine fault first load pattern to erase avl from instructions
45849         with the fault first load property.
45851 2023-04-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
45853         * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
45854         (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
45856 2023-04-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
45858         PR target/99195
45859         * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
45860         (aarch64_addp<mode><vczle><vczbe>): ... This.
45862 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
45864         * config/stormy16/stormy16.cc (xstormy16_rtx_costs): Rewrite to
45865         provide reasonable values for common arithmetic operations and
45866         immediate operands (in several machine modes).
45868 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
45870         * config/stormy16/stormy16.cc (xstormy16_print_operand): Add %h
45871         format specifier to output high_part register name of SImode reg.
45872         * config/stormy16/stormy16.md (extendhisi2): New define_insn.
45873         (zero_extendqihi2): Fix lengths, consistent formatting and add
45874         "and Rx,#255" alternative, for documentation purposes.
45875         (zero_extendhisi2): New define_insn.
45877 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
45879         * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
45880         SImode shifts by two by performing a single bit SImode shift twice.
45882 2023-04-23  Aldy Hernandez  <aldyh@redhat.com>
45884         PR tree-optimization/109593
45885         * value-range.cc (frange::operator==): Handle NANs.
45887 2023-04-23  liuhongt  <hongtao.liu@intel.com>
45889         PR rtl-optimization/108707
45890         * ira-costs.cc (scan_one_insn): Use NO_REGS instead of
45891         GENERAL_REGS when preferred reg_class is not known.
45893 2023-04-22  Andrew Pinski  <apinski@marvell.com>
45895         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
45896         Change the code around slightly to move diamond
45897         handling for do_store_elim/do_hoist_loads out of
45898         the big if/else.
45900 2023-04-22  Andrew Pinski  <apinski@marvell.com>
45902         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
45903         Remove check on empty_block_p.
45905 2023-04-22  Jakub Jelinek  <jakub@redhat.com>
45907         PR bootstrap/109589
45908         * system.h (class auto_mpz): Workaround PR62101 bug in GCC 4.8 and 4.9.
45909         * realmpfr.h (class auto_mpfr): Likewise.
45911 2023-04-22  Jakub Jelinek  <jakub@redhat.com>
45913         PR tree-optimization/109583
45914         * match.pd (fneg/fadd simplify): Don't call related_vector_mode
45915         if vec_mode is not VECTOR_MODE_P.
45917 2023-04-22  Jan Hubicka  <hubicka@ucw.cz>
45918             Ondrej Kubanek  <kubanek0ondrej@gmail.com>
45920         * cfgloopmanip.h (adjust_loop_info_after_peeling): Declare.
45921         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix updating of
45922         loop profile and bounds after header duplication.
45923         * tree-ssa-loop-ivcanon.cc (adjust_loop_info_after_peeling):
45924         Break out from try_peel_loop; fix handling of 0 iterations.
45925         (try_peel_loop): Use adjust_loop_info_after_peeling.
45927 2023-04-21  Andrew MacLeod  <amacleod@redhat.com>
45929         PR tree-optimization/109546
45930         * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
45931         not fold conditions with ADDR_EXPR early.
45933 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
45935         * config/aarch64/aarch64.md (aarch64_umax<mode>3_insn): Delete.
45936         (umax<mode>3): Emit raw UMAX RTL instead of going through gen_ function
45937         for umax.
45938         (<optab><mode>3): New define_expand for MAXMIN_NOUMAX codes.
45939         (*aarch64_<optab><mode>3_zero): Define.
45940         (*aarch64_<optab><mode>3_cssc): Likewise.
45941         * config/aarch64/iterators.md (maxminand): New code attribute.
45943 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
45945         PR target/108779
45946         * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
45947         * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
45948         Define prototype.
45949         * config/aarch64/aarch64.cc (aarch64_tpidr_register): Declare.
45950         (aarch64_override_options_internal): Handle the above.
45951         (aarch64_output_load_tp): New function.
45952         * config/aarch64/aarch64.md (aarch64_load_tp_hard): Call
45953         aarch64_output_load_tp.
45954         * config/aarch64/aarch64.opt (aarch64_tp_reg): Define enum.
45955         (mtp=): New option.
45956         * doc/invoke.texi (AArch64 Options): Document -mtp=.
45958 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
45960         PR target/99195
45961         * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
45962         (add_vec_concat_subst_be): Likewise.
45963         (vczle): Likewise.
45964         (vczbe): Likewise.
45965         (add<mode>3): Rename to...
45966         (add<mode>3<vczle><vczbe>): ... This.
45967         (sub<mode>3): Rename to...
45968         (sub<mode>3<vczle><vczbe>): ... This.
45969         (mul<mode>3): Rename to...
45970         (mul<mode>3<vczle><vczbe>): ... This.
45971         (and<mode>3): Rename to...
45972         (and<mode>3<vczle><vczbe>): ... This.
45973         (ior<mode>3): Rename to...
45974         (ior<mode>3<vczle><vczbe>): ... This.
45975         (xor<mode>3): Rename to...
45976         (xor<mode>3<vczle><vczbe>): ... This.
45977         * config/aarch64/iterators.md (VDZ): Define.
45979 2023-04-21  Patrick Palka  <ppalka@redhat.com>
45981         * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
45982         and type_p.
45984 2023-04-21  Jan Hubicka  <jh@suse.cz>
45986         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
45987         commit.
45989 2023-04-21  Vineet Gupta  <vineetg@rivosinc.com>
45991         * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
45992         (shift*_cost_ptr ()): Access x_shift*_cost array directly.
45994 2023-04-21  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
45996         * config/aarch64/aarch64.cc (aarch64_simd_dup_constant): Use
45997         force_reg instead of copy_to_mode_reg.
45998         (aarch64_expand_vector_init): Likewise.
46000 2023-04-21  Uroš Bizjak  <ubizjak@gmail.com>
46002         * config/i386/i386.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Remove.
46003         (REG_OK_FOR_INDEX_NONSTRICT_P,  REG_OK_FOR_BASE_NONSTRICT_P): Ditto.
46004         (REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P): Ditto.
46005         (FIRST_INDEX_REG, LAST_INDEX_REG): New defines.
46006         (LEGACY_INDEX_REG_P, LEGACY_INDEX_REGNO_P): New macros.
46007         (INDEX_REG_P, INDEX_REGNO_P): Ditto.
46008         (REGNO_OK_FOR_INDEX_P): Use INDEX_REGNO_P predicates.
46009         (REGNO_OK_FOR_INDEX_NONSTRICT_P): New macro.
46010         (EG_OK_FOR_BASE_NONSTRICT_P): Ditto.
46011         * config/i386/predicates.md (index_register_operand):
46012         Use REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
46013         * config/i386/i386.cc (ix86_legitimate_address_p): Use
46014         REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_BASE_NONSTRICT_P,
46015         REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
46017 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
46018             Ondrej Kubanek  <kubanek0ondrej@gmail.com>
46020         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
46021         latch.
46023 2023-04-21  Richard Biener  <rguenther@suse.de>
46025         * is-a.h (safe_is_a): New.
46027 2023-04-21  Richard Biener  <rguenther@suse.de>
46029         * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
46030         (gphi_iterator::operator*): Likewise.
46032 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
46033             Michal Jires  <michal@jires.eu>
46035         * ipa-inline.cc (class inline_badness): New class.
46036         (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead
46037         of sreal.
46038         (update_edge_key): Update.
46039         (lookup_recursive_calls): Likewise.
46040         (recursive_inlining): Likewise.
46041         (add_new_edges_to_heap): Likewise.
46042         (inline_small_functions): Likewise.
46044 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
46046         * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
46048 2023-04-21  Richard Biener  <rguenther@suse.de>
46050         PR tree-optimization/109573
46051         * tree-vect-loop.cc (vectorizable_live_operation): Allow
46052         unhandled SSA copy as well.  Demote assert to checking only.
46054 2023-04-21  Richard Biener  <rguenther@suse.de>
46056         * df-core.cc (df_analyze): Compute RPO on the reverse graph
46057         for DF_BACKWARD problems.
46058         (loop_post_order_compute): Rename to ...
46059         (loop_rev_post_order_compute): ... this, compute a RPO.
46060         (loop_inverted_post_order_compute): Rename to ...
46061         (loop_inverted_rev_post_order_compute): ... this, compute a RPO.
46062         (df_analyze_loop): Use RPO on the forward graph for DF_FORWARD
46063         problems, RPO on the inverted graph for DF_BACKWARD.
46065 2023-04-21  Richard Biener  <rguenther@suse.de>
46067         * cfganal.h (inverted_rev_post_order_compute): Rename
46068         from ...
46069         (inverted_post_order_compute): ... this.  Add struct function
46070         argument, change allocation to a C array.
46071         * cfganal.cc (inverted_rev_post_order_compute): Likewise.
46072         * lcm.cc (compute_antinout_edge): Adjust.
46073         * lra-lives.cc (lra_create_live_ranges_1): Likewise.
46074         * tree-ssa-dce.cc (remove_dead_stmt): Likewise.
46075         * tree-ssa-pre.cc (compute_antic): Likewise.
46077 2023-04-21  Richard Biener  <rguenther@suse.de>
46079         * df.h (df_d::postorder_inverted): Change back to int *,
46080         clarify comments.
46081         * df-core.cc (rest_of_handle_df_finish): Adjust.
46082         (df_analyze_1): Likewise.
46083         (df_analyze): For DF_FORWARD problems use RPO on the forward
46084         graph.  Adjust.
46085         (loop_inverted_post_order_compute): Adjust API.
46086         (df_analyze_loop): Adjust.
46087         (df_get_n_blocks): Likewise.
46088         (df_get_postorder): Likewise.
46090 2023-04-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
46092         PR target/108270
46093         * config/riscv/riscv-vsetvl.cc
46094         (vector_infos_manager::all_empty_predecessor_p): New function.
46095         (pass_vsetvl::backward_demand_fusion): Ditto.
46096         * config/riscv/riscv-vsetvl.h: Ditto.
46098 2023-04-21  Robin Dapp  <rdapp@ventanamicro.com>
46100         PR target/109582
46101         * config/riscv/generic.md: Change standard names to insn names.
46103 2023-04-21  Richard Biener  <rguenther@suse.de>
46105         * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
46106         (compute_laterin): Use RPO.
46107         (compute_available): Likewise.
46109 2023-04-21  Peng Fan  <fanpeng@loongson.cn>
46111         * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
46113 2023-04-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
46115         PR target/109547
46116         * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): New function.
46117         (vector_insn_info::skip_avl_compatible_p): Ditto.
46118         (vector_insn_info::merge): Remove default value.
46119         (pass_vsetvl::compute_local_backward_infos): Ditto.
46120         (pass_vsetvl::cleanup_insns): Add local vsetvl elimination.
46121         * config/riscv/riscv-vsetvl.h: Ditto.
46123 2023-04-20  Alejandro Colomar  <alx.manpages@gmail.com>
46125         * doc/extend.texi (Common Function Attributes): Remove duplicate
46126         word.
46128 2023-04-20  Andrew MacLeod  <amacleod@redhat.com>
46130         PR tree-optimization/109564
46131         * gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore
46132         UNDEFINED range names when deciding if all PHI arguments are the same,
46134 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
46136         PR tree-optimization/109011
46137         * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): Use
46138         .CTZ (X) = .POPCOUNT ((X - 1) & ~X) in preference to
46139         .CTZ (X) = PREC - .POPCOUNT (X | -X).
46141 2023-04-20  Vladimir N. Makarov  <vmakarov@redhat.com>
46143         * lra-constraints.cc (match_reload): Exclude some hard regs for
46144         multi-reg inout reload pseudos used in asm in different mode.
46146 2023-04-20  Uros Bizjak  <ubizjak@gmail.com>
46148         * config/arm/arm.cc (thumb1_legitimate_address_p):
46149         Use VIRTUAL_REGISTER_P predicate.
46150         (arm_eliminable_register): Ditto.
46151         * config/avr/avr.md (push<mode>_1): Ditto.
46152         * config/bfin/predicates.md (register_no_elim_operand): Ditto.
46153         * config/h8300/predicates.md (register_no_sp_elim_operand): Ditto.
46154         * config/i386/predicates.md (register_no_elim_operand): Ditto.
46155         * config/iq2000/predicates.md (call_insn_operand): Ditto.
46156         * config/microblaze/microblaze.h (CALL_INSN_OP): Ditto.
46158 2023-04-20  Uros Bizjak  <ubizjak@gmail.com>
46160         PR target/78952
46161         * config/i386/predicates.md (extract_operator): New predicate.
46162         * config/i386/i386.md (any_extract): Remove code iterator.
46163         (*cmpqi_ext<mode>_1_mem_rex64): Use extract_operator predicate.
46164         (*cmpqi_ext<mode>_1): Ditto.
46165         (*cmpqi_ext<mode>_2): Ditto.
46166         (*cmpqi_ext<mode>_3_mem_rex64): Ditto.
46167         (*cmpqi_ext<mode>_3): Ditto.
46168         (*cmpqi_ext<mode>_4): Ditto.
46169         (*extzvqi_mem_rex64): Ditto.
46170         (*extzvqi): Ditto.
46171         (*insvqi_2): Ditto.
46172         (*extendqi<SWI24:mode>_ext_1): Ditto.
46173         (*addqi_ext<mode>_0): Ditto.
46174         (*addqi_ext<mode>_1): Ditto.
46175         (*addqi_ext<mode>_2): Ditto.
46176         (*subqi_ext<mode>_0): Ditto.
46177         (*subqi_ext<mode>_2): Ditto.
46178         (*testqi_ext<mode>_1): Ditto.
46179         (*testqi_ext<mode>_2): Ditto.
46180         (*andqi_ext<mode>_0): Ditto.
46181         (*andqi_ext<mode>_1): Ditto.
46182         (*andqi_ext<mode>_1_cc): Ditto.
46183         (*andqi_ext<mode>_2): Ditto.
46184         (*<any_or:code>qi_ext<mode>_0): Ditto.
46185         (*<any_or:code>qi_ext<mode>_1): Ditto.
46186         (*<any_or:code>qi_ext<mode>_2): Ditto.
46187         (*xorqi_ext<mode>_1_cc): Ditto.
46188         (*negqi_ext<mode>_2): Ditto.
46189         (*ashlqi_ext<mode>_2): Ditto.
46190         (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
46192 2023-04-20  Raphael Zinsly  <rzinsly@ventanamicro.com>
46194         PR target/108248
46195         * config/riscv/bitmanip.md (clz, ctz, pcnt, min, max patterns): Use
46196         <bitmanip_insn> as the type to allow for fine grained control of
46197         scheduling these insns.
46198         * config/riscv/generic.md (generic_alu): Add bitmanip, clz, ctz, pcnt,
46199         min, max.
46200         * config/riscv/riscv.md (type attribute): Add types for clz, ctz,
46201         pcnt, signed and unsigned min/max.
46203 2023-04-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
46204             kito-cheng  <kito.cheng@sifive.com>
46206         * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
46208 2023-04-20  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
46209             kito-cheng  <kito.cheng@sifive.com>
46211         PR target/109535
46212         * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
46213         (pass_vsetvl::cleanup_insns): Fix bug.
46215 2023-04-20  Andrew Stubbs  <ams@codesourcery.com>
46217         * config/gcn/gcn-valu.md (vnsi, VnSI): Add scalar modes.
46218         (ldexp<mode>3): Delete.
46219         (ldexp<mode>3<exec>): Change "B" to "A".
46221 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
46222             Jonathan Wakely  <jwakely@redhat.com>
46224         * tree.h (built_in_function_equal_p): New helper function.
46225         (fndecl_built_in_p): Turn into variadic template to support
46226         1 or more built_in_function arguments.
46227         * builtins.cc (fold_builtin_expect): Use 3 argument fndecl_built_in_p.
46228         * gimplify.cc (goa_stabilize_expr): Likewise.
46229         * cgraphclones.cc (cgraph_node::create_clone): Likewise.
46230         * ipa-fnsummary.cc (compute_fn_summary): Likewise.
46231         * omp-low.cc (setjmp_or_longjmp_p): Likewise.
46232         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
46233         cgraph_update_edges_for_call_stmt_node,
46234         cgraph_edge::verify_corresponds_to_fndecl,
46235         cgraph_node::verify_node): Likewise.
46236         * tree-stdarg.cc (optimize_va_list_gpr_fpr_size): Likewise.
46237         * gimple-ssa-warn-access.cc (matching_alloc_calls_p): Likewise.
46238         * ipa-prop.cc (try_make_edge_direct_virtual_call): Likewise.
46240 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
46242         PR tree-optimization/109011
46243         * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): New function.
46244         (vect_recog_popcount_clz_ctz_ffs_pattern): Move vect_pattern_detected
46245         call later.  Don't punt for IFN_CTZ or IFN_FFS if it doesn't have
46246         direct optab support, but has instead IFN_CLZ, IFN_POPCOUNT or
46247         for IFN_FFS IFN_CTZ support, use vect_recog_ctz_ffs_pattern for that
46248         case.
46249         (vect_vect_recog_func_ptrs): Add ctz_ffs entry.
46251 2023-04-20  Richard Biener  <rguenther@suse.de>
46253         * df-core.cc (rest_of_handle_df_initialize): Remove
46254         computation of df->postorder, df->postorder_inverted and
46255         df->n_blocks.
46257 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
46259         * common/config/i386/i386-common.cc
46260         (OPTION_MASK_ISA2_AVX_UNSET): Add OPTION_MASK_ISA2_VAES_UNSET.
46261         (ix86_handle_option): Set AVX flag for VAES.
46262         * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
46263         Add OPTION_MASK_ISA2_VAES_UNSET.
46264         (def_builtin): Share builtin between AES and VAES.
46265         * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
46266         Ditto.
46267         * config/i386/i386.md (aes): New isa attribute.
46268         * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
46269         (aesenclast): Ditto.
46270         (aesdec): Ditto.
46271         (aesdeclast): Ditto.
46272         * config/i386/vaesintrin.h: Remove redundant avx target push.
46273         * config/i386/wmmintrin.h (_mm_aesdec_si128): Change to macro.
46274         (_mm_aesdeclast_si128): Ditto.
46275         (_mm_aesenc_si128): Ditto.
46276         (_mm_aesenclast_si128): Ditto.
46278 2023-04-20  Hu, Lin1  <lin1.hu@intel.com>
46280         * config/i386/avx2intrin.h
46281         (_MM_REDUCE_OPERATOR_BASIC_EPI16): New macro.
46282         (_MM_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
46283         (_MM256_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
46284         (_MM256_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
46285         (_MM_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
46286         (_MM_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
46287         (_MM256_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
46288         (_MM256_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
46289         (_mm_reduce_add_epi16): New instrinsics.
46290         (_mm_reduce_mul_epi16): Ditto.
46291         (_mm_reduce_and_epi16): Ditto.
46292         (_mm_reduce_or_epi16): Ditto.
46293         (_mm_reduce_max_epi16): Ditto.
46294         (_mm_reduce_max_epu16): Ditto.
46295         (_mm_reduce_min_epi16): Ditto.
46296         (_mm_reduce_min_epu16): Ditto.
46297         (_mm256_reduce_add_epi16): Ditto.
46298         (_mm256_reduce_mul_epi16): Ditto.
46299         (_mm256_reduce_and_epi16): Ditto.
46300         (_mm256_reduce_or_epi16): Ditto.
46301         (_mm256_reduce_max_epi16): Ditto.
46302         (_mm256_reduce_max_epu16): Ditto.
46303         (_mm256_reduce_min_epi16): Ditto.
46304         (_mm256_reduce_min_epu16): Ditto.
46305         (_mm_reduce_add_epi8): Ditto.
46306         (_mm_reduce_mul_epi8): Ditto.
46307         (_mm_reduce_and_epi8): Ditto.
46308         (_mm_reduce_or_epi8): Ditto.
46309         (_mm_reduce_max_epi8): Ditto.
46310         (_mm_reduce_max_epu8): Ditto.
46311         (_mm_reduce_min_epi8): Ditto.
46312         (_mm_reduce_min_epu8): Ditto.
46313         (_mm256_reduce_add_epi8): Ditto.
46314         (_mm256_reduce_mul_epi8): Ditto.
46315         (_mm256_reduce_and_epi8): Ditto.
46316         (_mm256_reduce_or_epi8): Ditto.
46317         (_mm256_reduce_max_epi8): Ditto.
46318         (_mm256_reduce_max_epu8): Ditto.
46319         (_mm256_reduce_min_epi8): Ditto.
46320         (_mm256_reduce_min_epu8): Ditto.
46321         * config/i386/avx512vlbwintrin.h:
46322         (_mm_mask_reduce_add_epi16): Ditto.
46323         (_mm_mask_reduce_mul_epi16): Ditto.
46324         (_mm_mask_reduce_and_epi16): Ditto.
46325         (_mm_mask_reduce_or_epi16): Ditto.
46326         (_mm_mask_reduce_max_epi16): Ditto.
46327         (_mm_mask_reduce_max_epu16): Ditto.
46328         (_mm_mask_reduce_min_epi16): Ditto.
46329         (_mm_mask_reduce_min_epu16): Ditto.
46330         (_mm256_mask_reduce_add_epi16): Ditto.
46331         (_mm256_mask_reduce_mul_epi16): Ditto.
46332         (_mm256_mask_reduce_and_epi16): Ditto.
46333         (_mm256_mask_reduce_or_epi16): Ditto.
46334         (_mm256_mask_reduce_max_epi16): Ditto.
46335         (_mm256_mask_reduce_max_epu16): Ditto.
46336         (_mm256_mask_reduce_min_epi16): Ditto.
46337         (_mm256_mask_reduce_min_epu16): Ditto.
46338         (_mm_mask_reduce_add_epi8): Ditto.
46339         (_mm_mask_reduce_mul_epi8): Ditto.
46340         (_mm_mask_reduce_and_epi8): Ditto.
46341         (_mm_mask_reduce_or_epi8): Ditto.
46342         (_mm_mask_reduce_max_epi8): Ditto.
46343         (_mm_mask_reduce_max_epu8): Ditto.
46344         (_mm_mask_reduce_min_epi8): Ditto.
46345         (_mm_mask_reduce_min_epu8): Ditto.
46346         (_mm256_mask_reduce_add_epi8): Ditto.
46347         (_mm256_mask_reduce_mul_epi8): Ditto.
46348         (_mm256_mask_reduce_and_epi8): Ditto.
46349         (_mm256_mask_reduce_or_epi8): Ditto.
46350         (_mm256_mask_reduce_max_epi8): Ditto.
46351         (_mm256_mask_reduce_max_epu8): Ditto.
46352         (_mm256_mask_reduce_min_epi8): Ditto.
46353         (_mm256_mask_reduce_min_epu8): Ditto.
46355 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
46357         * common/config/i386/i386-common.cc
46358         (OPTION_MASK_ISA_VPCLMULQDQ_SET):
46359         Add OPTION_MASK_ISA_PCLMUL_SET and OPTION_MASK_ISA_AVX_SET.
46360         (OPTION_MASK_ISA_AVX_UNSET):
46361         Add OPTION_MASK_ISA_VPCLMULQDQ_UNSET.
46362         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
46363         * config/i386/i386.md (vpclmulqdqvl): New.
46364         * config/i386/sse.md (pclmulqdq): Add evex encoding.
46365         * config/i386/vpclmulqdqintrin.h: Remove redudant avx target
46366         push.
46368 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
46370         * config/i386/avx512vlbwintrin.h
46371         (_mm_mask_blend_epi16): Remove __OPTIMIZE__ wrapper.
46372         (_mm_mask_blend_epi8): Ditto.
46373         (_mm256_mask_blend_epi16): Ditto.
46374         (_mm256_mask_blend_epi8): Ditto.
46375         * config/i386/avx512vlintrin.h
46376         (_mm256_mask_blend_pd): Ditto.
46377         (_mm256_mask_blend_ps): Ditto.
46378         (_mm256_mask_blend_epi64): Ditto.
46379         (_mm256_mask_blend_epi32): Ditto.
46380         (_mm_mask_blend_pd): Ditto.
46381         (_mm_mask_blend_ps): Ditto.
46382         (_mm_mask_blend_epi64): Ditto.
46383         (_mm_mask_blend_epi32): Ditto.
46384         * config/i386/sse.md (VF_AVX512BWHFBF16): Removed.
46385         (VF_AVX512HFBFVL): Move it before the first usage.
46386         (<avx512>_blendm<mode>): Change iterator from VF_AVX512BWHFBF16
46387         to VF_AVX512HFBFVL.
46389 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
46391         * common/config/i386/i386-common.cc
46392         (OPTION_MASK_ISA_AVX512VBMI2_SET): Change OPTION_MASK_ISA_AVX512F_SET
46393         to OPTION_MASK_ISA_AVX512BW_SET.
46394         (OPTION_MASK_ISA_AVX512F_UNSET):
46395         Remove OPTION_MASK_ISA_AVX512VBMI2_UNSET.
46396         (OPTION_MASK_ISA_AVX512BW_UNSET):
46397         Add OPTION_MASK_ISA_AVX512VBMI2_UNSET.
46398         * config/i386/avx512vbmi2intrin.h: Do not push avx512bw.
46399         * config/i386/avx512vbmi2vlintrin.h: Ditto.
46400         * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA_AVX512BW.
46401         * config/i386/sse.md (VI12_AVX512VLBW): Removed.
46402         (VI12_VI48F_AVX512VLBW): Rename to VI12_VI48F_AVX512VL.
46403         (compress<mode>_mask): Change iterator from VI12_AVX512VLBW to
46404         VI12_AVX512VL.
46405         (compressstore<mode>_mask): Ditto.
46406         (expand<mode>_mask): Ditto.
46407         (expand<mode>_maskz): Ditto.
46408         (*expand<mode>_mask): Change iterator from VI12_VI48F_AVX512VLBW to
46409         VI12_VI48F_AVX512VL.
46411 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
46413         * common/config/i386/i386-common.cc
46414         (OPTION_MASK_ISA_AVX512BITALG_SET):
46415         Change OPTION_MASK_ISA_AVX512F_SET
46416         to OPTION_MASK_ISA_AVX512BW_SET.
46417         (OPTION_MASK_ISA_AVX512F_UNSET):
46418         Remove OPTION_MASK_ISA_AVX512BITALG_SET.
46419         (OPTION_MASK_ISA_AVX512BW_UNSET):
46420         Add OPTION_MASK_ISA_AVX512BITALG_SET.
46421         * config/i386/avx512bitalgintrin.h: Do not push avx512bw.
46422         * config/i386/i386-builtin.def:
46423         Remove redundant OPTION_MASK_ISA_AVX512BW.
46424         * config/i386/sse.md (VI1_AVX512VLBW): Removed.
46425         (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>):
46426         Change the iterator from VI1_AVX512VLBW to VI1_AVX512VL.
46428 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
46430         * config/i386/i386-expand.cc
46431         (ix86_check_builtin_isa_match): Correct wrong comments.
46432         Add a new macro SHARE_BUILTIN and refactor the current if
46433         clauses to macro.
46435 2023-04-20  Mo, Zewei  <zewei.mo@intel.com>
46437         * config/i386/cpuid.h: Open a new section for Extended Features
46438         Leaf (%eax == 7, %ecx == 0) and Extended Features Sub-leaf (%eax == 7,
46439         %ecx == 1).
46441 2023-04-20  Hu, Lin1  <lin1.hu@intel.com>
46443         * config/i386/sse.md: Modify insn vperm{i,f}
46444         and vshuf{i,f}.
46446 2023-04-19  Max Filippov  <jcmvbkbc@gmail.com>
46448         * config/xtensa/xtensa-opts.h: New header.
46449         * config/xtensa/xtensa.h (STRICT_ALIGNMENT): Redefine as
46450         xtensa_strict_align.
46451         * config/xtensa/xtensa.cc (xtensa_option_override): When
46452         -m[no-]strict-align is not specified in the command line set
46453         xtensa_strict_align to 0 if the hardware supports both unaligned
46454         loads and stores or to 1 otherwise.
46455         * config/xtensa/xtensa.opt (mstrict-align): New option.
46456         * doc/invoke.texi (Xtensa Options): Document -m[no-]strict-align.
46458 2023-04-19  Max Filippov  <jcmvbkbc@gmail.com>
46460         * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
46461         function.
46463 2023-04-19  Andrew Pinski  <apinski@marvell.com>
46465         * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
46467 2023-04-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
46469         * config/riscv/riscv-modes.def (FLOAT_MODE): Add chunk 128 support.
46470         (VECTOR_BOOL_MODE): Ditto.
46471         (ADJUST_NUNITS): Ditto.
46472         (ADJUST_ALIGNMENT): Ditto.
46473         (ADJUST_BYTESIZE): Ditto.
46474         (ADJUST_PRECISION): Ditto.
46475         (RVV_MODES): Ditto.
46476         (VECTOR_MODE_WITH_PREFIX): Ditto.
46477         * config/riscv/riscv-v.cc (ENTRY): Ditto.
46478         (get_vlmul): Ditto.
46479         (get_ratio): Ditto.
46480         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
46481         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
46482         (vbool64_t): Ditto.
46483         (vbool32_t): Ditto.
46484         (vbool16_t): Ditto.
46485         (vbool8_t): Ditto.
46486         (vbool4_t): Ditto.
46487         (vbool2_t): Ditto.
46488         (vbool1_t): Ditto.
46489         (vint8mf8_t): Ditto.
46490         (vuint8mf8_t): Ditto.
46491         (vint8mf4_t): Ditto.
46492         (vuint8mf4_t): Ditto.
46493         (vint8mf2_t): Ditto.
46494         (vuint8mf2_t): Ditto.
46495         (vint8m1_t): Ditto.
46496         (vuint8m1_t): Ditto.
46497         (vint8m2_t): Ditto.
46498         (vuint8m2_t): Ditto.
46499         (vint8m4_t): Ditto.
46500         (vuint8m4_t): Ditto.
46501         (vint8m8_t): Ditto.
46502         (vuint8m8_t): Ditto.
46503         (vint16mf4_t): Ditto.
46504         (vuint16mf4_t): Ditto.
46505         (vint16mf2_t): Ditto.
46506         (vuint16mf2_t): Ditto.
46507         (vint16m1_t): Ditto.
46508         (vuint16m1_t): Ditto.
46509         (vint16m2_t): Ditto.
46510         (vuint16m2_t): Ditto.
46511         (vint16m4_t): Ditto.
46512         (vuint16m4_t): Ditto.
46513         (vint16m8_t): Ditto.
46514         (vuint16m8_t): Ditto.
46515         (vint32mf2_t): Ditto.
46516         (vuint32mf2_t): Ditto.
46517         (vint32m1_t): Ditto.
46518         (vuint32m1_t): Ditto.
46519         (vint32m2_t): Ditto.
46520         (vuint32m2_t): Ditto.
46521         (vint32m4_t): Ditto.
46522         (vuint32m4_t): Ditto.
46523         (vint32m8_t): Ditto.
46524         (vuint32m8_t): Ditto.
46525         (vint64m1_t): Ditto.
46526         (vuint64m1_t): Ditto.
46527         (vint64m2_t): Ditto.
46528         (vuint64m2_t): Ditto.
46529         (vint64m4_t): Ditto.
46530         (vuint64m4_t): Ditto.
46531         (vint64m8_t): Ditto.
46532         (vuint64m8_t): Ditto.
46533         (vfloat32mf2_t): Ditto.
46534         (vfloat32m1_t): Ditto.
46535         (vfloat32m2_t): Ditto.
46536         (vfloat32m4_t): Ditto.
46537         (vfloat32m8_t): Ditto.
46538         (vfloat64m1_t): Ditto.
46539         (vfloat64m2_t): Ditto.
46540         (vfloat64m4_t): Ditto.
46541         (vfloat64m8_t): Ditto.
46542         * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
46543         * config/riscv/riscv.cc (riscv_legitimize_poly_move): Ditto.
46544         (riscv_convert_vector_bits): Ditto.
46545         * config/riscv/riscv.md:
46546         * config/riscv/vector-iterators.md:
46547         * config/riscv/vector.md
46548         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
46549         (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
46550         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
46551         (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
46552         (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
46553         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
46554         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
46555         (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
46556         (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
46558 2023-04-19  Pan Li  <pan2.li@intel.com>
46560         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
46561         Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
46563 2023-04-19  Uros Bizjak  <ubizjak@gmail.com>
46565         PR target/78904
46566         PR target/78952
46567         * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): New insn pattern.
46568         (*cmpqi_ext<mode>_1): Use nonimmediate_operand predicate
46569         for operand 0. Use any_extract code iterator.
46570         (*cmpqi_ext<mode>_1 peephole2): New peephole2 pattern.
46571         (*cmpqi_ext<mode>_2): Use any_extract code iterator.
46572         (*cmpqi_ext<mode>_3_mem_rex64): New insn pattern.
46573         (*cmpqi_ext<mode>_1): Use general_operand predicate
46574         for operand 1. Use any_extract code iterator.
46575         (*cmpqi_ext<mode>_3 peephole2): New peephole2 pattern.
46576         (*cmpqi_ext<mode>_4): Use any_extract code iterator.
46578 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
46580         * config/aarch64/aarch64-simd.md (aarch64_saddw2<mode>): Delete.
46581         (aarch64_uaddw2<mode>): Delete.
46582         (aarch64_ssubw2<mode>): Delete.
46583         (aarch64_usubw2<mode>): Delete.
46584         (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>): New define_expand.
46586 2023-04-19  Richard Biener  <rguenther@suse.de>
46588         * tree-ssa-structalias.cc (do_ds_constraint): Use
46589         solve_add_graph_edge.
46591 2023-04-19  Richard Biener  <rguenther@suse.de>
46593         * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
46594         split out from ...
46595         (do_sd_constraint): ... here.
46597 2023-04-19  Richard Biener  <rguenther@suse.de>
46599         * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
46600         rejecting the merge when A contains only a non-local label.
46602 2023-04-19  Uros Bizjak  <ubizjak@gmail.com>
46604         * rtl.h (VIRTUAL_REGISTER_P): New predicate.
46605         (VIRTUAL_REGISTER_NUM_P): Ditto.
46606         (REGNO_PTR_FRAME_P): Use VIRTUAL_REGISTER_NUM_P predicate.
46607         * expr.cc (force_operand): Use VIRTUAL_REGISTER_P predicate.
46608         * function.cc (instantiate_decl_rtl): Ditto.
46609         * rtlanal.cc (rtx_addr_can_trap_p_1): Ditto.
46610         (nonzero_address_p): Ditto.
46611         (refers_to_regno_p): Use VIRTUAL_REGISTER_NUM_P predicate.
46613 2023-04-19  Aldy Hernandez  <aldyh@redhat.com>
46615         * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
46617 2023-04-19  Richard Biener  <rguenther@suse.de>
46619         * system.h (auto_mpz::operator->()): New.
46620         * realmpfr.h (auto_mpfr::operator->()): New.
46621         * builtins.cc (do_mpfr_lgamma_r): Use auto_mpfr.
46622         * real.cc (real_from_string): Likewise.
46623         (dconst_e_ptr): Likewise.
46624         (dconst_sqrt2_ptr): Likewise.
46625         * tree-ssa-loop-niter.cc (refine_value_range_using_guard):
46626         Use auto_mpz.
46627         (bound_difference_of_offsetted_base): Likewise.
46628         (number_of_iterations_ne): Likewise.
46629         (number_of_iterations_lt_to_ne): Likewise.
46630         * ubsan.cc: Include realmpfr.h.
46631         (ubsan_instrument_float_cast): Use auto_mpfr.
46633 2023-04-19  Richard Biener  <rguenther@suse.de>
46635         * tree-ssa-structalias.cc (solve_graph): Remove self-copy
46636         edges, remove edges from escaped after special-casing them.
46638 2023-04-19  Richard Biener  <rguenther@suse.de>
46640         * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
46641         special casing.
46643 2023-04-19  Richard Biener  <rguenther@suse.de>
46645         * tree-ssa-structalias.cc (do_sd_constraint): Do not write
46646         to the LHS varinfo solution member.
46648 2023-04-19  Richard Biener  <rguenther@suse.de>
46650         * tree-ssa-structalias.cc (topo_visit): Look at the real
46651         destination of edges.
46653 2023-04-19  Richard Biener  <rguenther@suse.de>
46655         PR tree-optimization/44794
46656         * tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop):
46657         If an epilogue loop is required set its iteration upper bound.
46659 2023-04-19  Xi Ruoyao  <xry111@xry111.site>
46661         PR target/109465
46662         * config/loongarch/loongarch-protos.h
46663         (loongarch_expand_block_move): Add a parameter as alignment RTX.
46664         * config/loongarch/loongarch.h:
46665         (LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER): Remove.
46666         (LARCH_MAX_MOVE_BYTES_STRAIGHT): Remove.
46667         (LARCH_MAX_MOVE_OPS_PER_LOOP_ITER): Define.
46668         (LARCH_MAX_MOVE_OPS_STRAIGHT): Define.
46669         (MOVE_RATIO): Use LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
46670         LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
46671         * config/loongarch/loongarch.cc (loongarch_expand_block_move):
46672         Take the alignment from the parameter, but set it to
46673         UNITS_PER_WORD if !TARGET_STRICT_ALIGN.  Limit the length of
46674         straight-line implementation with LARCH_MAX_MOVE_OPS_STRAIGHT
46675         instead of LARCH_MAX_MOVE_BYTES_STRAIGHT.
46676         (loongarch_block_move_straight): When there are left-over bytes,
46677         half the mode size instead of falling back to byte mode at once.
46678         (loongarch_block_move_loop): Limit the length of loop body with
46679         LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
46680         LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
46681         * config/loongarch/loongarch.md (cpymemsi): Pass the alignment
46682         to loongarch_expand_block_move.
46684 2023-04-19  Xi Ruoyao  <xry111@xry111.site>
46686         * config/loongarch/loongarch.cc
46687         (loongarch_setup_incoming_varargs): Don't save more GARs than
46688         cfun->va_list_gpr_size / UNITS_PER_WORD.
46690 2023-04-19  Richard Biener  <rguenther@suse.de>
46692         * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
46693         no epilogue condition.
46695 2023-04-19  Richard Biener  <rguenther@suse.de>
46697         * gimple.h (gimple_assign_load): Outline...
46698         * gimple.cc (gimple_assign_load): ... here.  Avoid
46699         get_base_address and instead just strip the outermost
46700         handled component, treating a remaining handled component
46701         as load.
46703 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
46705         * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
46706         definition.
46707         * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
46709 2023-04-19  Jakub Jelinek  <jakub@redhat.com>
46711         PR tree-optimization/109011
46712         * tree-vect-patterns.cc (vect_recog_popcount_pattern): Rename to ...
46713         (vect_recog_popcount_clz_ctz_ffs_pattern): ... this.  Handle also
46714         CLZ, CTZ and FFS.  Remove vargs variable, use
46715         gimple_build_call_internal rather than gimple_build_call_internal_vec.
46716         (vect_vect_recog_func_ptrs): Adjust popcount entry.
46718 2023-04-19  Jakub Jelinek  <jakub@redhat.com>
46720         PR target/109040
46721         * dse.cc (replace_read): If read_reg is a SUBREG of a word mode
46722         REG, for WORD_REGISTER_OPERATIONS copy SUBREG_REG of it into
46723         a new REG rather than the SUBREG.
46725 2023-04-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
46727         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
46728         New pattern.
46730 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
46732         PR target/108840
46733         * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and
46734         ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases.  Handle subregs in op1.
46736 2023-04-19  Richard Biener  <rguenther@suse.de>
46738         PR rtl-optimization/109237
46739         * cse.cc (insn_live_p): Remove NEXT_INSN walk, instead check
46740         TREE_VISITED on INSN_VAR_LOCATION_DECL.
46741         (delete_trivially_dead_insns): Maintain TREE_VISITED on
46742         active debug bind INSN_VAR_LOCATION_DECL.
46744 2023-04-19  Richard Biener  <rguenther@suse.de>
46746         PR rtl-optimization/109237
46747         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
46749 2023-04-19  Christophe Lyon  <christophe.lyon@arm.com>
46751         * doc/install.texi (enable-decimal-float): Add AArch64.
46753 2023-04-19  liuhongt  <hongtao.liu@intel.com>
46755         PR rtl-optimization/109351
46756         * ira.cc (setup_class_subset_and_memory_move_costs): Check
46757         hard_regno_mode_ok before setting lowest memory move cost for
46758         the mode with different reg classes.
46760 2023-04-18  Jason Merrill  <jason@redhat.com>
46762         * doc/invoke.texi: Remove stray @gol.
46764 2023-04-18  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
46766         * ifcvt.cc (cond_move_process_if_block): Consider the result of
46767         targetm.noce_conversion_profitable_p() when replacing the original
46768         sequence with the converted one.
46770 2023-04-18  Mark Harmstone  <mark@harmstone.com>
46772         * common.opt (gcodeview): Add new option.
46773         * gcc.cc (driver_handle_option); Handle OPT_gcodeview.
46774         * opts.cc (command_handle_option): Similarly.
46775         * doc/invoke.texi: Add documentation for -gcodeview.
46777 2023-04-18  Andrew Pinski  <apinski@marvell.com>
46779         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove declaration.
46780         (make_pass_phiopt): Make execute out of line.
46781         (tree_ssa_cs_elim): Move code into ...
46782         (pass_cselim::execute): here.
46784 2023-04-18  Sam James  <sam@gentoo.org>
46786         * system.h: Drop unused INCLUDE_PTHREAD_H.
46788 2023-04-18  Kevin Lee  <kevinl@rivosinc.com>
46790         * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
46791         condition.
46793 2023-04-18  Sinan Lin  <sinan.lin@linux.alibaba.com>
46795         * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
46796         (bswapdi2, bswapsi2): Similarly.
46798 2023-04-18  Uros Bizjak  <ubizjak@gmail.com>
46800         PR target/94908
46801         * config/i386/i386-builtin.def (__builtin_ia32_insertps128):
46802         Use CODE_FOR_sse4_1_insertps_v4sf.
46803         * config/i386/i386-expand.cc (expand_vec_perm_insertps): New.
46804         (expand_vec_perm_1): Call expand_vec_per_insertps.
46805         * config/i386/i386.md ("unspec"): Declare UNSPEC_INSERTPS here.
46806         * config/i386/mmx.md (mmxscalarmode): New mode attribute.
46807         (@sse4_1_insertps_<mode>): New insn pattern.
46808         * config/i386/sse.md (@sse4_1_insertps_<mode>): Macroize insn
46809         pattern from sse4_1_insertps using VI4F_128 mode iterator.
46811 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
46813         * value-range.cc (gt_ggc_mx): New.
46814         (gt_pch_nx): New.
46815         * value-range.h (class vrange): Add GTY marker.
46816         (class frange): Same.
46817         (gt_ggc_mx): Remove.
46818         (gt_pch_nx): Remove.
46820 2023-04-18  Victor L. Do Nascimento  <victor.donascimento@arm.com>
46822         * lra-constraints.cc (constraint_unique): New.
46823         (process_address_1): Apply constraint_unique test.
46824         * recog.cc (constrain_operands): Allow relaxed memory
46825         constaints.
46827 2023-04-18  Kito Cheng  <kito.cheng@sifive.com>
46829         * doc/extend.texi (Target Builtins): Add RISC-V Vector
46830         Intrinsics.
46831         (RISC-V Vector Intrinsics): Document GCC implemented which
46832         version of RISC-V vector intrinsics and its reference.
46834 2023-04-18  Richard Biener  <rguenther@suse.de>
46836         PR middle-end/108786
46837         * bitmap.h (bitmap_clear_first_set_bit): New.
46838         * bitmap.cc (bitmap_first_set_bit_worker): Rename from
46839         bitmap_first_set_bit and add optional clearing of the bit.
46840         (bitmap_first_set_bit): Wrap bitmap_first_set_bit_worker.
46841         (bitmap_clear_first_set_bit): Likewise.
46842         * df-core.cc (df_worklist_dataflow_doublequeue): Use
46843         bitmap_clear_first_set_bit.
46844         * graphite-scop-detection.cc (scop_detection::merge_sese):
46845         Likewise.
46846         * sanopt.cc (sanitize_asan_mark_unpoison): Likewise.
46847         (sanitize_asan_mark_poison): Likewise.
46848         * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Likewise.
46849         * tree-into-ssa.cc (rewrite_blocks): Likewise.
46850         * tree-ssa-dce.cc (simple_dce_from_worklist): Likewise.
46851         * tree-ssa-sccvn.cc (do_rpo_vn_1): Likewise.
46853 2023-04-18  Richard Biener  <rguenther@suse.de>
46855         * tree-ssa-structalias.cc (dump_sa_stats): Split out from...
46856         (dump_sa_points_to_info): ... this function.
46857         (compute_points_to_sets): Guard large dumps with TDF_DETAILS,
46858         and call dump_sa_stats guarded with TDF_STATS.
46859         (ipa_pta_execute): Likewise.
46860         (compute_may_aliases): Guard dump_alias_info with
46861         TDF_DETAILS|TDF_ALIAS.
46863 2023-04-18  Andrew Pinski  <apinski@marvell.com>
46865         * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump
46866         the expression that is being tried when TDF_FOLDING
46867         is true.
46868         (phiopt_worker::match_simplify_replacement): Dump
46869         the sequence which was created by gimple_simplify_phiopt
46870         when TDF_FOLDING is true.
46872 2023-04-18  Andrew Pinski  <apinski@marvell.com>
46874         * tree-ssa-phiopt.cc (match_simplify_replacement):
46875         Simplify code that does the movement slightly.
46877 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
46879         * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to
46880         define_expand.
46881         (rev16<mode>2): Rename to...
46882         (aarch64_rev16<mode>2_alt1): ... This.
46883         (rev16<mode>2_alt): Rename to...
46884         (*aarch64_rev16<mode>2_alt2): ... This.
46886 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
46888         * emit-rtl.cc (init_emit_once): Initialize dconstm0.
46889         * gimple-range-op.cc (class cfn_signbit): Remove dconstm0
46890         declaration.
46891         * range-op-float.cc (zero_range): Use dconstm0.
46892         (zero_to_inf_range): Same.
46893         * real.h (dconstm0): New.
46894         * value-range.cc (frange::flush_denormals_to_zero): Use dconstm0.
46895         (frange::set_zero): Do not declare dconstm0.
46897 2023-04-18  Richard Biener  <rguenther@suse.de>
46899         * system.h (class auto_mpz): New,
46900         * realmpfr.h (class auto_mpfr): Likewise.
46901         * fold-const-call.cc (do_mpfr_arg1): Use auto_mpfr.
46902         (do_mpfr_arg2): Likewise.
46903         * tree-ssa-loop-niter.cc (bound_difference): Use auto_mpz;
46905 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
46907         * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
46908         builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
46910 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
46912         * value-range.cc (frange::operator==): Adjust for NAN.
46913         (range_tests_nan): Remove some NAN tests.
46915 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
46917         * inchash.cc (hash::add_real_value): New.
46918         * inchash.h (class hash): Add add_real_value.
46919         * value-range.cc (add_vrange): New.
46920         * value-range.h (inchash::add_vrange): New.
46922 2023-04-18  Richard Biener  <rguenther@suse.de>
46924         PR tree-optimization/109539
46925         * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
46926         Re-implement pointer relatedness for PHIs.
46928 2023-04-18  Andrew Stubbs  <ams@codesourcery.com>
46930         * config/gcn/gcn-valu.md (SV_SFDF): New iterator.
46931         (SV_FP): New iterator.
46932         (scalar_mode, SCALAR_MODE): Add identity mappings for scalar modes.
46933         (recip<mode>2): Unify the two patterns using SV_FP.
46934         (div_scale<mode><exec_vcc>): New insn.
46935         (div_fmas<mode><exec>): New insn.
46936         (div_fixup<mode><exec>): New insn.
46937         (div<mode>3): Unify the two expanders and rewrite using hardfp.
46938         * config/gcn/gcn.cc (gcn_md_reorg): Support "vccwait" attribute.
46939         * config/gcn/gcn.md (unspec): Add UNSPEC_DIV_SCALE, UNSPEC_DIV_FMAS,
46940         and UNSPEC_DIV_FIXUP.
46941         (vccwait): New attribute.
46943 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
46945         * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
46946         if the argument matches that.
46948 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
46950         * config/aarch64/atomics.md
46951         (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
46952         Use SD_HSDI for destination mode iterator.
46954 2023-04-18  Jin Ma  <jinma@linux.alibaba.com>
46956         * common/config/riscv/riscv-common.cc (multi_letter_subset_rank): Swap the order
46957         of z-extensions and s-extensions.
46958         (riscv_subset_list::parse): Likewise.
46960 2023-04-18  Jakub Jelinek  <jakub@redhat.com>
46962         PR tree-optimization/109240
46963         * match.pd (fneg/fadd): Rewrite such that it handles both plus as
46964         first vec_perm operand and minus as second using fneg/fadd and
46965         minus as first vec_perm operand and plus as second using fneg/fsub.
46967 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
46969         * data-streamer.cc (bp_pack_real_value): New.
46970         (bp_unpack_real_value): New.
46971         * data-streamer.h (bp_pack_real_value):  New.
46972         (bp_unpack_real_value): New.
46973         * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Use
46974         bp_unpack_real_value.
46975         * tree-streamer-out.cc (pack_ts_real_cst_value_fields): Use
46976         bp_pack_real_value.
46978 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
46980         * wide-int.h (WIDE_INT_MAX_HWIS): New.
46981         (class fixed_wide_int_storage): Use it.
46982         (trailing_wide_ints <N>::set_precision): Use it.
46983         (trailing_wide_ints <N>::extra_size): Use it.
46985 2023-04-18  Xi Ruoyao  <xry111@xry111.site>
46987         * config/loongarch/loongarch-protos.h
46988         (loongarch_addu16i_imm12_operand_p): New function prototype.
46989         (loongarch_split_plus_constant): Likewise.
46990         * config/loongarch/loongarch.cc
46991         (loongarch_addu16i_imm12_operand_p): New function.
46992         (loongarch_split_plus_constant): Likewise.
46993         * config/loongarch/loongarch.h (ADDU16I_OPERAND): New macro.
46994         (DUAL_IMM12_OPERAND): Likewise.
46995         (DUAL_ADDU16I_OPERAND): Likewise.
46996         * config/loongarch/constraints.md (La, Lb, Lc, Ld, Le): New
46997         constraint.
46998         * config/loongarch/predicates.md (const_dual_imm12_operand): New
46999         predicate.
47000         (const_addu16i_operand): Likewise.
47001         (const_addu16i_imm12_di_operand): Likewise.
47002         (const_addu16i_imm12_si_operand): Likewise.
47003         (plus_di_operand): Likewise.
47004         (plus_si_operand): Likewise.
47005         (plus_si_extend_operand): Likewise.
47006         * config/loongarch/loongarch.md (add<mode>3): Convert to
47007         define_insn_and_split.  Use plus_<mode>_operand predicate
47008         instead of arith_operand.  Add alternatives for La, Lb, Lc, Ld,
47009         and Le constraints.
47010         (*addsi3_extended): Convert to define_insn_and_split.  Use
47011         plus_si_extend_operand instead of arith_operand.  Add
47012         alternatives for La and Le alternatives.
47014 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
47016         * value-range.h (Value_Range::Value_Range): New.
47017         (Value_Range::contains_p): New.
47019 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
47021         * value-range.h (class vrange): Make m_discriminator const.
47022         (class irange): Make m_max_ranges const.  Adjust constructors
47023         accordingly.
47024         (class unsupported_range): Construct vrange appropriately.
47025         (class frange): Same.
47027 2023-04-18  Lulu Cheng  <chenglulu@loongson.cn>
47029         * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
47030         definition.
47032 2023-04-18  Lulu Cheng  <chenglulu@loongson.cn>
47034         * doc/extend.texi: Add section for LoongArch Base Built-in functions.
47036 2023-04-18  Fei Gao  <gaofei@eswincomputing.com>
47038         * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
47039         readable.
47040         (riscv_expand_epilogue): Likewise.
47042 2023-04-17  Fei Gao  <gaofei@eswincomputing.com>
47044         * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in
47045         stack allocation.
47046         (riscv_expand_epilogue): Consider save-restore in stack deallocation.
47048 2023-04-17  Andrew Pinski  <apinski@marvell.com>
47050         * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
47051         prototype.
47053 2023-04-17  Aldy Hernandez  <aldyh@redhat.com>
47055         * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
47056         global ranges.
47058 2023-04-17  Fei Gao  <gaofei@eswincomputing.com>
47060         * config/riscv/riscv.cc (riscv_first_stack_step): Add a new function
47061         parameter remaining_size.
47062         (riscv_compute_frame_info): Adapt new riscv_first_stack_step interface.
47063         (riscv_expand_prologue): Likewise.
47064         (riscv_expand_epilogue): Likewise.
47066 2023-04-17  Feng Wang  <wangfeng@eswincomputing.com>
47068         * config/riscv/bitmanip.md (rotrsi3_sext): Support generating
47069         roriw for constant counts.
47070         * rtl.h (reverse_rotate_by_imm_p): Add function declartion
47071         * simplify-rtx.cc (reverse_rotate_by_imm_p): New function.
47072         (simplify_context::simplify_binary_operation_1): Use it.
47073         * expmed.cc (expand_shift_1): Likewise.
47075 2023-04-17  Martin Jambor  <mjambor@suse.cz>
47077         PR ipa/107769
47078         PR ipa/109318
47079         * cgraph.h (symtab_node::find_reference): Add parameter use_type.
47080         * ipa-prop.h (ipa_pass_through_data): New flag refdesc_decremented.
47081         (ipa_zap_jf_refdesc): New function.
47082         (ipa_get_jf_pass_through_refdesc_decremented): Likewise.
47083         (ipa_set_jf_pass_through_refdesc_decremented): Likewise.
47084         * ipa-cp.cc (ipcp_discover_new_direct_edges): Provide a value for
47085         the new parameter of find_reference.
47086         (adjust_references_in_caller): Likewise. Make sure the constant jump
47087         function is not used to decrement a refdec counter again.  Only
47088         decrement refdesc counters when the pass_through jump function allows
47089         it.  Added a detailed dump when decrementing refdesc counters.
47090         * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Dump new flag.
47091         (ipa_set_jf_simple_pass_through): Initialize the new flag.
47092         (ipa_set_jf_unary_pass_through): Likewise.
47093         (ipa_set_jf_arith_pass_through): Likewise.
47094         (remove_described_reference): Provide a value for the new parameter of
47095         find_reference.
47096         (update_jump_functions_after_inlining): Zap refdesc of new jfunc if
47097         the previous pass_through had a flag mandating that we do so.
47098         (propagate_controlled_uses): Likewise.  Only decrement refdesc
47099         counters when the pass_through jump function allows it.
47100         (ipa_edge_args_sum_t::duplicate): Provide a value for the new
47101         parameter of find_reference.
47102         (ipa_write_jump_function): Assert the new flag does not have to be
47103         streamed.
47104         * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
47105         it in searching.
47107 2023-04-17  Philipp Tomsich  <philipp.tomsich@vrull.eu>
47108             Di Zhao  <di.zhao@amperecomputing.com>
47110         * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION):
47111         Add AARCH64_EXTRA_TUNE_NO_LDP_COMBINE.
47112         * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp):
47113         Check for the above tuning option when processing loads.
47115 2023-04-17  Richard Biener  <rguenther@suse.de>
47117         PR tree-optimization/109524
47118         * tree-vrp.cc (remove_unreachable::m_list): Change to a
47119         vector of pairs of block indices.
47120         (remove_unreachable::maybe_register_block): Adjust.
47121         (remove_unreachable::remove_and_update_globals): Likewise.
47122         Deal with removed blocks.
47124 2023-04-16  Jeff Law  <jlaw@ventanamicro>
47126         PR target/109508
47127         * config/riscv/riscv.cc (riscv_expand_conditional_move): For
47128         TARGET_SFB_ALU, force the true arm into a register.
47130 2023-04-15  John David Anglin  <danglin@gcc.gnu.org>
47132         PR target/104989
47133         * config/pa/pa-protos.h (pa_function_arg_size): Update prototype.
47134         * config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument
47135         size is zero.
47136         (pa_arg_partial_bytes): Don't call pa_function_arg_size twice.
47137         (pa_function_arg_size): Change return type to int.  Return zero
47138         for arguments larger than 1 GB.  Update comments.
47140 2023-04-15  Jakub Jelinek  <jakub@redhat.com>
47142         PR tree-optimization/109154
47143         * tree-if-conv.cc (predicate_scalar_phi): For complex PHIs, emit just
47144         args_len - 1 COND_EXPRs rather than args_len.  Formatting fix.
47146 2023-04-15  Jason Merrill  <jason@redhat.com>
47148         PR c++/109514
47149         * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
47150         Overhaul lhs_ref.ref analysis.
47152 2023-04-14  Richard Biener  <rguenther@suse.de>
47154         PR tree-optimization/109502
47155         * tree-vect-stmts.cc (vectorizable_assignment): Fix
47156         check for conversion between mask and non-mask types.
47158 2023-04-14  Jeff Law  <jlaw@ventanamicro.com>
47159             Jakub Jelinek  <jakub@redhat.com>
47161         PR target/108947
47162         PR target/109040
47163         * combine.cc (simplify_and_const_int_1): Compute nonzero_bits in
47164         word_mode rather than mode if WORD_REGISTER_OPERATIONS and mode is
47165         smaller than word_mode.
47166         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1)
47167         <case AND>: Likewise.
47169 2023-04-14  Jakub Jelinek  <jakub@redhat.com>
47171         * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
47172         of GEN_INT.
47174 2023-04-13  Andrew MacLeod  <amacleod@redhat.com>
47176         PR tree-optimization/108139
47177         PR tree-optimization/109462
47178         * gimple-range-cache.cc (ranger_cache::fill_block_cache): Remove
47179         equivalency check for PHI nodes.
47180         * gimple-range-fold.cc (fold_using_range::range_of_phi): Ensure def
47181         does not dominate single-arg equivalency edges.
47183 2023-04-13  Richard Sandiford  <richard.sandiford@arm.com>
47185         PR target/108910
47186         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
47187         not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
47189 2023-04-13  Richard Biener  <rguenther@suse.de>
47191         PR tree-optimization/109491
47192         * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
47193         NULL operands test.
47195 2023-04-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
47197         PR target/109479
47198         * config/riscv/riscv-vector-builtins-types.def (vint8mf8_t): Fix predicate.
47199         (vint16mf4_t): Ditto.
47200         (vint32mf2_t): Ditto.
47201         (vint64m1_t): Ditto.
47202         (vint64m2_t): Ditto.
47203         (vint64m4_t): Ditto.
47204         (vint64m8_t): Ditto.
47205         (vuint8mf8_t): Ditto.
47206         (vuint16mf4_t): Ditto.
47207         (vuint32mf2_t): Ditto.
47208         (vuint64m1_t): Ditto.
47209         (vuint64m2_t): Ditto.
47210         (vuint64m4_t): Ditto.
47211         (vuint64m8_t): Ditto.
47212         (vfloat32mf2_t): Ditto.
47213         (vbool64_t): Ditto.
47214         * config/riscv/riscv-vector-builtins.cc (register_builtin_type): Add comments.
47215         (register_vector_type): Ditto.
47216         (check_required_extensions): Fix condition.
47217         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ZVE64): Remove it.
47218         (RVV_REQUIRE_ELEN_64): New define.
47219         (RVV_REQUIRE_MIN_VLEN_64): Ditto.
47220         * config/riscv/riscv-vector-switch.def (TARGET_VECTOR_FP32): Remove it.
47221         (TARGET_VECTOR_FP64): Ditto.
47222         (ENTRY): Fix predicate.
47223         * config/riscv/vector-iterators.md: Fix predicate.
47225 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
47227         PR tree-optimization/109410
47228         * tree-ssa-reassoc.cc (build_and_add_sum): Split edge from entry
47229         block if first statement of the function is a call to returns_twice
47230         function.
47232 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
47234         PR target/109458
47235         * config/i386/i386.cc: Include rtl-error.h.
47236         (ix86_print_operand): For z modifier warning, use warning_for_asm
47237         if this_is_asm_operands.  For Z modifier errors, use %c and code
47238         instead of hardcoded Z.
47240 2023-04-12  Costas Argyris  <costas.argyris@gmail.com>
47242         * config/i386/x-mingw32-utf8: Remove extrataneous $@
47244 2023-04-12  Andrew MacLeod  <amacleod@redhat.com>
47246         PR tree-optimization/109462
47247         * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
47248         check for equivalences if NAME is a phi node.
47250 2023-04-12  Richard Biener  <rguenther@suse.de>
47252         PR tree-optimization/109473
47253         * tree-vect-loop.cc (vect_create_epilog_for_reduction):
47254         Convert scalar result to the computation type before performing
47255         the reduction adjustment.
47257 2023-04-12  Richard Biener  <rguenther@suse.de>
47259         PR tree-optimization/109469
47260         * tree-vect-slp.cc (vect_slp_function): Skip region starts with
47261         a returns-twice call.
47263 2023-04-12  Richard Biener  <rguenther@suse.de>
47265         PR tree-optimization/109434
47266         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly
47267         handle possibly throwing calls when processing the LHS
47268         and may-defs are not OK.
47270 2023-04-11  Lin Sinan  <mynameisxiaou@gmail.com>
47272         * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
47273         predicate to avoid splitting arith constants.
47275 2023-04-11  Yanzhang Wang  <yanzhang.wang@intel.com>
47276             Pan Li  <pan2.li@intel.com>
47277             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
47278             Kito Cheng  <kito.cheng@sifive.com>
47280         PR target/109104
47281         * config/riscv/riscv-protos.h (emit_hard_vlmax_vsetvl): New.
47282         * config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): New.
47283         (emit_vlmax_vsetvl): Use emit_hard_vlmax_vsetvl.
47284         * config/riscv/riscv.cc (vector_zero_call_used_regs): New.
47285         (riscv_zero_call_used_regs): New.
47286         (TARGET_ZERO_CALL_USED_REGS): New.
47288 2023-04-11  Martin Liska  <mliska@suse.cz>
47290         PR driver/108241
47291         * opts.cc (finish_options): Drop also
47292         x_flag_var_tracking_assignments.
47294 2023-04-11  Andre Vieira  <andre.simoesdiasvieira@arm.com>
47296         PR tree-optimization/108888
47297         * tree-if-conv.cc (predicate_statements): Fix gimple call check.
47299 2023-04-11  Haochen Gui  <guihaoc@gcc.gnu.org>
47301         PR target/108812
47302         * config/rs6000/vsx.md (vsx_sign_extend_qi_<mode>): Rename to...
47303         (vsx_sign_extend_v16qi_<mode>): ... this.
47304         (vsx_sign_extend_hi_<mode>): Rename to...
47305         (vsx_sign_extend_v8hi_<mode>): ... this.
47306         (vsx_sign_extend_si_v2di): Rename to...
47307         (vsx_sign_extend_v4si_v2di): ... this.
47308         (vsignextend_qi_<mode>): Remove.
47309         (vsignextend_hi_<mode>): Remove.
47310         (vsignextend_si_v2di): Remove.
47311         (vsignextend_v2di_v1ti): Remove.
47312         (*xxspltib_<mode>_split): Replace gen_vsx_sign_extend_qi_v2di with
47313         gen_vsx_sign_extend_v16qi_v2di and gen_vsx_sign_extend_qi_v4si
47314         with gen_vsx_sign_extend_v16qi_v4si.
47315         * config/rs6000/rs6000.md (split for DI constant generation):
47316         Replace gen_vsx_sign_extend_qi_si with gen_vsx_sign_extend_v16qi_si.
47317         (split for HSDI constant generation): Replace gen_vsx_sign_extend_qi_di
47318         with gen_vsx_sign_extend_v16qi_di and gen_vsx_sign_extend_qi_si
47319         with gen_vsx_sign_extend_v16qi_si.
47320         * config/rs6000/rs6000-builtins.def (__builtin_altivec_vsignextsb2d):
47321         Set bif-pattern to vsx_sign_extend_v16qi_v2di.
47322         (__builtin_altivec_vsignextsb2w): Set bif-pattern to
47323         vsx_sign_extend_v16qi_v4si.
47324         (__builtin_altivec_visgnextsh2d): Set bif-pattern to
47325         vsx_sign_extend_v8hi_v2di.
47326         (__builtin_altivec_vsignextsh2w): Set bif-pattern to
47327         vsx_sign_extend_v8hi_v4si.
47328         (__builtin_altivec_vsignextsw2d): Set bif-pattern to
47329         vsx_sign_extend_si_v2di.
47330         (__builtin_altivec_vsignext): Set bif-pattern to
47331         vsx_sign_extend_v2di_v1ti.
47332         * config/rs6000/rs6000-builtin.cc (lxvrse_expand_builtin): Replace
47333         gen_vsx_sign_extend_qi_v2di with gen_vsx_sign_extend_v16qi_v2di,
47334         gen_vsx_sign_extend_hi_v2di with gen_vsx_sign_extend_v8hi_v2di and
47335         gen_vsx_sign_extend_si_v2di with gen_vsx_sign_extend_v4si_v2di.
47337 2023-04-10   Michael Meissner  <meissner@linux.ibm.com>
47339         PR target/70243
47340         * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
47341         (vsx_nfmsv4sf4): Do not generate vnmsubfp.
47343 2023-04-10  Haochen Jiang  <haochen.jiang@intel.com>
47345         * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
47347 2023-04-10  Haochen Jiang  <haochen.jiang@intel.com>
47349         * common/config/i386/cpuinfo.h (get_available_features):
47350         Detect AMX-COMPLEX.
47351         * common/config/i386/i386-common.cc
47352         (OPTION_MASK_ISA2_AMX_COMPLEX_SET,
47353         OPTION_MASK_ISA2_AMX_COMPLEX_UNSET): New.
47354         (ix86_handle_option): Handle -mamx-complex.
47355         * common/config/i386/i386-cpuinfo.h (enum processor_features):
47356         Add FEATURE_AMX_COMPLEX.
47357         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
47358         amx-complex.
47359         * config.gcc: Add amxcomplexintrin.h.
47360         * config/i386/cpuid.h (bit_AMX_COMPLEX): New.
47361         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
47362         __AMX_COMPLEX__.
47363         * config/i386/i386-isa.def (AMX_COMPLEX): Add DEF_PTA(AMX_COMPLEX).
47364         * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
47365         Handle amx-complex.
47366         * config/i386/i386.opt: Add option -mamx-complex.
47367         * config/i386/immintrin.h: Include amxcomplexintrin.h.
47368         * doc/extend.texi: Document amx-complex.
47369         * doc/invoke.texi: Document -mamx-complex.
47370         * doc/sourcebuild.texi: Document target amx-complex.
47371         * config/i386/amxcomplexintrin.h: New file.
47373 2023-04-08  Jakub Jelinek  <jakub@redhat.com>
47375         PR tree-optimization/109392
47376         * tree-vect-generic.cc (tree_vec_extract): Handle failure
47377         of maybe_push_res_to_seq better.
47379 2023-04-08  Jakub Jelinek  <jakub@redhat.com>
47381         * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
47382         poly-int-types.h.
47383         (SYSTEM_H): Depend on $(HASHTAB_H).
47384         * config/riscv/t-riscv (build/genrvv-type-indexer.o): Remove unused
47385         dependency on $(RTL_BASE_H), remove redundant dependency on
47386         insn-modes.h.
47388 2023-04-06  Richard Earnshaw  <rearnsha@arm.com>
47390         PR target/107674
47391         * config/arm/arm.cc (arm_effective_regno): New function.
47392         (mve_vector_mem_operand): Use it.
47394 2023-04-06  Andrew MacLeod  <amacleod@redhat.com>
47396         PR tree-optimization/109417
47397         * gimple-range-gori.cc (gori_compute::may_recompute_p): Check if
47398         dependency is in SSA_NAME_FREE_LIST.
47400 2023-04-06  Andrew Pinski  <apinski@marvell.com>
47402         PR tree-optimization/109427
47403         * params.opt (-param=vect-induction-float=):
47404         Fix option attribute typo for IntegerRange.
47406 2023-04-05  Jeff Law  <jlaw@ventanamicro>
47408         PR target/108892
47409         * combine.cc (combine_instructions): Force re-recognition when
47410         after restoring the body of an insn to its original form.
47412 2023-04-05  Martin Jambor  <mjambor@suse.cz>
47414         PR ipa/108959
47415         * ipa-sra.cc (zap_useless_ipcp_results): New function.
47416         (process_isra_node_results): Call it.
47418 2023-04-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
47420         * config/riscv/vector.md: Fix incorrect operand order.
47422 2023-04-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
47424         * config/riscv/riscv-vsetvl.cc
47425         (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
47426         demand fusion.
47428 2023-04-05  Li Xu  <xuli1@eswincomputing.com>
47430         * config/riscv/riscv-vector-builtins.def: Fix typo.
47431         * config/riscv/riscv.cc (riscv_dwarf_poly_indeterminate_value): Ditto.
47432         * config/riscv/vector-iterators.md: Ditto.
47434 2023-04-04  Hans-Peter Nilsson  <hp@axis.com>
47436         * doc/md.texi (Including Patterns): Fix page break.
47438 2023-04-04  Jakub Jelinek  <jakub@redhat.com>
47440         PR tree-optimization/109386
47441         * range-op-float.cc (foperator_lt::op1_range, foperator_lt::op2_range,
47442         foperator_le::op1_range, foperator_le::op2_range,
47443         foperator_gt::op1_range, foperator_gt::op2_range,
47444         foperator_ge::op1_range, foperator_ge::op2_range): Make r varying for
47445         BRS_FALSE case even if the other op is maybe_isnan, not just
47446         known_isnan.
47447         (foperator_unordered_lt::op1_range, foperator_unordered_lt::op2_range,
47448         foperator_unordered_le::op1_range, foperator_unordered_le::op2_range,
47449         foperator_unordered_gt::op1_range, foperator_unordered_gt::op2_range,
47450         foperator_unordered_ge::op1_range, foperator_unordered_ge::op2_range):
47451         Make r varying for BRS_TRUE case even if the other op is maybe_isnan,
47452         not just known_isnan.
47454 2023-04-04  Marek Polacek  <polacek@redhat.com>
47456         PR sanitizer/109107
47457         * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
47458         when associating.
47459         * match.pd: Use TYPE_OVERFLOW_SANITIZED.
47461 2023-04-04  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
47463         * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
47464         (mve_vcreateq_f<mode>): Swap operands.
47466 2023-04-04  Andrew Stubbs  <ams@codesourcery.com>
47468         * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
47470 2023-04-04  Jakub Jelinek  <jakub@redhat.com>
47472         PR target/109384
47473         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
47474         Reword diagnostics about zfinx conflict with f, formatting fixes.
47476 2023-04-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
47478         * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
47480 2023-04-04  Richard Biener  <rguenther@suse.de>
47482         PR tree-optimization/109304
47483         * tree-profile.cc (tree_profiling): Use symtab node
47484         availability to decide whether to skip adjusting calls.
47485         Do not adjust calls to internal functions.
47487 2023-04-04  Kewen Lin  <linkw@linux.ibm.com>
47489         PR target/108807
47490         * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
47491         function for permutation control vector by considering big endianness.
47493 2023-04-04  Kewen Lin  <linkw@linux.ibm.com>
47495         PR target/108699
47496         * config/rs6000/altivec.md (*p9v_parity<mode>2): Rename to ...
47497         (rs6000_vprtyb<mode>2): ... this.
47498         * config/rs6000/rs6000-builtins.def (VPRTYBD): Replace parityv2di2 with
47499         rs6000_vprtybv2di2.
47500         (VPRTYBW): Replace parityv4si2 with rs6000_vprtybv4si2.
47501         (VPRTYBQ): Replace parityv1ti2 with rs6000_vprtybv1ti2.
47502         * config/rs6000/vector.md (parity<mode>2 with VEC_IP): Expand with
47503         popcountv16qi2 and the corresponding rs6000_vprtyb<mode>2.
47505 2023-04-04  Hans-Peter Nilsson  <hp@axis.com>
47506             Sandra Loosemore  <sandra@codesourcery.com>
47508         * doc/md.texi (Insn Splitting): Tweak wording for readability.
47510 2023-04-03  Martin Jambor  <mjambor@suse.cz>
47512         PR ipa/109303
47513         * ipa-prop.cc (determine_known_aggregate_parts): Check that the
47514         offset + size will be representable in unsigned int.
47516 2023-04-03  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
47518         * configure.ac (ZSTD_LIB): Move before zstd.h check.
47519         Unset gcc_cv_header_zstd_h without libzstd.
47520         * configure: Regenerate.
47522 2023-04-03  Martin Liska  <mliska@suse.cz>
47524         * doc/invoke.texi: Document new param.
47526 2023-04-03  Cupertino Miranda  <cupertino.miranda@oracle.com>
47528         * doc/sourcebuild.texi (const_volatile_readonly_section): Document
47529         new check_effective_target function.
47531 2023-04-03  Li Xu  <xuli1@eswincomputing.com>
47533         * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
47534         (vfloat32m8_t): Likewise
47536 2023-04-03  liuhongt  <hongtao.liu@intel.com>
47538         * doc/md.texi: Document signbitm2.
47540 2023-04-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
47541             kito-cheng  <kito.cheng@sifive.com>
47543         * config/riscv/vector.md: Fix RA constraint.
47545 2023-04-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
47547         * config/riscv/riscv-protos.h (gen_avl_for_scalar_move): New function.
47548         * config/riscv/riscv-v.cc (gen_avl_for_scalar_move): New function.
47549         * config/riscv/vector.md: Fix scalar move bug.
47551 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
47553         * range-op-float.cc (foperator_equal::fold_range): If at least
47554         one of the op ranges is not singleton and neither is NaN and all
47555         4 bounds are zero, return [1, 1].
47556         (foperator_not_equal::fold_range): In the same case return [0, 0].
47558 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
47560         * range-op-float.cc (foperator_equal::fold_range): Perform the
47561         non-singleton handling regardless of maybe_isnan (op1, op2).
47562         (foperator_not_equal::fold_range): Likewise.
47563         (foperator_lt::fold_range, foperator_le::fold_range,
47564         foperator_gt::fold_range, foperator_ge::fold_range): Perform the
47565         real_* comparison check which results in range_false (type)
47566         even if maybe_isnan (op1, op2).  Simplify.
47567         (foperator_ltgt): New class.
47568         (fop_ltgt): New variable.
47569         (floating_op_table::floating_op_table): Handle LTGT_EXPR using
47570         fop_ltgt.
47572 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
47574         PR target/109254
47575         * builtins.cc (apply_args_size): If targetm.calls.get_raw_arg_mode
47576         returns VOIDmode, handle it like if the register isn't used for
47577         passing arguments at all.
47578         (apply_result_size): If targetm.calls.get_raw_result_mode returns
47579         VOIDmode, handle it like if the register isn't used for returning
47580         results at all.
47581         * target.def (get_raw_result_mode, get_raw_arg_mode): Document what it
47582         means to return VOIDmode.
47583         * doc/tm.texi: Regenerated.
47584         * config/aarch64/aarch64.cc (aarch64_function_value_regno_p): Return
47585         TARGET_SVE for P0_REGNUM.
47586         (aarch64_function_arg_regno_p): Also return true for p0-p3.
47587         (aarch64_get_reg_raw_mode): Return VOIDmode for PR_REGNUM_P regs.
47589 2023-03-31  Vladimir N. Makarov  <vmakarov@redhat.com>
47591         * lra-constraints.cc: (combine_reload_insn): New function.
47593 2023-03-31  Jakub Jelinek  <jakub@redhat.com>
47595         PR tree-optimization/91645
47596         * range-op-float.cc (foperator_unordered_lt::fold_range,
47597         foperator_unordered_le::fold_range,
47598         foperator_unordered_gt::fold_range,
47599         foperator_unordered_ge::fold_range,
47600         foperator_unordered_equal::fold_range): Call the ordered
47601         fold_range on ranges with cleared NaNs.
47602         * value-query.cc (range_query::get_tree_range): Handle also
47603         COMPARISON_CLASS_P trees.
47605 2023-03-31  Kito Cheng  <kito.cheng@sifive.com>
47606             Andrew Pinski  <pinskia@gmail.com>
47608         PR target/109328
47609         * config/riscv/t-riscv: Add missing dependencies.
47611 2023-03-31  liuhongt  <hongtao.liu@intel.com>
47613         * config/i386/i386.cc (inline_memory_move_cost): Return 100
47614         for MASK_REGS when MODE_SIZE > 8.
47616 2023-03-31  liuhongt  <hongtao.liu@intel.com>
47618         PR target/85048
47619         * config/i386/i386-builtin.def (BDESC): Adjust icode name from
47620         ufloat/ufix to floatuns/fixuns.
47621         * config/i386/i386-expand.cc
47622         (ix86_expand_vector_convert_uns_vsivsf): Adjust comments.
47623         * config/i386/sse.md
47624         (ufloat<sseintvecmodelower><mode>2<mask_name><round_name>):
47625         Renamed to ..
47626         (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
47627         (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
47628         Renamed to ..
47629         (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
47630         .. this.
47631         (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
47632         Renamed to ..
47633         (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):.. this.
47634         (ufloat<si2dfmodelower><mode>2<mask_name>): Renamed to ..
47635         (floatuns<si2dfmodelower><mode>2<mask_name>): .. this.
47636         (ufloatv2siv2df2<mask_name>): Renamed to ..
47637         (<mask_codefor>floatunsv2siv2df2<mask_name>): .. this.
47638         (ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
47639         Renamed to ..
47640         (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
47641         .. this.
47642         (ufix_notruncv2dfv2si2): Renamed to ..
47643         (fixuns_notruncv2dfv2si2):.. this.
47644         (ufix_notruncv2dfv2si2_mask): Renamed to ..
47645         (fixuns_notruncv2dfv2si2_mask): .. this.
47646         (*ufix_notruncv2dfv2si2_mask_1): Renamed to ..
47647         (*fixuns_notruncv2dfv2si2_mask_1): .. this.
47648         (ufix_truncv2dfv2si2): Renamed to ..
47649         (*fixuns_truncv2dfv2si2): .. this.
47650         (ufix_truncv2dfv2si2_mask): Renamed to ..
47651         (fixuns_truncv2dfv2si2_mask): .. this.
47652         (*ufix_truncv2dfv2si2_mask_1): Renamed to ..
47653         (*fixuns_truncv2dfv2si2_mask_1): .. this.
47654         (ufix_truncv4dfv4si2<mask_name>): Renamed to ..
47655         (fixuns_truncv4dfv4si2<mask_name>): .. this.
47656         (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
47657         Renamed to ..
47658         (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
47659         .. this.
47660         (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
47661         (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
47662         .. this.
47664 2023-03-30  Andrew MacLeod  <amacleod@redhat.com>
47666         PR tree-optimization/109154
47667         * gimple-range-gori.cc (gori_compute::may_recompute_p): Add depth limit.
47668         * gimple-range-gori.h (may_recompute_p): Add depth param.
47669         * params.opt (ranger-recompute-depth): New param.
47671 2023-03-30  Jason Merrill  <jason@redhat.com>
47673         PR c++/107897
47674         PR c++/108887
47675         * cgraph.h: Move reset() from cgraph_node to symtab_node.
47676         * cgraphunit.cc (symtab_node::reset): Adjust.  Also call
47677         remove_from_same_comdat_group.
47679 2023-03-30  Richard Biener  <rguenther@suse.de>
47681         PR tree-optimization/107561
47682         * gimple-ssa-warn-access.cc (get_size_range): Add flags
47683         argument and pass it on.
47684         (check_access): When querying for the size range pass
47685         SR_ALLOW_ZERO when the known destination size is zero.
47687 2023-03-30  Richard Biener  <rguenther@suse.de>
47689         PR tree-optimization/109342
47690         * tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New
47691         overload for edge.  When that edge is a backedge use
47692         dominated_by_p directly.
47694 2023-03-30  liuhongt  <hongtao.liu@intel.com>
47696         * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
47697         vpblendd instead of vpblendw for V4SI under avx2.
47699 2023-03-29  Hans-Peter Nilsson  <hp@axis.com>
47701         * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
47702         for many quick operands, for register-sized modes.
47704 2023-03-29  Jiawei  <jiawei@iscas.ac.cn>
47706         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
47707         New check.
47709 2023-03-29  Martin Liska  <mliska@suse.cz>
47711         PR bootstrap/109310
47712         * configure.ac: Emit a warning for deprecated option
47713         --enable-link-mutex.
47714         * configure: Regenerate.
47716 2023-03-29  Richard Biener  <rguenther@suse.de>
47718         PR tree-optimization/109331
47719         * tree-ssa-forwprop.cc (pass_forwprop::execute): When we
47720         discover a taken edge make sure to cleanup the CFG.
47722 2023-03-29  Richard Biener  <rguenther@suse.de>
47724         PR tree-optimization/109327
47725         * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
47726         already removed stmts when draining to_remove.
47728 2023-03-29  Richard Biener  <rguenther@suse.de>
47730         PR ipa/106124
47731         * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
47732         so we can re-create the DIE for the type if required.
47734 2023-03-29  Jakub Jelinek  <jakub@redhat.com>
47735             Richard Biener  <rguenther@suse.de>
47737         PR tree-optimization/109301
47738         * tree-ssa-math-opts.cc (pass_data_cse_sincos): Change
47739         properties_provided from PROP_gimple_opt_math to 0.
47740         (pass_data_expand_powcabs): Change properties_provided from 0 to
47741         PROP_gimple_opt_math.
47743 2023-03-29  Richard Biener  <rguenther@suse.de>
47745         PR tree-optimization/109154
47746         * tree-if-conv.cc (gen_phi_arg_condition): Handle single
47747         inverted condition specially by inverting at the caller.
47748         (gen_phi_arg_condition): Swap COND_EXPR arms if requested.
47750 2023-03-28  David Malcolm  <dmalcolm@redhat.com>
47752         PR c/107002
47753         * diagnostic-show-locus.cc (column_range::column_range): Factor
47754         out assertion conditional into...
47755         (column_range::valid_p): ...this new function.
47756         (line_corrections::add_hint): Don't attempt to consolidate hints
47757         if it would lead to invalid column_range instances.
47759 2023-03-28  Kito Cheng  <kito.cheng@sifive.com>
47761         PR target/109312
47762         * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
47763         (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
47764         minor refactor.
47766 2023-03-28  Alexander Monakov  <amonakov@ispras.ru>
47768         PR rtl-optimization/109187
47769         * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
47770         subtraction in three-way comparison.
47772 2023-03-28  Andrew MacLeod  <amacleod@redhat.com>
47774         PR tree-optimization/109265
47775         PR tree-optimization/109274
47776         * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
47777         not create a relation record is op1 and op2 are the same symbol.
47778         (gori_compute::compute_operand1_range): Pass op1 == op2 to the
47779         handler for this stmt, but create a new record only if this statement
47780         generates a relation based on the ranges.
47781         (gori_compute::compute_operand2_range): Ditto.
47782         * value-relation.h (value_relation::set_relation): Always create the
47783         record that is requested.
47785 2023-03-28  Richard Biener  <rguenther@suse.de>
47787         PR tree-optimization/107087
47788         * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
47789         executable regions to avoid useless work and to better
47790         propagate degenerate PHIs.
47792 2023-03-28  Costas Argyris  <costas.argyris@gmail.com>
47794         * config/i386/x-mingw32-utf8: update comments.
47796 2023-03-28  Richard Sandiford  <richard.sandiford@arm.com>
47798         PR target/109072
47799         * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
47800         * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
47801         variable.
47802         * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
47803         New function.
47804         (aarch64_general_gimple_fold_builtin): Delay folding of vld1 until
47805         after inlining.  Record which decls are loaded from.  Fix handling
47806         of vops for loads and stores.
47807         * config/aarch64/aarch64.cc (aarch64_vector_load_decl): New function.
47808         (aarch64_accesses_vector_load_decl_p): Likewise.
47809         (aarch64_vector_costs::m_stores_to_vector_load_decl): New member
47810         variable.
47811         (aarch64_vector_costs::add_stmt_cost): If the function has a vld1
47812         that loads from a decl, treat vector stores to those decls as
47813         zero cost.
47814         (aarch64_vector_costs::finish_cost): ...and in that case,
47815         if the vector code does nothing more than a store, give the
47816         prologue a zero cost as well.
47818 2023-03-28  Richard Biener  <rguenther@suse.de>
47820         PR bootstrap/84402
47821         PR tree-optimization/108129
47822         * genmatch.cc (lower_for): For (match ...) delay
47823         substituting into the match operator if possible.
47824         (dt_operand::gen_gimple_expr): For user_id look at the
47825         first substitute for determining how to access operands.
47826         (dt_operand::gen_generic_expr): Likewise.
47827         (dt_node::gen_kids): Properly sort user_ids according
47828         to their substitutes.
47829         (dt_node::gen_kids_1): Code-generate user_id matching.
47831 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
47832             Jonathan Wakely  <jwakely@redhat.com>
47834         * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
47835         Use subcommand rather than sub-command in function comments.
47837 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
47839         PR tree-optimization/109154
47840         * value-range.h (frange::flush_denormals_to_zero): Make it public
47841         rather than private.
47842         * value-range.cc (frange::set): Don't call flush_denormals_to_zero
47843         here.
47844         * range-op-float.cc (range_operator_float::fold_range): Call
47845         flush_denormals_to_zero.
47847 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
47849         PR middle-end/106190
47850         * sanopt.cc (pass_sanopt::execute): Return TODO_cleanup_cfg if any
47851         of the IFN_{UB,HWA,A}SAN_* internal fns are lowered.
47853 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
47855         * range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state
47856         as 4th argument to set to avoid clear_nan and union_ calls.
47858 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
47860         PR target/109276
47861         * config/i386/i386.cc (assign_386_stack_local): For DImode
47862         with SLOT_FLOATxFDI_387 and -m32 -mpreferred-stack-boundary=2 pass
47863         align 32 rather than 0 to assign_stack_local.
47865 2023-03-28  Eric Botcazou  <ebotcazou@adacore.com>
47867         PR target/109140
47868         * config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition
47869         on operand #3 to get the final condition code.  Use std::swap.
47870         * config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander.
47871         (fucmp<gcond:code>8<P:mode>_vis): Move around.
47872         (fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise.
47873         (vcondu<GCM:mode><GCM:mode>): New VIS 4 expander.
47875 2023-03-28  Eric Botcazou  <ebotcazou@adacore.com>
47877         * doc/gm2.texi: Add missing Next, Previous and Top fields to most
47878         top-level sections.
47880 2023-03-28  Costas Argyris  <costas.argyris@gmail.com>
47882         * config.host: Pull in i386/x-mingw32-utf8 Makefile
47883         fragment and reference utf8rc-mingw32.o explicitly
47884         for mingw hosts.
47885         * config/i386/sym-mingw32.cc: prevent name mangling of
47886         stub symbol.
47887         * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
47888         depend on manifest file explicitly.
47890 2023-03-28  Richard Biener  <rguenther@suse.de>
47892         Revert:
47893         2023-03-27  Richard Biener  <rguenther@suse.de>
47895         PR rtl-optimization/109237
47896         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
47898 2023-03-28  Richard Biener  <rguenther@suse.de>
47900         * common.opt (gdwarf): Remove Negative(gdwarf-).
47902 2023-03-28  Richard Biener  <rguenther@suse.de>
47904         * common.opt (gdwarf): Add RejectNegative.
47905         (gdwarf-): Likewise.
47906         (ggdb): Likewise.
47907         (gvms): Likewise.
47909 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
47911         * config/cris/constraints.md ("T"): Correct to
47912         define_memory_constraint.
47914 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
47916         * config/cris/cris.md (BW2): New mode-iterator.
47917         (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
47918         peephole2s.
47920 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
47922         * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
47923         for possible eliminable compares.
47925 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
47927         * config/cris/constraints.md ("R"): Remove unused constraint.
47929 2023-03-27  Jonathan Wakely  <jwakely@redhat.com>
47931         PR gcov-profile/109297
47932         * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
47933         (merge_stream_usage): Likewise.
47934         (overlap_usage): Likewise.
47936 2023-03-27  Christoph Müllner  <christoph.muellner@vrull.eu>
47938         PR target/109296
47939         * config/riscv/thead.md: Add missing mode specifiers.
47941 2023-03-27  Philipp Tomsich  <philipp.tomsich@vrull.eu>
47942             Jiangning Liu  <jiangning.liu@amperecomputing.com>
47943             Manolis Tsamis  <manolis.tsamis@vrull.eu>
47945         * config/aarch64/aarch64.cc: Update vector costs for ampere1.
47947 2023-03-27  Richard Biener  <rguenther@suse.de>
47949         PR rtl-optimization/109237
47950         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
47952 2023-03-27  Richard Biener  <rguenther@suse.de>
47954         PR lto/109263
47955         * lto-wrapper.cc (run_gcc): Parse alternate debug options
47956         as well, they always enable debug.
47958 2023-03-27  Kewen Lin  <linkw@linux.ibm.com>
47960         PR target/109167
47961         * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
47962         from ...
47963         (_mm_slli_si128): ... here.  Change to call _mm_bslli_si128 directly.
47965 2023-03-27  Kewen Lin  <linkw@linux.ibm.com>
47967         PR target/109082
47968         * config/rs6000/emmintrin.h (_mm_bslli_si128): Check __N is not less
47969         than zero when calling vec_sld.
47970         (_mm_bsrli_si128): Return __A if __N is zero, check __N is bigger than
47971         zero when calling vec_sld.
47972         (_mm_slli_si128): Return __A if _imm5 is zero, check _imm5 is bigger
47973         than zero when calling vec_sld.
47975 2023-03-27  Sandra Loosemore  <sandra@codesourcery.com>
47977         * doc/generic.texi (OpenMP): Document OMP_SIMD, OMP_DISTRIBUTE,
47978         OMP_TASKLOOP, and OMP_LOOP with OMP_FOR.  Document how collapsed
47979         loops are represented and which fields are vectors.  Add
47980         documentation for OMP_FOR_PRE_BODY field.  Document internal
47981         form of non-rectangular loops and OMP_FOR_NON_RECTANGULAR.
47982         * tree.def (OMP_FOR): Make documentation consistent with the
47983         Texinfo manual, to fill some gaps and correct errors.
47985 2023-03-26  Andreas Schwab  <schwab@linux-m68k.org>
47987         PR target/106282
47988         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
47989         * config/m68k/m68k.cc (m68k_final_prescan_insn): Define.
47990         (handle_move_double): Call it before handle_movsi.
47991         * config/m68k/m68k-protos.h: Declare it.
47993 2023-03-26  Jakub Jelinek  <jakub@redhat.com>
47995         PR tree-optimization/109230
47996         * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
47998 2023-03-26  Jakub Jelinek  <jakub@redhat.com>
48000         PR ipa/105685
48001         * predict.cc (compute_function_frequency): Don't call
48002         warn_function_cold if function already has cold attribute.
48004 2023-03-26  Gerald Pfeifer  <gerald@pfeifer.com>
48006         * doc/install.texi: Remove anachronistic note
48007         related to languages built and separate source tarballs.
48009 2023-03-25  David Malcolm  <dmalcolm@redhat.com>
48011         PR analyzer/109098
48012         * diagnostic-format-sarif.cc (read_until_eof): Delete.
48013         (maybe_read_file): Delete.
48014         (sarif_builder::maybe_make_artifact_content_object): Use
48015         get_source_file_content rather than maybe_read_file.
48016         Reject it if it's not valid UTF-8.
48017         * input.cc (file_cache_slot::get_full_file_content): New.
48018         (get_source_file_content): New.
48019         (selftest::check_cpp_valid_utf8_p): New.
48020         (selftest::test_cpp_valid_utf8_p): New.
48021         (selftest::input_cc_tests): Call selftest::test_cpp_valid_utf8_p.
48022         * input.h (get_source_file_content): New prototype.
48024 2023-03-24  David Malcolm  <dmalcolm@redhat.com>
48026         * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
48027         debugging options.
48028         (Special Functions for Debugging the Analyzer): Convert to a
48029         table, and rewrite in places.
48030         (Other Debugging Techniques): Add notes on how to compare two
48031         different exploded graphs.
48033 2023-03-24  David Malcolm  <dmalcolm@redhat.com>
48035         PR other/109163
48036         * json.cc: Update comments to indicate that we now preserve
48037         insertion order of keys within objects.
48038         (object::print): Traverse keys in insertion order.
48039         (object::set): Preserve insertion order of keys.
48040         (selftest::test_writing_objects): Add an additional key to verify
48041         that we preserve insertion order.
48042         * json.h (object::m_keys): New field.
48044 2023-03-24  Andrew MacLeod  <amacleod@redhat.com>
48046         PR tree-optimization/109238
48047         * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
48048         predecessors which this block dominates.
48050 2023-03-24  Richard Biener  <rguenther@suse.de>
48052         PR tree-optimization/106912
48053         * tree-profile.cc (tree_profiling): Update stmts only when
48054         profiling or testing coverage.  Make sure to update calls
48055         fntype, stripping 'const' there.
48057 2023-03-24  Jakub Jelinek  <jakub@redhat.com>
48059         PR middle-end/109258
48060         * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
48061         if target == const0_rtx.
48063 2023-03-24  Alexandre Oliva  <oliva@adacore.com>
48065         * doc/sourcebuild.texi (weak_undefined, posix_memalign):
48066         Document options and effective targets.
48068 2023-03-24  Costas Argyris  <costas.argyris@gmail.com>
48070         * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
48071         optional.
48073 2023-03-23  Pat Haugen  <pthaugen@linux.ibm.com>
48075         * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
48076         non-earlyclobber alternative.
48078 2023-03-23  Andrew Pinski  <apinski@marvell.com>
48080         PR c/84900
48081         * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
48082         as a lvalue.
48084 2023-03-23  Richard Biener  <rguenther@suse.de>
48086         PR tree-optimization/107569
48087         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
48088         Do not push SSA names with zero uses as available leader.
48089         (process_bb): Likewise.
48091 2023-03-23  Richard Biener  <rguenther@suse.de>
48093         PR tree-optimization/109262
48094         * tree-ssa-forwprop.cc (pass_forwprop::execute): When
48095         combining a piecewise complex load avoid touching loads
48096         that throw internally.  Use fun, not cfun throughout.
48098 2023-03-23  Jakub Jelinek  <jakub@redhat.com>
48100         * value-range.cc (irange::irange_union, irange::intersect): Fix
48101         comment spelling bugs.
48102         * gimple-range-trace.cc (range_tracer::do_header): Likewise.
48103         * gimple-range-trace.h: Likewise.
48104         * gimple-range-edge.cc: Likewise.
48105         (gimple_outgoing_range_stmt_p,
48106         gimple_outgoing_range::switch_edge_range,
48107         gimple_outgoing_range::edge_range_p): Likewise.
48108         * gimple-range.cc (gimple_ranger::prefill_stmt_dependencies,
48109         gimple_ranger::fold_stmt, gimple_ranger::register_transitive_infer,
48110         assume_query::assume_query, assume_query::calculate_phi): Likewise.
48111         * gimple-range-edge.h: Likewise.
48112         * value-range.h (Value_Range::set, Value_Range::lower_bound,
48113         Value_Range::upper_bound, frange::set_undefined): Likewise.
48114         * gimple-range-gori.h (range_def_chain::depend, gori_map::m_outgoing,
48115         gori_compute): Likewise.
48116         * gimple-range-fold.h (fold_using_range): Likewise.
48117         * gimple-range-path.cc (path_range_query::compute_ranges_in_phis):
48118         Likewise.
48119         * gimple-range-gori.cc (range_def_chain::in_chain_p,
48120         range_def_chain::dump, gori_map::calculate_gori,
48121         gori_compute::compute_operand_range_switch,
48122         gori_compute::logical_combine, gori_compute::refine_using_relation,
48123         gori_compute::compute_operand1_range, gori_compute::may_recompute_p):
48124         Likewise.
48125         * gimple-range.h: Likewise.
48126         (enable_ranger): Likewise.
48127         * range-op.h (empty_range_varying): Likewise.
48128         * value-query.h (value_query): Likewise.
48129         * gimple-range-cache.cc (block_range_cache::set_bb_range,
48130         block_range_cache::dump, ssa_global_cache::clear_global_range,
48131         temporal_cache::temporal_value, temporal_cache::current_p,
48132         ranger_cache::range_of_def, ranger_cache::propagate_updated_value,
48133         ranger_cache::range_from_dom, ranger_cache::register_inferred_value):
48134         Likewise.
48135         * gimple-range-fold.cc (fur_edge::get_phi_operand,
48136         fur_stmt::get_operand, gimple_range_adjustment,
48137         fold_using_range::range_of_phi,
48138         fold_using_range::relation_fold_and_or): Likewise.
48139         * value-range-storage.h (irange_storage_slot::MAX_INTS): Likewise.
48140         * value-query.cc (range_query::value_of_expr,
48141         range_query::value_on_edge, range_query::query_relation): Likewise.
48142         * tree-vrp.cc (remove_unreachable::remove_and_update_globals,
48143         intersect_range_with_nonzero_bits): Likewise.
48144         * gimple-range-infer.cc (gimple_infer_range::check_assume_func,
48145         exit_range): Likewise.
48146         * value-relation.h: Likewise.
48147         (equiv_oracle, relation_trio::relation_trio, value_relation,
48148         value_relation::value_relation, pe_min): Likewise.
48149         * range-op-float.cc (range_operator_float::rv_fold,
48150         frange_arithmetic, foperator_unordered_equal::op1_range,
48151         foperator_div::rv_fold): Likewise.
48152         * gimple-range-op.cc (cfn_clz::fold_range): Likewise.
48153         * value-relation.cc (equiv_oracle::query_relation,
48154         equiv_oracle::register_equiv, equiv_oracle::add_equiv_to_block,
48155         value_relation::apply_transitive, relation_chain_head::find_relation,
48156         dom_oracle::query_relation, dom_oracle::find_relation_block,
48157         dom_oracle::find_relation_dom, path_oracle::register_equiv): Likewise.
48158         * range-op.cc (range_operator::wi_fold_in_parts_equiv,
48159         create_possibly_reversed_range, adjust_op1_for_overflow,
48160         operator_mult::wi_fold, operator_exact_divide::op1_range,
48161         operator_cast::lhs_op1_relation, operator_cast::fold_pair,
48162         operator_cast::fold_range, operator_abs::wi_fold, range_op_cast_tests,
48163         range_op_lshift_tests): Likewise.
48165 2023-03-23  Andrew Stubbs  <ams@codesourcery.com>
48167         * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
48168         (move_callee_saved_registers): Detect the bug condition early.
48170 2023-03-23  Andrew Stubbs  <ams@codesourcery.com>
48172         * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
48173         * config/gcn/gcn-valu.md (V_1REG_ALT): New.
48174         (V_2REG_ALT): New.
48175         (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): New.
48176         (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): New.
48177         (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Use new patterns.
48178         * config/gcn/gcn.cc (gcn_stepped_zero_int_parallel_p): New.
48179         * config/gcn/predicates.md (ascending_zero_int_parallel): New.
48181 2023-03-23  Jakub Jelinek  <jakub@redhat.com>
48183         PR tree-optimization/109176
48184         * tree-vect-generic.cc (expand_vector_condition): If a has
48185         vector boolean type and is a comparison, also check if both
48186         the comparison and VEC_COND_EXPR could be successfully expanded
48187         individually.
48189 2023-03-23  Pan Li  <pan2.li@intel.com>
48190             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
48192         PR target/108654
48193         PR target/108185
48194         * config/riscv/riscv-modes.def (ADJUST_BYTESIZE): Adjust size
48195         for vector mask modes.
48196         * config/riscv/riscv.cc (riscv_v_adjust_bytesize): New.
48197         * config/riscv/riscv.h (riscv_v_adjust_bytesize): New.
48199 2023-03-23  Songhe Zhu  <zhusonghe@eswincomputing.com>
48201         * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
48203 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
48205         PR target/109244
48206         * config/riscv/riscv-protos.h (emit_vlmax_vsetvl): Define as global.
48207         (emit_vlmax_op): Ditto.
48208         * config/riscv/riscv-v.cc (get_sew): New function.
48209         (emit_vlmax_vsetvl): Adapt function.
48210         (emit_pred_op): Ditto.
48211         (emit_vlmax_op): Ditto.
48212         (emit_nonvlmax_op): Ditto.
48213         (legitimize_move): Fix LRA ICE.
48214         (gen_no_side_effects_vsetvl_rtx): Adapt function.
48215         * config/riscv/vector.md (@mov<V_FRACT:mode><P:mode>_lra): New pattern.
48216         (@mov<VB:mode><P:mode>_lra): Ditto.
48217         (*mov<V_FRACT:mode><P:mode>_lra): Ditto.
48218         (*mov<VB:mode><P:mode>_lra): Ditto.
48220 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
48222         PR target/109228
48223         * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
48224         __riscv_vlenb support.
48225         (BASE): Ditto.
48226         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
48227         * config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto.
48228         * config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto.
48229         (SHAPE): Ditto.
48230         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
48231         * config/riscv/riscv-vector-builtins.cc: Ditto.
48233 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
48234             kito-cheng  <kito.cheng@sifive.com>
48236         * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs.
48237         (pass_vsetvl::compute_local_backward_infos): Fix bugs.
48238         (pass_vsetvl::need_vsetvl): Fix bugs.
48239         (pass_vsetvl::backward_demand_fusion): Fix bugs.
48240         (pass_vsetvl::demand_fusion): Fix bugs.
48241         (eliminate_insn): Fix bugs.
48242         (insert_vsetvl): Ditto.
48243         (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
48244         * config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto.
48245         * config/riscv/vector.md: Ditto.
48247 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
48248             kito-cheng  <kito.cheng@sifive.com>
48250         * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
48251         * config/riscv/vector-iterators.md (nmsac): Ditto.
48252         (nmsub): Ditto.
48253         (msac): Ditto.
48254         (msub): Ditto.
48255         (nmadd): Ditto.
48256         (nmacc): Ditto.
48257         * config/riscv/vector.md (@pred_mul_<optab><mode>): Ditto.
48258         (@pred_mul_plus<mode>): Ditto.
48259         (*pred_madd<mode>): Ditto.
48260         (*pred_macc<mode>): Ditto.
48261         (*pred_mul_plus<mode>): Ditto.
48262         (@pred_mul_plus<mode>_scalar): Ditto.
48263         (*pred_madd<mode>_scalar): Ditto.
48264         (*pred_macc<mode>_scalar): Ditto.
48265         (*pred_mul_plus<mode>_scalar): Ditto.
48266         (*pred_madd<mode>_extended_scalar): Ditto.
48267         (*pred_macc<mode>_extended_scalar): Ditto.
48268         (*pred_mul_plus<mode>_extended_scalar): Ditto.
48269         (@pred_minus_mul<mode>): Ditto.
48270         (*pred_<madd_nmsub><mode>): Ditto.
48271         (*pred_nmsub<mode>): Ditto.
48272         (*pred_<macc_nmsac><mode>): Ditto.
48273         (*pred_nmsac<mode>): Ditto.
48274         (*pred_mul_<optab><mode>): Ditto.
48275         (*pred_minus_mul<mode>): Ditto.
48276         (@pred_mul_<optab><mode>_scalar): Ditto.
48277         (@pred_minus_mul<mode>_scalar): Ditto.
48278         (*pred_<madd_nmsub><mode>_scalar): Ditto.
48279         (*pred_nmsub<mode>_scalar): Ditto.
48280         (*pred_<macc_nmsac><mode>_scalar): Ditto.
48281         (*pred_nmsac<mode>_scalar): Ditto.
48282         (*pred_mul_<optab><mode>_scalar): Ditto.
48283         (*pred_minus_mul<mode>_scalar): Ditto.
48284         (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
48285         (*pred_nmsub<mode>_extended_scalar): Ditto.
48286         (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
48287         (*pred_nmsac<mode>_extended_scalar): Ditto.
48288         (*pred_mul_<optab><mode>_extended_scalar): Ditto.
48289         (*pred_minus_mul<mode>_extended_scalar): Ditto.
48290         (*pred_<madd_msub><mode>): Ditto.
48291         (*pred_<macc_msac><mode>): Ditto.
48292         (*pred_<madd_msub><mode>_scalar): Ditto.
48293         (*pred_<macc_msac><mode>_scalar): Ditto.
48294         (@pred_neg_mul_<optab><mode>): Ditto.
48295         (@pred_mul_neg_<optab><mode>): Ditto.
48296         (*pred_<nmadd_msub><mode>): Ditto.
48297         (*pred_<nmsub_nmadd><mode>): Ditto.
48298         (*pred_<nmacc_msac><mode>): Ditto.
48299         (*pred_<nmsac_nmacc><mode>): Ditto.
48300         (*pred_neg_mul_<optab><mode>): Ditto.
48301         (*pred_mul_neg_<optab><mode>): Ditto.
48302         (@pred_neg_mul_<optab><mode>_scalar): Ditto.
48303         (@pred_mul_neg_<optab><mode>_scalar): Ditto.
48304         (*pred_<nmadd_msub><mode>_scalar): Ditto.
48305         (*pred_<nmsub_nmadd><mode>_scalar): Ditto.
48306         (*pred_<nmacc_msac><mode>_scalar): Ditto.
48307         (*pred_<nmsac_nmacc><mode>_scalar): Ditto.
48308         (*pred_neg_mul_<optab><mode>_scalar): Ditto.
48309         (*pred_mul_neg_<optab><mode>_scalar): Ditto.
48310         (@pred_widen_neg_mul_<optab><mode>): Ditto.
48311         (@pred_widen_mul_neg_<optab><mode>): Ditto.
48312         (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
48313         (@pred_widen_mul_neg_<optab><mode>_scalar): Ditto.
48315 2023-03-23  liuhongt  <hongtao.liu@intel.com>
48317         * builtins.cc (builtin_memset_read_str): Replace
48318         targetm.gen_memset_scratch_rtx with gen_reg_rtx.
48319         (builtin_memset_gen_str): Ditto.
48320         * config/i386/i386-expand.cc
48321         (ix86_convert_const_wide_int_to_broadcast): Replace
48322         ix86_gen_scratch_sse_rtx with gen_reg_rtx.
48323         (ix86_expand_vector_move): Ditto.
48324         * config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx):
48325         Removed.
48326         * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed.
48327         (TARGET_GEN_MEMSET_SCRATCH_RTX): Removed.
48328         * doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX.
48329         * doc/tm.texi.in: Ditto.
48330         * target.def: Ditto.
48332 2023-03-22  Vladimir N. Makarov  <vmakarov@redhat.com>
48334         * lra.cc (lra): Do not repeat inheritance and live range splitting
48335         when asm error is found.
48337 2023-03-22  Andrew Jenner  <andrew@codesourcery.com>
48339         * config/gcn/gcn-protos.h (gcn_expand_dpp_swap_pairs_insn)
48340         (gcn_expand_dpp_distribute_even_insn)
48341         (gcn_expand_dpp_distribute_odd_insn): Declare.
48342         * config/gcn/gcn-valu.md (@dpp_swap_pairs<mode>)
48343         (@dpp_distribute_even<mode>, @dpp_distribute_odd<mode>)
48344         (cmul<conj_op><mode>3, cml<addsub_as><mode>4, vec_addsub<mode>3)
48345         (cadd<rot><mode>3, vec_fmaddsub<mode>4, vec_fmsubadd<mode>4)
48346         (fms<mode>4<exec>, fms<mode>4_negop2<exec>, fms<mode>4)
48347         (fms<mode>4_negop2): New patterns.
48348         * config/gcn/gcn.cc (gcn_expand_dpp_swap_pairs_insn)
48349         (gcn_expand_dpp_distribute_even_insn)
48350         (gcn_expand_dpp_distribute_odd_insn): New functions.
48351         * config/gcn/gcn.md: Add entries to unspec enum.
48353 2023-03-22  Aldy Hernandez  <aldyh@redhat.com>
48355         PR tree-optimization/109008
48356         * value-range.cc (frange::set): Add nan_state argument.
48357         * value-range.h (class nan_state): New.
48358         (frange::get_nan_state): New.
48360 2023-03-22  Martin Liska  <mliska@suse.cz>
48362         * configure: Regenerate.
48364 2023-03-21  Joseph Myers  <joseph@codesourcery.com>
48366         * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
48367         to variants.
48369 2023-03-21  Andrew MacLeod  <amacleod@redhat.com>
48371         PR tree-optimization/109192
48372         * gimple-range-gori.cc (gori_compute::compute_operand_range):
48373         Terminate gori calculations if a relation is not relevant.
48374         * value-relation.h (value_relation::set_relation): Allow
48375         equality between op1 and op2 if they are the same.
48377 2023-03-21  Richard Biener  <rguenther@suse.de>
48379         PR tree-optimization/109219
48380         * tree-vect-loop.cc (vectorizable_reduction): Check
48381         slp_node, not STMT_SLP_TYPE.
48382         * tree-vect-stmts.cc (vectorizable_condition): Likewise.
48383         * tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
48384         Remove assertion on STMT_SLP_TYPE.
48386 2023-03-21  Jakub Jelinek  <jakub@redhat.com>
48388         PR tree-optimization/109215
48389         * tree.h (enum special_array_member): Adjust comments for int_0
48390         and trail_0.
48391         * tree.cc (component_ref_sam_type): Clear zero_elts if memtype
48392         has zero sized element type and the array has variable number of
48393         elements or constant one or more elements.
48394         (component_ref_size): Adjust comments, formatting fix.
48396 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
48398         * configure.ac: Add check for the Texinfo 6.8
48399         CONTENTS_OUTPUT_LOCATION customization variable and set it if
48400         supported.
48401         * configure: Regenerate.
48402         * Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable.  Set by
48403         configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
48404         CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
48405         ($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
48407 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
48409         * doc/extend.texi: Associate use_hazard_barrier_return index
48410         entry with its attribute.
48411         * doc/invoke.texi: Associate -fcanon-prefix-map index entry with
48412         its attribute
48414 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
48416         * doc/implement-c.texi: Remove usage of @gol.
48417         * doc/invoke.texi: Ditto.
48418         * doc/sourcebuild.texi: Ditto.
48419         * doc/include/gcc-common.texi: Remove @gol.  In new Makeinfo and
48420         texinfo.tex versions, the bug it was working around appears to
48421         be gone.
48423 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
48425         * doc/include/texinfo.tex: Update to 2023-01-17.19.
48427 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
48429         * doc/include/gcc-common.texi: Add @defbuiltin{,x} and
48430         @enddefbuiltin for defining built-in functions.
48431         * doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
48432         places where it should be used.
48434 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
48436         * doc/extend.texi (Formatted Output Function Checking): New
48437         subsection for  grouping together printf et al.
48438         (Exception handling) Fix missing @ sign before copyright
48439         header, which lead to the copyright line leaking into
48440         '(gcc)Exception handling'.
48441         * doc/gcc.texi: Set document language to en_US.
48442         (@copying): Wrap front cover texts in quotations, move in manual
48443         description text.
48445 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
48447         * doc/gcc.texi: Add the Indices appendix, to make texinfo
48448         generate nice indices overview page.
48450 2023-03-21  Richard Biener  <rguenther@suse.de>
48452         PR tree-optimization/109170
48453         * gimple-range-op.cc (cfn_pass_through_arg1): New.
48454         (gimple_range_op_handler::maybe_builtin_call): Handle
48455         __builtin_expect via cfn_pass_through_arg1.
48457 2023-03-20   Michael Meissner  <meissner@linux.ibm.com>
48459         PR target/109067
48460         * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
48461         (init_float128_ieee): Delete code to switch complex multiply and divide
48462         for long double.
48463         (complex_multiply_builtin_code): New helper function.
48464         (complex_divide_builtin_code): Likewise.
48465         (rs6000_mangle_decl_assembler_name): Add support for mangling the name
48466         of complex 128-bit multiply and divide built-in functions.
48468 2023-03-20  Peter Bergner  <bergner@linux.ibm.com>
48470         PR target/109178
48471         * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
48473 2023-03-19  Jonny Grant  <jg@jguk.org>
48475         * doc/extend.texi (Common Function Attributes) <nonnull>:
48476         Correct typo.
48478 2023-03-18  Peter Bergner  <bergner@linux.ibm.com>
48480         PR rtl-optimization/109179
48481         * lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug
48482         insn or note.  Move the tests earlier to guard lra_get_insn_recog_data.
48484 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
48486         PR target/105554
48487         * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
48488         to false.
48489         * function.cc (push_struct_function): Add ABSTRACT_P argument, pass it
48490         to allocate_struct_function instead of false.
48491         * tree-inline.cc (initialize_cfun): Don't copy DECL_ARGUMENTS
48492         nor DECL_RESULT here.  Pass true as ABSTRACT_P to
48493         push_struct_function.  Call targetm.target_option.relayout_function
48494         after it.
48495         (tree_function_versioning): Formatting fix.
48497 2023-03-17  Vladimir N. Makarov  <vmakarov@redhat.com>
48499         * lra-constraints.cc: Include hooks.h.
48500         (combine_reload_insn): New function.
48501         (lra_constraints): Call it.
48503 2023-03-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
48504             kito-cheng  <kito.cheng@sifive.com>
48506         * config/riscv/riscv-v.cc (legitimize_move): Allow undef value
48507         as legitimate value.
48508         * config/riscv/riscv-vector-builtins.cc
48509         (function_expander::use_ternop_insn): Fix bugs of ternary intrinsic.
48510         (function_expander::use_widen_ternop_insn): Ditto.
48511         * config/riscv/vector.md (@vundefined<mode>): New pattern.
48512         (pred_mul_<optab><mode>_undef_merge): Remove.
48513         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
48514         (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
48515         (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
48516         (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
48518 2023-03-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
48520         PR target/109092
48521         * config/riscv/riscv.md: Fix subreg bug.
48523 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
48525         PR middle-end/108685
48526         * omp-expand.cc (expand_omp_for_ordered_loops): Add L0_BB argument,
48527         use its loop_father rather than BODY_BB's loop_father.
48528         (expand_omp_for_generic): Adjust expand_omp_for_ordered_loops caller.
48529         If broken_loop with ordered > collapse and at least one of those
48530         extra loops aren't guaranteed to have at least one iteration, change
48531         l0_bb's loop_father to entry_bb's loop_father.  Set cont_bb's
48532         loop_father to l0_bb's loop_father rather than l1_bb's.
48534 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
48536         PR plugins/108634
48537         * gdbhooks.py (TreePrinter.to_string): Wrap
48538         gdb.parse_and_eval('tree_code_type') in a try block, parse
48539         and eval 'tree_code_type_tmpl<0>::tree_code_type' instead if it
48540         raises exception.  Update comments for the recent tree_code_type
48541         changes.
48543 2023-03-17  Sandra Loosemore  <sandra@codesourcery.com>
48545         * doc/extend.texi (BPF Built-in Functions): Fix numerous markup
48546         issues.  Add more line breaks to example so it doesn't overflow
48547         the margins.
48549 2023-03-17  Sandra Loosemore  <sandra@codesourcery.com>
48551         * doc/extend.texi (Common Function Attributes) <access>: Fix bad
48552         line breaks in examples.
48553         <malloc>: Fix bad line breaks in running text, also copy-edit
48554         for consistency.
48555         (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
48556         * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
48557         @gol.
48558         (C++ Dialect Options) <-fcontracts>: Add line break in example.
48559         <-Wctad-maybe-unsupported>: Likewise.
48560         <-Winvalid-constexpr>: Likewise.
48561         (Warning Options) <-Wdangling-pointer>: Likewise.
48562         <-Winterference-size>: Likewise.
48563         <-Wvla-parameter>: Likewise.
48564         (Static Analyzer Options): Fix bad line breaks in running text,
48565         plus add some missing markup.
48566         (Optimize Options) <openacc-privatization>: Fix more bad line
48567         breaks in running text.
48569 2023-03-16  Uros Bizjak  <ubizjak@gmail.com>
48571         * config/i386/i386-expand.cc (expand_vec_perm_pblendv):
48572         Handle 8-byte modes only with TARGET_MMX_WITH_SSE.
48573         (expand_vec_perm_2perm_pblendv): Ditto.
48575 2023-03-16  Martin Liska  <mliska@suse.cz>
48577         PR middle-end/106133
48578         * gcc.cc (driver_handle_option): Use x_main_input_basename
48579         if x_dump_base_name is null.
48580         * opts.cc (common_handle_option): Likewise.
48582 2023-03-16  Richard Biener  <rguenther@suse.de>
48584         PR tree-optimization/109123
48585         * gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
48586         Do not emit -Wuse-after-free late.
48587         (pass_waccess::check_call): Always check call pointer uses.
48589 2023-03-16  Richard Biener  <rguenther@suse.de>
48591         PR tree-optimization/109141
48592         * tree-dfa.h (renumber_gimple_stmt_uids_in_block): New.
48593         * tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split
48594         out from ...
48595         (renumber_gimple_stmt_uids): ... here and
48596         (renumber_gimple_stmt_uids_in_blocks): ... here.
48597         * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p):
48598         Use renumber_gimple_stmt_uids_in_block to also assign UIDs
48599         to PHIs.
48600         (pass_waccess::check_pointer_uses): Process all PHIs.
48602 2023-03-15  David Malcolm  <dmalcolm@redhat.com>
48604         PR analyzer/109097
48605         * diagnostic-format-sarif.cc (class sarif_invocation): New.
48606         (class sarif_ice_notification): New.
48607         (sarif_builder::m_invocation_obj): New field.
48608         (sarif_invocation::add_notification_for_ice): New.
48609         (sarif_invocation::prepare_to_flush): New.
48610         (sarif_ice_notification::sarif_ice_notification): New.
48611         (sarif_builder::sarif_builder): Add m_invocation_obj.
48612         (sarif_builder::end_diagnostic): Special-case DK_ICE and
48613         DK_ICE_NOBT.
48614         (sarif_builder::flush_to_file): Call prepare_to_flush on
48615         m_invocation_obj.  Pass the latter to make_top_level_object.
48616         (sarif_builder::make_result_object): Move creation of "locations"
48617         array to...
48618         (sarif_builder::make_locations_arr): ...this new function.
48619         (sarif_builder::make_top_level_object): Add "invocation_obj" param
48620         and pass it to make_run_object.
48621         (sarif_builder::make_run_object): Add "invocation_obj" param and
48622         use it.
48623         (sarif_ice_handler): New callback.
48624         (diagnostic_output_format_init_sarif): Wire up sarif_ice_handler.
48625         * diagnostic.cc (diagnostic_initialize): Initialize new field
48626         "ice_handler_cb".
48627         (diagnostic_action_after_output): If it is set, make one attempt
48628         to call ice_handler_cb.
48629         * diagnostic.h (diagnostic_context::ice_handler_cb): New field.
48631 2023-03-15  Uros Bizjak  <ubizjak@gmail.com>
48633         * config/i386/i386-expand.cc (expand_vec_perm_blend):
48634         Handle 8-byte modes only with TARGET_MMX_WITH_SSE. Handle V2SFmode
48635         and fix V2HImode handling.
48636         (expand_vec_perm_1): Try to emit BLEND instruction
48637         before MOVSS/MOVSD.
48638         * config/i386/mmx.md (*mmx_blendps): New insn pattern.
48640 2023-03-15  Tobias Burnus  <tobias@codesourcery.com>
48642         * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
48644 2023-03-15  Richard Biener  <rguenther@suse.de>
48646         * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
48647         Do not diagnose clobbers.
48649 2023-03-15  Richard Biener  <rguenther@suse.de>
48651         PR tree-optimization/109139
48652         * tree-ssa-live.cc (remove_unused_locals): Look at the
48653         base address for unused decls on the LHS of .DEFERRED_INIT.
48655 2023-03-15  Xi Ruoyao  <xry111@xry111.site>
48657         PR other/109086
48658         * builtins.cc (inline_string_cmp): Force the character
48659         difference into "result" pseudo-register, instead of reassign
48660         the pseudo-register.
48662 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
48664         * config.gcc: Add thead.o to RISC-V extra_objs.
48665         * config/riscv/peephole.md: Add mempair peephole passes.
48666         * config/riscv/riscv-protos.h (riscv_split_64bit_move_p): New
48667         prototype.
48668         (th_mempair_operands_p): Likewise.
48669         (th_mempair_order_operands): Likewise.
48670         (th_mempair_prepare_save_restore_operands): Likewise.
48671         (th_mempair_save_restore_regs): Likewise.
48672         (th_mempair_output_move): Likewise.
48673         * config/riscv/riscv.cc (riscv_save_reg): Move code.
48674         (riscv_restore_reg): Move code.
48675         (riscv_for_each_saved_reg): Add code to emit mempair insns.
48676         * config/riscv/t-riscv: Add thead.cc.
48677         * config/riscv/thead.md (*th_mempair_load_<GPR:mode>2):
48678         New insn.
48679         (*th_mempair_store_<GPR:mode>2): Likewise.
48680         (*th_mempair_load_extendsidi2): Likewise.
48681         (*th_mempair_load_zero_extendsidi2): Likewise.
48682         * config/riscv/thead.cc: New file.
48684 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
48686         * config/riscv/constraints.md (TARGET_XTHEADFMV ? FP_REGS : NO_REGS)
48687         New constraint "th_f_fmv".
48688         (TARGET_XTHEADFMV ? GR_REGS : NO_REGS): New constraint
48689         "th_r_fmv".
48690         * config/riscv/riscv.cc (riscv_split_doubleword_move):
48691         Add split code for XTheadFmv.
48692         (riscv_secondary_memory_needed): XTheadFmv does not need
48693         secondary memory.
48694         * config/riscv/riscv.md: Add new UNSPEC_XTHEADFMV and
48695         UNSPEC_XTHEADFMV_HW. Add support for XTheadFmv to
48696         movdf_hardfloat_rv32.
48697         * config/riscv/thead.md (th_fmv_hw_w_x): New INSN.
48698         (th_fmv_x_w): New INSN.
48699         (th_fmv_x_hw): New INSN.
48701 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
48703         * config/riscv/riscv.md (maddhisi4): New expand.
48704         (msubhisi4): New expand.
48705         * config/riscv/thead.md (*th_mula<mode>): New pattern.
48706         (*th_mulawsi): New pattern.
48707         (*th_mulawsi2): New pattern.
48708         (*th_maddhisi4): New pattern.
48709         (*th_sextw_maddhisi4): New pattern.
48710         (*th_muls<mode>): New pattern.
48711         (*th_mulswsi): New pattern.
48712         (*th_mulswsi2): New pattern.
48713         (*th_msubhisi4): New pattern.
48714         (*th_sextw_msubhisi4): New pattern.
48716 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
48718         * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
48719         * config/riscv/riscv-protos.h (riscv_expand_conditional_move):
48720         Add prototype.
48721         * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
48722         XTheadCondMov.
48723         (riscv_expand_conditional_move): New function.
48724         (riscv_expand_conditional_move_onesided): New function.
48725         * config/riscv/riscv.md: Add support for XTheadCondMov.
48726         * config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add
48727         support for XTheadCondMov.
48728         (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise.
48730 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
48732         * config/riscv/bitmanip.md (clzdi2): New expand.
48733         (clzsi2): New expand.
48734         (ctz<mode>2): New expand.
48735         (popcount<mode>2): New expand.
48736         (<bitmanip_optab>si2): Rename INSN.
48737         (*<bitmanip_optab>si2): Hide INSN name.
48738         (<bitmanip_optab>di2): Rename INSN.
48739         (*<bitmanip_optab>di2): Hide INSN name.
48740         (rotrsi3): Remove INSN.
48741         (rotr<mode>3): Add expand.
48742         (*rotrsi3): New INSN.
48743         (rotrdi3): Rename INSN.
48744         (*rotrdi3): Hide INSN name.
48745         (rotrsi3_sext): Rename INSN.
48746         (*rotrsi3_sext): Hide INSN name.
48747         (bswap<mode>2): Remove INSN.
48748         (bswapdi2): Add expand.
48749         (bswapsi2): Add expand.
48750         (*bswap<mode>2): Hide INSN name.
48751         * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for sign
48752         extraction.
48753         * config/riscv/riscv.md (extv<mode>): New expand.
48754         (extzv<mode>): New expand.
48755         * config/riscv/thead.md (*th_srri<mode>3): New INSN.
48756         (*th_ext<mode>): New INSN.
48757         (*th_extu<mode>): New INSN.
48758         (*th_clz<mode>2): New INSN.
48759         (*th_rev<mode>2): New INSN.
48761 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
48763         * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
48764         * config/riscv/thead.md (*th_tst<mode>3): New INSN.
48766 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
48768         * config/riscv/riscv.md: Include thead.md
48769         * config/riscv/thead.md: New file.
48771 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
48773         * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
48775 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
48777         * common/config/riscv/riscv-common.cc: Add xthead* extensions.
48778         * config/riscv/riscv-opts.h (MASK_XTHEADBA): New.
48779         (MASK_XTHEADBB): New.
48780         (MASK_XTHEADBS): New.
48781         (MASK_XTHEADCMO): New.
48782         (MASK_XTHEADCONDMOV): New.
48783         (MASK_XTHEADFMEMIDX): New.
48784         (MASK_XTHEADFMV): New.
48785         (MASK_XTHEADINT): New.
48786         (MASK_XTHEADMAC): New.
48787         (MASK_XTHEADMEMIDX): New.
48788         (MASK_XTHEADMEMPAIR): New.
48789         (MASK_XTHEADSYNC): New.
48790         (TARGET_XTHEADBA): New.
48791         (TARGET_XTHEADBB): New.
48792         (TARGET_XTHEADBS): New.
48793         (TARGET_XTHEADCMO): New.
48794         (TARGET_XTHEADCONDMOV): New.
48795         (TARGET_XTHEADFMEMIDX): New.
48796         (TARGET_XTHEADFMV): New.
48797         (TARGET_XTHEADINT): New.
48798         (TARGET_XTHEADMAC): New.
48799         (TARGET_XTHEADMEMIDX): New.
48800         (TARGET_XTHEADMEMPAIR): new.
48801         (TARGET_XTHEADSYNC): New.
48802         * config/riscv/riscv.opt: Add riscv_xthead_subext.
48804 2023-03-15  Hu, Lin1  <lin1.hu@intel.com>
48806         PR target/109117
48807         * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
48808         __builtin_ia32_vaesdeclast_v16qi,__builtin_ia32_vaesenc_v16qi,
48809         __builtin_ia32_vaesenclast_v16qi): Require OPTION_MASK_ISA_AVX512VL.
48811 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
48813         PR target/109109
48814         * config/i386/i386-expand.cc (split_double_concat): Fix splitting
48815         when lo is equal to dhi and hi is a MEM which uses dlo register.
48817 2023-03-14  Martin Jambor  <mjambor@suse.cz>
48819         PR ipa/107925
48820         * ipa-cp.cc (update_profiling_info): Drop counts of orig_node to
48821         global0 instead of zeroing when it does not have as many counts as
48822         it should.
48824 2023-03-14  Martin Jambor  <mjambor@suse.cz>
48826         PR ipa/107925
48827         * ipa-cp.cc (update_specialized_profile): Drop orig_node_count to
48828         ipa count, remove assert, lenient_count_portion_handling, dump
48829         also orig_node_count.
48831 2023-03-14  Uros Bizjak  <ubizjak@gmail.com>
48833         * config/i386/i386-expand.cc (expand_vec_perm_movs):
48834         Handle V2SImode for TARGET_MMX_WITH_SSE.
48835         * config/i386/mmx.md (*mmx_movss_<mode>): Rename from *mmx_movss
48836         using V2FI mode iterator to handle both V2SI and V2SF modes.
48838 2023-03-14  Sam James  <sam@gentoo.org>
48840         * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
48841         including <sstream> earlier.
48842         * system.h: Add INCLUDE_SSTREAM.
48844 2023-03-14  Richard Biener  <rguenther@suse.de>
48846         * tree-ssa-live.cc (remove_unused_locals): Do not treat
48847         the .DEFERRED_INIT of a variable as use, instead remove
48848         that if it is the only use.
48850 2023-03-14  Eric Botcazou  <ebotcazou@adacore.com>
48852         PR rtl-optimization/107762
48853         * expr.cc (emit_group_store): Revert latest change.
48855 2023-03-14  Andre Vieira  <andre.simoesdiasvieira@arm.com>
48857         PR tree-optimization/109005
48858         * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
48859         aggregate type check.
48861 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
48863         PR tree-optimization/109115
48864         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Don't use
48865         r.upper_bound () on r.undefined_p () range.
48867 2023-03-14  Jan Hubicka  <hubicka@ucw.cz>
48869         PR tree-optimization/106896
48870         * profile-count.cc (profile_count::to_sreal_scale): Synchronize
48871         implementatoin with probability_in; avoid some asserts.
48873 2023-03-13  Max Filippov  <jcmvbkbc@gmail.com>
48875         * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
48877 2023-03-13  Sean Bright  <sean@seanbright.com>
48879         * doc/invoke.texi (Warning Options): Remove errant 'See'
48880         before @xref.
48882 2023-03-13  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
48884         * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
48885         REG_OK_FOR_BASE_P): Remove.
48887 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
48889         * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
48890         (=vd,vd,vr,vr): Ditto.
48891         * config/riscv/vector.md: Ditto.
48893 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
48895         * config/riscv/riscv-vector-builtins.cc
48896         (function_expander::use_compare_insn): Add operand predicate check.
48898 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
48900         * config/riscv/vector.md: Fine tune RA constraints.
48902 2023-03-13  Tobias Burnus  <tobias@codesourcery.com>
48904         * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
48905         hsaco assemble/link.
48907 2023-03-13  Richard Biener  <rguenther@suse.de>
48909         PR tree-optimization/109046
48910         * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
48911         piecewise complex loads.
48913 2023-03-12  Jakub Jelinek  <jakub@redhat.com>
48915         * config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove.
48916         (aarch64_bf16_ptr_type_node): Adjust comment.
48917         * config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use
48918         bfloat16_type_node rather than aarch64_bf16_type_node.
48919         (aarch64_libgcc_floating_mode_supported_p,
48920         aarch64_scalar_mode_supported_p): Also support BFmode.
48921         (aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove.
48922         (aarch64_invalid_binary_op): Remove BFmode related rejections.
48923         (TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine.
48924         * config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove.
48925         (aarch64_int_or_fp_type): Use bfloat16_type_node rather than
48926         aarch64_bf16_type_node.
48927         (aarch64_init_simd_builtin_types): Likewise.
48928         (aarch64_init_bf16_types): Likewise.  Don't create bfloat16_type_node,
48929         which is created in tree.cc already.
48930         * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise.
48932 2023-03-12  Roger Sayle  <roger@nextmovesoftware.com>
48934         PR middle-end/109031
48935         * tree-chrec.cc (chrec_apply): When folding "{a, +, a} (x-1)",
48936         ensure that the type of x is as wide or wider than the type of a.
48938 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
48940         PR target/108583
48941         * config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): Remove.
48942         (*bitmask_shift_plus<mode>): New.
48943         * config/aarch64/aarch64-sve2.md (*bitmask_shift_plus<mode>): New.
48944         (@aarch64_bitmask_udiv<mode>3): Remove.
48945         * config/aarch64/aarch64.cc
48946         (aarch64_vectorize_can_special_div_by_constant,
48947         TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Removed.
48948         (TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT,
48949         aarch64_vectorize_preferred_div_as_shifts_over_mult): New.
48951 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
48953         PR target/108583
48954         * target.def (preferred_div_as_shifts_over_mult): New.
48955         * doc/tm.texi.in: Document it.
48956         * doc/tm.texi: Regenerate.
48957         * targhooks.cc (default_preferred_div_as_shifts_over_mult): New.
48958         * targhooks.h (default_preferred_div_as_shifts_over_mult): New.
48959         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Use it.
48961 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
48962             Richard Sandiford  <richard.sandiford@arm.com>
48964         PR target/108583
48965         * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
48966         single use.
48968 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
48969             Andrew MacLeod  <amacleod@redhat.com>
48971         PR target/108583
48972         * gimple-range-op.h (gimple_range_op_handler): Add maybe_non_standard.
48973         * gimple-range-op.cc (gimple_range_op_handler::gimple_range_op_handler):
48974         Use it.
48975         (gimple_range_op_handler::maybe_non_standard): New.
48976         * range-op.cc (class operator_widen_plus_signed,
48977         operator_widen_plus_signed::wi_fold, class operator_widen_plus_unsigned,
48978         operator_widen_plus_unsigned::wi_fold, class operator_widen_mult_signed,
48979         operator_widen_mult_signed::wi_fold, class operator_widen_mult_unsigned,
48980         operator_widen_mult_unsigned::wi_fold,
48981         ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
48982         ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New.
48983         * range-op.h (ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
48984         ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New
48986 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
48988         PR target/108583
48989         * doc/tm.texi (TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Remove.
48990         * doc/tm.texi.in: Likewise.
48991         * explow.cc (round_push, align_dynamic_address): Revert previous patch.
48992         * expmed.cc (expand_divmod): Likewise.
48993         * expmed.h (expand_divmod): Likewise.
48994         * expr.cc (force_operand, expand_expr_divmod): Likewise.
48995         * optabs.cc (expand_doubleword_mod, expand_doubleword_divmod): Likewise.
48996         * target.def (can_special_div_by_const): Remove.
48997         * target.h: Remove tree-core.h include
48998         * targhooks.cc (default_can_special_div_by_const): Remove.
48999         * targhooks.h (default_can_special_div_by_const): Remove.
49000         * tree-vect-generic.cc (expand_vector_operation): Remove hook.
49001         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Remove hook.
49002         * tree-vect-stmts.cc (vectorizable_operation): Remove hook.
49004 2023-03-12  Sandra Loosemore  <sandra@codesourcery.com>
49006         * doc/install.texi2html: Fix issue number typo in comment.
49008 2023-03-12  Gaius Mulley  <gaiusmod2@gmail.com>
49010         * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
49011         bool.
49013 2023-03-12  Sandra Loosemore  <sandra@codesourcery.com>
49015         * doc/invoke.texi (Optimize Options):  Add markup to
49016         description of asan-kernel-mem-intrinsic-prefix, and clarify
49017         wording slightly.
49019 2023-03-11  Gerald Pfeifer  <gerald@pfeifer.com>
49021         * doc/extend.texi (Named Address Spaces): Drop a redundant link
49022         to AVR-LibC.
49024 2023-03-11  Jeff Law  <jlaw@ventanamicro>
49026         PR web/88860
49027         * doc/extend.texi: Clarify Attribute Syntax a bit.
49029 2023-03-11  Sandra Loosemore  <sandra@codesourcery.com>
49031         * doc/install.texi (Prerequisites): Suggest using newer versions
49032         of Texinfo.
49033         (Final install): Clean up and modernize discussion of how to
49034         build or obtain the GCC manuals.
49035         * doc/install.texi2html: Update comment to point to the PR instead
49036         of "makeinfo 4.7 brokenness" (it's not specific to that version).
49038 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
49040         PR target/107703
49041         * optabs.cc (expand_fix): For conversions from BFmode to integral,
49042         use shifts to convert it to SFmode first and then convert SFmode
49043         to integral.
49045 2023-03-10  Andrew Pinski  <apinski@marvell.com>
49047         * config/aarch64/aarch64.md: Add a new define_split
49048         to help combine.
49050 2023-03-10  Richard Biener  <rguenther@suse.de>
49052         * tree-ssa-structalias.cc (solve_graph): Immediately
49053         iterate self-cycles.
49055 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
49057         PR tree-optimization/109008
49058         * range-op-float.cc (float_widen_lhs_range): If not
49059         -frounding-math and not IBM double double format, extend lhs
49060         range just by 0.5ulp rather than 1ulp in each direction.
49062 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
49064         PR target/107998
49065         * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
49066         $tmake_file.
49067         * config/i386/t-cygwin-w64: Remove.
49069 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
49071         PR plugins/108634
49072         * tree-core.h (tree_code_type, tree_code_length): For C++11 or
49073         C++14, don't declare as extern const arrays.
49074         (tree_code_type_tmpl, tree_code_length_tmpl): New types with
49075         static constexpr member arrays for C++11 or C++14.
49076         * tree.h (TREE_CODE_CLASS): For C++11 or C++14 use
49077         tree_code_type_tmpl <0>::tree_code_type instead of tree_code_type.
49078         (TREE_CODE_LENGTH): For C++11 or C++14 use
49079         tree_code_length_tmpl <0>::tree_code_length instead of
49080         tree_code_length.
49081         * tree.cc (tree_code_type, tree_code_length): Remove.
49083 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
49085         PR other/108464
49086         * common.opt (fcanon-prefix-map): New option.
49087         * opts.cc: Include file-prefix-map.h.
49088         (flag_canon_prefix_map): New variable.
49089         (common_handle_option): Handle OPT_fcanon_prefix_map.
49090         (gen_command_line_string): Ignore OPT_fcanon_prefix_map.
49091         * file-prefix-map.h (flag_canon_prefix_map): Declare.
49092         * file-prefix-map.cc (struct file_prefix_map): Add canonicalize
49093         member.
49094         (add_prefix_map): Initialize canonicalize member from
49095         flag_canon_prefix_map, and if true canonicalize it using lrealpath.
49096         (remap_filename): Revert 2022-11-01 and 2022-11-07 changes,
49097         use lrealpath result only for map->canonicalize map entries.
49098         * lto-opts.cc (lto_write_options): Ignore OPT_fcanon_prefix_map.
49099         * opts-global.cc (handle_common_deferred_options): Clear
49100         flag_canon_prefix_map at the start and handle OPT_fcanon_prefix_map.
49101         * doc/invoke.texi (-fcanon-prefix-map): Document.
49102         (-ffile-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map): Add
49103         see also for -fcanon-prefix-map.
49104         * doc/cppopts.texi (-fmacro-prefix-map): Likewise.
49106 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
49108         PR c/108079
49109         * cgraphunit.cc (check_global_declaration): Don't warn for unused
49110         variables which have OPT_Wunused_variable warning suppressed.
49112 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
49114         PR tree-optimization/109008
49115         * range-op-float.cc (float_widen_lhs_range): If lb is
49116         minimum representable finite number or ub is maximum
49117         representable finite number, instead of widening it to
49118         -inf or inf widen it to negative or positive 0x0.8p+(EMAX+1).
49119         Temporarily clear flag_finite_math_only when canonicalizing
49120         the widened range.
49122 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
49124         * config/riscv/riscv-builtins.cc (riscv_gimple_fold_builtin): New function.
49125         * config/riscv/riscv-protos.h (riscv_gimple_fold_builtin): Ditto.
49126         (gimple_fold_builtin):  Ditto.
49127         * config/riscv/riscv-vector-builtins-bases.cc (class read_vl): New class.
49128         (class vleff): Ditto.
49129         (BASE): Ditto.
49130         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
49131         * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
49132         (vleff): Ditto.
49133         * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
49134         (struct fault_load_def): Ditto.
49135         (SHAPE): Ditto.
49136         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
49137         * config/riscv/riscv-vector-builtins.cc
49138         (rvv_arg_type_info::get_tree_type): Add size_ptr.
49139         (gimple_folder::gimple_folder): New class.
49140         (gimple_folder::fold): Ditto.
49141         (gimple_fold_builtin): New function.
49142         (get_read_vl_instance): Ditto.
49143         (get_read_vl_decl): Ditto.
49144         * config/riscv/riscv-vector-builtins.def (size_ptr): Add size_ptr.
49145         * config/riscv/riscv-vector-builtins.h (class gimple_folder): New class.
49146         (get_read_vl_instance): New function.
49147         (get_read_vl_decl):  Ditto.
49148         * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Ditto.
49149         (read_vl_insn_p): Ditto.
49150         (available_occurrence_p): Ditto.
49151         (backward_propagate_worthwhile_p): Ditto.
49152         (gen_vsetvl_pat): Adapt for vleff support.
49153         (get_forward_read_vl_insn): New function.
49154         (get_backward_fault_first_load_insn): Ditto.
49155         (source_equal_p): Adapt for vleff support.
49156         (first_ratio_invalid_for_second_sew_p): Remove.
49157         (first_ratio_invalid_for_second_lmul_p): Ditto.
49158         (first_lmul_less_than_second_lmul_p): Ditto.
49159         (first_ratio_less_than_second_ratio_p): Ditto.
49160         (support_relaxed_compatible_p): New function.
49161         (vector_insn_info::operator>): Remove.
49162         (vector_insn_info::operator>=): Refine.
49163         (vector_insn_info::parse_insn): Adapt for vleff support.
49164         (vector_insn_info::compatible_p): Ditto.
49165         (vector_insn_info::update_fault_first_load_avl): New function.
49166         (pass_vsetvl::transfer_after): Adapt for vleff support.
49167         (pass_vsetvl::demand_fusion): Ditto.
49168         (pass_vsetvl::cleanup_insns): Ditto.
49169         * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Remove
49170         redundant condtions.
49171         * config/riscv/riscv-vsetvl.h (struct demands_cond): New function.
49172         * config/riscv/riscv.cc (TARGET_GIMPLE_FOLD_BUILTIN): New target hook.
49173         * config/riscv/riscv.md: Adapt for vleff support.
49174         * config/riscv/t-riscv: Ditto.
49175         * config/riscv/vector-iterators.md: New iterator.
49176         * config/riscv/vector.md (read_vlsi): New pattern.
49177         (read_vldi_zero_extend): Ditto.
49178         (@pred_fault_load<mode>): Ditto.
49180 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
49182         * config/riscv/riscv-vector-builtins.cc
49183         (function_expander::use_ternop_insn): Use maybe_gen_insn instead.
49184         (function_expander::use_widen_ternop_insn): Ditto.
49185         * optabs.cc (maybe_gen_insn): Extend nops handling.
49187 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
49189         * config/riscv/riscv-vector-builtins-bases.cc: Split indexed load
49190         patterns according to RVV ISA.
49191         * config/riscv/vector-iterators.md: New iterators.
49192         * config/riscv/vector.md
49193         (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Remove.
49194         (@pred_indexed_<order>load<mode>_same_eew): New pattern.
49195         (@pred_indexed_<order>load<mode>_x2_greater_eew): Ditto.
49196         (@pred_indexed_<order>load<mode>_x4_greater_eew): Ditto.
49197         (@pred_indexed_<order>load<mode>_x8_greater_eew): Ditto.
49198         (@pred_indexed_<order>load<mode>_x2_smaller_eew): Ditto.
49199         (@pred_indexed_<order>load<mode>_x4_smaller_eew): Ditto.
49200         (@pred_indexed_<order>load<mode>_x8_smaller_eew): Ditto.
49201         (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Remove.
49202         (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
49203         (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
49204         (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
49205         (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
49206         (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
49208 2023-03-10  Michael Collison  <collison@rivosinc.com>
49210         * tree-vect-loop-manip.cc (vect_do_peeling): Use
49211         result of constant_lower_bound instead of vf for the lower
49212         bound of the epilog loop trip count.
49214 2023-03-09  Tamar Christina  <tamar.christina@arm.com>
49216         * passes.cc (emergency_dump_function): Finish graph generation.
49218 2023-03-09  Tamar Christina  <tamar.christina@arm.com>
49220         * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
49221         and bottom bit only.
49223 2023-03-09  Andrew Pinski  <apinski@marvell.com>
49225         PR tree-optimization/108980
49226         * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
49227         Reorgnize the call to warning for not strict flexible arrays
49228         to be before the check of warned.
49230 2023-03-09  Jason Merrill  <jason@redhat.com>
49232         * doc/extend.texi: Comment out __is_deducible docs.
49234 2023-03-09  Jason Merrill  <jason@redhat.com>
49236         PR c++/105841
49237         * doc/extend.texi (Type Traits):: Document __is_deducible.
49239 2023-03-09  Costas Argyris  <costas.argyris@gmail.com>
49241         PR driver/108865
49242         * config.host: add object for x86_64-*-mingw*.
49243         * config/i386/sym-mingw32.cc: dummy file to attach
49244         symbol.
49245         * config/i386/utf8-mingw32.rc: windres resource file.
49246         * config/i386/winnt-utf8.manifest: XML manifest to
49247         enable UTF-8.
49248         * config/i386/x-mingw32: reference to x-mingw32-utf8.
49249         * config/i386/x-mingw32-utf8: Makefile fragment to
49250         embed UTF-8 manifest.
49252 2023-03-09  Vladimir N. Makarov  <vmakarov@redhat.com>
49254         * lra-constraints.cc (process_alt_operands): Use operand modes for
49255         clobbered regs instead of the biggest access mode.
49257 2023-03-09  Richard Biener  <rguenther@suse.de>
49259         PR middle-end/108995
49260         * fold-const.cc (extract_muldiv_1): Avoid folding
49261         (CST * b) / CST2 when sanitizing overflow and we rely on
49262         overflow being undefined.
49264 2023-03-09  Jakub Jelinek  <jakub@redhat.com>
49265             Richard Biener  <rguenther@suse.de>
49267         PR tree-optimization/109008
49268         * range-op-float.cc (float_widen_lhs_range): New function.
49269         (foperator_plus::op1_range, foperator_minus::op1_range,
49270         foperator_minus::op2_range, foperator_mult::op1_range,
49271         foperator_div::op1_range, foperator_div::op2_range): Use it.
49273 2023-03-07  Jonathan Grant  <jg@jguk.org>
49275         PR sanitizer/81649
49276         * doc/invoke.texi (Instrumentation Options):  Clarify
49277         LeakSanitizer behavior.
49279 2023-03-07  Benson Muite  <benson_muite@emailplus.org>
49281         * doc/install.texi (Prerequisites): Add link to gmplib.org.
49283 2023-03-07  Pan Li  <pan2.li@intel.com>
49284             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
49286         PR target/108185
49287         PR target/108654
49288         * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
49289         modes.
49290         * config/riscv/riscv.cc (riscv_v_adjust_precision): New.
49291         * config/riscv/riscv.h (riscv_v_adjust_precision): New.
49292         * genmodes.cc (adj_precision): New.
49293         (ADJUST_PRECISION): New.
49294         (emit_mode_adjustments): Handle ADJUST_PRECISION.
49296 2023-03-07  Hans-Peter Nilsson  <hp@axis.com>
49298         * doc/sourcebuild.texi: Document check_effective_target_tail_call.
49300 2023-03-06  Paul-Antoine Arras  <pa@codesourcery.com>
49302         * config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for
49303         {s|u}{max|min} in QI, HI and DI modes.
49304         (<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode.
49305         (cond_<fexpander><mode>): Add pattern for cond_f{max|min}.
49306         (cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}.
49307         * config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be
49308         saved in SGPRs.
49310 2023-03-06  Richard Biener  <rguenther@suse.de>
49312         PR tree-optimization/109025
49313         * tree-vect-loop.cc (vect_is_simple_reduction): Verify
49314         the inner LC PHI use is the inner loop PHI latch definition
49315         before classifying an outer PHI as double reduction.
49317 2023-03-06  Jan Hubicka  <hubicka@ucw.cz>
49319         PR target/108429
49320         * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
49321         generic.
49322         (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
49323         (X86_TUNE_USE_SCATTER): Likewise.
49325 2023-03-06  Xi Ruoyao  <xry111@xry111.site>
49327         PR target/109000
49328         * config/loongarch/loongarch.h (FP_RETURN): Use
49329         TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
49330         (UNITS_PER_FP_ARG): Likewise.
49332 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
49334         * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
49335         (pass_vsetvl::backward_demand_fusion): Ditto.
49337 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
49338             SiYu Wu  <siyu@isrc.iscas.ac.cn>
49340         * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
49341         instructions.
49342         (riscv_sm3p1_<mode>): New.
49343         (riscv_sm4ed_<mode>): New.
49344         (riscv_sm4ks_<mode>): New.
49345         * config/riscv/riscv-builtins.cc (AVAIL): Add ZKSED's and ZKSH's AVAIL.
49346         * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): Add ZKSED's and
49347         ZKSH's built-in functions.
49349 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
49350             SiYu Wu  <siyu@isrc.iscas.ac.cn>
49352         * config/riscv/crypto.md (riscv_sha256sig0_<mode>): Add ZKNH's instructions.
49353         (riscv_sha256sig1_<mode>): New.
49354         (riscv_sha256sum0_<mode>): New.
49355         (riscv_sha256sum1_<mode>): New.
49356         (riscv_sha512sig0h): New.
49357         (riscv_sha512sig0l): New.
49358         (riscv_sha512sig1h): New.
49359         (riscv_sha512sig1l): New.
49360         (riscv_sha512sum0r): New.
49361         (riscv_sha512sum1r): New.
49362         (riscv_sha512sig0): New.
49363         (riscv_sha512sig1): New.
49364         (riscv_sha512sum0): New.
49365         (riscv_sha512sum1): New.
49366         * config/riscv/riscv-builtins.cc (AVAIL): And ZKNH's AVAIL.
49367         * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): And ZKNH's
49368         built-in functions.
49369         (DIRECT_BUILTIN): Add new.
49371 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
49372             SiYu Wu  <siyu@isrc.iscas.ac.cn>
49374         * config/riscv/constraints.md (D03): Add constants of bs and rnum.
49375         (DsA): New.
49376         * config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions.
49377         (riscv_aes32dsmi): New.
49378         (riscv_aes64ds): New.
49379         (riscv_aes64dsm): New.
49380         (riscv_aes64im): New.
49381         (riscv_aes64ks1i): New.
49382         (riscv_aes64ks2): New.
49383         (riscv_aes32esi): New.
49384         (riscv_aes32esmi): New.
49385         (riscv_aes64es): New.
49386         (riscv_aes64esm): New.
49387         * config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL.
49388         * config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and
49389         ZKNE's built-in functions.
49391 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
49392             SiYu Wu  <siyu@isrc.iscas.ac.cn>
49394         * config/riscv/bitmanip.md: Add ZBKB's instructions.
49395         * config/riscv/riscv-builtins.cc (AVAIL): Add new.
49396         * config/riscv/riscv.md: Add new type for crypto instructions.
49397         * config/riscv/crypto.md: Add Scalar Cryptography extension's machine
49398         description file.
49399         * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
49400         extension's built-in function file.
49402 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
49403             SiYu Wu  <siyu@isrc.iscas.ac.cn>
49405         * config/riscv/riscv-builtins.cc (RISCV_FTYPE_NAME2): New.
49406         (RISCV_FTYPE_NAME3): New.
49407         (RISCV_ATYPE_QI): New.
49408         (RISCV_ATYPE_HI): New.
49409         (RISCV_FTYPE_ATYPES2): New.
49410         (RISCV_FTYPE_ATYPES3): New.
49411         * config/riscv/riscv-ftypes.def (2): New.
49412         (3): New.
49414 2023-03-05  Vineet Gupta  <vineetg@rivosinc.com>
49416         * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
49417         use exact_log2().
49419 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
49420             kito-cheng  <kito.cheng@sifive.com>
49422         * config/riscv/predicates.md (vector_any_register_operand): New predicate.
49423         * config/riscv/riscv-c.cc (riscv_check_builtin_call): New function.
49424         (riscv_register_pragmas): Add builtin function check call.
49425         * config/riscv/riscv-protos.h (RVV_VUNDEF): Adapt macro.
49426         (check_builtin_call): New function.
49427         * config/riscv/riscv-vector-builtins-bases.cc (class vundefined): New class.
49428         (class vreinterpret): Ditto.
49429         (class vlmul_ext): Ditto.
49430         (class vlmul_trunc): Ditto.
49431         (class vset): Ditto.
49432         (class vget): Ditto.
49433         (BASE): Ditto.
49434         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
49435         * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
49436         (vluxei16): Ditto.
49437         (vluxei32): Ditto.
49438         (vluxei64): Ditto.
49439         (vloxei8): Ditto.
49440         (vloxei16): Ditto.
49441         (vloxei32): Ditto.
49442         (vloxei64): Ditto.
49443         (vsuxei8): Ditto.
49444         (vsuxei16): Ditto.
49445         (vsuxei32): Ditto.
49446         (vsuxei64): Ditto.
49447         (vsoxei8): Ditto.
49448         (vsoxei16): Ditto.
49449         (vsoxei32): Ditto.
49450         (vsoxei64): Ditto.
49451         (vundefined): Add new intrinsic.
49452         (vreinterpret): Ditto.
49453         (vlmul_ext): Ditto.
49454         (vlmul_trunc): Ditto.
49455         (vset): Ditto.
49456         (vget): Ditto.
49457         * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): New class.
49458         (struct narrow_alu_def): Ditto.
49459         (struct reduc_alu_def): Ditto.
49460         (struct vundefined_def): Ditto.
49461         (struct misc_def): Ditto.
49462         (struct vset_def): Ditto.
49463         (struct vget_def): Ditto.
49464         (SHAPE): Ditto.
49465         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
49466         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EEW8_INTERPRET_OPS): New def.
49467         (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
49468         (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
49469         (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
49470         (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
49471         (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
49472         (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
49473         (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
49474         (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
49475         (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
49476         (DEF_RVV_LMUL1_OPS): Ditto.
49477         (DEF_RVV_LMUL2_OPS): Ditto.
49478         (DEF_RVV_LMUL4_OPS): Ditto.
49479         (vint16mf4_t): Ditto.
49480         (vint16mf2_t): Ditto.
49481         (vint16m1_t): Ditto.
49482         (vint16m2_t): Ditto.
49483         (vint16m4_t): Ditto.
49484         (vint16m8_t): Ditto.
49485         (vint32mf2_t): Ditto.
49486         (vint32m1_t): Ditto.
49487         (vint32m2_t): Ditto.
49488         (vint32m4_t): Ditto.
49489         (vint32m8_t): Ditto.
49490         (vint64m1_t): Ditto.
49491         (vint64m2_t): Ditto.
49492         (vint64m4_t): Ditto.
49493         (vint64m8_t): Ditto.
49494         (vuint16mf4_t): Ditto.
49495         (vuint16mf2_t): Ditto.
49496         (vuint16m1_t): Ditto.
49497         (vuint16m2_t): Ditto.
49498         (vuint16m4_t): Ditto.
49499         (vuint16m8_t): Ditto.
49500         (vuint32mf2_t): Ditto.
49501         (vuint32m1_t): Ditto.
49502         (vuint32m2_t): Ditto.
49503         (vuint32m4_t): Ditto.
49504         (vuint32m8_t): Ditto.
49505         (vuint64m1_t): Ditto.
49506         (vuint64m2_t): Ditto.
49507         (vuint64m4_t): Ditto.
49508         (vuint64m8_t): Ditto.
49509         (vint8mf4_t): Ditto.
49510         (vint8mf2_t): Ditto.
49511         (vint8m1_t): Ditto.
49512         (vint8m2_t): Ditto.
49513         (vint8m4_t): Ditto.
49514         (vint8m8_t): Ditto.
49515         (vuint8mf4_t): Ditto.
49516         (vuint8mf2_t): Ditto.
49517         (vuint8m1_t): Ditto.
49518         (vuint8m2_t): Ditto.
49519         (vuint8m4_t): Ditto.
49520         (vuint8m8_t): Ditto.
49521         (vint8mf8_t): Ditto.
49522         (vuint8mf8_t): Ditto.
49523         (vfloat32mf2_t): Ditto.
49524         (vfloat32m1_t): Ditto.
49525         (vfloat32m2_t): Ditto.
49526         (vfloat32m4_t): Ditto.
49527         (vfloat64m1_t): Ditto.
49528         (vfloat64m2_t): Ditto.
49529         (vfloat64m4_t): Ditto.
49530         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
49531         (DEF_RVV_EEW8_INTERPRET_OPS): Ditto.
49532         (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
49533         (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
49534         (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
49535         (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
49536         (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
49537         (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
49538         (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
49539         (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
49540         (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
49541         (DEF_RVV_LMUL1_OPS): Ditto.
49542         (DEF_RVV_LMUL2_OPS): Ditto.
49543         (DEF_RVV_LMUL4_OPS): Ditto.
49544         (DEF_RVV_TYPE_INDEX): Ditto.
49545         (required_extensions_p): Adapt for new intrinsic support/
49546         (get_required_extensions): New function.
49547         (check_required_extensions): Ditto.
49548         (unsigned_base_type_p): Remove.
49549         (rvv_arg_type_info::get_scalar_ptr_type): New function.
49550         (get_mode_for_bitsize): Remove.
49551         (rvv_arg_type_info::get_scalar_const_ptr_type): New function.
49552         (rvv_arg_type_info::get_base_vector_type): Ditto.
49553         (rvv_arg_type_info::get_function_type_index): Ditto.
49554         (DEF_RVV_BASE_TYPE): New def.
49555         (function_builder::apply_predication): New class.
49556         (function_expander::mask_mode): Ditto.
49557         (function_checker::function_checker): Ditto.
49558         (function_checker::report_non_ice): Ditto.
49559         (function_checker::report_out_of_range): Ditto.
49560         (function_checker::require_immediate): Ditto.
49561         (function_checker::require_immediate_range): Ditto.
49562         (function_checker::check): Ditto.
49563         (check_builtin_call): Ditto.
49564         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): New def.
49565         (DEF_RVV_BASE_TYPE): Ditto.
49566         (DEF_RVV_TYPE_INDEX): Ditto.
49567         (vbool64_t): Ditto.
49568         (vbool32_t): Ditto.
49569         (vbool16_t): Ditto.
49570         (vbool8_t): Ditto.
49571         (vbool4_t): Ditto.
49572         (vbool2_t): Ditto.
49573         (vbool1_t): Ditto.
49574         (vuint8mf8_t): Ditto.
49575         (vuint8mf4_t): Ditto.
49576         (vuint8mf2_t): Ditto.
49577         (vuint8m1_t): Ditto.
49578         (vuint8m2_t): Ditto.
49579         (vint8m4_t): Ditto.
49580         (vuint8m4_t): Ditto.
49581         (vint8m8_t): Ditto.
49582         (vuint8m8_t): Ditto.
49583         (vint16mf4_t): Ditto.
49584         (vuint16mf2_t): Ditto.
49585         (vuint16m1_t): Ditto.
49586         (vuint16m2_t): Ditto.
49587         (vuint16m4_t): Ditto.
49588         (vuint16m8_t): Ditto.
49589         (vint32mf2_t): Ditto.
49590         (vuint32m1_t): Ditto.
49591         (vuint32m2_t): Ditto.
49592         (vuint32m4_t): Ditto.
49593         (vuint32m8_t): Ditto.
49594         (vuint64m1_t): Ditto.
49595         (vuint64m2_t): Ditto.
49596         (vuint64m4_t): Ditto.
49597         (vuint64m8_t): Ditto.
49598         (vfloat32mf2_t): Ditto.
49599         (vfloat32m1_t): Ditto.
49600         (vfloat32m2_t): Ditto.
49601         (vfloat32m4_t): Ditto.
49602         (vfloat32m8_t): Ditto.
49603         (vfloat64m1_t): Ditto.
49604         (vfloat64m4_t): Ditto.
49605         (vector): Move it def.
49606         (scalar): Ditto.
49607         (mask): Ditto.
49608         (signed_vector): Ditto.
49609         (unsigned_vector): Ditto.
49610         (unsigned_scalar): Ditto.
49611         (vector_ptr): Ditto.
49612         (scalar_ptr): Ditto.
49613         (scalar_const_ptr): Ditto.
49614         (void): Ditto.
49615         (size): Ditto.
49616         (ptrdiff): Ditto.
49617         (unsigned_long): Ditto.
49618         (long): Ditto.
49619         (eew8_index): Ditto.
49620         (eew16_index): Ditto.
49621         (eew32_index): Ditto.
49622         (eew64_index): Ditto.
49623         (shift_vector): Ditto.
49624         (double_trunc_vector): Ditto.
49625         (quad_trunc_vector): Ditto.
49626         (oct_trunc_vector): Ditto.
49627         (double_trunc_scalar): Ditto.
49628         (double_trunc_signed_vector): Ditto.
49629         (double_trunc_unsigned_vector): Ditto.
49630         (double_trunc_unsigned_scalar): Ditto.
49631         (double_trunc_float_vector): Ditto.
49632         (float_vector): Ditto.
49633         (lmul1_vector): Ditto.
49634         (widen_lmul1_vector): Ditto.
49635         (eew8_interpret): Ditto.
49636         (eew16_interpret): Ditto.
49637         (eew32_interpret): Ditto.
49638         (eew64_interpret): Ditto.
49639         (vlmul_ext_x2): Ditto.
49640         (vlmul_ext_x4): Ditto.
49641         (vlmul_ext_x8): Ditto.
49642         (vlmul_ext_x16): Ditto.
49643         (vlmul_ext_x32): Ditto.
49644         (vlmul_ext_x64): Ditto.
49645         * config/riscv/riscv-vector-builtins.h (DEF_RVV_BASE_TYPE): New def.
49646         (struct function_type_info): New function.
49647         (struct rvv_arg_type_info): Ditto.
49648         (class function_checker): New class.
49649         (rvv_arg_type_info::get_scalar_type): New function.
49650         (rvv_arg_type_info::get_vector_type): Ditto.
49651         (function_expander::ret_mode): New function.
49652         (function_checker::arg_mode): Ditto.
49653         (function_checker::ret_mode): Ditto.
49654         * config/riscv/t-riscv: Add generator.
49655         * config/riscv/vector-iterators.md: New iterators.
49656         * config/riscv/vector.md (vundefined<mode>): New pattern.
49657         (@vundefined<mode>): Ditto.
49658         (@vreinterpret<mode>): Ditto.
49659         (@vlmul_extx2<mode>): Ditto.
49660         (@vlmul_extx4<mode>): Ditto.
49661         (@vlmul_extx8<mode>): Ditto.
49662         (@vlmul_extx16<mode>): Ditto.
49663         (@vlmul_extx32<mode>): Ditto.
49664         (@vlmul_extx64<mode>): Ditto.
49665         (*vlmul_extx2<mode>): Ditto.
49666         (*vlmul_extx4<mode>): Ditto.
49667         (*vlmul_extx8<mode>): Ditto.
49668         (*vlmul_extx16<mode>): Ditto.
49669         (*vlmul_extx32<mode>): Ditto.
49670         (*vlmul_extx64<mode>): Ditto.
49671         * config/riscv/genrvv-type-indexer.cc: New file.
49673 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
49675         * config/riscv/riscv-protos.h (enum vlen_enum): New enum.
49676         (slide1_sew64_helper): New function.
49677         * config/riscv/riscv-v.cc (compute_vlmax): Ditto.
49678         (get_unknown_min_value): Ditto.
49679         (force_vector_length_operand): Ditto.
49680         (gen_no_side_effects_vsetvl_rtx): Ditto.
49681         (get_vl_x2_rtx): Ditto.
49682         (slide1_sew64_helper): Ditto.
49683         * config/riscv/riscv-vector-builtins-bases.cc (class slideop): New class.
49684         (class vrgather): Ditto.
49685         (class vrgatherei16): Ditto.
49686         (class vcompress): Ditto.
49687         (BASE): Ditto.
49688         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
49689         * config/riscv/riscv-vector-builtins-functions.def (vslideup): Ditto.
49690         (vslidedown): Ditto.
49691         (vslide1up): Ditto.
49692         (vslide1down): Ditto.
49693         (vfslide1up): Ditto.
49694         (vfslide1down): Ditto.
49695         (vrgather): Ditto.
49696         (vrgatherei16): Ditto.
49697         (vcompress): Ditto.
49698         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EI16_OPS): New macro.
49699         (vint8mf8_t): Ditto.
49700         (vint8mf4_t): Ditto.
49701         (vint8mf2_t): Ditto.
49702         (vint8m1_t): Ditto.
49703         (vint8m2_t): Ditto.
49704         (vint8m4_t): Ditto.
49705         (vint16mf4_t): Ditto.
49706         (vint16mf2_t): Ditto.
49707         (vint16m1_t): Ditto.
49708         (vint16m2_t): Ditto.
49709         (vint16m4_t): Ditto.
49710         (vint16m8_t): Ditto.
49711         (vint32mf2_t): Ditto.
49712         (vint32m1_t): Ditto.
49713         (vint32m2_t): Ditto.
49714         (vint32m4_t): Ditto.
49715         (vint32m8_t): Ditto.
49716         (vint64m1_t): Ditto.
49717         (vint64m2_t): Ditto.
49718         (vint64m4_t): Ditto.
49719         (vint64m8_t): Ditto.
49720         (vuint8mf8_t): Ditto.
49721         (vuint8mf4_t): Ditto.
49722         (vuint8mf2_t): Ditto.
49723         (vuint8m1_t): Ditto.
49724         (vuint8m2_t): Ditto.
49725         (vuint8m4_t): Ditto.
49726         (vuint16mf4_t): Ditto.
49727         (vuint16mf2_t): Ditto.
49728         (vuint16m1_t): Ditto.
49729         (vuint16m2_t): Ditto.
49730         (vuint16m4_t): Ditto.
49731         (vuint16m8_t): Ditto.
49732         (vuint32mf2_t): Ditto.
49733         (vuint32m1_t): Ditto.
49734         (vuint32m2_t): Ditto.
49735         (vuint32m4_t): Ditto.
49736         (vuint32m8_t): Ditto.
49737         (vuint64m1_t): Ditto.
49738         (vuint64m2_t): Ditto.
49739         (vuint64m4_t): Ditto.
49740         (vuint64m8_t): Ditto.
49741         (vfloat32mf2_t): Ditto.
49742         (vfloat32m1_t): Ditto.
49743         (vfloat32m2_t): Ditto.
49744         (vfloat32m4_t): Ditto.
49745         (vfloat32m8_t): Ditto.
49746         (vfloat64m1_t): Ditto.
49747         (vfloat64m2_t): Ditto.
49748         (vfloat64m4_t): Ditto.
49749         (vfloat64m8_t): Ditto.
49750         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_EI16_OPS): Ditto.
49751         * config/riscv/riscv.md: Adjust RVV instruction types.
49752         * config/riscv/vector-iterators.md (down): New iterator.
49753         (=vd,vr): New attribute.
49754         (UNSPEC_VSLIDE1UP): New unspec.
49755         * config/riscv/vector.md (@pred_slide<ud><mode>): New pattern.
49756         (*pred_slide<ud><mode>): Ditto.
49757         (*pred_slide<ud><mode>_extended): Ditto.
49758         (@pred_gather<mode>): Ditto.
49759         (@pred_gather<mode>_scalar): Ditto.
49760         (@pred_gatherei16<mode>): Ditto.
49761         (@pred_compress<mode>): Ditto.
49763 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
49765         * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
49767 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
49769         * config/riscv/constraints.md (Wb1): New constraint.
49770         * config/riscv/predicates.md
49771         (vector_least_significant_set_mask_operand): New predicate.
49772         (vector_broadcast_mask_operand): Ditto.
49773         * config/riscv/riscv-protos.h (enum vlmul_type): Adjust.
49774         (gen_scalar_move_mask): New function.
49775         * config/riscv/riscv-v.cc (gen_scalar_move_mask): Ditto.
49776         * config/riscv/riscv-vector-builtins-bases.cc (class vmv): New class.
49777         (class vmv_s): Ditto.
49778         (BASE): Ditto.
49779         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
49780         * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
49781         (vmv_s): Ditto.
49782         (vfmv_f): Ditto.
49783         (vfmv_s): Ditto.
49784         * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
49785         (SHAPE): Ditto.
49786         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
49787         * config/riscv/riscv-vector-builtins.cc (function_expander::mask_mode): Ditto.
49788         (function_expander::use_exact_insn): New function.
49789         (function_expander::use_contiguous_load_insn): New function.
49790         (function_expander::use_contiguous_store_insn): New function.
49791         (function_expander::use_ternop_insn): New function.
49792         (function_expander::use_widen_ternop_insn): New function.
49793         (function_expander::use_scalar_move_insn): New function.
49794         * config/riscv/riscv-vector-builtins.def (s): New operand suffix.
49795         * config/riscv/riscv-vector-builtins.h
49796         (function_expander::add_scalar_move_mask_operand): New class.
49797         * config/riscv/riscv-vsetvl.cc (ignore_vlmul_insn_p): New function.
49798         (scalar_move_insn_p): Ditto.
49799         (has_vsetvl_killed_avl_p): Ditto.
49800         (anticipatable_occurrence_p): Ditto.
49801         (insert_vsetvl): Ditto.
49802         (get_vl_vtype_info): Ditto.
49803         (calculate_sew): Ditto.
49804         (calculate_vlmul): Ditto.
49805         (incompatible_avl_p): Ditto.
49806         (different_sew_p): Ditto.
49807         (different_lmul_p): Ditto.
49808         (different_ratio_p): Ditto.
49809         (different_tail_policy_p): Ditto.
49810         (different_mask_policy_p): Ditto.
49811         (possible_zero_avl_p): Ditto.
49812         (first_ratio_invalid_for_second_sew_p): Ditto.
49813         (first_ratio_invalid_for_second_lmul_p): Ditto.
49814         (second_ratio_invalid_for_first_sew_p): Ditto.
49815         (second_ratio_invalid_for_first_lmul_p): Ditto.
49816         (second_sew_less_than_first_sew_p): Ditto.
49817         (first_sew_less_than_second_sew_p): Ditto.
49818         (compare_lmul): Ditto.
49819         (second_lmul_less_than_first_lmul_p): Ditto.
49820         (first_lmul_less_than_second_lmul_p): Ditto.
49821         (first_ratio_less_than_second_ratio_p): Ditto.
49822         (second_ratio_less_than_first_ratio_p): Ditto.
49823         (DEF_INCOMPATIBLE_COND): Ditto.
49824         (greatest_sew): Ditto.
49825         (first_sew): Ditto.
49826         (second_sew): Ditto.
49827         (first_vlmul): Ditto.
49828         (second_vlmul): Ditto.
49829         (first_ratio): Ditto.
49830         (second_ratio): Ditto.
49831         (vlmul_for_first_sew_second_ratio): Ditto.
49832         (ratio_for_second_sew_first_vlmul): Ditto.
49833         (DEF_SEW_LMUL_FUSE_RULE): Ditto.
49834         (always_unavailable): Ditto.
49835         (avl_unavailable_p): Ditto.
49836         (sew_unavailable_p): Ditto.
49837         (lmul_unavailable_p): Ditto.
49838         (ge_sew_unavailable_p): Ditto.
49839         (ge_sew_lmul_unavailable_p): Ditto.
49840         (ge_sew_ratio_unavailable_p): Ditto.
49841         (DEF_UNAVAILABLE_COND): Ditto.
49842         (same_sew_lmul_demand_p): Ditto.
49843         (propagate_avl_across_demands_p): Ditto.
49844         (reg_available_p): Ditto.
49845         (avl_info::has_non_zero_avl): Ditto.
49846         (vl_vtype_info::has_non_zero_avl): Ditto.
49847         (vector_insn_info::operator>=): Refactor.
49848         (vector_insn_info::parse_insn): Adjust for scalar move.
49849         (vector_insn_info::demand_vl_vtype): Remove.
49850         (vector_insn_info::compatible_p): New function.
49851         (vector_insn_info::compatible_avl_p): Ditto.
49852         (vector_insn_info::compatible_vtype_p): Ditto.
49853         (vector_insn_info::available_p): Ditto.
49854         (vector_insn_info::merge): Ditto.
49855         (vector_insn_info::fuse_avl): Ditto.
49856         (vector_insn_info::fuse_sew_lmul): Ditto.
49857         (vector_insn_info::fuse_tail_policy): Ditto.
49858         (vector_insn_info::fuse_mask_policy): Ditto.
49859         (vector_insn_info::dump): Ditto.
49860         (vector_infos_manager::release): Ditto.
49861         (pass_vsetvl::compute_local_backward_infos): Adjust for scalar move support.
49862         (pass_vsetvl::get_backward_fusion_type): Adjust for scalar move support.
49863         (pass_vsetvl::hard_empty_block_p): Ditto.
49864         (pass_vsetvl::backward_demand_fusion): Ditto.
49865         (pass_vsetvl::forward_demand_fusion): Ditto.
49866         (pass_vsetvl::refine_vsetvls): Ditto.
49867         (pass_vsetvl::cleanup_vsetvls): Ditto.
49868         (pass_vsetvl::commit_vsetvls): Ditto.
49869         (pass_vsetvl::propagate_avl): Ditto.
49870         * config/riscv/riscv-vsetvl.h (enum demand_status): New class.
49871         (struct demands_pair): Ditto.
49872         (struct demands_cond): Ditto.
49873         (struct demands_fuse_rule): Ditto.
49874         * config/riscv/vector-iterators.md: New iterator.
49875         * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
49876         (*pred_broadcast<mode>): Ditto.
49877         (*pred_broadcast<mode>_extended_scalar): Ditto.
49878         (@pred_extract_first<mode>): Ditto.
49879         (*pred_extract_first<mode>): Ditto.
49880         (@pred_extract_first_trunc<mode>): Ditto.
49881         * config/riscv/riscv-vsetvl.def: New file.
49883 2023-03-05  Lin Sinan  <sinan.lin@linux.alibaba.com>
49885         * config/riscv/bitmanip.md: allow 0 constant in max/min
49886         pattern.
49888 2023-03-05  Lin Sinan  <sinan.lin@linux.alibaba.com>
49890         * config/riscv/bitmanip.md: Fix wrong index in the check.
49892 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
49894         PR middle-end/109006
49895         * vec.cc (test_auto_alias): Adjust comment for removal of
49896         m_vecdata.
49897         * read-rtl-function.cc (function_reader::parse_block): Likewise.
49898         * gdbhooks.py: Likewise.
49900 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
49902         PR testsuite/108973
49903         * selftest-diagnostic.cc
49904         (test_diagnostic_context::test_diagnostic_context): Set
49905         caret_max_width to 80.
49907 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
49909         * gimple-ssa-warn-access.cc
49910         (pass_waccess::check_dangling_stores): Skip non-stores.
49912 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
49914         * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
49915         after vmsr and vmrs, and lower the case of P0.
49917 2023-03-03  Jonathan Wakely  <jwakely@redhat.com>
49919         PR middle-end/109006
49920         * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
49922 2023-03-03  Jonathan Wakely  <jwakely@redhat.com>
49924         PR middle-end/109006
49925         * gdbhooks.py (VecPrinter): Adjust for new vec layout.
49927 2023-03-03  Jakub Jelinek  <jakub@redhat.com>
49929         PR c/108986
49930         * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
49931         Return immediately if OPT_Wnonnull or OPT_Wstringop_overflow_ is
49932         suppressed on stmt.  For [static %E] warning, print access_nelts
49933         rather than access_size.  Fix up comment wording.
49935 2023-03-03  Robin Dapp  <rdapp@linux.ibm.com>
49937         * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
49938         arch14 instead of z16.
49940 2023-03-03  Anthony Green  <green@moxielogic.com>
49942         * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
49944 2023-03-03  Anthony Green  <green@moxielogic.com>
49946         * config/moxie/constraints.md (A, B, W): Change
49947         define_constraint to define_memory_constraint.
49949 2023-03-03  Xi Ruoyao  <xry111@xry111.site>
49951         * toplev.cc (process_options): Fix the spelling of
49952         "-fstack-clash-protection".
49954 2023-03-03  Richard Biener  <rguenther@suse.de>
49956         PR tree-optimization/109002
49957         * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
49958         PHI-translate ANTIC_IN.
49960 2023-03-03  Jakub Jelinek  <jakub@redhat.com>
49962         PR tree-optimization/108988
49963         * gimple-fold.cc (gimple_fold_builtin_fputs): Fold len to
49964         size_type_node before passing it as argument to fwrite.  Formatting
49965         fixes.
49967 2023-03-03  Richard Biener  <rguenther@suse.de>
49969         PR target/108738
49970         * config/i386/i386.opt (--param x86-stv-max-visits): New param.
49971         * doc/invoke.texi (--param x86-stv-max-visits): Document it.
49972         * config/i386/i386-features.h (scalar_chain::max_visits): New.
49973         (scalar_chain::build): Add bitmap parameter, return boolean.
49974         (scalar_chain::add_insn): Likewise.
49975         (scalar_chain::analyze_register_chain): Likewise.
49976         * config/i386/i386-features.cc (scalar_chain::scalar_chain):
49977         Initialize max_visits.
49978         (scalar_chain::analyze_register_chain): When we exhaust
49979         max_visits, abort.  Also abort when running into any
49980         disallowed insn.
49981         (scalar_chain::add_insn): Propagate abort.
49982         (scalar_chain::build): Likewise.  When aborting amend
49983         the set of disallowed insn with the insns set.
49984         (convert_scalars_to_vector): Adjust.  Do not convert aborted
49985         chains.
49987 2023-03-03  Richard Biener  <rguenther@suse.de>
49989         PR debug/108772
49990         * dwarf2out.cc (dwarf2out_late_global_decl): Do not
49991         generate a DIE for a function scope static.
49993 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
49995         * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
49997 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
49999         PR target/108883
50000         * target.h (emit_support_tinfos_callback): New typedef.
50001         * targhooks.h (default_emit_support_tinfos): Declare.
50002         * targhooks.cc (default_emit_support_tinfos): New function.
50003         * target.def (emit_support_tinfos): New target hook.
50004         * doc/tm.texi.in (emit_support_tinfos): Document it.
50005         * doc/tm.texi: Regenerated.
50006         * config/i386/i386.cc (ix86_emit_support_tinfos): New function.
50007         (TARGET_EMIT_SUPPORT_TINFOS): Redefine.
50009 2023-03-02  Vladimir N. Makarov  <vmakarov@redhat.com>
50011         * ira-costs.cc: Include print-rtl.h.
50012         (record_reg_classes, scan_one_insn): Add code to print debug info.
50013         (record_operand_costs): Find and use smaller cost for hard reg
50014         move.
50016 2023-03-02  Kwok Cheung Yeung  <kcy@codesourcery.com>
50017             Paul-Antoine Arras  <pa@codesourcery.com>
50019         * builtins.cc (mathfn_built_in_explicit): New.
50020         * config/gcn/gcn.cc: Include case-cfn-macros.h.
50021         (mathfn_built_in_explicit): Add prototype.
50022         (gcn_vectorize_builtin_vectorized_function): New.
50023         (gcn_libc_has_function): New.
50024         (TARGET_LIBC_HAS_FUNCTION): Define.
50025         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
50027 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
50029         PR tree-optimization/108979
50030         * tree-vect-stmts.cc (vectorizable_operation): Don't mask
50031         operations on invariants.
50033 2023-03-02  Robin Dapp  <rdapp@linux.ibm.com>
50035         * config/s390/predicates.md (vll_bias_operand): Add -1 bias.
50036         * config/s390/s390.cc (s390_option_override_internal): Make
50037         partial vector usage the default from z13 on.
50038         * config/s390/vector.md (len_load_v16qi): Add.
50039         (len_store_v16qi): Add.
50041 2023-03-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
50043         * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
50044         of constant 0 offset.
50046 2023-03-02  Robert Suchanek  <robert.suchanek@imgtec.com>
50048         * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
50049         instead of long.
50050         * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
50052 2023-03-02  Junxian Zhu  <zhujunxian@oss.cipunited.com>
50054         * config.gcc: add -with-{no-}msa build option.
50055         * config/mips/mips.h: Likewise.
50056         * doc/install.texi: Likewise.
50058 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
50060         PR tree-optimization/108603
50061         * explow.cc (convert_memory_address_addr_space_1): Only wrap
50062         the result of a recursive call in a CONST if no instructions
50063         were emitted.
50065 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
50067         PR tree-optimization/108430
50068         * tree-vect-stmts.cc (vectorizable_condition): Fix handling
50069         of inverted condition.
50071 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
50073         PR c++/108934
50074         * fold-const.cc (native_interpret_expr) <case REAL_CST>: Before memcmp
50075         comparison copy the bytes from ptr to a temporary buffer and clearing
50076         padding bits in there.
50078 2023-03-01  Tobias Burnus  <tobias@codesourcery.com>
50080         PR middle-end/108545
50081         * gimplify.cc (struct tree_operand_hash_no_se): New.
50082         (omp_index_mapping_groups_1, omp_index_mapping_groups,
50083         omp_reindex_mapping_groups, omp_mapped_by_containing_struct,
50084         omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
50085         oacc_resolve_clause_dependencies, omp_build_struct_sibling_lists,
50086         gimplify_scan_omp_clauses): Use tree_operand_hash_no_se instead
50087         of tree_operand_hash.
50089 2023-03-01  LIU Hao  <lh_mouse@126.com>
50091         PR pch/14940
50092         * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
50093         Remove the size limit `pch_VA_max_size`
50095 2023-03-01  Tobias Burnus  <tobias@codesourcery.com>
50097         PR middle-end/108546
50098         * omp-low.cc (lower_omp_target): Remove optional handling
50099         on the receiver side, i.e. inside target (data), for
50100         use_device_ptr.
50102 2023-03-01  Jakub Jelinek  <jakub@redhat.com>
50104         PR debug/108967
50105         * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
50106         and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
50108 2023-03-01  Richard Biener  <rguenther@suse.de>
50110         PR tree-optimization/108970
50111         * tree-vect-loop-manip.cc (slpeel_can_duplicate_loop_p):
50112         Check we can copy the BBs.
50113         (slpeel_tree_duplicate_loop_to_edge_cfg): Avoid redundant
50114         check.
50115         (vect_do_peeling): Streamline error handling.
50117 2023-03-01  Richard Biener  <rguenther@suse.de>
50119         PR tree-optimization/108950
50120         * tree-vect-patterns.cc (vect_recog_widen_sum_pattern):
50121         Check oprnd0 is defined in the loop.
50122         * tree-vect-loop.cc (vectorizable_reduction): Record all
50123         operands vector types, compute that of invariants and
50124         properly update their SLP nodes.
50126 2023-03-01  Kewen Lin  <linkw@linux.ibm.com>
50128         PR target/108240
50129         * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
50130         implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
50132 2023-02-28  Qing Zhao  <qing.zhao@oracle.com>
50134         PR middle-end/107411
50135         PR middle-end/107411
50136         * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
50137         xasprintf.
50138         * tree-ssa-uninit.cc (warn_uninit): Handle the case when the
50139         LHS varaible of a .DEFERRED_INIT call doesn't have a DECL_NAME.
50141 2023-02-28  Jakub Jelinek  <jakub@redhat.com>
50143         PR sanitizer/108894
50144         * ubsan.cc (ubsan_expand_bounds_ifn): Emit index >= bound
50145         comparison rather than index > bound.
50146         * gimple-fold.cc (gimple_fold_call): Use tree_int_cst_lt
50147         rather than tree_int_cst_le for IFN_UBSAN_BOUND comparison.
50148         * doc/invoke.texi (-fsanitize=bounds): Document that whether
50149         flexible array member-like arrays are instrumented or not depends
50150         on -fstrict-flex-arrays* options of strict_flex_array attributes.
50151         (-fsanitize=bounds-strict): Document that flexible array members
50152         are not instrumented.
50154 2023-02-27  Uroš Bizjak  <ubizjak@gmail.com>
50156         PR target/108922
50157         Revert:
50158         * config/i386/i386.md (fmodxf3): Enable for flag_finite_math_only only.
50159         (fmod<mode>3): Ditto.
50160         (fpremxf4_i387): Ditto.
50161         (reminderxf3): Ditto.
50162         (reminder<mode>3): Ditto.
50163         (fprem1xf4_i387): Ditto.
50165 2023-02-27  Roger Sayle  <roger@nextmovesoftware.com>
50167         * simplify-rtx.cc (simplify_unary_operation_1) <case FFS>: Avoid
50168         generating FFS with mismatched operand and result modes, by using
50169         an explicit SIGN_EXTEND/ZERO_EXTEND.
50170         <case POPCOUNT>: Likewise, for POPCOUNT of ZERO_EXTEND.
50171         <case PARITY>: Likewise, for PARITY of {ZERO,SIGN}_EXTEND.
50173 2023-02-27  Patrick Palka  <ppalka@redhat.com>
50175         * hash-table.h (gt_pch_nx(hash_table<D>)): Remove static.
50176         * lra-int.h (lra_change_class): Likewise.
50177         * recog.h (which_op_alt): Likewise.
50178         * sel-sched-ir.h (sel_bb_empty_or_nop_p): Declare inline
50179         instead of static.
50181 2023-02-27  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
50183         * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
50184         New prototype.
50185         * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
50186         New function.
50187         * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
50188         * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
50190 2023-02-27  Max Filippov  <jcmvbkbc@gmail.com>
50192         * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
50193         (xtensa_get_config_v3): New functions.
50195 2023-02-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
50197         * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
50199 2023-02-27  Lulu Cheng  <chenglulu@loongson.cn>
50201         * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
50202         the macro to 0x1000000000.
50204 2023-02-25  Gaius Mulley  <gaiusmod2@gmail.com>
50206         PR modula2/108261
50207         * doc/gm2.texi (-fm2-pathname): New option documented.
50208         (-fm2-pathnameI): New option documented.
50209         (-fm2-prefix=): New option documented.
50210         (-fruntime-modules=): Update default module list.
50212 2023-02-25  Max Filippov  <jcmvbkbc@gmail.com>
50214         PR target/108919
50215         * config/xtensa/xtensa-protos.h
50216         (xtensa_prepare_expand_call): Rename to xtensa_expand_call.
50217         * config/xtensa/xtensa.cc (xtensa_prepare_expand_call): Rename
50218         to xtensa_expand_call.
50219         (xtensa_expand_call): Emit the call and add a clobber expression
50220         for the static chain to it in case of windowed ABI.
50221         * config/xtensa/xtensa.md (call, call_value, sibcall)
50222         (sibcall_value): Call xtensa_expand_call and complete expansion
50223         right after that call.
50225 2023-02-24  Richard Biener  <rguenther@suse.de>
50227         * vec.h (vec<T, A, vl_embed>::m_vecdata): Remove.
50228         (vec<T, A, vl_embed>::m_vecpfx): Align as T to avoid
50229         changing alignment of vec<T, A, vl_embed> and simplifying
50230         address.
50231         (vec<T, A, vl_embed>::address): Compute as this + 1.
50232         (vec<T, A, vl_embed>::embedded_size): Use sizeof the
50233         vector instead of the offset of the m_vecdata member.
50234         (auto_vec<T, N>::m_data): Turn storage into
50235         uninitialized unsigned char.
50236         (auto_vec<T, N>::auto_vec): Allow allocation of one
50237         stack member.  Initialize m_vec in a special way to
50238         avoid later stringop overflow diagnostics.
50239         * vec.cc (test_auto_alias): New.
50240         (vec_cc_tests): Call it.
50242 2023-02-24  Richard Biener  <rguenther@suse.de>
50244         * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
50245         take a const reference to the object, use address to
50246         access data.
50247         (vec<T, A, vl_embed>::contains): Use address to access data.
50248         (vec<T, A, vl_embed>::operator[]): Use address instead of
50249         m_vecdata to access data.
50250         (vec<T, A, vl_embed>::iterate): Likewise.
50251         (vec<T, A, vl_embed>::copy): Likewise.
50252         (vec<T, A, vl_embed>::quick_push): Likewise.
50253         (vec<T, A, vl_embed>::pop): Likewise.
50254         (vec<T, A, vl_embed>::quick_insert): Likewise.
50255         (vec<T, A, vl_embed>::ordered_remove): Likewise.
50256         (vec<T, A, vl_embed>::unordered_remove): Likewise.
50257         (vec<T, A, vl_embed>::block_remove): Likewise.
50258         (vec<T, A, vl_heap>::address): Likewise.
50260 2023-02-24  Martin Liska  <mliska@suse.cz>
50262         PR sanitizer/108834
50263         * asan.cc (asan_add_global): Use proper TU name for normal
50264         global variables (and aux_base_name for the artificial one).
50266 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
50268         * config/i386/i386-builtin.def: Update description of BDESC
50269         and BDESC_FIRST in file comment to include mask2.
50271 2023-02-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
50273         * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
50275 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
50277         PR middle-end/108854
50278         * cgraphclones.cc (duplicate_thunk_for_node): If no parameter
50279         changes are needed, copy at least DECL_ARGUMENTS PARM_DECL
50280         nodes and adjust their DECL_CONTEXT.
50282 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
50284         PR target/108881
50285         * config/i386/i386-builtin.def (__builtin_ia32_cvtne2ps2bf16_v16bf,
50286         __builtin_ia32_cvtne2ps2bf16_v16bf_mask,
50287         __builtin_ia32_cvtne2ps2bf16_v16bf_maskz,
50288         __builtin_ia32_cvtne2ps2bf16_v8bf,
50289         __builtin_ia32_cvtne2ps2bf16_v8bf_mask,
50290         __builtin_ia32_cvtne2ps2bf16_v8bf_maskz,
50291         __builtin_ia32_cvtneps2bf16_v8sf_mask,
50292         __builtin_ia32_cvtneps2bf16_v8sf_maskz,
50293         __builtin_ia32_cvtneps2bf16_v4sf_mask,
50294         __builtin_ia32_cvtneps2bf16_v4sf_maskz,
50295         __builtin_ia32_dpbf16ps_v8sf, __builtin_ia32_dpbf16ps_v8sf_mask,
50296         __builtin_ia32_dpbf16ps_v8sf_maskz, __builtin_ia32_dpbf16ps_v4sf,
50297         __builtin_ia32_dpbf16ps_v4sf_mask,
50298         __builtin_ia32_dpbf16ps_v4sf_maskz): Require also
50299         OPTION_MASK_ISA_AVX512VL.
50301 2023-02-24  Sebastian Huber  <sebastian.huber@embedded-brains.de>
50303         * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
50304         Add non-compact 32-bit multilibs.
50306 2023-02-24  Junxian Zhu  <zhujunxian@oss.cipunited.com>
50308         * config/mips/mips.md (*clo<mode>2): New pattern.
50310 2023-02-24  Prachi Godbole  <prachi.godbole@imgtec.com>
50312         * config/mips/mips.h (machine_function): New variable
50313         use_hazard_barrier_return_p.
50314         * config/mips/mips.md (UNSPEC_JRHB): New unspec.
50315         (mips_hb_return_internal): New insn pattern.
50316         * config/mips/mips.cc (mips_attribute_table): Add attribute
50317         use_hazard_barrier_return.
50318         (mips_use_hazard_barrier_return_p): New static function.
50319         (mips_function_attr_inlinable_p): Likewise.
50320         (mips_compute_frame_info): Set use_hazard_barrier_return_p.
50321         Emit error for unsupported architecture choice.
50322         (mips_function_ok_for_sibcall, mips_can_use_return_insn):
50323         Return false for use_hazard_barrier_return.
50324         (mips_expand_epilogue): Emit hazard barrier return.
50325         * doc/extend.texi: Document use_hazard_barrier_return.
50327 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
50329         * config/xtensa/xtensa-dynconfig.cc (config.h, system.h)
50330         (coretypes.h, diagnostic.h, intl.h): Use "..." instead of <...>
50331         for the gcc-internal headers.
50333 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
50335         * config/xtensa/t-xtensa (xtensa-dynconfig.o): Use $(COMPILE)
50336         and $(POSTCOMPILE) instead of manual dependency listing.
50337         * config/xtensa/xtensa-dynconfig.c: Rename to ...
50338         * config/xtensa/xtensa-dynconfig.cc: ... this.
50340 2023-02-23  Arsen Arsenović  <arsen@aarsen.me>
50342         * doc/cfg.texi: Reorder index entries around @items.
50343         * doc/cpp.texi: Ditto.
50344         * doc/cppenv.texi: Ditto.
50345         * doc/cppopts.texi: Ditto.
50346         * doc/generic.texi: Ditto.
50347         * doc/install.texi: Ditto.
50348         * doc/extend.texi: Ditto.
50349         * doc/invoke.texi: Ditto.
50350         * doc/md.texi: Ditto.
50351         * doc/rtl.texi: Ditto.
50352         * doc/tm.texi.in: Ditto.
50353         * doc/trouble.texi: Ditto.
50354         * doc/tm.texi: Regenerate.
50356 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
50358         * config/xtensa/xtensa.md: New peephole2 pattern that eliminates
50359         the occurrence of general-purpose register used only once and for
50360         transferring intermediate value.
50362 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
50364         * config/xtensa/xtensa.cc (machine_function): Add new member
50365         'eliminated_callee_saved_bmp'.
50366         (xtensa_can_eliminate_callee_saved_reg_p): New function to
50367         determine whether the register can be eliminated or not.
50368         (xtensa_expand_prologue): Add invoking the above function and
50369         elimination the use of callee-saved register by using its stack
50370         slot through the stack pointer (or the frame pointer if needed)
50371         directly.
50372         (xtensa_expand_prologue): Modify to not emit register restoration
50373         insn from its stack slot if the register is already eliminated.
50375 2023-02-23  Jakub Jelinek  <jakub@redhat.com>
50377         PR translation/108890
50378         * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
50379         around fatal_error format strings.
50381 2023-02-23  Richard Biener  <rguenther@suse.de>
50383         * tree-ssa-structalias.cc (handle_lhs_call): Do not
50384         re-create rhsc, only truncate it.
50386 2023-02-23  Jakub Jelinek  <jakub@redhat.com>
50388         PR middle-end/106258
50389         * ipa-prop.cc (try_make_edge_direct_virtual_call): Handle
50390         BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
50392 2023-02-23  Richard Biener  <rguenther@suse.de>
50394         * tree-if-conv.cc (tree_if_conversion): Properly manage
50395         memory of refs and the contained data references.
50397 2023-02-23  Richard Biener  <rguenther@suse.de>
50399         PR tree-optimization/108888
50400         * tree-if-conv.cc (if_convertible_stmt_p): Set PLF_2 on
50401         calls to predicate.
50402         (predicate_statements): Only predicate calls with PLF_2.
50404 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
50406         * config/xtensa/xtensa.md
50407         (zero_cost_loop_start, zero_cost_loop_end, loop_end):
50408         Add missing "SI:" to PLUS RTXes.
50410 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
50412         PR target/108876
50413         * config/xtensa/xtensa.cc (xtensa_expand_epilogue):
50414         Emit (use (reg:SI A0_REG)) at the end in the sibling call
50415         (i.e. the same place as (return) in the normal call).
50417 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
50419         Revert:
50420         2023-02-21  Max Filippov  <jcmvbkbc@gmail.com>
50422         PR target/108876
50423         * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
50424         for A0_REG.
50425         * config/xtensa/xtensa.md (sibcall, sibcall_internal)
50426         (sibcall_value, sibcall_value_internal): Add 'use' expression
50427         for A0_REG.
50429 2023-02-23  Arsen Arsenović  <arsen@aarsen.me>
50431         * doc/cppdiropts.texi: Reorder @opindex commands to precede
50432         @items they relate to.
50433         * doc/cppopts.texi: Ditto.
50434         * doc/cppwarnopts.texi: Ditto.
50435         * doc/invoke.texi: Ditto.
50436         * doc/lto.texi: Ditto.
50438 2023-02-22  Andrew Stubbs  <ams@codesourcery.com>
50440         * internal-fn.cc (expand_MASK_CALL): New.
50441         * internal-fn.def (MASK_CALL): New.
50442         * internal-fn.h (expand_MASK_CALL): New prototype.
50443         * omp-simd-clone.cc (simd_clone_adjust_argument_types): Set vector_type
50444         for mask arguments also.
50445         * tree-if-conv.cc: Include cgraph.h.
50446         (if_convertible_stmt_p): Do if conversions for calls to SIMD calls.
50447         (predicate_statements): Convert functions to IFN_MASK_CALL.
50448         * tree-vect-loop.cc (vect_get_datarefs_in_loop): Recognise
50449         IFN_MASK_CALL as a SIMD function call.
50450         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
50451         IFN_MASK_CALL as an inbranch SIMD function call.
50452         Generate the mask vector arguments.
50454 2023-02-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50456         * config/riscv/riscv-vector-builtins-bases.cc (class reducop): New class.
50457         (class widen_reducop): Ditto.
50458         (class freducop): Ditto.
50459         (class widen_freducop): Ditto.
50460         (BASE): Ditto.
50461         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
50462         * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
50463         (vredmaxu): Ditto.
50464         (vredmax): Ditto.
50465         (vredminu): Ditto.
50466         (vredmin): Ditto.
50467         (vredand): Ditto.
50468         (vredor): Ditto.
50469         (vredxor): Ditto.
50470         (vwredsum): Ditto.
50471         (vwredsumu): Ditto.
50472         (vfredusum): Ditto.
50473         (vfredosum): Ditto.
50474         (vfredmax): Ditto.
50475         (vfredmin): Ditto.
50476         (vfwredosum): Ditto.
50477         (vfwredusum): Ditto.
50478         * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
50479         (SHAPE): Ditto.
50480         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
50481         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WI_OPS): New macro.
50482         (DEF_RVV_WU_OPS): Ditto.
50483         (DEF_RVV_WF_OPS): Ditto.
50484         (vint8mf8_t): Ditto.
50485         (vint8mf4_t): Ditto.
50486         (vint8mf2_t): Ditto.
50487         (vint8m1_t): Ditto.
50488         (vint8m2_t): Ditto.
50489         (vint8m4_t): Ditto.
50490         (vint8m8_t): Ditto.
50491         (vint16mf4_t): Ditto.
50492         (vint16mf2_t): Ditto.
50493         (vint16m1_t): Ditto.
50494         (vint16m2_t): Ditto.
50495         (vint16m4_t): Ditto.
50496         (vint16m8_t): Ditto.
50497         (vint32mf2_t): Ditto.
50498         (vint32m1_t): Ditto.
50499         (vint32m2_t): Ditto.
50500         (vint32m4_t): Ditto.
50501         (vint32m8_t): Ditto.
50502         (vuint8mf8_t): Ditto.
50503         (vuint8mf4_t): Ditto.
50504         (vuint8mf2_t): Ditto.
50505         (vuint8m1_t): Ditto.
50506         (vuint8m2_t): Ditto.
50507         (vuint8m4_t): Ditto.
50508         (vuint8m8_t): Ditto.
50509         (vuint16mf4_t): Ditto.
50510         (vuint16mf2_t): Ditto.
50511         (vuint16m1_t): Ditto.
50512         (vuint16m2_t): Ditto.
50513         (vuint16m4_t): Ditto.
50514         (vuint16m8_t): Ditto.
50515         (vuint32mf2_t): Ditto.
50516         (vuint32m1_t): Ditto.
50517         (vuint32m2_t): Ditto.
50518         (vuint32m4_t): Ditto.
50519         (vuint32m8_t): Ditto.
50520         (vfloat32mf2_t): Ditto.
50521         (vfloat32m1_t): Ditto.
50522         (vfloat32m2_t): Ditto.
50523         (vfloat32m4_t): Ditto.
50524         (vfloat32m8_t): Ditto.
50525         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WI_OPS): Ditto.
50526         (DEF_RVV_WU_OPS): Ditto.
50527         (DEF_RVV_WF_OPS): Ditto.
50528         (required_extensions_p): Add reduction support.
50529         (rvv_arg_type_info::get_base_vector_type): Ditto.
50530         (rvv_arg_type_info::get_tree_type): Ditto.
50531         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
50532         * config/riscv/riscv.md: Ditto.
50533         * config/riscv/vector-iterators.md (minu): Ditto.
50534         * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): New patern.
50535         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
50536         (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Ditto.
50537         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>):Ditto.
50538         (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
50539         (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
50540         (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
50542 2023-02-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50544         * config/riscv/iterators.md: New iterator.
50545         * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class.
50546         (enum ternop_type): New enum.
50547         (class vmacc): New class.
50548         (class imac): Ditto.
50549         (class vnmsac): Ditto.
50550         (enum widen_ternop_type): New enum.
50551         (class vmadd): Ditto.
50552         (class vnmsub): Ditto.
50553         (class iwmac): Ditto.
50554         (class vwmacc): Ditto.
50555         (class vwmaccu): Ditto.
50556         (class vwmaccsu): Ditto.
50557         (class vwmaccus): Ditto.
50558         (class reverse_binop): Ditto.
50559         (class vfmacc): Ditto.
50560         (class vfnmsac): Ditto.
50561         (class vfmadd): Ditto.
50562         (class vfnmsub): Ditto.
50563         (class vfnmacc): Ditto.
50564         (class vfmsac): Ditto.
50565         (class vfnmadd): Ditto.
50566         (class vfmsub): Ditto.
50567         (class vfwmacc): Ditto.
50568         (class vfwnmacc): Ditto.
50569         (class vfwmsac): Ditto.
50570         (class vfwnmsac): Ditto.
50571         (class float_misc): Ditto.
50572         (class fcmp): Ditto.
50573         (class vfclass): Ditto.
50574         (class vfcvt_x): Ditto.
50575         (class vfcvt_rtz_x): Ditto.
50576         (class vfcvt_f): Ditto.
50577         (class vfwcvt_x): Ditto.
50578         (class vfwcvt_rtz_x): Ditto.
50579         (class vfwcvt_f): Ditto.
50580         (class vfncvt_x): Ditto.
50581         (class vfncvt_rtz_x): Ditto.
50582         (class vfncvt_f): Ditto.
50583         (class vfncvt_rod_f): Ditto.
50584         (BASE): Ditto.
50585         * config/riscv/riscv-vector-builtins-bases.h:
50586         * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
50587         (vsext): Ditto.
50588         (vfadd): Ditto.
50589         (vfsub): Ditto.
50590         (vfrsub): Ditto.
50591         (vfwadd): Ditto.
50592         (vfwsub): Ditto.
50593         (vfmul): Ditto.
50594         (vfdiv): Ditto.
50595         (vfrdiv): Ditto.
50596         (vfwmul): Ditto.
50597         (vfmacc): Ditto.
50598         (vfnmsac): Ditto.
50599         (vfmadd): Ditto.
50600         (vfnmsub): Ditto.
50601         (vfnmacc): Ditto.
50602         (vfmsac): Ditto.
50603         (vfnmadd): Ditto.
50604         (vfmsub): Ditto.
50605         (vfwmacc): Ditto.
50606         (vfwnmacc): Ditto.
50607         (vfwmsac): Ditto.
50608         (vfwnmsac): Ditto.
50609         (vfsqrt): Ditto.
50610         (vfrsqrt7): Ditto.
50611         (vfrec7): Ditto.
50612         (vfmin): Ditto.
50613         (vfmax): Ditto.
50614         (vfsgnj): Ditto.
50615         (vfsgnjn): Ditto.
50616         (vfsgnjx): Ditto.
50617         (vfneg): Ditto.
50618         (vfabs): Ditto.
50619         (vmfeq): Ditto.
50620         (vmfne): Ditto.
50621         (vmflt): Ditto.
50622         (vmfle): Ditto.
50623         (vmfgt): Ditto.
50624         (vmfge): Ditto.
50625         (vfclass): Ditto.
50626         (vfmerge): Ditto.
50627         (vfmv_v): Ditto.
50628         (vfcvt_x): Ditto.
50629         (vfcvt_xu): Ditto.
50630         (vfcvt_rtz_x): Ditto.
50631         (vfcvt_rtz_xu): Ditto.
50632         (vfcvt_f): Ditto.
50633         (vfwcvt_x): Ditto.
50634         (vfwcvt_xu): Ditto.
50635         (vfwcvt_rtz_x): Ditto.
50636         (vfwcvt_rtz_xu): Ditto.
50637         (vfwcvt_f): Ditto.
50638         (vfncvt_x): Ditto.
50639         (vfncvt_xu): Ditto.
50640         (vfncvt_rtz_x): Ditto.
50641         (vfncvt_rtz_xu): Ditto.
50642         (vfncvt_f): Ditto.
50643         (vfncvt_rod_f): Ditto.
50644         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
50645         (struct move_def): Ditto.
50646         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTF_OPS): New macro.
50647         (DEF_RVV_CONVERT_I_OPS): Ditto.
50648         (DEF_RVV_CONVERT_U_OPS): Ditto.
50649         (DEF_RVV_WCONVERT_I_OPS): Ditto.
50650         (DEF_RVV_WCONVERT_U_OPS): Ditto.
50651         (DEF_RVV_WCONVERT_F_OPS): Ditto.
50652         (vfloat64m1_t): Ditto.
50653         (vfloat64m2_t): Ditto.
50654         (vfloat64m4_t): Ditto.
50655         (vfloat64m8_t): Ditto.
50656         (vint32mf2_t): Ditto.
50657         (vint32m1_t): Ditto.
50658         (vint32m2_t): Ditto.
50659         (vint32m4_t): Ditto.
50660         (vint32m8_t): Ditto.
50661         (vint64m1_t): Ditto.
50662         (vint64m2_t): Ditto.
50663         (vint64m4_t): Ditto.
50664         (vint64m8_t): Ditto.
50665         (vuint32mf2_t): Ditto.
50666         (vuint32m1_t): Ditto.
50667         (vuint32m2_t): Ditto.
50668         (vuint32m4_t): Ditto.
50669         (vuint32m8_t): Ditto.
50670         (vuint64m1_t): Ditto.
50671         (vuint64m2_t): Ditto.
50672         (vuint64m4_t): Ditto.
50673         (vuint64m8_t): Ditto.
50674         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_CONVERT_I_OPS): Ditto.
50675         (DEF_RVV_CONVERT_U_OPS): Ditto.
50676         (DEF_RVV_WCONVERT_I_OPS): Ditto.
50677         (DEF_RVV_WCONVERT_U_OPS): Ditto.
50678         (DEF_RVV_WCONVERT_F_OPS): Ditto.
50679         (DEF_RVV_F_OPS): Ditto.
50680         (DEF_RVV_WEXTF_OPS): Ditto.
50681         (required_extensions_p): Adjust for floating-point support.
50682         (check_required_extensions): Ditto.
50683         (unsigned_base_type_p): Ditto.
50684         (get_mode_for_bitsize): Ditto.
50685         (rvv_arg_type_info::get_base_vector_type): Ditto.
50686         (rvv_arg_type_info::get_tree_type): Ditto.
50687         * config/riscv/riscv-vector-builtins.def (v_f): New define.
50688         (f): New define.
50689         (f_v): New define.
50690         (xu_v): New define.
50691         (f_w): New define.
50692         (xu_w): New define.
50693         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): New enum.
50694         (function_expander::arg_mode): New function.
50695         * config/riscv/vector-iterators.md (sof): New iterator.
50696         (vfrecp): Ditto.
50697         (copysign): Ditto.
50698         (n): Ditto.
50699         (msac): Ditto.
50700         (msub): Ditto.
50701         (fixuns_trunc): Ditto.
50702         (floatuns): Ditto.
50703         * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
50704         (@pred_<optab><mode>): Ditto.
50705         (@pred_<optab><mode>_scalar): Ditto.
50706         (@pred_<optab><mode>_reverse_scalar): Ditto.
50707         (@pred_<copysign><mode>): Ditto.
50708         (@pred_<copysign><mode>_scalar): Ditto.
50709         (@pred_mul_<optab><mode>): Ditto.
50710         (pred_mul_<optab><mode>_undef_merge): Ditto.
50711         (*pred_<madd_nmsub><mode>): Ditto.
50712         (*pred_<macc_nmsac><mode>): Ditto.
50713         (*pred_mul_<optab><mode>): Ditto.
50714         (@pred_mul_<optab><mode>_scalar): Ditto.
50715         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
50716         (*pred_<madd_nmsub><mode>_scalar): Ditto.
50717         (*pred_<macc_nmsac><mode>_scalar): Ditto.
50718         (*pred_mul_<optab><mode>_scalar): Ditto.
50719         (@pred_neg_mul_<optab><mode>): Ditto.
50720         (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
50721         (*pred_<nmadd_msub><mode>): Ditto.
50722         (*pred_<nmacc_msac><mode>): Ditto.
50723         (*pred_neg_mul_<optab><mode>): Ditto.
50724         (@pred_neg_mul_<optab><mode>_scalar): Ditto.
50725         (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
50726         (*pred_<nmadd_msub><mode>_scalar): Ditto.
50727         (*pred_<nmacc_msac><mode>_scalar): Ditto.
50728         (*pred_neg_mul_<optab><mode>_scalar): Ditto.
50729         (@pred_<misc_op><mode>): Ditto.
50730         (@pred_class<mode>): Ditto.
50731         (@pred_dual_widen_<optab><mode>): Ditto.
50732         (@pred_dual_widen_<optab><mode>_scalar): Ditto.
50733         (@pred_single_widen_<plus_minus:optab><mode>): Ditto.
50734         (@pred_single_widen_<plus_minus:optab><mode>_scalar): Ditto.
50735         (@pred_widen_mul_<optab><mode>): Ditto.
50736         (@pred_widen_mul_<optab><mode>_scalar): Ditto.
50737         (@pred_widen_neg_mul_<optab><mode>): Ditto.
50738         (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
50739         (@pred_cmp<mode>): Ditto.
50740         (*pred_cmp<mode>): Ditto.
50741         (*pred_cmp<mode>_narrow): Ditto.
50742         (@pred_cmp<mode>_scalar): Ditto.
50743         (*pred_cmp<mode>_scalar): Ditto.
50744         (*pred_cmp<mode>_scalar_narrow): Ditto.
50745         (@pred_eqne<mode>_scalar): Ditto.
50746         (*pred_eqne<mode>_scalar): Ditto.
50747         (*pred_eqne<mode>_scalar_narrow): Ditto.
50748         (@pred_merge<mode>_scalar): Ditto.
50749         (@pred_fcvt_x<v_su>_f<mode>): Ditto.
50750         (@pred_<fix_cvt><mode>): Ditto.
50751         (@pred_<float_cvt><mode>): Ditto.
50752         (@pred_widen_fcvt_x<v_su>_f<mode>): Ditto.
50753         (@pred_widen_<fix_cvt><mode>): Ditto.
50754         (@pred_widen_<float_cvt><mode>): Ditto.
50755         (@pred_extend<mode>): Ditto.
50756         (@pred_narrow_fcvt_x<v_su>_f<mode>): Ditto.
50757         (@pred_narrow_<fix_cvt><mode>): Ditto.
50758         (@pred_narrow_<float_cvt><mode>): Ditto.
50759         (@pred_trunc<mode>): Ditto.
50760         (@pred_rod_trunc<mode>): Ditto.
50762 2023-02-22  Jakub Jelinek  <jakub@redhat.com>
50764         PR middle-end/106258
50765         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
50766         cgraph_update_edges_for_call_stmt_node, cgraph_node::verify_node):
50767         Handle BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
50768         * cgraphclones.cc (cgraph_node::create_clone): Likewise.
50770 2023-02-22  Thomas Schwinge  <thomas@codesourcery.com>
50772         * common.opt (-Wcomplain-wrong-lang): New.
50773         * doc/invoke.texi (-Wno-complain-wrong-lang): Document it.
50774         * opts-common.cc (prune_options): Handle it.
50775         * opts-global.cc (complain_wrong_lang): Use it.
50777 2023-02-21  David Malcolm  <dmalcolm@redhat.com>
50779         PR analyzer/108830
50780         * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
50782 2023-02-21  Max Filippov  <jcmvbkbc@gmail.com>
50784         PR target/108876
50785         * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
50786         for A0_REG.
50787         * config/xtensa/xtensa.md (sibcall, sibcall_internal)
50788         (sibcall_value, sibcall_value_internal): Add 'use' expression
50789         for A0_REG.
50791 2023-02-21  Richard Biener  <rguenther@suse.de>
50793         PR tree-optimization/108691
50794         * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove
50795         assert about calls_setjmp not becoming true when it was false.
50797 2023-02-21  Richard Biener  <rguenther@suse.de>
50799         PR tree-optimization/108793
50800         * tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
50801         Use convert operands to niter_type when computing num.
50803 2023-02-21  Richard Biener  <rguenther@suse.de>
50805         Revert:
50806         2023-02-13  Richard Biener  <rguenther@suse.de>
50808         PR tree-optimization/108691
50809         * tree-cfg.cc (notice_special_calls): When the CFG is built
50810         honor gimple_call_ctrl_altering_p.
50811         * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
50812         temporarily if the call is not control-altering.
50813         * calls.cc (emit_call_1): Do not add REG_SETJMP if
50814         cfun->calls_setjmp is not set.  Do not alter cfun->calls_setjmp.
50816 2023-02-21  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
50818         * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
50819         true if register A0 (return address register) when -Og is specified.
50821 2023-02-20  Uroš Bizjak  <ubizjak@gmail.com>
50823         * config/i386/predicates.md
50824         (general_x64constmem_operand): New predicate.
50825         * config/i386/i386.md (*cmpqi_ext<mode>_1):
50826         Use nonimm_x64constmem_operand.
50827         (*cmpqi_ext<mode>_3): Use general_x64constmem_operand.
50828         (*addqi_ext<mode>_1): Ditto.
50829         (*testqi_ext<mode>_1): Ditto.
50830         (*andqi_ext<mode>_1): Ditto.
50831         (*andqi_ext<mode>_1_cc): Ditto.
50832         (*<any_or:code>qi_ext<mode>_1): Ditto.
50833         (*xorqi_ext<mode>_1_cc): Ditto.
50835 2023-02-20  Jakub Jelinek  <jakub2redhat.com>
50837         PR target/108862
50838         * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
50839         gen_umadddi4_highpart{,_le}.
50841 2023-02-20  Kito Cheng  <kito.cheng@sifive.com>
50843         * config/riscv/riscv.md (prefetch): Use r instead of p for the
50844         address operand.
50845         (riscv_prefetchi_<mode>): Ditto.
50847 2023-02-20  Richard Biener  <rguenther@suse.de>
50849         PR tree-optimization/108816
50850         * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
50851         versioning condition split prerequesite, assert required
50852         invariant.
50854 2023-02-20  Richard Biener  <rguenther@suse.de>
50856         PR tree-optimization/108825
50857         * tree-ssa-loop-manip.cc (verify_loop_closed_ssa): For
50858         loop-local verfication only verify there's no pending SSA
50859         update.
50861 2023-02-20  Richard Biener  <rguenther@suse.de>
50863         PR tree-optimization/108819
50864         * tree-ssa-loop-niter.cc (number_of_iterations_cltz): Check
50865         we have an SSA name as iv_2 as expected.
50867 2023-02-18  Jakub Jelinek  <jakub@redhat.com>
50869         PR tree-optimization/108819
50870         * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
50872 2023-02-18  Jakub Jelinek  <jakub@redhat.com>
50874         PR target/108832
50875         * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
50876         * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
50877         function.
50878         * config/i386/i386.md: Replace replace_rtx calls in all peephole2s
50879         with ix86_replace_reg_with_reg.
50881 2023-02-18  Gerald Pfeifer  <gerald@pfeifer.com>
50883         * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
50885 2023-02-18  Xi Ruoyao  <xry111@xry111.site>
50887         * config.gcc (triplet_abi): Set its value based on $with_abi,
50888         instead of $target.
50889         (la_canonical_triplet): Set it after $triplet_abi is set
50890         correctly.
50891         * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
50892         multiarch tuple for lp64d "loongarch64-linux-gnu" (without
50893         "f64" suffix).
50895 2023-02-18  Andrew Pinski  <apinski@marvell.com>
50897         * match.pd: Remove #if GIMPLE around the
50898         "1 - a" pattern
50900 2023-02-18  Andrew Pinski  <apinski@marvell.com>
50902         * value-query.h (get_range_query): Return the global ranges
50903         for a nullptr func.
50905 2023-02-17  Siddhesh Poyarekar  <siddhesh@gotplt.org>
50907         * doc/invoke.texi (@item -Wall): Fix typo in
50908         -Wuse-after-free.
50910 2023-02-17  Uroš Bizjak  <ubizjak@gmail.com>
50912         PR target/108831
50913         * config/i386/predicates.md
50914         (nonimm_x64constmem_operand): New predicate.
50915         * config/i386/i386.md (*addqi_ext<mode>_0): New insn pattern.
50916         (*subqi_ext<mode>_0): Ditto.
50917         (*andqi_ext<mode>_0): Ditto.
50918         (*<any_or:code>qi_ext<mode>_0): Ditto.
50920 2023-02-17  Uroš Bizjak  <ubizjak@gmail.com>
50922         PR target/108805
50923         * simplify-rtx.cc (simplify_context::simplify_subreg): Use
50924         int_outermode instead of GET_MODE (tem) to prevent
50925         VOIDmode from entering simplify_gen_subreg.
50927 2023-02-17  Richard Biener  <rguenther@suse.de>
50929         PR tree-optimization/108821
50930         * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
50931         move volatile accesses.
50933 2023-02-17  Richard Biener  <rguenther@suse.de>
50935         * tree-ssa.cc (ssa_undefined_value_p): Assert we are not
50936         called on virtual operands.
50937         * tree-ssa-sccvn.cc (vn_phi_lookup): Guard
50938         ssa_undefined_value_p calls.
50939         (vn_phi_insert): Likewise.
50940         (set_ssa_val_to): Likewise.
50941         (visit_phi): Avoid extra work with equivalences for
50942         virtual operand PHIs.
50944 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50946         * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
50947         class.
50948         (class mask_nlogic): Ditto.
50949         (class mask_notlogic): Ditto.
50950         (class vmmv): Ditto.
50951         (class vmclr): Ditto.
50952         (class vmset): Ditto.
50953         (class vmnot): Ditto.
50954         (class vcpop): Ditto.
50955         (class vfirst): Ditto.
50956         (class mask_misc): Ditto.
50957         (class viota): Ditto.
50958         (class vid): Ditto.
50959         (BASE): Ditto.
50960         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
50961         * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
50962         (vmnand): Ditto.
50963         (vmandn): Ditto.
50964         (vmxor): Ditto.
50965         (vmor): Ditto.
50966         (vmnor): Ditto.
50967         (vmorn): Ditto.
50968         (vmxnor): Ditto.
50969         (vmmv): Ditto.
50970         (vmclr): Ditto.
50971         (vmset): Ditto.
50972         (vmnot): Ditto.
50973         (vcpop): Ditto.
50974         (vfirst): Ditto.
50975         (vmsbf): Ditto.
50976         (vmsif): Ditto.
50977         (vmsof): Ditto.
50978         (viota): Ditto.
50979         (vid): Ditto.
50980         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
50981         (struct mask_alu_def): Ditto.
50982         (SHAPE): Ditto.
50983         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
50984         * config/riscv/riscv-vector-builtins.cc: Ditto.
50985         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug
50986         for dest it scalar RVV intrinsics.
50987         * config/riscv/vector-iterators.md (sof): New iterator.
50988         * config/riscv/vector.md (@pred_<optab>n<mode>): New pattern.
50989         (@pred_<optab>not<mode>): New pattern.
50990         (@pred_popcount<VB:mode><P:mode>): New pattern.
50991         (@pred_ffs<VB:mode><P:mode>): New pattern.
50992         (@pred_<misc_op><mode>): New pattern.
50993         (@pred_iota<mode>): New pattern.
50994         (@pred_series<mode>): New pattern.
50996 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50998         * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
50999         (vsbc): Ditto.
51000         (vmerge): Ditto.
51001         (vmv_v): Ditto.
51002         * config/riscv/riscv-vector-builtins.cc: Ditto.
51004 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
51005             kito-cheng  <kito.cheng@sifive.com>
51007         * config/riscv/riscv-protos.h (sew64_scalar_helper): New function.
51008         * config/riscv/riscv-v.cc (has_vi_variant_p): Adjust.
51009         (sew64_scalar_helper): New function.
51010         * config/riscv/vector.md: Normalization.
51012 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
51014         * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
51015         (vsm): Ditto.
51016         (vsse): Ditto.
51017         (vsoxei64): Ditto.
51018         (vsub): Ditto.
51019         (vand): Ditto.
51020         (vor): Ditto.
51021         (vxor): Ditto.
51022         (vsll): Ditto.
51023         (vsra): Ditto.
51024         (vsrl): Ditto.
51025         (vmin): Ditto.
51026         (vmax): Ditto.
51027         (vminu): Ditto.
51028         (vmaxu): Ditto.
51029         (vmul): Ditto.
51030         (vmulh): Ditto.
51031         (vmulhu): Ditto.
51032         (vmulhsu): Ditto.
51033         (vdiv): Ditto.
51034         (vrem): Ditto.
51035         (vdivu): Ditto.
51036         (vremu): Ditto.
51037         (vnot): Ditto.
51038         (vsext): Ditto.
51039         (vzext): Ditto.
51040         (vwadd): Ditto.
51041         (vwsub): Ditto.
51042         (vwmul): Ditto.
51043         (vwmulu): Ditto.
51044         (vwmulsu): Ditto.
51045         (vwaddu): Ditto.
51046         (vwsubu): Ditto.
51047         (vsbc): Ditto.
51048         (vmsbc): Ditto.
51049         (vnsra): Ditto.
51050         (vmerge): Ditto.
51051         (vmv_v): Ditto.
51052         (vmsne): Ditto.
51053         (vmslt): Ditto.
51054         (vmsgt): Ditto.
51055         (vmsle): Ditto.
51056         (vmsge): Ditto.
51057         (vmsltu): Ditto.
51058         (vmsgtu): Ditto.
51059         (vmsleu): Ditto.
51060         (vmsgeu): Ditto.
51061         (vnmsac): Ditto.
51062         (vmadd): Ditto.
51063         (vnmsub): Ditto.
51064         (vwmacc): Ditto.
51065         (vsadd): Ditto.
51066         (vssub): Ditto.
51067         (vssubu): Ditto.
51068         (vaadd): Ditto.
51069         (vasub): Ditto.
51070         (vasubu): Ditto.
51071         (vsmul): Ditto.
51072         (vssra): Ditto.
51073         (vssrl): Ditto.
51074         (vnclip): Ditto.
51076 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
51078         * config/riscv/vector.md (@pred_<optab><mode>): Rearrange.
51079         (@pred_<optab><mode>_scalar): Ditto.
51080         (*pred_<optab><mode>_scalar): Ditto.
51081         (*pred_<optab><mode>_extended_scalar): Ditto.
51083 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
51085         * config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'.
51086         (init_builtins): Ditto.
51087         (mangle_builtin_type): Ditto.
51088         (verify_type_context): Ditto.
51089         (handle_pragma_vector):  Ditto.
51090         (builtin_decl): Ditto.
51091         (expand_builtin): Ditto.
51092         (const_vec_all_same_in_range_p): Ditto.
51093         (legitimize_move): Ditto.
51094         (emit_vlmax_op): Ditto.
51095         (emit_nonvlmax_op): Ditto.
51096         (get_vlmul): Ditto.
51097         (get_ratio): Ditto.
51098         (get_ta): Ditto.
51099         (get_ma): Ditto.
51100         (get_avl_type): Ditto.
51101         (calculate_ratio): Ditto.
51102         (enum vlmul_type): Ditto.
51103         (simm5_p): Ditto.
51104         (neg_simm5_p): Ditto.
51105         (has_vi_variant_p): Ditto.
51107 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
51109         * config/riscv/riscv-protos.h (simm32_p): Remove.
51110         * config/riscv/riscv-v.cc (simm32_p): Ditto.
51111         * config/riscv/vector.md: Use immediate_operand
51112         instead of riscv_vector::simm32_p.
51114 2023-02-16  Gerald Pfeifer  <gerald@pfeifer.com>
51116         * doc/invoke.texi (Optimize Options): Reword the explanation
51117         getting minimal, maximal and default values of a parameter.
51119 2023-02-16  Patrick Palka  <ppalka@redhat.com>
51121         * addresses.h: Mechanically drop 'static' from 'static inline'
51122         functions via s/^static inline/inline/g.
51123         * asan.h: Likewise.
51124         * attribs.h: Likewise.
51125         * basic-block.h: Likewise.
51126         * bitmap.h: Likewise.
51127         * cfghooks.h: Likewise.
51128         * cfgloop.h: Likewise.
51129         * cgraph.h: Likewise.
51130         * cselib.h: Likewise.
51131         * data-streamer.h: Likewise.
51132         * debug.h: Likewise.
51133         * df.h: Likewise.
51134         * diagnostic.h: Likewise.
51135         * dominance.h: Likewise.
51136         * dumpfile.h: Likewise.
51137         * emit-rtl.h: Likewise.
51138         * except.h: Likewise.
51139         * expmed.h: Likewise.
51140         * expr.h: Likewise.
51141         * fixed-value.h: Likewise.
51142         * gengtype.h: Likewise.
51143         * gimple-expr.h: Likewise.
51144         * gimple-iterator.h: Likewise.
51145         * gimple-predict.h: Likewise.
51146         * gimple-range-fold.h: Likewise.
51147         * gimple-ssa.h: Likewise.
51148         * gimple.h: Likewise.
51149         * graphite.h: Likewise.
51150         * hard-reg-set.h: Likewise.
51151         * hash-map.h: Likewise.
51152         * hash-set.h: Likewise.
51153         * hash-table.h: Likewise.
51154         * hwint.h: Likewise.
51155         * input.h: Likewise.
51156         * insn-addr.h: Likewise.
51157         * internal-fn.h: Likewise.
51158         * ipa-fnsummary.h: Likewise.
51159         * ipa-icf-gimple.h: Likewise.
51160         * ipa-inline.h: Likewise.
51161         * ipa-modref.h: Likewise.
51162         * ipa-prop.h: Likewise.
51163         * ira-int.h: Likewise.
51164         * ira.h: Likewise.
51165         * lra-int.h: Likewise.
51166         * lra.h: Likewise.
51167         * lto-streamer.h: Likewise.
51168         * memmodel.h: Likewise.
51169         * omp-general.h: Likewise.
51170         * optabs-query.h: Likewise.
51171         * optabs.h: Likewise.
51172         * plugin.h: Likewise.
51173         * pretty-print.h: Likewise.
51174         * range.h: Likewise.
51175         * read-md.h: Likewise.
51176         * recog.h: Likewise.
51177         * regs.h: Likewise.
51178         * rtl-iter.h: Likewise.
51179         * rtl.h: Likewise.
51180         * sbitmap.h: Likewise.
51181         * sched-int.h: Likewise.
51182         * sel-sched-ir.h: Likewise.
51183         * sese.h: Likewise.
51184         * sparseset.h: Likewise.
51185         * ssa-iterators.h: Likewise.
51186         * system.h: Likewise.
51187         * target-globals.h: Likewise.
51188         * target.h: Likewise.
51189         * timevar.h: Likewise.
51190         * tree-chrec.h: Likewise.
51191         * tree-data-ref.h: Likewise.
51192         * tree-iterator.h: Likewise.
51193         * tree-outof-ssa.h: Likewise.
51194         * tree-phinodes.h: Likewise.
51195         * tree-scalar-evolution.h: Likewise.
51196         * tree-sra.h: Likewise.
51197         * tree-ssa-alias.h: Likewise.
51198         * tree-ssa-live.h: Likewise.
51199         * tree-ssa-loop-manip.h: Likewise.
51200         * tree-ssa-loop.h: Likewise.
51201         * tree-ssa-operands.h: Likewise.
51202         * tree-ssa-propagate.h: Likewise.
51203         * tree-ssa-sccvn.h: Likewise.
51204         * tree-ssa.h: Likewise.
51205         * tree-ssanames.h: Likewise.
51206         * tree-streamer.h: Likewise.
51207         * tree-switch-conversion.h: Likewise.
51208         * tree-vectorizer.h: Likewise.
51209         * tree.h: Likewise.
51210         * wide-int.h: Likewise.
51212 2023-02-16  Jakub Jelinek  <jakub@redhat.com>
51214         PR tree-optimization/108657
51215         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt
51216         exists and is not a SSA_NAME, call ao_ref_init even if the stmt
51217         is a call to internal or builtin function.
51219 2023-02-16  Jonathan Wakely  <jwakely@redhat.com>
51221         * doc/invoke.texi (C++ Dialect Options): Suggest adding a
51222         using-declaration to unhide functions.
51224 2023-02-16  Jakub Jelinek  <jakub@redhat.com>
51226         PR tree-optimization/108783
51227         * tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode
51228         is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set
51229         t to curr->op.  Otherwise, punt if either newop1 or newop2 are
51230         SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs.
51232 2023-02-16  Richard Biener  <rguenther@suse.de>
51234         PR tree-optimization/108791
51235         * tree-ssa-forwprop.cc (optimize_vector_load): Build
51236         the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful
51237         type.
51239 2023-02-15  Eric Botcazou  <ebotcazou@adacore.com>
51241         PR target/90458
51242         * config/i386/i386.cc (ix86_compute_frame_layout): Disable the
51243         effects of -fstack-clash-protection for TARGET_STACK_PROBE.
51244         (ix86_expand_prologue): Likewise.
51246 2023-02-15  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
51248         * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
51250 2023-02-15  Uroš Bizjak  <ubizjak@gmail.com>
51252         * config/i386/i386.md (*cmpqi_ext<mode>_1): Use
51253         int248_register_operand predicate in zero_extract sub-RTX.
51254         (*cmpqi_ext<mode>_2): Ditto.
51255         (*cmpqi_ext<mode>_3): Ditto.
51256         (*cmpqi_ext<mode>_4): Ditto.
51257         (*extzvqi_mem_rex64): Ditto.
51258         (*extzvqi): Ditto.
51259         (*insvqi_1_mem_rex64): Ditto.
51260         (@insv<mode>_1): Ditto.
51261         (*insvqi_1): Ditto.
51262         (*insvqi_2): Ditto.
51263         (*insvqi_3): Ditto.
51264         (*extendqi<SWI24:mode>_ext_1): Ditto.
51265         (*addqi_ext<mode>_1): Ditto.
51266         (*addqi_ext<mode>_2): Ditto.
51267         (*subqi_ext<mode>_2): Ditto.
51268         (*testqi_ext<mode>_1): Ditto.
51269         (*testqi_ext<mode>_2): Ditto.
51270         (*andqi_ext<mode>_1): Ditto.
51271         (*andqi_ext<mode>_1_cc): Ditto.
51272         (*andqi_ext<mode>_2): Ditto.
51273         (*<any_or:code>qi_ext<mode>_1): Ditto.
51274         (*<any_or:code>qi_ext<mode>_2): Ditto.
51275         (*xorqi_ext<mode>_1_cc): Ditto.
51276         (*negqi_ext<mode>_2): Ditto.
51277         (*ashlqi_ext<mode>_2): Ditto.
51278         (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
51280 2023-02-15  Uroš Bizjak  <ubizjak@gmail.com>
51282         * config/i386/predicates.md (int248_register_operand):
51283         Rename from extr_register_operand.
51284         * config/i386/i386.md (*extv<mode>): Update for renamed predicate.
51285         (*extzx<mode>): Ditto.
51286         (*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate.
51287         (*ashl<mode>3_mask): Ditto.
51288         (*<any_shiftrt:insn><mode>3_mask): Ditto.
51289         (*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto.
51290         (*<any_rotate:insn><mode>3_mask): Ditto.
51291         (*<btsc><mode>_mask): Ditto.
51292         (*btr<mode>_mask): Ditto.
51293         (*jcc_bt<mode>_mask_1): Ditto.
51295 2023-02-15  Richard Biener  <rguenther@suse.de>
51297         PR middle-end/26854
51298         * df-core.cc (df_worklist_propagate_forward): Put later
51299         blocks on worklist and only earlier blocks on pending.
51300         (df_worklist_propagate_backward): Likewise.
51301         (df_worklist_dataflow_doublequeue): Change the iteration
51302         to process new blocks in the same iteration if that
51303         maintains the iteration order.
51305 2023-02-15  Marek Polacek  <polacek@redhat.com>
51307         PR middle-end/106080
51308         * gimple-ssa-warn-access.cc (is_auto_decl): Remove.  Use auto_var_p
51309         instead.
51311 2023-02-15  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
51313         * config/riscv/predicates.md: Refine codes.
51314         * config/riscv/riscv-protos.h (RVV_VUNDEF): New macro.
51315         * config/riscv/riscv-v.cc: Refine codes.
51316         * config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New
51317         enum.
51318         (class imac): New class.
51319         (enum widen_ternop_type): New enum.
51320         (class iwmac): New class.
51321         (BASE): New class.
51322         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
51323         * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
51324         (vnmsac): Ditto.
51325         (vmadd): Ditto.
51326         (vnmsub): Ditto.
51327         (vwmacc): Ditto.
51328         (vwmaccu): Ditto.
51329         (vwmaccsu): Ditto.
51330         (vwmaccus): Ditto.
51331         * config/riscv/riscv-vector-builtins.cc
51332         (function_builder::apply_predication): Adjust for multiply-add support.
51333         (function_expander::add_vundef_operand): Refine codes.
51334         (function_expander::use_ternop_insn): New function.
51335         (function_expander::use_widen_ternop_insn): Ditto.
51336         * config/riscv/riscv-vector-builtins.h: New function.
51337         * config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern.
51338         (pred_mul_<optab><mode>_undef_merge): Ditto.
51339         (*pred_<madd_nmsub><mode>): Ditto.
51340         (*pred_<macc_nmsac><mode>): Ditto.
51341         (*pred_mul_<optab><mode>): Ditto.
51342         (@pred_mul_<optab><mode>_scalar): Ditto.
51343         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
51344         (*pred_<madd_nmsub><mode>_scalar): Ditto.
51345         (*pred_<macc_nmsac><mode>_scalar): Ditto.
51346         (*pred_mul_<optab><mode>_scalar): Ditto.
51347         (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
51348         (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
51349         (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
51350         (*pred_mul_<optab><mode>_extended_scalar): Ditto.
51351         (@pred_widen_mul_plus<su><mode>): Ditto.
51352         (@pred_widen_mul_plus<su><mode>_scalar): Ditto.
51353         (@pred_widen_mul_plussu<mode>): Ditto.
51354         (@pred_widen_mul_plussu<mode>_scalar): Ditto.
51355         (@pred_widen_mul_plusus<mode>_scalar): Ditto.
51357 2023-02-15  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
51359         * config/riscv/predicates.md (vector_mask_operand): Refine the codes.
51360         (vector_all_trues_mask_operand): New predicate.
51361         (vector_undef_operand): New predicate.
51362         (ltge_operator): New predicate.
51363         (comparison_except_ltge_operator): New predicate.
51364         (comparison_except_eqge_operator): New predicate.
51365         (ge_operator): New predicate.
51366         * config/riscv/riscv-v.cc (has_vi_variant_p): Add compare support.
51367         * config/riscv/riscv-vector-builtins-bases.cc (class icmp): New class.
51368         (BASE): Ditto.
51369         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
51370         * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
51371         (vmsne): Ditto.
51372         (vmslt): Ditto.
51373         (vmsgt): Ditto.
51374         (vmsle): Ditto.
51375         (vmsge): Ditto.
51376         (vmsltu): Ditto.
51377         (vmsgtu): Ditto.
51378         (vmsleu): Ditto.
51379         (vmsgeu): Ditto.
51380         * config/riscv/riscv-vector-builtins-shapes.cc
51381         (struct return_mask_def): Adjust for compare support.
51382         * config/riscv/riscv-vector-builtins.cc
51383         (function_expander::use_compare_insn): New function.
51384         * config/riscv/riscv-vector-builtins.h
51385         (function_expander::add_integer_operand): Ditto.
51386         * config/riscv/riscv.cc (riscv_print_operand): Add compare support.
51387         * config/riscv/riscv.md: Add vector min/max attributes.
51388         * config/riscv/vector-iterators.md (xnor): New iterator.
51389         * config/riscv/vector.md (@pred_cmp<mode>): New pattern.
51390         (*pred_cmp<mode>): Ditto.
51391         (*pred_cmp<mode>_narrow): Ditto.
51392         (@pred_ltge<mode>): Ditto.
51393         (*pred_ltge<mode>): Ditto.
51394         (*pred_ltge<mode>_narrow): Ditto.
51395         (@pred_cmp<mode>_scalar): Ditto.
51396         (*pred_cmp<mode>_scalar): Ditto.
51397         (*pred_cmp<mode>_scalar_narrow): Ditto.
51398         (@pred_eqne<mode>_scalar): Ditto.
51399         (*pred_eqne<mode>_scalar): Ditto.
51400         (*pred_eqne<mode>_scalar_narrow): Ditto.
51401         (*pred_cmp<mode>_extended_scalar): Ditto.
51402         (*pred_cmp<mode>_extended_scalar_narrow): Ditto.
51403         (*pred_eqne<mode>_extended_scalar): Ditto.
51404         (*pred_eqne<mode>_extended_scalar_narrow): Ditto.
51405         (@pred_ge<mode>_scalar): Ditto.
51406         (@pred_<optab><mode>): Ditto.
51407         (@pred_n<optab><mode>): Ditto.
51408         (@pred_<optab>n<mode>): Ditto.
51409         (@pred_not<mode>): Ditto.
51411 2023-02-15  Martin Jambor  <mjambor@suse.cz>
51413         PR ipa/108679
51414         * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
51415         creation of non-scalar replacements even if IPA-CP knows their
51416         contents.
51418 2023-02-15  Jakub Jelinek  <jakub@redhat.com>
51420         PR target/108787
51421         PR target/103109
51422         * config/rs6000/rs6000.md (<u>maddditi4): Change into umaddditi4 only
51423         expander, change operand 3 to be TImode, emit maddlddi4 and
51424         umadddi4_highpart{,_le} with its low half and finally add the high
51425         half to the result.
51427 2023-02-15  Martin Liska  <mliska@suse.cz>
51429         * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
51431 2023-02-15  Richard Biener  <rguenther@suse.de>
51433         * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
51434         for with_poison and alias worklist to it.
51435         (sanitize_asan_mark_poison): Likewise.
51437 2023-02-15  Richard Biener  <rguenther@suse.de>
51439         PR target/108738
51440         * config/i386/i386-features.cc (scalar_chain::add_to_queue):
51441         Combine bitmap test and set.
51442         (scalar_chain::add_insn): Likewise.
51443         (scalar_chain::analyze_register_chain): Remove redundant
51444         attempt to add to queue and instead strengthen assert.
51445         Sink common attempts to mark the def dual-mode.
51446         (scalar_chain::add_to_queue): Remove redundant insn bitmap
51447         check.
51449 2023-02-15  Richard Biener  <rguenther@suse.de>
51451         PR target/108738
51452         * config/i386/i386-features.cc (convert_scalars_to_vector):
51453         Switch candidates bitmaps to tree view before building the chains.
51455 2023-02-15  Hans-Peter Nilsson  <hp@axis.com>
51457         * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
51458         "failure trying to reload" call.
51460 2023-02-15  Hans-Peter Nilsson  <hp@axis.com>
51462         * gdbinit.in (phrs): New command.
51463         * sel-sched-dump.cc (debug_hard_reg_set): Remove debug-function.
51464         * ira-color.cc (debug_hard_reg_set): New, calling print_hard_reg_set.
51466 2023-02-14  David Faust  <david.faust@oracle.com>
51468         PR target/108790
51469         * config/bpf/constraints.md (q): New memory constraint.
51470         * config/bpf/bpf.md (zero_extendhidi2): Use it here.
51471         (zero_extendqidi2): Likewise.
51472         (zero_extendsidi2): Likewise.
51473         (*mov<MM:mode>): Likewise.
51475 2023-02-14  Andrew Pinski  <apinski@marvell.com>
51477         PR tree-optimization/108355
51478         PR tree-optimization/96921
51479         * match.pd: Add pattern for "1 - bool_val".
51481 2023-02-14  Richard Biener  <rguenther@suse.de>
51483         * tree-ssa-sccvn.cc (vn_phi_compute_hash): Key skipping
51484         basic block index hashing on the availability of ->cclhs.
51485         (vn_phi_eq): Avoid re-doing sanity checks for CSE but
51486         rely on ->cclhs availability.
51487         (vn_phi_lookup): Set ->cclhs only when we are eventually
51488         going to CSE the PHI.
51489         (vn_phi_insert): Likewise.
51491 2023-02-14  Eric Botcazou  <ebotcazou@adacore.com>
51493         * gimplify.cc (gimplify_save_expr): Add missing guard.
51495 2023-02-14  Richard Biener  <rguenther@suse.de>
51497         PR tree-optimization/108782
51498         * tree-vect-loop.cc (vect_phi_first_order_recurrence_p):
51499         Make sure we're not vectorizing an inner loop.
51501 2023-02-14  Jakub Jelinek  <jakub@redhat.com>
51503         PR sanitizer/108777
51504         * params.opt (-param=asan-kernel-mem-intrinsic-prefix=): New param.
51505         * asan.h (asan_memfn_rtl): Declare.
51506         * asan.cc (asan_memfn_rtls): New variable.
51507         (asan_memfn_rtl): New function.
51508         * builtins.cc (expand_builtin): If
51509         param_asan_kernel_mem_intrinsic_prefix and function is
51510         kernel-{,hw}address sanitized, emit calls to
51511         __{,hw}asan_{memcpy,memmove,memset} rather than
51512         {memcpy,memmove,memset}.  Use sanitize_flags_p (SANITIZE_ADDRESS)
51513         instead of flag_sanitize & SANITIZE_ADDRESS to check if
51514         asan_intercepted_p functions shouldn't be expanded inline.
51516 2023-02-14  Richard Sandiford  <richard.sandiford@arm.com>
51518         PR tree-optimization/96373
51519         * tree-vect-stmts.cc (vectorizable_operation): Predicate trapping
51520         operations on the loop mask.  Reject partial vectors if this isn't
51521         possible.
51523 2023-02-13  Richard Sandiford  <richard.sandiford@arm.com>
51525         PR rtl-optimization/108681
51526         * lra-spills.cc (lra_final_code_change): Extend subreg replacement
51527         code to handle bare uses and clobbers.
51529 2023-02-13  Vladimir N. Makarov  <vmakarov@redhat.com>
51531         * ira.cc (ira_update_equiv_info_by_shuffle_insn): Clear equiv
51532         caller_save_p flag when clearing defined_p flag.
51533         (setup_reg_equiv): Ditto.
51534         * lra-constraints.cc (lra_constraints): Ditto.
51536 2023-02-13  Uroš Bizjak  <ubizjak@gmail.com>
51538         PR target/108516
51539         * config/i386/predicates.md (extr_register_operand):
51540         New special predicate.
51541         * config/i386/i386.md (*extv<mode>): Use extr_register_operand
51542         as operand 1 predicate.
51543         (*exzv<mode>): Ditto.
51544         (*extendqi<SWI24:mode>_ext_1): New insn pattern.
51546 2023-02-13  Richard Biener  <rguenther@suse.de>
51548         PR tree-optimization/28614
51549         * tree-ssa-sccvn.cc (can_track_predicate_on_edge): Avoid
51550         walking all edges in most cases.
51551         (vn_nary_op_insert_pieces_predicated): Avoid repeated
51552         calls to can_track_predicate_on_edge unless checking is
51553         enabled.
51554         (process_bb): Instead call it once here for each edge
51555         we register possibly multiple predicates on.
51557 2023-02-13  Richard Biener  <rguenther@suse.de>
51559         PR tree-optimization/108691
51560         * tree-cfg.cc (notice_special_calls): When the CFG is built
51561         honor gimple_call_ctrl_altering_p.
51562         * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
51563         temporarily if the call is not control-altering.
51564         * calls.cc (emit_call_1): Do not add REG_SETJMP if
51565         cfun->calls_setjmp is not set.  Do not alter cfun->calls_setjmp.
51567 2023-02-13  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
51569         PR target/108102
51570         * config/s390/s390.cc (s390_bb_fallthru_entry_likely): Remove.
51571         (struct s390_sched_state): Initialise to zero.
51572         (s390_sched_variable_issue): For better debuggability also emit
51573         the current side.
51574         (s390_sched_init): Unconditionally reset scheduler state.
51576 2023-02-13  Richard Sandiford  <richard.sandiford@arm.com>
51578         * ifcvt.h (noce_if_info::cond_inverted): New field.
51579         * ifcvt.cc (cond_move_convert_if_block): Swap the then and else
51580         values when cond_inverted is true.
51581         (noce_find_if_block): Allow the condition to be inverted when
51582         handling conditional moves.
51584 2023-02-13  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
51586         * config/s390/predicates.md (execute_operation): Use
51587         constrain_operands instead of extract_constrain_insn in order to
51588         determine wheter there exists a valid alternative.
51590 2023-02-13  Claudiu Zissulescu  <claziss@gmail.com>
51592         * common/config/arc/arc-common.cc (arc_option_optimization_table):
51593         Remove millicode from list.
51595 2023-02-13  Martin Liska  <mliska@suse.cz>
51597         * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
51599 2023-02-13  Richard Biener  <rguenther@suse.de>
51601         PR tree-optimization/106722
51602         * tree-ssa-dce.cc (mark_last_stmt_necessary): Return
51603         whether we marked a stmt.
51604         (mark_control_dependent_edges_necessary): When
51605         mark_last_stmt_necessary didn't mark any stmt make sure
51606         to mark its control dependent edges.
51607         (propagate_necessity): Likewise.
51609 2023-02-13  Kito Cheng  <kito.cheng@sifive.com>
51611         * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
51612         (DWARF_FRAME_REGISTERS): New.
51613         (DWARF_REG_TO_UNWIND_COLUMN): New.
51615 2023-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
51617         * doc/sourcebuild.texi: Remove (broken) direct reference to
51618         "The GNU configure and build system".
51620 2023-02-12  Jin Ma  <jinma@linux.alibaba.com>
51622         * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Change
51623         gen_add3_insn to gen_rtx_SET.
51624         (riscv_adjust_libcall_cfi_epilogue): Likewise.
51626 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
51628         * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
51629         (class vnclip): Ditto.
51630         (BASE): Ditto.
51631         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
51632         * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
51633         (vasub): Ditto.
51634         (vaaddu): Ditto.
51635         (vasubu): Ditto.
51636         (vsmul): Ditto.
51637         (vssra): Ditto.
51638         (vssrl): Ditto.
51639         (vnclipu): Ditto.
51640         (vnclip): Ditto.
51641         * config/riscv/vector-iterators.md (su): Add instruction.
51642         (aadd): Ditto.
51643         (vaalu): Ditto.
51644         * config/riscv/vector.md (@pred_<sat_op><mode>): New pattern.
51645         (@pred_<sat_op><mode>_scalar): Ditto.
51646         (*pred_<sat_op><mode>_scalar): Ditto.
51647         (*pred_<sat_op><mode>_extended_scalar): Ditto.
51648         (@pred_narrow_clip<v_su><mode>): Ditto.
51649         (@pred_narrow_clip<v_su><mode>_scalar): Ditto.
51651 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
51653         * config/riscv/constraints.md (Wbr): Remove unused constraint.
51654         * config/riscv/predicates.md: Fix move operand predicate.
51655         * config/riscv/riscv-vector-builtins-bases.cc (class vnshift): New class.
51656         (class vncvt_x): Ditto.
51657         (class vmerge): Ditto.
51658         (class vmv_v): Ditto.
51659         (BASE): Ditto.
51660         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
51661         * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
51662         (vsrl): Ditto.
51663         (vnsrl): Ditto.
51664         (vnsra): Ditto.
51665         (vncvt_x): Ditto.
51666         (vmerge): Ditto.
51667         (vmv_v): Ditto.
51668         * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
51669         (struct move_def): Ditto.
51670         (SHAPE): Ditto.
51671         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
51672         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): New variable.
51673         (DEF_RVV_WEXTU_OPS): Ditto
51674         * config/riscv/riscv-vector-builtins.def (x_x_w): Fix type for suffix.
51675         (v_v): Ditto.
51676         (v_x): Ditto.
51677         (x_w): Ditto.
51678         (x): Ditto.
51679         * config/riscv/riscv.cc (riscv_print_operand): Refine ASM printting rule.
51680         * config/riscv/vector-iterators.md (nmsac):New iterator.
51681         (nmsub): New iterator.
51682         * config/riscv/vector.md (@pred_merge<mode>): New pattern.
51683         (@pred_merge<mode>_scalar): New pattern.
51684         (*pred_merge<mode>_scalar): New pattern.
51685         (*pred_merge<mode>_extended_scalar): New pattern.
51686         (@pred_narrow_<optab><mode>): New pattern.
51687         (@pred_narrow_<optab><mode>_scalar): New pattern.
51688         (@pred_trunc<mode>): New pattern.
51690 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
51692         * config/riscv/riscv-vector-builtins-bases.cc (class vmadc): New class.
51693         (class vmsbc): Ditto.
51694         (BASE): Define new class.
51695         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
51696         * config/riscv/riscv-vector-builtins-functions.def (vmadc): New define.
51697         (vmsbc): Ditto.
51698         * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
51699         New class.
51700         (SHAPE): Ditto.
51701         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
51702         * config/riscv/riscv-vector-builtins.cc
51703         (function_expander::use_exact_insn): Adjust for new support
51704         * config/riscv/riscv-vector-builtins.h
51705         (function_base::has_merge_operand_p): New function.
51706         * config/riscv/vector-iterators.md: New iterator.
51707         * config/riscv/vector.md (@pred_madc<mode>): New pattern.
51708         (@pred_msbc<mode>): Ditto.
51709         (@pred_madc<mode>_scalar): Ditto.
51710         (@pred_msbc<mode>_scalar): Ditto.
51711         (*pred_madc<mode>_scalar): Ditto.
51712         (*pred_madc<mode>_extended_scalar): Ditto.
51713         (*pred_msbc<mode>_scalar): Ditto.
51714         (*pred_msbc<mode>_extended_scalar): Ditto.
51715         (@pred_madc<mode>_overflow): Ditto.
51716         (@pred_msbc<mode>_overflow): Ditto.
51717         (@pred_madc<mode>_overflow_scalar): Ditto.
51718         (@pred_msbc<mode>_overflow_scalar): Ditto.
51719         (*pred_madc<mode>_overflow_scalar): Ditto.
51720         (*pred_madc<mode>_overflow_extended_scalar): Ditto.
51721         (*pred_msbc<mode>_overflow_scalar): Ditto.
51722         (*pred_msbc<mode>_overflow_extended_scalar): Ditto.
51724 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
51726         * config/riscv/riscv-protos.h (simm5_p): Add vadc/vsbc support.
51727         * config/riscv/riscv-v.cc (simm32_p): Ditto.
51728         * config/riscv/riscv-vector-builtins-bases.cc (class vadc): New class.
51729         (class vsbc): Ditto.
51730         (BASE): Ditto.
51731         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
51732         * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
51733         (vsbc): Ditto.
51734         * config/riscv/riscv-vector-builtins-shapes.cc
51735         (struct no_mask_policy_def): Ditto.
51736         (SHAPE): Ditto.
51737         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
51738         * config/riscv/riscv-vector-builtins.cc
51739         (rvv_arg_type_info::get_base_vector_type): Add vadc/vsbc support.
51740         (rvv_arg_type_info::get_tree_type): Ditto.
51741         (function_expander::use_exact_insn): Ditto.
51742         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
51743         (function_base::use_mask_predication_p): New function.
51744         * config/riscv/vector-iterators.md: New iterator.
51745         * config/riscv/vector.md (@pred_adc<mode>): New pattern.
51746         (@pred_sbc<mode>): Ditto.
51747         (@pred_adc<mode>_scalar): Ditto.
51748         (@pred_sbc<mode>_scalar): Ditto.
51749         (*pred_adc<mode>_scalar): Ditto.
51750         (*pred_adc<mode>_extended_scalar): Ditto.
51751         (*pred_sbc<mode>_scalar): Ditto.
51752         (*pred_sbc<mode>_extended_scalar): Ditto.
51754 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
51756         * config/riscv/vector.md: use "zero" reg.
51758 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
51760         * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
51761         class.
51762         (class vwmulsu): Ditto.
51763         (class vwcvt): Ditto.
51764         (BASE): Add integer widening support.
51765         * config/riscv/riscv-vector-builtins-bases.h: Ditto
51766         * config/riscv/riscv-vector-builtins-functions.def (vwadd): New class.
51767         (vwsub): New class.
51768         (vwmul): New class.
51769         (vwmulu): New class.
51770         (vwmulsu): New class.
51771         (vwaddu): New class.
51772         (vwsubu): New class.
51773         (vwcvt_x): New class.
51774         (vwcvtu_x): New class.
51775         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): New
51776         class.
51777         (struct widen_alu_def): New class.
51778         (SHAPE): New class.
51779         * config/riscv/riscv-vector-builtins-shapes.h: New class.
51780         * config/riscv/riscv-vector-builtins.cc
51781         (rvv_arg_type_info::get_base_vector_type): Add integer widening support.
51782         (rvv_arg_type_info::get_tree_type): Ditto.
51783         * config/riscv/riscv-vector-builtins.def (x_x_v): Change into "x_v"
51784         (x_v): Ditto.
51785         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
51786         widening support.
51787         * config/riscv/riscv-vsetvl.cc (change_insn): Fix reg_equal use bug.
51788         * config/riscv/riscv.h (X0_REGNUM): New constant.
51789         * config/riscv/vector-iterators.md: New iterators.
51790         * config/riscv/vector.md
51791         (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>): New
51792         pattern.
51793         (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
51794         Ditto.
51795         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
51796         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
51797         Ditto.
51798         (@pred_widen_mulsu<mode>): Ditto.
51799         (@pred_widen_mulsu<mode>_scalar): Ditto.
51800         (@pred_<optab><mode>): Ditto.
51802 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
51803             kito-cheng  <kito.cheng@sifive.com>
51805         * common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
51806         * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
51807         (BASE): Ditto.
51808         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
51809         * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
51810         API support.
51811         (vmulhu): Ditto.
51812         (vmulhsu): Ditto.
51813         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
51814         New macro.
51815         (DEF_RVV_FULL_V_U_OPS): Ditto.
51816         (vint8mf8_t): Ditto.
51817         (vint8mf4_t): Ditto.
51818         (vint8mf2_t): Ditto.
51819         (vint8m1_t): Ditto.
51820         (vint8m2_t): Ditto.
51821         (vint8m4_t): Ditto.
51822         (vint8m8_t): Ditto.
51823         (vint16mf4_t): Ditto.
51824         (vint16mf2_t): Ditto.
51825         (vint16m1_t): Ditto.
51826         (vint16m2_t): Ditto.
51827         (vint16m4_t): Ditto.
51828         (vint16m8_t): Ditto.
51829         (vint32mf2_t): Ditto.
51830         (vint32m1_t): Ditto.
51831         (vint32m2_t): Ditto.
51832         (vint32m4_t): Ditto.
51833         (vint32m8_t): Ditto.
51834         (vint64m1_t): Ditto.
51835         (vint64m2_t): Ditto.
51836         (vint64m4_t): Ditto.
51837         (vint64m8_t): Ditto.
51838         (vuint8mf8_t): Ditto.
51839         (vuint8mf4_t): Ditto.
51840         (vuint8mf2_t): Ditto.
51841         (vuint8m1_t): Ditto.
51842         (vuint8m2_t): Ditto.
51843         (vuint8m4_t): Ditto.
51844         (vuint8m8_t): Ditto.
51845         (vuint16mf4_t): Ditto.
51846         (vuint16mf2_t): Ditto.
51847         (vuint16m1_t): Ditto.
51848         (vuint16m2_t): Ditto.
51849         (vuint16m4_t): Ditto.
51850         (vuint16m8_t): Ditto.
51851         (vuint32mf2_t): Ditto.
51852         (vuint32m1_t): Ditto.
51853         (vuint32m2_t): Ditto.
51854         (vuint32m4_t): Ditto.
51855         (vuint32m8_t): Ditto.
51856         (vuint64m1_t): Ditto.
51857         (vuint64m2_t): Ditto.
51858         (vuint64m4_t): Ditto.
51859         (vuint64m8_t): Ditto.
51860         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FULL_V_I_OPS): Ditto.
51861         (DEF_RVV_FULL_V_U_OPS): Ditto.
51862         (check_required_extensions): Add vmulh support.
51863         (rvv_arg_type_info::get_tree_type): Ditto.
51864         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_FULL_V): Ditto.
51865         (enum rvv_base_type): Ditto.
51866         * config/riscv/riscv.opt: Add 'V' extension flag.
51867         * config/riscv/vector-iterators.md (su): New iterator.
51868         * config/riscv/vector.md (@pred_mulh<v_su><mode>): New pattern.
51869         (@pred_mulh<v_su><mode>_scalar): Ditto.
51870         (*pred_mulh<v_su><mode>_scalar): Ditto.
51871         (*pred_mulh<v_su><mode>_extended_scalar): Ditto.
51873 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
51875         * config/riscv/iterators.md: Add sign_extend/zero_extend.
51876         * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
51877         (BASE): Ditto.
51878         * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
51879         * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
51880         define.
51881         (vzext): Ditto.
51882         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Adjust
51883         for vsext/vzext support.
51884         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTI_OPS): New
51885         macro define.
51886         (DEF_RVV_QEXTI_OPS): Ditto.
51887         (DEF_RVV_OEXTI_OPS): Ditto.
51888         (DEF_RVV_WEXTU_OPS): Ditto.
51889         (DEF_RVV_QEXTU_OPS): Ditto.
51890         (DEF_RVV_OEXTU_OPS): Ditto.
51891         (vint16mf4_t): Ditto.
51892         (vint16mf2_t): Ditto.
51893         (vint16m1_t): Ditto.
51894         (vint16m2_t): Ditto.
51895         (vint16m4_t): Ditto.
51896         (vint16m8_t): Ditto.
51897         (vint32mf2_t): Ditto.
51898         (vint32m1_t): Ditto.
51899         (vint32m2_t): Ditto.
51900         (vint32m4_t): Ditto.
51901         (vint32m8_t): Ditto.
51902         (vint64m1_t): Ditto.
51903         (vint64m2_t): Ditto.
51904         (vint64m4_t): Ditto.
51905         (vint64m8_t): Ditto.
51906         (vuint16mf4_t): Ditto.
51907         (vuint16mf2_t): Ditto.
51908         (vuint16m1_t): Ditto.
51909         (vuint16m2_t): Ditto.
51910         (vuint16m4_t): Ditto.
51911         (vuint16m8_t): Ditto.
51912         (vuint32mf2_t): Ditto.
51913         (vuint32m1_t): Ditto.
51914         (vuint32m2_t): Ditto.
51915         (vuint32m4_t): Ditto.
51916         (vuint32m8_t): Ditto.
51917         (vuint64m1_t): Ditto.
51918         (vuint64m2_t): Ditto.
51919         (vuint64m4_t): Ditto.
51920         (vuint64m8_t): Ditto.
51921         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): Ditto.
51922         (DEF_RVV_QEXTI_OPS): Ditto.
51923         (DEF_RVV_OEXTI_OPS): Ditto.
51924         (DEF_RVV_WEXTU_OPS): Ditto.
51925         (DEF_RVV_QEXTU_OPS): Ditto.
51926         (DEF_RVV_OEXTU_OPS): Ditto.
51927         (rvv_arg_type_info::get_base_vector_type): Add sign_exted/zero_extend
51928         support.
51929         (rvv_arg_type_info::get_tree_type): Ditto.
51930         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
51931         * config/riscv/vector-iterators.md (z): New attribute.
51932         * config/riscv/vector.md (@pred_<optab><mode>_vf2): New pattern.
51933         (@pred_<optab><mode>_vf4): Ditto.
51934         (@pred_<optab><mode>_vf8): Ditto.
51936 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
51938         * config/riscv/iterators.md: Add saturating Addition && Subtraction.
51939         * config/riscv/riscv-v.cc (has_vi_variant_p): Ditto.
51940         * config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto.
51941         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
51942         * config/riscv/riscv-vector-builtins-functions.def (vsadd): New def.
51943         (vssub): Ditto.
51944         (vsaddu): Ditto.
51945         (vssubu): Ditto.
51946         * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
51947         support.
51948         (sll.vv): Ditto.
51949         (%3,%v4): Ditto.
51950         (%3,%4): Ditto.
51951         * config/riscv/vector.md (@pred_<optab><mode>): New pattern.
51952         (@pred_<optab><mode>_scalar): New pattern.
51953         (*pred_<optab><mode>_scalar): New pattern.
51954         (*pred_<optab><mode>_extended_scalar): New pattern.
51956 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
51958         * config/riscv/iterators.md: Add neg and not.
51959         * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
51960         (BASE): Ditto.
51961         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
51962         * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
51963         into alu.
51964         (vsub): Ditto.
51965         (vand): Ditto.
51966         (vor): Ditto.
51967         (vxor): Ditto.
51968         (vsll): Ditto.
51969         (vsra): Ditto.
51970         (vsrl): Ditto.
51971         (vmin): Ditto.
51972         (vmax): Ditto.
51973         (vminu): Ditto.
51974         (vmaxu): Ditto.
51975         (vmul): Ditto.
51976         (vdiv): Ditto.
51977         (vrem): Ditto.
51978         (vdivu): Ditto.
51979         (vremu): Ditto.
51980         (vrsub): Ditto.
51981         (vneg): Ditto.
51982         (vnot): Ditto.
51983         * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
51984         (struct alu_def): Ditto.
51985         (SHAPE): Ditto.
51986         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
51987         * config/riscv/riscv-vector-builtins.cc: Support unary C/C/++.
51988         * config/riscv/vector-iterators.md: New iterator.
51989         * config/riscv/vector.md (@pred_<optab><mode>): New pattern
51991 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
51993         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
51995 2023-02-11  Jakub Jelinek  <jakub@redhat.com>
51997         PR ipa/108605
51998         * ipa-cp.cc (ipa_agg_value_from_jfunc): Return NULL_TREE also if
51999         item->offset bit position is too large to be representable as
52000         unsigned int byte position.
52002 2023-02-11  Gerald Pfeifer  <gerald@pfeifer.com>
52004         * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
52006 2023-02-10  Vladimir N. Makarov  <vmakarov@redhat.com>
52008         * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
52009         valid_combine only when ira_use_lra_p is true.
52011 2023-02-10  Vladimir N. Makarov  <vmakarov@redhat.com>
52013         * params.opt (ira-simple-lra-insn-threshold): Add new param.
52014         * ira.cc (ira): Use the param to switch on simple LRA.
52016 2023-02-10  Andrew MacLeod  <amacleod@redhat.com>
52018         PR tree-optimization/108687
52019         * gimple-range-cache.cc (ranger_cache::range_on_edge): Revert
52020         back to RFD_NONE mode for calculations.
52021         (ranger_cache::propagate_cache): Call the internal edge range API
52022         with RFD_READ_ONLY instead of changing the external routine.
52024 2023-02-10  Andrew MacLeod  <amacleod@redhat.com>
52026         PR tree-optimization/108520
52027         * gimple-range-infer.cc (check_assume_func): Invoke
52028         gimple_range_global directly instead using global_range_query.
52029         * value-query.cc (get_range_global): Add function context and
52030         avoid calling nonnull_arg_p if not cfun.
52031         (gimple_range_global): Add function context pointer.
52032         * value-query.h (imple_range_global): Add function context.
52034 2023-02-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
52036         * config/riscv/constraints.md (Wdm): Adjust constraint.
52037         (Wbr): New constraint.
52038         * config/riscv/predicates.md (reg_or_int_operand): New predicate.
52039         * config/riscv/riscv-protos.h (emit_pred_op): Remove function.
52040         (emit_vlmax_op): New function.
52041         (emit_nonvlmax_op): Ditto.
52042         (simm32_p): Ditto.
52043         (neg_simm5_p): Ditto.
52044         (has_vi_variant_p): Ditto.
52045         * config/riscv/riscv-v.cc (emit_pred_op): Adjust function.
52046         (emit_vlmax_op): New function.
52047         (emit_nonvlmax_op): Ditto.
52048         (expand_const_vector): Adjust function.
52049         (legitimize_move): Ditto.
52050         (simm32_p): New function.
52051         (simm5_p): Ditto.
52052         (neg_simm5_p): Ditto.
52053         (has_vi_variant_p): Ditto.
52054         * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
52055         (BASE): Ditto.
52056         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
52057         * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
52058         unsigned cases.
52059         (vmax): Ditto.
52060         (vminu): Remove signed cases.
52061         (vmaxu): Ditto.
52062         (vdiv): Remove unsigned cases.
52063         (vrem): Ditto.
52064         (vdivu): Remove signed cases.
52065         (vremu): Ditto.
52066         (vadd): Adjust.
52067         (vsub): Ditto.
52068         (vrsub): New class.
52069         (vand): Adjust.
52070         (vor): Ditto.
52071         (vxor): Ditto.
52072         (vmul): Ditto.
52073         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_U_OPS): New macro.
52074         * config/riscv/riscv.h: change VL/VTYPE as fixed reg.
52075         * config/riscv/vector-iterators.md: New iterators.
52076         * config/riscv/vector.md (@pred_broadcast<mode>): Adjust pattern for vx
52077         support.
52078         (@pred_<optab><mode>_scalar): New pattern.
52079         (@pred_sub<mode>_reverse_scalar): Ditto.
52080         (*pred_<optab><mode>_scalar): Ditto.
52081         (*pred_<optab><mode>_extended_scalar): Ditto.
52082         (*pred_sub<mode>_reverse_scalar): Ditto.
52083         (*pred_sub<mode>_extended_reverse_scalar): Ditto.
52085 2023-02-10  Richard Biener  <rguenther@suse.de>
52087         PR tree-optimization/108724
52088         * tree-vect-stmts.cc (vectorizable_operation): Avoid
52089         using word_mode vectors when vector lowering will
52090         decompose them to elementwise operations.
52092 2023-02-10  Jakub Jelinek  <jakub@redhat.com>
52094         Revert:
52095         2023-02-09  Martin Liska  <mliska@suse.cz>
52097         PR target/100758
52098         * doc/extend.texi: Document that the function
52099         does not work correctly for old VIA processors.
52101 2023-02-10  Andrew Pinski  <apinski@marvell.com>
52102             Andrew Macleod   <amacleod@redhat.com>
52104         PR tree-optimization/108684
52105         * tree-ssa-dce.cc (simple_dce_from_worklist):
52106         Check all ssa names and not just non-vdef ones
52107         before accepting the inline-asm.
52108         Call unlink_stmt_vdef on the statement before
52109         removing it.
52111 2023-02-09  Vladimir N. Makarov  <vmakarov@redhat.com>
52113         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
52114         * ira.cc (validate_equiv_mem): Check memref address variance.
52115         (no_equiv): Clear caller_save_p flag.
52116         (update_equiv_regs): Define caller save equivalence for
52117         valid_combine.
52118         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
52119         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
52120         call_save_p.  Use caller save equivalence depending on the arg.
52121         (split_reg): Adjust the call.
52123 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
52125         PR target/100758
52126         * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Formatting fixes.
52127         (cpu_indicator_init): Call get_available_features for all CPUs with
52128         max_level >= 1, rather than just Intel, AMD or Zhaoxin.  Formatting
52129         fixes.
52131 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
52133         PR tree-optimization/108688
52134         * match.pd (bit_field_ref [bit_insert]): Simplify BIT_FIELD_REF
52135         of BIT_INSERT_EXPR extracting exactly all inserted bits even
52136         when without mode precision.  Formatting fixes.
52138 2023-02-09  Andrew Pinski  <apinski@marvell.com>
52140         PR tree-optimization/108688
52141         * match.pd (bit_field_ref [bit_insert]): Avoid generating
52142         BIT_FIELD_REFs of non-mode-precision integral operands.
52144 2023-02-09  Martin Liska  <mliska@suse.cz>
52146         PR target/100758
52147         * doc/extend.texi: Document that the function
52148         does not work correctly for old VIA processors.
52150 2023-02-09  Andreas Schwab  <schwab@suse.de>
52152         * lto-wrapper.cc (merge_and_complain): Handle
52153         -funwind-tables and -fasynchronous-unwind-tables.
52154         (append_compiler_options): Likewise.
52156 2023-02-09  Richard Biener  <rguenther@suse.de>
52158         PR tree-optimization/26854
52159         * tree-into-ssa.cc (update_ssa): Turn blocks_to_update to tree
52160         view around insert_updated_phi_nodes_for.
52161         * tree-ssa-alias.cc (maybe_skip_until): Allocate visited bitmap
52162         in tree view.
52163         (walk_aliased_vdefs_1): Likewise.
52165 2023-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
52167         * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
52169 2023-02-08  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
52171         PR target/108505
52172         * config.gcc (tm_mlib_file): Define new variable.
52174 2023-02-08  Jakub Jelinek  <jakub@redhat.com>
52176         PR tree-optimization/108692
52177         * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is
52178         widened_code which is different from code, don't call
52179         vect_look_through_possible_promotion but instead just check op is
52180         SSA_NAME with integral type for which vect_is_simple_use is true
52181         and call set_op on this_unprom.
52183 2023-02-08  Andrea Corallo  <andrea.corallo@arm.com>
52185         * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
52186         declaration.
52187         * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
52188         definition.
52189         * config/aarch64/aarch64.opt (aarch64_ra_sign_key): Rename
52190         to 'aarch_ra_sign_key'.
52191         * config/arm/aarch-common.cc (aarch_ra_sign_key): Remove
52192         declaration.
52193         * config/arm/arm-protos.h (aarch_ra_sign_key): Likewise.
52194         * config/arm/arm.cc (enum aarch_key_type): Remove definition.
52195         * config/arm/arm.opt: Define.
52197 2023-02-08  Richard Sandiford  <richard.sandiford@arm.com>
52199         PR tree-optimization/108316
52200         * tree-vect-stmts.cc (get_load_store_type): When using
52201         internal functions for gather/scatter, make sure that the type
52202         of the offset argument is consistent with the offset vector type.
52204 2023-02-08  Vladimir N. Makarov  <vmakarov@redhat.com>
52206         Revert:
52207         2023-02-07  Vladimir N. Makarov  <vmakarov@redhat.com>
52209         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
52210         * ira.cc (validate_equiv_mem): Check memref address variance.
52211         (update_equiv_regs): Define caller save equivalence for
52212         valid_combine.
52213         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
52214         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
52215         call_save_p.  Use caller save equivalence depending on the arg.
52216         (split_reg): Adjust the call.
52218 2023-02-08  Jakub Jelinek  <jakub@redhat.com>
52220         * tree.def (SAD_EXPR): Remove outdated comment about missing
52221         WIDEN_MINUS_EXPR.
52223 2023-02-07  Marek Polacek  <polacek@redhat.com>
52225         * doc/invoke.texi: Update -fchar8_t documentation.
52227 2023-02-07  Vladimir N. Makarov  <vmakarov@redhat.com>
52229         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
52230         * ira.cc (validate_equiv_mem): Check memref address variance.
52231         (update_equiv_regs): Define caller save equivalence for
52232         valid_combine.
52233         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
52234         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
52235         call_save_p.  Use caller save equivalence depending on the arg.
52236         (split_reg): Adjust the call.
52238 2023-02-07  Richard Biener  <rguenther@suse.de>
52240         PR tree-optimization/26854
52241         * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
52242         instead of immediate uses.
52244 2023-02-07  Jakub Jelinek  <jakub@redhat.com>
52246         PR tree-optimization/106923
52247         * ipa-split.cc (execute_split_functions): Don't split returns_twice
52248         functions.
52250 2023-02-07  Jakub Jelinek  <jakub@redhat.com>
52252         PR tree-optimization/106433
52253         * cgraph.cc (set_const_flag_1): Recurse on simd clones too.
52254         (cgraph_node::set_pure_flag): Call set_pure_flag_1 on simd clones too.
52256 2023-02-07  Jan Hubicka  <jh@suse.cz>
52258         * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
52259         for znver4.
52261 2023-02-06  Andrew Stubbs  <ams@codesourcery.com>
52263         * config/gcn/mkoffload.cc (gcn_stack_size): New global variable.
52264         (process_asm): Create a constructor for GCN_STACK_SIZE.
52265         (main): Parse the -mstack-size option.
52267 2023-02-06  Alex Coplan  <alex.coplan@arm.com>
52269         PR target/104921
52270         * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
52271         Use correct constraint for operand 3.
52273 2023-02-06  Martin Jambor  <mjambor@suse.cz>
52275         * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
52277 2023-02-06  Xi Ruoyao  <xry111@xry111.site>
52279         * config/loongarch/loongarch.md (bytepick_w_ashift_amount):
52280         New define_int_iterator.
52281         (bytepick_d_ashift_amount): Likewise.
52282         (bytepick_imm): New define_int_attr.
52283         (bytepick_w_lshiftrt_amount): Likewise.
52284         (bytepick_d_lshiftrt_amount): Likewise.
52285         (bytepick_w_<bytepick_imm>): New define_insn template.
52286         (bytepick_w_<bytepick_imm>_extend): Likewise.
52287         (bytepick_d_<bytepick_imm>): Likewise.
52288         (bytepick_w): Remove unused define_insn.
52289         (bytepick_d): Likewise.
52290         (UNSPEC_BYTEPICK_W): Remove unused unspec.
52291         (UNSPEC_BYTEPICK_D): Likewise.
52292         * config/loongarch/predicates.md (const_0_to_3_operand):
52293         Remove unused define_predicate.
52294         (const_0_to_7_operand): Likewise.
52296 2023-02-06  Jakub Jelinek  <jakub@redhat.com>
52298         PR tree-optimization/108655
52299         * ubsan.cc (sanitize_unreachable_fn): For -funreachable-traps
52300         or -fsanitize=unreachable -fsanitize-trap=unreachable return
52301         BUILT_IN_UNREACHABLE_TRAP decl rather than BUILT_IN_TRAP.
52303 2023-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
52305         * doc/install.texi (Specific): Remove PW32.
52307 2023-02-03  Jakub Jelinek  <jakub@redhat.com>
52309         PR tree-optimization/108647
52310         * range-op.cc (operator_equal::op1_range,
52311         operator_not_equal::op1_range): Don't test op2 bound
52312         equality if op2.undefined_p (), instead set_varying.
52313         (operator_lt::op1_range, operator_le::op1_range,
52314         operator_gt::op1_range, operator_ge::op1_range): Return false if
52315         op2.undefined_p ().
52316         (operator_lt::op2_range, operator_le::op2_range,
52317         operator_gt::op2_range, operator_ge::op2_range): Return false if
52318         op1.undefined_p ().
52320 2023-02-03  Aldy Hernandez  <aldyh@redhat.com>
52322         PR tree-optimization/108639
52323         * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
52324         widest_int.
52325         (irange::operator==): Same.
52327 2023-02-03  Aldy Hernandez  <aldyh@redhat.com>
52329         PR tree-optimization/108647
52330         * range-op-float.cc (foperator_lt::op1_range): Handle undefined ranges.
52331         (foperator_lt::op2_range): Same.
52332         (foperator_le::op1_range): Same.
52333         (foperator_le::op2_range): Same.
52334         (foperator_gt::op1_range): Same.
52335         (foperator_gt::op2_range): Same.
52336         (foperator_ge::op1_range): Same.
52337         (foperator_ge::op2_range): Same.
52338         (foperator_unordered_lt::op1_range): Same.
52339         (foperator_unordered_lt::op2_range): Same.
52340         (foperator_unordered_le::op1_range): Same.
52341         (foperator_unordered_le::op2_range): Same.
52342         (foperator_unordered_gt::op1_range): Same.
52343         (foperator_unordered_gt::op2_range): Same.
52344         (foperator_unordered_ge::op1_range): Same.
52345         (foperator_unordered_ge::op2_range): Same.
52347 2023-02-03  Andrew MacLeod  <amacleod@redhat.com>
52349         PR tree-optimization/107570
52350         * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
52352 2023-02-03  Gaius Mulley  <gaiusmod2@gmail.com>
52354         * doc/gm2.texi (Internals): Remove from menu.
52355         (Using): Comment out ifnohtml conditional.
52356         (Documentation): Use gcc url.
52357         (License): Node simplified.
52358         (Copying): New node.  Include gpl_v3_without_node.
52359         (Contributing): Node simplified.
52360         (Internals): Commented out.
52361         (Libraries): Node simplified.
52362         (Indices): Ditto.
52363         (Contents): Ditto.
52364         (Functions): Ditto.
52366 2023-02-03  Christophe Lyon  <christophe.lyon@arm.com>
52368         * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
52369         attribute.
52370         (mve_vqshluq_m_n_s<mode>): Likewise.
52371         (mve_vshlq_m_<supf><mode>): Likewise.
52372         (mve_vsriq_m_n_<supf><mode>): Likewise.
52373         (mve_vsubq_m_<supf><mode>): Likewise.
52375 2023-02-03  Martin Jambor  <mjambor@suse.cz>
52377         PR ipa/108384
52378         * ipa-sra.cc (push_param_adjustments_for_index): Remove a size check
52379         when comparing to an IPA-CP value.
52380         (dump_list_of_param_indices): New function.
52381         (adjust_parameter_descriptions): Check for mismatching IPA-CP values.
52382         Dump removed candidates using dump_list_of_param_indices.
52383         * ipa-param-manipulation.cc
52384         (ipa_param_body_adjustments::modify_expression): Add assert checking
52385         sizes of a VIEW_CONVERT_EXPR will match.
52386         (ipa_param_body_adjustments::modify_assignment): Likewise.
52388 2023-02-03  Monk Chiang  <monk.chiang@sifive.com>
52390         * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
52391         * config/riscv/riscv.cc: Ditto.
52393 2023-02-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
52395         * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
52396         (sll.vv): Ditto.
52397         (%3,%4): Ditto.
52398         (%3,%v4): Ditto.
52399         * config/riscv/vector.md: Ditto.
52401 2023-02-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
52403         * config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate.
52404         * config/riscv/riscv-vector-builtins-bases.cc: New class.
52405         * config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto.
52406         (vsra): Ditto.
52407         (vsrl): Ditto.
52408         * config/riscv/riscv-vector-builtins.cc: Ditto.
52409         * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
52411 2023-02-02  Iain Sandoe  <iain@sandoe.co.uk>
52413         * toplev.cc (toplev::main): Only print the version information header
52414         from toplevel main().
52416 2023-02-02  Paul-Antoine Arras  <pa@codesourcery.com>
52418         * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
52419         cond_{ashl|ashr|lshr}
52421 2023-02-02  Richard Sandiford  <richard.sandiford@arm.com>
52423         PR rtl-optimization/108086
52424         * rtl-ssa/insns.h (insn_info): Make m_num_defs a full unsigned int.
52425         Adjust size-related commentary accordingly.
52427 2023-02-02  Richard Sandiford  <richard.sandiford@arm.com>
52429         PR rtl-optimization/108508
52430         * rtl-ssa/accesses.cc (function_info::split_clobber_group): When
52431         the splay tree search gives the first clobber in the second group,
52432         make sure that the root of the first clobber group is updated
52433         correctly.  Enter the new clobber group into the definition splay
52434         tree.
52436 2023-02-02  Jin Ma  <jinma@linux.alibaba.com>
52438         * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
52439         Fix finding best match score.
52441 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
52443         PR debug/106746
52444         PR rtl-optimization/108463
52445         PR target/108484
52446         * cselib.cc (cselib_current_insn): Move declaration earlier.
52447         (cselib_hasher::equal): For debug only locs, temporarily override
52448         cselib_current_insn to their l->setting_insn for the
52449         rtx_equal_for_cselib_1 call, so that unsuccessful comparisons don't
52450         promote some debug locs.
52451         * sched-deps.cc (sched_analyze_2) <case MEM>: For MEMs in DEBUG_INSNs
52452         when using cselib call cselib_lookup_from_insn on the address but
52453         don't substitute it.
52455 2023-02-02  Richard Biener  <rguenther@suse.de>
52457         PR middle-end/108625
52458         * genmatch.cc (expr::gen_transform): Also disallow resimplification
52459         from pushing to lseq with force_leaf.
52460         (dt_simplify::gen_1): Likewise.
52462 2023-02-02  Andrew Stubbs  <ams@codesourcery.com>
52464         * config/gcn/gcn-run.cc: Include libgomp-gcn.h.
52465         (struct kernargs): Replace the common content with kernargs_abi.
52466         (struct heap): Delete.
52467         (main): Read GCN_STACK_SIZE envvar.
52468         Allocate space for the device stacks.
52469         Write the new kernargs fields.
52470         * config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt.
52471         (default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and
52472         PRIVATE_SEGMENT_WAVE_OFFSET_ARG.
52473         (gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content.
52474         (gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top.
52475         Set up the stacks from the values in the kernargs, not private.
52476         (gcn_expand_builtin_1): Match the stack configuration in the prologue.
52477         (gcn_hsa_declare_function_name): Turn off the private segment.
52478         (gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed.
52479         * config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register.
52480         * config/gcn/gcn.opt (mstack-size): Change the description.
52482 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
52484         PR target/108443
52485         * config/arm/arm.h (VALID_MVE_PRED_MODE): Add V2QI.
52486         * config/arm/arm.cc (thumb2_legitimate_address_p): Use HImode for
52487         addressing MVE predicate modes.
52488         (mve_bool_vec_to_const): Change to represent correct MVE predicate
52489         format.
52490         (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
52491         modes.
52492         (arm_vector_mode_supported_p): Likewise.
52493         (arm_mode_to_pred_mode): Add V2QI.
52494         * config/arm/arm-builtins.cc (UNOP_PRED_UNONE_QUALIFIERS): New
52495         qualifier.
52496         (UNOP_PRED_PRED_QUALIFIERS): New qualifier
52497         (BINOP_PRED_UNONE_PRED_QUALIFIERS): New qualifier.
52498         (v2qi_UP): New macro.
52499         (v4bi_UP): New macro.
52500         (v8bi_UP): New macro.
52501         (v16bi_UP): New macro.
52502         (arm_expand_builtin_args): Make it able to expand the new predicate
52503         modes.
52504         * config/arm/arm-modes.def (V2QI): New mode.
52505         * config/arm/arm-simd-builtin-types.def (Pred1x16_t, Pred2x8_t
52506         Pred4x4_t): Remove unused predicate builtin types.
52507         * config/arm/arm_mve.h (__arm_vctp16q, __arm_vctp32q, __arm_vctp64q,
52508         __arm_vctp8q, __arm_vpnot, __arm_vctp8q_m, __arm_vctp64q_m,
52509         __arm_vctp32q_m, __arm_vctp16q_m): Use predicate modes.
52510         * config/arm/arm_mve_builtins.def (vctp16q, vctp32q, vctp64q, vctp8q,
52511         vpnot, vctp8q_m, vctp16q_m, vctp32q_m, vctp64q_m): Likewise.
52512         * config/arm/constraints.md (DB): Check for VALID_MVE_PRED_MODE instead
52513         of MODE_VECTOR_BOOL.
52514         * config/arm/iterators.md (MVE_7, MVE_7_HI): Add V2QI
52515         (MVE_VPRED): Likewise.
52516         (MVE_vpred): Add V2QI and map upper case predicate modes to lower case.
52517         (MVE_vctp): New mode attribute.
52518         (mode1): Remove.
52519         (VCTPQ): Remove.
52520         (VCTPQ_M): Remove.
52521         * config/arm/mve.md (mve_vctp<mode1>qhi): Rename this...
52522         (mve_vctp<MVE_vctp>q<MVE_vpred>): ... to this. And use new mode
52523         attributes.
52524         (mve_vpnothi): Rename this...
52525         (mve_vpnotv16bi): ... to this.
52526         (mve_vctp<mode1>q_mhi): Rename this...
52527         (mve_vctp<MVE_vctp>q_m<MVE_vpred>):... to this.
52528         (mve_vldrdq_gather_base_z_<supf>v2di,
52529         mve_vldrdq_gather_offset_z_<supf>v2di,
52530         mve_vldrdq_gather_shifted_offset_z_<supf>v2di,
52531         mve_vstrdq_scatter_base_p_<supf>v2di,
52532         mve_vstrdq_scatter_offset_p_<supf>v2di,
52533         mve_vstrdq_scatter_offset_p_<supf>v2di_insn,
52534         mve_vstrdq_scatter_shifted_offset_p_<supf>v2di,
52535         mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn,
52536         mve_vstrdq_scatter_base_wb_p_<supf>v2di,
52537         mve_vldrdq_gather_base_wb_z_<supf>v2di,
52538         mve_vldrdq_gather_base_nowb_z_<supf>v2di,
52539         mve_vldrdq_gather_base_wb_z_<supf>v2di_insn):  Use V2QI insead of HI for
52540         predicates.
52541         * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
52542         these...
52543         (VCTP): ... with this.
52544         (VCTP8Q_M, VCTP16Q_M, VCTP32Q_M, VCTP64Q_M): Replace these...
52545         (VCTP_M): ... with this.
52546         * config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Use
52547         VALID_MVE_PRED_MODE instead of checking for MODE_VECTOR_BOOL class.
52549 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
52551         PR target/107674
52552         * config/arm/arm.cc (arm_hard_regno_mode_ok): Use new MACRO.
52553         (arm_modes_tieable_p): Make MVE predicate modes tieable.
52554         * config/arm/arm.h (VALID_MVE_PRED_MODE):  New define.
52555         * simplify-rtx.cc (simplify_context::simplify_subreg): Teach
52556         simplify_subreg to simplify subregs where the outermode is not scalar.
52558 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
52560         PR target/107674
52561         * config/arm/arm-builtins.cc (arm_simd_builtin_type): Rewrite to use
52562         new qualifiers parameter and use unsigned short type for MVE predicate.
52563         (arm_init_builtin): Call arm_simd_builtin_type with qualifiers
52564         parameter.
52565         (arm_init_crypto_builtins): Likewise.
52567 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
52569         PR ipa/107300
52570         * builtins.def (BUILT_IN_UNREACHABLE_TRAP): New builtin.
52571         * internal-fn.def (TRAP): Remove.
52572         * internal-fn.cc (expand_TRAP): Remove.
52573         * tree.cc (build_common_builtin_nodes): Define
52574         BUILT_IN_UNREACHABLE_TRAP if not yet defined.
52575         (builtin_decl_unreachable): Use BUILT_IN_UNREACHABLE_TRAP
52576         instead of BUILT_IN_TRAP.
52577         * gimple.cc (gimple_build_builtin_unreachable): Remove
52578         emitting internal function for BUILT_IN_TRAP.
52579         * asan.cc (maybe_instrument_call): Handle BUILT_IN_UNREACHABLE_TRAP.
52580         * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Handle
52581         BUILT_IN_UNREACHABLE_TRAP instead of BUILT_IN_TRAP.
52582         * ipa-devirt.cc (possible_polymorphic_call_target_p): Handle
52583         BUILT_IN_UNREACHABLE_TRAP.
52584         * builtins.cc (expand_builtin, is_inexpensive_builtin): Likewise.
52585         * tree-cfg.cc (verify_gimple_call,
52586         pass_warn_function_return::execute): Likewise.
52587         * attribs.cc (decl_attributes): Don't report exclusions on
52588         BUILT_IN_UNREACHABLE_TRAP either.
52590 2023-02-02  liuhongt  <hongtao.liu@intel.com>
52592         PR tree-optimization/108601
52593         * tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Removed.
52594         * tree-vect-loop.cc
52595         (vectorizable_nonlinear_induction): Remove
52596         vect_can_peel_nonlinear_iv_p.
52597         (vect_can_peel_nonlinear_iv_p): Don't peel
52598         nonlinear iv(mult or shift) for epilog when vf is not
52599         constant and moved the defination to ..
52600         * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p):
52601         .. Here.
52603 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
52605         PR middle-end/108435
52606         * tree-nested.cc (convert_nonlocal_omp_clauses)
52607         <case OMP_CLAUSE_LASTPRIVATE>: If info->new_local_var_chain and *seq
52608         is not a GIMPLE_BIND, wrap the sequence into a new GIMPLE_BIND
52609         before calling declare_vars.
52610         (convert_nonlocal_omp_clauses) <case OMP_CLAUSE_LINEAR>: Merge
52611         with the OMP_CLAUSE_LASTPRIVATE handling except for whether
52612         seq is initialized to &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)
52613         or &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause).
52615 2023-02-01  Tamar Christina  <tamar.christina@arm.com>
52617         * common/config/aarch64/aarch64-common.cc
52618         (struct aarch64_option_extension): Add native_detect and document struct
52619         a bit more.
52620         (all_extensions): Set new field native_detect.
52621         * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
52622         unused struct.
52624 2023-02-01  Martin Liska  <mliska@suse.cz>
52626         * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
52627         value if set.
52629 2023-02-01  Andrew MacLeod  <amacleod@redhat.com>
52631         PR tree-optimization/108356
52632         * gimple-range-cache.cc (ranger_cache::range_on_edge): Always
52633         do a search of the DOM tree for a range.
52635 2023-02-01  Martin Liska  <mliska@suse.cz>
52637         PR ipa/108509
52638         * cgraphunit.cc (walk_polymorphic_call_targets): Insert
52639         ony non-null values.
52640         * ipa.cc (walk_polymorphic_call_targets): Likewise.
52642 2023-02-01  Martin Liska  <mliska@suse.cz>
52644         PR driver/108572
52645         * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
52646         -gz=zstd.
52648 2023-02-01  Jakub Jelinek  <jakub@redhat.com>
52650         PR debug/108573
52651         * ree.cc (combine_reaching_defs): Don't return false for paradoxical
52652         subregs in DEBUG_INSNs.
52654 2023-02-01  Richard Sandiford  <richard.sandiford@arm.com>
52656         * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
52658 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
52660         * config/s390/s390.cc (s390_restore_gpr_p): New function.
52661         (s390_preserve_gpr_arg_in_range_p): New function.
52662         (s390_preserve_gpr_arg_p): New function.
52663         (s390_preserve_fpr_arg_p): New function.
52664         (s390_register_info_stdarg_fpr): Rename to ...
52665         (s390_register_info_arg_fpr): ... this. Add -mpreserve-args handling.
52666         (s390_register_info_stdarg_gpr): Rename to ...
52667         (s390_register_info_arg_gpr): ... this. Add -mpreserve-args handling.
52668         (s390_register_info): Use the renamed functions above.
52669         (s390_optimize_register_info): Likewise.
52670         (save_fpr): Generate CFI for -mpreserve-args.
52671         (save_gprs): Generate CFI for -mpreserve-args. Drop return value.
52672         (s390_emit_prologue): Adjust to changed calling convention of save_gprs.
52673         (s390_optimize_prologue): Likewise.
52674         * config/s390/s390.opt: New option -mpreserve-args
52676 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
52678         * config/s390/s390.cc (save_gprs): Use gen_frame_mem.
52679         (restore_gprs): Likewise.
52680         (s390_emit_stack_tie): Make the stack_tie to be dependent on the
52681         frame pointer if a frame-pointer is used.
52682         (s390_emit_prologue): Emit stack_tie when frame-pointer is needed.
52683         * config/s390/s390.md (stack_tie): Add a register operand and
52684         rename to ...
52685         (@stack_tie<mode>): ... this.
52687 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
52689         * dwarf2cfi.cc (dwarf2out_frame_debug_cfa_restore): Add
52690         EMIT_CFI parameter.
52691         (dwarf2out_frame_debug): Add case for REG_CFA_NORESTORE.
52692         * reg-notes.def (REG_CFA_NOTE): New reg note definition.
52694 2023-02-01  Richard Biener  <rguenther@suse.de>
52696         PR middle-end/108500
52697         * dominance.cc (assign_dfs_numbers): Replace recursive DFS
52698         with tree traversal algorithm.
52700 2023-02-01  Jason Merrill  <jason@redhat.com>
52702         * doc/invoke.texi: Document -Wno-changes-meaning.
52704 2023-02-01  David Malcolm  <dmalcolm@redhat.com>
52706         * doc/invoke.texi (Static Analyzer Options): Add notes about
52707         limitations of -fanalyzer.
52709 2023-01-31  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
52711         * config/riscv/constraints.md (vj): New.
52712         (vk): Ditto
52713         * config/riscv/iterators.md: Add more opcode.
52714         * config/riscv/predicates.md (vector_arith_operand): New.
52715         (vector_neg_arith_operand): New.
52716         (vector_shift_operand): New.
52717         * config/riscv/riscv-vector-builtins-bases.cc (class binop): New.
52718         * config/riscv/riscv-vector-builtins-bases.h: (vadd): New.
52719         (vsub): Ditto.
52720         (vand): Ditto.
52721         (vor): Ditto.
52722         (vxor): Ditto.
52723         (vsll): Ditto.
52724         (vsra): Ditto.
52725         (vsrl): Ditto.
52726         (vmin): Ditto.
52727         (vmax): Ditto.
52728         (vminu): Ditto.
52729         (vmaxu): Ditto.
52730         (vmul): Ditto.
52731         (vdiv): Ditto.
52732         (vrem): Ditto.
52733         (vdivu): Ditto.
52734         (vremu): Ditto.
52735         * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
52736         (vsub): Ditto.
52737         (vand): Ditto.
52738         (vor): Ditto.
52739         (vxor): Ditto.
52740         (vsll): Ditto.
52741         (vsra): Ditto.
52742         (vsrl): Ditto.
52743         (vmin): Ditto.
52744         (vmax): Ditto.
52745         (vminu): Ditto.
52746         (vmaxu): Ditto.
52747         (vmul): Ditto.
52748         (vdiv): Ditto.
52749         (vrem): Ditto.
52750         (vdivu): Ditto.
52751         (vremu): Ditto.
52752         * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): New.
52753         * config/riscv/riscv-vector-builtins-shapes.h (binop): New.
52754         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New.
52755         (DEF_RVV_U_OPS): New.
52756         (rvv_arg_type_info::get_base_vector_type): Handle
52757         RVV_BASE_shift_vector.
52758         (rvv_arg_type_info::get_tree_type): Ditto.
52759         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add
52760         RVV_BASE_shift_vector.
52761         * config/riscv/riscv.cc (riscv_print_operand): Handle 'V'.
52762         * config/riscv/vector-iterators.md: Handle more opcode.
52763         * config/riscv/vector.md (@pred_<optab><mode>): New.
52765 2023-01-31  Philipp Tomsich  <philipp.tomsich@vrull.eu>
52767         PR target/108589
52768         * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
52769         REG_P on SET_DEST.
52771 2023-01-31  Richard Sandiford  <richard.sandiford@arm.com>
52773         PR tree-optimization/108608
52774         * tree-vect-loop.cc (vect_transform_reduction): Handle single
52775         def-use cycles that involve function calls rather than tree codes.
52777 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
52779         PR tree-optimization/108385
52780         * gimple-range-gori.cc (gori_compute::compute_operand_range):
52781         Allow VARYING computations to continue if there is a relation.
52782         * range-op.cc (pointer_plus_operator::op2_range): New.
52784 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
52786         PR tree-optimization/108359
52787         * range-op.cc (range_operator::wi_fold_in_parts_equiv): New.
52788         (range_operator::fold_range): If op1 is equivalent to op2 then
52789         invoke new fold_in_parts_equiv to operate on sub-components.
52790         * range-op.h (wi_fold_in_parts_equiv): New prototype.
52792 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
52794         * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
52795         not abort calculations if there is a valid relation available.
52796         (gori_compute::refine_using_relation): Pass correct relation trio.
52797         (gori_compute::compute_operand1_range): Create trio and use it.
52798         (gori_compute::compute_operand2_range): Ditto.
52799         * range-op.cc (operator_plus::op1_range): Use correct trio member.
52800         (operator_minus::op1_range): Use correct trio member.
52801         * value-relation.cc (value_relation::create_trio): New.
52802         * value-relation.h (value_relation::create_trio): New prototype.
52804 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
52806         PR target/108599
52807         * config/i386/i386-expand.cc
52808         (ix86_convert_const_wide_int_to_broadcast): Return nullptr if
52809         CONST_WIDE_INT_NUNITS (op) times HOST_BITS_PER_WIDE_INT isn't
52810         equal to bitsize of mode.
52812 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
52814         PR rtl-optimization/108596
52815         * bb-reorder.cc (fix_up_fall_thru_edges): Handle the case where cur_bb
52816         ends with asm goto and has a crossing fallthrough edge to the same bb
52817         that contains at least one of its labels by restoring EDGE_CROSSING
52818         flag even on possible edge from cur_bb to new_bb successor.
52820 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
52822         PR c++/105593
52823         * config/i386/avx512erintrin.h (_mm512_exp2a23_round_pd,
52824         _mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps,
52825         _mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps): Use
52826         _mm512_undefined_pd () or _mm512_undefined_ps () instead of using
52827         uninitialized automatic variable __W.
52829 2023-01-31  Gerald Pfeifer  <gerald@pfeifer.com>
52831         * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
52833 2023-01-30  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
52835         * config/riscv/riscv-protos.h (get_vector_mode): New function.
52836         * config/riscv/riscv-v.cc (get_vector_mode): Ditto.
52837         * config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum.
52838         (class loadstore): Adjust for indexed loads/stores support.
52839         (BASE): Ditto.
52840         * config/riscv/riscv-vector-builtins-bases.h: New function declare.
52841         * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
52842         (vluxei16): Ditto.
52843         (vluxei32): Ditto.
52844         (vluxei64): Ditto.
52845         (vloxei8): Ditto.
52846         (vloxei16): Ditto.
52847         (vloxei32): Ditto.
52848         (vloxei64): Ditto.
52849         (vsuxei8): Ditto.
52850         (vsuxei16): Ditto.
52851         (vsuxei32): Ditto.
52852         (vsuxei64): Ditto.
52853         (vsoxei8): Ditto.
52854         (vsoxei16): Ditto.
52855         (vsoxei32): Ditto.
52856         (vsoxei64): Ditto.
52857         * config/riscv/riscv-vector-builtins-shapes.cc
52858         (struct indexed_loadstore_def): New class.
52859         (SHAPE): Ditto.
52860         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
52861         * config/riscv/riscv-vector-builtins.cc (required_extensions_p): Adjust
52862         for indexed loads/stores support.
52863         (check_required_extensions): Ditto.
52864         (rvv_arg_type_info::get_base_vector_type): New function.
52865         (rvv_arg_type_info::get_tree_type): Ditto.
52866         (function_builder::add_unique_function): Adjust for indexed loads/stores
52867         support.
52868         (function_expander::use_exact_insn): New function.
52869         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Adjust for
52870         indexed loads/stores support.
52871         (struct rvv_arg_type_info): Ditto.
52872         (function_expander::index_mode): New function.
52873         (function_base::apply_tail_policy_p): Ditto.
52874         (function_base::apply_mask_policy_p): Ditto.
52875         * config/riscv/vector-iterators.md (unspec): New unspec.
52876         * config/riscv/vector.md (unspec): Ditto.
52877         (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New
52878         pattern.
52879         (@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
52880         (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
52881         (@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
52882         (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
52883         (@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
52884         (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
52885         (@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
52886         (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
52887         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
52888         (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
52889         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
52890         (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
52891         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
52893 2023-01-30  Flavio Cruz  <flaviocruz@gmail.com>
52895         * config.gcc: Recognize x86_64-*-gnu* targets and include
52896         i386/gnu64.h.
52897         * config/i386/gnu64.h: Define configuration for new target
52898         including ld.so location.
52900 2023-01-30  Philipp Tomsich  <philipp.tomsich@vrull.eu>
52902         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
52903         ampere1a to include SM4.
52905 2023-01-30  Andrew Pinski  <apinski@marvell.com>
52907         PR tree-optimization/108582
52908         * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
52909         for middlebb to have no phi nodes.
52911 2023-01-30  Richard Biener  <rguenther@suse.de>
52913         PR tree-optimization/108574
52914         * tree-ssa-sccvn.cc (visit_phi): Instead of swapping
52915         sameval and def, ignore the equivalence if there's the
52916         danger of oscillating between two values.
52918 2023-01-30  Andreas Schwab  <schwab@suse.de>
52920         * common/config/riscv/riscv-common.cc
52921         (riscv_option_optimization_table)
52922         [TARGET_DEFAULT_ASYNC_UNWIND_TABLES]: Enable
52923         -fasynchronous-unwind-tables and -funwind-tables.
52924         * config.gcc (riscv*-*-linux*): Define
52925         TARGET_DEFAULT_ASYNC_UNWIND_TABLES.
52927 2023-01-30  YunQiang Su  <yunqiang.su@cipunited.com>
52929         * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
52930         value of includedir.
52932 2023-01-30  Richard Biener  <rguenther@suse.de>
52934         PR ipa/108511
52935         * cgraph.cc (possibly_call_in_translation_unit_p): Relax
52936         assert.
52938 2023-01-30  liuhongt  <hongtao.liu@intel.com>
52940         * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
52941         * doc/invoke.texi: Ditto.
52943 2023-01-29  Jan Hubicka  <hubicka@ucw.cz>
52945         * ipa-utils.cc: Include calls.h, cfgloop.h and cfganal.h
52946         (stmt_may_terminate_function_p): If assuming return or EH
52947         volatile asm is safe.
52948         (find_always_executed_bbs): Fix handling of terminating BBS and
52949         infinite loops; add debug output.
52950         * tree-ssa-alias.cc (stmt_kills_ref_p): Fix debug output
52952 2023-01-28  Philipp Tomsich  <philipp.tomsich@vrull.eu>
52954         * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
52955         off-by-one in checking the permissible shift-amount.
52957 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
52959         * doc/extend.texi (Named Address Spaces): Update link to the
52960         AVR-Libc manual.
52962 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
52964         * doc/standards.texi (Standards): Fix markup.
52966 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
52968         * doc/standards.texi (Standards): Update link to Objective-C book.
52970 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
52972         * doc/invoke.texi (Instrumentation Options): Update reference to
52973         AddressSanitizer.
52975 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
52977         * doc/standards.texi: Update Go1 link.
52979 2023-01-28  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
52981         * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
52982         * config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
52983         Support vlse/vsse.
52984         (BASE): Ditto.
52985         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
52986         * config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
52987         (vsse): New class.
52988         * config/riscv/riscv-vector-builtins.cc
52989         (function_expander::use_contiguous_load_insn): Support vlse/vsse.
52990         * config/riscv/vector.md (@pred_strided_load<mode>): New md pattern.
52991         (@pred_strided_store<mode>): Ditto.
52993 2023-01-28  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
52995         * config/riscv/vector.md (tail_policy_op_idx): Remove.
52996         (mask_policy_op_idx): Remove.
52997         (avl_type_op_idx): Remove.
52999 2023-01-27  Richard Sandiford  <richard.sandiford@arm.com>
53001         PR tree-optimization/96373
53002         * tree.h (sign_mask_for): Declare.
53003         * tree.cc (sign_mask_for): New function.
53004         (signed_or_unsigned_type_for): For vector types, try to use the
53005         related_int_vector_mode.
53006         * genmatch.cc (commutative_op): Handle conditional internal functions.
53007         * match.pd: Fold an IFN_COND_MUL+copysign into an IFN_COND_XOR+and.
53009 2023-01-27  Richard Sandiford  <richard.sandiford@arm.com>
53011         * tree-vectorizer.cc (vector_costs::compare_inside_loop_cost):
53012         Use the likely minimum VF when bounding the denominators to
53013         the estimated number of iterations.
53015 2023-01-27  Richard Biener  <rguenther@suse.de>
53017         PR target/55522
53018         * doc/invoke.texi (-shared): Clarify effect on -ffast-math
53019         and -Ofast FP environment side-effects.
53021 2023-01-27  Richard Biener  <rguenther@suse.de>
53023         PR target/55522
53024         * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
53025         Don't add crtfastmath.o for -shared.
53027 2023-01-27  Richard Biener  <rguenther@suse.de>
53029         PR target/55522
53030         * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
53031         for -shared.
53033 2023-01-27  Richard Biener  <rguenther@suse.de>
53035         PR target/55522
53036         * config/alpha/linux.h (ENDFILE_SPEC): Don't add
53037         crtfastmath.o for -shared.
53039 2023-01-27  Andrew MacLeod  <amacleod@redhat.com>
53041         PR tree-optimization/108306
53042         * range-op.cc (operator_lshift::fold_range): Return [0, 0] not
53043         varying for shifts that are always out of void range.
53044         (operator_rshift::fold_range): Return [0, 0] not
53045         varying for shifts that are always out of void range.
53047 2023-01-27  Andrew MacLeod  <amacleod@redhat.com>
53049         PR tree-optimization/108447
53050         * gimple-range-fold.cc (old_using_range::relation_fold_and_or):
53051         Do not attempt to fold HONOR_NAN types.
53053 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53055         * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
53056         Remove _m suffix for "vop_m" C++ overloaded API name.
53058 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53060         * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add vlm/vsm support.
53061         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
53062         * config/riscv/riscv-vector-builtins-functions.def (vlm): New define.
53063         (vsm): Ditto.
53064         * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): Add vlm/vsm support.
53065         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_B_OPS): Ditto.
53066         (vbool64_t): Ditto.
53067         (vbool32_t): Ditto.
53068         (vbool16_t): Ditto.
53069         (vbool8_t): Ditto.
53070         (vbool4_t): Ditto.
53071         (vbool2_t): Ditto.
53072         (vbool1_t): Ditto.
53073         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_B_OPS): Ditto.
53074         (rvv_arg_type_info::get_tree_type): Ditto.
53075         (function_expander::use_contiguous_load_insn): Ditto.
53076         * config/riscv/vector.md (@pred_store<mode>): Ditto.
53078 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53080         * config/riscv/riscv-vsetvl.cc (vsetvl_insn_p): Add condition to avoid ICE.
53081         (vsetvl_discard_result_insn_p): New function.
53082         (reg_killed_by_bb_p): rename to find_reg_killed_by.
53083         (find_reg_killed_by): New name.
53084         (get_vl): allow it to be called by more functions.
53085         (has_vsetvl_killed_avl_p): Add condition.
53086         (get_avl): allow it to be called by more functions.
53087         (insn_should_be_added_p): New function.
53088         (get_all_nonphi_defs): Refine function.
53089         (get_all_sets): Ditto.
53090         (get_same_bb_set): New function.
53091         (any_insn_in_bb_p): Ditto.
53092         (any_set_in_bb_p): Ditto.
53093         (get_vl_vtype_info): Add VLMAX forward optimization.
53094         (source_equal_p): Fix issues.
53095         (extract_single_source): Refine.
53096         (avl_info::multiple_source_equal_p): New function.
53097         (avl_info::operator==): Adjust for final version.
53098         (vl_vtype_info::operator==): Ditto.
53099         (vl_vtype_info::same_avl_p): Ditto.
53100         (vector_insn_info::parse_insn): Ditto.
53101         (vector_insn_info::available_p): New function.
53102         (vector_insn_info::merge): Adjust for final version.
53103         (vector_insn_info::dump): Add hard_empty.
53104         (pass_vsetvl::hard_empty_block_p): New function.
53105         (pass_vsetvl::backward_demand_fusion): Adjust for final version.
53106         (pass_vsetvl::forward_demand_fusion): Ditto.
53107         (pass_vsetvl::demand_fusion): Ditto.
53108         (pass_vsetvl::cleanup_illegal_dirty_blocks): New function.
53109         (pass_vsetvl::compute_local_properties): Adjust for final version.
53110         (pass_vsetvl::can_refine_vsetvl_p): Ditto.
53111         (pass_vsetvl::refine_vsetvls): Ditto.
53112         (pass_vsetvl::commit_vsetvls): Ditto.
53113         (pass_vsetvl::propagate_avl): New function.
53114         (pass_vsetvl::lazy_vsetvl): Adjust for new version.
53115         * config/riscv/riscv-vsetvl.h (enum def_type): New enum.
53117 2023-01-27  Jakub Jelinek  <jakub@redhat.com>
53119         PR other/108560
53120         * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
53121         from size_t to int.
53123 2023-01-27  Jakub Jelinek  <jakub@redhat.com>
53125         PR ipa/106061
53126         * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Allow
53127         redirection of calls to __builtin_trap in addition to redirection
53128         to __builtin_unreachable.
53130 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53132         * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
53134 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53136         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
53137         (emit_vsetvl_insn): Ditto.
53139 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53141         * config/riscv/vector.md: Fix constraints.
53143 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53145         * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
53147 2023-01-27  Patrick Palka  <ppalka@redhat.com>
53148             Jakub Jelinek  <jakub@redhat.com>
53150         * tree-core.h (tree_code_type, tree_code_length): For
53151         C++17 and later, add inline keyword, otherwise don't define
53152         the arrays, but declare extern arrays.
53153         * tree.cc (tree_code_type, tree_code_length): Define these
53154         arrays for C++14 and older.
53156 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53158         * config/riscv/riscv-vsetvl.h: Change it into public.
53160 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53162         * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
53163         pass.
53165 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53167         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
53169 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53171         * config/riscv/vector.md: Fix incorrect attributes.
53173 2023-01-27  Richard Biener  <rguenther@suse.de>
53175         PR target/55522
53176         * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
53177         Don't add crtfastmath.o for -shared.
53179 2023-01-27  Alexandre Oliva  <oliva@gnu.org>
53181         * doc/options.texi (option, RejectNegative): Mention that
53182         -g-started options are also implicitly negatable.
53184 2023-01-26  Kito Cheng  <kito.cheng@sifive.com>
53186         * config/riscv/riscv-vector-builtins.cc (register_builtin_types):
53187         Use get_typenode_from_name to get fixed-width integer type
53188         nodes.
53189         * config/riscv/riscv-vector-builtins.def: Update define with
53190         fixed-width integer type nodes.
53192 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53194         * config/riscv/riscv-vsetvl.cc (same_bb_and_before_p): Remove it.
53195         (real_insn_and_same_bb_p): New function.
53196         (same_bb_and_after_or_equal_p): Remove it.
53197         (before_p): New function.
53198         (reg_killed_by_bb_p): Ditto.
53199         (has_vsetvl_killed_avl_p): Ditto.
53200         (get_vl): Move location so that we can call it.
53201         (anticipatable_occurrence_p): Fix issue of AVL=REG support.
53202         (available_occurrence_p): Ditto.
53203         (dominate_probability_p): Remove it.
53204         (can_backward_propagate_p): Remove it.
53205         (get_all_nonphi_defs): New function.
53206         (get_all_predecessors): Ditto.
53207         (any_insn_in_bb_p): Ditto.
53208         (insert_vsetvl): Adjust AVL REG.
53209         (source_equal_p): New function.
53210         (extract_single_source): Ditto.
53211         (avl_info::single_source_equal_p): Ditto.
53212         (avl_info::operator==): Adjust for AVL=REG.
53213         (vl_vtype_info::same_avl_p): Ditto.
53214         (vector_insn_info::set_demand_info): Remove it.
53215         (vector_insn_info::compatible_p): Adjust for AVL=REG.
53216         (vector_insn_info::compatible_avl_p): New function.
53217         (vector_insn_info::merge): Adjust AVL=REG.
53218         (vector_insn_info::dump): Ditto.
53219         (pass_vsetvl::merge_successors): Remove it.
53220         (enum fusion_type): New enum.
53221         (pass_vsetvl::get_backward_fusion_type): New function.
53222         (pass_vsetvl::backward_demand_fusion): Adjust for AVL=REG.
53223         (pass_vsetvl::forward_demand_fusion): Ditto.
53224         (pass_vsetvl::demand_fusion): Ditto.
53225         (pass_vsetvl::prune_expressions): Ditto.
53226         (pass_vsetvl::compute_local_properties): Ditto.
53227         (pass_vsetvl::cleanup_vsetvls): Ditto.
53228         (pass_vsetvl::commit_vsetvls): Ditto.
53229         (pass_vsetvl::init): Ditto.
53230         * config/riscv/riscv-vsetvl.h (enum fusion_type): New enum.
53231         (enum merge_type): New enum.
53233 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53235         * config/riscv/riscv-vsetvl.cc
53236         (vector_infos_manager::vector_infos_manager): Add probability.
53237         (vector_infos_manager::dump): Ditto.
53238         (pass_vsetvl::compute_probabilities): Ditto.
53239         * config/riscv/riscv-vsetvl.h (struct vector_block_info): Ditto.
53241 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53243         * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Remove dirty_pat.
53244         (vector_insn_info::merge): Ditto.
53245         (vector_insn_info::dump): Ditto.
53246         (pass_vsetvl::merge_successors): Ditto.
53247         (pass_vsetvl::backward_demand_fusion): Ditto.
53248         (pass_vsetvl::forward_demand_fusion): Ditto.
53249         (pass_vsetvl::commit_vsetvls): Ditto.
53250         * config/riscv/riscv-vsetvl.h: Ditto.
53252 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53254         * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
53255         rinsn.
53257 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53259         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
53261 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53263         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
53264         Add pre-check for redundant flow.
53266 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53268         * config/riscv/riscv-vsetvl.cc (vector_infos_manager::create_bitmap_vectors): New function.
53269         (vector_infos_manager::free_bitmap_vectors): Ditto.
53270         (pass_vsetvl::pre_vsetvl): Adjust codes.
53271         * config/riscv/riscv-vsetvl.h: New function declaration.
53273 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53275         * config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb.
53276         (vector_insn_info::set_demand_info): New function.
53277         (pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3.
53278         (pass_vsetvl::merge_successors): Ditto.
53279         (pass_vsetvl::compute_global_backward_infos): Ditto.
53280         (pass_vsetvl::backward_demand_fusion): Ditto.
53281         (pass_vsetvl::forward_demand_fusion): Ditto.
53282         (pass_vsetvl::demand_fusion): New function.
53283         (pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3.
53284         * config/riscv/riscv-vsetvl.h: New function declaration.
53286 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53288         * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
53290 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53292         * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
53293         (pass_vsetvl::compute_global_backward_infos): Simplify codes.
53295 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53297         * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
53298         (backward_propagate_worthwhile_p): Fix non-worthwhile.
53300 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53302         * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
53304 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53306         * config/riscv/riscv-vsetvl.cc (vector_infos_manager::all_same_avl_p): New function.
53307         (pass_vsetvl::can_refine_vsetvl_p): Add AVL check.
53308         (pass_vsetvl::commit_vsetvls): Ditto.
53309         * config/riscv/riscv-vsetvl.h: New function declaration.
53311 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53313         * config/riscv/vector.md:
53315 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53317         * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): use
53318         pred_store for vse.
53319         * config/riscv/riscv-vector-builtins.cc
53320         (function_expander::add_mem_operand): Refine function.
53321         (function_expander::use_contiguous_load_insn): Adjust new
53322         implementation.
53323         (function_expander::use_contiguous_store_insn): Ditto.
53324         * config/riscv/riscv-vector-builtins.h: Refine function.
53325         * config/riscv/vector.md (@pred_store<mode>): New pattern.
53327 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
53329         * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
53331 2023-01-26  Marek Polacek  <polacek@redhat.com>
53333         PR middle-end/108543
53334         * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
53335         if it was previously set.
53337 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
53339         PR tree-optimization/108540
53340         * range-op-float.cc (foperator_equal::fold_range): If both op1 and op2
53341         are singletons, use range_true even if op1 != op2
53342         when one range is [-0.0, -0.0] and another [0.0, 0.0].  Similarly,
53343         even if intersection of the ranges is empty and one has
53344         zero low bound and another zero high bound, use range_true_and_false
53345         rather than range_false.
53346         (foperator_not_equal::fold_range): If both op1 and op2
53347         are singletons, use range_false even if op1 != op2
53348         when one range is [-0.0, -0.0] and another [0.0, 0.0].  Similarly,
53349         even if intersection of the ranges is empty and one has
53350         zero low bound and another zero high bound, use range_true_and_false
53351         rather than range_true.
53353 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
53355         * value-relation.cc (kind_string): Add const.
53356         (rr_negate_table, rr_swap_table, rr_intersect_table,
53357         rr_union_table, rr_transitive_table): Add static const, change
53358         element type from relation_kind to unsigned char.
53359         (relation_negate, relation_swap, relation_intersect, relation_union,
53360         relation_transitive): Cast rr_*_table element to relation_kind.
53361         (relation_to_code): Add static const.
53362         (relation_tests): Assert VREL_LAST is smaller than UCHAR_MAX.
53364 2023-01-26  Richard Biener  <rguenther@suse.de>
53366         PR tree-optimization/108547
53367         * gimple-predicate-analysis.cc (value_sat_pred_p):
53368         Use widest_int.
53370 2023-01-26  Siddhesh Poyarekar  <siddhesh@gotplt.org>
53372         PR tree-optimization/108522
53373         * tree-object-size.cc (compute_object_offset): Make EXPR
53374         argument non-const.  Call component_ref_field_offset.
53376 2023-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
53378         * config/aarch64/aarch64-option-extensions.def (cssc): Specify
53379         FEATURE_STRING field.
53381 2023-01-26  Gerald Pfeifer  <gerald@pfeifer.com>
53383         * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
53385 2023-01-25  Iain Sandoe  <iain@sandoe.co.uk>
53387         PR modula2/102343
53388         PR modula2/108182
53389         * gcc.cc: Provide default specs for Modula-2 so that when the
53390         language is not built-in better diagnostics are emitted for
53391         attempts to use .mod or .m2i file extensions.
53393 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
53395         * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
53397 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
53399         * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
53401 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
53403         * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
53404         Fix spacing.
53406 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
53408         * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
53410 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
53412         * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
53414 2023-01-25  Richard Biener  <rguenther@suse.de>
53416         PR tree-optimization/108523
53417         * tree-ssa-sccvn.cc (visit_phi): Avoid using the exclusive
53418         backedge value for the result when using predication to
53419         prove equivalence.
53421 2023-01-25  Richard Biener  <rguenther@suse.de>
53423         * doc/lto.texi (Command line options): Reword and update reference
53424         to removed lto_read_all_file_options.
53426 2023-01-25  Richard Sandiford  <richard.sandiford@arm.com>
53428         * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
53429         tests.
53431 2023-01-25  Gerald Pfeifer  <gerald@pfeifer.com>
53433         * doc/contrib.texi: Add Jose E. Marchesi.
53435 2023-01-25  Jakub Jelinek  <jakub@redhat.com>
53437         PR tree-optimization/108498
53438         * gimple-ssa-store-merging.cc (class store_operand_info):
53439         End coment with full stop rather than comma.
53440         (split_group): Likewise.
53441         (merged_store_group::apply_stores): Clear string_concatenation if
53442         start or end aren't on a byte boundary.
53444 2023-01-25  Siddhesh Poyarekar  <siddhesh@gotplt.org>
53445             Jakub Jelinek  <jakub@redhat.com>
53447         PR tree-optimization/108522
53448         * tree-object-size.cc (compute_object_offset): Use
53449         TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
53451 2023-01-24  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
53453         * config/xtensa/xtensa.md:
53454         Fix exit from loops detecting references before overwriting in the
53455         split pattern.
53457 2023-01-24  Vladimir N. Makarov  <vmakarov@redhat.com>
53459         * lra-constraints.cc (get_hard_regno): Remove final_p arg.  Always
53460         do elimination but only for hard register.
53461         (operands_match_p, uses_hard_regs_p, process_alt_operands): Adjust
53462         calls of get_hard_regno.
53464 2023-01-24  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
53466         * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
53467         of CPU version.
53469 2023-01-24  Andre Vieira  <andre.simoesdiasvieira@arm.com>
53471         PR target/108177
53472         * config/arm/mve.md (mve_vstrbq_p_<supf><mode>, mve_vstrhq_p_fv8hf,
53473         mve_vstrhq_p_<supf><mode>, mve_vstrwq_p_<supf>v4si): Add memory operand
53474         as input operand.
53476 2023-01-24  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
53478         * config.gcc(csky-*-linux*): Define CSKY_ENABLE_MULTILIB
53479         and only include 'csky/t-csky-linux' when enable multilib.
53480         * config/csky/csky-linux-elf.h(SYSROOT_SUFFIX_SPEC): Don't
53481         define it when disable multilib.
53483 2023-01-24  Richard Biener  <rguenther@suse.de>
53485         PR tree-optimization/108500
53486         * dominance.h (calculate_dominance_info): Add parameter
53487         to indicate fast-query compute, defaulted to true.
53488         * dominance.cc (calculate_dominance_info): Honor
53489         fast-query compute parameter.
53490         * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Do
53491         not compute the dominator fast-query DFS numbers.
53493 2023-01-24  Eric Biggers  <ebiggers@google.com>
53495         PR bootstrap/90543
53496         * optc-save-gen.awk: Fix copy-and-paste error.
53498 2023-01-24  Jakub Jelinek  <jakub@redhat.com>
53500         PR c++/108474
53501         * cgraphbuild.cc: Include gimplify.h.
53502         (record_reference): Replace VAR_DECLs with DECL_HAS_VALUE_EXPR_P with
53503         their corresponding DECL_VALUE_EXPR expressions after unsharing.
53505 2023-01-24  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
53507         PR target/108505
53508         * config.gcc (tm_file): Move the variable out of loop.
53510 2023-01-24  Lulu Cheng  <chenglulu@loongson.cn>
53511             Yang Yujie  <yangyujie@loongson.cn>
53513         PR target/107731
53514         * config/loongarch/loongarch.cc (loongarch_classify_address):
53515         Add precessint for CONST_INT.
53516         (loongarch_print_operand_reloc): Operand modifier 'c' is supported.
53517         (loongarch_print_operand): Increase the processing of '%c'.
53518         * doc/extend.texi: Adds documents for LoongArch operand modifiers.
53519         And port the public operand modifiers information to this document.
53521 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
53523         * doc/invoke.texi (-mbranch-protection): Update documentation.
53525 2023-01-23  Richard Biener  <rguenther@suse.de>
53527         PR target/55522
53528         * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
53529         for -shared.
53530         * config/sparc/linux.h (ENDFILE_SPEC): Likewise.
53531         * config/sparc/linux64.h (ENDFILE_SPEC): Likewise.
53532         * config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise.
53533         * config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise.
53535 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
53537         * config/arm/aout.h (ra_auth_code): Add entry in enum.
53538         * config/arm/arm.cc (emit_multi_reg_push): Add RA_AUTH_CODE register
53539         to dwarf frame expression.
53540         (arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register.
53541         (arm_expand_prologue): Update frame related information and reg notes
53542         for pac/pacbit insn.
53543         (arm_regno_class): Check for pac pseudo reigster.
53544         (arm_dbx_register_number): Assign ra_auth_code register number in dwarf.
53545         (arm_init_machine_status): Set pacspval_needed to zero.
53546         (arm_debugger_regno): Check for PAC register.
53547         (arm_unwind_emit_sequence): Print .save directive with ra_auth_code
53548         register.
53549         (arm_unwind_emit_set): Add entry for IP_REGNUM in switch case.
53550         (arm_unwind_emit): Update REG_CFA_REGISTER case._
53551         * config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify.
53552         (DWARF_PAC_REGNUM): Define.
53553         (IS_PAC_REGNUM): Likewise.
53554         (enum reg_class): Add PAC_REG entry.
53555         (machine_function): Add pacbti_needed state to structure.
53556         * config/arm/arm.md (RA_AUTH_CODE): Define.
53558 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
53560         * config.gcc ($tm_file): Update variable.
53561         * config/arm/arm-mlib.h: Create new header file.
53562         * config/arm/t-rmprofile (MULTI_ARCH_DIRS_RM): Rename mbranch-protection
53563         multilib arch directory.
53564         (MULTILIB_REUSE): Add multilib reuse rules.
53565         (MULTILIB_MATCHES): Add multilib match rules.
53567 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
53569         * config/arm/arm-cpus.in (cortex-m85): Define new CPU.
53570         * config/arm/arm-tables.opt: Regenerate.
53571         * config/arm/arm-tune.md: Likewise.
53572         * doc/invoke.texi (Arm Options): Document -mcpu=cortex-m85.
53573         * (-mfix-cmse-cve-2021-35465): Likewise.
53575 2023-01-23  Richard Biener  <rguenther@suse.de>
53577         PR tree-optimization/108482
53578         * tree-vect-generic.cc (expand_vector_operations): Fold remaining
53579         .LOOP_DIST_ALIAS calls.
53581 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
53583         * config.gcc (arm*-*-*): Add 'aarch-bti-insert.o' object.
53584         * config/arm/arm-protos.h: Update.
53585         * config/arm/aarch-common-protos.h: Declare
53586         'aarch_bti_arch_check'.
53587         * config/arm/arm.cc (aarch_bti_enabled) Update.
53588         (aarch_bti_j_insn_p, aarch_pac_insn_p, aarch_gen_bti_c)
53589         (aarch_gen_bti_j, aarch_bti_arch_check): New functions.
53590         * config/arm/arm.md (bti_nop): New insn.
53591         * config/arm/t-arm (PASSES_EXTRA): Add 'arm-passes.def'.
53592         (aarch-bti-insert.o): New target.
53593         * config/arm/unspecs.md (VUNSPEC_BTI_NOP): New unspec.
53594         * config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Verify arch
53595         compatibility.
53596         (gate): Make use of 'aarch_bti_arch_check'.
53597         * config/arm/arm-passes.def: New file.
53598         * config/aarch64/aarch64.cc (aarch_bti_arch_check): New function.
53600 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
53602         * config.gcc (aarch64*-*-*): Rename 'aarch64-bti-insert.o' into
53603         'aarch-bti-insert.o'.
53604         * config/aarch64/aarch64-protos.h: Remove 'aarch64_bti_enabled'
53605         proto.
53606         * config/aarch64/aarch64.cc (aarch_bti_enabled): Rename.
53607         (aarch_bti_j_insn_p, aarch_pac_insn_p): New functions.
53608         (aarch64_output_mi_thunk)
53609         (aarch64_print_patchable_function_entry)
53610         (aarch64_file_end_indicate_exec_stack): Update renamed function
53611         calls to renamed functions.
53612         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise.
53613         * config/aarch64/t-aarch64 (aarch-bti-insert.o): Update
53614         target.
53615         * config/aarch64/aarch64-bti-insert.cc: Delete.
53616         * config/arm/aarch-bti-insert.cc: New file including and
53617         generalizing code from aarch64-bti-insert.cc.
53618         * config/arm/aarch-common-protos.h: Update.
53620 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
53622         * config/arm/arm.h (arm_arch8m_main): Declare it.
53623         * config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
53624         Declare it.
53625         * config/arm/arm.cc (arm_arch8m_main): Define it.
53626         (arm_option_reconfigure_globals): Set arm_arch8m_main.
53627         (arm_compute_frame_layout, arm_expand_prologue)
53628         (thumb2_expand_return, arm_expand_epilogue)
53629         (arm_conditional_register_usage): Update for pac codegen.
53630         (arm_current_function_pac_enabled_p): New function.
53631         (aarch_bti_enabled) New function.
53632         (use_return_insn): Return zero when pac is enabled.
53633         * config/arm/arm.md (pac_ip_lr_sp, pacbti_ip_lr_sp, aut_ip_lr_sp):
53634         Add new patterns.
53635         * config/arm/unspecs.md (UNSPEC_PAC_NOP)
53636         (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
53638 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
53640         * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
53641         mbranch-protection.
53643 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
53644             Tejas Belagod   <tbelagod@arm.com>
53646         * config/arm/arm.cc (arm_file_start): Emit EABI attributes for
53647         Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use.
53649 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
53650             Tejas Belagod   <tbelagod@arm.com>
53651             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
53653         * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
53654         new pseudo register class _UVRSC_PAC.
53656 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
53657             Tejas Belagod   <tbelagod@arm.com>
53659         * config/arm/arm-c.cc (arm_cpu_builtins): Define
53660         __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT,
53661         __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI.
53663 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
53664             Tejas Belagod   <tbelagod@arm.com>
53666         * doc/sourcebuild.texi: Document arm_pacbti_hw.
53668 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
53669             Tejas Belagod   <tbelagod@arm.com>
53670             Richard Earnshaw  <Richard.Earnshaw@arm.com>
53672         * config/arm/arm.cc (arm_configure_build_target): Parse and validate
53673         -mbranch-protection option and initialize appropriate data structures.
53674         * config/arm/arm.opt (-mbranch-protection): New option.
53675         * doc/invoke.texi (Arm Options): Document it.
53677 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
53678             Tejas Belagod   <tbelagod@arm.com>
53680         * config/arm/arm.h (TARGET_HAVE_PACBTI): New macro.
53681         * config/arm/arm-cpus.in (pacbti): New feature.
53682         * doc/invoke.texi (Arm Options): Document it.
53684 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
53685             Tejas Belagod   <tbelagod@arm.com>
53687         * common/config/aarch64/aarch64-common.cc: Include aarch-common.h.
53688         (all_architectures): Fix comment.
53689         (aarch64_parse_extension): Rename return type, enum value names.
53690         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Rename
53691         factored out aarch_ra_sign_scope and aarch_ra_sign_key variables.
53692         Also rename corresponding enum values.
53693         * config/aarch64/aarch64-opts.h (aarch64_function_type): Factor
53694         out aarch64_function_type and move it to common code as
53695         aarch_function_type in aarch-common.h.
53696         * config/aarch64/aarch64-protos.h: Include common types header,
53697         move out types aarch64_parse_opt_result and aarch64_key_type to
53698         aarch-common.h
53699         * config/aarch64/aarch64.cc: Move mbranch-protection parsing types
53700         and functions out into aarch-common.h and aarch-common.cc.  Fix up
53701         all the name changes resulting from the move.
53702         * config/aarch64/aarch64.md: Fix up aarch64_ra_sign_key type name change
53703         and enum value.
53704         * config/aarch64/aarch64.opt: Include aarch-common.h to import
53705         type move.  Fix up name changes from factoring out common code and
53706         data.
53707         * config/arm/aarch-common-protos.h: Export factored out routines to both
53708         backends.
53709         * config/arm/aarch-common.cc: Include newly factored out types.
53710         Move all mbranch-protection code and data structures from
53711         aarch64.cc.
53712         * config/arm/aarch-common.h: New header that declares types shared
53713         between aarch32 and aarch64 backends.
53714         * config/arm/arm-protos.h: Declare types and variables that are
53715         made common to aarch64 and aarch32 backends - aarch_ra_sign_key,
53716         aarch_ra_sign_scope and aarch_enable_bti.
53717         * config/arm/arm.opt (config/arm/aarch-common.h): Include header.
53718         (aarch_ra_sign_scope, aarch_enable_bti): Declare variable.
53719         * config/arm/arm.cc: Add missing includes.
53721 2023-01-23  Tobias Burnus  <tobias@codesourcery.com>
53723         * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
53725 2023-01-23  Richard Biener  <rguenther@suse.de>
53727         PR tree-optimization/108449
53728         * cgraphunit.cc (check_global_declaration): Do not turn
53729         undefined statics into externs.
53731 2023-01-22  Dimitar Dimitrov  <dimitar@dinux.eu>
53733         * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix value for QI
53734         and HI input modes.
53735         * config/pru/pru.md (clz): Fix generated code for QI and HI
53736         input modes.
53738 2023-01-22  Cupertino Miranda  <cupertino.miranda@oracle.com>
53740         * config/v850/v850.cc (v850_select_section): Put const volatile
53741         objects into read-only sections.
53743 2023-01-20  Tejas Belagod  <tejas.belagod@arm.com>
53745         * config/aarch64/arm_neon.h (vmull_p64, vmull_high_p64, vaeseq_u8,
53746         vaesdq_u8, vaesmcq_u8, vaesimcq_u8): Gate under "nothing+aes".
53747         (vsha1*_u32, vsha256*_u32): Gate under "nothing+sha2".
53749 2023-01-20  Jakub Jelinek  <jakub@redhat.com>
53751         PR tree-optimization/108457
53752         * tree-ssa-loop-niter.cc (build_cltz_expr): Use
53753         SCALAR_INT_TYPE_MODE (utype) directly as C[LT]Z_DEFINED_VALUE_AT_ZERO
53754         argument instead of a temporary.  Formatting fixes.
53756 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
53758         PR tree-optimization/108447
53759         * value-relation.cc (rr_union_table): Fix VREL_UNDEFINED row order.
53760         (relation_tests): Add self-tests for relation_{intersect,union}
53761         commutativity.
53762         * selftest.h (relation_tests): Declare.
53763         * function-tests.cc (test_ranges): Call it.
53765 2023-01-19  H.J. Lu  <hjl.tools@gmail.com>
53767         PR target/108436
53768         * config/i386/i386-expand.cc (ix86_expand_builtin): Check
53769         invalid third argument to __builtin_ia32_prefetch.
53771 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
53773         PR middle-end/108459
53774         * omp-expand.cc (expand_omp_for_init_counts): Use fold_build1 rather
53775         than fold_unary for NEGATE_EXPR.
53777 2023-01-19  Christophe Lyon  <christophe.lyon@arm.com>
53779         PR target/108411
53780         * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
53781         comment. Move assert about alignment a bit later.
53783 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
53785         PR tree-optimization/108440
53786         * tree-ssa-forwprop.cc: Include gimple-range.h.
53787         (simplify_rotate): For the forms with T2 wider than T and shift counts of
53788         Y and B - Y add & (B - 1) masking for the rotate count if Y could be equal
53789         to B.  For the forms with T2 wider than T and shift counts of
53790         Y and (-Y) & (B - 1), don't punt if range could be [B, B2], but only if
53791         range doesn't guarantee Y < B or Y = N * B.  If range doesn't guarantee
53792         Y < B, also add & (B - 1) masking for the rotate count.  Use lazily created
53793         pass specific ranger instead of get_global_range_query.
53794         (pass_forwprop::execute): Disable that ranger at the end of pass if it has
53795         been created.
53797 2023-01-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
53799         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
53800         exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
53801         the pattern.
53802         (aarch64_simd_vec_copy_lane<mode>): Likewise.
53803         (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
53805 2023-01-19  Alexandre Oliva  <oliva@adacore.com>
53807         PR debug/106746
53808         * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
53809         within debug insns.
53811 2023-01-18  Martin Jambor  <mjambor@suse.cz>
53813         PR ipa/107944
53814         * cgraph.cc (cgraph_node::remove): Check whether nodes up the
53815         lcone_of chain also do not need the body.
53817 2023-01-18  Richard Biener  <rguenther@suse.de>
53819         Revert:
53820         2022-12-16  Richard Biener  <rguenther@suse.de>
53822         PR middle-end/108086
53823         * tree-inline.cc (remap_ssa_name): Do not unshare the
53824         result from the decl_map.
53826 2023-01-18  Murray Steele  <murray.steele@arm.com>
53828         PR target/108442
53829         * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
53830         function.
53831         (__arm_vst1q_p_s8): Likewise.
53832         (__arm_vld1q_z_u8): Likewise.
53833         (__arm_vld1q_z_s8): Likewise.
53834         (__arm_vst1q_p_u16): Likewise.
53835         (__arm_vst1q_p_s16): Likewise.
53836         (__arm_vld1q_z_u16): Likewise.
53837         (__arm_vld1q_z_s16): Likewise.
53838         (__arm_vst1q_p_u32): Likewise.
53839         (__arm_vst1q_p_s32): Likewise.
53840         (__arm_vld1q_z_u32): Likewise.
53841         (__arm_vld1q_z_s32): Likewise.
53842         (__arm_vld1q_z_f16): Likewise.
53843         (__arm_vst1q_p_f16): Likewise.
53844         (__arm_vld1q_z_f32): Likewise.
53845         (__arm_vst1q_p_f32): Likewise.
53847 2023-01-18  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
53849         * config/xtensa/xtensa.md (xorsi3_internal):
53850         Rename from the original of "xorsi3".
53851         (xorsi3): New expansion pattern that emits addition rather than
53852         bitwise-XOR when the second source is a constant of -2147483648
53853         if TARGET_DENSITY.
53855 2023-01-18  Kewen Lin  <linkw@linux.ibm.com>
53856             Andrew Pinski  <apinski@marvell.com>
53858         PR target/108396
53859         * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
53860         vec_vsubcuqP with vec_vsubcuq.
53862 2023-01-18  Kewen Lin  <linkw@linux.ibm.com>
53864         PR target/108348
53865         * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
53866         support for invalid uses of MMA opaque type in function arguments.
53868 2023-01-18  liuhongt  <hongtao.liu@intel.com>
53870         PR target/55522
53871         * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o
53872         whenever -mdaz-ftz is specified. Don't link crtfastmath.o when
53873         -share or -mno-daz-ftz is specified.
53874         * config/i386/darwin.h (ENDFILE_SPEC): Ditto.
53875         * config/i386/mingw32.h (ENDFILE_SPEC): Ditto.
53877 2023-01-17  Jose E. Marchesi  <jose.marchesi@oracle.com>
53879         * config/bpf/bpf.cc (bpf_option_override): Disable
53880         -fstack-protector.
53882 2023-01-17  Jakub Jelinek  <jakub@redhat.com>
53884         PR tree-optimization/106523
53885         * tree-ssa-forwprop.cc (simplify_rotate): For the
53886         patterns with (-Y) & (B - 1) in one operand's shift
53887         count and Y in another, if T2 has wider precision than T,
53888         punt if Y could have a value in [B, B2 - 1] range.
53890 2023-01-16  H.J. Lu  <hjl.tools@gmail.com>
53892         PR target/105980
53893         * config/i386/i386.cc (x86_output_mi_thunk): Disable
53894         -mforce-indirect-call for PIC in 32-bit mode.
53896 2023-01-16  Jan Hubicka  <hubicka@ucw.cz>
53898         PR ipa/106077
53899         * ipa-modref.cc (modref_access_analysis::analyze): Use
53900         find_always_executed_bbs.
53901         * ipa-sra.cc (process_scan_results): Likewise.
53902         * ipa-utils.cc (stmt_may_terminate_function_p): New function.
53903         (find_always_executed_bbs): New function.
53904         * ipa-utils.h (stmt_may_terminate_function_p): Declare.
53905         (find_always_executed_bbs): Declare.
53907 2023-01-16  Jan Hubicka  <jh@suse.cz>
53909         * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Guard scatter
53910         by TARGET_USE_SCATTER.
53911         * config/i386/i386.h (TARGET_USE_SCATTER_2PARTS,
53912         TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New macros.
53913         * config/i386/x86-tune.def (TARGET_USE_SCATTER_2PARTS,
53914         TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New tunes.
53915         (X86_TUNE_AVOID_256FMA_CHAINS, X86_TUNE_AVOID_512FMA_CHAINS): Disable
53916         for znver4.  (X86_TUNE_USE_GATHER): Disable for zen4.
53918 2023-01-16  Richard Biener  <rguenther@suse.de>
53920         PR target/55522
53921         * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
53923 2023-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
53925         PR target/96795
53926         PR target/107515
53927         * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
53928         (__ARM_mve_coerce3): Likewise.
53930 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
53932         * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
53934 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
53936         * tree-ssa-loop-niter.cc (number_of_iterations_cltz): New.
53937         (number_of_iterations_bitcount): Add call to the above.
53938         (number_of_iterations_exit_assumptions): Add EQ_EXPR case for
53939         c[lt]z idiom recognition.
53941 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
53943         * doc/sourcebuild.texi: Add missing target attributes.
53945 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
53947         PR tree-optimization/94793
53948         * tree-scalar-evolution.cc (expression_expensive_p): Add checks
53949         for c[lt]z optabs.
53950         * tree-ssa-loop-niter.cc (build_cltz_expr): New.
53951         (number_of_iterations_cltz_complement): New.
53952         (number_of_iterations_bitcount): Add call to the above.
53954 2023-01-16  Jonathan Wakely  <jwakely@redhat.com>
53956         * doc/extend.texi (Common Function Attributes): Fix grammar.
53958 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
53960         PR other/108413
53961         * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
53962         * config/riscv/riscv-vsetvl.cc: Likewise.
53964 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
53966         PR c++/105593
53967         * config/i386/xmmintrin.h (_mm_undefined_ps): Temporarily
53968         disable -Winit-self using pragma GCC diagnostic ignored.
53969         * config/i386/emmintrin.h (_mm_undefined_pd, _mm_undefined_si128):
53970         Likewise.
53971         * config/i386/avxintrin.h (_mm256_undefined_pd, _mm256_undefined_ps,
53972         _mm256_undefined_si256): Likewise.
53973         * config/i386/avx512fintrin.h (_mm512_undefined_pd,
53974         _mm512_undefined_ps, _mm512_undefined_epi32): Likewise.
53975         * config/i386/avx512fp16intrin.h (_mm_undefined_ph,
53976         _mm256_undefined_ph, _mm512_undefined_ph): Likewise.
53978 2023-01-16  Kewen Lin  <linkw@linux.ibm.com>
53980         PR target/108272
53981         * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
53982         support for invalid uses in inline asm, factor out the checking and
53983         erroring to lambda function check_and_error_invalid_use.
53985 2023-01-15  Aldy Hernandez  <aldyh@redhat.com>
53987         PR tree-optimization/107608
53988         * range-op-float.cc (range_operator_float::fold_range): Avoid
53989         folding into INF when flag_trapping_math.
53990         * value-range.h (frange::known_isinf): Return false for possible NANs.
53992 2023-01-15  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
53994         * config.gcc (csky-*-*): Support --with-float=softfp.
53996 2023-01-14  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
53998         * config/xtensa/xtensa-protos.h (order_regs_for_local_alloc):
53999         Rename to xtensa_adjust_reg_alloc_order.
54000         * config/xtensa/xtensa.cc (xtensa_adjust_reg_alloc_order):
54001         Ditto.  And also remove code to reorder register numbers for
54002         leaf functions, rename the tables, and adjust the allocation
54003         order for the call0 ABI to use register A0 more.
54004         (xtensa_leaf_regs): Remove.
54005         * config/xtensa/xtensa.h (REG_ALLOC_ORDER): Cosmetics.
54006         (order_regs_for_local_alloc): Rename as the above.
54007         (LEAF_REGISTERS, LEAF_REG_REMAP, leaf_function): Remove.
54009 2023-01-14  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
54011         * config/aarch64/aarch64-sve.md (aarch64_vec_duplicate_vq<mode>_le):
54012         Change to define_insn_and_split to fold ldr+dup to ld1rq.
54013         * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): New.
54015 2023-01-14  Alexandre Oliva  <oliva@adacore.com>
54017         * hash-table.h (is_deleted): Precheck !is_empty.
54018         (mark_deleted): Postcheck !is_empty.
54019         (copy constructor): Test is_empty before is_deleted.
54021 2023-01-14  Alexandre Oliva  <oliva@adacore.com>
54023         PR target/40457
54024         * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
54025         moves.
54027 2023-01-13  Eric Botcazou  <ebotcazou@adacore.com>
54029         PR rtl-optimization/108274
54030         * function.cc (thread_prologue_and_epilogue_insns): Also update the
54031         DF information for calls in a few more cases.
54033 2023-01-13  John David Anglin  <danglin@gcc.gnu.org>
54035         * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
54036         * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
54037         define.
54038         * config/pa/pa.h (TARGET_SYNC_LIBCALLS): Use flag_sync_libcalls.
54039         (MAX_SYNC_LIBFUNC_SIZE): Define.
54040         (TARGET_CPU_CPP_BUILTINS): Define __SOFTFP__ when soft float is
54041         enabled.
54042         * config/pa/pa.md (atomic_storeqi): Emit __atomic_exchange_1
54043         libcall when sync libcalls are disabled.
54044         (atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
54045         (atomic_loaddi): Emit __atomic_load_8 libcall when sync libcalls
54046         are disabled on 32-bit target.
54047         * config/pa/pa.opt (matomic-libcalls): New option.
54048         * doc/invoke.texi (HPPA Options): Update.
54050 2023-01-13  Alexander Monakov  <amonakov@ispras.ru>
54052         PR rtl-optimization/108117
54053         PR rtl-optimization/108132
54054         * sched-deps.cc (deps_analyze_insn): Do not schedule across
54055         calls before reload.
54057 2023-01-13  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
54059         * common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
54060         options for -mlibarch.
54061         * config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
54062         * doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
54064 2023-01-13  Qing Zhao  <qing.zhao@oracle.com>
54066         * attribs.cc (strict_flex_array_level_of): Move this function to ...
54067         * attribs.h (strict_flex_array_level_of): Remove the declaration.
54068         * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
54069         replace the referece to strict_flex_array_level_of with
54070         DECL_NOT_FLEXARRAY.
54071         * tree.cc (component_ref_size): Likewise.
54073 2023-01-13  Richard Biener  <rguenther@suse.de>
54075         PR target/55522
54076         * config/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
54077         crtfastmath.o for -shared.
54078         * config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.
54080 2023-01-13  Richard Biener  <rguenther@suse.de>
54082         PR target/55522
54083         * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
54084         crtfastmath.o for -shared.
54085         * config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
54086         Likewise.
54087         * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
54088         Likewise.
54090 2023-01-13  Richard Sandiford  <richard.sandiford@arm.com>
54092         * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
54093         function.
54094         (TARGET_DWARF_FRAME_REG_MODE): Define.
54096 2023-01-13  Richard Biener  <rguenther@suse.de>
54098         PR target/107209
54099         * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
54100         update EH info on the fly.
54102 2023-01-13  Richard Biener  <rguenther@suse.de>
54104         PR tree-optimization/108387
54105         * tree-ssa-sccvn.cc (visit_nary_op): Check for SSA_NAME
54106         value before inserting expression into the tables.
54108 2023-01-12  Andrew Pinski  <apinski@marvell.com>
54109             Roger Sayle  <roger@nextmovesoftware.com>
54111         PR tree-optimization/92342
54112         * match.pd ((m1 CMP m2) * d -> (m1 CMP m2) ? d : 0):
54113         Use tcc_comparison and :c for the multiply.
54114         (b & -(a CMP c) -> (a CMP c)?b:0): New pattern.
54116 2023-01-12  Christophe Lyon  <christophe.lyon@arm.com>
54117             Richard Sandiford  <richard.sandiford@arm.com>
54119         PR target/105549
54120         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment):
54121         Check DECL_PACKED for bitfield.
54122         (aarch64_layout_arg): Warn when parameter passing ABI changes.
54123         (aarch64_function_arg_boundary): Do not warn here.
54124         (aarch64_gimplify_va_arg_expr): Warn when parameter passing ABI
54125         changes.
54127 2023-01-12  Christophe Lyon  <christophe.lyon@arm.com>
54128             Richard Sandiford  <richard.sandiford@arm.com>
54130         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
54131         comment.
54132         (aarch64_layout_arg): Factorize warning conditions.
54133         (aarch64_function_arg_boundary): Fix typo.
54134         * function.cc (currently_expanding_function_start): New variable.
54135         (expand_function_start): Handle
54136         currently_expanding_function_start.
54137         * function.h (currently_expanding_function_start): Declare.
54139 2023-01-12  Richard Biener  <rguenther@suse.de>
54141         PR tree-optimization/99412
54142         * tree-ssa-reassoc.cc (is_phi_for_stmt): Remove.
54143         (swap_ops_for_binary_stmt): Remove reduction handling.
54144         (rewrite_expr_tree_parallel): Adjust.
54145         (reassociate_bb): Likewise.
54146         * tree-parloops.cc (build_new_reduction): Handle MINUS_EXPR.
54148 2023-01-12  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
54150         * config/xtensa/xtensa.md (ctzsi2, ffssi2):
54151         Rearrange the emitting codes.
54153 2023-01-12  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
54155         * config/xtensa/xtensa.md (*btrue):
54156         Correct value of the attribute "length" that depends on
54157         TARGET_DENSITY and operands, and add '?' character to the register
54158         constraint of the compared operand.
54160 2023-01-12  Alexandre Oliva  <oliva@adacore.com>
54162         * hash-table.h (expand): Check elements and deleted counts.
54163         (verify): Likewise.
54165 2023-01-11  Roger Sayle  <roger@nextmovesoftware.com>
54167         PR tree-optimization/71343
54168         * tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make
54169         the value number of the expression X << C the same as the value
54170         number for the multiplication X * (1<<C).
54172 2023-01-11  David Faust  <david.faust@oracle.com>
54174         PR target/108293
54175         * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
54176         floating point modes.
54178 2023-01-11  Eric Botcazou  <ebotcazou@adacore.com>
54180         PR tree-optimization/108199
54181         * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
54182         for bit-field references.
54184 2023-01-11  Kewen Lin  <linkw@linux.ibm.com>
54186         * config/rs6000/rs6000.cc (rs6000_option_override_internal): Make
54187         OPTION_MASK_P10_FUSION implicit setting honour Power10 tuning setting.
54188         * config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER): Remove
54189         OPTION_MASK_P10_FUSION.
54191 2023-01-11  Richard Biener  <rguenther@suse.de>
54193         PR tree-optimization/107767
54194         * tree-cfgcleanup.cc (phi_alternatives_equal): Export.
54195         * tree-cfgcleanup.h (phi_alternatives_equal): Declare.
54196         * tree-switch-conversion.cc (switch_conversion::collect):
54197         Count unique non-default targets accounting for later
54198         merging opportunities.
54200 2023-01-11  Martin Liska  <mliska@suse.cz>
54202         PR middle-end/107976
54203         * params.opt: Limit JT params.
54204         * stmt.cc (emit_case_dispatch_table): Use auto_vec.
54206 2023-01-11  Richard Biener  <rguenther@suse.de>
54208         PR tree-optimization/108352
54209         * tree-ssa-threadbackward.cc
54210         (back_threader_profitability::profitable_path_p): Adjust
54211         heuristic that allows non-multi-way branch threads creating
54212         irreducible loops.
54213         * doc/invoke.texi (--param fsm-scale-path-blocks): Remove.
54214         (--param fsm-scale-path-stmts): Adjust.
54215         * params.opt (--param=fsm-scale-path-blocks=): Remove.
54216         (-param=fsm-scale-path-stmts=): Adjust description.
54218 2023-01-11  Richard Biener  <rguenther@suse.de>
54220         PR tree-optimization/108353
54221         * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
54222         Remove.
54223         (add_ssa_edge): Simplify.
54224         (add_control_edge): Likewise.
54225         (ssa_prop_init): Likewise.
54226         (ssa_prop_fini): Likewise.
54227         (ssa_propagation_engine::ssa_propagate): Likewise.
54229 2023-01-11  Andreas Krebbel  <krebbel@linux.ibm.com>
54231         * config/s390/s390.md (*not<mode>): New pattern.
54233 2023-01-11  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
54235         * config/xtensa/xtensa.cc (xtensa_insn_cost):
54236         Let insn cost for size be obtained by applying COSTS_N_INSNS()
54237         to instruction length and then dividing by 3.
54239 2023-01-10  Richard Biener  <rguenther@suse.de>
54241         PR tree-optimization/106293
54242         * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
54243         process degenerate PHI defs.
54245 2023-01-10  Roger Sayle  <roger@nextmovesoftware.com>
54247         PR rtl-optimization/106421
54248         * cprop.cc (bypass_block): Check that DEST is local to this
54249         function (non-NULL) before calling find_edge.
54251 2023-01-10  Martin Jambor  <mjambor@suse.cz>
54253         PR ipa/108110
54254         * ipa-param-manipulation.h (ipa_param_body_adjustments): New members
54255         sort_replacements, lookup_first_base_replacement and
54256         m_sorted_replacements_p.
54257         * ipa-param-manipulation.cc: Define INCLUDE_ALGORITHM.
54258         (ipa_param_body_adjustments::register_replacement): Set
54259         m_sorted_replacements_p to false.
54260         (compare_param_body_replacement): New function.
54261         (ipa_param_body_adjustments::sort_replacements): Likewise.
54262         (ipa_param_body_adjustments::common_initialization): Call
54263         sort_replacements.
54264         (ipa_param_body_adjustments::ipa_param_body_adjustments): Initialize
54265         m_sorted_replacements_p.
54266         (ipa_param_body_adjustments::lookup_replacement_1): Rework to use
54267         std::lower_bound.
54268         (ipa_param_body_adjustments::lookup_first_base_replacement): New
54269         function.
54270         (ipa_param_body_adjustments::modify_call_stmt): Use
54271         lookup_first_base_replacement.
54272         * omp-simd-clone.cc (ipa_simd_modify_function_body): Call
54273         adjustments->sort_replacements.
54275 2023-01-10  Richard Biener  <rguenther@suse.de>
54277         PR tree-optimization/108314
54278         * tree-vect-stmts.cc (vectorizable_condition): Do not
54279         perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
54281 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
54283         * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
54285 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
54287         * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
54289 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
54291         * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
54292         defines for soft float abi.
54294 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
54296         * config/csky/csky.md (smart_bseti): Change condition to CSKY_ISA_FEATURE (E1).
54297         (smart_bclri): Likewise.
54298         (fast_bseti): Change condition to CSKY_ISA_FEATURE (E2).
54299         (fast_bclri): Likewise.
54300         (fast_cmpnesi_i): Likewise.
54301         (*fast_cmpltsi_i): Likewise.
54302         (*fast_cmpgeusi_i): Likewise.
54304 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
54306         * config/csky/csky_insn_fpuv3.md (l<frm_pattern><fixsuop><mode>si2): Test
54307         flag_fp_int_builtin_inexact || !flag_trapping_math.
54308         (<frm_pattern><mode>2): Likewise.
54310 2023-01-10  Andreas Krebbel  <krebbel@linux.ibm.com>
54312         * config/s390/s390.cc (s390_register_info): Check call_used_regs
54313         instead of hard-coding the register numbers for call saved
54314         registers.
54315         (s390_optimize_register_info): Likewise.
54317 2023-01-09  Eric Botcazou  <ebotcazou@adacore.com>
54319         * doc/gm2.texi (Overview): Fix @node markers.
54320         (Using): Likewise.  Remove subsections that were moved to Overview
54321         from the menu and move others around.
54323 2023-01-09  Richard Biener  <rguenther@suse.de>
54325         PR middle-end/108209
54326         * genmatch.cc (commutative_op): Fix return value for
54327         user-id with non-commutative first replacement.
54329 2023-01-09  Jakub Jelinek  <jakub@redhat.com>
54331         PR target/107453
54332         * calls.cc (expand_call): For calls with
54333         TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
54334         Formatting fix.
54336 2023-01-09  Richard Biener  <rguenther@suse.de>
54338         PR middle-end/69482
54339         * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
54340         qualified accesses also force objects to memory.
54342 2023-01-09  Martin Liska  <mliska@suse.cz>
54344         PR lto/108330
54345         * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
54346         NULL (deleleted value) to a hash_set.
54348 2023-01-08  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
54350         * config/xtensa/xtensa.md (*splice_bits):
54351         New insn_and_split pattern.
54353 2023-01-07  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
54355         * config/xtensa/xtensa.cc
54356         (xtensa_split_imm_two_addends, xtensa_emit_add_imm):
54357         New helper functions.
54358         (xtensa_set_return_address, xtensa_output_mi_thunk):
54359         Change to use the helper function.
54360         (xtensa_emit_adjust_stack_ptr): Ditto.
54361         And also change to try reusing the content of scratch register
54362         A9 if the register is not modified in the function body.
54364 2023-01-07  LIU Hao  <lh_mouse@126.com>
54366         PR middle-end/108300
54367         * config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
54368         before <windows.h>.
54369         * diagnostic-color.cc: Likewise.
54370         * plugin.cc: Likewise.
54371         * prefix.cc: Likewise.
54373 2023-01-06  Joseph Myers  <joseph@codesourcery.com>
54375         * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
54376         for handling real integer types.
54378 2023-01-06  Tamar Christina  <tamar.christina@arm.com>
54380         Revert:
54381         2022-12-12  Tamar Christina  <tamar.christina@arm.com>
54383         * config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
54384         (mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
54385         aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
54386         @aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
54387         reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
54388         aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
54389         vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
54390         (aarch64_simd_dupv2hf): New.
54391         * config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
54392         Add E_V2HFmode.
54393         * config/aarch64/iterators.md (VHSDF_P): New.
54394         (V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
54395         Vel, q, vp): Add V2HF.
54396         * config/arm/types.md (neon_fp_reduc_add_h): New.
54398 2023-01-06  Martin Liska  <mliska@suse.cz>
54400         PR middle-end/107966
54401         * doc/options.texi: Fix Var documentation in internal manual.
54403 2023-01-05  Roger Sayle  <roger@nextmovesoftware.com>
54405         Revert:
54406         2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
54408         * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
54409         RTL expansion to allow condition (mask) to be shared/reused,
54410         by avoiding overwriting pseudos and adding REG_EQUAL notes.
54412 2023-01-05  Iain Sandoe  <iain@sandoe.co.uk>
54414         * common.opt: Add -static-libgm2.
54415         * config/darwin.h (LINK_SPEC): Handle static-libgm2.
54416         * doc/gm2.texi: Document static-libgm2.
54417         * gcc.cc (driver_handle_option): Allow static-libgm2.
54419 2023-01-05  Tejas Joshi  <TejasSanjay.Joshi@amd.com>
54421         * common/config/i386/i386-common.cc (processor_alias_table):
54422         Use CPU_ZNVER4 for znver4.
54423         * config/i386/i386.md: Add znver4.md.
54424         * config/i386/znver4.md: New.
54426 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
54428         PR tree-optimization/108253
54429         * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
54430         types.
54432 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
54434         PR middle-end/108237
54435         * generic-match-head.cc: Include tree-pass.h.
54436         (canonicalize_math_p, optimize_vectors_before_lowering_p): Define
54437         to false if cfun and cfun->curr_properties has PROP_gimple_opt_math
54438         resp. PROP_gimple_lvec property set.
54440 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
54442         PR sanitizer/108256
54443         * convert.cc (do_narrow): Punt for MULT_EXPR if original
54444         type doesn't wrap around and -fsanitize=signed-integer-overflow
54445         is on.
54446         * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
54448 2023-01-04  Hu, Lin1  <lin1.hu@intel.com>
54450         * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
54451         * common/config/i386/i386-common.cc: Add Emeraldrapids.
54453 2023-01-04  Hu, Lin1  <lin1.hu@intel.com>
54455         * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
54456         for meteorlake.
54458 2023-01-03  Sandra Loosemore  <sandra@codesourcery.com>
54460         * cgraph.h (struct cgraph_node): Add gc_candidate bit, modify
54461         default constructor to initialize it.
54462         * cgraphunit.cc (expand_all_functions): Save gc_candidate functions
54463         for last and iterate to handle recursive calls.  Delete leftover
54464         candidates at the end.
54465         * omp-simd-clone.cc (simd_clone_create): Set gc_candidate bit
54466         on local clones.
54467         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
54468         gc_candidate bit when a clone is used.
54470 2023-01-03  Florian Weimer  <fweimer@redhat.com>
54472         Revert:
54473         2023-01-02  Florian Weimer  <fweimer@redhat.com>
54475         * dwarf2cfi.cc (init_return_column_size): Remove.
54476         (init_one_dwarf_reg_size): Adjust.
54477         (generate_dwarf_reg_sizes): New function.  Extracted
54478         from expand_builtin_init_dwarf_reg_sizes.
54479         (expand_builtin_init_dwarf_reg_sizes): Call
54480         generate_dwarf_reg_sizes.
54481         * target.def (init_dwarf_reg_sizes_extra): Adjust
54482         hook signature.
54483         * config/msp430/msp430.cc
54484         (msp430_init_dwarf_reg_sizes_extra): Adjust.
54485         * config/rs6000/rs6000.cc
54486         (rs6000_init_dwarf_reg_sizes_extra): Likewise.
54487         * doc/tm.texi: Update.
54489 2023-01-03  Florian Weimer  <fweimer@redhat.com>
54491         Revert:
54492         2023-01-02  Florian Weimer  <fweimer@redhat.com>
54494         * debug.h (dwarf_reg_sizes_constant): Declare.
54495         * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
54497 2023-01-03  Siddhesh Poyarekar  <siddhesh@gotplt.org>
54499         PR tree-optimization/105043
54500         * doc/extend.texi (Object Size Checking): Split out into two
54501         subsections and mention _FORTIFY_SOURCE.
54503 2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
54505         * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
54506         RTL expansion to allow condition (mask) to be shared/reused,
54507         by avoiding overwriting pseudos and adding REG_EQUAL notes.
54509 2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
54511         PR target/108229
54512         * config/i386/i386-features.cc
54513         (general_scalar_chain::compute_convert_gain) <case PLUS>: Consider
54514         the gain/cost of converting a MEM operand.
54516 2023-01-03  Jakub Jelinek  <jakub@redhat.com>
54518         PR middle-end/108264
54519         * expr.cc (store_expr): For stores into SUBREG_PROMOTED_* targets
54520         from source which doesn't have scalar integral mode first convert
54521         it to outer_mode.
54523 2023-01-03  Jakub Jelinek  <jakub@redhat.com>
54525         PR rtl-optimization/108263
54526         * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
54527         asm goto to EXIT.
54529 2023-01-02  Alexander Monakov  <amonakov@ispras.ru>
54531         PR target/87832
54532         * config/i386/lujiazui.md (lujiazui_div): New automaton.
54533         (lua_div): New unit.
54534         (lua_idiv_qi): Correct unit in the reservation.
54535         (lua_idiv_qi_load): Ditto.
54536         (lua_idiv_hi): Ditto.
54537         (lua_idiv_hi_load): Ditto.
54538         (lua_idiv_si): Ditto.
54539         (lua_idiv_si_load): Ditto.
54540         (lua_idiv_di): Ditto.
54541         (lua_idiv_di_load): Ditto.
54542         (lua_fdiv_SF): Ditto.
54543         (lua_fdiv_SF_load): Ditto.
54544         (lua_fdiv_DF): Ditto.
54545         (lua_fdiv_DF_load): Ditto.
54546         (lua_fdiv_XF): Ditto.
54547         (lua_fdiv_XF_load): Ditto.
54548         (lua_ssediv_SF): Ditto.
54549         (lua_ssediv_load_SF): Ditto.
54550         (lua_ssediv_V4SF): Ditto.
54551         (lua_ssediv_load_V4SF): Ditto.
54552         (lua_ssediv_V8SF): Ditto.
54553         (lua_ssediv_load_V8SF): Ditto.
54554         (lua_ssediv_SD): Ditto.
54555         (lua_ssediv_load_SD): Ditto.
54556         (lua_ssediv_V2DF): Ditto.
54557         (lua_ssediv_load_V2DF): Ditto.
54558         (lua_ssediv_V4DF): Ditto.
54559         (lua_ssediv_load_V4DF): Ditto.
54561 2023-01-02  Florian Weimer  <fweimer@redhat.com>
54563         * debug.h (dwarf_reg_sizes_constant): Declare.
54564         * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
54566 2023-01-02  Florian Weimer  <fweimer@redhat.com>
54568         * dwarf2cfi.cc (init_return_column_size): Remove.
54569         (init_one_dwarf_reg_size): Adjust.
54570         (generate_dwarf_reg_sizes): New function.  Extracted
54571         from expand_builtin_init_dwarf_reg_sizes.
54572         (expand_builtin_init_dwarf_reg_sizes): Call
54573         generate_dwarf_reg_sizes.
54574         * target.def (init_dwarf_reg_sizes_extra): Adjust
54575         hook signature.
54576         * config/msp430/msp430.cc
54577         (msp430_init_dwarf_reg_sizes_extra): Adjust.
54578         * config/rs6000/rs6000.cc
54579         (rs6000_init_dwarf_reg_sizes_extra): Likewise.
54580         * doc/tm.texi: Update.
54582 2023-01-02  Jakub Jelinek  <jakub@redhat.com>
54584         * gcc.cc (process_command): Update copyright notice dates.
54585         * gcov-dump.cc (print_version): Ditto.
54586         * gcov.cc (print_version): Ditto.
54587         * gcov-tool.cc (print_version): Ditto.
54588         * gengtype.cc (create_file): Ditto.
54589         * doc/cpp.texi: Bump @copying's copyright year.
54590         * doc/cppinternals.texi: Ditto.
54591         * doc/gcc.texi: Ditto.
54592         * doc/gccint.texi: Ditto.
54593         * doc/gcov.texi: Ditto.
54594         * doc/install.texi: Ditto.
54595         * doc/invoke.texi: Ditto.
54597 2023-01-01  Roger Sayle  <roger@nextmovesoftware.com>
54598             Uroš Bizjak  <ubizjak@gmail.com>
54600         * config/i386/i386.md (extendditi2): New define_insn.
54601         (define_split): Use DWIH mode iterator to treat new extendditi2
54602         identically to existing extendsidi2_1.
54603         (define_peephole2): Likewise.
54604         (define_peephole2): Likewise.
54605         (define_Split): Likewise.
54608 Copyright (C) 2023 Free Software Foundation, Inc.
54610 Copying and distribution of this file, with or without modification,
54611 are permitted in any medium without royalty provided the copyright
54612 notice and this notice are preserved.