Require target lra in gcc.c-torture/compile/asmgoto-6.c
[official-gcc.git] / gcc / ChangeLog
blob4bbcc038b3aa6ef49268c392ccbb58b5a1fa7ab4
1 2023-07-20  Uros Bizjak  <ubizjak@gmail.com>
3         PR target/110717
4         * config/i386/i386-features.cc
5         (general_scalar_chain::compute_convert_gain): Calculate gain
6         for extend higpart case.
7         (general_scalar_chain::convert_op): Handle
8         ASHIFTRT/ASHIFT combined RTX.
9         (general_scalar_to_vector_candidate_p): Enable ASHIFTRT for
10         SImode for SSE2 targets.  Handle ASHIFTRT/ASHIFT combined RTX.
11         * config/i386/i386.md (*extend<dwi>2_doubleword_highpart):
12         New define_insn_and_split pattern.
13         (*extendv2di2_highpart_stv): Ditto.
15 2023-07-20  Vladimir N. Makarov  <vmakarov@redhat.com>
17         * lra-constraints.cc (simplify_operand_subreg): Check frame pointer
18         simplification.
20 2023-07-20  Andrew Pinski  <apinski@marvell.com>
22         * combine.cc (dump_combine_stats): Remove.
23         (dump_combine_total_stats): Remove.
24         (total_attempts, total_merges, total_extras,
25         total_successes): Remove.
26         (combine_instructions): Don't increment total stats
27         instead use statistics_counter_event.
28         * dumpfile.cc (print_combine_total_stats): Remove.
29         * dumpfile.h (print_combine_total_stats): Remove.
30         (dump_combine_total_stats): Remove.
31         * passes.cc (finish_optimization_passes):
32         Don't call print_combine_total_stats.
33         * rtl.h (dump_combine_total_stats): Remove.
34         (dump_combine_stats): Remove.
36 2023-07-20  Jan Hubicka  <jh@suse.cz>
38         * tree-ssa-loop-ch.cc (should_duplicate_loop_header_p): Use BIT instead of TRUTH
39         logical ops.
41 2023-07-20  Martin Jambor  <mjambor@suse.cz>
43         * doc/invoke.texi (analyzer-text-art-string-ellipsis-threshold): New.
44         (analyzer-text-art-ideal-canvas-width): Likewise.
45         (analyzer-text-art-string-ellipsis-head-len): Likewise.
46         (analyzer-text-art-string-ellipsis-tail-len): Likewise.
48 2023-07-20  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
50         * tree-vect-stmts.cc (check_load_store_for_partial_vectors):
51         Refine code structure.
53 2023-07-20  Jan Hubicka  <jh@suse.cz>
55         * tree-ssa-loop-ch.cc (edge_range_query): Rename to ...
56         (get_range_query): ... this one; do
57         (static_loop_exit): Add query parametr, turn ranger to reference.
58         (loop_static_stmt_p): New function.
59         (loop_static_op_p): New function.
60         (loop_iv_derived_p): Remove.
61         (loop_combined_static_and_iv_p): New function.
62         (should_duplicate_loop_header_p): Discover combined onditionals;
63         do not track iv derived; improve dumps.
64         (pass_ch::execute): Fix whitespace.
66 2023-07-20  Richard Biener  <rguenther@suse.de>
68         PR tree-optimization/110204
69         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_avail):
70         Look through copies generated by PRE.
72 2023-07-20  Matthew Malcomson  <matthew.malcomson@arm.com>
74         * tree-vect-stmts.cc (get_group_load_store_type): Account for
75         `gap` when checking if need to peel twice.
77 2023-07-20  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
79         PR middle-end/77928
80         * doc/extend.texi: Document iseqsig builtin.
81         * builtins.cc (fold_builtin_iseqsig): New function.
82         (fold_builtin_2): Handle BUILT_IN_ISEQSIG.
83         (is_inexpensive_builtin): Handle BUILT_IN_ISEQSIG.
84         * builtins.def (BUILT_IN_ISEQSIG): New built-in.
86 2023-07-20  Pan Li  <pan2.li@intel.com>
88         * config/riscv/vector.md: Fix incorrect match_operand.
90 2023-07-20  Roger Sayle  <roger@nextmovesoftware.com>
92         * config/i386/i386-expand.cc (ix86_expand_move): Don't call
93         force_reg, to use SUBREG rather than create a new pseudo when
94         inserting DFmode fields into TImode with insvti_{high,low}part.
95         * config/i386/i386.md (*concat<mode><dwi>3_3): Split into two
96         define_insn_and_split...
97         (*concatditi3_3): 64-bit implementation.  Provide alternative
98         that allows register allocation to use SSE registers that is
99         split into vec_concatv2di after reload.
100         (*concatsidi3_3): 32-bit implementation.
102 2023-07-20  Richard Biener  <rguenther@suse.de>
104         PR middle-end/61747
105         * internal-fn.cc (expand_vec_cond_optab_fn): When the
106         value operands are equal to the original comparison operands
107         preserve that equality by re-using the comparison expansion.
108         * optabs.cc (emit_conditional_move): When the value operands
109         are equal to the comparison operands and would be forced to
110         a register by prepare_cmp_insn do so earlier, preserving the
111         equality.
113 2023-07-20  Pan Li  <pan2.li@intel.com>
115         * config/riscv/vector.md: Align pattern format.
117 2023-07-20  Haochen Jiang  <haochen.jiang@intel.com>
119         * doc/invoke.texi: Remove AVX512VP2INTERSECT in
120         Granite Rapids{, D} from documentation.
122 2023-07-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
124         * config/riscv/autovec.md
125         (len_mask_gather_load<VNX16_QHSD:mode><VNX16_QHSDI:mode>):
126         Refactor RVV machine modes.
127         (len_mask_gather_load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
128         (len_mask_gather_load<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
129         (len_mask_gather_load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
130         (len_mask_gather_load<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
131         (len_mask_gather_load<mode><mode>): Ditto.
132         (len_mask_gather_load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
133         (len_mask_scatter_store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
134         (len_mask_scatter_store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
135         (len_mask_scatter_store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
136         (len_mask_scatter_store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
137         (len_mask_scatter_store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
138         (len_mask_scatter_store<mode><mode>): Ditto.
139         (len_mask_scatter_store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
140         * config/riscv/riscv-modes.def (VECTOR_BOOL_MODE): Ditto.
141         (ADJUST_NUNITS): Ditto.
142         (ADJUST_ALIGNMENT): Ditto.
143         (ADJUST_BYTESIZE): Ditto.
144         (ADJUST_PRECISION): Ditto.
145         (RVV_MODES): Ditto.
146         (RVV_WHOLE_MODES): Ditto.
147         (RVV_FRACT_MODE): Ditto.
148         (RVV_NF8_MODES): Ditto.
149         (RVV_NF4_MODES): Ditto.
150         (VECTOR_MODES_WITH_PREFIX): Ditto.
151         (VECTOR_MODE_WITH_PREFIX): Ditto.
152         (RVV_TUPLE_MODES): Ditto.
153         (RVV_NF2_MODES): Ditto.
154         (RVV_TUPLE_PARTIAL_MODES): Ditto.
155         * config/riscv/riscv-v.cc (struct mode_vtype_group): Ditto.
156         (ENTRY): Ditto.
157         (TUPLE_ENTRY): Ditto.
158         (get_vlmul): Ditto.
159         (get_nf): Ditto.
160         (get_ratio): Ditto.
161         (preferred_simd_mode): Ditto.
162         (autovectorize_vector_modes): Ditto.
163         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
164         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
165         (vbool64_t): Ditto.
166         (vbool32_t): Ditto.
167         (vbool16_t): Ditto.
168         (vbool8_t): Ditto.
169         (vbool4_t): Ditto.
170         (vbool2_t): Ditto.
171         (vbool1_t): Ditto.
172         (vint8mf8_t): Ditto.
173         (vuint8mf8_t): Ditto.
174         (vint8mf4_t): Ditto.
175         (vuint8mf4_t): Ditto.
176         (vint8mf2_t): Ditto.
177         (vuint8mf2_t): Ditto.
178         (vint8m1_t): Ditto.
179         (vuint8m1_t): Ditto.
180         (vint8m2_t): Ditto.
181         (vuint8m2_t): Ditto.
182         (vint8m4_t): Ditto.
183         (vuint8m4_t): Ditto.
184         (vint8m8_t): Ditto.
185         (vuint8m8_t): Ditto.
186         (vint16mf4_t): Ditto.
187         (vuint16mf4_t): Ditto.
188         (vint16mf2_t): Ditto.
189         (vuint16mf2_t): Ditto.
190         (vint16m1_t): Ditto.
191         (vuint16m1_t): Ditto.
192         (vint16m2_t): Ditto.
193         (vuint16m2_t): Ditto.
194         (vint16m4_t): Ditto.
195         (vuint16m4_t): Ditto.
196         (vint16m8_t): Ditto.
197         (vuint16m8_t): Ditto.
198         (vint32mf2_t): Ditto.
199         (vuint32mf2_t): Ditto.
200         (vint32m1_t): Ditto.
201         (vuint32m1_t): Ditto.
202         (vint32m2_t): Ditto.
203         (vuint32m2_t): Ditto.
204         (vint32m4_t): Ditto.
205         (vuint32m4_t): Ditto.
206         (vint32m8_t): Ditto.
207         (vuint32m8_t): Ditto.
208         (vint64m1_t): Ditto.
209         (vuint64m1_t): Ditto.
210         (vint64m2_t): Ditto.
211         (vuint64m2_t): Ditto.
212         (vint64m4_t): Ditto.
213         (vuint64m4_t): Ditto.
214         (vint64m8_t): Ditto.
215         (vuint64m8_t): Ditto.
216         (vfloat16mf4_t): Ditto.
217         (vfloat16mf2_t): Ditto.
218         (vfloat16m1_t): Ditto.
219         (vfloat16m2_t): Ditto.
220         (vfloat16m4_t): Ditto.
221         (vfloat16m8_t): Ditto.
222         (vfloat32mf2_t): Ditto.
223         (vfloat32m1_t): Ditto.
224         (vfloat32m2_t): Ditto.
225         (vfloat32m4_t): Ditto.
226         (vfloat32m8_t): Ditto.
227         (vfloat64m1_t): Ditto.
228         (vfloat64m2_t): Ditto.
229         (vfloat64m4_t): Ditto.
230         (vfloat64m8_t): Ditto.
231         * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
232         (TUPLE_ENTRY): Ditto.
233         * config/riscv/riscv-vsetvl.cc (change_insn): Ditto.
234         * config/riscv/riscv.cc (riscv_valid_lo_sum_p): Ditto.
235         (riscv_v_adjust_nunits): Ditto.
236         (riscv_v_adjust_bytesize): Ditto.
237         (riscv_v_adjust_precision): Ditto.
238         (riscv_convert_vector_bits): Ditto.
239         * config/riscv/riscv.h (riscv_v_adjust_nunits): Ditto.
240         * config/riscv/riscv.md: Ditto.
241         * config/riscv/vector-iterators.md: Ditto.
242         * config/riscv/vector.md
243         (@pred_indexed_<order>store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
244         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
245         (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
246         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
247         (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
248         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
249         (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
250         (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
251         (@pred_indexed_<order>load<V1T:mode><VNX1_QHSDI:mode>): Ditto.
252         (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
253         (@pred_indexed_<order>load<V2T:mode><VNX2_QHSDI:mode>): Ditto.
254         (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
255         (@pred_indexed_<order>load<V4T:mode><VNX4_QHSDI:mode>): Ditto.
256         (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
257         (@pred_indexed_<order>load<V8T:mode><VNX8_QHSDI:mode>): Ditto.
258         (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
259         (@pred_indexed_<order>load<V16T:mode><VNX16_QHSI:mode>): Ditto.
260         (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
261         (@pred_indexed_<order>load<V32T:mode><VNX32_QHI:mode>): Ditto.
262         (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
263         (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
264         (@pred_indexed_<order>store<V1T:mode><VNX1_QHSDI:mode>): Ditto.
265         (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
266         (@pred_indexed_<order>store<V2T:mode><VNX2_QHSDI:mode>): Ditto.
267         (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
268         (@pred_indexed_<order>store<V4T:mode><VNX4_QHSDI:mode>): Ditto.
269         (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
270         (@pred_indexed_<order>store<V8T:mode><VNX8_QHSDI:mode>): Ditto.
271         (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
272         (@pred_indexed_<order>store<V16T:mode><VNX16_QHSI:mode>): Ditto.
273         (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
274         (@pred_indexed_<order>store<V32T:mode><VNX32_QHI:mode>): Ditto.
275         (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
277 2023-07-19  Vladimir N. Makarov  <vmakarov@redhat.com>
279         * lra-int.h (lra_update_fp2sp_elimination): New prototype.
280         (lra_asm_insn_error): New prototype.
281         * lra-spills.cc (remove_pseudos): Add check for pseudo slot memory
282         existence.
283         (lra_spill): Call lra_update_fp2sp_elimination.
284         * lra-eliminations.cc: Remove trailing spaces.
285         (elimination_fp2sp_occured_p): New static flag.
286         (lra_eliminate_regs_1): Set the flag up.
287         (update_reg_eliminate): Modify the assert for stack to frame
288         pointer elimination.
289         (lra_update_fp2sp_elimination): New function.
290         (lra_eliminate): Clear flag elimination_fp2sp_occured_p.
292 2023-07-19  Andrew Carlotti  <andrew.carlotti@arm.com>
294         * config/aarch64/aarch64.h (TARGET_MEMTAG): Remove armv8.5
295         dependency.
296         * config/aarch64/arm_acle.h: Remove unnecessary armv8.x
297         dependencies from target pragmas.
298         * config/aarch64/arm_fp16.h (target): Likewise.
299         * config/aarch64/arm_neon.h (target): Likewise.
301 2023-07-19  Andrew Pinski  <apinski@marvell.com>
303         PR tree-optimization/110252
304         * tree-ssa-phiopt.cc (class auto_flow_sensitive): New class.
305         (auto_flow_sensitive::auto_flow_sensitive): New constructor.
306         (auto_flow_sensitive::~auto_flow_sensitive): New deconstructor.
307         (match_simplify_replacement): Temporarily
308         remove the flow sensitive info on the two statements that might
309         be moved.
311 2023-07-19  Andrew Pinski  <apinski@marvell.com>
313         * gimple-fold.cc (fosa_unwind): Replace `vrange_storage *`
314         with flow_sensitive_info_storage.
315         (follow_outer_ssa_edges): Update how to save off the flow
316         sensitive info.
317         (maybe_fold_comparisons_from_match_pd): Update restoring
318         of flow sensitive info.
319         * tree-ssanames.cc (flow_sensitive_info_storage::save): New method.
320         (flow_sensitive_info_storage::restore): New method.
321         (flow_sensitive_info_storage::save_and_clear): New method.
322         (flow_sensitive_info_storage::clear_storage): New method.
323         * tree-ssanames.h (class flow_sensitive_info_storage): New class.
325 2023-07-19  Andrew Pinski  <apinski@marvell.com>
327         PR tree-optimization/110726
328         * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)):
329         Add checks to make sure the type was one bit precision
330         intergal type.
332 2023-07-19  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
334         * doc/md.texi: Add mask_len_fold_left_plus.
335         * internal-fn.cc (mask_len_fold_left_direct): Ditto.
336         (expand_mask_len_fold_left_optab_fn): Ditto.
337         (direct_mask_len_fold_left_optab_supported_p): Ditto.
338         * internal-fn.def (MASK_LEN_FOLD_LEFT_PLUS): Ditto.
339         * optabs.def (OPTAB_D): Ditto.
341 2023-07-19  Jakub Jelinek  <jakub@redhat.com>
343         * tree-switch-conversion.h (class bit_test_cluster): Fix comment typo.
345 2023-07-19  Jakub Jelinek  <jakub@redhat.com>
347         PR tree-optimization/110731
348         * wide-int.cc (wi::divmod_internal): Always unpack dividend and
349         divisor as UNSIGNED regardless of sgn.
351 2023-07-19  Lehua Ding  <lehua.ding@rivai.ai>
353         * common/config/riscv/riscv-common.cc (riscv_supported_std_ext): Init.
354         (standard_extensions_p): Add check.
355         (riscv_subset_list::add): Just return NULL if it failed before.
356         (riscv_subset_list::parse_std_ext): Continue parse when find a error
357         (riscv_subset_list::parse): Just return NULL if it failed before.
358         * config/riscv/riscv-subset.h (class riscv_subset_list): Add field.
360 2023-07-19  Jan Beulich  <jbeulich@suse.com>
362         * config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate):
363         Use gen_vec_set_0.
364         (ix86_expand_vector_extract): Use gen_vec_extract_lo /
365         gen_vec_extract_hi.
366         (expand_vec_perm_broadcast_1): Use gen_vec_interleave_high /
367         gen_vec_interleave_low. Rename local variable.
369 2023-07-19  Jan Beulich  <jbeulich@suse.com>
371         * config/i386/sse.md (vec_dupv2df<mask_name>): Add new AVX512F
372         alternative. Move AVX512VL part of condition to new "enabled"
373         attribute.
375 2023-07-19  liuhongt  <hongtao.liu@intel.com>
377         PR target/109504
378         * config/i386/i386-builtins.cc
379         (ix86_register_float16_builtin_type): Remove TARGET_SSE2.
380         (ix86_register_bf16_builtin_type): Ditto.
381         * config/i386/i386-c.cc (ix86_target_macros): When TARGET_SSE2
382         isn't available, undef the macros which are used to check the
383         backend support of the _Float16/__bf16 types when building
384         libstdc++ and libgcc.
385         * config/i386/i386.cc (construct_container): Issue errors for
386         HFmode/BFmode when TARGET_SSE2 is not available.
387         (function_value_32): Ditto.
388         (ix86_scalar_mode_supported_p): Remove TARGET_SSE2 for HFmode/BFmode.
389         (ix86_libgcc_floating_mode_supported_p): Ditto.
390         (ix86_emit_support_tinfos): Adjust codes.
391         (ix86_invalid_conversion): Return diagnostic message string
392         when there's conversion from/to BF/HFmode w/o TARGET_SSE2.
393         (ix86_invalid_unary_op): New function.
394         (ix86_invalid_binary_op): Ditto.
395         (TARGET_INVALID_UNARY_OP): Define.
396         (TARGET_INVALID_BINARY_OP): Define.
397         * config/i386/immintrin.h [__SSE2__]: Remove for fp16/bf16
398         related instrinsics header files.
399         * config/i386/i386.h (VALID_SSE2_TYPE_MODE): New macro.
401 2023-07-18  Uros Bizjak  <ubizjak@gmail.com>
403         * dwarf2asm.cc: Change FALSE to false.
404         * dwarf2cfi.cc (execute_dwarf2_frame): Change return type to void.
405         * dwarf2out.cc (matches_main_base): Change return type from
406         int to bool.  Change "last_match" variable to bool.
407         (dump_struct_debug): Change return type from int to bool.
408         Change "matches" and "result" function arguments to bool.
409         (is_pseudo_reg): Change return type from int to bool.
410         (is_tagged_type): Ditto.
411         (same_loc_p): Ditto.
412         (same_dw_val_p): Change return type from int to bool and adjust
413         function body accordingly.
414         (same_attr_p): Ditto.
415         (same_die_p): Ditto.
416         (is_type_die): Ditto.
417         (is_declaration_die): Ditto.
418         (should_move_die_to_comdat): Ditto.
419         (is_base_type): Ditto.
420         (is_based_loc): Ditto.
421         (local_scope_p): Ditto.
422         (class_scope_p): Ditto.
423         (class_or_namespace_scope_p): Ditto.
424         (is_tagged_type): Ditto.
425         (is_rust): Use void argument.
426         (is_nested_in_subprogram): Change return type from int to bool.
427         (contains_subprogram_definition): Ditto.
428         (gen_struct_or_union_type_die): Change "nested", "complete"
429         and "ns_decl" variables to bool.
430         (is_naming_typedef_decl): Change FALSE to false.
432 2023-07-18  Jan Hubicka  <jh@suse.cz>
434         * tree-ssa-loop-ch.cc (edge_range_query): Take loop argument; be ready
435         for queries not in headers.
436         (static_loop_exit): Add basic blck parameter; update use of
437         edge_range_query
438         (should_duplicate_loop_header_p): Add ranger and static_exits
439         parameter.  Do not account statements that will be optimized
440         out after duplicaiton in overall size. Add ranger query to
441         find static exits.
442         (update_profile_after_ch):  Take static_exits has set instead of
443         single eliminated_edge.
444         (ch_base::copy_headers): Do all analysis in the first pass;
445         remember invariant_exits and static_exits.
447 2023-07-18  Jason Merrill  <jason@redhat.com>
449         * fold-const.cc (native_interpret_aggregate): Skip empty fields.
451 2023-07-18  Gaius Mulley  <gaiusmod2@gmail.com>
453         * doc/gm2.texi (Semantic checking): Change example testwithptr
454         to testnew6.
456 2023-07-18  Richard Biener  <rguenther@suse.de>
458         PR middle-end/105715
459         * gimple-isel.cc (gimple_expand_vec_exprs): Merge into...
460         (pass_gimple_isel::execute): ... this.  Duplicate
461         comparison defs of COND_EXPRs.
463 2023-07-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
465         * config/riscv/riscv-selftests.cc (run_poly_int_selftests): Add more selftests.
466         * config/riscv/riscv.cc (riscv_legitimize_poly_move): Dynamic adjust size of VLA vectors.
467         (riscv_convert_vector_bits): Ditto.
469 2023-07-18  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
471         * config/riscv/autovec.md (vec_shl_insert_<mode>): New patterns.
472         * config/riscv/riscv-v.cc (shuffle_compress_patterns): Fix bugs.
474 2023-07-18  Juergen Christ  <jchrist@linux.ibm.com>
476         * config/s390/vx-builtins.md: New vsel pattern.
478 2023-07-18  liuhongt  <hongtao.liu@intel.com>
480         PR target/110438
481         * config/i386/sse.md (<mask_codefor>one_cmpl<mode>2<mask_name>):
482         Remove # from assemble output.
484 2023-07-18  liuhongt  <hongtao.liu@intel.com>
486         PR target/110591
487         * config/i386/sync.md (cmpccxadd_<mode>): Adjust the pattern
488         to explicitly set FLAGS_REG like *cmp<mode>_1, also add extra
489         3 define_peephole2 after the pattern.
491 2023-07-18  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
493         * rtl-ssa/internals.inl: Fix when mode1 and mode2 are not ordred.
495 2023-07-18  Pan Li  <pan2.li@intel.com>
496             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
498         * config/riscv/riscv.cc (struct machine_function): Add new field.
499         (riscv_static_frm_mode_p): New function.
500         (riscv_emit_frm_mode_set): New function for emit FRM.
501         (riscv_emit_mode_set): Extract function for FRM.
502         (riscv_mode_needed): Fix the TODO.
503         (riscv_mode_entry): Initial dynamic frm RTL.
504         (riscv_mode_exit): Return DYN_EXIT.
505         * config/riscv/riscv.md: Add rdfrm.
506         * config/riscv/vector-iterators.md (unspecv): Add DYN_EXIT unspecv.
507         * config/riscv/vector.md (frm_modee): Add new mode dyn_exit.
508         (fsrm): Removed.
509         (fsrmsi_backup): New pattern for swap.
510         (fsrmsi_restore): New pattern for restore.
511         (fsrmsi_restore_exit): New pattern for restore exit.
512         (frrmsi): New pattern for backup.
514 2023-07-17  Arsen Arsenović  <arsen@aarsen.me>
516         * doc/extend.texi: Add @cindex on __auto_type.
518 2023-07-17  Uros Bizjak  <ubizjak@gmail.com>
520         * combine-stack-adj.cc (stack_memref_p): Change return type from
521         int to bool and adjust function body accordingly.
522         (rest_of_handle_stack_adjustments): Change return type to void.
524 2023-07-17  Uros Bizjak  <ubizjak@gmail.com>
526         * combine.cc (struct reg_stat_type): Change last_set_invalid to bool.
527         (cant_combine_insn_p): Change return type from int to bool and adjust
528         function body accordingly.
529         (can_combine_p): Ditto.
530         (combinable_i3pat): Ditto.  Change "i1_not_in_src" and "i0_not_in_src"
531         function arguments from int to bool.
532         (contains_muldiv): Change return type from int to bool and adjust
533         function body accordingly.
534         (try_combine): Ditto. Change "new_direct_jump" pointer function
535         argument from int to bool.  Change "substed_i2", "substed_i1",
536         "substed_i0", "added_sets_0", "added_sets_1", "added_sets_2",
537         "i2dest_in_i2src", "i1dest_in_i1src", "i2dest_in_i1src",
538         "i0dest_in_i0src", "i1dest_in_i0src", "i2dest_in_i0src",
539         "i2dest_killed", "i1dest_killed", "i0dest_killed", "i1_feeds_i2_n",
540         "i0_feeds_i2_n", "i0_feeds_i1_n", "i3_subst_into_i2", "have_mult",
541         "swap_i2i3", "split_i2i3" and "changed_i3_dest" variables
542         from int to bool.
543         (subst): Change "in_dest", "in_cond" and "unique_copy" function
544         arguments from int to bool.
545         (combine_simplify_rtx): Change "in_dest" and "in_cond" function
546         arguments from int to bool.
547         (make_extraction): Change "unsignedp", "in_dest" and "in_compare"
548         function argument from int to bool.
549         (force_int_to_mode): Change "just_select" function argument
550         from int to bool.  Change "next_select" variable to bool.
551         (rtx_equal_for_field_assignment_p): Change return type from
552         int to bool and adjust function body accordingly.
553         (merge_outer_ops): Ditto.  Change "pcomp_p" pointer function
554         argument from int to bool.
555         (get_last_value_validate): Change return type from int to bool
556         and adjust function body accordingly.
557         (reg_dead_at_p): Ditto.
558         (reg_bitfield_target_p): Ditto.
559         (combine_instructions): Ditto.  Change "new_direct_jump"
560         variable to bool.
561         (can_combine_p): Change return type from int to bool
562         and adjust function body accordingly.
563         (likely_spilled_retval_p): Ditto.
564         (can_change_dest_mode): Change "added_sets" function argument
565         from int to bool.
566         (find_split_point): Change "unsignedp" variable to bool.
567         (simplify_if_then_else): Change "comparison_p" and "swapped"
568         variables to bool.
569         (simplify_set): Change "other_changed" variable to bool.
570         (expand_compound_operation): Change "unsignedp" variable to bool.
571         (force_to_mode): Change "just_select" function argument
572         from int to bool.  Change "next_select" variable to bool.
573         (extended_count): Change "unsignedp" function argument to bool.
574         (simplify_shift_const_1): Change "complement_p" variable to bool.
575         (simplify_comparison): Change "changed" variable to bool.
576         (rest_of_handle_combine): Change return type to void.
578 2023-07-17  Andre Vieira  <andre.simoesdiasvieira@arm.com>
580         PR plugins/110610
581         * Makefile.in (INTERNAL_FN_H): Add insn-opinit.h.
583 2023-07-17  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
585         * ira.cc (setup_reg_class_relations): Continue
586         if regclass cl3 is hard_reg_set_empty_p.
588 2023-07-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
590         * config/riscv/riscv.cc (riscv_option_override): Add sorry check.
592 2023-07-17  Martin Jambor  <mjambor@suse.cz>
594         * tree-ssa-loop-ivcanon.cc (try_peel_loop): Remove unused variable
595         entry_count.
597 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
599         * tree-ssa-ccp.cc (ccp_finalize): Export value/mask known bits.
601 2023-07-17  Lehua Ding  <lehua.ding@rivai.ai>
603         PR target/110696
604         * common/config/riscv/riscv-common.cc (riscv_subset_list::handle_implied_ext):
605         recur add all implied extensions.
606         (riscv_subset_list::check_implied_ext): Add new method.
607         (riscv_subset_list::parse): Call checker check_implied_ext.
608         * config/riscv/riscv-subset.h: Add new method.
610 2023-07-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
612         * config/riscv/autovec.md (reduc_plus_scal_<mode>): New pattern.
613         (reduc_smax_scal_<mode>): Ditto.
614         (reduc_umax_scal_<mode>): Ditto.
615         (reduc_smin_scal_<mode>): Ditto.
616         (reduc_umin_scal_<mode>): Ditto.
617         (reduc_and_scal_<mode>): Ditto.
618         (reduc_ior_scal_<mode>): Ditto.
619         (reduc_xor_scal_<mode>): Ditto.
620         * config/riscv/riscv-protos.h (enum insn_type): Add reduction.
621         (expand_reduction): New function.
622         * config/riscv/riscv-v.cc (emit_vlmax_reduction_insn): Ditto.
623         (emit_vlmax_fp_reduction_insn): Ditto.
624         (get_m1_mode): Ditto.
625         (expand_cond_len_binop): Fix name.
626         (expand_reduction): New function
627         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Fix VSETVL BUG.
628         (validate_change_or_fail): New function.
629         (change_insn): Fix VSETVL BUG.
630         (change_vsetvl_insn): Ditto.
631         (pass_vsetvl::backward_demand_fusion): Ditto.
632         (pass_vsetvl::df_post_optimization): Ditto.
634 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
636         * ipa-prop.cc (ipcp_update_bits): Export value/mask known bits.
638 2023-07-17  Christoph Müllner  <christoph.muellner@vrull.eu>
640         * config/riscv/riscv.cc (riscv_regno_ok_for_index_p):
641         Remove parameter name from declaration of unused parameter.
643 2023-07-17  Kewen Lin  <linkw@linux.ibm.com>
645         PR tree-optimization/110652
646         * tree-vect-stmts.cc (vectorizable_load): Initialize new_temp as
647         NULL_TREE.
649 2023-07-17  Richard Biener  <rguenther@suse.de>
651         PR tree-optimization/110669
652         * tree-scalar-evolution.cc (analyze_and_compute_bitop_with_inv_effect):
653         Check we matched a header PHI.
655 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
657         * tree-ssanames.cc (set_bitmask): New.
658         * tree-ssanames.h (set_bitmask): New.
660 2023-07-17  Aldy Hernandez  <aldyh@redhat.com>
662         * value-range.cc (irange_bitmask::verify_mask): Mask need not be
663         normalized.
664         * value-range.h (irange_bitmask::union_): Normalize beforehand.
665         (irange_bitmask::intersect): Same.
667 2023-07-17  Andrew Pinski  <apinski@marvell.com>
669         PR tree-optimization/95923
670         * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)): New transformation.
672 2023-07-17  Roger Sayle  <roger@nextmovesoftware.com>
674         * tree-if-conv.cc (predicate_scalar_phi): Make the arguments
675         to the std::sort comparison lambda function const.
677 2023-07-17  Andrew Pinski  <apinski@marvell.com>
679         PR tree-optimization/110666
680         * match.pd (A NEEQ (A NEEQ CST)): Fix Outer EQ case.
682 2023-07-17  Mo, Zewei  <zewei.mo@intel.com>
684         * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Lunar Lake,
685         Arrow Lake and Arrow Lake S.
686         * common/config/i386/i386-common.cc:
687         (processor_name): Add arrowlake.
688         (processor_alias_table): Add arrow lake, arrow lake s and lunar
689         lake.
690         * common/config/i386/i386-cpuinfo.h (enum processor_subtypes):
691         Add INTEL_COREI7_ARROWLAKE and INTEL_COREI7_ARROWLAKE_S.
692         * config.gcc: Add -march=arrowlake and -march=arrowlake-s.
693         * config/i386/driver-i386.cc (host_detect_local_cpu): Handle
694         arrowlake-s.
695         * config/i386/i386-c.cc (ix86_target_macros_internal): Add
696         arrowlake.
697         * config/i386/i386-options.cc (m_ARROWLAKE): New.
698         (processor_cost_table): Add arrowlake.
699         * config/i386/i386.h (enum processor_type):
700         Add PROCESSOR_ARROWLAKE.
701         * config/i386/x86-tune.def: Add m_ARROWLAKE.
702         * doc/extend.texi: Add arrowlake and arrowlake-s.
703         * doc/invoke.texi: Ditto.
705 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
707         * config/i386/sse.md (VI2_AVX2): Delete V32HI since we actually
708         have the same iterator. Also renaming all the occurence to
709         VI2_AVX2_AVX512BW.
710         (usdot_prod<mode>): New define_expand.
711         (udot_prod<mode>): Ditto.
713 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
715         * common/config/i386/cpuinfo.h (get_available_features):
716         Detech SM4.
717         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SM4_SET,
718         OPTION_MASK_ISA2_SM4_UNSET): New.
719         (OPTION_MASK_ISA2_AVX_UNSET): Add SM4.
720         (ix86_handle_option): Handle -msm4.
721         * common/config/i386/i386-cpuinfo.h (enum processor_features):
722         Add FEATURE_SM4.
723         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
724         sm4.
725         * config.gcc: Add sm4intrin.h.
726         * config/i386/cpuid.h (bit_SM4): New.
727         * config/i386/i386-builtin.def (BDESC): Add new builtins.
728         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
729         __SM4__.
730         * config/i386/i386-isa.def (SM4): Add DEF_PTA(SM4).
731         * config/i386/i386-options.cc (isa2_opts): Add -msm4.
732         (ix86_valid_target_attribute_inner_p): Handle sm4.
733         * config/i386/i386.opt: Add option -msm4.
734         * config/i386/immintrin.h: Include sm4intrin.h
735         * config/i386/sse.md (vsm4key4_<mode>): New define insn.
736         (vsm4rnds4_<mode>): Ditto.
737         * doc/extend.texi: Document sm4.
738         * doc/invoke.texi: Document -msm4.
739         * doc/sourcebuild.texi: Document target sm4.
740         * config/i386/sm4intrin.h: New file.
742 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
744         * common/config/i386/cpuinfo.h (get_available_features):
745         Detect SHA512.
746         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SHA512_SET,
747         OPTION_MASK_ISA2_SHA512_UNSET): New.
748         (OPTION_MASK_ISA2_AVX_UNSET): Add SHA512.
749         (ix86_handle_option): Handle -msha512.
750         * common/config/i386/i386-cpuinfo.h (enum processor_features):
751         Add FEATURE_SHA512.
752         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
753         sha512.
754         * config.gcc: Add sha512intrin.h.
755         * config/i386/cpuid.h (bit_SHA512): New.
756         * config/i386/i386-builtin-types.def:
757         Add DEF_FUNCTION_TYPE (V4DI, V4DI, V4DI, V2DI).
758         * config/i386/i386-builtin.def (BDESC): Add new builtins.
759         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
760         __SHA512__.
761         * config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle
762         V4DI_FTYPE_V4DI_V4DI_V2DI and V4DI_FTYPE_V4DI_V2DI.
763         * config/i386/i386-isa.def (SHA512): Add DEF_PTA(SHA512).
764         * config/i386/i386-options.cc (isa2_opts): Add -msha512.
765         (ix86_valid_target_attribute_inner_p): Handle sha512.
766         * config/i386/i386.opt: Add option -msha512.
767         * config/i386/immintrin.h: Include sha512intrin.h.
768         * config/i386/sse.md (vsha512msg1): New define insn.
769         (vsha512msg2): Ditto.
770         (vsha512rnds2): Ditto.
771         * doc/extend.texi: Document sha512.
772         * doc/invoke.texi: Document -msha512.
773         * doc/sourcebuild.texi: Document target sha512.
774         * config/i386/sha512intrin.h: New file.
776 2023-07-17  Haochen Jiang  <haochen.jiang@intel.com>
778         * common/config/i386/cpuinfo.h (get_available_features):
779         Detect SM3.
780         * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SM3_SET,
781         OPTION_MASK_ISA2_SM3_UNSET): New.
782         (OPTION_MASK_ISA2_AVX_UNSET): Add SM3.
783         (ix86_handle_option): Handle -msm3.
784         * common/config/i386/i386-cpuinfo.h (enum processor_features):
785         Add FEATURE_SM3.
786         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
787         SM3.
788         * config.gcc: Add sm3intrin.h
789         * config/i386/cpuid.h (bit_SM3): New.
790         * config/i386/i386-builtin-types.def:
791         Add DEF_FUNCTION_TYPE (V4SI, V4SI, V4SI, V4SI, INT).
792         * config/i386/i386-builtin.def (BDESC): Add new builtins.
793         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
794         __SM3__.
795         * config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle
796         V4SI_FTYPE_V4SI_V4SI_V4SI_INT.
797         * config/i386/i386-isa.def (SM3): Add DEF_PTA(SM3).
798         * config/i386/i386-options.cc (isa2_opts): Add -msm3.
799         (ix86_valid_target_attribute_inner_p): Handle sm3.
800         * config/i386/i386.opt: Add option -msm3.
801         * config/i386/immintrin.h: Include sm3intrin.h.
802         * config/i386/sse.md (vsm3msg1): New define insn.
803         (vsm3msg2): Ditto.
804         (vsm3rnds2): Ditto.
805         * doc/extend.texi: Document sm3.
806         * doc/invoke.texi: Document -msm3.
807         * doc/sourcebuild.texi: Document target sm3.
808         * config/i386/sm3intrin.h: New file.
810 2023-07-17  Kong Lingling  <lingling.kong@intel.com>
811             Haochen Jiang  <haochen.jiang@intel.com>
813         * common/config/i386/cpuinfo.h (get_available_features): Detect
814         avxvnniint16.
815         * common/config/i386/i386-common.cc
816         (OPTION_MASK_ISA2_AVXVNNIINT16_SET): New.
817         (OPTION_MASK_ISA2_AVXVNNIINT16_UNSET): Ditto.
818         (ix86_handle_option): Handle -mavxvnniint16.
819         * common/config/i386/i386-cpuinfo.h (enum processor_features):
820         Add FEATURE_AVXVNNIINT16.
821         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
822         avxvnniint16.
823         * config.gcc: Add avxvnniint16.h.
824         * config/i386/avxvnniint16intrin.h: New file.
825         * config/i386/cpuid.h (bit_AVXVNNIINT16): New.
826         * config/i386/i386-builtin.def: Add new builtins.
827         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
828         __AVXVNNIINT16__.
829         * config/i386/i386-options.cc (isa2_opts): Add -mavxvnniint16.
830         (ix86_valid_target_attribute_inner_p): Handle avxvnniint16intrin.h.
831         * config/i386/i386-isa.def: Add DEF_PTA(AVXVNNIINT16).
832         * config/i386/i386.opt: Add option -mavxvnniint16.
833         * config/i386/immintrin.h: Include avxvnniint16.h.
834         * config/i386/sse.md
835         (vpdp<vpdpwprodtype>_<mode>): New define_insn.
836         * doc/extend.texi: Document avxvnniint16.
837         * doc/invoke.texi: Document -mavxvnniint16.
838         * doc/sourcebuild.texi: Document target avxvnniint16.
840 2023-07-16  Jan Hubicka  <jh@suse.cz>
842         PR middle-end/110649
843         * tree-vect-loop.cc (scale_profile_for_vect_loop): Rewrite.
844         (vect_transform_loop): Move scale_profile_for_vect_loop after
845         upper bound updates.
847 2023-07-16  Jan Hubicka  <jh@suse.cz>
849         PR tree-optimization/110649
850         * tree-vect-loop.cc (optimize_mask_stores): Set correctly
851         probability of the if-then-else construct.
853 2023-07-16  Jan Hubicka  <jh@suse.cz>
855         PR middle-end/110649
856         * tree-ssa-loop-ivcanon.cc (try_peel_loop): Avoid double profile update.
858 2023-07-15  Andrew Pinski  <apinski@marvell.com>
860         * doc/contrib.texi: Update my entry.
862 2023-07-15  John David Anglin  <danglin@gcc.gnu.org>
864         * config/pa/pa.md: Define constants R1_REGNUM, R19_REGNUM and
865         R27_REGNUM.
866         (tgd_load): Restrict to !TARGET_64BIT. Use register constants.
867         (tld_load): Likewise.
868         (tgd_load_pic): Change to expander.
869         (tld_load_pic, tld_offset_load, tp_load): Likewise.
870         (tie_load_pic, tle_load): Likewise.
871         (tgd_load_picsi, tgd_load_picdi): New.
872         (tld_load_picsi, tld_load_picdi): New.
873         (tld_offset_load<P:mode>): New.
874         (tp_load<P:mode>): New.
875         (tie_load_picsi, tie_load_picdi): New.
876         (tle_load<P:mode>): New.
878 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
880         * config/arm/arm-mve-builtins-base.cc (vcmlaq, vcmlaq_rot90)
881         (vcmlaq_rot180, vcmlaq_rot270): New.
882         * config/arm/arm-mve-builtins-base.def (vcmlaq, vcmlaq_rot90)
883         (vcmlaq_rot180, vcmlaq_rot270): New.
884         * config/arm/arm-mve-builtins-base.h: (vcmlaq, vcmlaq_rot90)
885         (vcmlaq_rot180, vcmlaq_rot270): New.
886         * config/arm/arm-mve-builtins.cc
887         (function_instance::has_inactive_argument): Handle vcmlaq,
888         vcmlaq_rot90, vcmlaq_rot180, vcmlaq_rot270.
889         * config/arm/arm_mve.h (vcmlaq): Delete.
890         (vcmlaq_rot180): Delete.
891         (vcmlaq_rot270): Delete.
892         (vcmlaq_rot90): Delete.
893         (vcmlaq_m): Delete.
894         (vcmlaq_rot180_m): Delete.
895         (vcmlaq_rot270_m): Delete.
896         (vcmlaq_rot90_m): Delete.
897         (vcmlaq_f16): Delete.
898         (vcmlaq_rot180_f16): Delete.
899         (vcmlaq_rot270_f16): Delete.
900         (vcmlaq_rot90_f16): Delete.
901         (vcmlaq_f32): Delete.
902         (vcmlaq_rot180_f32): Delete.
903         (vcmlaq_rot270_f32): Delete.
904         (vcmlaq_rot90_f32): Delete.
905         (vcmlaq_m_f32): Delete.
906         (vcmlaq_m_f16): Delete.
907         (vcmlaq_rot180_m_f32): Delete.
908         (vcmlaq_rot180_m_f16): Delete.
909         (vcmlaq_rot270_m_f32): Delete.
910         (vcmlaq_rot270_m_f16): Delete.
911         (vcmlaq_rot90_m_f32): Delete.
912         (vcmlaq_rot90_m_f16): Delete.
913         (__arm_vcmlaq_f16): Delete.
914         (__arm_vcmlaq_rot180_f16): Delete.
915         (__arm_vcmlaq_rot270_f16): Delete.
916         (__arm_vcmlaq_rot90_f16): Delete.
917         (__arm_vcmlaq_f32): Delete.
918         (__arm_vcmlaq_rot180_f32): Delete.
919         (__arm_vcmlaq_rot270_f32): Delete.
920         (__arm_vcmlaq_rot90_f32): Delete.
921         (__arm_vcmlaq_m_f32): Delete.
922         (__arm_vcmlaq_m_f16): Delete.
923         (__arm_vcmlaq_rot180_m_f32): Delete.
924         (__arm_vcmlaq_rot180_m_f16): Delete.
925         (__arm_vcmlaq_rot270_m_f32): Delete.
926         (__arm_vcmlaq_rot270_m_f16): Delete.
927         (__arm_vcmlaq_rot90_m_f32): Delete.
928         (__arm_vcmlaq_rot90_m_f16): Delete.
929         (__arm_vcmlaq): Delete.
930         (__arm_vcmlaq_rot180): Delete.
931         (__arm_vcmlaq_rot270): Delete.
932         (__arm_vcmlaq_rot90): Delete.
933         (__arm_vcmlaq_m): Delete.
934         (__arm_vcmlaq_rot180_m): Delete.
935         (__arm_vcmlaq_rot270_m): Delete.
936         (__arm_vcmlaq_rot90_m): Delete.
938 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
940         * config/arm/arm_mve_builtins.def (vcmlaq_rot90_f)
941         (vcmlaq_rot270_f, vcmlaq_rot180_f, vcmlaq_f): Add "_f" suffix.
942         * config/arm/iterators.md (MVE_VCMLAQ_M): New.
943         (mve_insn): Add vcmla.
944         (rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F,
945         VCMLAQ_ROT270_M_F.
946         (mve_rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F,
947         VCMLAQ_ROT270_M_F.
948         * config/arm/mve.md (mve_vcmlaq<mve_rot><mode>): Rename into ...
949         (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this.
950         (mve_vcmlaq_m_f<mode>, mve_vcmlaq_rot180_m_f<mode>)
951         (mve_vcmlaq_rot270_m_f<mode>, mve_vcmlaq_rot90_m_f<mode>): Merge
952         into ...
953         (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
955 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
957         * config/arm/arm-mve-builtins-base.cc (vcmulq, vcmulq_rot90)
958         (vcmulq_rot180, vcmulq_rot270): New.
959         * config/arm/arm-mve-builtins-base.def (vcmulq, vcmulq_rot90)
960         (vcmulq_rot180, vcmulq_rot270): New.
961         * config/arm/arm-mve-builtins-base.h: (vcmulq, vcmulq_rot90)
962         (vcmulq_rot180, vcmulq_rot270): New.
963         * config/arm/arm_mve.h (vcmulq_rot90): Delete.
964         (vcmulq_rot270): Delete.
965         (vcmulq_rot180): Delete.
966         (vcmulq): Delete.
967         (vcmulq_m): Delete.
968         (vcmulq_rot180_m): Delete.
969         (vcmulq_rot270_m): Delete.
970         (vcmulq_rot90_m): Delete.
971         (vcmulq_x): Delete.
972         (vcmulq_rot90_x): Delete.
973         (vcmulq_rot180_x): Delete.
974         (vcmulq_rot270_x): Delete.
975         (vcmulq_rot90_f16): Delete.
976         (vcmulq_rot270_f16): Delete.
977         (vcmulq_rot180_f16): Delete.
978         (vcmulq_f16): Delete.
979         (vcmulq_rot90_f32): Delete.
980         (vcmulq_rot270_f32): Delete.
981         (vcmulq_rot180_f32): Delete.
982         (vcmulq_f32): Delete.
983         (vcmulq_m_f32): Delete.
984         (vcmulq_m_f16): Delete.
985         (vcmulq_rot180_m_f32): Delete.
986         (vcmulq_rot180_m_f16): Delete.
987         (vcmulq_rot270_m_f32): Delete.
988         (vcmulq_rot270_m_f16): Delete.
989         (vcmulq_rot90_m_f32): Delete.
990         (vcmulq_rot90_m_f16): Delete.
991         (vcmulq_x_f16): Delete.
992         (vcmulq_x_f32): Delete.
993         (vcmulq_rot90_x_f16): Delete.
994         (vcmulq_rot90_x_f32): Delete.
995         (vcmulq_rot180_x_f16): Delete.
996         (vcmulq_rot180_x_f32): Delete.
997         (vcmulq_rot270_x_f16): Delete.
998         (vcmulq_rot270_x_f32): Delete.
999         (__arm_vcmulq_rot90_f16): Delete.
1000         (__arm_vcmulq_rot270_f16): Delete.
1001         (__arm_vcmulq_rot180_f16): Delete.
1002         (__arm_vcmulq_f16): Delete.
1003         (__arm_vcmulq_rot90_f32): Delete.
1004         (__arm_vcmulq_rot270_f32): Delete.
1005         (__arm_vcmulq_rot180_f32): Delete.
1006         (__arm_vcmulq_f32): Delete.
1007         (__arm_vcmulq_m_f32): Delete.
1008         (__arm_vcmulq_m_f16): Delete.
1009         (__arm_vcmulq_rot180_m_f32): Delete.
1010         (__arm_vcmulq_rot180_m_f16): Delete.
1011         (__arm_vcmulq_rot270_m_f32): Delete.
1012         (__arm_vcmulq_rot270_m_f16): Delete.
1013         (__arm_vcmulq_rot90_m_f32): Delete.
1014         (__arm_vcmulq_rot90_m_f16): Delete.
1015         (__arm_vcmulq_x_f16): Delete.
1016         (__arm_vcmulq_x_f32): Delete.
1017         (__arm_vcmulq_rot90_x_f16): Delete.
1018         (__arm_vcmulq_rot90_x_f32): Delete.
1019         (__arm_vcmulq_rot180_x_f16): Delete.
1020         (__arm_vcmulq_rot180_x_f32): Delete.
1021         (__arm_vcmulq_rot270_x_f16): Delete.
1022         (__arm_vcmulq_rot270_x_f32): Delete.
1023         (__arm_vcmulq_rot90): Delete.
1024         (__arm_vcmulq_rot270): Delete.
1025         (__arm_vcmulq_rot180): Delete.
1026         (__arm_vcmulq): Delete.
1027         (__arm_vcmulq_m): Delete.
1028         (__arm_vcmulq_rot180_m): Delete.
1029         (__arm_vcmulq_rot270_m): Delete.
1030         (__arm_vcmulq_rot90_m): Delete.
1031         (__arm_vcmulq_x): Delete.
1032         (__arm_vcmulq_rot90_x): Delete.
1033         (__arm_vcmulq_rot180_x): Delete.
1034         (__arm_vcmulq_rot270_x): Delete.
1036 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
1038         * config/arm/arm_mve_builtins.def (vcmulq_rot90_f)
1039         (vcmulq_rot270_f, vcmulq_rot180_f, vcmulq_f): Add "_f" suffix.
1040         * config/arm/iterators.md (MVE_VCADDQ_VCMULQ)
1041         (MVE_VCADDQ_VCMULQ_M): New.
1042         (mve_insn): Add vcmul.
1043         (rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F,
1044         VCMULQ_ROT270_M_F.
1045         (VCMUL): Delete.
1046         (mve_rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F,
1047         VCMULQ_ROT270_M_F.
1048         * config/arm/mve.md (mve_vcmulq<mve_rot><mode>): Merge into
1049         @mve_<mve_insn>q<mve_rot>_f<mode>.
1050         (mve_vcmulq_m_f<mode>, mve_vcmulq_rot180_m_f<mode>)
1051         (mve_vcmulq_rot270_m_f<mode>, mve_vcmulq_rot90_m_f<mode>): Merge
1052         into @mve_<mve_insn>q<mve_rot>_m_f<mode>.
1054 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
1056         * config/arm/arm-mve-builtins-base.cc (vcaddq_rot90)
1057         (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
1058         * config/arm/arm-mve-builtins-base.def (vcaddq_rot90)
1059         (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
1060         * config/arm/arm-mve-builtins-base.h: (vcaddq_rot90)
1061         (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
1062         * config/arm/arm-mve-builtins-functions.h (class
1063         unspec_mve_function_exact_insn_rot): New.
1064         * config/arm/arm_mve.h (vcaddq_rot90): Delete.
1065         (vcaddq_rot270): Delete.
1066         (vhcaddq_rot90): Delete.
1067         (vhcaddq_rot270): Delete.
1068         (vcaddq_rot270_m): Delete.
1069         (vcaddq_rot90_m): Delete.
1070         (vhcaddq_rot270_m): Delete.
1071         (vhcaddq_rot90_m): Delete.
1072         (vcaddq_rot90_x): Delete.
1073         (vcaddq_rot270_x): Delete.
1074         (vhcaddq_rot90_x): Delete.
1075         (vhcaddq_rot270_x): Delete.
1076         (vcaddq_rot90_u8): Delete.
1077         (vcaddq_rot270_u8): Delete.
1078         (vhcaddq_rot90_s8): Delete.
1079         (vhcaddq_rot270_s8): Delete.
1080         (vcaddq_rot90_s8): Delete.
1081         (vcaddq_rot270_s8): Delete.
1082         (vcaddq_rot90_u16): Delete.
1083         (vcaddq_rot270_u16): Delete.
1084         (vhcaddq_rot90_s16): Delete.
1085         (vhcaddq_rot270_s16): Delete.
1086         (vcaddq_rot90_s16): Delete.
1087         (vcaddq_rot270_s16): Delete.
1088         (vcaddq_rot90_u32): Delete.
1089         (vcaddq_rot270_u32): Delete.
1090         (vhcaddq_rot90_s32): Delete.
1091         (vhcaddq_rot270_s32): Delete.
1092         (vcaddq_rot90_s32): Delete.
1093         (vcaddq_rot270_s32): Delete.
1094         (vcaddq_rot90_f16): Delete.
1095         (vcaddq_rot270_f16): Delete.
1096         (vcaddq_rot90_f32): Delete.
1097         (vcaddq_rot270_f32): Delete.
1098         (vcaddq_rot270_m_s8): Delete.
1099         (vcaddq_rot270_m_s32): Delete.
1100         (vcaddq_rot270_m_s16): Delete.
1101         (vcaddq_rot270_m_u8): Delete.
1102         (vcaddq_rot270_m_u32): Delete.
1103         (vcaddq_rot270_m_u16): Delete.
1104         (vcaddq_rot90_m_s8): Delete.
1105         (vcaddq_rot90_m_s32): Delete.
1106         (vcaddq_rot90_m_s16): Delete.
1107         (vcaddq_rot90_m_u8): Delete.
1108         (vcaddq_rot90_m_u32): Delete.
1109         (vcaddq_rot90_m_u16): Delete.
1110         (vhcaddq_rot270_m_s8): Delete.
1111         (vhcaddq_rot270_m_s32): Delete.
1112         (vhcaddq_rot270_m_s16): Delete.
1113         (vhcaddq_rot90_m_s8): Delete.
1114         (vhcaddq_rot90_m_s32): Delete.
1115         (vhcaddq_rot90_m_s16): Delete.
1116         (vcaddq_rot270_m_f32): Delete.
1117         (vcaddq_rot270_m_f16): Delete.
1118         (vcaddq_rot90_m_f32): Delete.
1119         (vcaddq_rot90_m_f16): Delete.
1120         (vcaddq_rot90_x_s8): Delete.
1121         (vcaddq_rot90_x_s16): Delete.
1122         (vcaddq_rot90_x_s32): Delete.
1123         (vcaddq_rot90_x_u8): Delete.
1124         (vcaddq_rot90_x_u16): Delete.
1125         (vcaddq_rot90_x_u32): Delete.
1126         (vcaddq_rot270_x_s8): Delete.
1127         (vcaddq_rot270_x_s16): Delete.
1128         (vcaddq_rot270_x_s32): Delete.
1129         (vcaddq_rot270_x_u8): Delete.
1130         (vcaddq_rot270_x_u16): Delete.
1131         (vcaddq_rot270_x_u32): Delete.
1132         (vhcaddq_rot90_x_s8): Delete.
1133         (vhcaddq_rot90_x_s16): Delete.
1134         (vhcaddq_rot90_x_s32): Delete.
1135         (vhcaddq_rot270_x_s8): Delete.
1136         (vhcaddq_rot270_x_s16): Delete.
1137         (vhcaddq_rot270_x_s32): Delete.
1138         (vcaddq_rot90_x_f16): Delete.
1139         (vcaddq_rot90_x_f32): Delete.
1140         (vcaddq_rot270_x_f16): Delete.
1141         (vcaddq_rot270_x_f32): Delete.
1142         (__arm_vcaddq_rot90_u8): Delete.
1143         (__arm_vcaddq_rot270_u8): Delete.
1144         (__arm_vhcaddq_rot90_s8): Delete.
1145         (__arm_vhcaddq_rot270_s8): Delete.
1146         (__arm_vcaddq_rot90_s8): Delete.
1147         (__arm_vcaddq_rot270_s8): Delete.
1148         (__arm_vcaddq_rot90_u16): Delete.
1149         (__arm_vcaddq_rot270_u16): Delete.
1150         (__arm_vhcaddq_rot90_s16): Delete.
1151         (__arm_vhcaddq_rot270_s16): Delete.
1152         (__arm_vcaddq_rot90_s16): Delete.
1153         (__arm_vcaddq_rot270_s16): Delete.
1154         (__arm_vcaddq_rot90_u32): Delete.
1155         (__arm_vcaddq_rot270_u32): Delete.
1156         (__arm_vhcaddq_rot90_s32): Delete.
1157         (__arm_vhcaddq_rot270_s32): Delete.
1158         (__arm_vcaddq_rot90_s32): Delete.
1159         (__arm_vcaddq_rot270_s32): Delete.
1160         (__arm_vcaddq_rot270_m_s8): Delete.
1161         (__arm_vcaddq_rot270_m_s32): Delete.
1162         (__arm_vcaddq_rot270_m_s16): Delete.
1163         (__arm_vcaddq_rot270_m_u8): Delete.
1164         (__arm_vcaddq_rot270_m_u32): Delete.
1165         (__arm_vcaddq_rot270_m_u16): Delete.
1166         (__arm_vcaddq_rot90_m_s8): Delete.
1167         (__arm_vcaddq_rot90_m_s32): Delete.
1168         (__arm_vcaddq_rot90_m_s16): Delete.
1169         (__arm_vcaddq_rot90_m_u8): Delete.
1170         (__arm_vcaddq_rot90_m_u32): Delete.
1171         (__arm_vcaddq_rot90_m_u16): Delete.
1172         (__arm_vhcaddq_rot270_m_s8): Delete.
1173         (__arm_vhcaddq_rot270_m_s32): Delete.
1174         (__arm_vhcaddq_rot270_m_s16): Delete.
1175         (__arm_vhcaddq_rot90_m_s8): Delete.
1176         (__arm_vhcaddq_rot90_m_s32): Delete.
1177         (__arm_vhcaddq_rot90_m_s16): Delete.
1178         (__arm_vcaddq_rot90_x_s8): Delete.
1179         (__arm_vcaddq_rot90_x_s16): Delete.
1180         (__arm_vcaddq_rot90_x_s32): Delete.
1181         (__arm_vcaddq_rot90_x_u8): Delete.
1182         (__arm_vcaddq_rot90_x_u16): Delete.
1183         (__arm_vcaddq_rot90_x_u32): Delete.
1184         (__arm_vcaddq_rot270_x_s8): Delete.
1185         (__arm_vcaddq_rot270_x_s16): Delete.
1186         (__arm_vcaddq_rot270_x_s32): Delete.
1187         (__arm_vcaddq_rot270_x_u8): Delete.
1188         (__arm_vcaddq_rot270_x_u16): Delete.
1189         (__arm_vcaddq_rot270_x_u32): Delete.
1190         (__arm_vhcaddq_rot90_x_s8): Delete.
1191         (__arm_vhcaddq_rot90_x_s16): Delete.
1192         (__arm_vhcaddq_rot90_x_s32): Delete.
1193         (__arm_vhcaddq_rot270_x_s8): Delete.
1194         (__arm_vhcaddq_rot270_x_s16): Delete.
1195         (__arm_vhcaddq_rot270_x_s32): Delete.
1196         (__arm_vcaddq_rot90_f16): Delete.
1197         (__arm_vcaddq_rot270_f16): Delete.
1198         (__arm_vcaddq_rot90_f32): Delete.
1199         (__arm_vcaddq_rot270_f32): Delete.
1200         (__arm_vcaddq_rot270_m_f32): Delete.
1201         (__arm_vcaddq_rot270_m_f16): Delete.
1202         (__arm_vcaddq_rot90_m_f32): Delete.
1203         (__arm_vcaddq_rot90_m_f16): Delete.
1204         (__arm_vcaddq_rot90_x_f16): Delete.
1205         (__arm_vcaddq_rot90_x_f32): Delete.
1206         (__arm_vcaddq_rot270_x_f16): Delete.
1207         (__arm_vcaddq_rot270_x_f32): Delete.
1208         (__arm_vcaddq_rot90): Delete.
1209         (__arm_vcaddq_rot270): Delete.
1210         (__arm_vhcaddq_rot90): Delete.
1211         (__arm_vhcaddq_rot270): Delete.
1212         (__arm_vcaddq_rot270_m): Delete.
1213         (__arm_vcaddq_rot90_m): Delete.
1214         (__arm_vhcaddq_rot270_m): Delete.
1215         (__arm_vhcaddq_rot90_m): Delete.
1216         (__arm_vcaddq_rot90_x): Delete.
1217         (__arm_vcaddq_rot270_x): Delete.
1218         (__arm_vhcaddq_rot90_x): Delete.
1219         (__arm_vhcaddq_rot270_x): Delete.
1221 2023-07-14  Christophe Lyon  <christophe.lyon@linaro.org>
1223         * config/arm/arm_mve_builtins.def (vcaddq_rot90_, vcaddq_rot270_)
1224         (vcaddq_rot90_f, vcaddq_rot90_f): Add "_" or "_f" suffix.
1225         * config/arm/iterators.md (mve_insn): Add vcadd, vhcadd.
1226         (isu): Add UNSPEC_VCADD90, UNSPEC_VCADD270, VCADDQ_ROT270_M_U,
1227         VCADDQ_ROT270_M_S, VCADDQ_ROT90_M_U, VCADDQ_ROT90_M_S,
1228         VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S, VHCADDQ_ROT90_S,
1229         VHCADDQ_ROT270_S.
1230         (rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S, VCADDQ_ROT90_M_U,
1231         VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S, VCADDQ_ROT270_M_U,
1232         VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, VHCADDQ_ROT90_M_S,
1233         VHCADDQ_ROT270_M_S.
1234         (mve_rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S,
1235         VCADDQ_ROT90_M_U, VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S,
1236         VCADDQ_ROT270_M_U, VHCADDQ_ROT90_S, VHCADDQ_ROT270_S,
1237         VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S.
1238         (supf): Add VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S,
1239         VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, UNSPEC_VCADD90,
1240         UNSPEC_VCADD270.
1241         (VCADDQ_ROT270_M): Delete.
1242         (VCADDQ_M_F VxCADDQ VxCADDQ_M): New.
1243         (VCADDQ_ROT90_M): Delete.
1244         * config/arm/mve.md (mve_vcaddq<mve_rot><mode>)
1245         (mve_vhcaddq_rot270_s<mode>, mve_vhcaddq_rot90_s<mode>): Merge
1246         into ...
1247         (@mve_<mve_insn>q<mve_rot>_<supf><mode>): ... this.
1248         (mve_vcaddq<mve_rot><mode>): Rename into ...
1249         (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this
1250         (mve_vcaddq_rot270_m_<supf><mode>)
1251         (mve_vcaddq_rot90_m_<supf><mode>, mve_vhcaddq_rot270_m_s<mode>)
1252         (mve_vhcaddq_rot90_m_s<mode>): Merge into ...
1253         (@mve_<mve_insn>q<mve_rot>_m_<supf><mode>): ... this.
1254         (mve_vcaddq_rot270_m_f<mode>, mve_vcaddq_rot90_m_f<mode>): Merge
1255         into ...
1256         (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
1258 2023-07-14  Roger Sayle  <roger@nextmovesoftware.com>
1260         PR target/110588
1261         * config/i386/i386.md (*bt<mode>_setcqi): Prefer string form
1262         preparation statement over braces for a single statement.
1263         (*bt<mode>_setncqi): Likewise.
1264         (*bt<mode>_setncqi_2): New define_insn_and_split.
1266 2023-07-14  Roger Sayle  <roger@nextmovesoftware.com>
1268         * config/i386/i386-expand.cc (ix86_expand_move): Generalize special
1269         case inserting of 64-bit values into a TImode register, to handle
1270         both DImode and DFmode using either *insvti_lowpart_1
1271         or *isnvti_highpart_1.
1273 2023-07-14  Uros Bizjak  <ubizjak@gmail.com>
1275         PR target/110206
1276         * fwprop.cc (contains_paradoxical_subreg_p): Move to ...
1277         * rtlanal.cc (contains_paradoxical_subreg_p): ... here.
1278         * rtlanal.h (contains_paradoxical_subreg_p): Add prototype.
1279         * cprop.cc (try_replace_reg): Do not set REG_EQUAL note
1280         when the original source contains a paradoxical subreg.
1282 2023-07-14  Jan Hubicka  <jh@suse.cz>
1284         * passes.cc (execute_function_todo): Remove
1285         TODO_rebuild_frequencies
1286         * passes.def: Add rebuild_frequencies pass.
1287         * predict.cc (estimate_bb_frequencies): Drop
1288         force parameter.
1289         (tree_estimate_probability): Update call of
1290         estimate_bb_frequencies.
1291         (rebuild_frequencies): Turn into a pass; verify CFG profile consistency
1292         first and do not rebuild if not necessary.
1293         (class pass_rebuild_frequencies): New.
1294         (make_pass_rebuild_frequencies): New.
1295         * profile-count.h: Add profile_count::very_large_p.
1296         * tree-inline.cc (optimize_inline_calls): Do not return
1297         TODO_rebuild_frequencies
1298         * tree-pass.h (TODO_rebuild_frequencies): Remove.
1299         (make_pass_rebuild_frequencies): Declare.
1301 2023-07-14  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1303         * config/riscv/autovec.md (cond_len_fma<mode>): New pattern.
1304         * config/riscv/riscv-protos.h (enum insn_type): New enum.
1305         (expand_cond_len_ternop): New function.
1306         * config/riscv/riscv-v.cc (emit_nonvlmax_fp_ternary_tu_insn): Ditto.
1307         (expand_cond_len_ternop): Ditto.
1309 2023-07-14  Jose E. Marchesi  <jose.marchesi@oracle.com>
1311         PR target/110657
1312         * config/bpf/bpf.md: Enable instruction scheduling.
1314 2023-07-14  Tamar Christina  <tamar.christina@arm.com>
1316         PR tree-optimization/109154
1317         * tree-if-conv.cc (INCLUDE_ALGORITHM): Include.
1318         (struct bb_predicate): Add no_predicate_stmts.
1319         (set_bb_predicate): Increase predicate count.
1320         (set_bb_predicate_gimplified_stmts): Conditionally initialize
1321         no_predicate_stmts.
1322         (get_bb_num_predicate_stmts): New.
1323         (init_bb_predicate): Initialzie no_predicate_stmts.
1324         (release_bb_predicate): Cleanup no_predicate_stmts.
1325         (insert_gimplified_predicates): Preserve no_predicate_stmts.
1327 2023-07-14  Tamar Christina  <tamar.christina@arm.com>
1329         PR tree-optimization/109154
1330         * tree-if-conv.cc (gen_simplified_condition,
1331         gen_phi_nest_statement): New.
1332         (gen_phi_arg_condition, predicate_scalar_phi): Use it.
1334 2023-07-14  Richard Biener  <rguenther@suse.de>
1336         * gimple.h (gimple_phi_arg): New const overload.
1337         (gimple_phi_arg_def): Make gimple arg const.
1338         (gimple_phi_arg_def_from_edge): New inline function.
1339         * tree-phinodes.h (gimple_phi_arg_imm_use_ptr_from_edge):
1340         Likewise.
1341         * tree-ssa-operands.h (PHI_ARG_DEF_FROM_EDGE): Direct to
1342         new inline function.
1343         (PHI_ARG_DEF_PTR_FROM_EDGE): Likewise.
1345 2023-07-14  Monk Chiang  <monk.chiang@sifive.com>
1347         * common/config/riscv/riscv-common.cc:
1348         (riscv_implied_info): Add zihintntl item.
1349         (riscv_ext_version_table): Ditto.
1350         (riscv_ext_flag_table): Ditto.
1351         * config/riscv/riscv-opts.h (MASK_ZIHINTNTL): New macro.
1352         (TARGET_ZIHINTNTL): Ditto.
1354 2023-07-14  Die Li  <lidie@eswincomputing.com>
1356         * config/riscv/riscv.md: Remove redundant portion in and<mode>3.
1358 2023-07-14  Oleg Endo  <olegendo@gcc.gnu.org>
1360         PR target/101469
1361         * config/sh/sh.md (peephole2): Handle case where eliminated reg is also
1362         used by the address of the following memory operand.
1364 2023-07-13  Mikael Pettersson  <mikpelinux@gmail.com>
1366         PR target/107841
1367         * config/pdp11/pdp11.cc (pdp11_expand_epilogue): Also
1368         deallocate alloca-only frame.
1370 2023-07-13  Iain Sandoe  <iain@sandoe.co.uk>
1372         PR target/110624
1373         * config/darwin.h (DARWIN_PLATFORM_ID): New.
1374         (LINK_COMMAND_A): Use DARWIN_PLATFORM_ID to pass OS, OS version
1375         and SDK data to the static linker.
1377 2023-07-13  Carl Love  <cel@us.ibm.com>
1379         * config/rs6000/rs6000-builtins.def (__builtin_set_fpscr_rn): Update
1380         built-in definition return type.
1381         * config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Add check,
1382         define __SET_FPSCR_RN_RETURNS_FPSCR__ macro.
1383         * config/rs6000/rs6000.md (rs6000_set_fpscr_rn): Add return
1384         argument to return FPSCR fields.
1385         * doc/extend.texi (__builtin_set_fpscr_rn): Update description for
1386         the return value.  Add description for
1387         __SET_FPSCR_RN_RETURNS_FPSCR__ macro.
1389 2023-07-13  Uros Bizjak  <ubizjak@gmail.com>
1391         PR target/106966
1392         * config/alpha/alpha.cc (alpha_emit_set_long_const):
1393         Always use DImode when constructing long const.
1395 2023-07-13  Uros Bizjak  <ubizjak@gmail.com>
1397         * haifa-sched.cc: Change TRUE/FALSE to true/false.
1398         * ira.cc: Ditto.
1399         * lra-assigns.cc: Ditto.
1400         * lra-constraints.cc: Ditto.
1401         * sel-sched.cc: Ditto.
1403 2023-07-13  Andrew Pinski  <apinski@marvell.com>
1405         PR tree-optimization/110293
1406         PR tree-optimization/110539
1407         * match.pd: Expand the `x != (typeof x)(x == 0)`
1408         pattern to handle where the inner and outer comparsions
1409         are either `!=` or `==` and handle other constants
1410         than 0.
1412 2023-07-13  Vladimir N. Makarov  <vmakarov@redhat.com>
1414         PR middle-end/109520
1415         * lra-int.h (lra_insn_recog_data): Add member asm_reloads_num.
1416         (lra_asm_insn_error): New prototype.
1417         * lra.cc: Include rtl_error.h.
1418         (lra_set_insn_recog_data): Initialize asm_reloads_num.
1419         (lra_asm_insn_error): New func whose code is taken from ...
1420         * lra-assigns.cc (lra_split_hard_reg_for): ... here.  Use lra_asm_insn_error.
1421         * lra-constraints.cc (curr_insn_transform): Check reloads nummber for asm.
1423 2023-07-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
1425         * genmatch.cc (commutative_op): Add COND_LEN_*
1426         * internal-fn.cc (first_commutative_argument): Ditto.
1427         (CASE): Ditto.
1428         (get_unconditional_internal_fn): Ditto.
1429         (can_interpret_as_conditional_op_p): Ditto.
1430         (internal_fn_len_index): Ditto.
1431         * internal-fn.h (can_interpret_as_conditional_op_p): Ditt.
1432         * tree-ssa-math-opts.cc (convert_mult_to_fma_1): Ditto.
1433         (convert_mult_to_fma): Ditto.
1434         (math_opts_dom_walker::after_dom_children): Ditto.
1436 2023-07-13  Pan Li  <pan2.li@intel.com>
1438         * config/riscv/riscv.cc (vxrm_rtx): New static var.
1439         (frm_rtx): Ditto.
1440         (global_state_unknown_p): Removed.
1441         (riscv_entity_mode_after): Removed.
1442         (asm_insn_p): New function.
1443         (vxrm_unknown_p): New function for fixed-point.
1444         (riscv_vxrm_mode_after): Ditto.
1445         (frm_unknown_dynamic_p): New function for floating-point.
1446         (riscv_frm_mode_after): Ditto.
1447         (riscv_mode_after): Leverage new functions.
1449 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
1451         * tree-vect-stmts.cc (vect_model_load_cost): Remove.
1452         (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS without
1453         calling vect_model_load_cost.
1455 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
1457         * tree-vect-stmts.cc (vect_model_load_cost): Assert this function only
1458         handle memory_access_type VMAT_CONTIGUOUS, remove some
1459         VMAT_CONTIGUOUS_PERMUTE related handlings.
1460         (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS_PERMUTE
1461         without calling vect_model_load_cost.
1463 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
1465         * tree-vect-stmts.cc (vect_model_load_cost): Assert it won't get
1466         VMAT_CONTIGUOUS_REVERSE any more.
1467         (vectorizable_load): Adjust the costing handling on
1468         VMAT_CONTIGUOUS_REVERSE without calling vect_model_load_cost.
1470 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
1472         * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on
1473         VMAT_LOAD_STORE_LANES without calling vect_model_load_cost.
1474         (vectorizable_load): Remove VMAT_LOAD_STORE_LANES related handling and
1475         assert it will never get VMAT_LOAD_STORE_LANES.
1477 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
1479         * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on
1480         VMAT_GATHER_SCATTER without calling vect_model_load_cost.
1481         (vect_model_load_cost): Adjut the assertion on VMAT_GATHER_SCATTER,
1482         remove VMAT_GATHER_SCATTER related handlings and the related parameter
1483         gs_info.
1485 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
1487         * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling
1488         on VMAT_ELEMENTWISE and VMAT_STRIDED_SLP without calling
1489         vect_model_load_cost.
1490         (vect_model_load_cost): Assert it won't get VMAT_ELEMENTWISE and
1491         VMAT_STRIDED_SLP any more, and remove their related handlings.
1493 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
1495         * tree-vect-stmts.cc (hoist_defs_of_uses): Add one argument HOIST_P.
1496         (vectorizable_load): Adjust the handling on VMAT_INVARIANT to respect
1497         hoisting decision and without calling vect_model_load_cost.
1498         (vect_model_load_cost): Assert it won't get VMAT_INVARIANT any more
1499         and remove VMAT_INVARIANT related handlings.
1501 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
1503         * tree-vect-stmts.cc (vect_build_gather_load_calls): Add the handlings
1504         on costing with one extra argument cost_vec.
1505         (vectorizable_load): Adjust the call to vect_build_gather_load_calls.
1506         (vect_model_load_cost): Assert it won't get VMAT_GATHER_SCATTER with
1507         gs_info.decl set any more.
1509 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
1511         * tree-vect-stmts.cc (vectorizable_load): Move and duplicate the call
1512         to vect_model_load_cost down to some different transform paths
1513         according to the handlings of different vect_memory_access_types.
1515 2023-07-13  Kewen Lin  <linkw@linux.ibm.com>
1517         * tree.h (wi::from_mpz): Hide from GENERATOR_FILE.
1519 2023-07-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
1521         * config/riscv/autovec.md
1522         (len_mask_gather_load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New pattern.
1523         (len_mask_gather_load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
1524         (len_mask_gather_load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
1525         (len_mask_gather_load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
1526         (len_mask_gather_load<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
1527         (len_mask_gather_load<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
1528         (len_mask_gather_load<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
1529         (len_mask_gather_load<mode><mode>): Ditto.
1530         (len_mask_scatter_store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
1531         (len_mask_scatter_store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
1532         (len_mask_scatter_store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
1533         (len_mask_scatter_store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
1534         (len_mask_scatter_store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
1535         (len_mask_scatter_store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
1536         (len_mask_scatter_store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
1537         (len_mask_scatter_store<mode><mode>): Ditto.
1538         * config/riscv/predicates.md (const_1_operand): New predicate.
1539         (vector_gs_scale_operand_16): Ditto.
1540         (vector_gs_scale_operand_32): Ditto.
1541         (vector_gs_scale_operand_64): Ditto.
1542         (vector_gs_extension_operand): Ditto.
1543         (vector_gs_scale_operand_16_rv32): Ditto.
1544         (vector_gs_scale_operand_32_rv32): Ditto.
1545         * config/riscv/riscv-protos.h (enum insn_type): Add gather/scatter.
1546         (expand_gather_scatter): New function.
1547         * config/riscv/riscv-v.cc (gen_const_vector_dup): Add gather/scatter.
1548         (emit_vlmax_masked_store_insn): New function.
1549         (emit_nonvlmax_masked_store_insn): Ditto.
1550         (modulo_sel_indices): Ditto.
1551         (expand_vec_perm): Fix SLP for gather/scatter.
1552         (prepare_gather_scatter): New function.
1553         (expand_gather_scatter): Ditto.
1554         * config/riscv/riscv.cc (riscv_legitimize_move): Fix bug of
1555         (subreg:SI (DI CONST_POLY_INT)).
1556         * config/riscv/vector-iterators.md: Add gather/scatter.
1557         * config/riscv/vector.md (vec_duplicate<mode>): Use "@" instead.
1558         (@vec_duplicate<mode>): Ditto.
1559         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>):
1560         Fix name.
1561         (@pred_indexed_<order>store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
1563 2023-07-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
1565         * config/riscv/autovec.md (cond_len_<optab><mode>): New pattern.
1566         * config/riscv/riscv-protos.h (enum insn_type): New enum.
1567         (expand_cond_len_binop): New function.
1568         * config/riscv/riscv-v.cc (emit_nonvlmax_tu_insn): Ditto.
1569         (emit_nonvlmax_fp_tu_insn): Ditto.
1570         (need_fp_rounding_p): Ditto.
1571         (expand_cond_len_binop): Ditto.
1572         * config/riscv/riscv.cc (riscv_preferred_else_value): Ditto.
1573         (TARGET_PREFERRED_ELSE_VALUE): New target hook.
1575 2023-07-12  Jan Hubicka  <jh@suse.cz>
1577         * tree-cfg.cc (gimple_duplicate_sese_region): Rename to ...
1578         (gimple_duplicate_seme_region): ... this; break out profile updating
1579         code to ...
1580         * tree-ssa-loop-ch.cc (update_profile_after_ch): ... here.
1581         (ch_base::copy_headers): Update.
1582         * tree-cfg.h (gimple_duplicate_sese_region): Rename to ...
1583         (gimple_duplicate_seme_region): ... this.
1585 2023-07-12  Aldy Hernandez  <aldyh@redhat.com>
1587         PR tree-optimization/107043
1588         * range-op.cc (operator_bitwise_and::op1_range): Update bitmask.
1590 2023-07-12  Aldy Hernandez  <aldyh@redhat.com>
1592         PR tree-optimization/107053
1593         * gimple-range-op.cc (cfn_popcount): Use known set bits.
1595 2023-07-12  Uros Bizjak  <ubizjak@gmail.com>
1597         * ira.cc (equiv_init_varies_p): Change return type from int to bool
1598         and adjust function body accordingly.
1599         (equiv_init_movable_p): Ditto.
1600         (memref_used_between_p): Ditto.
1601         * lra-constraints.cc (valid_address_p): Ditto.
1603 2023-07-12  Aldy Hernandez  <aldyh@redhat.com>
1605         * range-op.cc (irange_to_masked_value): Remove.
1606         (update_known_bitmask): Update irange value/mask pair instead of
1607         only updating nonzero bits.
1609 2023-07-12  Jan Hubicka  <jh@suse.cz>
1611         * tree-cfg.cc (gimple_duplicate_sese_region): Add ORIG_ELIMINATED_EDGES
1612         parameter and rewrite profile updating code to handle edges elimination.
1613         * tree-cfg.h (gimple_duplicate_sese_region): Update prototpe.
1614         * tree-ssa-loop-ch.cc (loop_invariant_op_p): New function.
1615         (loop_iv_derived_p): New function.
1616         (should_duplicate_loop_header_p): Track invariant exit edges; fix handling
1617         of PHIs and propagation of IV derived variables.
1618         (ch_base::copy_headers): Pass around the invariant edges hash set.
1620 2023-07-12  Uros Bizjak  <ubizjak@gmail.com>
1622         * ifcvt.cc (cond_exec_changed_p): Change variable to bool.
1623         (last_active_insn): Change "skip_use_p" function argument to bool.
1624         (noce_operand_ok): Change return type from int to bool.
1625         (find_cond_trap): Ditto.
1626         (block_jumps_and_fallthru_p): Change "fallthru_p" and
1627         "jump_p" variables to bool.
1628         (noce_find_if_block): Change return type from int to bool.
1629         (cond_exec_find_if_block): Ditto.
1630         (find_if_case_1): Ditto.
1631         (find_if_case_2): Ditto.
1632         (dead_or_predicable): Ditto. Change "reversep" function arg to bool.
1633         (block_jumps_and_fallthru): Rename from block_jumps_and_fallthru_p.
1634         (cond_exec_process_insns): Change return type from int to bool.
1635         Change "mod_ok" function arg to bool.
1636         (cond_exec_process_if_block): Change return type from int to bool.
1637         Change "do_multiple_p" function arg to bool.  Change "then_mod_ok"
1638         variable to bool.
1639         (noce_emit_store_flag): Change return type from int to bool.
1640         Change "reversep" function arg to bool.  Change "cond_complex"
1641         variable to bool.
1642         (noce_try_move): Change return type from int to bool.
1643         (noce_try_ifelse_collapse): Ditto.
1644         (noce_try_store_flag): Ditto. Change "reversep" variable to bool.
1645         (noce_try_addcc): Change return type from int to bool.  Change
1646         "subtract" variable to bool.
1647         (noce_try_store_flag_constants): Change return type from int to bool.
1648         (noce_try_store_flag_mask): Ditto.  Change "reversep" variable to bool.
1649         (noce_try_cmove): Change return type from int to bool.
1650         (noce_try_cmove_arith): Ditto. Change "is_mem" variable to bool.
1651         (noce_try_minmax): Change return type from int to bool.  Change
1652         "unsignedp" variable to bool.
1653         (noce_try_abs): Change return type from int to bool.  Change
1654         "negate" variable to bool.
1655         (noce_try_sign_mask): Change return type from int to bool.
1656         (noce_try_move): Ditto.
1657         (noce_try_store_flag_constants): Ditto.
1658         (noce_try_cmove): Ditto.
1659         (noce_try_cmove_arith): Ditto.
1660         (noce_try_minmax): Ditto.  Change "unsignedp" variable to bool.
1661         (noce_try_bitop): Change return type from int to bool.
1662         (noce_operand_ok): Ditto.
1663         (noce_convert_multiple_sets): Ditto.
1664         (noce_convert_multiple_sets_1): Ditto.
1665         (noce_process_if_block): Ditto.
1666         (check_cond_move_block): Ditto.
1667         (cond_move_process_if_block): Ditto. Change "success_p"
1668         variable to bool.
1669         (rest_of_handle_if_conversion): Change return type to void.
1671 2023-07-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
1673         * internal-fn.cc (FOR_EACH_CODE_MAPPING): Adapt for COND_LEN_* support.
1674         (CASE): Ditto.
1675         (get_conditional_len_internal_fn): New function.
1676         * internal-fn.h (get_conditional_len_internal_fn): Ditto.
1677         * tree-vect-stmts.cc (vectorizable_operation): Adapt for COND_LEN_*
1678         support.
1680 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
1682         PR target/91681
1683         * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): Typo.
1685 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
1687         PR target/91681
1688         * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): New
1689         define_insn_and_split derived from *add<dwi>3_doubleword_concat
1690         and *add<dwi>3_doubleword_zext.
1692 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
1694         PR target/110598
1695         * config/i386/i386.md (peephole2): Check !reg_mentioned_p when
1696         optimizing rega = 0; rega op= regb for op in [XOR,IOR,PLUS].
1697         (peephole2): Simplify rega = 0; rega op= rega cases.
1699 2023-07-12  Roger Sayle  <roger@nextmovesoftware.com>
1701         * config/i386/i386-expand.cc (ix86_expand_int_compare): If
1702         testing a TImode SUBREG of a 128-bit vector register against
1703         zero, use a PTEST instruction instead of first moving it to
1704         a pair of scalar registers.
1706 2023-07-12  Robin Dapp  <rdapp@ventanamicro.com>
1708         * genopinit.cc (main): Adjust maximal number of optabs and
1709         machine modes.
1710         * gensupport.cc (find_optab): Shift optab by 20 and mode by
1711         10 bits.
1712         * optabs-query.h (optab_handler): Ditto.
1713         (convert_optab_handler): Ditto.
1715 2023-07-12  Richard Biener  <rguenther@suse.de>
1717         PR tree-optimization/110630
1718         * tree-vect-slp.cc (vect_add_slp_permutation): New
1719         offset parameter, honor that for the extract code generation.
1720         (vectorizable_slp_permutation_1): Handle offsetted identities.
1722 2023-07-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
1724         * config/riscv/autovec.md (smul<mode>3_highpart): New pattern.
1725         (umul<mode>3_highpart): Ditto.
1727 2023-07-12  Jan Beulich  <jbeulich@suse.com>
1729         * config/i386/i386.md (extendbfsf2_1): Add new AVX512F
1730         alternative. Adjust original last alternative's "prefix"
1731         attribute to maybe_evex.
1733 2023-07-12  Jan Beulich  <jbeulich@suse.com>
1735         * config/i386/sse.md (vec_dupv4sf): Make first alternative use
1736         vbroadcastss for AVX2. New AVX512F alternative.
1737         (*vec_dupv4si): New AVX2 and AVX512F alternatives using
1738         vpbroadcastd. Replace sselog1 by sseshuf1 in "type" attribute.
1740 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
1742         * config/riscv/peephole.md: Remove XThead* peephole passes.
1743         * config/riscv/thead.md: Include thead-peephole.md.
1744         * config/riscv/thead-peephole.md: New file.
1746 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
1748         * config/riscv/riscv-protos.h (riscv_regno_ok_for_index_p):
1749         New prototype.
1750         (riscv_index_reg_class): Likewise.
1751         * config/riscv/riscv.cc (riscv_regno_ok_for_index_p): New function.
1752         (riscv_index_reg_class): New function.
1753         * config/riscv/riscv.h (INDEX_REG_CLASS): Call new function
1754         riscv_index_reg_class().
1755         (REGNO_OK_FOR_INDEX_P): Call new function
1756         riscv_regno_ok_for_index_p().
1758 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
1760         * config/riscv/riscv-protos.h (enum riscv_address_type):
1761         New location of type definition.
1762         (struct riscv_address_info): Likewise.
1763         * config/riscv/riscv.cc (enum riscv_address_type):
1764         Old location of type definition.
1765         (struct riscv_address_info): Likewise.
1767 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
1769         * config/riscv/riscv.h (Xmode): New macro.
1771 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
1773         * config/riscv/riscv.cc (riscv_print_operand_address): Use
1774         output_addr_const rather than riscv_print_operand.
1776 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
1778         * config/riscv/thead.md: Adjust constraints of th_addsl.
1780 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
1782         * config/riscv/thead.cc (th_mempair_operands_p):
1783         Fix documentation of th_mempair_order_operands().
1785 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
1787         * config/riscv/thead.cc (th_mempair_save_regs):
1788         Emit REG_FRAME_RELATED_EXPR notes in prologue.
1790 2023-07-12  Christoph Müllner  <christoph.muellner@vrull.eu>
1792         * config/riscv/riscv.md: No base-ISA extension splitter for XThead*.
1793         * config/riscv/thead.md (*extend<SHORT:mode><SUPERQI:mode>2_th_ext):
1794         New XThead extension INSN.
1795         (*zero_extendsidi2_th_extu): New XThead extension INSN.
1796         (*zero_extendhi<GPR:mode>2_th_extu): New XThead extension INSN.
1798 2023-07-12  liuhongt  <hongtao.liu@intel.com>
1800         PR target/110438
1801         PR target/110202
1802         * config/i386/predicates.md
1803         (int_float_vector_all_ones_operand): New predicate.
1804         * config/i386/sse.md (*vmov<mode>_constm1_pternlog_false_dep): New
1805         define_insn.
1806         (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
1807         Ditto.
1808         (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
1809         Ditto.
1810         (*<avx512>_cvtmask2<ssemodesuffix><mode>): Adjust to
1811         define_insn_and_split to avoid false dependence.
1812         (*<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto.
1813         (<mask_codefor>one_cmpl<mode>2<mask_name>): Adjust constraint
1814         of operands 1 to '0' to avoid false dependence.
1815         (*andnot<mode>3): Ditto.
1816         (iornot<mode>3): Ditto.
1817         (*<nlogic><mode>3): Ditto.
1819 2023-07-12  Mo, Zewei  <zewei.mo@intel.com>
1821         * common/config/i386/cpuinfo.h
1822         (get_intel_cpu): Handle Granite Rapids D.
1823         * common/config/i386/i386-common.cc:
1824         (processor_alias_table): Add graniterapids-d.
1825         * common/config/i386/i386-cpuinfo.h
1826         (enum processor_subtypes): Add INTEL_COREI7_GRANITERAPIDS_D.
1827         * config.gcc: Add -march=graniterapids-d.
1828         * config/i386/driver-i386.cc (host_detect_local_cpu):
1829         Handle graniterapids-d.
1830         * config/i386/i386.h: (PTA_GRANITERAPIDS_D): New.
1831         * doc/extend.texi: Add graniterapids-d.
1832         * doc/invoke.texi: Ditto.
1834 2023-07-12  Haochen Jiang  <haochen.jiang@intel.com>
1836         * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
1837         Add OPTION_MASK_ISA_AVX512VL.
1838         * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
1839         Ditto.
1841 2023-07-11  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
1843         * config/riscv/riscv-protos.h (enum insn_type): Add vcompress optimization.
1844         * config/riscv/riscv-v.cc (emit_vlmax_compress_insn): Ditto.
1845         (shuffle_compress_patterns): Ditto.
1846         (expand_vec_perm_const_1): Ditto.
1848 2023-07-11  Uros Bizjak  <ubizjak@gmail.com>
1850         * cfghooks.cc (verify_flow_info): Change "err" variable to bool.
1851         * cfghooks.h (struct cfg_hooks): Change return type of
1852         verify_flow_info from integer to bool.
1853         * cfgrtl.cc (can_delete_note_p): Change return type from int to bool.
1854         (can_delete_label_p): Ditto.
1855         (rtl_verify_flow_info): Change return type from int to bool
1856         and adjust function body accordingly.  Change "err" variable to bool.
1857         (rtl_verify_flow_info_1): Ditto.
1858         (free_bb_for_insn): Change return type to void.
1859         (rtl_merge_blocks): Change "b_empty" variable to bool.
1860         (try_redirect_by_replacing_jump): Change "fallthru" variable to bool.
1861         (verify_hot_cold_block_grouping): Change return type from int to bool.
1862         Change "err" variable to bool.
1863         (rtl_verify_edges): Ditto.
1864         (rtl_verify_bb_insns): Ditto.
1865         (rtl_verify_bb_pointers): Ditto.
1866         (rtl_verify_bb_insn_chain): Ditto.
1867         (rtl_verify_fallthru): Ditto.
1868         (rtl_verify_bb_layout): Ditto.
1869         (purge_all_dead_edges): Change "purged" variable to bool.
1870         * cfgrtl.h (free_bb_for_insn): Change return type from int to void.
1871         * postreload-gcse.cc (expr_hasher::equal): Change "equiv_p" to bool.
1872         (load_killed_in_block_p): Change return type from int to bool
1873         and adjust function body accordingly.
1874         (oprs_unchanged_p): Return true/false.
1875         (rest_of_handle_gcse2): Change return type to void.
1876         * tree-cfg.cc (gimple_verify_flow_info): Change return type from
1877         int to bool.  Change "err" variable to bool.
1879 2023-07-11  Gaius Mulley  <gaiusmod2@gmail.com>
1881         * doc/gm2.texi (-Wuninit-variable-checking=) New item.
1883 2023-07-11  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
1885         * doc/md.texi: Add COND_LEN_* operations for loop control with length.
1886         * internal-fn.cc (cond_len_unary_direct): Ditto.
1887         (cond_len_binary_direct): Ditto.
1888         (cond_len_ternary_direct): Ditto.
1889         (expand_cond_len_unary_optab_fn): Ditto.
1890         (expand_cond_len_binary_optab_fn): Ditto.
1891         (expand_cond_len_ternary_optab_fn): Ditto.
1892         (direct_cond_len_unary_optab_supported_p): Ditto.
1893         (direct_cond_len_binary_optab_supported_p): Ditto.
1894         (direct_cond_len_ternary_optab_supported_p): Ditto.
1895         * internal-fn.def (COND_LEN_ADD): Ditto.
1896         (COND_LEN_SUB): Ditto.
1897         (COND_LEN_MUL): Ditto.
1898         (COND_LEN_DIV): Ditto.
1899         (COND_LEN_MOD): Ditto.
1900         (COND_LEN_RDIV): Ditto.
1901         (COND_LEN_MIN): Ditto.
1902         (COND_LEN_MAX): Ditto.
1903         (COND_LEN_FMIN): Ditto.
1904         (COND_LEN_FMAX): Ditto.
1905         (COND_LEN_AND): Ditto.
1906         (COND_LEN_IOR): Ditto.
1907         (COND_LEN_XOR): Ditto.
1908         (COND_LEN_SHL): Ditto.
1909         (COND_LEN_SHR): Ditto.
1910         (COND_LEN_FMA): Ditto.
1911         (COND_LEN_FMS): Ditto.
1912         (COND_LEN_FNMA): Ditto.
1913         (COND_LEN_FNMS): Ditto.
1914         (COND_LEN_NEG): Ditto.
1915         * optabs.def (OPTAB_D): Ditto.
1917 2023-07-11  Richard Biener  <rguenther@suse.de>
1919         PR tree-optimization/110614
1920         * tree-vect-data-refs.cc (vect_supportable_dr_alignment):
1921         SLP splats are not suitable for re-align ops.
1923 2023-07-10  Peter Bergner  <bergner@linux.ibm.com>
1925         * config/rs6000/predicates.md (quad_memory_operand): Remove redundant
1926         MEM_P usage.
1927         (vsx_quad_dform_memory_operand): Likewise.
1929 2023-07-10  Uros Bizjak  <ubizjak@gmail.com>
1931         * reorg.cc (stop_search_p): Change return type from int to bool
1932         and adjust function body accordingly.
1933         (resource_conflicts_p): Ditto.
1934         (insn_references_resource_p): Change return type from int to bool.
1935         (insn_sets_resource_p): Ditto.
1936         (redirect_with_delay_slots_safe_p): Ditto.
1937         (condition_dominates_p): Change return type from int to bool
1938         and adjust function body accordingly.
1939         (redirect_with_delay_list_safe_p): Ditto.
1940         (check_annul_list_true_false): Ditto.  Change "annul_true_p"
1941         function argument to bool.
1942         (steal_delay_list_from_target): Change "pannul_p" function
1943         argument to bool pointer.  Change "must_annul" and "used_annul"
1944         variables from int to bool.
1945         (steal_delay_list_from_fallthrough): Ditto.
1946         (own_thread_p): Change return type from int to bool and adjust
1947         function body accordingly.  Change "allow_fallthrough" function
1948         argument to bool.
1949         (reorg_redirect_jump): Change return type from int to bool.
1950         (fill_simple_delay_slots): Change "non_jumps_p" function
1951         argument from int to bool.  Change "maybe_never" varible to bool.
1952         (fill_slots_from_thread): Change "likely", "thread_if_true" and
1953         "own_thread" function arguments to bool.  Change "lose" and
1954         "must_annul" variables to bool.
1955         (delete_from_delay_slot): Change "had_barrier" variable to bool.
1956         (try_merge_delay_insns): Change "annul_p" variable to bool.
1957         (fill_eager_delay_slots): Change "own_target" and "own_fallthrouhg"
1958         variables to bool.
1959         (rest_of_handle_delay_slots): Change return type from int to void
1960         and adjust function body accordingly.
1962 2023-07-10  Kito Cheng  <kito.cheng@sifive.com>
1964         * doc/extend.texi (RISC-V Operand Modifiers): New.
1966 2023-07-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
1968         * config/riscv/riscv-vsetvl.cc (add_label_notes): Remove it.
1969         (insert_insn_end_basic_block): Ditto.
1970         (pass_vsetvl::commit_vsetvls): Adapt for new helper function.
1971         * gcse.cc (insert_insn_end_basic_block):  Export as global function.
1972         * gcse.h (insert_insn_end_basic_block): Ditto.
1974 2023-07-10  Christophe Lyon   <christophe.lyon@linaro.org>
1976         PR target/110268
1977         * config/arm/arm-builtins.cc (arm_init_mve_builtins): Handle LTO.
1978         (arm_builtin_decl): Hahndle MVE builtins.
1979         * config/arm/arm-mve-builtins.cc (builtin_decl): New function.
1980         (add_unique_function): Fix handling of
1981         __ARM_MVE_PRESERVE_USER_NAMESPACE.
1982         (add_overloaded_function): Likewise.
1983         * config/arm/arm-protos.h (builtin_decl): New declaration.
1985 2023-07-10  Christophe Lyon  <christophe.lyon@linaro.org>
1987         * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Document.
1989 2023-07-10  Xi Ruoyao  <xry111@xry111.site>
1991         PR tree-optimization/110557
1992         * tree-vect-patterns.cc (vect_recog_bitfield_ref_pattern):
1993         Ensure the output sign-extended if necessary.
1995 2023-07-10  Roger Sayle  <roger@nextmovesoftware.com>
1997         * config/i386/i386.md (peephole2): Transform xchg insn with a
1998         REG_UNUSED note to a (simple) move.
1999         (*insvti_lowpart_1): New define_insn_and_split.
2000         (*insvdi_lowpart_1): Likewise.
2002 2023-07-10  Roger Sayle  <roger@nextmovesoftware.com>
2004         * config/i386/i386-features.cc (compute_convert_gain): Tweak
2005         gains/costs for ROTATE/ROTATERT by integer constant on AVX512VL.
2006         (general_scalar_chain::convert_rotate): On TARGET_AVX512F generate
2007         avx512vl_rolv2di or avx412vl_rolv4si when appropriate.
2009 2023-07-10  liuhongt  <hongtao.liu@intel.com>
2011         PR target/110170
2012         * config/i386/i386.md (*ieee_max<mode>3_1): New pre_reload
2013         splitter to detect fp max pattern.
2014         (*ieee_min<mode>3_1): Ditto, but for fp min pattern.
2016 2023-07-09  Jan Hubicka  <jh@suse.cz>
2018         * cfg.cc (check_bb_profile): Dump counts with relative frequency.
2019         (dump_edge_info): Likewise.
2020         (dump_bb_info): Likewise.
2021         * profile-count.cc (profile_count::dump): Add comma between quality and
2022         freq.
2024 2023-07-08  Jan Hubicka  <jh@suse.cz>
2026         PR tree-optimization/110600
2027         * cfgloopmanip.cc (scale_loop_profile): Add mising profile_dump check.
2029 2023-07-08  Jan Hubicka  <jh@suse.cz>
2031         PR middle-end/110590
2032         * cfgloopmanip.cc (scale_loop_profile): Avoid scaling exits within
2033         inner loops and be more careful about inconsistent profiles.
2034         (duplicate_loop_body_to_header_edge): Fix profile update when eliminated
2035         exit is followed by other exit.
2037 2023-07-08  Uros Bizjak  <ubizjak@gmail.com>
2039         * cprop.cc (reg_available_p): Change return type from int to bool.
2040         (reg_not_set_p): Ditto.
2041         (try_replace_reg): Ditto.  Change "success" variable to bool.
2042         (cprop_jump): Change return type from int to void
2043         and adjust function body accordingly.
2044         (constprop_register): Ditto.
2045         (cprop_insn): Ditto.  Change "changed" variable to bool.
2046         (local_cprop_pass): Change return type from int to void
2047         and adjust function body accordingly.
2048         (bypass_block): Ditto.  Change "change", "may_be_loop_header"
2049         and "removed_p" variables to bool.
2050         (bypass_conditional_jumps): Change return type from int to void
2051         and adjust function body accordingly.  Change "changed"
2052         variable to bool.
2053         (one_cprop_pass): Ditto.
2055 2023-07-08  Uros Bizjak  <ubizjak@gmail.com>
2057         * gcse.cc (expr_equiv_p): Change return type from int to bool.
2058         (oprs_unchanged_p): Change return type from int to void
2059         and adjust function body accordingly.
2060         (oprs_anticipatable_p): Ditto.
2061         (oprs_available_p): Ditto.
2062         (insert_expr_in_table): Ditto.  Change "antic_p" and "avail_p"
2063         arguments to bool. Change "found" variable to bool.
2064         (load_killed_in_block_p): Change return type from int to void and
2065         adjust function body accordingly.  Change "avail_p" argument to bool.
2066         (pre_expr_reaches_here_p): Change return type from int to void
2067         and adjust function body accordingly.
2068         (pre_delete): Ditto.  Change "changed" variable to bool.
2069         (pre_gcse): Change return type from int to void
2070         and adjust function body accordingly. Change "did_insert" and
2071         "changed" variables to bool.
2072         (one_pre_gcse_pass): Change return type from int to void
2073         and adjust function body accordingly.  Change "changed" variable
2074         to bool.
2075         (should_hoist_expr_to_dom): Change return type from int to void
2076         and adjust function body accordingly.  Change
2077         "visited_allocated_locally" variable to bool.
2078         (hoist_code): Change return type from int to void and adjust
2079         function body accordingly.  Change "changed" variable to bool.
2080         (one_code_hoisting_pass): Ditto.
2081         (pre_edge_insert): Change return type from int to void and adjust
2082         function body accordingly.  Change "did_insert" variable to bool.
2083         (pre_expr_reaches_here_p_work): Change return type from int to void
2084         and adjust function body accordingly.
2085         (simple_mem): Ditto.
2086         (want_to_gcse_p): Change return type from int to void
2087         and adjust function body accordingly.
2088         (can_assign_to_reg_without_clobbers_p): Update function body
2089         for bool return type.
2090         (hash_scan_set): Change "antic_p" and "avail_p" variables to bool.
2091         (pre_insert_copies): Change "added_copy" variable to bool.
2093 2023-07-08  Jonathan Wakely  <jwakely@redhat.com>
2095         PR c++/110595
2096         PR c++/110596
2097         * doc/invoke.texi (Warning Options): Fix typos.
2099 2023-07-07  Jan Hubicka  <jh@suse.cz>
2101         * profile-count.cc (profile_count::dump): Add FUN
2102         parameter; print relative frequency.
2103         (profile_count::debug): Update.
2104         * profile-count.h (profile_count::dump): Update
2105         prototype.
2107 2023-07-07  Roger Sayle  <roger@nextmovesoftware.com>
2109         PR target/43644
2110         PR target/110533
2111         * config/i386/i386-expand.cc (ix86_expand_move): Convert SETs of
2112         TImode destinations from paradoxical SUBREGs (setting the lowpart)
2113         into explicit zero extensions.  Use *insvti_highpart_1 instruction
2114         to set the highpart of a TImode destination.
2116 2023-07-07  Jan Hubicka  <jh@suse.cz>
2118         * predict.cc (force_edge_cold): Use
2119         set_edge_probability_and_rescale_others; improve dumps.
2121 2023-07-07  Jan Hubicka  <jh@suse.cz>
2123         * cfgloopmanip.cc (scale_loop_profile): Fix computation of count_in and scaling blocks
2124         after exit.
2125         * tree-vect-loop-manip.cc (vect_do_peeling): Scale loop profile of the epilogue if bound
2126         is known.
2128 2023-07-07  Juergen Christ  <jchrist@linux.ibm.com>
2130         * config/s390/s390.cc (vec_init): Fix default case
2132 2023-07-07  Vladimir N. Makarov  <vmakarov@redhat.com>
2134         * lra-assigns.cc (assign_by_spills): Add reload insns involving
2135         reload pseudos with non-refined class to be processed on the next
2136         sub-pass.
2137         * lra-constraints.cc (enough_allocatable_hard_regs_p): New func.
2138         (in_class_p): Use it.
2139         (print_curr_insn_alt): New func.
2140         (process_alt_operands): Use it.  Improve debug info.
2141         (curr_insn_transform): Use print_curr_insn_alt.  Refine reload
2142         pseudo class if it is not refined yet.
2144 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
2146         * value-range.cc (irange::get_bitmask_from_range): Return all the
2147         known bits for a singleton.
2148         (irange::set_range_from_bitmask): Set a range of a singleton when
2149         all bits are known.
2151 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
2153         * value-range.cc (irange::intersect): Leave normalization to
2154         caller.
2156 2023-07-07  Aldy Hernandez  <aldyh@redhat.com>
2158         * data-streamer-in.cc (streamer_read_value_range): Adjust for
2159         value/mask.
2160         * data-streamer-out.cc (streamer_write_vrange): Same.
2161         * range-op.cc (operator_cast::fold_range): Same.
2162         * value-range-pretty-print.cc
2163         (vrange_printer::print_irange_bitmasks): Same.
2164         * value-range-storage.cc (irange_storage::write_lengths_address):
2165         Same.
2166         (irange_storage::set_irange): Same.
2167         (irange_storage::get_irange): Same.
2168         (irange_storage::size): Same.
2169         (irange_storage::dump): Same.
2170         * value-range-storage.h: Same.
2171         * value-range.cc (debug): New.
2172         (irange_bitmask::dump): New.
2173         (add_vrange): Adjust for value/mask.
2174         (irange::operator=): Same.
2175         (irange::set): Same.
2176         (irange::verify_range): Same.
2177         (irange::operator==): Same.
2178         (irange::contains_p): Same.
2179         (irange::irange_single_pair_union): Same.
2180         (irange::union_): Same.
2181         (irange::intersect): Same.
2182         (irange::invert): Same.
2183         (irange::get_nonzero_bits_from_range): Rename to...
2184         (irange::get_bitmask_from_range): ...this.
2185         (irange::set_range_from_nonzero_bits): Rename to...
2186         (irange::set_range_from_bitmask): ...this.
2187         (irange::set_nonzero_bits): Rename to...
2188         (irange::update_bitmask): ...this.
2189         (irange::get_nonzero_bits): Rename to...
2190         (irange::get_bitmask): ...this.
2191         (irange::intersect_nonzero_bits): Rename to...
2192         (irange::intersect_bitmask): ...this.
2193         (irange::union_nonzero_bits): Rename to...
2194         (irange::union_bitmask): ...this.
2195         (irange_bitmask::verify_mask): New.
2196         * value-range.h (class irange_bitmask): New.
2197         (irange_bitmask::set_unknown): New.
2198         (irange_bitmask::unknown_p): New.
2199         (irange_bitmask::irange_bitmask): New.
2200         (irange_bitmask::get_precision): New.
2201         (irange_bitmask::get_nonzero_bits): New.
2202         (irange_bitmask::set_nonzero_bits): New.
2203         (irange_bitmask::operator==): New.
2204         (irange_bitmask::union_): New.
2205         (irange_bitmask::intersect): New.
2206         (class irange): Friend vrange_printer.
2207         (irange::varying_compatible_p): Adjust for bitmask.
2208         (irange::set_varying): Same.
2209         (irange::set_nonzero): Same.
2211 2023-07-07  Jan Beulich  <jbeulich@suse.com>
2213         * config/i386/sse.md (*vec_extractv2ti): Drop g modifiers.
2215 2023-07-07  Jan Beulich  <jbeulich@suse.com>
2217         * config/i386/sse.md (@vec_extract_hi_<mode>): Drop last
2218         alternative. Switch new last alternative's "isa" attribute to
2219         "avx512vl".
2220         (vec_extract_hi_v32qi): Likewise.
2222 2023-07-07  Pan Li  <pan2.li@intel.com>
2223             Robin Dapp  <rdapp@ventanamicro.com>
2225         * config/riscv/riscv.cc (riscv_emit_mode_set): Avoid emit insn
2226         when FRM_MODE_DYN.
2227         (riscv_mode_entry): Take FRM_MODE_DYN as entry mode.
2228         (riscv_mode_exit): Likewise for exit mode.
2229         (riscv_mode_needed): Likewise for needed mode.
2230         (riscv_mode_after): Likewise for after mode.
2232 2023-07-07  Pan Li  <pan2.li@intel.com>
2234         * config/riscv/vector.md: Fix typo.
2236 2023-07-06  Jan Hubicka  <jh@suse.cz>
2238         PR middle-end/25623
2239         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Scale loop frequency to maximal number
2240         of iterations determined.
2241         * tree-ssa-loop-ivcanon.cc (try_unroll_loop_completely): Likewise.
2243 2023-07-06  Jan Hubicka  <jh@suse.cz>
2245         * cfgloopmanip.cc (scale_loop_profile): Rewrite exit edge
2246         probability update to be safe on loops with subloops.
2247         Make bound parameter to be iteration bound.
2248         * tree-ssa-loop-ivcanon.cc (try_peel_loop): Update call
2249         of scale_loop_profile.
2250         * tree-vect-loop-manip.cc (vect_do_peeling): Likewise.
2252 2023-07-06  Hao Liu OS  <hliu@os.amperecomputing.com>
2254         PR tree-optimization/110449
2255         * tree-vect-loop.cc (vectorizable_induction): use vec_n to replace
2256         vec_loop for the unrolled loop.
2258 2023-07-06  Jan Hubicka  <jh@suse.cz>
2260         * cfg.cc (set_edge_probability_and_rescale_others): New function.
2261         (update_bb_profile_for_threading): Use it; simplify the rest.
2262         * cfg.h (set_edge_probability_and_rescale_others): Declare.
2263         * profile-count.h (profile_probability::apply_scale): New.
2265 2023-07-06  Claudiu Zissulescu  <claziss@gmail.com>
2267         * doc/extend.texi (ARC Built-in Functions): Update documentation
2268         with missing builtins.
2270 2023-07-06  Richard Biener  <rguenther@suse.de>
2272         PR tree-optimization/110556
2273         * tree-ssa-tail-merge.cc (gimple_equal_p): Check
2274         assign code and all operands of non-stores.
2276 2023-07-06  Richard Biener  <rguenther@suse.de>
2278         PR tree-optimization/110563
2279         * tree-vectorizer.h (vect_determine_partial_vectors_and_peeling):
2280         Remove second argument.
2281         * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
2282         Remove for_epilogue_p argument.  Merge assert ...
2283         (vect_analyze_loop_2): ... with check done before determining
2284         partial vectors by moving it after.
2285         * tree-vect-loop-manip.cc (vect_do_peeling): Adjust.
2287 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
2289         * ggc-common.cc (gt_pch_note_reorder, gt_pch_save): Tighten up a
2290         few things re 'reorder' option and strings.
2291         * stringpool.cc (gt_pch_p_S): This is now 'gcc_unreachable'.
2293 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
2295         * gengtype-parse.cc: Clean up obsolete parametrized structs
2296         remnants.
2297         * gengtype.cc: Likewise.
2298         * gengtype.h: Likewise.
2300 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
2302         * gengtype.cc (struct walk_type_data): Remove 'needs_cast_p'.
2303         Adjust all users.
2305 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
2307         * gengtype-parse.cc (token_names): Add '"user"'.
2308         * gengtype.h (gty_token): Add 'UNUSED_PARAM_IS' for use with
2309         'FIRST_TOKEN_WITH_VALUE'.
2311 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
2313         * doc/gty.texi (GTY Options) <string_length>: Enhance.
2315 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
2317         * gengtype.cc (write_root, write_roots): Explicitly reject
2318         'string_length' option.
2319         * doc/gty.texi (GTY Options) <string_length>: Document.
2321 2023-07-06  Thomas Schwinge  <thomas@codesourcery.com>
2323         * ggc-internal.h (ggc_pch_count_object, ggc_pch_alloc_object)
2324         (ggc_pch_write_object): Remove 'bool is_string' argument.
2325         * ggc-common.cc: Adjust.
2326         * ggc-page.cc: Likewise.
2328 2023-07-06  Roger Sayle  <roger@nextmovesoftware.com>
2330         * dwarf2out.cc (mem_loc_descriptor): Handle COPYSIGN.
2332 2023-07-06  Hongyu Wang  <hongyu.wang@intel.com>
2334         * doc/extend.texi: Move x86 inlining rule to a new subsubsection
2335         and add description for inling of function with arch and tune
2336         attributes.
2338 2023-07-06  Richard Biener  <rguenther@suse.de>
2340         PR tree-optimization/110515
2341         * tree-ssa-pre.cc (compute_avail): Make code dealing
2342         with hoisting loads with different alias-sets more
2343         robust.
2345 2023-07-06  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
2347         * tree-vect-stmts.cc (vect_get_strided_load_store_ops): Fix ICE.
2349 2023-07-06  Hongyu Wang  <hongyu.wang@intel.com>
2351         * config/i386/i386.cc (ix86_can_inline_p): If callee has
2352         default arch=x86-64 and tune=generic, do not block the
2353         inlining to its caller. Also allow callee with different
2354         arch= to be inlined if it has always_inline attribute and
2355         it's ISA is subset of caller's.
2357 2023-07-06  liuhongt  <hongtao.liu@intel.com>
2359         * config/i386/i386.cc (ix86_rtx_costs): Adjust rtx_cost for
2360         DF/SFmode AND/IOR/XOR/ANDN operations.
2362 2023-07-06  Andrew Pinski  <apinski@marvell.com>
2364         PR middle-end/110554
2365         * tree-vect-generic.cc (expand_vector_condition): For comparisons,
2366         just build using boolean_type_node instead of the cond_type.
2367         For non-comparisons/non-scalar-bitmask, build a ` != 0` gimple
2368         that will feed into the COND_EXPR.
2370 2023-07-06  liuhongt  <hongtao.liu@intel.com>
2372         PR target/110170
2373         * config/i386/i386.md (movdf_internal): Disparage slightly for
2374         2 alternatives (r,v) and (v,r) by adding constraint modifier
2375         '?'.
2377 2023-07-06  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
2379         PR target/106907
2380         * config/rs6000/rs6000.cc (rs6000_expand_vector_extract): Remove redundant
2381         initialization of new_addr.
2383 2023-07-06  Hao Liu  <hliu@os.amperecomputing.com>
2385         PR tree-optimization/110474
2386         * tree-vect-loop.cc (vect_analyze_loop_2): unscale the VF by suggested
2387         unroll factor while selecting the epilog vect loop VF.
2389 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
2391         * gimple-range-gori.cc (compute_operand_range): Convert to a tail
2392         call.
2394 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
2396         * gimple-range-gori.cc (compute_operand_range): After calling
2397         compute_operand2_range, recursively call self if needed.
2398         (compute_operand2_range): Turn into a leaf function.
2399         (gori_compute::compute_operand1_and_operand2_range): Finish
2400         operand2 calculation.
2401         * gimple-range-gori.h (compute_operand2_range): Remove name param.
2403 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
2405         * gimple-range-gori.cc (compute_operand_range): After calling
2406         compute_operand1_range, recursively call self if needed.
2407         (compute_operand1_range): Turn into a leaf function.
2408         (gori_compute::compute_operand1_and_operand2_range): Finish
2409         operand1 calculation.
2410         * gimple-range-gori.h (compute_operand1_range): Remove name param.
2412 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
2414         * gimple-range-gori.cc (compute_operand_range): Check for
2415         operand interdependence when both op1 and op2 are computed.
2416         (compute_operand1_and_operand2_range): No checks required now.
2418 2023-07-05  Andrew MacLeod  <amacleod@redhat.com>
2420         * gimple-range-gori.cc (compute_operand_range): Check for
2421         a relation between op1 and op2 and use that instead.
2422         (compute_operand1_range): Don't look for a relation override.
2423         (compute_operand2_range): Ditto.
2425 2023-07-05  Jonathan Wakely  <jwakely@redhat.com>
2427         * doc/contrib.texi (Contributors): Update my entry.
2429 2023-07-05  Filip Kastl  <filip.kastl@gmail.com>
2431         * value-prof.cc (gimple_mod_subtract_transform): Correct edge
2432         prob calculation.
2434 2023-07-05  Uros Bizjak  <ubizjak@gmail.com>
2436         * sched-int.h (struct haifa_sched_info): Change can_schedule_ready_p,
2437         scehdule_more_p and contributes_to_priority indirect frunction
2438         type from int to bool.
2439         (no_real_insns_p): Change return type from int to bool.
2440         (contributes_to_priority): Ditto.
2441         * haifa-sched.cc (no_real_insns_p): Change return type from
2442         int to bool and adjust function body accordingly.
2443         * modulo-sched.cc (try_scheduling_node_in_cycle): Change "success"
2444         variable type from int to bool.
2445         (ps_insn_advance_column): Change return type from int to bool.
2446         (ps_has_conflicts): Ditto. Change "has_conflicts"
2447         variable type from int to bool.
2448         * sched-deps.cc (deps_may_trap_p): Change return type from int to bool.
2449         (conditions_mutex_p): Ditto.
2450         * sched-ebb.cc (schedule_more_p): Ditto.
2451         (ebb_contributes_to_priority): Change return type from
2452         int to bool and adjust function body accordingly.
2453         * sched-rgn.cc (is_cfg_nonregular): Ditto.
2454         (check_live_1): Ditto.
2455         (is_pfree): Ditto.
2456         (find_conditional_protection): Ditto.
2457         (is_conditionally_protected): Ditto.
2458         (is_prisky): Ditto.
2459         (is_exception_free): Ditto.
2460         (haifa_find_rgns): Change "unreachable" and "too_large_failure"
2461         variables from int to bool.
2462         (extend_rgns): Change "rescan" variable from int to bool.
2463         (check_live): Change return type from
2464         int to bool and adjust function body accordingly.
2465         (can_schedule_ready_p): Ditto.
2466         (schedule_more_p): Ditto.
2467         (contributes_to_priority): Ditto.
2469 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
2471         * doc/md.texi: Document that vec_set and vec_extract must not
2472         fail.
2473         * gimple-isel.cc (gimple_expand_vec_set_expr): Rename this...
2474         (gimple_expand_vec_set_extract_expr): ...to this.
2475         (gimple_expand_vec_exprs): Call renamed function.
2476         * internal-fn.cc (vec_extract_direct): Add.
2477         (expand_vec_extract_optab_fn): New function to expand
2478         vec_extract optab.
2479         (direct_vec_extract_optab_supported_p): Add.
2480         * internal-fn.def (VEC_EXTRACT): Add.
2481         * optabs.cc (can_vec_extract_var_idx_p): New function.
2482         * optabs.h (can_vec_extract_var_idx_p): Declare.
2484 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
2486         * config/riscv/autovec.md: Add gen_lowpart.
2488 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
2490         * config/riscv/autovec.md: Allow register index operand.
2492 2023-07-05  Pan Li  <pan2.li@intel.com>
2494         * config/riscv/riscv-vector-builtins.cc
2495         (function_expander::use_exact_insn): Use FRM_DYN instead of const0.
2497 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
2499         * config/riscv/autovec.md: Use float_truncate.
2501 2023-07-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
2503         * internal-fn.cc (internal_fn_len_index): Apply
2504         LEN_MASK_GATHER_LOAD/SCATTER_STORE into vectorizer.
2505         (internal_fn_mask_index): Ditto.
2506         * optabs-query.cc (supports_vec_gather_load_p): Ditto.
2507         (supports_vec_scatter_store_p): Ditto.
2508         * tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Ditto.
2509         * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Ditto.
2510         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
2511         (vect_get_strided_load_store_ops): Ditto.
2512         (vectorizable_store): Ditto.
2513         (vectorizable_load): Ditto.
2515 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
2516             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2518         * simplify-rtx.cc (native_encode_rtx): Ditto.
2519         (native_decode_vector_rtx): Ditto.
2520         (simplify_const_vector_byte_offset): Ditto.
2521         (simplify_const_vector_subreg): Ditto.
2522         * tree.cc (build_truth_vector_type_for_mode): Ditto.
2523         * varasm.cc (output_constant_pool_2): Ditto.
2525 2023-07-05  YunQiang Su  <yunqiang.su@cipunited.com>
2527         * config/mips/mips.cc (mips_expand_block_move): don't expand for
2528         r6 with -mno-unaligned-access option if one or both of src and
2529         dest are unaligned. restruct: return directly if length is not const.
2530         (mips_block_move_straight): emit_move if ISA_HAS_UNALIGNED_ACCESS.
2532 2023-07-05  Jan Beulich  <jbeulich@suse.com>
2534         PR target/100711
2535         * config/i386/sse.md: New splitters to simplify
2536         not;vec_duplicate as a singular vpternlog.
2537         (one_cmpl<mode>2): Allow broadcast for operand 1.
2538         (<mask_codefor>one_cmpl<mode>2<mask_name>): Likewise.
2540 2023-07-05  Jan Beulich  <jbeulich@suse.com>
2542         PR target/100711
2543         * config/i386/sse.md: New splitters to simplify
2544         not;vec_duplicate;{ior,xor} as vec_duplicate;{iornot,xnor}.
2546 2023-07-05  Jan Beulich  <jbeulich@suse.com>
2548         PR target/100711
2549         * config/i386/sse.md: Permit non-immediate operand 1 in AVX2
2550         form of splitter for PR target/100711.
2552 2023-07-05  Richard Biener  <rguenther@suse.de>
2554         PR middle-end/110541
2555         * tree.def (VEC_PERM_EXPR): Adjust documentation to reflect
2556         reality.
2558 2023-07-05  Jan Beulich  <jbeulich@suse.com>
2560         PR target/93768
2561         * config/i386/sse.md (*andnot<mode>3): Add new alternatives
2562         for memory form operand 1.
2564 2023-07-05  Jan Beulich  <jbeulich@suse.com>
2566         PR target/93768
2567         * config/i386/i386.cc (ix86_rtx_costs): Further special-case
2568         bitwise vector operations.
2569         * config/i386/sse.md (*iornot<mode>3): New insn.
2570         (*xnor<mode>3): Likewise.
2571         (*<nlogic><mode>3): Likewise.
2572         (andor): New code iterator.
2573         (nlogic): New code attribute.
2574         (ternlog_nlogic): Likewise.
2576 2023-07-05  Richard Biener  <rguenther@suse.de>
2578         * tree-vect-stmts.cc (vect_mark_relevant): Fix typo.
2580 2023-07-05  yulong  <shiyulong@iscas.ac.cn>
2582         * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
2584 2023-07-05  yulong  <shiyulong@iscas.ac.cn>
2586         * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
2587         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
2588         (ADJUST_ALIGNMENT): Ditto.
2589         (RVV_TUPLE_PARTIAL_MODES): Ditto.
2590         (ADJUST_NUNITS): Ditto.
2591         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
2592         New types.
2593         (vfloat16mf4x3_t): Ditto.
2594         (vfloat16mf4x4_t): Ditto.
2595         (vfloat16mf4x5_t): Ditto.
2596         (vfloat16mf4x6_t): Ditto.
2597         (vfloat16mf4x7_t): Ditto.
2598         (vfloat16mf4x8_t): Ditto.
2599         (vfloat16mf2x2_t): Ditto.
2600         (vfloat16mf2x3_t): Ditto.
2601         (vfloat16mf2x4_t): Ditto.
2602         (vfloat16mf2x5_t): Ditto.
2603         (vfloat16mf2x6_t): Ditto.
2604         (vfloat16mf2x7_t): Ditto.
2605         (vfloat16mf2x8_t): Ditto.
2606         (vfloat16m1x2_t): Ditto.
2607         (vfloat16m1x3_t): Ditto.
2608         (vfloat16m1x4_t): Ditto.
2609         (vfloat16m1x5_t): Ditto.
2610         (vfloat16m1x6_t): Ditto.
2611         (vfloat16m1x7_t): Ditto.
2612         (vfloat16m1x8_t): Ditto.
2613         (vfloat16m2x2_t): Ditto.
2614         (vfloat16m2x3_t): Ditto.
2615         (vfloat16m2x4_t): Ditto.
2616         (vfloat16m4x2_t): Ditto.
2617         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
2618         (vfloat16mf4x3_t): Ditto.
2619         (vfloat16mf4x4_t): Ditto.
2620         (vfloat16mf4x5_t): Ditto.
2621         (vfloat16mf4x6_t): Ditto.
2622         (vfloat16mf4x7_t): Ditto.
2623         (vfloat16mf4x8_t): Ditto.
2624         (vfloat16mf2x2_t): Ditto.
2625         (vfloat16mf2x3_t): Ditto.
2626         (vfloat16mf2x4_t): Ditto.
2627         (vfloat16mf2x5_t): Ditto.
2628         (vfloat16mf2x6_t): Ditto.
2629         (vfloat16mf2x7_t): Ditto.
2630         (vfloat16mf2x8_t): Ditto.
2631         (vfloat16m1x2_t): Ditto.
2632         (vfloat16m1x3_t): Ditto.
2633         (vfloat16m1x4_t): Ditto.
2634         (vfloat16m1x5_t): Ditto.
2635         (vfloat16m1x6_t): Ditto.
2636         (vfloat16m1x7_t): Ditto.
2637         (vfloat16m1x8_t): Ditto.
2638         (vfloat16m2x2_t): Ditto.
2639         (vfloat16m2x3_t): Ditto.
2640         (vfloat16m2x4_t): Ditto.
2641         (vfloat16m4x2_t): Ditto.
2642         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
2643         * config/riscv/riscv.md: New.
2644         * config/riscv/vector-iterators.md: New.
2646 2023-07-04  Andrew Pinski  <apinski@marvell.com>
2648         PR tree-optimization/110487
2649         * match.pd (a !=/== CST1 ? CST2 : CST3): Always
2650         build a nonstandard integer and use that.
2652 2023-07-04  Andrew Pinski  <apinski@marvell.com>
2654         * match.pd (a?-1:0): Cast type an integer type
2655         rather the type before the negative.
2656         (a?0:-1): Likewise.
2658 2023-07-04  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
2660         * config/xtensa/xtensa.cc (machine_function, xtensa_expand_prologue):
2661         Change to use HARD_REG_BIT and its macros.
2662         * config/xtensa/xtensa.md
2663         (peephole2: regmove elimination during DFmode input reload):
2664         Likewise.
2666 2023-07-04  Richard Biener  <rguenther@suse.de>
2668         PR tree-optimization/110491
2669         * tree-ssa-phiopt.cc (match_simplify_replacement): Check
2670         whether the PHI args are possibly undefined before folding
2671         the COND_EXPR.
2673 2023-07-04  Pan Li  <pan2.li@intel.com>
2674             Thomas Schwinge  <thomas@codesourcery.com>
2676         * lto-streamer-in.cc (lto_input_mode_table): Stream in the mode
2677         bits for machine mode table.
2678         * lto-streamer-out.cc (lto_write_mode_table): Stream out the
2679         HOST machine mode bits.
2680         * lto-streamer.h (struct lto_file_decl_data): New fields mode_bits.
2681         * tree-streamer.cc (streamer_mode_table): Take MAX_MACHINE_MODE
2682         as the table size.
2683         * tree-streamer.h (streamer_mode_table): Ditto.
2684         (bp_pack_machine_mode): Take 1 << ceil_log2 (MAX_MACHINE_MODE)
2685         as the packing limit.
2686         (bp_unpack_machine_mode): Ditto with 'file_data->mode_bits'.
2688 2023-07-04  Thomas Schwinge  <thomas@codesourcery.com>
2690         * lto-streamer.h (class lto_input_block): Capture
2691         'lto_file_decl_data *file_data' instead of just
2692         'unsigned char *mode_table'.
2693         * ipa-devirt.cc (ipa_odr_read_section): Adjust.
2694         * ipa-fnsummary.cc (inline_read_section): Likewise.
2695         * ipa-icf.cc (sem_item_optimizer::read_section): Likewise.
2696         * ipa-modref.cc (read_section): Likewise.
2697         * ipa-prop.cc (ipa_prop_read_section, read_replacements_section):
2698         Likewise.
2699         * ipa-sra.cc (isra_read_summary_section): Likewise.
2700         * lto-cgraph.cc (input_cgraph_opt_section): Likewise.
2701         * lto-section-in.cc (lto_create_simple_input_block): Likewise.
2702         * lto-streamer-in.cc (lto_read_body_or_constructor)
2703         (lto_input_toplevel_asms): Likewise.
2704         * tree-streamer.h (bp_unpack_machine_mode): Likewise.
2706 2023-07-04  Richard Biener  <rguenther@suse.de>
2708         * tree-ssa-phiopt.cc (pass_phiopt::execute): Mark SSA undefs.
2709         (empty_bb_or_one_feeding_into_p): Check for them.
2710         * tree-ssa.h (gimple_uses_undefined_value_p): Remove.
2711         * tree-ssa.cc (gimple_uses_undefined_value_p): Likewise.
2713 2023-07-04  Richard Biener  <rguenther@suse.de>
2715         * tree-vect-loop.cc (vect_analyze_loop_costing): Remove
2716         check guarding scalar_niter underflow.
2718 2023-07-04  Hao Liu  <hliu@os.amperecomputing.com>
2720         PR tree-optimization/110531
2721         * tree-vect-loop.cc (vect_analyze_loop_1): initialize
2722         slp_done_for_suggested_uf to false.
2724 2023-07-04  Richard Biener  <rguenther@suse.de>
2726         PR tree-optimization/110228
2727         * tree-ssa-ifcombine.cc (pass_tree_ifcombine::execute):
2728         Mark SSA may-undefs.
2729         (bb_no_side_effects_p): Check stmt uses for undefs.
2731 2023-07-04  Richard Biener  <rguenther@suse.de>
2733         PR tree-optimization/110436
2734         * tree-vect-stmts.cc (vect_mark_relevant): Expand dumping,
2735         force live but not relevant pattern stmts relevant.
2737 2023-07-04  Lili Cui  <lili.cui@intel.com>
2739         * config/i386/i386.h: Add PTA_ENQCMD and PTA_UINTR to PTA_SIERRAFOREST.
2740         * doc/invoke.texi: Update new isa to march=sierraforest and grandridge.
2742 2023-07-04  Richard Biener  <rguenther@suse.de>
2744         PR middle-end/110495
2745         * tree.h (TREE_OVERFLOW): Do not mention VECTOR_CSTs
2746         since we do not set TREE_OVERFLOW on those since the
2747         introduction of VL vectors.
2748         * match.pd (x +- CST +- CST): For VECTOR_CST do not look
2749         at TREE_OVERFLOW to determine validity of association.
2751 2023-07-04  Richard Biener  <rguenther@suse.de>
2753         PR tree-optimization/110310
2754         * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
2755         Move costing part ...
2756         (vect_analyze_loop_costing): ... here.  Integrate better
2757         estimate for epilogues from ...
2758         (vect_analyze_loop_2): Call vect_determine_partial_vectors_and_peeling
2759         with actual epilogue status.
2760         * tree-vect-loop-manip.cc (vect_do_peeling): ... here and
2761         avoid cancelling epilogue vectorization.
2762         (vect_update_epilogue_niters): Remove.  No longer update
2763         epilogue LOOP_VINFO_NITERS.
2765 2023-07-04  Pan Li  <pan2.li@intel.com>
2767         Revert:
2768         2023-07-03  Pan Li  <pan2.li@intel.com>
2770         * config/riscv/vector.md: Fix typo.
2772 2023-07-04  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
2774         * doc/md.texi: Add len_mask_gather_load/len_mask_scatter_store.
2775         * internal-fn.cc (expand_scatter_store_optab_fn): Ditto.
2776         (expand_gather_load_optab_fn): Ditto.
2777         (internal_load_fn_p): Ditto.
2778         (internal_store_fn_p): Ditto.
2779         (internal_gather_scatter_fn_p): Ditto.
2780         (internal_fn_len_index): Ditto.
2781         (internal_fn_mask_index): Ditto.
2782         (internal_fn_stored_value_index): Ditto.
2783         * internal-fn.def (LEN_MASK_GATHER_LOAD): Ditto.
2784         (LEN_MASK_SCATTER_STORE): Ditto.
2785         * optabs.def (OPTAB_CD): Ditto.
2787 2023-07-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2789         * config/riscv/riscv-vsetvl.cc
2790         (vector_insn_info::parse_insn): Add early break.
2792 2023-07-04  Hans-Peter Nilsson  <hp@axis.com>
2794         * config/cris/cris.md (CRIS_UNSPEC_SWAP_BITS): Remove.
2795         ("cris_swap_bits", "ctzsi2"): Use bitreverse instead.
2797 2023-07-04  Hans-Peter Nilsson  <hp@axis.com>
2799         * dwarf2out.cc (mem_loc_descriptor): Handle BITREVERSE.
2801 2023-07-03  Christoph Müllner  <christoph.muellner@vrull.eu>
2803         * common/config/riscv/riscv-common.cc: Add support for zvbb,
2804         zvbc, zvkg, zvkned, zvknha, zvknhb, zvksed, zvksh, zvkn,
2805         zvknc, zvkng, zvks, zvksc, zvksg, zvkt and the implied subsets.
2806         * config/riscv/arch-canonicalize: Add canonicalization info for
2807         zvkn, zvknc, zvkng, zvks, zvksc, zvksg.
2808         * config/riscv/riscv-opts.h (MASK_ZVBB): New macro.
2809         (MASK_ZVBC): Likewise.
2810         (TARGET_ZVBB): Likewise.
2811         (TARGET_ZVBC): Likewise.
2812         (MASK_ZVKG): Likewise.
2813         (MASK_ZVKNED): Likewise.
2814         (MASK_ZVKNHA): Likewise.
2815         (MASK_ZVKNHB): Likewise.
2816         (MASK_ZVKSED): Likewise.
2817         (MASK_ZVKSH): Likewise.
2818         (MASK_ZVKN): Likewise.
2819         (MASK_ZVKNC): Likewise.
2820         (MASK_ZVKNG): Likewise.
2821         (MASK_ZVKS): Likewise.
2822         (MASK_ZVKSC): Likewise.
2823         (MASK_ZVKSG): Likewise.
2824         (MASK_ZVKT): Likewise.
2825         (TARGET_ZVKG): Likewise.
2826         (TARGET_ZVKNED): Likewise.
2827         (TARGET_ZVKNHA): Likewise.
2828         (TARGET_ZVKNHB): Likewise.
2829         (TARGET_ZVKSED): Likewise.
2830         (TARGET_ZVKSH): Likewise.
2831         (TARGET_ZVKN): Likewise.
2832         (TARGET_ZVKNC): Likewise.
2833         (TARGET_ZVKNG): Likewise.
2834         (TARGET_ZVKS): Likewise.
2835         (TARGET_ZVKSC): Likewise.
2836         (TARGET_ZVKSG): Likewise.
2837         (TARGET_ZVKT): Likewise.
2838         * config/riscv/riscv.opt: Introduction of riscv_zv{b,k}_subext.
2840 2023-07-03  Andrew Pinski  <apinski@marvell.com>
2842         PR middle-end/110510
2843         * except.h (struct eh_landing_pad_d): Add chain_next GTY.
2845 2023-07-03  Iain Sandoe  <iain@sandoe.co.uk>
2847         * config/darwin.h: Avoid duplicate multiply_defined specs on
2848         earlier Darwin versions with shared libgcc.
2850 2023-07-03  Uros Bizjak  <ubizjak@gmail.com>
2852         * tree.h (tree_int_cst_equal): Change return type from int to bool.
2853         (operand_equal_for_phi_arg_p): Ditto.
2854         (tree_map_base_marked_p): Ditto.
2855         * tree.cc (contains_placeholder_p): Update function body
2856         for bool return type.
2857         (type_cache_hasher::equal): Ditto.
2858         (tree_map_base_hash): Change return type
2859         from int to void and adjust function body accordingly.
2860         (tree_int_cst_equal): Ditto.
2861         (operand_equal_for_phi_arg_p): Ditto.
2862         (get_narrower): Change "first" variable to bool.
2863         (cl_option_hasher::equal): Update function body for bool return type.
2864         * ggc.h (ggc_set_mark): Change return type from int to bool.
2865         (ggc_marked_p): Ditto.
2866         * ggc-page.cc (gt_ggc_mx): Change return type
2867         from int to void and adjust function body accordingly.
2868         (ggc_set_mark): Ditto.
2870 2023-07-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
2872         * config/riscv/autovec.md: Change order of
2873         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
2874         * config/riscv/riscv-v.cc (expand_load_store): Ditto.
2875         * doc/md.texi: Ditto.
2876         * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Ditto.
2877         * internal-fn.cc (len_maskload_direct): Ditto.
2878         (len_maskstore_direct): Ditto.
2879         (add_len_and_mask_args): New function.
2880         (expand_partial_load_optab_fn): Change order of
2881         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
2882         (expand_partial_store_optab_fn): Ditto.
2883         (internal_fn_len_index): New function.
2884         (internal_fn_mask_index): Change order of
2885         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
2886         (internal_fn_stored_value_index): Ditto.
2887         (internal_len_load_store_bias): Ditto.
2888         * internal-fn.h (internal_fn_len_index): New function.
2889         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Change order of
2890         LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
2891         * tree-vect-stmts.cc (vectorizable_store): Ditto.
2892         (vectorizable_load): Ditto.
2894 2023-07-03  Gaius Mulley  <gaiusmod2@gmail.com>
2896         PR modula2/110125
2897         * doc/gm2.texi (Semantic checking): Include examples using
2898         -Wuninit-variable-checking.
2900 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2902         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
2903         (*single_widen_fnma<mode>): Ditto.
2904         (*double_widen_fms<mode>): Ditto.
2905         (*single_widen_fms<mode>): Ditto.
2906         (*double_widen_fnms<mode>): Ditto.
2907         (*single_widen_fnms<mode>): Ditto.
2909 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2911         * config/riscv/autovec-opt.md (@pred_single_widen_mul<any_extend:su><mode>): Change "@"
2912         into "*" in pattern name which simplifies build files.
2913         (*pred_single_widen_mul<any_extend:su><mode>): Ditto.
2914         (*pred_single_widen_mul<mode>): New pattern.
2916 2023-07-03  Richard Sandiford  <richard.sandiford@arm.com>
2918         * config/aarch64/aarch64-simd.md (vec_extract<mode><Vhalf>): Expect
2919         the index to be 0 or 1.
2921 2023-07-03  Lehua Ding  <lehua.ding@rivai.ai>
2923         Revert:
2924         2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2926         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
2927         (*single_widen_fnma<mode>): Ditto.
2928         (*double_widen_fms<mode>): Ditto.
2929         (*single_widen_fms<mode>): Ditto.
2930         (*double_widen_fnms<mode>): Ditto.
2931         (*single_widen_fnms<mode>): Ditto.
2933 2023-07-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
2935         * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
2936         (*single_widen_fnma<mode>): Ditto.
2937         (*double_widen_fms<mode>): Ditto.
2938         (*single_widen_fms<mode>): Ditto.
2939         (*double_widen_fnms<mode>): Ditto.
2940         (*single_widen_fnms<mode>): Ditto.
2942 2023-07-03  Pan Li  <pan2.li@intel.com>
2944         * config/riscv/vector.md: Fix typo.
2946 2023-07-03  Richard Biener  <rguenther@suse.de>
2948         PR tree-optimization/110506
2949         * tree-vect-patterns.cc (vect_recog_rotate_pattern): Re-order
2950         TYPE_PRECISION access with INTEGRAL_TYPE_P check.
2952 2023-07-03  Richard Biener  <rguenther@suse.de>
2954         PR tree-optimization/110506
2955         * tree-ssa-ccp.cc (get_value_for_expr): Check for integral
2956         type before relying on TYPE_PRECISION to produce a nonzero mask.
2958 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
2960         * config/mips/mips.md(*and<mode>3_mips16): Generates
2961         ZEB/ZEH instructions.
2963 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
2965         * config/mips/mips.cc(mips_9bit_offset_address_p): Restrict the
2966         address register to M16_REGS for MIPS16.
2967         (BUILTIN_AVAIL_MIPS16E2): Defined a new macro.
2968         (AVAIL_MIPS16E2_OR_NON_MIPS16): Same as above.
2969         (AVAIL_NON_MIPS16 (cache..)): Update to
2970         AVAIL_MIPS16E2_OR_NON_MIPS16.
2971         * config/mips/mips.h (ISA_HAS_CACHE): Add clause for ISA_HAS_MIPS16E2.
2972         * config/mips/mips.md (mips_cache): Mark as extended MIPS16.
2974 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
2976         * config/mips/mips.h(ISA_HAS_9BIT_DISPLACEMENT): Add clause
2977         for ISA_HAS_MIPS16E2.
2978         (ISA_HAS_SYNC): Same as above.
2979         (ISA_HAS_LL_SC): Same as above.
2981 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
2983         * config/mips/mips.cc(mips_expand_ins_as_unaligned_store):
2984         Add logics for generating instruction.
2985         * config/mips/mips.h(ISA_HAS_LWL_LWR): Add clause for ISA_HAS_MIPS16E2.
2986         * config/mips/mips.md(mov_<load>l): Generates instructions.
2987         (mov_<load>r): Same as above.
2988         (mov_<store>l): Adjusted for the conditions above.
2989         (mov_<store>r): Same as above.
2990         (mov_<store>l_mips16e2): Add machine description for `define_insn mov_<store>l_mips16e2`.
2991         (mov_<store>r_mips16e2): Add machine description for `define_insn mov_<store>r_mips16e2`.
2993 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
2995         * config/mips/mips.cc(mips_symbol_insns_1): Generates LUI instruction.
2996         (mips_const_insns): Same as above.
2997         (mips_output_move): Same as above.
2998         (mips_output_function_prologue): Same as above.
2999         * config/mips/mips.md: Same as above
3001 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
3003         * config/mips/constraints.md(Yz): New constraints for mips16e2.
3004         * config/mips/mips-protos.h(mips_bit_clear_p): Declared new function.
3005         (mips_bit_clear_info): Same as above.
3006         * config/mips/mips.cc(mips_bit_clear_info): New function for
3007         generating instructions.
3008         (mips_bit_clear_p): Same as above.
3009         * config/mips/mips.h(ISA_HAS_EXT_INS): Add clause for ISA_HAS_MIPS16E2.
3010         * config/mips/mips.md(extended_mips16): Generates EXT and INS instructions.
3011         (*and<mode>3): Generates INS instruction.
3012         (*and<mode>3_mips16): Generates EXT, INS and ANDI instructions.
3013         (ior<mode>3): Add logics for ORI instruction.
3014         (*ior<mode>3_mips16_asmacro): Generates ORI instrucion.
3015         (*ior<mode>3_mips16): Add logics for XORI instruction.
3016         (*xor<mode>3_mips16): Generates XORI instrucion.
3017         (*extzv<mode>): Add logics for EXT instruction.
3018         (*insv<mode>): Add logics for INS instruction.
3019         * config/mips/predicates.md(bit_clear_operand): New predicate for
3020         generating bitwise instructions.
3021         (and_reg_operand): Add logics for generating bitwise instructions.
3023 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
3025         * config/mips/mips.cc(mips_regno_mode_ok_for_base_p): Generate instructions
3026         that uses global pointer register.
3027         (mips16_unextended_reference_p): Same as above.
3028         (mips_pic_base_register): Same as above.
3029         (mips_init_relocs): Same as above.
3030         * config/mips/mips.h(MIPS16_GP_LOADS): Defined a new macro.
3031         (GLOBAL_POINTER_REGNUM): Moved to machine description `mips.md`.
3032         * config/mips/mips.md(GLOBAL_POINTER_REGNUM): Moved to here from above.
3033         (*lowsi_mips16_gp):New `define_insn *low<mode>_mips16`.
3035 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
3037         * config/mips/mips.h(ISA_HAS_CONDMOVE): Add condition for ISA_HAS_MIPS16E2.
3038         * config/mips/mips.md(*mov<GPR:mode>_on_<MOVECC:mode>): Add logics for MOVx insts.
3039         (*mov<GPR:mode>_on_<MOVECC:mode>_mips16e2): Generate MOVx instruction.
3040         (*mov<GPR:mode>_on_<GPR2:mode>_ne): Add logics for MOVx insts.
3041         (*mov<GPR:mode>_on_<GPR2:mode>_ne_mips16e2): Generate MOVx instruction.
3042         * config/mips/predicates.md(reg_or_0_operand_mips16e2): New predicate for MOVx insts.
3044 2023-07-03  Jie Mei  <jie.mei@oss.cipunited.com>
3046         * config/mips/mips.cc(mips_file_start): Add mips16e2 info
3047         for output file.
3048         * config/mips/mips.h(__mips_mips16e2): Defined a new
3049         predefine macro.
3050         (ISA_HAS_MIPS16E2): Defined a new macro.
3051         (ASM_SPEC): Pass mmips16e2 to the assembler.
3052         * config/mips/mips.opt: Add -m(no-)mips16e2 option.
3053         * config/mips/predicates.md: Add clause for TARGET_MIPS16E2.
3054         * doc/invoke.texi: Add -m(no-)mips16e2 option..
3056 2023-07-02  Jakub Jelinek  <jakub@redhat.com>
3058         PR tree-optimization/110508
3059         * tree-ssa-math-opts.cc (match_uaddc_usubc): Only replace re2 with
3060         REALPART_EXPR opf nlhs if re2 is non-NULL.
3062 2023-07-02  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
3064         * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
3065         Simplify.
3066         * config/xtensa/xtensa.md (*xtensa_clamps):
3067         Add TARGET_MINMAX to the condition.
3069 2023-07-02  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
3071         * config/xtensa/xtensa.md (*eqne_INT_MIN):
3072         Add missing ":SI" to the match_operator.
3074 2023-07-02  Iain Sandoe  <iain@sandoe.co.uk>
3076         PR target/108743
3077         * config/darwin.opt: Add fconstant-cfstrings alias to
3078         mconstant-cfstrings.
3079         * doc/invoke.texi: Amend invocation descriptions to reflect
3080         that the fconstant-cfstrings is a target-option alias and to
3081         add the missing mconstant-cfstrings option description to the
3082         Darwin section.
3084 2023-07-01  Jan Hubicka  <jh@suse.cz>
3086         * tree-cfg.cc (gimple_duplicate_sese_region): Add elliminated_edge
3087         parmaeter; update profile.
3088         * tree-cfg.h (gimple_duplicate_sese_region): Update prototype.
3089         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Rename to ...
3090         (static_loop_exit): ... this; return the edge to be elliminated.
3091         (ch_base::copy_headers): Handle profile updating for eliminated exits.
3093 2023-07-01  Roger Sayle  <roger@nextmovesoftware.com>
3095         * config/i386/i386-features.cc (compute_convert_gain): Provide
3096         gains/costs for ROTATE and ROTATERT (by an integer constant).
3097         (general_scalar_chain::convert_rotate): New helper function to
3098         convert a DImode or SImode rotation by an integer constant into
3099         SSE vector form.
3100         (general_scalar_chain::convert_insn): Call the new convert_rotate
3101         for ROTATE and ROTATERT.
3102         (general_scalar_to_vector_candidate_p): Consider ROTATE and
3103         ROTATERT to be candidates if the second operand is an integer
3104         constant, valid for a rotation (or shift) in the given mode.
3105         * config/i386/i386-features.h (general_scalar_chain): Add new
3106         helper method convert_rotate.
3108 2023-07-01  Jan Hubicka  <jh@suse.cz>
3110         PR tree-optimization/103680
3111         * cfg.cc (update_bb_profile_for_threading): Fix profile update;
3112         make message clearer.
3114 2023-06-30  Qing Zhao  <qing.zhao@oracle.com>
3116         PR tree-optimization/101832
3117         * tree-object-size.cc (addr_object_size): Handle structure/union type
3118         when it has flexible size.
3120 2023-06-30  Eric Botcazou  <ebotcazou@adacore.com>
3122         * gimple-fold.cc (fold_array_ctor_reference): Fix head comment.
3123         (fold_nonarray_ctor_reference): Likewise.  Specifically deal
3124         with integral bit-fields.
3125         (fold_ctor_reference): Make sure that the constructor uses the
3126         native storage order.
3128 2023-06-30  Jan Hubicka  <jh@suse.cz>
3130         PR middle-end/109849
3131         * predict.cc (estimate_bb_frequencies): Turn to static function.
3132         (expr_expected_value_1): Fix handling of binary expressions with
3133         predicted values.
3134         * predict.def (PRED_MALLOC_NONNULL): Move later in the priority queue.
3135         (PRED_BUILTIN_EXPECT_WITH_PROBABILITY): Move to almost top of the priority
3136         queue.
3137         * predict.h (estimate_bb_frequencies): No longer declare it.
3139 2023-06-30  Uros Bizjak  <ubizjak@gmail.com>
3141         * fold-const.h (multiple_of_p): Change return type from int to bool.
3142         * fold-const.cc (split_tree): Change negl_p, neg_litp_p,
3143         neg_conp_p and neg_var_p variables to bool.
3144         (const_binop): Change sat_p variable to bool.
3145         (merge_ranges): Change no_overlap variable to bool.
3146         (extract_muldiv_1): Change same_p variable to bool.
3147         (tree_swap_operands_p): Update function body for bool return type.
3148         (fold_truth_andor): Change commutative variable to bool.
3149         (multiple_of_p): Change return type
3150         from int to void and adjust function body accordingly.
3151         * optabs.h (expand_twoval_unop): Change return type from int to bool.
3152         (expand_twoval_binop): Ditto.
3153         (can_compare_p): Ditto.
3154         (have_add2_insn): Ditto.
3155         (have_addptr3_insn): Ditto.
3156         (have_sub2_insn): Ditto.
3157         (have_insn_for): Ditto.
3158         * optabs.cc (add_equal_note): Ditto.
3159         (widen_operand): Change no_extend argument from int to bool.
3160         (expand_binop): Ditto.
3161         (expand_twoval_unop): Change return type
3162         from int to void and adjust function body accordingly.
3163         (expand_twoval_binop): Ditto.
3164         (can_compare_p): Ditto.
3165         (have_add2_insn): Ditto.
3166         (have_addptr3_insn): Ditto.
3167         (have_sub2_insn): Ditto.
3168         (have_insn_for): Ditto.
3170 2023-06-30  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
3172         * config/aarch64/aarch64-simd.md
3173         (vec_widen_<su>abdl_lo_<mode>, vec_widen_<su>abdl_hi_<mode>):
3174         Expansions for abd vec widen optabs.
3175         (aarch64_<su>abdl<mode>_insn): VQW based abdl RTL.
3176         * config/aarch64/iterators.md (USMAX_EXT): Code attributes
3177         that give the appropriate extend RTL for the max RTL.
3179 2023-06-30  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
3181         * internal-fn.def (VEC_WIDEN_ABD): New internal hilo optab.
3182         * optabs.def (vec_widen_sabd_optab,
3183         vec_widen_sabd_hi_optab, vec_widen_sabd_lo_optab,
3184         vec_widen_sabd_odd_even, vec_widen_sabd_even_optab,
3185         vec_widen_uabd_optab,
3186         vec_widen_uabd_hi_optab, vec_widen_uabd_lo_optab,
3187         vec_widen_uabd_odd_even, vec_widen_uabd_even_optab):
3188         New optabs.
3189         * doc/md.texi: Document them.
3190         * tree-vect-patterns.cc (vect_recog_abd_pattern): Update to
3191         to build a VEC_WIDEN_ABD call if the input precision is smaller
3192         than the precision of the output.
3193         (vect_recog_widen_abd_pattern): Should an ABD expression be
3194         found preceeding an extension, replace the two with a
3195         VEC_WIDEN_ABD.
3197 2023-06-30  Pan Li  <pan2.li@intel.com>
3199         * config/riscv/vector.md: Refactor the common condition.
3201 2023-06-30  Richard Biener  <rguenther@suse.de>
3203         PR tree-optimization/110496
3204         * gimple-ssa-store-merging.cc (find_bswap_or_nop_1): Re-order
3205         verifying and TYPE_PRECISION query for the BIT_FIELD_REF case.
3207 2023-06-30  Richard Biener  <rguenther@suse.de>
3209         PR middle-end/110489
3210         * statistics.cc (curr_statistics_hash): Add argument
3211         indicating whether we should allocate the hash.
3212         (statistics_fini_pass): If the hash isn't allocated
3213         only print the summary header.
3215 2023-06-30  Segher Boessenkool  <segher@kernel.crashing.org>
3216             Thomas Schwinge  <thomas@codesourcery.com>
3218         * config/nvptx/nvptx.cc (TARGET_LRA_P): Remove.
3220 2023-06-30  Jovan Dmitrović  <jovan.dmitrovic@syrmia.com>
3222         PR target/109435
3223         * config/mips/mips.cc (mips_function_arg_alignment): Returns
3224         the alignment of function argument. In case of typedef type,
3225         it returns the aligment of the aliased type.
3226         (mips_function_arg_boundary): Relocated calculation of the
3227         aligment of function arguments.
3229 2023-06-29  Jan Hubicka  <jh@suse.cz>
3231         PR tree-optimization/109849
3232         * ipa-fnsummary.cc (decompose_param_expr): Skip
3233         functions returning its parameter.
3234         (set_cond_stmt_execution_predicate): Return early
3235         if predicate was constructed.
3237 2023-06-29  Qing Zhao  <qing.zhao@oracle.com>
3239         PR c/77650
3240         * doc/extend.texi: Document GCC extension on a structure containing
3241         a flexible array member to be a member of another structure.
3243 2023-06-29  Qing Zhao  <qing.zhao@oracle.com>
3245         * print-tree.cc (print_node): Print new bit type_include_flexarray.
3246         * tree-core.h (struct tree_type_common): Use bit no_named_args_stdarg_p
3247         as type_include_flexarray for RECORD_TYPE or UNION_TYPE.
3248         * tree-streamer-in.cc (unpack_ts_type_common_value_fields): Stream
3249         in bit no_named_args_stdarg_p properly for its corresponding type.
3250         * tree-streamer-out.cc (pack_ts_type_common_value_fields): Stream
3251         out bit no_named_args_stdarg_p properly for its corresponding type.
3252         * tree.h (TYPE_INCLUDES_FLEXARRAY): New macro TYPE_INCLUDES_FLEXARRAY.
3254 2023-06-29  Aldy Hernandez  <aldyh@redhat.com>
3256         * tree-vrp.cc (maybe_set_nonzero_bits): Move from here...
3257         * tree-ssa-dom.cc (maybe_set_nonzero_bits): ...to here.
3258         * tree-vrp.h (maybe_set_nonzero_bits): Remove.
3260 2023-06-29  Aldy Hernandez  <aldyh@redhat.com>
3262         * value-range.cc (frange::set): Do not call verify_range.
3263         (frange::normalize_kind): Verify range.
3264         (frange::union_nans): Do not call verify_range.
3265         (frange::union_): Same.
3266         (frange::intersect): Same.
3267         (irange::irange_single_pair_union): Call normalize_kind if
3268         necessary.
3269         (irange::union_): Same.
3270         (irange::intersect): Same.
3271         (irange::set_range_from_nonzero_bits): Verify range.
3272         (irange::set_nonzero_bits): Call normalize_kind if necessary.
3273         (irange::get_nonzero_bits): Tweak comment.
3274         (irange::intersect_nonzero_bits): Call normalize_kind if
3275         necessary.
3276         (irange::union_nonzero_bits): Same.
3277         * value-range.h (irange::normalize_kind): Verify range.
3279 2023-06-29  Uros Bizjak  <ubizjak@gmail.com>
3281         * cselib.h (rtx_equal_for_cselib_1):
3282         Change return type from int to bool.
3283         (references_value_p): Ditto.
3284         (rtx_equal_for_cselib_p): Ditto.
3285         * expr.h (can_store_by_pieces): Ditto.
3286         (try_casesi): Ditto.
3287         (try_tablejump): Ditto.
3288         (safe_from_p): Ditto.
3289         * sbitmap.h (bitmap_equal_p): Ditto.
3290         * cselib.cc (references_value_p): Change return type
3291         from int to void and adjust function body accordingly.
3292         (rtx_equal_for_cselib_1): Ditto.
3293         * expr.cc (is_aligning_offset): Ditto.
3294         (can_store_by_pieces): Ditto.
3295         (mostly_zeros_p): Ditto.
3296         (all_zeros_p): Ditto.
3297         (safe_from_p): Ditto.
3298         (is_aligning_offset): Ditto.
3299         (try_casesi): Ditto.
3300         (try_tablejump): Ditto.
3301         (store_constructor): Change "need_to_clear" and
3302         "const_bounds_p" variables to bool.
3303         * sbitmap.cc (bitmap_equal_p):  Change return type from int to bool.
3305 2023-06-29  Robin Dapp  <rdapp@ventanamicro.com>
3307         * tree-ssa-math-opts.cc (divmod_candidate_p): Use
3308         element_precision.
3310 2023-06-29  Richard Biener  <rguenther@suse.de>
3312         PR tree-optimization/110460
3313         * tree-vect-stmts.cc (get_related_vectype_for_scalar_type):
3314         Only allow integral, pointer and scalar float type scalar_type.
3316 2023-06-29  Lili Cui  <lili.cui@intel.com>
3318         PR tree-optimization/110148
3319         * tree-ssa-reassoc.cc (rewrite_expr_tree_parallel): Handle loop-carried
3320         ops in this function.
3322 2023-06-29  Richard Biener  <rguenther@suse.de>
3324         PR middle-end/110452
3325         * expr.cc (store_constructor): Handle uniform boolean
3326         vectors with integer mode specially.
3328 2023-06-29  Richard Biener  <rguenther@suse.de>
3330         PR middle-end/110461
3331         * match.pd (bitop (convert@2 @0) (convert?@3 @1)): Disable
3332         for VECTOR_TYPE_P.
3334 2023-06-29  Richard Sandiford  <richard.sandiford@arm.com>
3336         * vec.h (gt_pch_nx): Add overloads for va_gc_atomic.
3337         (array_slice): Relax va_gc constructor to handle all vectors
3338         with a vl_embed layout.
3340 2023-06-29  Pan Li  <pan2.li@intel.com>
3342         * config/riscv/riscv.cc (riscv_emit_mode_set): Add emit for FRM.
3343         (riscv_mode_needed): Likewise.
3344         (riscv_entity_mode_after): Likewise.
3345         (riscv_mode_after): Likewise.
3346         (riscv_mode_entry): Likewise.
3347         (riscv_mode_exit): Likewise.
3348         * config/riscv/riscv.h (NUM_MODES_FOR_MODE_SWITCHING): Add number
3349         for FRM.
3350         * config/riscv/riscv.md: Add FRM register.
3351         * config/riscv/vector-iterators.md: Add FRM type.
3352         * config/riscv/vector.md (frm_mode): Define new attr for FRM mode.
3353         (fsrm): Define new insn for fsrm instruction.
3355 2023-06-29  Pan Li  <pan2.li@intel.com>
3357         * config/riscv/riscv-protos.h (enum floating_point_rounding_mode):
3358         Add macro for static frm min and max.
3359         * config/riscv/riscv-vector-builtins-bases.cc
3360         (class binop_frm): New class for floating-point with frm.
3361         (BASE): Add vfadd for frm.
3362         * config/riscv/riscv-vector-builtins-bases.h: Likewise.
3363         * config/riscv/riscv-vector-builtins-functions.def
3364         (vfadd_frm): Likewise.
3365         * config/riscv/riscv-vector-builtins-shapes.cc
3366         (struct alu_frm_def): New struct for alu with frm.
3367         (SHAPE): Add alu with frm.
3368         * config/riscv/riscv-vector-builtins-shapes.h: Likewise.
3369         * config/riscv/riscv-vector-builtins.cc
3370         (function_checker::report_out_of_range_and_not): New function
3371         for report out of range and not val.
3372         (function_checker::require_immediate_range_or): New function
3373         for checking in range or one val.
3374         * config/riscv/riscv-vector-builtins.h: Add function decl.
3376 2023-06-29  Cui, Lili  <lili.cui@intel.com>
3378         * common/config/i386/cpuinfo.h (get_intel_cpu): Remove model value 0xa8
3379         from Rocketlake, move model value 0xbf from Alderlake to Raptorlake.
3381 2023-06-28  Hans-Peter Nilsson  <hp@axis.com>
3383         PR target/110144
3384         * config/cris/cris.cc (cris_postdbr_cmpelim): Don't apply PATTERN
3385         to insn before validating it.
3387 2023-06-28  Jan Hubicka  <jh@suse.cz>
3389         PR middle-end/110334
3390         * ipa-fnsummary.h (ipa_fn_summary): Add
3391         safe_to_inline_to_always_inline.
3392         * ipa-inline.cc (can_early_inline_edge_p): ICE
3393         if SSA is not built; do cycle checking for
3394         always_inline functions.
3395         (inline_always_inline_functions): Be recrusive;
3396         watch for cycles; do not updat overall summary.
3397         (early_inliner): Do not give up on always_inlines.
3398         * ipa-utils.cc (ipa_reverse_postorder): Do not skip
3399         always inlines.
3401 2023-06-28  Uros Bizjak  <ubizjak@gmail.com>
3403         * output.h (leaf_function_p): Change return type from int to bool.
3404         (final_forward_branch_p): Ditto.
3405         (only_leaf_regs_used): Ditto.
3406         (maybe_assemble_visibility): Ditto.
3407         * varasm.h (supports_one_only): Ditto.
3408         * rtl.h (compute_alignments): Change return type from int to void.
3409         * final.cc (app_on): Change return type from int to bool.
3410         (compute_alignments): Change return type from int to void
3411         and adjust function body accordingly.
3412         (shorten_branches):  Change "something_changed" variable
3413         type from int to bool.
3414         (leaf_function_p):  Change return type from int to bool
3415         and adjust function body accordingly.
3416         (final_forward_branch_p): Ditto.
3417         (only_leaf_regs_used): Ditto.
3418         * varasm.cc (contains_pointers_p): Change return type from
3419         int to bool and adjust function body accordingly.
3420         (compare_constant): Ditto.
3421         (maybe_assemble_visibility): Ditto.
3422         (supports_one_only): Ditto.
3424 2023-06-28  Manolis Tsamis  <manolis.tsamis@vrull.eu>
3426         PR debug/110308
3427         * regcprop.cc (maybe_mode_change): Check stack_pointer_rtx mode.
3428         (maybe_copy_reg_attrs): New function.
3429         (find_oldest_value_reg): Use maybe_copy_reg_attrs.
3430         (copyprop_hardreg_forward_1): Ditto.
3432 2023-06-28  Richard Biener  <rguenther@suse.de>
3434         PR tree-optimization/110434
3435         * tree-nrv.cc (pass_nrv::execute): Remove CLOBBERs of
3436         VAR we replace with <retval>.
3438 2023-06-28  Richard Biener  <rguenther@suse.de>
3440         PR tree-optimization/110451
3441         * tree-ssa-loop-im.cc (stmt_cost): [VEC_]COND_EXPR and
3442         tcc_comparison are expensive.
3444 2023-06-28  Roger Sayle  <roger@nextmovesoftware.com>
3446         * config/i386/i386-expand.cc (ix86_expand_branch): Also use ptest
3447         for TImode comparisons on 32-bit architectures.
3448         * config/i386/i386.md (cbranch<mode>4): Change from SDWIM to
3449         SWIM1248x to exclude/avoid TImode being conditional on -m64.
3450         (cbranchti4): New define_expand for TImode on both TARGET_64BIT
3451         and/or with TARGET_SSE4_1.
3452         * config/i386/predicates.md (ix86_timode_comparison_operator):
3453         New predicate that depends upon TARGET_64BIT.
3454         (ix86_timode_comparison_operand): Likewise.
3456 2023-06-28  Roger Sayle  <roger@nextmovesoftware.com>
3458         PR target/78794
3459         * config/i386/i386-features.cc (compute_convert_gain): Provide
3460         more accurate gains for conversion of scalar comparisons to
3461         PTEST.
3463 2023-06-28  Richard Biener  <rguenther@suse.de>
3465         PR tree-optimization/110443
3466         * tree-vect-slp.cc (vect_build_slp_tree_1): Reject non-grouped
3467         gather loads.
3469 2023-06-28  Haochen Gui  <guihaoc@gcc.gnu.org>
3471         * config/rs6000/rs6000.md (peephole2 for compare_and_move): New.
3472         (peephole2 for move_and_compare): New.
3473         (mode_iterator WORD): New.  Set the mode to SI/DImode by
3474         TARGET_POWERPC64.
3475         (*mov<mode>_internal2): Change the mode iterator from P to WORD.
3476         (split pattern for compare_and_move): Likewise.
3478 2023-06-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3480         * config/riscv/autovec-opt.md (*double_widen_fma<mode>): New pattern.
3481         (*single_widen_fma<mode>): Ditto.
3483 2023-06-28  Haochen Gui  <guihaoc@gcc.gnu.org>
3485         PR target/104124
3486         * config/rs6000/altivec.md (*altivec_vupkhs<VU_char>_direct): Rename
3487         to...
3488         (altivec_vupkhs<VU_char>_direct): ...this.
3489         * config/rs6000/predicates.md (vspltisw_vupkhsw_constant_split): New
3490         predicate to test if a constant can be loaded with vspltisw and
3491         vupkhsw.
3492         (easy_vector_constant): Call vspltisw_vupkhsw_constant_p to Check if
3493         a vector constant can be synthesized with a vspltisw and a vupkhsw.
3494         * config/rs6000/rs6000-protos.h (vspltisw_vupkhsw_constant_p):
3495         Declare.
3496         * config/rs6000/rs6000.cc (vspltisw_vupkhsw_constant_p): New
3497         function to return true if OP mode is V2DI and can be synthesized
3498         with vupkhsw and vspltisw.
3499         * config/rs6000/vsx.md (*vspltisw_v2di_split): New insn to load up
3500         constants with vspltisw and vupkhsw.
3502 2023-06-28  Jan Hubicka  <jh@suse.cz>
3504         PR tree-optimization/110377
3505         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Pass statement to
3506         the ranger query.
3507         (ipa_analyze_node): Enable ranger.
3509 2023-06-28  Richard Biener  <rguenther@suse.de>
3511         * tree.h (TYPE_PRECISION): Check for non-VECTOR_TYPE.
3512         (TYPE_PRECISION_RAW): Provide raw access to the precision
3513         field.
3514         * tree.cc (verify_type_variant): Compare TYPE_PRECISION_RAW.
3515         (gimple_canonical_types_compatible_p): Likewise.
3516         * tree-streamer-out.cc (pack_ts_type_common_value_fields):
3517         Stream TYPE_PRECISION_RAW.
3518         * tree-streamer-in.cc (unpack_ts_type_common_value_fields):
3519         Likewise.
3520         * lto-streamer-out.cc (hash_tree): Hash TYPE_PRECISION_RAW.
3522 2023-06-28  Alexandre Oliva  <oliva@adacore.com>
3524         * doc/extend.texi (zero-call-used-regs): Document leafy and
3525         variants thereof.
3526         * flag-types.h (zero_regs_flags): Add LEAFY_MODE, as well as
3527         LEAFY and variants.
3528         * function.cc (gen_call_ued_regs_seq): Set only_used for leaf
3529         functions in leafy mode.
3530         * opts.cc (zero_call_used_regs_opts): Add leafy and variants.
3532 2023-06-28  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3534         * config/riscv/riscv-vector-builtins-bases.cc: Adapt expand.
3535         * config/riscv/vector.md (@pred_single_widen_<plus_minus:optab><mode>):
3536         Remove.
3537         (@pred_single_widen_add<mode>): New pattern.
3538         (@pred_single_widen_sub<mode>): New pattern.
3540 2023-06-28  liuhongt  <hongtao.liu@intel.com>
3542         * config/i386/i386.cc (ix86_invalid_conversion): New function.
3543         (TARGET_INVALID_CONVERSION): Define as
3544         ix86_invalid_conversion.
3546 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
3548         * config/riscv/autovec.md (<optab><vnconvert><mode>2): New
3549         expander.
3550         (<float_cvt><vnconvert><mode>2): Ditto.
3551         (<optab><mode><vnconvert>2): Ditto.
3552         (<float_cvt><mode><vnconvert>2): Ditto.
3553         * config/riscv/vector-iterators.md: Add vnconvert.
3555 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
3557         * config/riscv/autovec.md (extend<v_double_trunc><mode>2): New
3558         expander.
3559         (extend<v_quad_trunc><mode>2): Ditto.
3560         (trunc<mode><v_double_trunc>2): Ditto.
3561         (trunc<mode><v_quad_trunc>2): Ditto.
3562         * config/riscv/vector-iterators.md: Add VQEXTF and HF to
3563         V_QUAD_TRUNC and v_quad_trunc.
3565 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
3567         * config/riscv/autovec.md (<float_cvt><vconvert><mode>2): New
3568         expander.
3570 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
3572         * config/riscv/autovec.md (copysign<mode>3): Add expander.
3573         (xorsign<mode>3): Ditto.
3574         * config/riscv/riscv-vector-builtins-bases.cc (class vfsgnjn):
3575         New class.
3576         * config/riscv/vector-iterators.md (copysign): Remove ncopysign.
3577         (xorsign): Ditto.
3578         (n): Ditto.
3579         (x): Ditto.
3580         * config/riscv/vector.md (@pred_ncopysign<mode>): Split off.
3581         (@pred_ncopysign<mode>_scalar): Ditto.
3583 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
3585         * config/riscv/autovec.md: VF_AUTO -> VF.
3586         * config/riscv/vector-iterators.md: Introduce VF_ZVFHMIN,
3587         VWEXTF_ZVFHMIN and use TARGET_ZVFH in VWCONVERTI, VHF and
3588         VHF_LMUL1.
3589         * config/riscv/vector.md: Use new iterators.
3591 2023-06-27  Robin Dapp  <rdapp@ventanamicro.com>
3593         * match.pd: Use element_mode and check if target supports
3594         operation with new type.
3596 2023-06-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
3598         * config/aarch64/aarch64-sve-builtins-base.cc
3599         (svdupq_impl::fold_nonconst_dupq): New method.
3600         (svdupq_impl::fold): Call fold_nonconst_dupq.
3602 2023-06-27  Andrew Pinski  <apinski@marvell.com>
3604         PR middle-end/110420
3605         PR middle-end/103979
3606         PR middle-end/98619
3607         * gimplify.cc (gimplify_asm_expr): Mark asm with labels as volatile.
3609 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
3611         * ipa-cp.cc (decide_whether_version_node): Adjust comment.
3612         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Adjust
3613         for Value_Range.
3614         (set_switch_stmt_execution_predicate): Same.
3615         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
3617 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
3619         * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Adjust for use with
3620         ipa_vr instead of value_range.
3621         (gt_pch_nx): Same.
3622         (gt_ggc_mx): Same.
3623         (ipa_get_value_range): Same.
3624         * value-range.cc (gt_pch_nx): Move to ipa-prop.cc and adjust for
3625         ipa_vr.
3626         (gt_ggc_mx): Same.
3628 2023-06-27  Aldy Hernandez  <aldyh@redhat.com>
3630         * ipa-cp.cc (ipa_vr_operation_and_type_effects): New.
3631         * ipa-prop.cc (ipa_get_value_range): Adjust for ipa_vr.
3632         (ipa_set_jfunc_vr): Take a range.
3633         (ipa_compute_jump_functions_for_edge): Pass range to
3634         ipa_set_jfunc_vr.
3635         (ipa_write_jump_function): Call streamer write helper.
3636         (ipa_read_jump_function): Call streamer read helper.
3637         * ipa-prop.h (class ipa_vr): Change m_vr to an ipa_vr.
3639 2023-06-27  Richard Sandiford  <richard.sandiford@arm.com>
3641         * gengtype-parse.cc (consume_until_comma_or_eos): Parse "= { ... }"
3642         as a probable initializer rather than a probable complete statement.
3644 2023-06-27  Richard Biener  <rguenther@suse.de>
3646         PR tree-optimization/96208
3647         * tree-vect-slp.cc (vect_build_slp_tree_1): Allow
3648         a non-grouped load if it is the same for all lanes.
3649         (vect_build_slp_tree_2): Handle not grouped loads.
3650         (vect_optimize_slp_pass::remove_redundant_permutations):
3651         Likewise.
3652         (vect_transform_slp_perm_load_1): Likewise.
3653         * tree-vect-stmts.cc (vect_model_load_cost): Likewise.
3654         (get_group_load_store_type): Likewise.  Handle
3655         invariant accesses.
3656         (vectorizable_load): Likewise.
3658 2023-06-27  liuhongt  <hongtao.liu@intel.com>
3660         PR rtl-optimization/110237
3661         * config/i386/sse.md (<avx512>_store<mode>_mask): Refine with
3662         UNSPEC_MASKMOV.
3663         (maskstore<mode><avx512fmaskmodelower): Ditto.
3664         (*<avx512>_store<mode>_mask): New define_insn, it's renamed
3665         from original <avx512>_store<mode>_mask.
3667 2023-06-27  liuhongt  <hongtao.liu@intel.com>
3669         * config/i386/i386-features.cc (pass_insert_vzeroupper:gate):
3670         Move flag_expensive_optimizations && !optimize_size to ..
3671         * config/i386/i386-options.cc (ix86_option_override_internal):
3672         .. this, it makes -mvzeroupper independent of optimization
3673         level, but still keeps the behavior of architecture
3674         tuning(emit_vzeroupper) unchanged.
3676 2023-06-27  liuhongt  <hongtao.liu@intel.com>
3678         PR target/82735
3679         * config/i386/i386.cc (ix86_avx_u127_mode_needed): Don't emit
3680         vzeroupper for vzeroupper call_insn.
3682 2023-06-27  Andrew Pinski  <apinski@marvell.com>
3684         * doc/extend.texi (__builtin_alloca_with_align_and_max): Fix
3685         defbuiltin usage.
3687 2023-06-27  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3689         * config/riscv/riscv-v.cc (expand_const_vector): Fix stepped vector
3690         with base != 0.
3692 2023-06-26  Andrew Pinski  <apinski@marvell.com>
3694         * doc/extend.texi (access attribute): Add
3695         cindex for it.
3696         (interrupt/interrupt_handler attribute):
3697         Likewise.
3699 2023-06-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3701         * config/aarch64/aarch64-simd.md (aarch64_sqrshrun_n<mode>_insn):
3702         Use <DWI> instead of <V2XWIDE>.
3703         (aarch64_sqrshrun_n<mode>): Likewise.
3705 2023-06-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3707         * config/aarch64/aarch64-protos.h (aarch64_const_vec_rsra_rnd_imm_p):
3708         Rename to...
3709         (aarch64_rnd_imm_p): ... This.
3710         * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec):
3711         Rename to...
3712         (aarch64_int_rnd_operand): ... This.
3713         (aarch64_simd_rshrn_imm_vec): Delete.
3714         * config/aarch64/aarch64-simd.md (aarch64_<sra_op>rsra_n<mode>_insn):
3715         Adjust for the above.
3716         (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): Likewise.
3717         (*aarch64_<shrn_op>rshrn_n<mode>_insn): Likewise.
3718         (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
3719         (aarch64_sqrshrun_n<mode>_insn): Likewise.
3720         (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): Likewise.
3721         (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): Likewise.
3722         (aarch64_sqrshrun2_n<mode>_insn_le): Likewise.
3723         (aarch64_sqrshrun2_n<mode>_insn_be): Likewise.
3724         * config/aarch64/aarch64.cc (aarch64_const_vec_rsra_rnd_imm_p):
3725         Rename to...
3726         (aarch64_rnd_imm_p): ... This.
3728 2023-06-26  Andreas Krebbel  <krebbel@linux.ibm.com>
3730         * config/s390/s390.cc (s390_encode_section_info): Set
3731         SYMBOL_FLAG_SET_NOTALIGN2 only if the symbol has explicitely been
3732         misaligned.
3734 2023-06-26  Jan Hubicka  <jh@suse.cz>
3736         PR tree-optimization/109849
3737         * tree-ssa-dce.cc (make_forwarders_with_degenerate_phis): Fix profile
3738         count of newly constructed forwarder block.
3740 2023-06-26  Andrew Carlotti  <andrew.carlotti@arm.com>
3742         * doc/optinfo.texi: Fix "steam" -> "stream".
3744 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
3746         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Add LEN_MASK_STORE and
3747         fix LEN_STORE.
3748         (dse_optimize_stmt): Add LEN_MASK_STORE.
3750 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
3752         * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Fix gimple
3753         fold of LOAD/STORE with length.
3755 2023-06-26  Andrew MacLeod  <amacleod@redhat.com>
3757         * gimple-range-gori.cc (compute_operand1_and_operand2_range):
3758         Check for interdependence between operands 1 and 2.
3760 2023-06-26  Richard Sandiford  <richard.sandiford@arm.com>
3762         * tree-vect-stmts.cc (vectorizable_conversion): Take multi_step_cvt
3763         into account when costing non-widening/truncating conversions.
3765 2023-06-26  Richard Biener  <rguenther@suse.de>
3767         PR tree-optimization/110381
3768         * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
3769         Materialize permutes before fold-left reductions.
3771 2023-06-26  Pan Li  <pan2.li@intel.com>
3773         * config/riscv/riscv-vector-builtins-bases.h: Remove duplicated decl.
3775 2023-06-26  Richard Biener  <rguenther@suse.de>
3777         * varasm.cc (initializer_constant_valid_p_1): Also
3778         constrain the type of value to be scalar integral
3779         before dispatching to narrowing_initializer_constant_valid_p.
3781 2023-06-26  Richard Biener  <rguenther@suse.de>
3783         * tree-ssa-scopedtables.cc (hashable_expr_equal_p):
3784         Use element_precision.
3786 2023-06-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3788         * config/riscv/autovec.md (vcond<V:mode><VI:mode>): Remove redundant
3789         vcond patterns.
3790         (vcondu<V:mode><VI:mode>): Ditto.
3791         * config/riscv/riscv-protos.h (expand_vcond): Ditto.
3792         * config/riscv/riscv-v.cc (expand_vcond): Ditto.
3794 2023-06-26  Richard Biener  <rguenther@suse.de>
3796         PR tree-optimization/110392
3797         * gimple-predicate-analysis.cc (uninit_analysis::is_use_guarded):
3798         Do early exits on true/false predicate only after normalization.
3800 2023-06-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
3802         * tree-ssa-sccvn.cc (vn_reference_lookup_3): Change name "len" into
3803         "length".
3805 2023-06-26  Roger Sayle  <roger@nextmovesoftware.com>
3807         * config/i386/i386.md (peephole2): Simplify zeroing a register
3808         followed by an IOR, XOR or PLUS operation on it, into a move.
3809         (*ashl<dwi>3_doubleword_highpart): New define_insn_and_split to
3810         eliminate (and hide from reload) unnecessary word to doubleword
3811         extensions that are followed by left shifts by sufficiently large,
3812         but valid, bit counts.
3814 2023-06-26  liuhongt  <hongtao.liu@intel.com>
3816         PR tree-optimization/110371
3817         PR tree-optimization/110018
3818         * tree-vect-stmts.cc (vectorizable_conversion): Use cvt_op to
3819         save intermediate type operand instead of "subtle" vec_dest
3820         for case NONE.
3822 2023-06-26  liuhongt  <hongtao.liu@intel.com>
3824         PR tree-optimization/110371
3825         PR tree-optimization/110018
3826         * tree-vect-stmts.cc (vectorizable_conversion): Don't use
3827         intermiediate type for FIX_TRUNC_EXPR when ftrapping-math.
3829 2023-06-26  Hongyu Wang  <hongyu.wang@intel.com>
3831         * config/i386/i386-options.cc (ix86_valid_target_attribute_tree):
3832         Override tune_string with arch_string if tune_string is not
3833         explicitly specified.
3835 2023-06-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3837         * config/riscv/riscv-vsetvl.cc (vector_insn_info::parse_insn): Ehance
3838         AVL propagation.
3839         * config/riscv/riscv-vsetvl.h: New function.
3841 2023-06-25  Li Xu  <xuli1@eswincomputing.com>
3843         * config/riscv/riscv-vector-builtins-bases.cc: change emit_insn to
3844         emit_move_insn
3846 2023-06-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3848         * config/riscv/autovec.md (len_load_<mode>): Remove.
3849         (len_maskload<mode><vm>): Remove.
3850         (len_store_<mode>): New pattern.
3851         (len_maskstore<mode><vm>): New pattern.
3852         * config/riscv/predicates.md (autovec_length_operand): New predicate.
3853         * config/riscv/riscv-protos.h (enum insn_type): New enum.
3854         (expand_load_store): New function.
3855         * config/riscv/riscv-v.cc (emit_vlmax_masked_insn): Ditto.
3856         (emit_nonvlmax_masked_insn): Ditto.
3857         (expand_load_store): Ditto.
3858         * config/riscv/riscv-vector-builtins.cc
3859         (function_expander::use_contiguous_store_insn): Add avl_type operand
3860         into pred_store.
3861         * config/riscv/vector.md: Ditto.
3863 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
3865         * internal-fn.cc (expand_partial_store_optab_fn): Fix bug of BIAS
3866         argument index.
3868 2023-06-25  Pan Li  <pan2.li@intel.com>
3870         * config/riscv/vector.md: Revert.
3872 2023-06-25  Pan Li  <pan2.li@intel.com>
3874         * config/riscv/genrvv-type-indexer.cc (valid_type): Revert changes.
3875         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): Ditto.
3876         (ADJUST_ALIGNMENT): Ditto.
3877         (RVV_TUPLE_PARTIAL_MODES): Ditto.
3878         (ADJUST_NUNITS): Ditto.
3879         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t): Ditto.
3880         (vfloat16mf4x3_t): Ditto.
3881         (vfloat16mf4x4_t): Ditto.
3882         (vfloat16mf4x5_t): Ditto.
3883         (vfloat16mf4x6_t): Ditto.
3884         (vfloat16mf4x7_t): Ditto.
3885         (vfloat16mf4x8_t): Ditto.
3886         (vfloat16mf2x2_t): Ditto.
3887         (vfloat16mf2x3_t): Ditto.
3888         (vfloat16mf2x4_t): Ditto.
3889         (vfloat16mf2x5_t): Ditto.
3890         (vfloat16mf2x6_t): Ditto.
3891         (vfloat16mf2x7_t): Ditto.
3892         (vfloat16mf2x8_t): Ditto.
3893         (vfloat16m1x2_t): Ditto.
3894         (vfloat16m1x3_t): Ditto.
3895         (vfloat16m1x4_t): Ditto.
3896         (vfloat16m1x5_t): Ditto.
3897         (vfloat16m1x6_t): Ditto.
3898         (vfloat16m1x7_t): Ditto.
3899         (vfloat16m1x8_t): Ditto.
3900         (vfloat16m2x2_t): Ditto.
3901         (vfloat16m2x3_t): Diito.
3902         (vfloat16m2x4_t): Diito.
3903         (vfloat16m4x2_t): Diito.
3904         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): Ditto.
3905         (vfloat16mf4x3_t): Ditto.
3906         (vfloat16mf4x4_t): Ditto.
3907         (vfloat16mf4x5_t): Ditto.
3908         (vfloat16mf4x6_t): Ditto.
3909         (vfloat16mf4x7_t): Ditto.
3910         (vfloat16mf4x8_t): Ditto.
3911         (vfloat16mf2x2_t): Ditto.
3912         (vfloat16mf2x3_t): Ditto.
3913         (vfloat16mf2x4_t): Ditto.
3914         (vfloat16mf2x5_t): Ditto.
3915         (vfloat16mf2x6_t): Ditto.
3916         (vfloat16mf2x7_t): Ditto.
3917         (vfloat16mf2x8_t): Ditto.
3918         (vfloat16m1x2_t): Ditto.
3919         (vfloat16m1x3_t): Ditto.
3920         (vfloat16m1x4_t): Ditto.
3921         (vfloat16m1x5_t): Ditto.
3922         (vfloat16m1x6_t): Ditto.
3923         (vfloat16m1x7_t): Ditto.
3924         (vfloat16m1x8_t): Ditto.
3925         (vfloat16m2x2_t): Ditto.
3926         (vfloat16m2x3_t): Ditto.
3927         (vfloat16m2x4_t): Ditto.
3928         (vfloat16m4x2_t): Ditto.
3929         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
3930         * config/riscv/riscv.md: Ditto.
3931         * config/riscv/vector-iterators.md: Ditto.
3933 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
3935         * gimple-fold.cc (arith_overflowed_p): Apply LEN_MASK_{LOAD,STORE}.
3936         (gimple_fold_partial_load_store_mem_ref): Ditto.
3937         (gimple_fold_partial_store): Ditto.
3938         (gimple_fold_call): Ditto.
3940 2023-06-25  liuhongt  <hongtao.liu@intel.com>
3942         PR target/110309
3943         * config/i386/sse.md (maskload<mode><avx512fmaskmodelower>):
3944         Refine pattern with UNSPEC_MASKLOAD.
3945         (maskload<mode><avx512fmaskmodelower>): Ditto.
3946         (*<avx512>_load<mode>_mask): Extend mode iterator to
3947         VI12HFBF_AVX512VL.
3948         (*<avx512>_load<mode>): Ditto.
3950 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
3952         * tree-ssa-alias.cc (call_may_clobber_ref_p_1): Add LEN_MASK_STORE.
3954 2023-06-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
3956         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Apply
3957         LEN_MASK_{LOAD,STORE}
3959 2023-06-25  yulong  <shiyulong@iscas.ac.cn>
3961         * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
3963 2023-06-24  Roger Sayle  <roger@nextmovesoftware.com>
3965         * config/i386/i386.md (*<code>qi_ext<mode>_3): New define_insn.
3967 2023-06-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3969         * config/riscv/autovec.md (*fma<mode>): set clobber to Pmode in expand stage.
3970         (*fma<VI:mode><P:mode>): Ditto.
3971         (*fnma<mode>): Ditto.
3972         (*fnma<VI:mode><P:mode>): Ditto.
3974 2023-06-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
3976         * config/riscv/autovec.md (fma<mode>4): New pattern.
3977         (*fma<mode>): Ditto.
3978         (fnma<mode>4): Ditto.
3979         (*fnma<mode>): Ditto.
3980         (fms<mode>4): Ditto.
3981         (*fms<mode>): Ditto.
3982         (fnms<mode>4): Ditto.
3983         (*fnms<mode>): Ditto.
3984         * config/riscv/riscv-protos.h (emit_vlmax_fp_ternary_insn):
3985         New function.
3986         * config/riscv/riscv-v.cc (emit_vlmax_fp_ternary_insn): Ditto.
3987         * config/riscv/vector.md: Fix attribute bug.
3989 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
3991         * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn):
3992         Apply LEN_MASK_{LOAD,STORE}.
3994 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
3996         * tree-ssa-loop-ivopts.cc (get_alias_ptr_type_for_ptr_address):
3997         Add LEN_MASK_{LOAD,STORE}.
3999 2023-06-24  David Malcolm  <dmalcolm@redhat.com>
4001         * diagnostic-format-sarif.cc: Add #define INCLUDE_VECTOR.
4002         * diagnostic.cc: Likewise.
4003         * text-art/box-drawing.cc: Likewise.
4004         * text-art/canvas.cc: Likewise.
4005         * text-art/ruler.cc: Likewise.
4006         * text-art/selftests.cc: Likewise.
4007         * text-art/selftests.h (text_art::canvas): New forward decl.
4008         * text-art/style.cc: Add #define INCLUDE_VECTOR.
4009         * text-art/styled-string.cc: Likewise.
4010         * text-art/table.cc: Likewise.
4011         * text-art/table.h: Remove #include <vector>.
4012         * text-art/theme.cc: Add #define INCLUDE_VECTOR.
4013         * text-art/types.h: Check that INCLUDE_VECTOR is defined.
4014         Remove #include of <vector> and <string>.
4015         * text-art/widget.cc: Add #define INCLUDE_VECTOR.
4016         * text-art/widget.h: Remove #include <vector>.
4018 2023-06-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
4020         * internal-fn.cc (expand_partial_store_optab_fn): Adapt for LEN_MASK_STORE.
4021         (internal_load_fn_p): Add LEN_MASK_LOAD.
4022         (internal_store_fn_p): Add LEN_MASK_STORE.
4023         (internal_fn_mask_index): Add LEN_MASK_{LOAD,STORE}.
4024         (internal_fn_stored_value_index): Add LEN_MASK_STORE.
4025         (internal_len_load_store_bias):  Add LEN_MASK_{LOAD,STORE}.
4026         * optabs-tree.cc (can_vec_mask_load_store_p): Adapt for LEN_MASK_{LOAD,STORE}.
4027         (get_len_load_store_mode): Ditto.
4028         * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
4029         (get_len_load_store_mode): Ditto.
4030         * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
4031         (get_all_ones_mask): New function.
4032         (vectorizable_store): Apply LEN_MASK_{LOAD,STORE} into vectorizer.
4033         (vectorizable_load): Ditto.
4035 2023-06-23  Marek Polacek  <polacek@redhat.com>
4037         * doc/cpp.texi (__cplusplus): Document value for -std=c++26 and
4038         -std=gnu++26.  Document that for C++23, its value is 202302L.
4039         * doc/invoke.texi: Document -std=c++26 and -std=gnu++26.
4040         * dwarf2out.cc (highest_c_language): Handle GNU C++26.
4041         (gen_compile_unit_die): Likewise.
4043 2023-06-23  Jan Hubicka  <jh@suse.cz>
4045         * tree-ssa-phiprop.cc (propagate_with_phi): Compute post dominators on
4046         demand.
4047         (pass_phiprop::execute): Do not compute it here; return
4048         update_ssa_only_virtuals if something changed.
4049         (pass_data_phiprop): Remove TODO_update_ssa from todos.
4051 2023-06-23   Michael Meissner  <meissner@linux.ibm.com>
4052             Aaron Sawdey   <acsawdey@linux.ibm.com>
4054         PR target/105325
4055         * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): Fix problems that
4056         allowed prefixed lwa to be generated.
4057         * config/rs6000/fusion.md: Regenerate.
4058         * config/rs6000/predicates.md (ds_form_mem_operand): Delete.
4059         * config/rs6000/rs6000.md (prefixed attribute): Add support for load
4060         plus compare immediate fused insns.
4061         (maybe_prefixed): Likewise.
4063 2023-06-23  Roger Sayle  <roger@nextmovesoftware.com>
4065         * simplify-rtx.cc (simplify_subreg):  Optimize lowpart SUBREGs
4066         of ASHIFT to const0_rtx with sufficiently large shift count.
4067         Optimize highpart SUBREGs of ASHIFT as the shift operand when
4068         the shift count is the correct offset.  Optimize SUBREGs of
4069         multi-word logic operations if the SUBREGs of both operands
4070         can be simplified.
4072 2023-06-23  Richard Biener  <rguenther@suse.de>
4074         * varasm.cc (initializer_constant_valid_p_1): Only
4075         allow conversions between scalar floating point types.
4077 2023-06-23  Richard Biener  <rguenther@suse.de>
4079         * tree-vect-stmts.cc (vectorizable_assignment):
4080         Properly handle non-integral operands when analyzing
4081         conversions.
4083 2023-06-23  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
4085         PR tree-optimization/110280
4086         * match.pd (vec_perm_expr(v, v, mask) -> v): Explicitly build vector
4087         using build_vector_from_val with the element of input operand, and
4088         mask's type if operand and mask's types don't match.
4090 2023-06-23  Richard Biener  <rguenther@suse.de>
4092         * fold-const.cc (tree_simple_nonnegative_warnv_p): Guard
4093         the truth_value_p case with !VECTOR_TYPE_P.
4095 2023-06-23  Richard Biener  <rguenther@suse.de>
4097         * tree-vect-patterns.cc (vect_look_through_possible_promotion):
4098         Exit early when the type isn't scalar integral.
4100 2023-06-23  Richard Biener  <rguenther@suse.de>
4102         * match.pd ((outertype)((innertype0)a+(innertype1)b)
4103         -> ((newtype)a+(newtype)b)): Use element_precision
4104         where appropriate.
4106 2023-06-23  Richard Biener  <rguenther@suse.de>
4108         * fold-const.cc (fold_binary_loc): Use element_precision
4109         when trying (double)float1 CMP (double)float2 to
4110         float1 CMP float2 simplification.
4111         * match.pd: Likewise.
4113 2023-06-23  Richard Biener  <rguenther@suse.de>
4115         * tree-vect-stmts.cc (vectorizable_load): Avoid useless
4116         copies of VMAT_INVARIANT vectorized stmts, fix SLP support.
4118 2023-06-23  Richard Biener  <rguenther@suse.de>
4120         * tree-vect-stmts.cc (vector_vector_composition_type):
4121         Handle composition of a vector from a number of elements that
4122         happens to match its number of lanes.
4124 2023-06-22  Marek Polacek  <polacek@redhat.com>
4126         * configure.ac (--enable-host-bind-now): New check.  Add
4127         -Wl,-z,now to LD_PICFLAG if --enable-host-bind-now.
4128         * configure: Regenerate.
4129         * doc/install.texi: Document --enable-host-bind-now.
4131 2023-06-22  Di Zhao OS  <dizhao@os.amperecomputing.com>
4133         * config/aarch64/aarch64.cc: Change fma_reassoc_width for ampere1.
4135 2023-06-22  Richard Biener  <rguenther@suse.de>
4137         PR tree-optimization/110332
4138         * tree-ssa-phiprop.cc (propagate_with_phi): Always
4139         check aliasing with edge inserted loads.
4141 2023-06-22  Roger Sayle  <roger@nextmovesoftware.com>
4142             Uros Bizjak  <ubizjak@gmail.com>
4144         * config/i386/i386-expand.cc (ix86_expand_sse_ptest): Recognize
4145         expansion of ptestc with equal operands as producing const1_rtx.
4146         * config/i386/i386.cc (ix86_rtx_costs): Provide accurate cost
4147         estimates of UNSPEC_PTEST, where the ptest performs the PAND
4148         or PAND of its operands.
4149         * config/i386/sse.md (define_split): Transform CCCmode UNSPEC_PTEST
4150         of reg_equal_p operands into an x86_stc instruction.
4151         (define_split): Split pandn/ptestz/set{n?}e into ptestc/set{n?}c.
4152         (define_split): Similar to above for strict_low_part destinations.
4153         (define_split): Split pandn/ptestz/j{n?}e into ptestc/j{n?}c.
4155 2023-06-22  David Malcolm  <dmalcolm@redhat.com>
4157         PR analyzer/106626
4158         * Makefile.in (ANALYZER_OBJS): Add analyzer/access-diagram.o.
4159         * doc/invoke.texi (Wanalyzer-out-of-bounds): Add description of
4160         text art.
4161         (fanalyzer-debug-text-art): New.
4163 2023-06-22  David Malcolm  <dmalcolm@redhat.com>
4165         * Makefile.in (OBJS-libcommon): Add text-art/box-drawing.o,
4166         text-art/canvas.o, text-art/ruler.o, text-art/selftests.o,
4167         text-art/style.o, text-art/styled-string.o, text-art/table.o,
4168         text-art/theme.o, and text-art/widget.o.
4169         * color-macros.h (COLOR_FG_BRIGHT_BLACK): New.
4170         (COLOR_FG_BRIGHT_RED): New.
4171         (COLOR_FG_BRIGHT_GREEN): New.
4172         (COLOR_FG_BRIGHT_YELLOW): New.
4173         (COLOR_FG_BRIGHT_BLUE): New.
4174         (COLOR_FG_BRIGHT_MAGENTA): New.
4175         (COLOR_FG_BRIGHT_CYAN): New.
4176         (COLOR_FG_BRIGHT_WHITE): New.
4177         (COLOR_BG_BRIGHT_BLACK): New.
4178         (COLOR_BG_BRIGHT_RED): New.
4179         (COLOR_BG_BRIGHT_GREEN): New.
4180         (COLOR_BG_BRIGHT_YELLOW): New.
4181         (COLOR_BG_BRIGHT_BLUE): New.
4182         (COLOR_BG_BRIGHT_MAGENTA): New.
4183         (COLOR_BG_BRIGHT_CYAN): New.
4184         (COLOR_BG_BRIGHT_WHITE): New.
4185         * common.opt (fdiagnostics-text-art-charset=): New option.
4186         (diagnostic-text-art.h): New SourceInclude.
4187         (diagnostic_text_art_charset) New Enum and EnumValues.
4188         * configure: Regenerate.
4189         * configure.ac (gccdepdir): Add text-art to loop.
4190         * diagnostic-diagram.h: New file.
4191         * diagnostic-format-json.cc (json_emit_diagram): New.
4192         (diagnostic_output_format_init_json): Wire it up to
4193         context->m_diagrams.m_emission_cb.
4194         * diagnostic-format-sarif.cc: Include "diagnostic-diagram.h" and
4195         "text-art/canvas.h".
4196         (sarif_result::on_nested_diagnostic): Move code to...
4197         (sarif_result::add_related_location): ...this new function.
4198         (sarif_result::on_diagram): New.
4199         (sarif_builder::emit_diagram): New.
4200         (sarif_builder::make_message_object_for_diagram): New.
4201         (sarif_emit_diagram): New.
4202         (diagnostic_output_format_init_sarif): Set
4203         context->m_diagrams.m_emission_cb to sarif_emit_diagram.
4204         * diagnostic-text-art.h: New file.
4205         * diagnostic.cc: Include "diagnostic-text-art.h",
4206         "diagnostic-diagram.h", and "text-art/theme.h".
4207         (diagnostic_initialize): Initialize context->m_diagrams and
4208         call diagnostics_text_art_charset_init.
4209         (diagnostic_finish): Clean up context->m_diagrams.m_theme.
4210         (diagnostic_emit_diagram): New.
4211         (diagnostics_text_art_charset_init): New.
4212         * diagnostic.h (text_art::theme): New forward decl.
4213         (class diagnostic_diagram): Likewise.
4214         (diagnostic_context::m_diagrams): New field.
4215         (diagnostic_emit_diagram): New decl.
4216         * doc/invoke.texi (Diagnostic Message Formatting Options): Add
4217         -fdiagnostics-text-art-charset=.
4218         (-fdiagnostics-plain-output): Add
4219         -fdiagnostics-text-art-charset=none.
4220         * gcc.cc: Include "diagnostic-text-art.h".
4221         (driver_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
4222         * opts-common.cc (decode_cmdline_options_to_array): Add
4223         "-fdiagnostics-text-art-charset=none" to expanded_args for
4224         -fdiagnostics-plain-output.
4225         * opts.cc: Include "diagnostic-text-art.h".
4226         (common_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
4227         * pretty-print.cc (pp_unicode_character): New.
4228         * pretty-print.h (pp_unicode_character): New decl.
4229         * selftest-run-tests.cc: Include "text-art/selftests.h".
4230         (selftest::run_tests): Call text_art_tests.
4231         * text-art/box-drawing-chars.inc: New file, generated by
4232         contrib/unicode/gen-box-drawing-chars.py.
4233         * text-art/box-drawing.cc: New file.
4234         * text-art/box-drawing.h: New file.
4235         * text-art/canvas.cc: New file.
4236         * text-art/canvas.h: New file.
4237         * text-art/ruler.cc: New file.
4238         * text-art/ruler.h: New file.
4239         * text-art/selftests.cc: New file.
4240         * text-art/selftests.h: New file.
4241         * text-art/style.cc: New file.
4242         * text-art/styled-string.cc: New file.
4243         * text-art/table.cc: New file.
4244         * text-art/table.h: New file.
4245         * text-art/theme.cc: New file.
4246         * text-art/theme.h: New file.
4247         * text-art/types.h: New file.
4248         * text-art/widget.cc: New file.
4249         * text-art/widget.h: New file.
4251 2023-06-21  Uros Bizjak  <ubizjak@gmail.com>
4253         * function.h (emit_initial_value_sets):
4254         Change return type from int to void.
4255         (aggregate_value_p): Change return type from int to bool.
4256         (prologue_contains): Ditto.
4257         (epilogue_contains): Ditto.
4258         (prologue_epilogue_contains): Ditto.
4259         * function.cc (temp_slot): Make "in_use" variable bool.
4260         (make_slot_available): Update for changed "in_use" variable.
4261         (assign_stack_temp_for_type): Ditto.
4262         (emit_initial_value_sets): Change return type from int to void
4263         and update function body accordingly.
4264         (instantiate_virtual_regs): Ditto.
4265         (rest_of_handle_thread_prologue_and_epilogue): Ditto.
4266         (safe_insn_predicate): Change return type from int to bool.
4267         (aggregate_value_p): Change return type from int to bool
4268         and update function body accordingly.
4269         (prologue_contains): Change return type from int to bool.
4270         (prologue_epilogue_contains): Ditto.
4272 2023-06-21  Alexander Monakov  <amonakov@ispras.ru>
4274         * common.opt (fp_contract_mode) [on]: Remove fallback.
4275         * config/sh/sh.md (*fmasf4): Correct flag_fp_contract_mode test.
4276         * doc/invoke.texi (-ffp-contract): Update.
4277         * trans-mem.cc (diagnose_tm_1): Skip internal function calls.
4279 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4281         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
4282         Add alternatives to prefer to avoid same input and output Z register.
4283         (mask_gather_load<mode><v_int_container>): Likewise.
4284         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
4285         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
4286         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
4287         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
4288         Likewise.
4289         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
4290         Likewise.
4291         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4292         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
4293         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4294         <SVE_2BHSI:mode>_sxtw): Likewise.
4295         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4296         <SVE_2BHSI:mode>_uxtw): Likewise.
4297         (@aarch64_ldff1_gather<mode>): Likewise.
4298         (@aarch64_ldff1_gather<mode>): Likewise.
4299         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
4300         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
4301         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
4302         <VNx4_NARROW:mode>): Likewise.
4303         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4304         <VNx2_NARROW:mode>): Likewise.
4305         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4306         <VNx2_NARROW:mode>_sxtw): Likewise.
4307         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4308         <VNx2_NARROW:mode>_uxtw): Likewise.
4309         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
4310         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
4311         <SVE_PARTIAL_I:mode>): Likewise.
4313 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4315         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
4316         Convert to compact alternatives syntax.
4317         (mask_gather_load<mode><v_int_container>): Likewise.
4318         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
4319         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
4320         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
4321         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
4322         Likewise.
4323         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
4324         Likewise.
4325         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4326         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
4327         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4328         <SVE_2BHSI:mode>_sxtw): Likewise.
4329         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4330         <SVE_2BHSI:mode>_uxtw): Likewise.
4331         (@aarch64_ldff1_gather<mode>): Likewise.
4332         (@aarch64_ldff1_gather<mode>): Likewise.
4333         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
4334         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
4335         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
4336         <VNx4_NARROW:mode>): Likewise.
4337         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4338         <VNx2_NARROW:mode>): Likewise.
4339         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4340         <VNx2_NARROW:mode>_sxtw): Likewise.
4341         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4342         <VNx2_NARROW:mode>_uxtw): Likewise.
4343         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
4344         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
4345         <SVE_PARTIAL_I:mode>): Likewise.
4347 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4349         Revert:
4350         2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4352         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
4353         Convert to compact alternatives syntax.
4354         (mask_gather_load<mode><v_int_container>): Likewise.
4355         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
4356         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
4357         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
4358         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
4359         Likewise.
4360         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
4361         Likewise.
4362         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4363         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
4364         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4365         <SVE_2BHSI:mode>_sxtw): Likewise.
4366         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4367         <SVE_2BHSI:mode>_uxtw): Likewise.
4368         (@aarch64_ldff1_gather<mode>): Likewise.
4369         (@aarch64_ldff1_gather<mode>): Likewise.
4370         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
4371         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
4372         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
4373         <VNx4_NARROW:mode>): Likewise.
4374         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4375         <VNx2_NARROW:mode>): Likewise.
4376         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4377         <VNx2_NARROW:mode>_sxtw): Likewise.
4378         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4379         <VNx2_NARROW:mode>_uxtw): Likewise.
4380         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
4381         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
4382         <SVE_PARTIAL_I:mode>): Likewise.
4384 2023-06-21  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
4386         * optabs-query.cc (can_vec_mask_load_store_p): Move to optabs-tree.cc.
4387         (get_len_load_store_mode): Ditto.
4388         * optabs-query.h (can_vec_mask_load_store_p): Move to optabs-tree.h.
4389         (get_len_load_store_mode): Ditto.
4390         * optabs-tree.cc (can_vec_mask_load_store_p): New function.
4391         (get_len_load_store_mode): Ditto.
4392         * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
4393         (get_len_load_store_mode): Ditto.
4394         * tree-if-conv.cc: include optabs-tree instead of optabs-query
4396 2023-06-21  Richard Biener  <rguenther@suse.de>
4398         * tree-ssa-loop-ivopts.cc (add_iv_candidate_for_use): Use
4399         split_constant_offset for the POINTER_PLUS_EXPR case.
4401 2023-06-21  Richard Biener  <rguenther@suse.de>
4403         * tree-ssa-loop-ivopts.cc (record_group_use): Use
4404         split_constant_offset.
4406 2023-06-21  Richard Biener  <rguenther@suse.de>
4408         * tree-loop-distribution.cc (classify_builtin_st): Use
4409         split_constant_offset.
4410         * tree-ssa-loop-ivopts.h (strip_offset): Remove.
4411         * tree-ssa-loop-ivopts.cc (strip_offset): Make static.
4413 2023-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4415         * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
4416         Convert to compact alternatives syntax.
4417         (mask_gather_load<mode><v_int_container>): Likewise.
4418         (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
4419         (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
4420         (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
4421         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
4422         Likewise.
4423         (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
4424         Likewise.
4425         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4426         <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
4427         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4428         <SVE_2BHSI:mode>_sxtw): Likewise.
4429         (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4430         <SVE_2BHSI:mode>_uxtw): Likewise.
4431         (@aarch64_ldff1_gather<mode>): Likewise.
4432         (@aarch64_ldff1_gather<mode>): Likewise.
4433         (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
4434         (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
4435         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
4436         <VNx4_NARROW:mode>): Likewise.
4437         (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4438         <VNx2_NARROW:mode>): Likewise.
4439         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4440         <VNx2_NARROW:mode>_sxtw): Likewise.
4441         (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4442         <VNx2_NARROW:mode>_uxtw): Likewise.
4443         * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
4444         (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
4445         <SVE_PARTIAL_I:mode>): Likewise.
4447 2023-06-21  Tamar Christina  <tamar.christina@arm.com>
4449         PR other/110329
4450         * doc/md.texi: Replace backslashchar.
4452 2023-06-21  Richard Biener  <rguenther@suse.de>
4454         * config/i386/i386.cc (ix86_vector_costs::finish_cost):
4455         Overload.  For masked main loops make sure the vectorization
4456         factor isn't more than double the number of iterations.
4458 2023-06-21  Jan Beulich  <jbeulich@suse.com>
4460         * config/i386/i386-expand.cc (ix86_expand_copysign): Request
4461         value duplication by ix86_build_signbit_mask() when AVX512F and
4462         not HFmode.
4463         * config/i386/sse.md (*<avx512>_vternlog<mode>_all): Convert to
4464         2-alternative form. Adjust "mode" attribute. Add "enabled"
4465         attribute.
4466         (*<avx512>_vpternlog<mode>_1): Also permit when TARGET_AVX512F
4467         && !TARGET_PREFER_AVX256.
4468         (*<avx512>_vpternlog<mode>_2): Likewise.
4469         (*<avx512>_vpternlog<mode>_3): Likewise.
4471 2023-06-21  liuhongt  <hongtao.liu@intel.com>
4473         PR target/110018
4474         * tree-vect-stmts.cc (vectorizable_conversion): Use
4475         intermiediate integer type for float_expr/fix_trunc_expr when
4476         direct optab is not existed.
4478 2023-06-20  Tamar Christina  <tamar.christina@arm.com>
4480         PR bootstrap/110324
4481         * gensupport.cc (convert_syntax): Explicitly check for RTX code.
4483 2023-06-20  Richard Sandiford  <richard.sandiford@arm.com>
4485         * config/aarch64/aarch64.md (stack_tie): Hard-code the first
4486         register operand to the stack pointer.  Require the second register
4487         operand to have the number specified in a separate const_int operand.
4488         * config/aarch64/aarch64.cc (aarch64_emit_stack_tie): New function.
4489         (aarch64_allocate_and_probe_stack_space): Use it.
4490         (aarch64_expand_prologue, aarch64_expand_epilogue): Likewise.
4491         (aarch64_expand_epilogue): Likewise.
4493 2023-06-20  Jakub Jelinek  <jakub@redhat.com>
4495         PR middle-end/79173
4496         * tree-ssa-math-opts.cc (match_uaddc_usubc): Remember lhs of
4497         IMAGPART_EXPR of arg2/arg3 and use that as arg3 if it has the right
4498         type.
4500 2023-06-20  Uros Bizjak  <ubizjak@gmail.com>
4502         * calls.h (setjmp_call_p): Change return type from int to bool.
4503         * calls.cc (struct arg_data): Change "pass_on_stack" to bool.
4504         (store_one_arg): Change return type from int to bool
4505         and adjust function body accordingly.  Change "sibcall_failure"
4506         variable to bool.
4507         (finalize_must_preallocate): Ditto.  Change *must_preallocate pointer
4508         argument  to bool.  Change "partial_seen" variable to bool.
4509         (load_register_parameters):  Change *sibcall_failure
4510         pointer argument to bool.
4511         (check_sibcall_argument_overlap_1): Change return type from int to bool
4512         and adjust function body accordingly.
4513         (check_sibcall_argument_overlap):  Ditto.  Change
4514         "mark_stored_args_map" argument to bool.
4515         (emit_call_1): Change "already_popped" variable to bool.
4516         (setjmp_call_p): Change return type from int to bool
4517         and adjust function body accordingly.
4518         (initialize_argument_information): Change *must_preallocate
4519         pointer argument to bool.
4520         (expand_call): Change "pcc_struct_value", "must_preallocate"
4521         and "sibcall_failure" variables to bool.
4522         (emit_library_call_value_1): Change "pcc_struct_value"
4523         variable to bool.
4525 2023-06-20  Martin Jambor  <mjambor@suse.cz>
4527         PR ipa/110276
4528         * ipa-sra.cc (struct caller_issues): New field there_is_one.
4529         (check_for_caller_issues): Set it.
4530         (check_all_callers_for_issues): Check it.
4532 2023-06-20  Martin Jambor  <mjambor@suse.cz>
4534         * ipa-prop.h (ipa_uid_to_idx_map_elt): New type.
4535         (struct ipcp_transformation): Rearrange members according to
4536         C++ class coding convention, add m_uid_to_idx,
4537         get_param_index and maybe_create_parm_idx_map.
4538         * ipa-cp.cc (ipcp_transformation::get_param_index): New function.
4539         (compare_uids): Likewise.
4540         (ipcp_transformation::maype_create_parm_idx_map): Likewise.
4541         * ipa-prop.cc (ipcp_get_parm_bits): Use get_param_index.
4542         (ipcp_update_bits): Accept TS as a parameter, assume it is not NULL.
4543         (ipcp_update_vr): Likewise.
4544         (ipcp_transform_function): Call, maybe_create_parm_idx_map of TS, bail
4545         out quickly if empty, pass it to ipcp_update_bits and ipcp_update_vr.
4547 2023-06-20  Carl Love  <cel@us.ibm.com>
4549         * config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin):
4550         Rename CODE_FOR_xsxsigqp_tf to CODE_FOR_xsxsigqp_tf_ti.
4551         Rename CODE_FOR_xsxsigqp_kf to CODE_FOR_xsxsigqp_kf_ti.
4552         Rename CCDE_FOR_xsxexpqp_tf to CODE_FOR_xsxexpqp_tf_di.
4553         Rename CODE_FOR_xsxexpqp_kf to CODE_FOR_xsxexpqp_kf_di.
4554         (CODE_FOR_xsxexpqp_kf_v2di, CODE_FOR_xsxsigqp_kf_v1ti,
4555         CODE_FOR_xsiexpqp_kf_v2di): Add case statements.
4556         * config/rs6000/rs6000-builtins.def
4557         (__builtin_vsx_scalar_extract_exp_to_vec,
4558         __builtin_vsx_scalar_extract_sig_to_vec,
4559         __builtin_vsx_scalar_insert_exp_vqp): Add new builtin definitions.
4560         Rename xsxexpqp_kf, xsxsigqp_kf, xsiexpqp_kf to xsexpqp_kf_di,
4561         xsxsigqp_kf_ti, xsiexpqp_kf_di respectively.
4562         * config/rs6000/rs6000-c.cc (altivec_resolve_overloaded_builtin):
4563         Update case RS6000_OVLD_VEC_VSIE to handle MODE_VECTOR_INT for new
4564         overloaded instance. Update comments.
4565         * config/rs6000/rs6000-overload.def
4566         (__builtin_vec_scalar_insert_exp): Add new overload definition with
4567         vector arguments.
4568         (scalar_extract_exp_to_vec, scalar_extract_sig_to_vec): New
4569         overloaded definitions.
4570         * config/rs6000/vsx.md (V2DI_DI): New mode iterator.
4571         (DI_to_TI): New mode attribute.
4572         Rename xsxexpqp_<mode> to sxexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
4573         Rename xsxsigqp_<mode> to xsxsigqp_<IEEE128:mode>_<VEC_TI:mode>.
4574         Rename xsiexpqp_<mode> to xsiexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
4575         * doc/extend.texi (scalar_extract_exp_to_vec,
4576         scalar_extract_sig_to_vec): Add documentation for new builtins.
4577         (scalar_insert_exp): Add new overloaded builtin definition.
4579 2023-06-20  Li Xu  <xuli1@eswincomputing.com>
4581         * config/riscv/riscv.cc (riscv_regmode_natural_size): set the natural
4582         size of vector mask mode to one rvv register.
4584 2023-06-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
4586         * config/riscv/riscv-v.cc (expand_const_vector): Optimize codegen.
4588 2023-06-20  Lehua Ding  <lehua.ding@rivai.ai>
4590         * config/riscv/riscv.cc (riscv_arg_has_vector): Add default
4591         switch handler.
4593 2023-06-20  Richard Biener  <rguenther@suse.de>
4595         * tree-ssa-dse.cc (dse_classify_store): When we found
4596         no defs and the basic-block with the original definition
4597         ends in __builtin_unreachable[_trap] the store is dead.
4599 2023-06-20  Richard Biener  <rguenther@suse.de>
4601         * tree-ssa-phiprop.cc (phiprop_insert_phi): For simple loads
4602         keep the virtual SSA form up-to-date.
4604 2023-06-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4606         * config/aarch64/aarch64-simd.md (*aarch64_addp_same_reg<mode>):
4607         New define_insn_and_split.
4609 2023-06-20  Tamar Christina  <tamar.christina@arm.com>
4611         * config/aarch64/aarch64.md (*mov<mode>_aarch64): Drop test comment.
4613 2023-06-20  Jan Beulich  <jbeulich@suse.com>
4615         * config/i386/sse.md (vec_dupv2di): Correct %vmovddup input
4616         constraint. Add new AVX512F alternative.
4618 2023-06-20  Richard Biener  <rguenther@suse.de>
4620         PR debug/110295
4621         * dwarf2out.cc (process_scope_var): Continue processing
4622         the decl after setting a parent in case the existing DIE
4623         was in limbo.
4625 2023-06-20  Lehua Ding  <lehua.ding@rivai.ai>
4627         * config/riscv/riscv.cc (riscv_scalable_vector_type_p): Delete.
4628         (riscv_arg_has_vector): Simplify.
4629         (riscv_pass_in_vector_p): Adjust warning message.
4631 2023-06-19  Jin Ma  <jinma@linux.alibaba.com>
4633         * config/riscv/riscv.cc (riscv_compute_frame_info): Allocate frame for FCSR.
4634         (riscv_for_each_saved_reg): Save and restore FCSR in interrupt functions.
4635         * config/riscv/riscv.md (riscv_frcsr): New patterns.
4636         (riscv_fscsr): Likewise.
4638 2023-06-19  Toru Kisuki  <tkisuki@tachyum.com>
4640         PR rtl-optimization/110305
4641         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
4642         Handle HONOR_SNANS for x + 0.0.
4644 2023-06-19  Jan Hubicka  <jh@suse.cz>
4646         PR tree-optimization/109811
4647         PR tree-optimization/109849
4648         * passes.def: Add phiprop to early optimization passes.
4649         * tree-ssa-phiprop.cc: Allow clonning.
4651 2023-06-19  Tamar Christina  <tamar.christina@arm.com>
4653         * config/aarch64/aarch64.md (arches): Add nosimd.
4654         (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Rewrite to
4655         compact syntax.
4657 2023-06-19  Tamar Christina  <tamar.christina@arm.com>
4658             Omar Tahir  <Omar.Tahir2@arm.com>
4660         * gensupport.cc (class conlist, add_constraints, add_attributes,
4661         skip_spaces, expect_char, preprocess_compact_syntax,
4662         parse_section_layout, parse_section, convert_syntax): New.
4663         (process_rtx): Check for conversion.
4664         * genoutput.cc (process_template): Check for unresolved iterators.
4665         (class data): Add compact_syntax_p.
4666         (gen_insn): Use it.
4667         * gensupport.h (compact_syntax): New.
4668         (hash-set.h): Include.
4669         * doc/md.texi: Document it.
4671 2023-06-19  Uros Bizjak  <ubizjak@gmail.com>
4673         * recog.h (check_asm_operands): Change return type from int to bool.
4674         (insn_invalid_p): Ditto.
4675         (verify_changes): Ditto.
4676         (apply_change_group): Ditto.
4677         (constrain_operands): Ditto.
4678         (constrain_operands_cached): Ditto.
4679         (validate_replace_rtx_subexp): Ditto.
4680         (validate_replace_rtx): Ditto.
4681         (validate_replace_rtx_part): Ditto.
4682         (validate_replace_rtx_part_nosimplify): Ditto.
4683         (added_clobbers_hard_reg_p): Ditto.
4684         (peep2_regno_dead_p): Ditto.
4685         (peep2_reg_dead_p): Ditto.
4686         (store_data_bypass_p): Ditto.
4687         (if_test_bypass_p): Ditto.
4688         * rtl.h (split_all_insns_noflow): Change
4689         return type from unsigned int to void.
4690         * genemit.cc (output_added_clobbers_hard_reg_p): Change return type
4691         of generated added_clobbers_hard_reg_p from int to bool and adjust
4692         function body accordingly.  Change "used" variable type from
4693         int to bool.
4694         * recog.cc (check_asm_operands): Change return type
4695         from int to bool and adjust function body accordingly.
4696         (insn_invalid_p): Ditto.  Change "is_asm" variable to bool.
4697         (verify_changes): Change return type from int to bool.
4698         (apply_change_group): Change return type from int to bool
4699         and adjust function body accordingly.
4700         (validate_replace_rtx_subexp): Change return type from int to bool.
4701         (validate_replace_rtx): Ditto.
4702         (validate_replace_rtx_part): Ditto.
4703         (validate_replace_rtx_part_nosimplify): Ditto.
4704         (constrain_operands_cached): Ditto.
4705         (constrain_operands): Ditto.  Change "lose" and "win"
4706         variables type from int to bool.
4707         (split_all_insns_noflow): Change return type from unsigned int
4708         to void and adjust function body accordingly.
4709         (peep2_regno_dead_p): Change return type from int to bool.
4710         (peep2_reg_dead_p): Ditto.
4711         (peep2_find_free_register): Change "success"
4712         variable type from int to bool
4713         (store_data_bypass_p_1): Change return type from int to bool.
4714         (store_data_bypass_p): Ditto.
4716 2023-06-19  Li Xu  <xuli1@eswincomputing.com>
4718         * config/riscv/vector-iterators.md: zvfh/zvfhmin depends on the
4719         Zve32f extension.
4721 2023-06-19  Pan Li  <pan2.li@intel.com>
4723         PR target/110299
4724         * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
4725         modes.
4726         * config/riscv/vector-iterators.md: Remove VWLMUL1, VWLMUL1_ZVE64,
4727         VWLMUL1_ZVE32, VI_ZVE64, VI_ZVE32, VWI, VWI_ZVE64, VWI_ZVE32,
4728         VF_ZVE63 and VF_ZVE32.
4729         * config/riscv/vector.md
4730         (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Removed.
4731         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
4732         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>): Ditto.
4733         (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
4734         (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
4735         (@pred_widen_reduc_plus<v_su><VQI:mode><VHI_LMUL1:mode>): New pattern.
4736         (@pred_widen_reduc_plus<v_su><VHI:mode><VSI_LMUL1:mode>): Ditto.
4737         (@pred_widen_reduc_plus<v_su><VSI:mode><VDI_LMUL1:mode>): Ditto.
4738         (@pred_widen_reduc_plus<order><VHF:mode><VSF_LMUL1:mode>): Ditto.
4739         (@pred_widen_reduc_plus<order><VSF:mode><VDF_LMUL1:mode>): Ditto.
4741 2023-06-19  Pan Li  <pan2.li@intel.com>
4743         PR target/110277
4744         * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
4745         ret_mode.
4746         * config/riscv/vector-iterators.md: Add VHF, VSF, VDF,
4747         VHF_LMUL1, VSF_LMUL1, VDF_LMUL1, and remove unused attr.
4748         * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): Removed.
4749         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
4750         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
4751         (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
4752         (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
4753         (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
4754         (@pred_reduc_<reduc><VHF:mode><VHF_LMUL1:mode>): New pattern.
4755         (@pred_reduc_<reduc><VSF:mode><VSF_LMUL1:mode>): Ditto.
4756         (@pred_reduc_<reduc><VDF:mode><VDF_LMUL1:mode>): Ditto.
4757         (@pred_reduc_plus<order><VHF:mode><VHF_LMUL1:mode>): Ditto.
4758         (@pred_reduc_plus<order><VSF:mode><VSF_LMUL1:mode>): Ditto.
4759         (@pred_reduc_plus<order><VDF:mode><VDF_LMUL1:mode>): Ditto.
4761 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
4763         * config/gcn/gcn.cc (gcn_expand_divmod_libfunc): New function.
4764         (gcn_init_libfuncs): Add div and mod functions for all modes.
4765         Add placeholders for divmod functions.
4766         (TARGET_EXPAND_DIVMOD_LIBFUNC): Define.
4768 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
4770         * tree-vect-generic.cc: Include optabs-libfuncs.h.
4771         (get_compute_type): Check optab_libfunc.
4772         * tree-vect-stmts.cc: Include optabs-libfuncs.h.
4773         (vectorizable_operation): Check optab_libfunc.
4775 2023-06-19  Andrew Stubbs  <ams@codesourcery.com>
4777         * config/gcn/gcn-protos.h (vgpr_4reg_mode_p): New function.
4778         * config/gcn/gcn-valu.md (V_4REG, V_4REG_ALT): New iterators.
4779         (V_MOV, V_MOV_ALT): Likewise.
4780         (scalar_mode, SCALAR_MODE): Add TImode.
4781         (vnsi, VnSI, vndi, VnDI): Likewise.
4782         (vec_merge, vec_merge_with_clobber, vec_merge_with_vcc): Use V_MOV.
4783         (mov<mode>, mov<mode>_unspec): Use V_MOV.
4784         (*mov<mode>_4reg): New insn.
4785         (mov<mode>_exec): New 4reg variant.
4786         (mov<mode>_sgprbase): Likewise.
4787         (reload_in<mode>, reload_out<mode>): Use V_MOV.
4788         (vec_set<mode>): Likewise.
4789         (vec_duplicate<mode><exec>): New 4reg variant.
4790         (vec_extract<mode><scalar_mode>): Likewise.
4791         (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
4792         (vec_extract<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
4793         (vec_extract<V_4REG:mode><V_4REG_ALT:mode>_nop): New 4reg variant.
4794         (fold_extract_last_<mode>): Use V_MOV.
4795         (vec_init<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
4796         (vec_init<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
4797         (gather_load<mode><vnsi>, gather<mode>_expr<exec>,
4798         gather<mode>_insn_1offset<exec>, gather<mode>_insn_1offset_ds<exec>,
4799         gather<mode>_insn_2offsets<exec>): Use V_MOV.
4800         (scatter_store<mode><vnsi>, scatter<mode>_expr<exec_scatter>,
4801         scatter<mode>_insn_1offset<exec_scatter>,
4802         scatter<mode>_insn_1offset_ds<exec_scatter>,
4803         scatter<mode>_insn_2offsets<exec_scatter>): Likewise.
4804         (maskload<mode>di, maskstore<mode>di, mask_gather_load<mode><vnsi>,
4805         mask_scatter_store<mode><vnsi>): Likewise.
4806         * config/gcn/gcn.cc (gcn_class_max_nregs): Use vgpr_4reg_mode_p.
4807         (gcn_hard_regno_mode_ok): Likewise.
4808         (GEN_VNM): Add TImode support.
4809         (USE_TI): New macro. Separate TImode operations from non-TImode ones.
4810         (gcn_vector_mode_supported_p): Add V64TImode, V32TImode, V16TImode,
4811         V8TImode, and V2TImode.
4812         (print_operand):  Add 'J' and 'K' print codes.
4814 2023-06-19  Richard Biener  <rguenther@suse.de>
4816         PR tree-optimization/110298
4817         * tree-ssa-loop-ivcanon.cc (tree_unroll_loops_completely):
4818         Clear number of iterations info before cleaning up the CFG.
4820 2023-06-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4822         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
4823         Simplify vec_concat of lowpart subreg and high part vec_select.
4825 2023-06-19  Tobias Burnus  <tobias@codesourcery.com>
4827         * doc/invoke.texi (-foffload-options): Remove '-O3' from the examples.
4829 2023-06-19  Richard Sandiford  <richard.sandiford@arm.com>
4831         * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
4832         Handle null niters_skip.
4834 2023-06-19  Richard Biener  <rguenther@suse.de>
4836         * config/aarch64/aarch64.cc
4837         (aarch64_vector_costs::analyze_loop_vinfo): Fix reference
4838         to LOOP_VINFO_MASKS.
4840 2023-06-19  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
4842         PR target/105523
4843         * common/config/avr/avr-common.cc: Remove setting
4844         of OPT_fdelete_null_pointer_checks.
4845         * config/avr/avr.cc (avr_option_override): Clear
4846         flag_delete_null_pointer_checks if zero_address_valid.
4847         (avr_addr_space_zero_address_valid): New function.
4848         (TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): Provide target
4849         hook.
4851 2023-06-19  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
4852             Robin Dapp  <rdapp.gcc@gmail.com>
4854         * doc/md.texi: Add len_mask{load,store}.
4855         * genopinit.cc (main): Ditto.
4856         (CMP_NAME): Ditto.
4857         * internal-fn.cc (len_maskload_direct): Ditto.
4858         (len_maskstore_direct): Ditto.
4859         (expand_call_mem_ref): Ditto.
4860         (expand_partial_load_optab_fn): Ditto.
4861         (expand_len_maskload_optab_fn): Ditto.
4862         (expand_partial_store_optab_fn): Ditto.
4863         (expand_len_maskstore_optab_fn): Ditto.
4864         (direct_len_maskload_optab_supported_p): Ditto.
4865         (direct_len_maskstore_optab_supported_p): Ditto.
4866         * internal-fn.def (LEN_MASK_LOAD): Ditto.
4867         (LEN_MASK_STORE): Ditto.
4868         * optabs.def (OPTAB_CD): Ditto.
4870 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
4872         * config/riscv/autovec.md (<optab><mode>2): Add unop expanders.
4874 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
4876         * config/riscv/autovec.md (<optab><mode>3): Implement binop
4877         expander.
4878         * config/riscv/riscv-protos.h (emit_vlmax_fp_insn): Declare.
4879         (enum vxrm_field_enum): Rename this...
4880         (enum fixed_point_rounding_mode): ...to this.
4881         (enum frm_field_enum): Rename this...
4882         (enum floating_point_rounding_mode): ...to this.
4883         * config/riscv/riscv-v.cc (emit_vlmax_fp_insn): New function
4884         * config/riscv/riscv.cc (riscv_const_insns): Clarify const
4885         vector handling.
4886         (riscv_libgcc_floating_mode_supported_p): Adjust comment.
4887         (riscv_excess_precision): Do not convert to float for ZVFH.
4888         * config/riscv/vector-iterators.md: Add VF_AUTO iterator.
4890 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
4892         * config/riscv/vector-iterators.md: Add VI_QH iterator.
4893         * config/riscv/autovec-opt.md
4894         (@pred_extract_first_sextdi<mode>): New vmv.x.s pattern
4895         that includes sign extension.
4896         (@pred_extract_first_sextsi<mode>): Dito for SImode.
4898 2023-06-19  Robin Dapp  <rdapp@ventanamicro.com>
4900         * config/riscv/autovec.md (vec_set<mode>): Implement.
4901         (vec_extract<mode><vel>): Implement.
4902         * config/riscv/riscv-protos.h (enum insn_type): Add slide insn.
4903         (emit_vlmax_slide_insn): Declare.
4904         (emit_nonvlmax_slide_tu_insn): Declare.
4905         (emit_scalar_move_insn): Export.
4906         (emit_nonvlmax_integer_move_insn): Export.
4907         * config/riscv/riscv-v.cc (emit_vlmax_slide_insn): New function.
4908         (emit_nonvlmax_slide_tu_insn): New function.
4909         (emit_vlmax_masked_mu_insn): No change.
4910         (emit_vlmax_integer_move_insn): Export.
4912 2023-06-19  Richard Biener  <rguenther@suse.de>
4914         * tree-vectorizer.h (enum vect_partial_vector_style): New.
4915         (_loop_vec_info::partial_vector_style): Likewise.
4916         (LOOP_VINFO_PARTIAL_VECTORS_STYLE): Likewise.
4917         (rgroup_controls::compare_type): Add.
4918         (vec_loop_masks): Change from a typedef to auto_vec<>
4919         to a structure.
4920         * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
4921         Adjust.  Convert niters_skip to compare_type.
4922         (vect_set_loop_condition_partial_vectors_avx512): New function
4923         implementing the AVX512 partial vector codegen.
4924         (vect_set_loop_condition): Dispatch to the correct
4925         vect_set_loop_condition_partial_vectors_* function based on
4926         LOOP_VINFO_PARTIAL_VECTORS_STYLE.
4927         (vect_prepare_for_masked_peels): Compute LOOP_VINFO_MASK_SKIP_NITERS
4928         in the original niter type.
4929         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Initialize
4930         partial_vector_style.
4931         (can_produce_all_loop_masks_p): Adjust.
4932         (vect_verify_full_masking): Produce the rgroup_controls vector
4933         here.  Set LOOP_VINFO_PARTIAL_VECTORS_STYLE on success.
4934         (vect_verify_full_masking_avx512): New function implementing
4935         verification of AVX512 style masking.
4936         (vect_verify_loop_lens): Set LOOP_VINFO_PARTIAL_VECTORS_STYLE.
4937         (vect_analyze_loop_2): Also try AVX512 style masking.
4938         Adjust condition.
4939         (vect_estimate_min_profitable_iters): Implement AVX512 style
4940         mask producing cost.
4941         (vect_record_loop_mask): Do not build the rgroup_controls
4942         vector here but record masks in a hash-set.
4943         (vect_get_loop_mask): Implement AVX512 style mask query,
4944         complementing the existing while_ult style.
4946 2023-06-19  Richard Biener  <rguenther@suse.de>
4948         * tree-vectorizer.h (vect_get_loop_mask): Add loop_vec_info
4949         argument.
4950         * tree-vect-loop.cc (vect_get_loop_mask): Likewise.
4951         (vectorize_fold_left_reduction): Adjust.
4952         (vect_transform_reduction): Likewise.
4953         (vectorizable_live_operation): Likewise.
4954         * tree-vect-stmts.cc (vectorizable_call): Likewise.
4955         (vectorizable_operation): Likewise.
4956         (vectorizable_store): Likewise.
4957         (vectorizable_load): Likewise.
4958         (vectorizable_condition): Likewise.
4960 2023-06-19  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
4962         PR target/110086
4963         * config/avr/avr.opt (mgas-isr-prologues, mmain-is-OS_task):
4964         Add Optimization option property.
4966 2023-06-19  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
4968         * config/xtensa/xtensa.cc (xtensa_constantsynth_2insn):
4969         Add new pattern for the abovementioned case.
4971 2023-06-19  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
4973         * config/xtensa/xtensa.cc
4974         (TARGET_MEMORY_MOVE_COST, xtensa_memory_move_cost): Remove.
4976 2023-06-19  Jiufu Guo  <guojiufu@linux.ibm.com>
4978         * config/rs6000/rs6000.cc (TARGET_CONST_ANCHOR): New define.
4980 2023-06-19  Jiufu Guo  <guojiufu@linux.ibm.com>
4982         * cse.cc (try_const_anchors): Check SCALAR_INT_MODE.
4984 2023-06-19  liuhongt  <hongtao.liu@intel.com>
4986         PR target/110235
4987         * config/i386/sse.md (<sse2_avx2>_packsswb<mask_name>):
4988         Substitute with ..
4989         (sse2_packsswb<mask_name>): .. this, ..
4990         (avx2_packsswb<mask_name>): .. this and ..
4991         (avx512bw_packsswb<mask_name>): .. this.
4992         (<sse2_avx2>_packssdw<mask_name>): Substitute with ..
4993         (sse2_packssdw<mask_name>): .. this, ..
4994         (avx2_packssdw<mask_name>): .. this and ..
4995         (avx512bw_packssdw<mask_name>): .. this.
4997 2023-06-19  liuhongt  <hongtao.liu@intel.com>
4999         PR target/110235
5000         * config/i386/i386-expand.cc (ix86_split_mmx_pack): Use
5001         UNSPEC_US_TRUNCATE instead of original us_truncate for
5002         packusdw/packuswb.
5003         * config/i386/mmx.md (mmx_pack<s_trunsuffix>swb): Substitute
5004         with ..
5005         (mmx_packsswb): .. this and ..
5006         (mmx_packuswb): .. this.
5007         (mmx_packusdw): Use UNSPEC_US_TRUNCATE instead of original
5008         us_truncate.
5009         (s_trunsuffix): Removed code iterator.
5010         (any_s_truncate): Ditto.
5011         * config/i386/sse.md (<sse2_avx2>_packuswb<mask_name>): Use
5012         UNSPEC_US_TRUNCATE instead of original us_truncate.
5013         (<sse4_1_avx2>_packusdw<mask_name>): Ditto.
5014         * config/i386/i386.md (UNSPEC_US_TRUNCATE): New unspec_c_enum.
5016 2023-06-18  Pan Li  <pan2.li@intel.com>
5018         * config/riscv/riscv-vector-builtins-bases.cc: Fix one typo.
5020 2023-06-18  Uros Bizjak  <ubizjak@gmail.com>
5022         * rtl.h (*rtx_equal_p_callback_function):
5023         Change return type from int to bool.
5024         (rtx_equal_p): Ditto.
5025         (*hash_rtx_callback_function): Ditto.
5026         * rtl.cc (rtx_equal_p): Change return type from int to bool
5027         and adjust function body accordingly.
5028         * early-remat.cc (scratch_equal): Ditto.
5029         * sel-sched-ir.cc (skip_unspecs_callback): Ditto.
5030         (hash_with_unspec_callback): Ditto.
5032 2023-06-18  Jeff Law  <jlaw@ventanamicro.com>
5034         * config/arc/arc.md (movqi_insn): Allow certain constants to
5035         be stored into memory in the pattern's condition.
5036         (movsf_insn): Similarly.
5038 2023-06-18  Honza  <jh@ryzen3.suse.cz>
5040         PR tree-optimization/109849
5041         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Add new parameter
5042         ES; handle ipa_predicate::not_sra_candidate.
5043         (evaluate_properties_for_edge): Pass es to
5044         evaluate_conditions_for_known_args.
5045         (ipa_fn_summary_t::duplicate): Handle sra candidates.
5046         (dump_ipa_call_summary): Dump points_to_possible_sra_candidate.
5047         (load_or_store_of_ptr_parameter): New function.
5048         (points_to_possible_sra_candidate_p): New function.
5049         (analyze_function_body): Initialize points_to_possible_sra_candidate;
5050         determine sra predicates.
5051         (estimate_ipcp_clone_size_and_time): Update call of
5052         evaluate_conditions_for_known_args.
5053         (remap_edge_params): Update points_to_possible_sra_candidate.
5054         (read_ipa_call_summary): Stream points_to_possible_sra_candidate
5055         (write_ipa_call_summary): Likewise.
5056         * ipa-predicate.cc (ipa_predicate::add_clause): Handle not_sra_candidate.
5057         (dump_condition): Dump it.
5058         * ipa-predicate.h (struct inline_param_summary): Add
5059         points_to_possible_sra_candidate.
5061 2023-06-18  Roger Sayle  <roger@nextmovesoftware.com>
5063         * config/i386/i386-expand.cc (ix86_expand_carry): New helper
5064         function for setting the carry flag.
5065         (ix86_expand_builtin) <handlecarry>: Use it here.
5066         * config/i386/i386-protos.h (ix86_expand_carry): Prototype here.
5067         * config/i386/i386.md (uaddc<mode>5): Use ix86_expand_carry.
5068         (usubc<mode>5): Likewise.
5070 2023-06-18  Roger Sayle  <roger@nextmovesoftware.com>
5072         * config/i386/i386.md (*concat<mode><dwi>3_1): Use QImode
5073         for the immediate constant shift count.
5074         (*concat<mode><dwi>3_2): Likewise.
5075         (*concat<mode><dwi>3_3): Likewise.
5076         (*concat<mode><dwi>3_4): Likewise.
5077         (*concat<mode><dwi>3_5): Likewise.
5078         (*concat<mode><dwi>3_6): Likewise.
5080 2023-06-18  Uros Bizjak  <ubizjak@gmail.com>
5082         * cse.cc (hash_rtx_cb): Rename to hash_rtx.
5083         (hash_rtx): Remove.
5084         * early-remat.cc (remat_candidate_hasher::equal): Update
5085         to call rtx_equal_p with rtx_equal_p_callback_function argument.
5086         * rtl.cc (rtx_equal_p_cb): Rename to rtx_equal_p.
5087         (rtx_equal_p): Remove.
5088         * rtl.h (rtx_equal_p): Add rtx_equal_p_callback_function
5089         argument with NULL default value.
5090         (rtx_equal_p_cb): Remove function declaration.
5091         (hash_rtx_cb): Ditto.
5092         (hash_rtx): Add hash_rtx_callback_function argument
5093         with NULL default value.
5094         * sel-sched-ir.cc (free_nop_pool): Update function comment.
5095         (skip_unspecs_callback): Ditto.
5096         (vinsn_init): Update to call hash_rtx with
5097         hash_rtx_callback_function argument.
5098         (vinsn_equal_p): Ditto.
5100 2023-06-18  yulong  <shiyulong@iscas.ac.cn>
5102         * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
5103         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
5104         (ADJUST_ALIGNMENT): Ditto.
5105         (RVV_TUPLE_PARTIAL_MODES): Ditto.
5106         (ADJUST_NUNITS): Ditto.
5107         * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
5108         New types.
5109         (vfloat16mf4x3_t): Ditto.
5110         (vfloat16mf4x4_t): Ditto.
5111         (vfloat16mf4x5_t): Ditto.
5112         (vfloat16mf4x6_t): Ditto.
5113         (vfloat16mf4x7_t): Ditto.
5114         (vfloat16mf4x8_t): Ditto.
5115         (vfloat16mf2x2_t): Ditto.
5116         (vfloat16mf2x3_t): Ditto.
5117         (vfloat16mf2x4_t): Ditto.
5118         (vfloat16mf2x5_t): Ditto.
5119         (vfloat16mf2x6_t): Ditto.
5120         (vfloat16mf2x7_t): Ditto.
5121         (vfloat16mf2x8_t): Ditto.
5122         (vfloat16m1x2_t): Ditto.
5123         (vfloat16m1x3_t): Ditto.
5124         (vfloat16m1x4_t): Ditto.
5125         (vfloat16m1x5_t): Ditto.
5126         (vfloat16m1x6_t): Ditto.
5127         (vfloat16m1x7_t): Ditto.
5128         (vfloat16m1x8_t): Ditto.
5129         (vfloat16m2x2_t): Ditto.
5130         (vfloat16m2x3_t): Ditto.
5131         (vfloat16m2x4_t): Ditto.
5132         (vfloat16m4x2_t): Ditto.
5133         * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
5134         (vfloat16mf4x3_t): Ditto.
5135         (vfloat16mf4x4_t): Ditto.
5136         (vfloat16mf4x5_t): Ditto.
5137         (vfloat16mf4x6_t): Ditto.
5138         (vfloat16mf4x7_t): Ditto.
5139         (vfloat16mf4x8_t): Ditto.
5140         (vfloat16mf2x2_t): Ditto.
5141         (vfloat16mf2x3_t): Ditto.
5142         (vfloat16mf2x4_t): Ditto.
5143         (vfloat16mf2x5_t): Ditto.
5144         (vfloat16mf2x6_t): Ditto.
5145         (vfloat16mf2x7_t): Ditto.
5146         (vfloat16mf2x8_t): Ditto.
5147         (vfloat16m1x2_t): Ditto.
5148         (vfloat16m1x3_t): Ditto.
5149         (vfloat16m1x4_t): Ditto.
5150         (vfloat16m1x5_t): Ditto.
5151         (vfloat16m1x6_t): Ditto.
5152         (vfloat16m1x7_t): Ditto.
5153         (vfloat16m1x8_t): Ditto.
5154         (vfloat16m2x2_t): Ditto.
5155         (vfloat16m2x3_t): Ditto.
5156         (vfloat16m2x4_t): Ditto.
5157         (vfloat16m4x2_t): Ditto.
5158         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
5159         * config/riscv/riscv.md: New.
5160         * config/riscv/vector-iterators.md: New.
5162 2023-06-17  Roger Sayle  <roger@nextmovesoftware.com>
5164         * config/i386/i386-expand.cc (ix86_expand_move): Check that OP1 is
5165         CONST_WIDE_INT_P before calling ix86_convert_wide_int_to_broadcast.
5166         Generalize special case for converting TImode to V1TImode to handle
5167         all 128-bit vector conversions.
5169 2023-06-17  Costas Argyris  <costas.argyris@gmail.com>
5171         * gcc-ar.cc (main): Refactor to slightly reduce code
5172         duplication.  Avoid unnecessary elements in nargv.
5174 2023-06-16  Pan Li  <pan2.li@intel.com>
5176         PR target/110265
5177         * config/riscv/riscv-vector-builtins-bases.cc: Add ret_mode for
5178         integer reduction expand.
5179         * config/riscv/vector-iterators.md: Add VQI, VHI, VSI and VDI,
5180         and the LMUL1 attr respectively.
5181         * config/riscv/vector.md
5182         (@pred_reduc_<reduc><mode><vlmul1>): Removed.
5183         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Likewise.
5184         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Likewise.
5185         (@pred_reduc_<reduc><VQI:mode><VQI_LMUL1:mode>): New pattern.
5186         (@pred_reduc_<reduc><VHI:mode><VHI_LMUL1:mode>): Likewise.
5187         (@pred_reduc_<reduc><VSI:mode><VSI_LMUL1:mode>): Likewise.
5188         (@pred_reduc_<reduc><VDI:mode><VDI_LMUL1:mode>): Likewise.
5190 2023-06-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5192         PR target/110264
5193         * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Fix bug.
5195 2023-06-16  Jakub Jelinek  <jakub@redhat.com>
5197         PR middle-end/79173
5198         * builtin-types.def (BT_FN_UINT_UINT_UINT_UINT_UINTPTR,
5199         BT_FN_ULONG_ULONG_ULONG_ULONG_ULONGPTR,
5200         BT_FN_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONGPTR): New
5201         types.
5202         * builtins.def (BUILT_IN_ADDC, BUILT_IN_ADDCL, BUILT_IN_ADDCLL,
5203         BUILT_IN_SUBC, BUILT_IN_SUBCL, BUILT_IN_SUBCLL): New builtins.
5204         * builtins.cc (fold_builtin_addc_subc): New function.
5205         (fold_builtin_varargs): Handle BUILT_IN_{ADD,SUB}C{,L,LL}.
5206         * doc/extend.texi (__builtin_addc, __builtin_subc): Document.
5208 2023-06-16  Jakub Jelinek  <jakub@redhat.com>
5210         PR tree-optimization/110271
5211         * tree-ssa-math-opts.cc (math_opts_dom_walker::after_dom_children)
5212         <case PLUS_EXPR>: Ignore return value from match_arith_overflow,
5213         instead call match_uaddc_usubc only if gsi_stmt (gsi) is still stmt.
5215 2023-06-16  Martin Jambor  <mjambor@suse.cz>
5217         * configure: Regenerate.
5219 2023-06-16  Roger Sayle  <roger@nextmovesoftware.com>
5220             Uros Bizjak  <ubizjak@gmail.com>
5222         PR target/31985
5223         * config/i386/i386.md (*add<dwi>3_doubleword_concat): New
5224         define_insn_and_split combine *add<dwi>3_doubleword with
5225         a *concat<mode><dwi>3 for more efficient lowering after reload.
5227 2023-06-16  Vladimir N. Makarov  <vmakarov@redhat.com>
5229         * ira-lives.cc: Include except.h.
5230         (process_bb_node_lives): Ignore conflicts from cleanup exceptions
5231         when the pseudo does not live at the exception landing pad.
5233 2023-06-16  Alex Coplan  <alex.coplan@arm.com>
5235         * doc/invoke.texi: Document -Welaborated-enum-base.
5237 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5239         * config/aarch64/aarch64-simd-builtins.def (shrn2_n): Rename builtins to...
5240         (ushrn2_n): ... This.
5241         (sqshrn2_n): Rename builtins to...
5242         (ssqshrn2_n): ... This.
5243         (uqshrn2_n): Rename builtins to...
5244         (uqushrn2_n): ... This.
5245         * config/aarch64/arm_neon.h (vqshrn_high_n_s16): Adjust for the above.
5246         (vqshrn_high_n_s32): Likewise.
5247         (vqshrn_high_n_s64): Likewise.
5248         (vqshrn_high_n_u16): Likewise.
5249         (vqshrn_high_n_u32): Likewise.
5250         (vqshrn_high_n_u64): Likewise.
5251         (vshrn_high_n_s16): Likewise.
5252         (vshrn_high_n_s32): Likewise.
5253         (vshrn_high_n_s64): Likewise.
5254         (vshrn_high_n_u16): Likewise.
5255         (vshrn_high_n_u32): Likewise.
5256         (vshrn_high_n_u64): Likewise.
5257         * config/aarch64/aarch64-simd.md (aarch64_<shrn_op>shrn2_n<mode>_insn_le):
5258         Rename to...
5259         (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_le): ... This.
5260         Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
5261         (aarch64_<shrn_op>shrn2_n<mode>_insn_be): Rename to...
5262         (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_be): ... This.
5263         Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
5264         (aarch64_<shrn_op>shrn2_n<mode>): Rename to...
5265         (aarch64_<shrn_op><sra_op>shrn2_n<mode>): ... This.
5266         Update expander for the above.
5268 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5270         * config/aarch64/aarch64-simd-builtins.def (shrn2): Rename builtins to...
5271         (shrn2_n): ... This.
5272         (rshrn2): Rename builtins to...
5273         (rshrn2_n): ... This.
5274         * config/aarch64/arm_neon.h (vrshrn_high_n_s16): Adjust for the above.
5275         (vrshrn_high_n_s32): Likewise.
5276         (vrshrn_high_n_s64): Likewise.
5277         (vrshrn_high_n_u16): Likewise.
5278         (vrshrn_high_n_u32): Likewise.
5279         (vrshrn_high_n_u64): Likewise.
5280         (vshrn_high_n_s16): Likewise.
5281         (vshrn_high_n_s32): Likewise.
5282         (vshrn_high_n_s64): Likewise.
5283         (vshrn_high_n_u16): Likewise.
5284         (vshrn_high_n_u32): Likewise.
5285         (vshrn_high_n_u64): Likewise.
5286         * config/aarch64/aarch64-simd.md (*aarch64_<srn_op>shrn<mode>2_vect_le):
5287         Delete.
5288         (*aarch64_<srn_op>shrn<mode>2_vect_be): Likewise.
5289         (aarch64_shrn2<mode>_insn_le): Likewise.
5290         (aarch64_shrn2<mode>_insn_be): Likewise.
5291         (aarch64_shrn2<mode>): Likewise.
5292         (aarch64_rshrn2<mode>_insn_le): Likewise.
5293         (aarch64_rshrn2<mode>_insn_be): Likewise.
5294         (aarch64_rshrn2<mode>): Likewise.
5295         (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_le): Likewise.
5296         (aarch64_<shrn_op>shrn2_n<mode>_insn_le): New define_insn.
5297         (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_be): Delete.
5298         (aarch64_<shrn_op>shrn2_n<mode>_insn_be): New define_insn.
5299         (aarch64_<sur>q<r>shr<u>n2_n<mode>): Delete.
5300         (aarch64_<shrn_op>shrn2_n<mode>): New define_expand.
5301         (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): New define_insn.
5302         (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): New define_insn.
5303         (aarch64_<shrn_op>rshrn2_n<mode>): New define_expand.
5304         (aarch64_sqshrun2_n<mode>_insn_le): New define_insn.
5305         (aarch64_sqshrun2_n<mode>_insn_be): New define_insn.
5306         (aarch64_sqshrun2_n<mode>): New define_expand.
5307         (aarch64_sqrshrun2_n<mode>_insn_le): New define_insn.
5308         (aarch64_sqrshrun2_n<mode>_insn_be): New define_insn.
5309         (aarch64_sqrshrun2_n<mode>): New define_expand.
5310         * config/aarch64/iterators.md (UNSPEC_SQSHRUN, UNSPEC_SQRSHRUN,
5311         UNSPEC_SQSHRN, UNSPEC_UQSHRN, UNSPEC_SQRSHRN, UNSPEC_UQRSHRN):
5312         Delete unspec values.
5313         (VQSHRN_N): Delete int iterator.
5315 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5317         * config/aarch64/aarch64.h (AARCH64_VALID_SHRN_OP): Define.
5318         * config/aarch64/aarch64-simd.md
5319         (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): Rename to...
5320         (*aarch64_<shrn_op><shrn_s>shrn_n<mode>_insn<vczle><vczbe>): ... This.
5321         Use SHIFTRT iterator and add AARCH64_VALID_SHRN_OP to condition.
5322         * config/aarch64/iterators.md (shrn_s): New code attribute.
5324 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5326         * config/aarch64/aarch64-simd.md (aarch64_<sur>q<r>shr<u>n_n<mode>):
5327         Rename to...
5328         (aarch64_<shrn_op>shrn_n<mode>): ... This.  Reimplement with RTL codes.
5329         (*aarch64_<shrn_op>rshrn_n<mode>_insn): New define_insn.
5330         (aarch64_sqrshrun_n<mode>_insn): Likewise.
5331         (aarch64_sqshrun_n<mode>_insn): Likewise.
5332         (aarch64_<shrn_op>rshrn_n<mode>): New define_expand.
5333         (aarch64_sqshrun_n<mode>): Likewise.
5334         (aarch64_sqrshrun_n<mode>): Likewise.
5335         * config/aarch64/iterators.md (V2XWIDE): Add HI and SI modes.
5337 2023-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5339         * config/aarch64/aarch64-simd-builtins.def (shrn): Rename builtins to...
5340         (shrn_n): ... This.
5341         (rshrn): Rename builtins to...
5342         (rshrn_n): ... This.
5343         * config/aarch64/arm_neon.h (vshrn_n_s16): Adjust for the above.
5344         (vshrn_n_s32): Likewise.
5345         (vshrn_n_s64): Likewise.
5346         (vshrn_n_u16): Likewise.
5347         (vshrn_n_u32): Likewise.
5348         (vshrn_n_u64): Likewise.
5349         (vrshrn_n_s16): Likewise.
5350         (vrshrn_n_s32): Likewise.
5351         (vrshrn_n_s64): Likewise.
5352         (vrshrn_n_u16): Likewise.
5353         (vrshrn_n_u32): Likewise.
5354         (vrshrn_n_u64): Likewise.
5355         * config/aarch64/aarch64-simd.md
5356         (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): Delete.
5357         (aarch64_shrn<mode>): Likewise.
5358         (aarch64_rshrn<mode><vczle><vczbe>_insn): Likewise.
5359         (aarch64_rshrn<mode>): Likewise.
5360         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): Likewise.
5361         (aarch64_<sur>q<r>shr<u>n_n<mode>): Likewise.
5362         (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): New define_insn.
5363         (*aarch64_<shrn_op>rshrn_n<mode>_insn<vczle><vczbe>): Likewise.
5364         (*aarch64_sqshrun_n<mode>_insn<vczle><vczbe>): Likewise.
5365         (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
5366         (aarch64_<shrn_op>shrn_n<mode>): New define_expand.
5367         (aarch64_<shrn_op>rshrn_n<mode>): Likewise.
5368         (aarch64_sqshrun_n<mode>): Likewise.
5369         (aarch64_sqrshrun_n<mode>): Likewise.
5370         * config/aarch64/iterators.md (ALL_TRUNC): New code iterator.
5371         (TRUNCEXTEND): New code attribute.
5372         (TRUNC_SHIFT): Likewise.
5373         (shrn_op): Likewise.
5374         * config/aarch64/predicates.md (aarch64_simd_umax_quarter_mode):
5375         New predicate.
5377 2023-06-16  Pan Li  <pan2.li@intel.com>
5379         * config/riscv/riscv-vsetvl.cc
5380         (pass_vsetvl::global_eliminate_vsetvl_insn): Initialize var by NULL.
5382 2023-06-16  Richard Biener  <rguenther@suse.de>
5384         PR tree-optimization/110278
5385         * match.pd (uns < (typeof uns)(uns != 0) -> false): New.
5386         (x != (typeof x)(x == 0) -> true): Likewise.
5388 2023-06-16  Pali Rohár  <pali@kernel.org>
5390         * config/i386/mingw-w64.h (CPP_SPEC): Adjust for -mcrtdll=.
5391         (REAL_LIBGCC_SPEC): New define.
5392         * config/i386/mingw.opt: Add mcrtdll=
5393         * config/i386/mingw32.h (CPP_SPEC): Adjust for -mcrtdll=.
5394         (REAL_LIBGCC_SPEC): Adjust for -mcrtdll=.
5395         (STARTFILE_SPEC): Adjust for -mcrtdll=.
5396         * doc/invoke.texi: Add mcrtdll= documentation.
5398 2023-06-16  Simon Dardis  <simon.dardis@imgtec.com>
5400         * config/mips/mips.cc (enum mips_code_readable_setting):New enmu.
5401         (mips_handle_code_readable_attr):New static function.
5402         (mips_get_code_readable_attr):New static enum function.
5403         (mips_set_current_function):Set the code_readable mode.
5404         (mips_option_override):Same as above.
5405         * doc/extend.texi:Document code_readable.
5407 2023-06-16  Richard Biener  <rguenther@suse.de>
5409         PR tree-optimization/110269
5410         * fold-const.cc (fold_binary_loc): Merge x != 0 folding
5411         with tree_expr_nonzero_p ...
5412         * match.pd (cmp (convert? addr@0) integer_zerop): With this
5413         pattern.
5415 2023-06-15  Marek Polacek  <polacek@redhat.com>
5417         * Makefile.in: Set LD_PICFLAG.  Use it.  Set enable_host_pie.
5418         Remove NO_PIE_CFLAGS and NO_PIE_FLAG.  Pass LD_PICFLAG to
5419         ALL_LINKERFLAGS.  Use the "pic" build of libiberty if --enable-host-pie.
5420         * configure.ac (--enable-host-shared): Don't set PICFLAG here.
5421         (--enable-host-pie): New check.  Set PICFLAG and LD_PICFLAG after this
5422         check.
5423         * configure: Regenerate.
5424         * doc/install.texi: Document --enable-host-pie.
5426 2023-06-15  Manolis Tsamis  <manolis.tsamis@vrull.eu>
5428         * regcprop.cc (maybe_mode_change): Enable stack pointer
5429         propagation.
5431 2023-06-15  Andrew MacLeod  <amacleod@redhat.com>
5433         PR tree-optimization/110266
5434         * gimple-range-fold.cc (adjust_imagpart_expr): Check for integer
5435         complex type.
5436         (adjust_realpart_expr): Ditto.
5438 2023-06-15  Jan Beulich  <jbeulich@suse.com>
5440         * config/i386/sse.md (<avx512>_vec_dup<mode><mask_name>): Use
5441         vmovddup.
5443 2023-06-15  Jan Beulich  <jbeulich@suse.com>
5445         * config/i386/constraints.md: Mention k and r for B.
5447 2023-06-15  Lulu Cheng  <chenglulu@loongson.cn>
5448             Andrew Pinski  <apinski@marvell.com>
5450         PR target/110136
5451         * config/loongarch/loongarch.md: Modify the register constraints for template
5452         "jumptable" and "indirect_jump" from "r" to "e".
5454 2023-06-15  Xi Ruoyao  <xry111@xry111.site>
5456         * config/loongarch/loongarch-tune.h (loongarch_align): New
5457         struct.
5458         * config/loongarch/loongarch-def.h (loongarch_cpu_align): New
5459         array.
5460         * config/loongarch/loongarch-def.c (loongarch_cpu_align): Define
5461         the array.
5462         * config/loongarch/loongarch.cc
5463         (loongarch_option_override_internal): Set the value of
5464         -falign-functions= if -falign-functions is enabled but no value
5465         is given.  Likewise for -falign-labels=.
5467 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
5469         PR middle-end/79173
5470         * internal-fn.def (UADDC, USUBC): New internal functions.
5471         * internal-fn.cc (expand_UADDC, expand_USUBC): New functions.
5472         (commutative_ternary_fn_p): Return true also for IFN_UADDC.
5473         * optabs.def (uaddc5_optab, usubc5_optab): New optabs.
5474         * tree-ssa-math-opts.cc (uaddc_cast, uaddc_ne0, uaddc_is_cplxpart,
5475         match_uaddc_usubc): New functions.
5476         (math_opts_dom_walker::after_dom_children): Call match_uaddc_usubc
5477         for PLUS_EXPR, MINUS_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR unless
5478         other optimizations have been successful for those.
5479         * gimple-fold.cc (gimple_fold_call): Handle IFN_UADDC and IFN_USUBC.
5480         * fold-const-call.cc (fold_const_call): Likewise.
5481         * gimple-range-fold.cc (adjust_imagpart_expr): Likewise.
5482         * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Likewise.
5483         * doc/md.texi (uaddc<mode>5, usubc<mode>5): Document new named
5484         patterns.
5485         * config/i386/i386.md (uaddc<mode>5, usubc<mode>5): New
5486         define_expand patterns.
5487         (*setcc_qi_addqi3_cconly_overflow_1_<mode>, *setccc): Split
5488         into NOTE_INSN_DELETED note rather than nop instruction.
5489         (*setcc_qi_negqi_ccc_1_<mode>, *setcc_qi_negqi_ccc_2_<mode>):
5490         Likewise.
5492 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
5494         PR middle-end/79173
5495         * config/i386/i386.md (subborrow<mode>): Add alternative with
5496         memory destination and add for it define_peephole2
5497         TARGET_READ_MODIFY_WRITE/-Os patterns to prefer using memory
5498         destination in these patterns.
5500 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
5502         PR middle-end/79173
5503         * config/i386/i386.md (*sub<mode>_3, @add<mode>3_carry,
5504         addcarry<mode>, @sub<mode>3_carry, *add<mode>3_cc_overflow_1): Add
5505         define_peephole2 TARGET_READ_MODIFY_WRITE/-Os patterns to prefer
5506         using memory destination in these patterns.
5508 2023-06-15  Jakub Jelinek  <jakub@redhat.com>
5510         * gimple-fold.cc (gimple_fold_call): Move handling of arg0
5511         as well as arg1 INTEGER_CSTs for .UBSAN_CHECK_{ADD,SUB,MUL}
5512         and .{ADD,SUB,MUL}_OVERFLOW calls from here...
5513         * fold-const-call.cc (fold_const_call): ... here.
5515 2023-06-15  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
5517         * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>):
5518         Rename to <su>abd<mode>3.
5519         * config/aarch64/aarch64-sve.md (<su>abd<mode>_3): Rename
5520         to <su>abd<mode>3.
5522 2023-06-15  Oluwatamilore Adebayo  <oluwatamilore.adebayo@arm.com>
5524         * doc/md.texi (sabd, uabd): Document them.
5525         * internal-fn.def (ABD): Use new optab.
5526         * optabs.def (sabd_optab, uabd_optab): New optabs,
5527         * tree-vect-patterns.cc (vect_recog_absolute_difference):
5528         Recognize the following idiom abs (a - b).
5529         (vect_recog_sad_pattern): Refactor to use
5530         vect_recog_absolute_difference.
5531         (vect_recog_abd_pattern): Use patterns found by
5532         vect_recog_absolute_difference to build a new ABD
5533         internal call.
5535 2023-06-15  chenxiaolong  <chenxl04200420@163.com>
5537         * config/loongarch/loongarch.h (LARCH_CALL_RATIO): Modify the value
5538         of macro LARCH_CALL_RATIO on LoongArch to make it perform optimally.
5540 2023-06-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5542         * config/riscv/riscv-v.cc (shuffle_merge_patterns): New pattern.
5543         (expand_vec_perm_const_1): Add merge optmization.
5545 2023-06-15  Lehua Ding  <lehua.ding@rivai.ai>
5547         PR target/110119
5548         * config/riscv/riscv.cc (riscv_get_arg_info): Return NULL_RTX for vector mode
5549         (riscv_pass_by_reference): Return true for vector mode
5551 2023-06-15  Pan Li  <pan2.li@intel.com>
5553         * config/riscv/autovec-opt.md: Align the predictor sytle.
5554         * config/riscv/autovec.md: Ditto.
5556 2023-06-15  Pan Li  <pan2.li@intel.com>
5558         * config/riscv/riscv-v.cc (rvv_builder::get_merge_scalar_mask):
5559         Take elen instead of scalar BITS_PER_WORD.
5560         (expand_vector_init_merge_repeating_sequence): Use inner_bits_size
5561         instead of scaler BITS_PER_WORD.
5563 2023-06-14  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
5565         * config/moxie/uclinux.h (MFWRAP_SPEC): Remove
5567 2023-06-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5569         * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold):
5570         Fix signed comparison warning in loop from npats to enelts.
5572 2023-06-14  Thomas Schwinge  <thomas@codesourcery.com>
5574         * gcc.cc (driver_handle_option): Forward host '-lgfortran', '-lm'
5575         to offloading compilation.
5576         * config/gcn/mkoffload.cc (main): Adjust.
5577         * config/nvptx/mkoffload.cc (main): Likewise.
5578         * doc/invoke.texi (foffload-options): Update example.
5580 2023-06-14  liuhongt  <hongtao.liu@intel.com>
5582         PR target/110227
5583         * config/i386/sse.md (mov<mode>_internal>): Use x instead of v
5584         for alternative 2 since there's no evex version for vpcmpeqd
5585         ymm, ymm, ymm.
5587 2023-06-13  Jeff Law  <jlaw@ventanamicro.com>
5589         * gcc.cc (LINK_COMMAND_SPEC): Remove mudflap spec handling.
5591 2023-06-13  Jeff Law  <jlaw@ventanamicro.com>
5593         * config/sh/divtab.cc: Remove.
5595 2023-06-13  Jakub Jelinek  <jakub@redhat.com>
5597         * config/i386/i386.cc (standard_sse_constant_opcode): Remove
5598         superfluous spaces around \t for vpcmpeqd.
5600 2023-06-13  Roger Sayle  <roger@nextmovesoftware.com>
5602         * expr.cc (store_constructor) <case VECTOR_TYPE>: Don't bother
5603         clearing vectors with only a single element.  Set CLEARED if the
5604         vector was initialized to zero.
5606 2023-06-13  Lehua Ding  <lehua.ding@rivai.ai>
5608         * config/riscv/riscv-v.cc (struct mode_vtype_group): Remove duplicate
5609         #include.
5610         (ENTRY): Undef.
5611         (TUPLE_ENTRY): Undef.
5613 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5615         * config/riscv/riscv-v.cc (rvv_builder::single_step_npatterns_p): Add comment.
5616         (shuffle_generic_patterns): Ditto.
5617         (expand_vec_perm_const_1): Ditto.
5619 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5621         * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): Fix bug.
5622         (shuffle_decompress_patterns): Ditto.
5624 2023-06-13  Richard Biener  <rguenther@suse.de>
5626         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Free loop BBs.
5628 2023-06-13  Yanzhang Wang  <yanzhang.wang@intel.com>
5629             Kito Cheng  <kito.cheng@sifive.com>
5631         * config/riscv/riscv-protos.h (riscv_init_cumulative_args): Set
5632         warning flag if func is not builtin
5633         * config/riscv/riscv.cc
5634         (riscv_scalable_vector_type_p): Determine whether the type is scalable vector.
5635         (riscv_arg_has_vector): Determine whether the arg is vector type.
5636         (riscv_pass_in_vector_p): Check the vector type param is passed by value.
5637         (riscv_init_cumulative_args): The same as header.
5638         (riscv_get_arg_info): Add the checking.
5639         (riscv_function_value): Check the func return and set warning flag
5640         * config/riscv/riscv.h (INIT_CUMULATIVE_ARGS): Add a flag to
5641         determine whether warning psabi or not.
5643 2023-06-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5645         * config/arm/arm-opts.h (enum arm_tp_type): Remove TP_CP15.
5646         Add TP_TPIDRURW, TP_TPIDRURO, TP_TPIDRPRW values.
5647         * config/arm/arm-protos.h (arm_output_load_tpidr): Declare prototype.
5648         * config/arm/arm.cc (arm_option_reconfigure_globals): Replace TP_CP15
5649         with TP_TPIDRURO.
5650         (arm_output_load_tpidr): Define.
5651         * config/arm/arm.h (TARGET_HARD_TP): Define in terms of TARGET_SOFT_TP.
5652         * config/arm/arm.md (load_tp_hard): Call arm_output_load_tpidr to output
5653         assembly.
5654         (reload_tp_hard): Likewise.
5655         * config/arm/arm.opt (tpidrurw, tpidruro, tpidrprw): New values for
5656         arm_tp_type.
5657         * doc/invoke.texi (Arm Options, mtp): Document new values.
5659 2023-06-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5661         PR target/108779
5662         * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Add
5663         AARCH64_TPIDRRO_EL0 value.
5664         * config/aarch64/aarch64.cc (aarch64_output_load_tp): Define.
5665         * config/aarch64/aarch64.opt (tpidr_el0, tpidr_el1, tpidr_el2,
5666         tpidr_el3, tpidrro_el3): New accepted values to -mtp=.
5667         * doc/invoke.texi (AArch64 Options): Document new -mtp= options.
5669 2023-06-13  Alexandre Oliva  <oliva@adacore.com>
5671         * range-op-float.cc (frange_nextafter): Drop inline.
5672         (frelop_early_resolve): Add static.
5673         (frange_float): Likewise.
5675 2023-06-13  Richard Biener  <rguenther@suse.de>
5677         PR middle-end/110232
5678         * fold-const.cc (native_interpret_vector): Use TYPE_SIZE_UNIT
5679         to check whether the buffer covers the whole vector.
5681 2023-06-13  Richard Biener  <rguenther@suse.de>
5683         * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): For
5684         .MASK_LOAD and friends set the size of the access to unknown.
5686 2023-06-13  Tejas Belagod  <tbelagod@arm.com>
5688         PR target/96339
5689         * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold): Fold sve
5690         calls that have a constant input predicate vector.
5691         (svlast_impl::is_lasta): Query to check if intrinsic is svlasta.
5692         (svlast_impl::is_lastb): Query to check if intrinsic is svlastb.
5693         (svlast_impl::vect_all_same): Check if all vector elements are equal.
5695 2023-06-13  Andi Kleen  <ak@linux.intel.com>
5697         * config/i386/gcc-auto-profile: Regenerate.
5699 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5701         * config/riscv/vector-iterators.md: Fix requirement.
5703 2023-06-13  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5705         * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): New function.
5706         (shuffle_decompress_patterns): New function.
5707         (expand_vec_perm_const_1): Add decompress optimization.
5709 2023-06-12  Jeff Law  <jlaw@ventanamicro.com>
5711         PR rtl-optimization/101188
5712         * postreload.cc (reload_cse_move2add_invalidate): New function,
5713         extracted from...
5714         (reload_cse_move2add): Call reload_cse_move2add_invalidate.
5716 2023-06-12  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
5718         * config/aarch64/aarch64.cc (aarch64_expand_vector_init): Tweak condition
5719         if (n_var == n_elts && n_elts <= 16) to allow a single constant,
5720         and if maxv == 1, use constant element for duplicating into register.
5722 2023-06-12  Tobias Burnus  <tobias@codesourcery.com>
5724         * gimplify.cc (gimplify_adjust_omp_clauses_1): Use
5725         GOMP_MAP_FORCE_PRESENT for 'present alloc' implicit mapping.
5726         (gimplify_adjust_omp_clauses): Change
5727         GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC} to the equivalent
5728         GOMP_MAP_FORCE_PRESENT.
5729         * omp-low.cc (lower_omp_target): Remove handling of no-longer valid
5730         GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC}; update map kinds used for
5731         to/from clauses with present modifier.
5733 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5735         PR tree-optimization/110205
5736         * range-op-float.cc (range_operator::fold_range): Add default FII
5737         fold routine.
5738         * range-op-mixed.h (class operator_gt): Add missing final overrides.
5739         * range-op.cc (range_op_handler::fold_range): Add RO_FII case.
5740         (operator_lshift ::update_bitmask): Add final override.
5741         (operator_rshift ::update_bitmask): Add final override.
5742         * range-op.h (range_operator::fold_range): Add FII prototype.
5744 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5746         * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
5747         Use range_op_handler directly.
5748         * range-op.cc (range_op_handler::range_op_handler): Unsigned
5749         param instead of tree-code.
5750         (ptr_op_widen_plus_signed): Delete.
5751         (ptr_op_widen_plus_unsigned): Delete.
5752         (ptr_op_widen_mult_signed): Delete.
5753         (ptr_op_widen_mult_unsigned): Delete.
5754         (range_op_table::initialize_integral_ops): Add new opcodes.
5755         * range-op.h (range_op_handler): Use unsigned.
5756         (OP_WIDEN_MULT_SIGNED): New.
5757         (OP_WIDEN_MULT_UNSIGNED): New.
5758         (OP_WIDEN_PLUS_SIGNED): New.
5759         (OP_WIDEN_PLUS_UNSIGNED): New.
5760         (RANGE_OP_TABLE_SIZE): New.
5761         (range_op_table::operator []): Use unsigned.
5762         (range_op_table::set): Use unsigned.
5763         (m_range_tree): Make unsigned.
5764         (ptr_op_widen_mult_signed): Remove.
5765         (ptr_op_widen_mult_unsigned): Remove.
5766         (ptr_op_widen_plus_signed): Remove.
5767         (ptr_op_widen_plus_unsigned): Remove.
5769 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5771         * gimple-range-op.cc (gimple_range_op_handler): Set m_operator
5772         manually as there is no access to the default operator.
5773         (cfn_copysign::fold_range): Don't check for validity.
5774         (cfn_ubsan::fold_range): Ditto.
5775         (gimple_range_op_handler::maybe_builtin_call): Don't set to NULL.
5776         * range-op.cc (default_operator): New.
5777         (range_op_handler::range_op_handler): Use default_operator
5778         instead of NULL.
5779         (range_op_handler::operator bool): Move from header, compare
5780         against default operator.
5781         (range_op_handler::range_op): New.
5782         * range-op.h (range_op_handler::operator bool): Move.
5784 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5786         * range-op.cc (unified_table): Delete.
5787         (range_op_table operator_table): Instantiate.
5788         (range_op_table::range_op_table): Rename from unified_table.
5789         (range_op_handler::range_op_handler): Use range_op_table.
5790         * range-op.h (range_op_table::operator []): Inline.
5791         (range_op_table::set): Inline.
5793 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5795         * gimple-range-gori.cc (gori_compute::condexpr_adjust): Do not
5796         pass type.
5797         * gimple-range-op.cc (get_code): Rename from get_code_and_type
5798         and simplify.
5799         (gimple_range_op_handler::supported_p): No need for type.
5800         (gimple_range_op_handler::gimple_range_op_handler): Ditto.
5801         (cfn_copysign::fold_range): Ditto.
5802         (cfn_ubsan::fold_range): Ditto.
5803         * ipa-cp.cc (ipa_vr_operation_and_type_effects): Ditto.
5804         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Ditto.
5805         * range-op-float.cc (operator_plus::op1_range): Ditto.
5806         (operator_mult::op1_range): Ditto.
5807         (range_op_float_tests): Ditto.
5808         * range-op.cc (get_op_handler): Remove.
5809         (range_op_handler::set_op_handler): Remove.
5810         (operator_plus::op1_range): No need for type.
5811         (operator_minus::op1_range): Ditto.
5812         (operator_mult::op1_range): Ditto.
5813         (operator_exact_divide::op1_range): Ditto.
5814         (operator_cast::op1_range): Ditto.
5815         (perator_bitwise_not::fold_range): Ditto.
5816         (operator_negate::fold_range): Ditto.
5817         * range-op.h (range_op_handler::range_op_handler): Remove type param.
5818         (range_cast): No need for type.
5819         (range_op_table::operator[]): Check for enum_code >= 0.
5820         * tree-data-ref.cc (compute_distributive_range): No need for type.
5821         * tree-ssa-loop-unswitch.cc (unswitch_predicate): Ditto.
5822         * value-query.cc (range_query::get_tree_range): Ditto.
5823         * value-relation.cc (relation_oracle::validate_relation): Ditto.
5824         * vr-values.cc (range_of_var_in_loop): Ditto.
5825         (simplify_using_ranges::fold_cond_with_ops): Ditto.
5827 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5829         * range-op-mixed.h (operator_max): Remove final.
5830         * range-op-ptr.cc (pointer_table::pointer_table): Remove MAX_EXPR.
5831         (pointer_table::pointer_table): Remove.
5832         (class hybrid_max_operator): New.
5833         (range_op_table::initialize_pointer_ops): Add hybrid_max_operator.
5834         * range-op.cc (pointer_tree_table): Remove.
5835         (unified_table::unified_table): Comment out MAX_EXPR.
5836         (get_op_handler): Remove check of pointer table.
5837         * range-op.h (class pointer_table): Remove.
5839 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5841         * range-op-mixed.h (operator_min): Remove final.
5842         * range-op-ptr.cc (pointer_table::pointer_table): Remove MIN_EXPR.
5843         (class hybrid_min_operator): New.
5844         (range_op_table::initialize_pointer_ops): Add hybrid_min_operator.
5845         * range-op.cc (unified_table::unified_table): Comment out MIN_EXPR.
5847 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5849         * range-op-mixed.h (operator_bitwise_or): Remove final.
5850         * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_IOR_EXPR.
5851         (class hybrid_or_operator): New.
5852         (range_op_table::initialize_pointer_ops): Add hybrid_or_operator.
5853         * range-op.cc (unified_table::unified_table): Comment out BIT_IOR_EXPR.
5855 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5857         * range-op-mixed.h (operator_bitwise_and): Remove final.
5858         * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_AND_EXPR.
5859         (class hybrid_and_operator): New.
5860         (range_op_table::initialize_pointer_ops): Add hybrid_and_operator.
5861         * range-op.cc (unified_table::unified_table): Comment out BIT_AND_EXPR.
5863 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5865         * Makefile.in (OBJS): Add range-op-ptr.o.
5866         * range-op-mixed.h (update_known_bitmask): Move prototype here.
5867         (minus_op1_op2_relation_effect): Move prototype here.
5868         (wi_includes_zero_p): Move function to here.
5869         (wi_zero_p): Ditto.
5870         * range-op.cc (update_known_bitmask): Remove static.
5871         (wi_includes_zero_p): Move to header.
5872         (wi_zero_p): Move to header.
5873         (minus_op1_op2_relation_effect): Remove static.
5874         (operator_pointer_diff): Move class and routines to range-op-ptr.cc.
5875         (pointer_plus_operator): Ditto.
5876         (pointer_min_max_operator): Ditto.
5877         (pointer_and_operator): Ditto.
5878         (pointer_or_operator): Ditto.
5879         (pointer_table): Ditto.
5880         (range_op_table::initialize_pointer_ops): Ditto.
5881         * range-op-ptr.cc: New.
5883 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5885         * range-op-mixed.h (class operator_max): Move from...
5886         * range-op.cc (unified_table::unified_table): Add MAX_EXPR.
5887         (get_op_handler): Remove the integral table.
5888         (class operator_max): Move from here.
5889         (integral_table::integral_table): Delete.
5890         * range-op.h (class integral_table): Delete.
5892 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5894         * range-op-mixed.h (class operator_min): Move from...
5895         * range-op.cc (unified_table::unified_table): Add MIN_EXPR.
5896         (class operator_min): Move from here.
5897         (integral_table::integral_table): Remove MIN_EXPR.
5899 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5901         * range-op-mixed.h (class operator_bitwise_or): Move from...
5902         * range-op.cc (unified_table::unified_table): Add BIT_IOR_EXPR.
5903         (class operator_bitwise_or): Move from here.
5904         (integral_table::integral_table): Remove BIT_IOR_EXPR.
5906 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5908         * range-op-mixed.h (class operator_bitwise_and): Move from...
5909         * range-op.cc (unified_table::unified_table): Add BIT_AND_EXPR.
5910         (get_op_handler): Check for a pointer table entry first.
5911         (class operator_bitwise_and): Move from here.
5912         (integral_table::integral_table): Remove BIT_AND_EXPR.
5914 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5916         * range-op-mixed.h (class operator_bitwise_xor): Move from...
5917         * range-op.cc (unified_table::unified_table): Add BIT_XOR_EXPR.
5918         (class operator_bitwise_xor): Move from here.
5919         (integral_table::integral_table): Remove BIT_XOR_EXPR.
5920         (pointer_table::pointer_table): Remove BIT_XOR_EXPR.
5922 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5924         * range-op-mixed.h (class operator_bitwise_not): Move from...
5925         * range-op.cc (unified_table::unified_table): Add BIT_NOT_EXPR.
5926         (class operator_bitwise_not): Move from here.
5927         (integral_table::integral_table): Remove BIT_NOT_EXPR.
5928         (pointer_table::pointer_table): Remove BIT_NOT_EXPR.
5930 2023-06-12  Andrew MacLeod  <amacleod@redhat.com>
5932         * range-op-mixed.h (class operator_addr_expr): Move from...
5933         * range-op.cc (unified_table::unified_table): Add ADDR_EXPR.
5934         (class operator_addr_expr): Move from here.
5935         (integral_table::integral_table): Remove ADDR_EXPR.
5936         (pointer_table::pointer_table): Remove ADDR_EXPR.
5938 2023-06-12  Pan Li  <pan2.li@intel.com>
5940         * config/riscv/riscv-vector-builtins-types.def
5941         (vfloat16m1_t): Add type to lmul1 ops.
5942         (vfloat16m2_t): Likewise.
5943         (vfloat16m4_t): Likewise.
5945 2023-06-12  Richard Biener  <rguenther@suse.de>
5947         * tree-ssa-alias.cc (call_may_clobber_ref_p_1): For
5948         .MASK_STORE and friend set the size of the access to
5949         unknown.
5951 2023-06-12  Tamar Christina  <tamar.christina@arm.com>
5953         * config.in: Regenerate.
5954         * configure: Regenerate.
5955         * configure.ac: Remove DEFAULT_MATCHPD_PARTITIONS.
5957 2023-06-12  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
5959         * config/riscv/autovec-opt.md
5960         (*v<any_shiftrt:optab><any_extend:optab>trunc<mode>): New pattern.
5961         (*<any_shiftrt:optab>trunc<mode>): Ditto.
5962         * config/riscv/autovec.md (<optab><mode>3): Change to
5963         define_insn_and_split.
5964         (v<optab><mode>3): Ditto.
5965         (trunc<mode><v_double_trunc>2): Ditto.
5967 2023-06-12  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5969         * simplify-rtx.cc (simplify_const_unary_operation):
5970         Handle US_TRUNCATE, SS_TRUNCATE.
5972 2023-06-12  Eric Botcazou  <ebotcazou@adacore.com>
5974         PR modula2/109952
5975         * doc/gm2.texi (Standard procedures): Fix Next link.
5977 2023-06-12  Tamar Christina  <tamar.christina@arm.com>
5979         * config.in: Regenerate.
5981 2023-06-12  Andre Vieira  <andre.simoesdiasvieira@arm.com>
5983         PR middle-end/110142
5984         * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Don't pass
5985         subtype to vect_widened_op_tree and remove subtype parameter, also
5986         remove superfluous overloaded function definition.
5987         (vect_recog_widen_plus_pattern): Remove subtype parameter and dont pass
5988         to call to vect_recog_widen_op_pattern.
5989         (vect_recog_widen_minus_pattern): Likewise.
5991 2023-06-12  liuhongt  <hongtao.liu@intel.com>
5993         * config/i386/sse.md (vec_pack<floatprefix>_float_<mode>): New expander.
5994         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
5995         (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
5996         (vec_unpacks_lo_<mode>): Ditto.
5997         (vec_unpacks_hi_<mode>): Ditto.
5998         (sse_movlhps_<mode>): New define_insn.
5999         (ssse3_palignr<mode>_perm): Extend to V_128H.
6000         (V_128H): New mode iterator.
6001         (ssepackPHmode): New mode attribute.
6002         (vunpck_extract_mode): Ditto.
6003         (vpckfloat_concat_mode): Extend to VxSI/VxSF for _Float16.
6004         (vpckfloat_temp_mode): Ditto.
6005         (vpckfloat_op_mode): Ditto.
6006         (vunpckfixt_mode): Extend to VxHF.
6007         (vunpckfixt_model): Ditto.
6008         (vunpckfixt_extract_mode): Ditto.
6010 2023-06-12  Richard Biener  <rguenther@suse.de>
6012         PR middle-end/110200
6013         * genmatch.cc (expr::gen_transform): Put braces around
6014         the if arm for the (convert ...) short-cut.
6016 2023-06-12  Kewen Lin  <linkw@linux.ibm.com>
6018         PR target/109932
6019         * config/rs6000/rs6000-builtins.def (__builtin_pack_vector_int128,
6020         __builtin_unpack_vector_int128): Move from stanza power7 to vsx.
6022 2023-06-12  Kewen Lin  <linkw@linux.ibm.com>
6024         PR target/110011
6025         * config/rs6000/rs6000.cc (output_toc): Use the mode of the 128-bit
6026         floating constant itself for real_to_target call.
6028 2023-06-12  Pan Li  <pan2.li@intel.com>
6030         * config/riscv/riscv-vector-builtins-types.def
6031         (vfloat16mf4_t): Add type to X2/X4/X8/X16/X32 vlmul ext ops.
6032         (vfloat16mf2_t): Ditto.
6033         (vfloat16m1_t): Ditto.
6034         (vfloat16m2_t): Ditto.
6035         (vfloat16m4_t): Ditto.
6037 2023-06-12  David Edelsohn  <dje.gcc@gmail.com>
6039         * config/rs6000/rs6000-logue.cc (rs6000_stack_info):
6040         Do not require a stack frame when debugging is enabled for AIX.
6042 2023-06-11  Georg-Johann Lay  <avr@gjlay.de>
6044         * config/avr/avr.md (adjust_len) [insv_notbit_0, insv_notbit_7]:
6045         Remove attribute values.
6046         (insv_notbit): New post-reload insn.
6047         (*insv.not-shiftrt_split, *insv.xor1-bit.0_split)
6048         (*insv.not-bit.0_split, *insv.not-bit.7_split)
6049         (*insv.xor-extract_split): Split to insv_notbit.
6050         (*insv.not-shiftrt, *insv.xor1-bit.0, *insv.not-bit.0, *insv.not-bit.7)
6051         (*insv.xor-extract): Remove post-reload insns.
6052         * config/avr/avr.cc (avr_out_insert_notbit) [bitno]: Remove parameter.
6053         (avr_adjust_insn_length): Adjust call of avr_out_insert_notbit.
6054         [ADJUST_LEN_INSV_NOTBIT_0, ADJUST_LEN_INSV_NOTBIT_7]: Remove cases.
6055         * config/avr/avr-protos.h (avr_out_insert_notbit): Adjust prototype.
6057 2023-06-11  Georg-Johann Lay  <avr@gjlay.de>
6059         PR target/109907
6060         * config/avr/avr.md (adjust_len) [extr, extr_not]: New elements.
6061         (MSB, SIZE): New mode attributes.
6062         (any_shift): New code iterator.
6063         (*lshr<mode>3_split, *lshr<mode>3, lshr<mode>3)
6064         (*lshr<mode>3_const_split): Add constraint alternative for
6065         the case of shift-offset = MSB.  Ditch "length" attribute.
6066         (extzv<mode): New. replaces extzv.  Adjust following patterns.
6067         Use avr_out_extr, avr_out_extr_not to print asm.
6068         (*extzv.subreg.<mode>, *extzv.<mode>.subreg, *extzv.xor)
6069         (*extzv<mode>.ge, *neg.ashiftrt<mode>.msb, *extzv.io.lsr7): New.
6070         * config/avr/constraints.md (C15, C23, C31, Yil): New
6071         * config/avr/predicates.md (reg_or_low_io_operand)
6072         (const7_operand, reg_or_low_io_operand)
6073         (const15_operand, const_0_to_15_operand)
6074         (const23_operand, const_0_to_23_operand)
6075         (const31_operand, const_0_to_31_operand): New.
6076         * config/avr/avr-protos.h (avr_out_extr, avr_out_extr_not): New.
6077         * config/avr/avr.cc (avr_out_extr, avr_out_extr_not): New funcs.
6078         (lshrqi3_out, lshrhi3_out, lshrpsi3_out, lshrsi3_out): Adjust
6079         MSB case to new insn constraint "r" for operands[1].
6080         (avr_adjust_insn_length) [ADJUST_LEN_EXTR_NOT, ADJUST_LEN_EXTR]:
6081         Handle these cases.
6082         (avr_rtx_costs_1): Adjust cost for a new pattern.
6084 2023-06-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6086         * config/riscv/riscv-vsetvl.cc (available_occurrence_p): Enhance user vsetvl optimization.
6087         (vector_insn_info::parse_insn): Add rtx_insn parse.
6088         (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance user vsetvl optimization.
6089         (get_first_vsetvl): New function.
6090         (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
6091         (pass_vsetvl::cleanup_insns): Remove it.
6092         (pass_vsetvl::ssa_post_optimization): New function.
6093         (has_no_uses): Ditto.
6094         (pass_vsetvl::propagate_avl): Remove it.
6095         (pass_vsetvl::df_post_optimization): New function.
6096         (pass_vsetvl::lazy_vsetvl): Rework Phase 5 && Phase 6.
6097         * config/riscv/riscv-vsetvl.h: Adapt declaration.
6099 2023-06-10  Aldy Hernandez  <aldyh@redhat.com>
6101         * ipa-cp.cc (ipcp_vr_lattice::init): Take type argument.
6102         (ipcp_vr_lattice::print): Call dump method.
6103         (ipcp_vr_lattice::meet_with): Adjust for m_vr being a
6104         Value_Range.
6105         (ipcp_vr_lattice::meet_with_1): Make argument a reference.
6106         (ipcp_vr_lattice::set_to_bottom): Set varying for an unsupported
6107         range.
6108         (initialize_node_lattices): Pass type when appropriate.
6109         (ipa_vr_operation_and_type_effects): Make type agnostic.
6110         (ipa_value_range_from_jfunc): Same.
6111         (propagate_vr_across_jump_function): Same.
6112         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
6113         (evaluate_properties_for_edge): Same.
6114         * ipa-prop.cc (ipa_vr::get_vrange): Same.
6115         (ipcp_update_vr): Same.
6116         * ipa-prop.h (ipa_value_range_from_jfunc): Same.
6117         (ipa_range_set_and_normalize): Same.
6119 2023-06-10  Georg-Johann Lay  <avr@gjlay.de>
6121         PR target/109650
6122         PR target/92729
6123         * config/avr/avr-passes.def (avr_pass_ifelse): Insert new pass.
6124         * config/avr/avr.cc (avr_pass_ifelse): New RTL pass.
6125         (avr_pass_data_ifelse): New pass_data for it.
6126         (make_avr_pass_ifelse, avr_redundant_compare, avr_cbranch_cost)
6127         (avr_canonicalize_comparison, avr_out_plus_set_ZN)
6128         (avr_out_cmp_ext): New functions.
6129         (compare_condtition): Make sure REG_CC dies in the branch insn.
6130         (avr_rtx_costs_1): Add computation of cbranch costs.
6131         (avr_adjust_insn_length) [ADJUST_LEN_ADD_SET_ZN, ADJUST_LEN_CMP_ZEXT]:
6132         [ADJUST_LEN_CMP_SEXT]Handle them.
6133         (TARGET_CANONICALIZE_COMPARISON): New define.
6134         (avr_simplify_comparison_p, compare_diff_p, avr_compare_pattern)
6135         (avr_reorg_remove_redundant_compare, avr_reorg): Remove functions.
6136         (TARGET_MACHINE_DEPENDENT_REORG): Remove define.
6137         * config/avr/avr-protos.h (avr_simplify_comparison_p): Remove proto.
6138         (make_avr_pass_ifelse, avr_out_plus_set_ZN, cc_reg_rtx)
6139         (avr_out_cmp_zext): New Protos
6140         * config/avr/avr.md (branch, difficult_branch): Don't split insns.
6141         (*cbranchhi.zero-extend.0", *cbranchhi.zero-extend.1")
6142         (*swapped_tst<mode>, *add.for.eqne.<mode>): New insns.
6143         (*cbranch<mode>4): Rename to cbranch<mode>4_insn.
6144         (define_peephole): Add dead_or_set_regno_p(insn,REG_CC) as needed.
6145         (define_deephole2): Add peep2_regno_dead_p(*,REG_CC) as needed.
6146         Add new RTL peepholes for decrement-and-branch and *swapped_tst<mode>.
6147         Rework signtest-and-branch peepholes for *sbrx_branch<mode>.
6148         (adjust_len) [add_set_ZN, cmp_zext]: New.
6149         (QIPSI): New mode iterator.
6150         (ALLs1, ALLs2, ALLs4, ALLs234): New mode iterators.
6151         (gelt): New code iterator.
6152         (gelt_eqne): New code attribute.
6153         (rvbranch, *rvbranch, difficult_rvbranch, *difficult_rvbranch)
6154         (branch_unspec, *negated_tst<mode>, *reversed_tst<mode>)
6155         (*cmpqi_sign_extend): Remove insns.
6156         (define_c_enum "unspec") [UNSPEC_IDENTITY]: Remove.
6157         * config/avr/avr-dimode.md (cbranch<mode>4): Canonicalize comparisons.
6158         * config/avr/predicates.md (scratch_or_d_register_operand): New.
6159         * config/avr/constraints.md (Yxx): New constraint.
6161 2023-06-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6163         * config/riscv/autovec.md (select_vl<mode>): New pattern.
6164         * config/riscv/riscv-protos.h (expand_select_vl): New function.
6165         * config/riscv/riscv-v.cc (expand_select_vl): Ditto.
6167 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
6169         * range-op-float.cc (foperator_mult_div_base): Delete.
6170         (foperator_mult_div_base::find_range): Make static local function.
6171         (foperator_mult): Remove.  Move prototypes to range-op-mixed.h
6172         (operator_mult::op1_range): Rename from foperator_mult.
6173         (operator_mult::op2_range): Ditto.
6174         (operator_mult::rv_fold): Ditto.
6175         (float_table::float_table): Remove MULT_EXPR.
6176         (class foperator_div): Inherit from range_operator.
6177         (float_table::float_table): Delete.
6178         * range-op-mixed.h (class operator_mult): Combined from integer
6179         and float files.
6180         * range-op.cc (float_tree_table): Delete.
6181         (op_mult): New object.
6182         (unified_table::unified_table): Add MULT_EXPR.
6183         (get_op_handler): Do not check float table any longer.
6184         (class cross_product_operator): Move to range-op-mixed.h.
6185         (class operator_mult): Move to range-op-mixed.h.
6186         (integral_table::integral_table): Remove MULT_EXPR.
6187         (pointer_table::pointer_table): Remove MULT_EXPR.
6188         * range-op.h (float_table): Remove.
6190 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
6192         * range-op-float.cc (foperator_negate): Remove.  Move prototypes
6193         to range-op-mixed.h
6194         (operator_negate::fold_range): Rename from foperator_negate.
6195         (operator_negate::op1_range): Ditto.
6196         (float_table::float_table): Remove NEGATE_EXPR.
6197         * range-op-mixed.h (class operator_negate): Combined from integer
6198         and float files.
6199         * range-op.cc (op_negate): New object.
6200         (unified_table::unified_table): Add NEGATE_EXPR.
6201         (class operator_negate): Move to range-op-mixed.h.
6202         (integral_table::integral_table): Remove NEGATE_EXPR.
6203         (pointer_table::pointer_table): Remove NEGATE_EXPR.
6205 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
6207         * range-op-float.cc (foperator_minus): Remove.  Move prototypes
6208         to range-op-mixed.h
6209         (operator_minus::fold_range): Rename from foperator_minus.
6210         (operator_minus::op1_range): Ditto.
6211         (operator_minus::op2_range): Ditto.
6212         (operator_minus::rv_fold): Ditto.
6213         (float_table::float_table): Remove MINUS_EXPR.
6214         * range-op-mixed.h (class operator_minus): Combined from integer
6215         and float files.
6216         * range-op.cc (op_minus): New object.
6217         (unified_table::unified_table): Add MINUS_EXPR.
6218         (class operator_minus): Move to range-op-mixed.h.
6219         (integral_table::integral_table): Remove MINUS_EXPR.
6220         (pointer_table::pointer_table): Remove MINUS_EXPR.
6222 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
6224         * range-op-float.cc (foperator_abs): Remove.  Move prototypes
6225         to range-op-mixed.h
6226         (operator_abs::fold_range): Rename from foperator_abs.
6227         (operator_abs::op1_range): Ditto.
6228         (float_table::float_table): Remove ABS_EXPR.
6229         * range-op-mixed.h (class operator_abs): Combined from integer
6230         and float files.
6231         * range-op.cc (op_abs): New object.
6232         (unified_table::unified_table): Add ABS_EXPR.
6233         (class operator_abs): Move to range-op-mixed.h.
6234         (integral_table::integral_table): Remove ABS_EXPR.
6235         (pointer_table::pointer_table): Remove ABS_EXPR.
6237 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
6239         * range-op-float.cc (foperator_plus): Remove.  Move prototypes
6240         to range-op-mixed.h
6241         (operator_plus::fold_range): Rename from foperator_plus.
6242         (operator_plus::op1_range): Ditto.
6243         (operator_plus::op2_range): Ditto.
6244         (operator_plus::rv_fold): Ditto.
6245         (float_table::float_table): Remove PLUS_EXPR.
6246         * range-op-mixed.h (class operator_plus): Combined from integer
6247         and float files.
6248         * range-op.cc (op_plus): New object.
6249         (unified_table::unified_table): Add PLUS_EXPR.
6250         (class operator_plus): Move to range-op-mixed.h.
6251         (integral_table::integral_table): Remove PLUS_EXPR.
6252         (pointer_table::pointer_table): Remove PLUS_EXPR.
6254 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
6256         * range-op-mixed.h (class operator_cast): Combined from integer
6257         and float files.
6258         * range-op.cc (op_cast): New object.
6259         (unified_table::unified_table): Add op_cast
6260         (class operator_cast): Move to range-op-mixed.h.
6261         (integral_table::integral_table): Remove op_cast
6262         (pointer_table::pointer_table): Remove op_cast.
6264 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
6266         * range-op-float.cc (operator_cst::fold_range): New.
6267         * range-op-mixed.h (class operator_cst): Move from integer file.
6268         * range-op.cc (op_cst): New object.
6269         (unified_table::unified_table): Add op_cst. Also use for REAL_CST.
6270         (class operator_cst): Move to range-op-mixed.h.
6271         (integral_table::integral_table): Remove op_cst.
6272         (pointer_table::pointer_table): Remove op_cst.
6274 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
6276         * range-op-float.cc (foperator_identity): Remove.  Move prototypes
6277         to range-op-mixed.h
6278         (operator_identity::fold_range): Rename from foperator_identity.
6279         (operator_identity::op1_range): Ditto.
6280         (float_table::float_table): Remove fop_identity.
6281         * range-op-mixed.h (class operator_identity): Combined from integer
6282         and float files.
6283         * range-op.cc (op_identity): New object.
6284         (unified_table::unified_table): Add op_identity.
6285         (class operator_identity): Move to range-op-mixed.h.
6286         (integral_table::integral_table): Remove identity.
6287         (pointer_table::pointer_table): Remove identity.
6289 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
6291         * range-op-float.cc (foperator_ge): Remove.  Move prototypes
6292         to range-op-mixed.h
6293         (operator_ge::fold_range): Rename from foperator_ge.
6294         (operator_ge::op1_range): Ditto.
6295         (float_table::float_table): Remove GE_EXPR.
6296         * range-op-mixed.h (class operator_ge): Combined from integer
6297         and float files.
6298         * range-op.cc (op_ge): New object.
6299         (unified_table::unified_table): Add GE_EXPR.
6300         (class operator_ge): Move to range-op-mixed.h.
6301         (ge_op1_op2_relation): Fold into
6302         operator_ge::op1_op2_relation.
6303         (integral_table::integral_table): Remove GE_EXPR.
6304         (pointer_table::pointer_table): Remove GE_EXPR.
6305         * range-op.h (ge_op1_op2_relation): Delete.
6307 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
6309         * range-op-float.cc (foperator_gt): Remove.  Move prototypes
6310         to range-op-mixed.h
6311         (operator_gt::fold_range): Rename from foperator_gt.
6312         (operator_gt::op1_range): Ditto.
6313         (float_table::float_table): Remove GT_EXPR.
6314         * range-op-mixed.h (class operator_gt): Combined from integer
6315         and float files.
6316         * range-op.cc (op_gt): New object.
6317         (unified_table::unified_table): Add GT_EXPR.
6318         (class operator_gt): Move to range-op-mixed.h.
6319         (gt_op1_op2_relation): Fold into
6320         operator_gt::op1_op2_relation.
6321         (integral_table::integral_table): Remove GT_EXPR.
6322         (pointer_table::pointer_table): Remove GT_EXPR.
6323         * range-op.h (gt_op1_op2_relation): Delete.
6325 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
6327         * range-op-float.cc (foperator_le): Remove.  Move prototypes
6328         to range-op-mixed.h
6329         (operator_le::fold_range): Rename from foperator_le.
6330         (operator_le::op1_range): Ditto.
6331         (float_table::float_table): Remove LE_EXPR.
6332         * range-op-mixed.h (class operator_le): Combined from integer
6333         and float files.
6334         * range-op.cc (op_le): New object.
6335         (unified_table::unified_table): Add LE_EXPR.
6336         (class operator_le): Move to range-op-mixed.h.
6337         (le_op1_op2_relation): Fold into
6338         operator_le::op1_op2_relation.
6339         (integral_table::integral_table): Remove LE_EXPR.
6340         (pointer_table::pointer_table): Remove LE_EXPR.
6341         * range-op.h (le_op1_op2_relation): Delete.
6343 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
6345         * range-op-float.cc (foperator_lt): Remove.  Move prototypes
6346         to range-op-mixed.h
6347         (operator_lt::fold_range): Rename from foperator_lt.
6348         (operator_lt::op1_range): Ditto.
6349         (float_table::float_table): Remove LT_EXPR.
6350         * range-op-mixed.h (class operator_lt): Combined from integer
6351         and float files.
6352         * range-op.cc (op_lt): New object.
6353         (unified_table::unified_table): Add LT_EXPR.
6354         (class operator_lt): Move to range-op-mixed.h.
6355         (lt_op1_op2_relation): Fold into
6356         operator_lt::op1_op2_relation.
6357         (integral_table::integral_table): Remove LT_EXPR.
6358         (pointer_table::pointer_table): Remove LT_EXPR.
6359         * range-op.h (lt_op1_op2_relation): Delete.
6361 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
6363         * range-op-float.cc (foperator_not_equal): Remove.  Move prototypes
6364         to range-op-mixed.h
6365         (operator_equal::fold_range): Rename from foperator_not_equal.
6366         (operator_equal::op1_range): Ditto.
6367         (float_table::float_table): Remove NE_EXPR.
6368         * range-op-mixed.h (class operator_not_equal): Combined from integer
6369         and float files.
6370         * range-op.cc (op_equal): New object.
6371         (unified_table::unified_table): Add NE_EXPR.
6372         (class operator_not_equal): Move to range-op-mixed.h.
6373         (not_equal_op1_op2_relation): Fold into
6374         operator_not_equal::op1_op2_relation.
6375         (integral_table::integral_table): Remove NE_EXPR.
6376         (pointer_table::pointer_table): Remove NE_EXPR.
6377         * range-op.h (not_equal_op1_op2_relation): Delete.
6379 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
6381         * range-op-float.cc (foperator_equal): Remove.  Move prototypes
6382         to range-op-mixed.h
6383         (operator_equal::fold_range): Rename from foperator_equal.
6384         (operator_equal::op1_range): Ditto.
6385         (float_table::float_table): Remove EQ_EXPR.
6386         * range-op-mixed.h (class operator_equal): Combined from integer
6387         and float files.
6388         * range-op.cc (op_equal): New object.
6389         (unified_table::unified_table): Add EQ_EXPR.
6390         (class operator_equal): Move to range-op-mixed.h.
6391         (equal_op1_op2_relation): Fold into
6392         operator_equal::op1_op2_relation.
6393         (integral_table::integral_table): Remove EQ_EXPR.
6394         (pointer_table::pointer_table): Remove EQ_EXPR.
6395         * range-op.h (equal_op1_op2_relation): Delete.
6397 2023-06-10  Andrew MacLeod  <amacleod@redhat.com>
6399         * range-op-float.cc (class float_table): Move to header.
6400         (float_table::float_table): Move float only operators to...
6401         (range_op_table::initialize_float_ops): Here.
6402         * range-op-mixed.h: New.
6403         * range-op.cc (integral_tree_table, pointer_tree_table): Moved
6404         to top of file.
6405         (float_tree_table): Moved from range-op-float.cc.
6406         (unified_tree_table): New.
6407         (unified_table::unified_table): New.  Call initialize routines.
6408         (get_op_handler): Check unified table first.
6409         (range_op_handler::range_op_handler): Handle no type constructor.
6410         (integral_table::integral_table): Move integral only operators to...
6411         (range_op_table::initialize_integral_ops): Here.
6412         (pointer_table::pointer_table): Move pointer only operators to...
6413         (range_op_table::initialize_pointer_ops): Here.
6414         * range-op.h (enum bool_range_state): Move to range-op-mixed.h.
6415         (get_bool_state): Ditto.
6416         (empty_range_varying): Ditto.
6417         (relop_early_resolve): Ditto.
6418         (class range_op_table): Add new init methods for range types.
6419         (class integral_table): Move declaration to here.
6420         (class pointer_table): Move declaration to here.
6421         (class float_table): Move declaration to here.
6423 2023-06-09  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
6424             Richard Sandiford <richard.sandiford@arm.com>
6425             Richard Biener  <rguenther@suse.de>
6427         * doc/md.texi: Add SELECT_VL support.
6428         * internal-fn.def (SELECT_VL): Ditto.
6429         * optabs.def (OPTAB_D): Ditto.
6430         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Ditto.
6431         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Ditto.
6432         * tree-vect-stmts.cc (get_select_vl_data_ref_ptr): Ditto.
6433         (vectorizable_store): Ditto.
6434         (vectorizable_load): Ditto.
6435         * tree-vectorizer.h (LOOP_VINFO_USING_SELECT_VL_P): Ditto.
6437 2023-06-09  Andrew MacLeod  <amacleod@redhat.com>
6439         PR ipa/109886
6440         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Check param
6441         type as well.
6443 2023-06-09  Andrew MacLeod  <amacleod@redhat.com>
6445         * range-op.cc (range_cast): Move to...
6446         * range-op.h (range_cast): Here and add generic a version.
6448 2023-06-09  Marek Polacek  <polacek@redhat.com>
6450         PR c/39589
6451         PR c++/96868
6452         * doc/invoke.texi: Clarify that -Wmissing-field-initializers doesn't
6453         warn about designated initializers in C only.
6455 2023-06-09  Andrew Pinski  <apinski@marvell.com>
6457         PR tree-optimization/97711
6458         PR tree-optimization/110155
6459         * match.pd ((zero_one == 0) ? y : z <op> y): Add plus to the op.
6460         ((zero_one != 0) ? z <op> y : y): Likewise.
6462 2023-06-09  Andrew Pinski  <apinski@marvell.com>
6464         * match.pd ((zero_one ==/!= 0) ? y : z <op> y): Use
6465         multiply rather than negation/bit_and.
6467 2023-06-09  Andrew Pinski  <apinski@marvell.com>
6469         * match.pd (`X & -Y -> X * Y`): Allow for truncation
6470         and the same type for unsigned types.
6472 2023-06-09  Andrew Pinski  <apinski@marvell.com>
6474         PR tree-optimization/110165
6475         PR tree-optimization/110166
6476         * match.pd (zero_one_valued_p): Don't accept
6477         signed 1-bit integers.
6479 2023-06-09  Richard Biener  <rguenther@suse.de>
6481         * match.pd (two conversions in a row): Use element_precision
6482         to DTRT for VECTOR_TYPE.
6484 2023-06-09  Pan Li  <pan2.li@intel.com>
6486         * config/riscv/riscv.md (enabled): Move to another place, and
6487         add fp_vector_disabled to the cond.
6488         (fp_vector_disabled): New attr defined for disabling fp.
6489         * config/riscv/vector-iterators.md: Fix V_WHOLE and V_FRACT.
6491 2023-06-09  Pan Li  <pan2.li@intel.com>
6493         * config/riscv/riscv-protos.h (enum frm_field_enum): Adjust
6494         literal to int.
6496 2023-06-09  liuhongt  <hongtao.liu@intel.com>
6498         PR target/110108
6499         * config/i386/i386.cc (ix86_gimple_fold_builtin): Explicitly
6500         view_convert_expr mask to signed type when folding pblendvb
6501         builtins.
6503 2023-06-09  liuhongt  <hongtao.liu@intel.com>
6505         PR target/110108
6506         * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
6507         _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} into gimple
6508         ABSU_EXPR + VCE, don't fold _mm_abs_{pi8,pi16,pi32} w/o
6509         TARGET_64BIT.
6510         * config/i386/i386-builtin.def: Replace CODE_FOR_nothing with
6511         real codename for __builtin_ia32_pabs{b,w,d}.
6513 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
6515         * gimple-range-op.cc
6516         (gimple_range_op_handler::gimple_range_op_handler): Adjust.
6517         (gimple_range_op_handler::maybe_builtin_call): Adjust.
6518         * gimple-range-op.h (operand1, operand2): Use m_operator.
6519         * range-op.cc (integral_table, pointer_table): Relocate.
6520         (get_op_handler): Rename from get_handler and handle all types.
6521         (range_op_handler::range_op_handler): Relocate.
6522         (range_op_handler::set_op_handler): Relocate and adjust.
6523         (range_op_handler::range_op_handler): Relocate.
6524         (dispatch_trio): New.
6525         (RO_III, RO_IFI, RO_IFF, RO_FFF, RO_FIF, RO_FII): New consts.
6526         (range_op_handler::dispatch_kind): New.
6527         (range_op_handler::fold_range): Relocate and Use new dispatch value.
6528         (range_op_handler::op1_range): Ditto.
6529         (range_op_handler::op2_range): Ditto.
6530         (range_op_handler::lhs_op1_relation): Ditto.
6531         (range_op_handler::lhs_op2_relation): Ditto.
6532         (range_op_handler::op1_op2_relation): Ditto.
6533         (range_op_handler::set_op_handler): Use m_operator member.
6534         * range-op.h (range_op_handler::operator bool): Use m_operator.
6535         (range_op_handler::dispatch_kind): New.
6536         (range_op_handler::m_valid): Delete.
6537         (range_op_handler::m_int): Delete
6538         (range_op_handler::m_float): Delete
6539         (range_op_handler::m_operator): New.
6540         (range_op_table::operator[]): Relocate from .cc file.
6541         (range_op_table::set): Ditto.
6542         * value-range.h (class vrange): Make range_op_handler a friend.
6544 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
6546         * gimple-range-op.cc (cfn_constant_float_p): Change base class.
6547         (cfn_pass_through_arg1): Adjust using statemenmt.
6548         (cfn_signbit): Change base class, adjust using statement.
6549         (cfn_copysign): Ditto.
6550         (cfn_sqrt): Ditto.
6551         (cfn_sincos): Ditto.
6552         * range-op-float.cc (fold_range): Change class to range_operator.
6553         (rv_fold): Ditto.
6554         (op1_range): Ditto
6555         (op2_range): Ditto
6556         (lhs_op1_relation): Ditto.
6557         (lhs_op2_relation): Ditto.
6558         (op1_op2_relation): Ditto.
6559         (foperator_*): Ditto.
6560         (class float_table): New.  Inherit from range_op_table.
6561         (floating_tree_table) Change to range_op_table pointer.
6562         (class floating_op_table): Delete.
6563         * range-op.cc (operator_equal): Adjust using statement.
6564         (operator_not_equal): Ditto.
6565         (operator_lt, operator_le, operator_gt, operator_ge): Ditto.
6566         (operator_minus, operator_cast): Ditto.
6567         (operator_bitwise_and, pointer_plus_operator): Ditto.
6568         (get_float_handle): Change return type.
6569         * range-op.h (range_operator_float): Delete.  Relocate all methods
6570         into class range_operator.
6571         (range_op_handler::m_float): Change type to range_operator.
6572         (floating_op_table): Delete.
6573         (floating_tree_table): Change type.
6575 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
6577         * range-op.cc (range_operator::fold_range): Call virtual routine.
6578         (range_operator::update_bitmask): New.
6579         (operator_equal::update_bitmask): New.
6580         (operator_not_equal::update_bitmask): New.
6581         (operator_lt::update_bitmask): New.
6582         (operator_le::update_bitmask): New.
6583         (operator_gt::update_bitmask): New.
6584         (operator_ge::update_bitmask): New.
6585         (operator_ge::update_bitmask): New.
6586         (operator_plus::update_bitmask): New.
6587         (operator_minus::update_bitmask): New.
6588         (operator_pointer_diff::update_bitmask): New.
6589         (operator_min::update_bitmask): New.
6590         (operator_max::update_bitmask): New.
6591         (operator_mult::update_bitmask): New.
6592         (operator_div:operator_div):New.
6593         (operator_div::update_bitmask): New.
6594         (operator_div::m_code): New member.
6595         (operator_exact_divide::operator_exact_divide): New constructor.
6596         (operator_lshift::update_bitmask): New.
6597         (operator_rshift::update_bitmask): New.
6598         (operator_bitwise_and::update_bitmask): New.
6599         (operator_bitwise_or::update_bitmask): New.
6600         (operator_bitwise_xor::update_bitmask): New.
6601         (operator_trunc_mod::update_bitmask): New.
6602         (op_ident, op_unknown, op_ptr_min_max): New.
6603         (op_nop, op_convert): Delete.
6604         (op_ssa, op_paren, op_obj_type): Delete.
6605         (op_realpart, op_imagpart): Delete.
6606         (op_ptr_min, op_ptr_max): Delete.
6607         (pointer_plus_operator:update_bitmask): New.
6608         (range_op_table::set): Do not use m_code.
6609         (integral_table::integral_table): Adjust to single instances.
6610         * range-op.h (range_operator::range_operator): Delete.
6611         (range_operator::m_code): Delete.
6612         (range_operator::update_bitmask): New.
6614 2023-06-08  Andrew MacLeod  <amacleod@redhat.com>
6616         * range-op-float.cc (range_operator_float::fold_range): Return
6617         NAN of the result type.
6619 2023-06-08  Jakub Jelinek  <jakub@redhat.com>
6621         * optabs.cc (expand_ffs): Add forward declaration.
6622         (expand_doubleword_clz): Rename to ...
6623         (expand_doubleword_clz_ctz_ffs): ... this.  Add UNOPTAB argument,
6624         handle also doubleword CTZ and FFS in addition to CLZ.
6625         (expand_unop): Adjust caller.  Also call it for doubleword
6626         ctz_optab and ffs_optab.
6628 2023-06-08  Jakub Jelinek  <jakub@redhat.com>
6630         PR target/110152
6631         * config/i386/i386-expand.cc (ix86_expand_vector_init_general): For
6632         n_words == 2 recurse with mmx_ok as first argument rather than false.
6634 2023-06-07  Roger Sayle  <roger@nextmovesoftware.com>
6636         * wide-int.cc (wi::bitreverse_large): Use HOST_WIDE_INT_1U to
6637         avoid sign extension/undefined behaviour when setting each bit.
6639 2023-06-07  Roger Sayle  <roger@nextmovesoftware.com>
6640             Uros Bizjak  <ubizjak@gmail.com>
6642         * config/i386/i386-expand.cc (ix86_expand_builtin) <handlecarry>:
6643         Use new x86_stc instruction when the carry flag must be set.
6644         * config/i386/i386.cc (ix86_cc_mode): Use CCCmode for *x86_cmc.
6645         (ix86_rtx_costs): Provide accurate rtx_costs for *x86_cmc.
6646         * config/i386/i386.h (TARGET_SLOW_STC): New define.
6647         * config/i386/i386.md (UNSPEC_STC): New UNSPEC for stc.
6648         (x86_stc): New define_insn.
6649         (define_peephole2): Convert x86_stc into alternate implementation
6650         on pentium4 without -Os when a QImode register is available.
6651         (*x86_cmc): New define_insn.
6652         (define_peephole2): Convert *x86_cmc into alternate implementation
6653         on pentium4 without -Os when a QImode register is available.
6654         (*setccc): New define_insn_and_split for a no-op CCCmode move.
6655         (*setcc_qi_negqi_ccc_1_<mode>): New define_insn_and_split to
6656         recognize (and eliminate) the carry flag being copied to itself.
6657         (*setcc_qi_negqi_ccc_2_<mode>): Likewise.
6658         * config/i386/x86-tune.def (X86_TUNE_SLOW_STC): New tuning flag.
6660 2023-06-07  Andrew Pinski  <apinski@marvell.com>
6662         * match.pd: Fix comment for the
6663         `(zero_one ==/!= 0) ? y : z <op> y` patterns.
6665 2023-06-07  Jeff Law  <jlaw@ventanamicro.com>
6666             Jeff Law   <jlaw@ventanamicro.com>
6668         * config/riscv/bitmanip.md (rotrdi3, rotrsi3, rotlsi3): New expanders.
6669         (rotrsi3_sext): Expose generator.
6670         (rotlsi3 pattern): Hide generator.
6671         * config/riscv/riscv-protos.h (riscv_emit_binary): New function
6672         declaration.
6673         * config/riscv/riscv.cc (riscv_emit_binary): Removed static
6674         * config/riscv/riscv.md (addsi3, subsi3, negsi2): Hide generator.
6675         (mulsi3, <optab>si3): Likewise.
6676         (addsi3, subsi3, negsi2, mulsi3, <optab>si3): New expanders.
6677         (addv<mode>4, subv<mode>4, mulv<mode>4): Use riscv_emit_binary.
6678         (<u>mulsidi3): Likewise.
6679         (addsi3_extended, subsi3_extended, negsi2_extended): Expose generator.
6680         (mulsi3_extended, <optab>si3_extended): Likewise.
6681         (splitter for shadd feeding divison): Update RTL pattern to account
6682         for changes in how 32 bit ops are expanded for TARGET_64BIT.
6683         * loop-iv.cc (get_biv_step_1): Process src of extension when it PLUS.
6685 2023-06-07  Dimitar Dimitrov  <dimitar@dinux.eu>
6687         PR target/109725
6688         * config/riscv/riscv.cc (riscv_print_operand): Calculate
6689         memmodel only when it is valid.
6691 2023-06-07  Dimitar Dimitrov  <dimitar@dinux.eu>
6693         * config/riscv/riscv.cc (riscv_const_insns): Recursively call
6694         for constant element of a vector.
6696 2023-06-07  Jakub Jelinek  <jakub@redhat.com>
6698         * match.pd (zero_one_valued_p): Don't handle integer_zerop specially,
6699         instead compare tree_nonzero_bits <= 1U rather than just == 1.
6701 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
6703         PR target/110132
6704         * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin):
6705         New. Use it ...
6706         (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE
6707         names for builtins.
6708         (aarch64_general_init_builtins): Ensure we invoke the arm_acle.h
6709         setup if in_lto_p, just like we do for SVE.
6710         * config/aarch64/arm_acle.h: (__arm_ld64b): Delete.
6711         (__arm_st64b): Delete.
6712         (__arm_st64bv): Delete.
6713         (__arm_st64bv0): Delete.
6715 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
6717         PR target/110100
6718         * config/aarch64/aarch64-builtins.cc (aarch64_expand_builtin_ls64):
6719         Use input operand for the destination address.
6720         * config/aarch64/aarch64.md (st64b): Fix constraint on address
6721         operand.
6723 2023-06-07  Alex Coplan  <alex.coplan@arm.com>
6725         PR target/110100
6726         * config/aarch64/aarch64-builtins.cc (aarch64_init_ls64_builtins_types):
6727         Replace eight consecutive spaces with tabs.
6728         (aarch64_init_ls64_builtins): Likewise.
6729         (aarch64_expand_builtin_ls64): Likewise.
6730         * config/aarch64/aarch64.md (ld64b): Likewise.
6731         (st64b): Likewise.
6732         (st64bv): Likewise
6733         (st64bv0): Likewise.
6735 2023-06-07  Vladimir N. Makarov  <vmakarov@redhat.com>
6737         * ira-costs.cc: (find_costs_and_classes): Constrain classes of pic
6738         offset table pseudo to a general reg subset.
6740 2023-06-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6742         * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode><vczle><vczbe>):
6743         Rename to...
6744         (*aarch64_sqmovun<mode>_insn<vczle><vczbe>): ... This.  Reimplement
6745         with RTL codes.
6746         (aarch64_sqmovun<mode> [SD_HSDI]): Reimplement with RTL codes.
6747         (aarch64_sqxtun2<mode>_le): Likewise.
6748         (aarch64_sqxtun2<mode>_be): Likewise.
6749         (aarch64_sqxtun2<mode>): Adjust for the above.
6750         (aarch64_sqmovun<mode>): New define_expand.
6751         * config/aarch64/iterators.md (UNSPEC_SQXTUN): Delete.
6752         (half_mask): New mode attribute.
6753         * config/aarch64/predicates.md (aarch64_simd_umax_half_mode):
6754         New predicate.
6756 2023-06-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6758         * config/aarch64/aarch64-simd.md (aarch64_addp<mode><vczle><vczbe>):
6759         Reimplement as...
6760         (aarch64_addp<mode>_insn): ... This...
6761         (aarch64_addp<mode><vczle><vczbe>_insn): ... And this.
6762         (aarch64_addp<mode>): New define_expand.
6764 2023-06-07  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6766         * config/riscv/riscv-protos.h (expand_vec_perm_const): New function.
6767         * config/riscv/riscv-v.cc
6768         (rvv_builder::can_duplicate_repeating_sequence_p): Support POLY
6769         handling.
6770         (rvv_builder::single_step_npatterns_p): New function.
6771         (rvv_builder::npatterns_all_equal_p): Ditto.
6772         (const_vec_all_in_range_p): Support POLY handling.
6773         (gen_const_vector_dup): Ditto.
6774         (emit_vlmax_gather_insn): Add vrgatherei16.
6775         (emit_vlmax_masked_gather_mu_insn): Ditto.
6776         (expand_const_vector): Add VLA SLP const vector support.
6777         (expand_vec_perm): Support POLY.
6778         (struct expand_vec_perm_d): New struct.
6779         (shuffle_generic_patterns): New function.
6780         (expand_vec_perm_const_1): Ditto.
6781         (expand_vec_perm_const): Ditto.
6782         * config/riscv/riscv.cc (riscv_vectorize_vec_perm_const): Ditto.
6783         (TARGET_VECTORIZE_VEC_PERM_CONST): New targethook.
6785 2023-06-07  Andrew Pinski  <apinski@marvell.com>
6787         PR middle-end/110117
6788         * expr.cc (expand_single_bit_test): Handle
6789         const_int from expand_expr.
6791 2023-06-07  Andrew Pinski  <apinski@marvell.com>
6793         * expr.cc (do_store_flag): Rearrange the
6794         TER code so that it overrides the nonzero bits
6795         info if we had `a & POW2`.
6797 2023-06-07  Andrew Pinski  <apinski@marvell.com>
6799         PR tree-optimization/110134
6800         * match.pd (-A CMP -B -> B CMP A): Allow EQ/NE for all integer
6801         types.
6802         (-A CMP CST -> B CMP (-CST)): Likewise.
6804 2023-06-07  Andrew Pinski  <apinski@marvell.com>
6806         PR tree-optimization/89263
6807         PR tree-optimization/99069
6808         PR tree-optimization/20083
6809         PR tree-optimization/94898
6810         * match.pd: Add patterns to optimize `a ? onezero : onezero` with
6811         one of the operands are constant.
6813 2023-06-07  Andrew Pinski  <apinski@marvell.com>
6815         * match.pd (zero_one_valued_p): Match 0 integer constant
6816         too.
6818 2023-06-07  Pan Li  <pan2.li@intel.com>
6820         * config/riscv/riscv-vector-builtins-types.def
6821         (vfloat32mf2_t): Take RVV_REQUIRE_ELEN_FP_16 as requirement.
6822         (vfloat32m1_t): Ditto.
6823         (vfloat32m2_t): Ditto.
6824         (vfloat32m4_t): Ditto.
6825         (vfloat32m8_t): Ditto.
6826         (vint16mf4_t): Ditto.
6827         (vint16mf2_t): Ditto.
6828         (vint16m1_t): Ditto.
6829         (vint16m2_t): Ditto.
6830         (vint16m4_t): Ditto.
6831         (vint16m8_t): Ditto.
6832         (vuint16mf4_t): Ditto.
6833         (vuint16mf2_t): Ditto.
6834         (vuint16m1_t): Ditto.
6835         (vuint16m2_t): Ditto.
6836         (vuint16m4_t): Ditto.
6837         (vuint16m8_t): Ditto.
6838         (vint32mf2_t): Ditto.
6839         (vint32m1_t): Ditto.
6840         (vint32m2_t): Ditto.
6841         (vint32m4_t): Ditto.
6842         (vint32m8_t): Ditto.
6843         (vuint32mf2_t): Ditto.
6844         (vuint32m1_t): Ditto.
6845         (vuint32m2_t): Ditto.
6846         (vuint32m4_t): Ditto.
6847         (vuint32m8_t): Ditto.
6849 2023-06-07  Jason Merrill  <jason@redhat.com>
6851         PR c++/58487
6852         * doc/invoke.texi: Document it.
6854 2023-06-06  Roger Sayle  <roger@nextmovesoftware.com>
6856         * doc/rtl.texi (bitreverse, copysign): Document new RTX codes.
6857         * rtl.def (BITREVERSE, COPYSIGN): Define new RTX codes.
6858         * simplify-rtx.cc (simplify_unary_operation_1): Optimize
6859         NOT (BITREVERSE x) as BITREVERSE (NOT x).
6860         Optimize POPCOUNT (BITREVERSE x) as POPCOUNT x.
6861         Optimize PARITY (BITREVERSE x) as PARITY x.
6862         Optimize BITREVERSE (BITREVERSE x) as x.
6863         (simplify_const_unary_operation) <case BITREVERSE>: Evaluate
6864         BITREVERSE of a constant integer at compile-time.
6865         (simplify_binary_operation_1) <case COPYSIGN>:  Optimize
6866         COPY_SIGN (x, x) as x.  Optimize COPYSIGN (x, C) as ABS x
6867         or NEG (ABS x) for constant C.  Optimize COPYSIGN (ABS x, y)
6868         and COPYSIGN (NEG x, y) as COPYSIGN (x, y).
6869         Optimize COPYSIGN (x, ABS y) as ABS x.
6870         Optimize COPYSIGN (COPYSIGN (x, y), z) as COPYSIGN (x, z).
6871         Optimize COPYSIGN (x, COPYSIGN (y, z)) as COPYSIGN (x, z).
6872         (simplify_const_binary_operation): Evaluate COPYSIGN of constant
6873         arguments at compile-time.
6875 2023-06-06  Uros Bizjak  <ubizjak@gmail.com>
6877         * rtl.h (function_invariant_p): Change return type from int to bool.
6878         * reload1.cc (function_invariant_p): Change return type from
6879         int to bool and adjust function body accordingly.
6881 2023-06-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
6883         * config/riscv/autovec-opt.md (*<optab>_fma<mode>): New pattern.
6884         (*single_<optab>mult_plus<mode>): Ditto.
6885         (*double_<optab>mult_plus<mode>): Ditto.
6886         (*sign_zero_extend_fma): Ditto.
6887         (*zero_sign_extend_fma): Ditto.
6888         * config/riscv/riscv-protos.h (enum insn_type): New enum.
6890 2023-06-06  Kwok Cheung Yeung  <kcy@codesourcery.com>
6891             Tobias Burnus  <tobias@codesourcery.com>
6893         * gimplify.cc (omp_notice_variable): Apply GOVD_MAP_ALLOC_ONLY flag
6894         and defaultmap flags if the defaultmap has GOVD_MAP_FORCE_PRESENT flag
6895         set.
6896         (omp_get_attachment): Handle map clauses with 'present' modifier.
6897         (omp_group_base): Likewise.
6898         (gimplify_scan_omp_clauses): Reorder present maps to come first.
6899         Set GOVD flags for present defaultmaps.
6900         (gimplify_adjust_omp_clauses_1): Set map kind for present defaultmaps.
6901         * omp-low.cc (scan_sharing_clauses): Handle 'always, present' map
6902         clauses.
6903         (lower_omp_target): Handle map clauses with 'present' modifier.
6904         Handle 'to' and 'from' clauses with 'present'.
6905         * tree-core.h (enum omp_clause_defaultmap_kind): Add
6906         OMP_CLAUSE_DEFAULTMAP_PRESENT defaultmap kind.
6907         * tree-pretty-print.cc (dump_omp_clause): Handle 'map', 'to' and
6908         'from' clauses with 'present' modifier.  Handle present defaultmap.
6909         * tree.h (OMP_CLAUSE_MOTION_PRESENT): New #define.
6911 2023-06-06  Segher Boessenkool  <segher@kernel.crashing.org>
6913         * config/rs6000/genfusion.pl: Delete some dead code.
6915 2023-06-06  Segher Boessenkool  <segher@kernel.crashing.org>
6917         * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and
6918         split out from...
6919         (gen_ld_cmpi_p10): ... this.
6921 2023-06-06  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
6923         PR target/106907
6924         * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove
6925         duplicate expression.
6927 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6929         * config/aarch64/aarch64-builtins.cc (aarch64_general_gimple_fold_builtin):
6930         Handle unsigned reduc_plus_scal_ builtins.
6931         * config/aarch64/aarch64-simd-builtins.def (addp): Delete DImode instances.
6932         * config/aarch64/aarch64-simd.md (aarch64_addpdi): Delete.
6933         * config/aarch64/arm_neon.h (vpaddd_s64): Reimplement with
6934         __builtin_aarch64_reduc_plus_scal_v2di.
6935         (vpaddd_u64): Reimplement with __builtin_aarch64_reduc_plus_scal_v2di_uu.
6937 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6939         * config/aarch64/aarch64-simd.md (aarch64_<sur>shr_n<mode>): Delete.
6940         (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): New define_insn.
6941         (aarch64_<sra_op>rshr_n<mode>): New define_expand.
6943 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6945         * config/aarch64/aarch64-simd.md (aarch64_shrn<mode>_insn_le): Delete.
6946         (aarch64_shrn<mode>_insn_be): Delete.
6947         (*aarch64_<srn_op>shrn<mode>_vect):  Rename to...
6948         (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): ... This.
6949         (aarch64_shrn<mode>): Remove reference to the above deleted patterns.
6950         (aarch64_rshrn<mode>_insn_le): Delete.
6951         (aarch64_rshrn<mode>_insn_be): Delete.
6952         (aarch64_rshrn<mode><vczle><vczbe>_insn): New define_insn.
6953         (aarch64_rshrn<mode>): Remove references to the above deleted patterns.
6955 2023-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6957         * config/aarch64/aarch64-protos.h (aarch64_parallel_select_half_p):
6958         Define prototype.
6959         (aarch64_pars_overlap_p): Likewise.
6960         * config/aarch64/aarch64-simd.md (aarch64_<su>addlv<mode>):
6961         Express in terms of UNSPEC_ADDV.
6962         (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): Likewise.
6963         (*aarch64_<su>addlv<mode>_reduction): Define.
6964         (*aarch64_uaddlv<mode>_reduction_2): Likewise.
6965         * config/aarch64/aarch64.cc     (aarch64_parallel_select_half_p): Define.
6966         (aarch64_pars_overlap_p): Likewise.
6967         * config/aarch64/iterators.md (UNSPEC_SADDLV, UNSPEC_UADDLV): Delete.
6968         (VQUADW): New mode attribute.
6969         (VWIDE2X_S): Likewise.
6970         (USADDLV): Delete.
6971         (su): Delete handling of UNSPEC_SADDLV, UNSPEC_UADDLV.
6972         * config/aarch64/predicates.md (vect_par_cnst_select_half): Define.
6974 2023-06-06  Richard Biener  <rguenther@suse.de>
6976         PR middle-end/110055
6977         * gimplify.cc (gimplify_target_expr): Do not emit
6978         CLOBBERs for variables which have static storage duration
6979         after gimplifying their initializers.
6981 2023-06-06  Richard Biener  <rguenther@suse.de>
6983         PR tree-optimization/109143
6984         * tree-ssa-structalias.cc (solution_set_expand): Avoid
6985         one bitmap iteration and optimize bit range setting.
6987 2023-06-06  Hans-Peter Nilsson  <hp@axis.com>
6989         PR bootstrap/110120
6990         * postreload.cc (reload_cse_move2add, move2add_use_add2_insn): Use
6991         XVECEXP, not XEXP, to access first item of a PARALLEL.
6993 2023-06-06  Pan Li  <pan2.li@intel.com>
6995         * config/riscv/riscv-vector-builtins-types.def
6996         (vfloat16mf4_t): Add vfloat16mf4_t to WF operations.
6997         (vfloat16mf2_t): Likewise.
6998         (vfloat16m1_t): Likewise.
6999         (vfloat16m2_t): Likewise.
7000         (vfloat16m4_t): Likewise.
7001         (vfloat16m8_t): Likewise.
7002         * config/riscv/vector-iterators.md: Add FP=16 to VWF, VWF_ZVE64,
7003         VWLMUL1, VWLMUL1_ZVE64, vwlmul1 and vwlmul1_zve64.
7005 2023-06-06  Fei Gao  <gaofei@eswincomputing.com>
7007         * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Use Pmode
7008         for cfi reg/mem machmode
7009         (riscv_adjust_libcall_cfi_epilogue): Use Pmode for cfi reg machmode
7011 2023-06-06  Li Xu  <xuli1@eswincomputing.com>
7013         * config/riscv/vector-iterators.md:
7014         Fix 'REQUIREMENT' for machine_mode 'MODE'.
7015         * config/riscv/vector.md (@pred_indexed_<order>store<VNX16_QHS:mode>
7016         <VNX16_QHSI:mode>): change VNX16_QHSI to VNX16_QHSDI.
7017         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>): Ditto.
7019 2023-06-06  Pan Li  <pan2.li@intel.com>
7021         * config/riscv/vector-iterators.md: Fix typo in mode attr.
7023 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
7024             Joel Hutton  <joel.hutton@arm.com>
7026         * doc/generic.texi: Remove old tree codes.
7027         * expr.cc (expand_expr_real_2): Remove old tree code cases.
7028         * gimple-pretty-print.cc (dump_binary_rhs): Likewise.
7029         * optabs-tree.cc (optab_for_tree_code): Likewise.
7030         (supportable_half_widening_operation): Likewise.
7031         * tree-cfg.cc (verify_gimple_assign_binary): Likewise.
7032         * tree-inline.cc (estimate_operator_cost): Likewise.
7033         (op_symbol_code): Likewise.
7034         * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Likewise.
7035         (vect_analyze_data_ref_accesses): Likewise.
7036         * tree-vect-generic.cc (expand_vector_operations_1): Likewise.
7037         * cfgexpand.cc (expand_debug_expr): Likewise.
7038         * tree-vect-stmts.cc (vectorizable_conversion): Likewise.
7039         (supportable_widening_operation): Likewise.
7040         * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
7041         Likewise.
7042         * optabs.def (vec_widen_ssubl_hi_optab, vec_widen_ssubl_lo_optab,
7043         vec_widen_saddl_hi_optab, vec_widen_saddl_lo_optab,
7044         vec_widen_usubl_hi_optab, vec_widen_usubl_lo_optab,
7045         vec_widen_uaddl_hi_optab, vec_widen_uaddl_lo_optab): Remove optabs.
7046         * tree-pretty-print.cc (dump_generic_node): Remove tree code definition.
7047         * tree.def (WIDEN_PLUS_EXPR, WIDEN_MINUS_EXPR, VEC_WIDEN_PLUS_HI_EXPR,
7048         VEC_WIDEN_PLUS_LO_EXPR, VEC_WIDEN_MINUS_HI_EXPR,
7049         VEC_WIDEN_MINUS_LO_EXPR): Likewise.
7051 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
7052             Joel Hutton  <joel.hutton@arm.com>
7053             Tamar Christina  <tamar.christina@arm.com>
7055         * config/aarch64/aarch64-simd.md (vec_widen_<su>addl_lo_<mode>): Rename
7056         this ...
7057         (vec_widen_<su>add_lo_<mode>): ... to this.
7058         (vec_widen_<su>addl_hi_<mode>): Rename this ...
7059         (vec_widen_<su>add_hi_<mode>): ... to this.
7060         (vec_widen_<su>subl_lo_<mode>): Rename this ...
7061         (vec_widen_<su>sub_lo_<mode>): ... to this.
7062         (vec_widen_<su>subl_hi_<mode>): Rename this ...
7063         (vec_widen_<su>sub_hi_<mode>): ...to this.
7064         * doc/generic.texi: Document new IFN codes.
7065         * internal-fn.cc (lookup_hilo_internal_fn): Add lookup function.
7066         (commutative_binary_fn_p): Add widen_plus fn's.
7067         (widening_fn_p): New function.
7068         (narrowing_fn_p): New function.
7069         (direct_internal_fn_optab): Change visibility.
7070         * internal-fn.def (DEF_INTERNAL_WIDENING_OPTAB_FN): Macro to define an
7071         internal_fn that expands into multiple internal_fns for widening.
7072         (IFN_VEC_WIDEN_PLUS, IFN_VEC_WIDEN_PLUS_HI, IFN_VEC_WIDEN_PLUS_LO,
7073         IFN_VEC_WIDEN_PLUS_EVEN, IFN_VEC_WIDEN_PLUS_ODD,
7074         IFN_VEC_WIDEN_MINUS, IFN_VEC_WIDEN_MINUS_HI,
7075         IFN_VEC_WIDEN_MINUS_LO, IFN_VEC_WIDEN_MINUS_ODD,
7076         IFN_VEC_WIDEN_MINUS_EVEN): Define widening  plus,minus functions.
7077         * internal-fn.h (direct_internal_fn_optab): Declare new prototype.
7078         (lookup_hilo_internal_fn): Likewise.
7079         (widening_fn_p): Likewise.
7080         (Narrowing_fn_p): Likewise.
7081         * optabs.cc (commutative_optab_p): Add widening plus optabs.
7082         * optabs.def (OPTAB_D): Define widen add, sub optabs.
7083         * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Support
7084         patterns with a hi/lo or even/odd split.
7085         (vect_recog_sad_pattern): Refactor to use new IFN codes.
7086         (vect_recog_widen_plus_pattern): Likewise.
7087         (vect_recog_widen_minus_pattern): Likewise.
7088         (vect_recog_average_pattern): Likewise.
7089         * tree-vect-stmts.cc (vectorizable_conversion): Add support for
7090         _HILO IFNs.
7091         (supportable_widening_operation): Likewise.
7092         * tree.def (WIDEN_SUM_EXPR): Update example to use new IFNs.
7094 2023-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
7095             Joel Hutton  <joel.hutton@arm.com>
7097         * tree-vect-patterns.cc: Add include for gimple-iterator.
7098         (vect_recog_widen_op_pattern): Refactor to use code_helper.
7099         (vect_gimple_build): New function.
7100         * tree-vect-stmts.cc (simple_integer_narrowing): Refactor to use
7101         code_helper.
7102         (vectorizable_call): Likewise.
7103         (vect_gen_widened_results_half): Likewise.
7104         (vect_create_vectorized_demotion_stmts): Likewise.
7105         (vect_create_vectorized_promotion_stmts): Likewise.
7106         (vect_create_half_widening_stmts): Likewise.
7107         (vectorizable_conversion): Likewise.
7108         (supportable_widening_operation): Likewise.
7109         (supportable_narrowing_operation): Likewise.
7110         * tree-vectorizer.h (supportable_widening_operation): Change
7111         prototype to use code_helper.
7112         (supportable_narrowing_operation): Likewise.
7113         (vect_gimple_build): New function prototype.
7114         * tree.h (code_helper::safe_as_tree_code): New function.
7115         (code_helper::safe_as_fn_code): New function.
7117 2023-06-05  Roger Sayle  <roger@nextmovesoftware.com>
7119         * wide-int.cc (wi::bitreverse_large): New function implementing
7120         bit reversal of an integer.
7121         * wide-int.h (wi::bitreverse): New (template) function prototype.
7122         (bitreverse_large): Prototype helper function/implementation.
7123         (wi::bitreverse): New template wrapper around bitreverse_large.
7125 2023-06-05  Uros Bizjak  <ubizjak@gmail.com>
7127         * rtl.h (print_rtl_single): Change return type from int to void.
7128         (print_rtl_single_with_indent): Ditto.
7129         * print-rtl.h (class rtx_writer): Ditto.  Change m_sawclose to bool.
7130         * print-rtl.cc (rtx_writer::rtx_writer): Update for m_sawclose change.
7131         (rtx_writer::print_rtx_operand_code_0): Ditto.
7132         (rtx_writer::print_rtx_operand_codes_E_and_V): Ditto.
7133         (rtx_writer::print_rtx_operand_code_i): Ditto.
7134         (rtx_writer::print_rtx_operand_code_u): Ditto.
7135         (rtx_writer::print_rtx_operand): Ditto.
7136         (rtx_writer::print_rtx): Ditto.
7137         (rtx_writer::finish_directive): Ditto.
7138         (print_rtl_single): Change return type from int to void
7139         and adjust function body accordingly.
7140         (rtx_writer::print_rtl_single_with_indent): Ditto.
7142 2023-06-05  Uros Bizjak  <ubizjak@gmail.com>
7144         * rtl.h (reg_classes_intersect_p): Change return type from int to bool.
7145         (reg_class_subset_p): Ditto.
7146         * reginfo.cc (reg_classes_intersect_p): Ditto.
7147         (reg_class_subset_p): Ditto.
7149 2023-06-05  Pan Li  <pan2.li@intel.com>
7151         * config/riscv/riscv-vector-builtins-types.def
7152         (vfloat32mf2_t): New type for DEF_RVV_WEXTF_OPS.
7153         (vfloat32m1_t): Ditto.
7154         (vfloat32m2_t): Ditto.
7155         (vfloat32m4_t): Ditto.
7156         (vfloat32m8_t): Ditto.
7157         (vint16mf4_t): New type for DEF_RVV_CONVERT_I_OPS.
7158         (vint16mf2_t): Ditto.
7159         (vint16m1_t): Ditto.
7160         (vint16m2_t): Ditto.
7161         (vint16m4_t): Ditto.
7162         (vint16m8_t): Ditto.
7163         (vuint16mf4_t): New type for DEF_RVV_CONVERT_U_OPS.
7164         (vuint16mf2_t): Ditto.
7165         (vuint16m1_t): Ditto.
7166         (vuint16m2_t): Ditto.
7167         (vuint16m4_t): Ditto.
7168         (vuint16m8_t): Ditto.
7169         (vint32mf2_t): New type for DEF_RVV_WCONVERT_I_OPS.
7170         (vint32m1_t): Ditto.
7171         (vint32m2_t): Ditto.
7172         (vint32m4_t): Ditto.
7173         (vint32m8_t): Ditto.
7174         (vuint32mf2_t): New type for DEF_RVV_WCONVERT_U_OPS.
7175         (vuint32m1_t): Ditto.
7176         (vuint32m2_t): Ditto.
7177         (vuint32m4_t): Ditto.
7178         (vuint32m8_t): Ditto.
7179         * config/riscv/vector-iterators.md: Add FP=16 support for V,
7180         VWCONVERTI, VCONVERT, VNCONVERT, VMUL1 and vlmul1.
7182 2023-06-05  Andrew Pinski  <apinski@marvell.com>
7184         PR bootstrap/110085
7185         * Makefile.in (clean): Remove the removing of
7186         MULTILIB_DIR/MULTILIB_OPTIONS directories.
7188 2023-06-05  YunQiang Su  <yunqiang.su@cipunited.com>
7190         * config/mips/mips-protos.h (mips_emit_speculation_barrier): New
7191         prototype.
7192         * config/mips/mips.cc (speculation_barrier_libfunc): New static
7193         variable.
7194         (mips_init_libfuncs): Initialize it.
7195         (mips_emit_speculation_barrier): New function.
7196         * config/mips/mips.md (speculation_barrier): Call
7197         mips_emit_speculation_barrier.
7199 2023-06-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7201         * config/riscv/riscv-v.cc (class rvv_builder): Reorganize functions.
7202         (rvv_builder::can_duplicate_repeating_sequence_p): Ditto.
7203         (rvv_builder::repeating_sequence_use_merge_profitable_p): Ditto.
7204         (rvv_builder::get_merged_repeating_sequence): Ditto.
7205         (rvv_builder::get_merge_scalar_mask): Ditto.
7206         (emit_scalar_move_insn): Ditto.
7207         (emit_vlmax_integer_move_insn): Ditto.
7208         (emit_nonvlmax_integer_move_insn): Ditto.
7209         (emit_vlmax_gather_insn): Ditto.
7210         (emit_vlmax_masked_gather_mu_insn): Ditto.
7211         (get_repeating_sequence_dup_machine_mode): Ditto.
7213 2023-06-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7215         * config/riscv/autovec.md: Split arguments.
7216         * config/riscv/riscv-protos.h (expand_vec_perm): Ditto.
7217         * config/riscv/riscv-v.cc (expand_vec_perm): Ditto.
7219 2023-06-04  Andrew Pinski  <apinski@marvell.com>
7221         * expr.cc (do_store_flag): Improve for single bit testing
7222         not against zero but against that single bit.
7224 2023-06-04  Andrew Pinski  <apinski@marvell.com>
7226         * expr.cc (do_store_flag): Extend the one bit checking case
7227         to handle the case where we don't have an and but rather still
7228         one bit is known to be non-zero.
7230 2023-06-04  Jeff Law  <jlaw@ventanamicro.com>
7232         * config/h8300/constraints.md (Zz): Make this a normal
7233         constraint.
7234         * config/h8300/h8300.cc (TARGET_LRA_P): Remove.
7235         * config/h8300/logical.md (H8/SX bit patterns): Remove.
7237 2023-06-04  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
7239         * config/xtensa/xtensa.md (*btrue_INT_MIN, *eqne_INT_MIN):
7240         New insn_and_split patterns.
7242 2023-06-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7244         PR target/110109
7245         * config/riscv/riscv-vector-builtins-bases.cc: Change expand approach.
7246         * config/riscv/vector.md (@vlmul_extx2<mode>): Remove it.
7247         (@vlmul_extx4<mode>): Ditto.
7248         (@vlmul_extx8<mode>): Ditto.
7249         (@vlmul_extx16<mode>): Ditto.
7250         (@vlmul_extx32<mode>): Ditto.
7251         (@vlmul_extx64<mode>): Ditto.
7252         (*vlmul_extx2<mode>): Ditto.
7253         (*vlmul_extx4<mode>): Ditto.
7254         (*vlmul_extx8<mode>): Ditto.
7255         (*vlmul_extx16<mode>): Ditto.
7256         (*vlmul_extx32<mode>): Ditto.
7257         (*vlmul_extx64<mode>): Ditto.
7259 2023-06-04  Pan Li  <pan2.li@intel.com>
7261         * config/riscv/riscv-vector-builtins-types.def
7262         (vfloat32mf2_t): Add vfloat32mf2_t type to vfncvt.f.f.w operations.
7263         (vfloat32m1_t): Likewise.
7264         (vfloat32m2_t): Likewise.
7265         (vfloat32m4_t): Likewise.
7266         (vfloat32m8_t): Likewise.
7267         * config/riscv/riscv-vector-builtins.def: Fix typo in comments.
7268         * config/riscv/vector-iterators.md: Add single to half machine
7269         mode conversion.
7271 2023-06-04  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7273         * config/riscv/autovec-opt.md (*<optab>not<mode>): Move to autovec-opt.md.
7274         (*n<optab><mode>): Ditto.
7275         * config/riscv/autovec.md (*<optab>not<mode>): Ditto.
7276         (*n<optab><mode>): Ditto.
7277         * config/riscv/vector.md: Ditto.
7279 2023-06-04  Roger Sayle  <roger@nextmovesoftware.com>
7281         PR target/110083
7282         * config/i386/i386-features.cc (scalar_chain::convert_compare):
7283         Update or delete REG_EQUAL notes, converting CONST_INT and
7284         CONST_WIDE_INT immediate operands to a suitable CONST_VECTOR.
7286 2023-06-04  Jason Merrill  <jason@redhat.com>
7288         PR c++/97720
7289         * tree-eh.cc (lower_resx): Pass the exception pointer to the
7290         failure_decl.
7291         * except.h: Tweak comment.
7293 2023-06-04  Hans-Peter Nilsson  <hp@axis.com>
7295         * postreload.cc (move2add_use_add2_insn): Handle
7296         trivial single_sets.  Rename variable PAT to SET.
7297         (move2add_use_add3_insn, reload_cse_move2add): Similar.
7299 2023-06-04  Pan Li  <pan2.li@intel.com>
7301         * config/riscv/riscv-vector-builtins-types.def
7302         (vfloat16mf4_t): Add the float16 type to DEF_RVV_F_OPS.
7303         (vfloat16mf2_t): Likewise.
7304         (vfloat16m1_t): Likewise.
7305         (vfloat16m2_t): Likewise.
7306         (vfloat16m4_t): Likewise.
7307         (vfloat16m8_t): Likewise.
7308         * config/riscv/riscv.md: Add vfloat16*_t to attr mode.
7309         * config/riscv/vector-iterators.md: Add vfloat16*_t machine mode
7310         to V, V_WHOLE, V_FRACT, VINDEX, VM, VEL and sew.
7311         * config/riscv/vector.md: Add vfloat16*_t machine mode to sew,
7312         vlmul and ratio.
7314 2023-06-03  Fei Gao  <gaofei@eswincomputing.com>
7316         * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
7317         correct offset.
7319 2023-06-03  Die Li  <lidie@eswincomputing.com>
7321         * config/riscv/thead.md (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Delete.
7323 2023-06-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7325         * config/riscv/predicates.md: Change INTVAL into UINTVAL.
7327 2023-06-03  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7329         * config/riscv/vector.md: Add vector-opt.md.
7330         * config/riscv/autovec-opt.md: New file.
7332 2023-06-03  liuhongt  <hongtao.liu@intel.com>
7334         PR tree-optimization/110067
7335         * gimple-ssa-store-merging.cc (find_bswap_or_nop): Don't try
7336         bswap + rotate when TYPE_PRECISION(n->type) > n->range.
7338 2023-06-03  liuhongt  <hongtao.liu@intel.com>
7340         PR target/92658
7341         * config/i386/mmx.md (truncv2hiv2qi2): New define_insn.
7342         (truncv2si<mode>2): Ditto.
7344 2023-06-02  Andrew Pinski  <apinski@marvell.com>
7346         PR rtl-optimization/102733
7347         * dse.cc (store_info): Add addrspace field.
7348         (record_store): Record the address space
7349         and check to make sure they are the same.
7351 2023-06-02  Andrew Pinski  <apinski@marvell.com>
7353         PR rtl-optimization/110042
7354         * ifcvt.cc (bbs_ok_for_cmove_arith): Allow paradoxical subregs.
7355         (bb_valid_for_noce_process_p): Strip the subreg for the SET_DEST.
7357 2023-06-02  Iain Sandoe  <iain@sandoe.co.uk>
7359         PR target/110044
7360         * config/rs6000/rs6000.cc (darwin_rs6000_special_round_type_align):
7361         Make sure that we do not have a cap on field alignment before altering
7362         the struct layout based on the type alignment of the first entry.
7364 2023-06-02  David Faust  <david.faust@oracle.com>
7366         PR debug/110073
7367         * btfout.cc (btf_absolute_func_id): New function.
7368         (btf_asm_func_type): Call it here.  Change index parameter from
7369         size_t to ctf_id_t.  Use PRIu64 formatter.
7371 2023-06-02  Alex Coplan  <alex.coplan@arm.com>
7373         * btfout.cc (btf_asm_type): Use PRIu64 instead of %lu for uint64_t.
7374         (btf_asm_datasec_type): Likewise.
7376 2023-06-02  Carl Love  <cel@us.ibm.com>
7378         * config/rs6000/rs6000-builtins.def (__builtin_altivec_tr_stxvrhx,
7379         __builtin_altivec_tr_stxvrwx): Fix type of third argument.
7381 2023-06-02  Jason Merrill  <jason@redhat.com>
7383         PR c++/110070
7384         PR c++/105838
7385         * tree.h (DECL_MERGEABLE): New.
7386         * tree-core.h (struct tree_decl_common): Mention it.
7387         * gimplify.cc (gimplify_init_constructor): Check it.
7388         * cgraph.cc (symtab_node::address_can_be_compared_p): Likewise.
7389         * varasm.cc (categorize_decl_for_section): Likewise.
7391 2023-06-02  Uros Bizjak  <ubizjak@gmail.com>
7393         * rtl.h (stack_regs_mentioned): Change return type from int to bool.
7394         * reg-stack.cc (struct_block_info_def): Change "done" to bool.
7395         (stack_regs_mentioned_p): Change return type from int to bool
7396         and adjust function body accordingly.
7397         (stack_regs_mentioned): Ditto.
7398         (check_asm_stack_operands): Ditto.  Change "malformed_asm"
7399         variable to bool.
7400         (move_for_stack_reg): Recode handling of control_flow_insn_deleted.
7401         (swap_rtx_condition_1): Change return type from int to bool
7402         and adjust function body accordingly.  Change "r" variable to bool.
7403         (swap_rtx_condition): Change return type from int to bool
7404         and adjust function body accordingly.
7405         (subst_stack_regs_pat): Recode handling of control_flow_insn_deleted.
7406         (subst_stack_regs): Ditto.
7407         (convert_regs_entry): Change return type from int to bool and adjust
7408         function body accordingly.  Change "inserted" variable to bool.
7409         (convert_regs_1): Recode handling of control_flow_insn_deleted.
7410         (convert_regs_2): Recode handling of cfg_altered.
7411         (convert_regs): Ditto.  Change "inserted" variable to bool.
7413 2023-06-02  Jason Merrill  <jason@redhat.com>
7415         PR c++/95226
7416         * varasm.cc (output_constant) [REAL_TYPE]: Check that sizes match.
7417         (initializer_constant_valid_p_1): Compare float precision.
7419 2023-06-02  Alexander Monakov  <amonakov@ispras.ru>
7421         * doc/extend.texi (Vector Extensions): Clarify bitwise shift
7422         semantics.
7424 2023-06-02  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
7426         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Change decrement IV flow.
7427         (vect_set_loop_condition_partial_vectors): Ditto.
7429 2023-06-02  Georg-Johann Lay  <avr@gjlay.de>
7431         PR target/110088
7432         * config/avr/avr.md: Add an RTL peephole to optimize operations on
7433         non-LD_REGS after a move from LD_REGS.
7434         (piaop): New code iterator.
7436 2023-06-02  Thomas Schwinge  <thomas@codesourcery.com>
7438         PR testsuite/66005
7439         * doc/install.texi: Document (optional) Perl usage for parallel
7440         testing of libgomp.
7442 2023-06-02  Thomas Schwinge  <thomas@codesourcery.com>
7444         PR bootstrap/82856
7445         * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
7446         later)".
7448 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7449             KuanLin Chen  <best124612@gmail.com>
7451         * config/riscv/riscv-vector-builtins-bases.cc: Add _mu overloaded intrinsics.
7452         * config/riscv/riscv-vector-builtins-shapes.cc (struct fault_load_def): Ditto.
7454 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7456         * config/riscv/riscv-v.cc (expand_vec_series): Optimize reverse series index vector.
7458 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7460         * config/riscv/predicates.md: Change INTVAL into UINTVAL.
7462 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7464         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_VXRM_ENUM): Add
7465         __RISCV_ prefix.
7466         (DEF_RVV_FRM_ENUM): Ditto.
7468 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7470         * config/riscv/riscv-vector-builtins-bases.cc: Change vwadd.wv/vwsub.wv
7471         intrinsic API expander
7472         * config/riscv/vector.md
7473         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Remove it.
7474         (@pred_single_widen_sub<any_extend:su><mode>): New pattern.
7475         (@pred_single_widen_add<any_extend:su><mode>): New pattern.
7477 2023-06-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7479         * config/riscv/autovec.md (vec_perm<mode>): New pattern.
7480         * config/riscv/predicates.md (vector_perm_operand): New predicate.
7481         * config/riscv/riscv-protos.h (enum insn_type): New enum.
7482         (expand_vec_perm): New function.
7483         * config/riscv/riscv-v.cc (const_vec_all_in_range_p): Ditto.
7484         (gen_const_vector_dup): Ditto.
7485         (emit_vlmax_gather_insn): Ditto.
7486         (emit_vlmax_masked_gather_mu_insn): Ditto.
7487         (expand_vec_perm): Ditto.
7489 2023-06-01  Jason Merrill  <jason@redhat.com>
7491         * doc/invoke.texi (-Wpedantic): Improve clarity.
7493 2023-06-01  Uros Bizjak  <ubizjak@gmail.com>
7495         * rtl.h (exp_equiv_p): Change return type from int to bool.
7496         * cse.cc (mention_regs): Change return type from int to bool
7497         and adjust function body accordingly.
7498         (exp_equiv_p): Ditto.
7499         (insert_regs): Ditto. Change "modified" function argument to bool
7500         and update usage accordingly.
7501         (record_jump_cond): Remove always zero "reversed_nonequality"
7502         function argument and update usage accordingly.
7503         (fold_rtx): Change "changed" variable to bool.
7504         (record_jump_equiv): Remove unneeded "reversed_nonequality" variable.
7505         (is_dead_reg): Change return type from int to bool.
7507 2023-06-01  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
7509         * config/xtensa/xtensa.md (adddi3, subdi3):
7510         New RTL generation patterns implemented according to the instruc-
7511         tion idioms described in the Xtensa ISA reference manual (p. 600).
7513 2023-06-01  Roger Sayle  <roger@nextmovesoftware.com>
7514             Uros Bizjak  <ubizjak@gmail.com>
7516         PR target/109973
7517         * config/i386/i386-builtin.def (__builtin_ia32_ptestz128): Use new
7518         CODE_for_sse4_1_ptestzv2di.
7519         (__builtin_ia32_ptestc128): Use new CODE_for_sse4_1_ptestcv2di.
7520         (__builtin_ia32_ptestz256): Use new CODE_for_avx_ptestzv4di.
7521         (__builtin_ia32_ptestc256): Use new CODE_for_avx_ptestcv4di.
7522         * config/i386/i386-expand.cc (ix86_expand_branch): Use CCZmode
7523         when expanding UNSPEC_PTEST to compare against zero.
7524         * config/i386/i386-features.cc (scalar_chain::convert_compare):
7525         Likewise generate CCZmode UNSPEC_PTESTs when converting comparisons.
7526         (general_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
7527         (timode_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
7528         * config/i386/i386-protos.h (ix86_match_ptest_ccmode): Prototype.
7529         * config/i386/i386.cc (ix86_match_ptest_ccmode): New predicate to
7530         check for suitable matching modes for the UNSPEC_PTEST pattern.
7531         * config/i386/sse.md (define_split): When splitting UNSPEC_MOVMSK
7532         to UNSPEC_PTEST, preserve the FLAG_REG mode as CCZ.
7533         (*<sse4_1>_ptest<mode>): Add asterisk to hide define_insn.  Remove
7534         ":CC" mode of FLAGS_REG, instead use ix86_match_ptest_ccmode.
7535         (<sse4_1>_ptestz<mode>): New define_expand to specify CCZ.
7536         (<sse4_1>_ptestc<mode>): New define_expand to specify CCC.
7537         (<sse4_1>_ptest<mode>): A define_expand using CC to preserve the
7538         current behavior.
7539         (*ptest<mode>_and): Specify CCZ to only perform this optimization
7540         when only the Z flag is required.
7542 2023-06-01  Jonathan Wakely  <jwakely@redhat.com>
7544         PR target/109954
7545         * doc/invoke.texi (x86 Options): Fix description of -m32 option.
7547 2023-06-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7549         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
7550         Add =r,m and =r,m alternatives.
7551         (load_pair<DREG:mode><DREG2:mode>): Likewise.
7552         (vec_store_pair<DREG:mode><DREG2:mode>): Likewise.
7554 2023-06-01  Pan Li  <pan2.li@intel.com>
7556         * common/config/riscv/riscv-common.cc: Add FP_16 mask to zvfhmin
7557         and zvfh.
7558         * config/riscv/genrvv-type-indexer.cc (valid_type): Allow FP16.
7559         (main): Disable FP16 tuple.
7560         * config/riscv/riscv-opts.h (MASK_VECTOR_ELEN_FP_16): New macro.
7561         (TARGET_VECTOR_ELEN_FP_16): Ditto.
7562         * config/riscv/riscv-vector-builtins.cc (check_required_extensions):
7563         Add FP16.
7564         * config/riscv/riscv-vector-builtins.def (vfloat16mf4_t): New type.
7565         (vfloat16mf2_t): Ditto.
7566         (vfloat16m1_t): Ditto.
7567         (vfloat16m2_t): Ditto.
7568         (vfloat16m4_t): Ditto.
7569         (vfloat16m8_t): Ditto.
7570         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ELEN_FP_16):
7571         New macro.
7572         * config/riscv/riscv-vector-switch.def (ENTRY): Allow FP16
7573         machine mode based on TARGET_VECTOR_ELEN_FP_16.
7575 2023-06-01  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7577         * config/riscv/riscv-vector-builtins.cc (register_frm): New function.
7578         (DEF_RVV_FRM_ENUM): New macro.
7579         (handle_pragma_vector): Add FRM enum
7580         * config/riscv/riscv-vector-builtins.def (DEF_RVV_FRM_ENUM): New macro.
7581         (RNE): Ditto.
7582         (RTZ): Ditto.
7583         (RDN): Ditto.
7584         (RUP): Ditto.
7585         (RMM): Ditto.
7587 2023-05-31  Roger Sayle  <roger@nextmovesoftware.com>
7588             Richard Sandiford  <richard.sandiford@arm.com>
7590         * fold-const-call.cc (fold_const_call_ss) <CFN_BUILT_IN_BSWAP*>:
7591         Update call to wi::bswap.
7592         * simplify-rtx.cc (simplify_const_unary_operation) <case BSWAP>:
7593         Update call to wi::bswap.
7594         * tree-ssa-ccp.cc (evaluate_stmt) <case BUILT_IN_BSWAP*>:
7595         Update calls to wi::bswap.
7596         * wide-int.cc (wide_int_storage::bswap): Remove/rename to...
7597         (wi::bswap_large): New function, with revised API.
7598         * wide-int.h (wi::bswap): New (template) function prototype.
7599         (wide_int_storage::bswap): Remove method.
7600         (sext_large, zext_large): Consistent indentation/line wrapping.
7601         (bswap_large): Prototype helper function containing implementation.
7602         (wi::bswap): New template wrapper around bswap_large.
7604 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7606         PR target/99195
7607         * config/aarch64/aarch64-simd.md (<sur>dot_prod<vsi2qi>): Rename to...
7608         (<sur>dot_prod<vsi2qi><vczle><vczbe>): ... This.
7609         (usdot_prod<vsi2qi>): Rename to...
7610         (usdot_prod<vsi2qi><vczle><vczbe>): ... This.
7611         (aarch64_<sur>dot_lane<vsi2qi>): Rename to...
7612         (aarch64_<sur>dot_lane<vsi2qi><vczle><vczbe>): ... This.
7613         (aarch64_<sur>dot_laneq<vsi2qi>): Rename to...
7614         (aarch64_<sur>dot_laneq<vsi2qi><vczle><vczbe>): ... This.
7615         (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi>): Rename to...
7616         (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi><vczle><vczbe>):
7617         ... This.
7619 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7621         PR target/99195
7622         * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh<mode>): Rename to...
7623         (aarch64_sq<r>dmulh<mode><vczle><vczbe>): ... This.
7624         (aarch64_sq<r>dmulh_n<mode>): Rename to...
7625         (aarch64_sq<r>dmulh_n<mode><vczle><vczbe>): ... This.
7626         (aarch64_sq<r>dmulh_lane<mode>): Rename to...
7627         (aarch64_sq<r>dmulh_lane<mode><vczle><vczbe>): ... This.
7628         (aarch64_sq<r>dmulh_laneq<mode>): Rename to...
7629         (aarch64_sq<r>dmulh_laneq<mode><vczle><vczbe>): ... This.
7630         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>): Rename to...
7631         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode><vczle><vczbe>): ... This.
7632         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Rename to...
7633         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode><vczle><vczbe>): ... This.
7634         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Rename to...
7635         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode><vczle><vczbe>): ... This.
7637 2023-05-31  David Faust  <david.faust@oracle.com>
7639         * btfout.cc (btf_kind_names): New.
7640         (btf_kind_name): New.
7641         (btf_absolute_var_id): New utility function.
7642         (btf_relative_var_id): Likewise.
7643         (btf_relative_func_id): Likewise.
7644         (btf_absolute_datasec_id): Likewise.
7645         (btf_asm_type_ref): New.
7646         (btf_asm_type): Update asm comments and use btf_asm_type_ref ().
7647         (btf_asm_array): Likewise. Accept ctf_container_ref parameter.
7648         (btf_asm_varent): Likewise.
7649         (btf_asm_func_arg): Likewise.
7650         (btf_asm_datasec_entry): Likewise.
7651         (btf_asm_datasec_type): Likewise.
7652         (btf_asm_func_type): Likewise. Add index parameter.
7653         (btf_asm_enum_const): Likewise.
7654         (btf_asm_sou_member): Likewise.
7655         (output_btf_vars): Update btf_asm_* call accordingly.
7656         (output_asm_btf_sou_fields): Likewise.
7657         (output_asm_btf_enum_list): Likewise.
7658         (output_asm_btf_func_args_list): Likewise.
7659         (output_asm_btf_vlen_bytes): Likewise.
7660         (output_btf_func_types): Add ctf_container_ref parameter.
7661         Pass it to btf_asm_func_type.
7662         (output_btf_datasec_types): Update btf_asm_datsec_type call similarly.
7663         (btf_output): Update output_btf_func_types call similarly.
7665 2023-05-31  David Faust  <david.faust@oracle.com>
7667         * btfout.cc (btf_asm_type): Add dedicated cases for BTF_KIND_ARRAY
7668         and BTF_KIND_FWD which do not use the size/type field at all.
7670 2023-05-31  Uros Bizjak  <ubizjak@gmail.com>
7672         * rtl.h (subreg_lowpart_p): Change return type from int to bool.
7673         (active_insn_p): Ditto.
7674         (in_sequence_p): Ditto.
7675         (unshare_all_rtl): Change return type from int to void.
7676         * emit-rtl.h (mem_expr_equal_p): Change return type from int to bool.
7677         * emit-rtl.cc (subreg_lowpart_p): Change return type from int to bool
7678         and adjust function body accordingly.
7679         (mem_expr_equal_p): Ditto.
7680         (unshare_all_rtl): Change return type from int to void
7681         and adjust function body accordingly.
7682         (verify_rtx_sharing): Remove unneeded return.
7683         (active_insn_p): Change return type from int to bool
7684         and adjust function body accordingly.
7685         (in_sequence_p): Ditto.
7687 2023-05-31  Uros Bizjak  <ubizjak@gmail.com>
7689         * rtl.h (true_dependence): Change return type from int to bool.
7690         (canon_true_dependence): Ditto.
7691         (read_dependence): Ditto.
7692         (anti_dependence): Ditto.
7693         (canon_anti_dependence): Ditto.
7694         (output_dependence): Ditto.
7695         (canon_output_dependence): Ditto.
7696         (may_alias_p): Ditto.
7697         * alias.h (alias_sets_conflict_p): Ditto.
7698         (alias_sets_must_conflict_p): Ditto.
7699         (objects_must_conflict_p): Ditto.
7700         (nonoverlapping_memrefs_p): Ditto.
7701         * alias.cc (rtx_equal_for_memref_p): Remove forward declaration.
7702         (record_set): Ditto.
7703         (base_alias_check): Ditto.
7704         (find_base_value): Ditto.
7705         (mems_in_disjoint_alias_sets_p): Ditto.
7706         (get_alias_set_entry): Ditto.
7707         (decl_for_component_ref): Ditto.
7708         (write_dependence_p): Ditto.
7709         (memory_modified_1): Ditto.
7710         (mems_in_disjoint_alias_set_p): Change return type from int to bool
7711         and adjust function body accordingly.
7712         (alias_sets_conflict_p): Ditto.
7713         (alias_sets_must_conflict_p): Ditto.
7714         (objects_must_conflict_p): Ditto.
7715         (rtx_equal_for_memref_p): Ditto.
7716         (base_alias_check): Ditto.
7717         (read_dependence): Ditto.
7718         (nonoverlapping_memrefs_p): Ditto.
7719         (true_dependence_1): Ditto.
7720         (true_dependence): Ditto.
7721         (canon_true_dependence): Ditto.
7722         (write_dependence_p): Ditto.
7723         (anti_dependence): Ditto.
7724         (canon_anti_dependence): Ditto.
7725         (output_dependence): Ditto.
7726         (canon_output_dependence): Ditto.
7727         (may_alias_p): Ditto.
7728         (init_alias_analysis): Change "changed" variable to bool.
7730 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7732         * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): Change
7733         expand into define_insn_and_split.
7735 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7737         * config/riscv/vector.md: Remove FRM.
7739 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7741         * config/riscv/vector.md: Remove FRM.
7743 2023-05-31  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
7745         * config/riscv/vector.md: Remove FRM.
7747 2023-05-31  Christophe Lyon  <christophe.lyon@linaro.org>
7749         PR target/110039
7750         * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
7751         pattern.
7753 2023-05-31  Richard Biener  <rguenther@suse.de>
7755         PR ipa/109983
7756         PR tree-optimization/109143
7757         * tree-ssa-structalias.cc (struct topo_info): Remove.
7758         (init_topo_info): Likewise.
7759         (free_topo_info): Likewise.
7760         (compute_topo_order): Simplify API, put the component
7761         with ESCAPED last so it's processed first.
7762         (topo_visit): Adjust.
7763         (solve_graph): Likewise.
7765 2023-05-31  Richard Biener  <rguenther@suse.de>
7767         * tree-ssa-structalias.cc (constraint_stats::num_avoided_edges):
7768         New.
7769         (add_graph_edge): Count redundant edges we avoid to create.
7770         (dump_sa_stats): Dump them.
7771         (ipa_pta_execute): Do not dump generating constraints when
7772         we are not dumping them.
7774 2023-05-31  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7776         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>): Rewrite
7777         output template to avoid explicit switch on which_alternative.
7778         (*aarch64_simd_mov<VQMOV:mode>): Likewise.
7779         (and<mode>3): Likewise.
7780         (ior<mode>3): Likewise.
7781         * config/aarch64/aarch64.md (*mov<mode>_aarch64): Likewise.
7783 2023-05-31  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
7785         * config/xtensa/predicates.md (xtensa_bit_join_operator):
7786         New predicate.
7787         * config/xtensa/xtensa.md (ior_op): Remove.
7788         (*shlrd_reg): Rename from "*shlrd_reg_<code>", and add the
7789         insn_and_split pattern of the same name to express and capture
7790         the bit-combining operation with both sides swapped.
7791         In addition, replace use of code iterator with new operator
7792         predicate.
7793         (*shlrd_const, *shlrd_per_byte):
7794         Likewise regarding the code iterator.
7796 2023-05-31  Cui, Lili  <lili.cui@intel.com>
7798         PR tree-optimization/110038
7799         * params.opt: Add a limit on tree-reassoc-width.
7800         * tree-ssa-reassoc.cc
7801         (rewrite_expr_tree_parallel): Add width limit.
7803 2023-05-31  Pan Li  <pan2.li@intel.com>
7805         * common/config/riscv/riscv-common.cc:
7806         (riscv_implied_info): Add zvfh item.
7807         (riscv_ext_version_table): Ditto.
7808         (riscv_ext_flag_table): Ditto.
7809         * config/riscv/riscv-opts.h (MASK_ZVFH): New macro.
7810         (TARGET_ZVFH): Ditto.
7812 2023-05-30  liuhongt  <hongtao.liu@intel.com>
7814         PR tree-optimization/108804
7815         * tree-vect-patterns.cc (vect_get_range_info): Remove static.
7816         * tree-vect-stmts.cc (vect_create_vectorized_demotion_stmts):
7817         Add new parameter narrow_src_p.
7818         (vectorizable_conversion): Enhance NARROW FLOAT_EXPR
7819         vectorization by truncating to lower precision.
7820         * tree-vectorizer.h (vect_get_range_info): New declare.
7822 2023-05-30  Vladimir N. Makarov  <vmakarov@redhat.com>
7824         * lra-int.h (lra_update_sp_offset): Add the prototype.
7825         * lra.cc (setup_sp_offset): Change the return type.  Use
7826         lra_update_sp_offset.
7827         * lra-eliminations.cc (lra_update_sp_offset): New function.
7828         (lra_process_new_insns): Push the current insn to reprocess if the
7829         input reload changes sp offset.
7831 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
7833         PR target/110041
7834         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
7835         Fix misleading identation.
7837 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
7839         * rtl.h (comparison_dominates_p): Change return type from int to bool.
7840         (condjump_p): Ditto.
7841         (any_condjump_p): Ditto.
7842         (any_uncondjump_p): Ditto.
7843         (simplejump_p): Ditto.
7844         (returnjump_p): Ditto.
7845         (eh_returnjump_p): Ditto.
7846         (onlyjump_p): Ditto.
7847         (invert_jump_1): Ditto.
7848         (invert_jump): Ditto.
7849         (rtx_renumbered_equal_p): Ditto.
7850         (redirect_jump_1): Ditto.
7851         (redirect_jump): Ditto.
7852         (condjump_in_parallel_p): Ditto.
7853         * jump.cc (invert_exp_1): Adjust forward declaration.
7854         (comparison_dominates_p): Change return type from int to bool
7855         and adjust function body accordingly.
7856         (simplejump_p): Ditto.
7857         (condjump_p): Ditto.
7858         (condjump_in_parallel_p): Ditto.
7859         (any_uncondjump_p): Ditto.
7860         (any_condjump_p): Ditto.
7861         (returnjump_p): Ditto.
7862         (eh_returnjump_p): Ditto.
7863         (onlyjump_p): Ditto.
7864         (redirect_jump_1): Ditto.
7865         (redirect_jump): Ditto.
7866         (invert_exp_1): Ditto.
7867         (invert_jump_1): Ditto.
7868         (invert_jump): Ditto.
7869         (rtx_renumbered_equal_p): Ditto.
7871 2023-05-30  Andrew Pinski  <apinski@marvell.com>
7873         * fold-const.cc (minmax_from_comparison): Add support for NE_EXPR.
7874         * match.pd ((cond (cmp (convert1? x) c1) (convert2? x) c2) pattern):
7875         Add ne as a possible cmp.
7876         ((a CMP b) ? minmax<a, c> : minmax<b, c> pattern): Likewise.
7878 2023-05-30  Andrew Pinski  <apinski@marvell.com>
7880         * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): New
7881         pattern.
7883 2023-05-30  Roger Sayle  <roger@nextmovesoftware.com>
7885         * simplify-rtx.cc (simplify_binary_operation_1) <AND>: Use wide-int
7886         instead of HWI_COMPUTABLE_MODE_P and UINTVAL in transformation of
7887         (and (extend X) C) as (zero_extend (and X C)), to also optimize
7888         modes wider than HOST_WIDE_INT.
7890 2023-05-30  Roger Sayle  <roger@nextmovesoftware.com>
7892         PR target/107172
7893         * simplify-rtx.cc (simplify_const_relational_operation): Return
7894         early if we have a MODE_CC comparison that isn't a COMPARE against
7895         const0_rtx.
7897 2023-05-30  Robin Dapp  <rdapp@ventanamicro.com>
7899         * config/riscv/riscv.cc (riscv_const_insns): Allow
7900         const_vec_duplicates.
7902 2023-05-30  liuhongt  <hongtao.liu@intel.com>
7904         PR middle-end/108938
7905         * gimple-ssa-store-merging.cc (is_bswap_or_nop_p): New
7906         function, cut from original find_bswap_or_nop function.
7907         (find_bswap_or_nop): Add a new parameter, detect bswap +
7908         rotate and save rotate result in the new parameter.
7909         (bswap_replace): Add a new parameter to indicate rotate and
7910         generate rotate stmt if needed.
7911         (maybe_optimize_vector_constructor): Adjust for new rotate
7912         parameter in the upper 2 functions.
7913         (pass_optimize_bswap::execute): Ditto.
7914         (imm_store_chain_info::output_merged_store): Ditto.
7916 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7918         * config/aarch64/aarch64-simd.md (aarch64_<sur>adalp<mode>): Delete.
7919         (aarch64_<su>adalp<mode>): New define_expand.
7920         (*aarch64_<su>adalp<mode><vczle><vczbe>_insn): New define_insn.
7921         (aarch64_<su>addlp<mode>): Convert to define_expand.
7922         (*aarch64_<su>addlp<mode><vczle><vczbe>_insn): New define_insn.
7923         * config/aarch64/iterators.md (UNSPEC_SADDLP, UNSPEC_UADDLP): Delete.
7924         (ADALP): Likewise.
7925         (USADDLP): Likewise.
7926         * config/aarch64/predicates.md (vect_par_cnst_even_or_odd_half): Define.
7928 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7930         * config/aarch64/aarch64-builtins.cc (VAR1): Move to after inclusion of
7931         aarch64-builtin-iterators.h.  Add definition to remap shadd, uhadd,
7932         srhadd, urhadd builtin codes for standard optab ones.
7933         * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor): Rename to...
7934         (<su_optab>avg<mode>3_floor): ... This.  Expand to RTL codes rather than
7935         unspec.
7936         (<u>avg<mode>3_ceil): Rename to...
7937         (<su_optab>avg<mode>3_ceil): ... This.  Expand to RTL codes rather than
7938         unspec.
7939         (aarch64_<su>hsub<mode>): New define_expand.
7940         (aarch64_<sur>h<addsub><mode><vczle><vczbe>): Split into...
7941         (*aarch64_<su>h<ADDSUB:optab><mode><vczle><vczbe>_insn): ... This...
7942         (*aarch64_<su>rhadd<mode><vczle><vczbe>_insn): ... And this.
7944 2023-05-30  Andreas Schwab  <schwab@suse.de>
7946         PR target/110036
7947         * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
7948         match libsanitizer.
7950 2023-05-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7952         * config/aarch64/aarch64-modes.def (V16HI, V8SI, V4DI, V2TI): New modes.
7953         * config/aarch64/aarch64-protos.h (aarch64_const_vec_rnd_cst_p):
7954         Declare prototype.
7955         (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
7956         * config/aarch64/aarch64-simd.md (*aarch64_simd_sra<mode>): Rename to...
7957         (aarch64_<sra_op>sra_n<mode>_insn): ... This.
7958         (aarch64_<sra_op>rsra_n<mode>_insn): New define_insn.
7959         (aarch64_<sra_op>sra_n<mode>): New define_expand.
7960         (aarch64_<sra_op>rsra_n<mode>): Likewise.
7961         (aarch64_<sur>sra_n<mode>): Rename to...
7962         (aarch64_<sur>sra_ndi): ... This.
7963         * config/aarch64/aarch64.cc (aarch64_classify_vector_mode): Add
7964         any_target_p argument.
7965         (aarch64_extract_vec_duplicate_wide_int): Define.
7966         (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
7967         (aarch64_const_vec_rnd_cst_p): Likewise.
7968         (aarch64_vector_mode_supported_any_target_p): Likewise.
7969         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Likewise.
7970         * config/aarch64/iterators.md (UNSPEC_SRSRA, UNSPEC_URSRA): Delete.
7971         (VSRA): Adjust for the above.
7972         (sur): Likewise.
7973         (V2XWIDE): New mode_attr.
7974         (vec_or_offset): Likewise.
7975         (SHIFTEXTEND): Likewise.
7976         * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec): New
7977         predicate.
7978         * doc/tm.texi (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
7979         clarify that it applies to current target options.
7980         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Document.
7981         * doc/tm.texi.in: Regenerate.
7982         * stor-layout.cc (mode_for_vector): Check
7983         vector_mode_supported_any_target_p when iterating through vector modes.
7984         * target.def (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
7985         clarify that it applies to current target options.
7986         (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Define.
7988 2023-05-30  Lili Cui  <lili.cui@intel.com>
7990         PR tree-optimization/98350
7991         * tree-ssa-reassoc.cc
7992         (rewrite_expr_tree_parallel): Rewrite this function.
7993         (rank_ops_for_fma): New.
7994         (reassociate_bb): Handle new function.
7996 2023-05-30  Uros Bizjak  <ubizjak@gmail.com>
7998         * rtl.h (rtx_addr_can_trap_p): Change return type from int to bool.
7999         (rtx_unstable_p): Ditto.
8000         (reg_mentioned_p): Ditto.
8001         (reg_referenced_p): Ditto.
8002         (reg_used_between_p): Ditto.
8003         (reg_set_between_p): Ditto.
8004         (modified_between_p): Ditto.
8005         (no_labels_between_p): Ditto.
8006         (modified_in_p): Ditto.
8007         (reg_set_p): Ditto.
8008         (multiple_sets): Ditto.
8009         (set_noop_p): Ditto.
8010         (noop_move_p): Ditto.
8011         (reg_overlap_mentioned_p): Ditto.
8012         (dead_or_set_p): Ditto.
8013         (dead_or_set_regno_p): Ditto.
8014         (find_reg_fusage): Ditto.
8015         (find_regno_fusage): Ditto.
8016         (side_effects_p): Ditto.
8017         (volatile_refs_p): Ditto.
8018         (volatile_insn_p): Ditto.
8019         (may_trap_p_1): Ditto.
8020         (may_trap_p): Ditto.
8021         (may_trap_or_fault_p): Ditto.
8022         (computed_jump_p): Ditto.
8023         (auto_inc_p): Ditto.
8024         (loc_mentioned_in_p): Ditto.
8025         * rtlanal.cc (computed_jump_p_1): Adjust forward declaration.
8026         (rtx_unstable_p): Change return type from int to bool
8027         and adjust function body accordingly.
8028         (rtx_addr_can_trap_p): Ditto.
8029         (reg_mentioned_p): Ditto.
8030         (no_labels_between_p): Ditto.
8031         (reg_used_between_p): Ditto.
8032         (reg_referenced_p): Ditto.
8033         (reg_set_between_p): Ditto.
8034         (reg_set_p): Ditto.
8035         (modified_between_p): Ditto.
8036         (modified_in_p): Ditto.
8037         (multiple_sets): Ditto.
8038         (set_noop_p): Ditto.
8039         (noop_move_p): Ditto.
8040         (reg_overlap_mentioned_p): Ditto.
8041         (dead_or_set_p): Ditto.
8042         (dead_or_set_regno_p): Ditto.
8043         (find_reg_fusage): Ditto.
8044         (find_regno_fusage): Ditto.
8045         (remove_node_from_insn_list): Ditto.
8046         (volatile_insn_p): Ditto.
8047         (volatile_refs_p): Ditto.
8048         (side_effects_p): Ditto.
8049         (may_trap_p_1): Ditto.
8050         (may_trap_p): Ditto.
8051         (may_trap_or_fault_p): Ditto.
8052         (computed_jump_p): Ditto.
8053         (auto_inc_p): Ditto.
8054         (loc_mentioned_in_p): Ditto.
8055         * combine.cc (can_combine_p): Update indirect function.
8057 2023-05-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8059         * config/riscv/autovec.md (<optab><mode><vconvert>2): New pattern.
8060         * config/riscv/iterators.md: New attribute.
8061         * config/riscv/vector-iterators.md: New attribute.
8063 2023-05-30  From: Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8065         * config/riscv/riscv.md: Fix signed and unsigned comparison
8066         warning.
8068 2023-05-30  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8070         * config/riscv/autovec.md (fnma<mode>4): New pattern.
8071         (*fnma<mode>): Ditto.
8073 2023-05-29  Die Li  <lidie@eswincomputing.com>
8075         * config/riscv/riscv.cc (riscv_expand_conditional_move_onesided):
8076         Delete.
8077         (riscv_expand_conditional_move):  Reuse the TARGET_SFB_ALU expand
8078         process for TARGET_XTHEADCONDMOV
8080 2023-05-29  Uros Bizjak  <ubizjak@gmail.com>
8082         PR target/110021
8083         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also require
8084         TARGET_AVX512BW to generate truncv16hiv16qi2.
8086 2023-05-29  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
8088         * config/riscv/riscv.md (and<mode>3): New expander.
8089         (*and<mode>3) New pattern.
8090         * config/riscv/predicates.md (arith_operand_or_mode_mask): New
8091         predicate.
8093 2023-05-29  Pan Li  <pan2.li@intel.com>
8095         * config/riscv/riscv-v.cc (emit_vlmax_insn): Remove unnecessary
8096         comments and rename local variables.
8097         (emit_nonvlmax_insn): Diito.
8098         (emit_vlmax_merge_insn): Ditto.
8099         (emit_vlmax_cmp_insn): Ditto.
8100         (emit_vlmax_cmp_mu_insn): Ditto.
8101         (emit_scalar_move_insn): Ditto.
8103 2023-05-29  Pan Li  <pan2.li@intel.com>
8105         * config/riscv/riscv-v.cc (emit_vlmax_insn): Eliminate the
8106         magic number.
8107         (emit_nonvlmax_insn): Ditto.
8108         (emit_vlmax_merge_insn): Ditto.
8109         (emit_vlmax_cmp_insn): Ditto.
8110         (emit_vlmax_cmp_mu_insn): Ditto.
8111         (expand_vec_series): Ditto.
8113 2023-05-29  Pan Li  <pan2.li@intel.com>
8115         * config/riscv/riscv-protos.h (enum insn_type): New type.
8116         * config/riscv/riscv-v.cc (RVV_INSN_OPERANDS_MAX): New macro.
8117         (rvv_builder::can_duplicate_repeating_sequence_p): Align the referenced
8118         class member.
8119         (rvv_builder::get_merged_repeating_sequence): Ditto.
8120         (rvv_builder::repeating_sequence_use_merge_profitable_p): New function
8121         to evaluate the optimization cost.
8122         (rvv_builder::get_merge_scalar_mask): New function to get the merge
8123         mask.
8124         (emit_scalar_move_insn): New function to emit vmv.s.x.
8125         (emit_vlmax_integer_move_insn): New function to emit vlmax vmv.v.x.
8126         (emit_nonvlmax_integer_move_insn): New function to emit nonvlmax
8127         vmv.v.x.
8128         (get_repeating_sequence_dup_machine_mode): New function to get the dup
8129         machine mode.
8130         (expand_vector_init_merge_repeating_sequence): New function to perform
8131         the optimization.
8132         (expand_vec_init): Add this vector init optimization.
8133         * config/riscv/riscv.h (BITS_PER_WORD): New macro.
8135 2023-05-29  Eric Botcazou  <ebotcazou@adacore.com>
8137         * tree-ssa-loop-manip.cc (create_iv): Try harder to find a SLOC to
8138         put onto the increment when it is inserted after the position.
8140 2023-05-29  Eric Botcazou  <ebotcazou@adacore.com>
8142         * match.pd ((T)P - (T)(P + A) -> -(T) A): Avoid artificial overflow
8143         on constants.
8145 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8147         * config/riscv/riscv-vsetvl.cc (source_equal_p): Fix ICE.
8149 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8151         * config/riscv/autovec.md (fma<mode>4): New pattern.
8152         (*fma<mode>): Ditto.
8153         * config/riscv/riscv-protos.h (enum insn_type): New enum.
8154         (emit_vlmax_ternary_insn): New function.
8155         * config/riscv/riscv-v.cc (emit_vlmax_ternary_insn): Ditto.
8157 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8159         * config/riscv/vector.md: Fix vimuladd instruction bug.
8161 2023-05-29  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8163         * config/riscv/riscv.cc (global_state_unknown_p): New function.
8164         (riscv_mode_after): Fix incorrect VXM.
8166 2023-05-29  Pan Li  <pan2.li@intel.com>
8168         * common/config/riscv/riscv-common.cc:
8169         (riscv_implied_info): Add zvfhmin item.
8170         (riscv_ext_version_table): Ditto.
8171         (riscv_ext_flag_table): Ditto.
8172         * config/riscv/riscv-opts.h (MASK_ZVFHMIN): New macro.
8173         (TARGET_ZFHMIN): Align indent.
8174         (TARGET_ZFH): Ditto.
8175         (TARGET_ZVFHMIN): New macro.
8177 2023-05-27  liuhongt  <hongtao.liu@intel.com>
8179         PR target/100711
8180         * config/i386/sse.md (*andnot<mode>3): Extend below splitter
8181         to VI_AVX2 to cover more modes.
8183 2023-05-27  liuhongt  <hongtao.liu@intel.com>
8185         * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
8186         Remove ATOM and ICELAKE(and later) core processors.
8188 2023-05-26  Robin Dapp  <rdapp@ventanamicro.com>
8190         * config/riscv/autovec.md (<optab><mode>2): Add vneg/vnot.
8191         (abs<mode>2): Add.
8192         * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
8193         Declare.
8194         * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
8195         function.
8197 2023-05-26  Robin Dapp  <rdapp@ventanamicro.com>
8198             Juzhe Zhong  <juzhe.zhong@rivai.ai>
8200         * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): New
8201         expander.
8202         (<optab><v_quad_trunc><mode>2): Dito.
8203         (<optab><v_oct_trunc><mode>2): Dito.
8204         (trunc<mode><v_double_trunc>2): Dito.
8205         (trunc<mode><v_quad_trunc>2): Dito.
8206         (trunc<mode><v_oct_trunc>2): Dito.
8207         * config/riscv/riscv-protos.h (vectorize_related_mode): Define.
8208         (autovectorize_vector_modes): Define.
8209         * config/riscv/riscv-v.cc (vectorize_related_mode): Implement
8210         hook.
8211         (autovectorize_vector_modes): Implement hook.
8212         * config/riscv/riscv.cc (riscv_autovectorize_vector_modes):
8213         Implement target hook.
8214         (riscv_vectorize_related_mode): Implement target hook.
8215         (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
8216         (TARGET_VECTORIZE_RELATED_MODE): Define.
8217         * config/riscv/vector-iterators.md: Add lowercase versions of
8218         mode_attr iterators.
8220 2023-05-26  Andrew Stubbs  <ams@codesourcery.com>
8221             Tobias Burnus  <tobias@codesourcery.com>
8223         * config/gcn/gcn-hsa.h (XNACKOPT): New macro.
8224         (ASM_SPEC): Use XNACKOPT.
8225         * config/gcn/gcn-opts.h (enum sram_ecc_type): Rename to ...
8226         (enum hsaco_attr_type): ... this, and generalize the names.
8227         (TARGET_XNACK): New macro.
8228         * config/gcn/gcn.cc (gcn_option_override): Update to sorry for all
8229         but -mxnack=off.
8230         (output_file_start): Update xnack handling.
8231         (gcn_hsa_declare_function_name): Use TARGET_XNACK.
8232         * config/gcn/gcn.opt (-mxnack): Add the "on/off/any" syntax.
8233         (sram_ecc_type): Rename to ...
8234         (hsaco_attr_type: ... this.)
8235         * config/gcn/mkoffload.cc (SET_XNACK_ANY): New macro.
8236         (TEST_XNACK): Delete.
8237         (TEST_XNACK_ANY): New macro.
8238         (TEST_XNACK_ON): New macro.
8239         (main): Support the new -mxnack=on/off/any syntax.
8240         * doc/invoke.texi (-mxnack): Update for new syntax.
8242 2023-05-26  Andrew Pinski  <apinski@marvell.com>
8244         * genmatch.cc (emit_debug_printf): New function.
8245         (dt_simplify::gen_1): Emit printf into the code
8246         before the `return true` or returning the folded result
8247         instead of emitting it always.
8249 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
8251         * config/xtensa/xtensa-protos.h
8252         (xtensa_expand_block_set_unrolled_loop,
8253         xtensa_expand_block_set_small_loop): Remove.
8254         (xtensa_expand_block_set): New prototype.
8255         * config/xtensa/xtensa.cc
8256         (xtensa_expand_block_set_libcall): New subfunction.
8257         (xtensa_expand_block_set_unrolled_loop,
8258         xtensa_expand_block_set_small_loop): Rewrite as subfunctions.
8259         (xtensa_expand_block_set): New function that calls the above
8260         subfunctions.
8261         * config/xtensa/xtensa.md (memsetsi): Change to invoke only
8262         xtensa_expand_block_set().
8264 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
8266         * config/xtensa/xtensa-protos.h (xtensa_m1_or_1_thru_15):
8267         New prototype.
8268         * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
8269         New function.
8270         * config/xtensa/constraints.md (O):
8271         Change to use the above function.
8272         * config/xtensa/xtensa.md (*subsi3_from_const):
8273         New insn_and_split pattern.
8275 2023-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
8277         * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3):
8278         Retract excessive line folding, and correct the value of
8279         the "length" insn attribute related to TARGET_DENSITY.
8280         (*extzvsi-1bit_addsubx): Ditto.
8282 2023-05-26  Uros Bizjak  <ubizjak@gmail.com>
8284         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi):
8285         Do not disable call to ix86_expand_vecop_qihi2.
8287 2023-05-26  liuhongt  <hongtao.liu@intel.com>
8289         PR target/109610
8290         PR target/109858
8291         * ira-costs.cc (scan_one_insn): Only use NO_REGS in cost
8292         calculation when !hard_regno_mode_ok for GENERAL_REGS and
8293         mode, otherwise still use GENERAL_REGS.
8295 2023-05-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8297         * config/riscv/riscv.cc (vector_zero_call_used_regs): Add
8298         explict VL and drop VL in ops.
8300 2023-05-25  Jin Ma  <jinma@linux.alibaba.com>
8302         * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion
8303         in different BB blocks.
8305 2023-05-25  Uros Bizjak  <ubizjak@gmail.com>
8307         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
8308         Rewrite to expand to 2x-wider (e.g. V16QI -> V16HImode)
8309         instructions when available.  Emulate truncation via
8310         ix86_expand_vec_perm_const_1 when native truncate insn
8311         is not available.
8312         (ix86_expand_vecop_qihi_partial) <case MULT>: Use pmovzx
8313         when available.  Trivially rename some variables.
8314         (ix86_expand_vecop_qihi): Unconditionally call ix86_expand_vecop_qihi2.
8315         * config/i386/i386.cc (ix86_multiplication_cost): Rewrite cost
8316         calculation of V*QImode emulations to account for generation of
8317         2x-wider mode instructions.
8318         (ix86_shift_rotate_cost): Update cost calculation of V*QImode
8319         emulations to account for generation of 2x-wider mode instructions.
8321 2023-05-25  Georg-Johann Lay  <avr@gjlay.de>
8323         PR target/104327
8324         * config/avr/avr.cc (avr_can_inline_p): New static function.
8325         (TARGET_CAN_INLINE_P): Define to that function.
8327 2023-05-25  Georg-Johann Lay  <avr@gjlay.de>
8329         PR target/82931
8330         * config/avr/avr.md (*movbitqi.0): Rename to *movbit<mode>.0-6.
8331         Handle any bit position and use mode QISI.
8332         * config/avr/avr.cc (avr_rtx_costs_1) [IOR]: Return a cost
8333         of 2 insns for bit-transfer of respective style.
8335 2023-05-25  Christophe Lyon  <christophe.lyon@linaro.org>
8337         * config/arm/iterators.md (MVE_6): Remove.
8338         * config/arm/mve.md: Replace MVE_6 with MVE_5.
8340 2023-05-25  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
8341             Richard Sandiford  <richard.sandiford@arm.com>
8343         * tree-vect-loop-manip.cc (vect_adjust_loop_lens_control): New
8344         function.
8345         (vect_set_loop_controls_directly): Add decrement IV support.
8346         (vect_set_loop_condition_partial_vectors): Ditto.
8347         * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): New
8348         variable.
8349         * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
8350         macro.
8352 2023-05-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8354         PR target/99195
8355         * config/aarch64/aarch64-simd.md (aarch64_fcadd<rot><mode>): Rename to...
8356         (aarch64_fcadd<rot><mode><vczle><vczbe>): ... This.
8357         Fix canonicalization of PLUS operands.
8358         (aarch64_fcmla<rot><mode>): Rename to...
8359         (aarch64_fcmla<rot><mode><vczle><vczbe>): ... This.
8360         Fix canonicalization of PLUS operands.
8361         (aarch64_fcmla_lane<rot><mode>): Rename to...
8362         (aarch64_fcmla_lane<rot><mode><vczle><vczbe>): ... This.
8363         Fix canonicalization of PLUS operands.
8364         (aarch64_fcmla_laneq<rot>v4hf): Rename to...
8365         (aarch64_fcmla_laneq<rot>v4hf<vczle><vczbe>): ... This.
8366         Fix canonicalization of PLUS operands.
8367         (aarch64_fcmlaq_lane<rot><mode>): Fix canonicalization of PLUS operands.
8369 2023-05-25  Chris Sidebottom  <chris.sidebottom@arm.com>
8371         * config/arm/arm.md (rbitsi2): Rename to...
8372         (arm_rbit): ... This.
8373         (ctzsi2): Adjust for the above.
8374         (arm_rev16si2): Convert to define_expand.
8375         (arm_rev16si2_alt1): New pattern.
8376         (arm_rev16si2_alt): Rename to...
8377         (*arm_rev16si2_alt2): ... This.
8378         * config/arm/arm_acle.h (__ror, __rorl, __rorll, __clz, __clzl, __clzll,
8379         __cls, __clsl, __clsll, __revsh, __rev, __revl, __revll, __rev16,
8380         __rev16l, __rev16ll, __rbit, __rbitl, __rbitll): Define intrinsics.
8381         * config/arm/arm_acle_builtins.def (rbit, rev16si2): Define builtins.
8383 2023-05-25  Alex Coplan  <alex.coplan@arm.com>
8385         PR target/109800
8386         * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
8387         instead of DFmode.
8388         * config/arm/vfp.md (no_literal_pool_df_immediate): Rather than punning an
8389         lvalue DFmode pseudo into DImode, use a DImode pseudo and pun it into
8390         DFmode as an rvalue.
8392 2023-05-25  Richard Biener  <rguenther@suse.de>
8394         PR target/109955
8395         * tree-vect-stmts.cc (vectorizable_condition): For
8396         embedded comparisons also handle the case when the target
8397         only provides vec_cmp and vcond_mask.
8399 2023-05-25  Claudiu Zissulescu  <claziss@gmail.com>
8401         * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using
8402         TLS Local Dynamic.
8404 2023-05-25  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
8406         * config/aarch64/aarch64.cc (scalar_move_insn_p): New function.
8407         (seq_cost_ignoring_scalar_moves): Likewise.
8408         (aarch64_expand_vector_init): Call seq_cost_ignoring_scalar_moves.
8410 2023-05-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8412         * config/aarch64/arm_neon.h (vcage_f64): Reimplement with builtins.
8413         (vcage_f32): Likewise.
8414         (vcages_f32): Likewise.
8415         (vcageq_f32): Likewise.
8416         (vcaged_f64): Likewise.
8417         (vcageq_f64): Likewise.
8418         (vcagts_f32): Likewise.
8419         (vcagt_f32): Likewise.
8420         (vcagt_f64): Likewise.
8421         (vcagtq_f32): Likewise.
8422         (vcagtd_f64): Likewise.
8423         (vcagtq_f64): Likewise.
8424         (vcale_f32): Likewise.
8425         (vcale_f64): Likewise.
8426         (vcaled_f64): Likewise.
8427         (vcales_f32): Likewise.
8428         (vcaleq_f32): Likewise.
8429         (vcaleq_f64): Likewise.
8430         (vcalt_f32): Likewise.
8431         (vcalt_f64): Likewise.
8432         (vcaltd_f64): Likewise.
8433         (vcaltq_f32): Likewise.
8434         (vcaltq_f64): Likewise.
8435         (vcalts_f32): Likewise.
8437 2023-05-25  Hu, Lin1  <lin1.hu@intel.com>
8439         PR target/109173
8440         PR target/109174
8441         * config/i386/avx512bwintrin.h (_mm512_srli_epi16): Change type from
8442         int to const int or const int to const unsigned int.
8443         (_mm512_mask_srli_epi16): Ditto.
8444         (_mm512_slli_epi16): Ditto.
8445         (_mm512_mask_slli_epi16): Ditto.
8446         (_mm512_maskz_slli_epi16): Ditto.
8447         (_mm512_srai_epi16): Ditto.
8448         (_mm512_mask_srai_epi16): Ditto.
8449         (_mm512_maskz_srai_epi16): Ditto.
8450         * config/i386/avx512fintrin.h (_mm512_slli_epi64): Ditto.
8451         (_mm512_mask_slli_epi64): Ditto.
8452         (_mm512_maskz_slli_epi64): Ditto.
8453         (_mm512_srli_epi64): Ditto.
8454         (_mm512_mask_srli_epi64): Ditto.
8455         (_mm512_maskz_srli_epi64): Ditto.
8456         (_mm512_srai_epi64): Ditto.
8457         (_mm512_mask_srai_epi64): Ditto.
8458         (_mm512_maskz_srai_epi64): Ditto.
8459         (_mm512_slli_epi32): Ditto.
8460         (_mm512_mask_slli_epi32): Ditto.
8461         (_mm512_maskz_slli_epi32): Ditto.
8462         (_mm512_srli_epi32): Ditto.
8463         (_mm512_mask_srli_epi32): Ditto.
8464         (_mm512_maskz_srli_epi32): Ditto.
8465         (_mm512_srai_epi32): Ditto.
8466         (_mm512_mask_srai_epi32): Ditto.
8467         (_mm512_maskz_srai_epi32): Ditto.
8468         * config/i386/avx512vlbwintrin.h (_mm256_mask_srai_epi16): Ditto.
8469         (_mm256_maskz_srai_epi16): Ditto.
8470         (_mm_mask_srai_epi16): Ditto.
8471         (_mm_maskz_srai_epi16): Ditto.
8472         (_mm256_mask_slli_epi16): Ditto.
8473         (_mm256_maskz_slli_epi16): Ditto.
8474         (_mm_mask_slli_epi16): Ditto.
8475         (_mm_maskz_slli_epi16): Ditto.
8476         (_mm_maskz_srli_epi16): Ditto.
8477         * config/i386/avx512vlintrin.h (_mm256_mask_srli_epi32): Ditto.
8478         (_mm256_maskz_srli_epi32): Ditto.
8479         (_mm_mask_srli_epi32): Ditto.
8480         (_mm_maskz_srli_epi32): Ditto.
8481         (_mm256_mask_srli_epi64): Ditto.
8482         (_mm256_maskz_srli_epi64): Ditto.
8483         (_mm_mask_srli_epi64): Ditto.
8484         (_mm_maskz_srli_epi64): Ditto.
8485         (_mm256_mask_srai_epi32): Ditto.
8486         (_mm256_maskz_srai_epi32): Ditto.
8487         (_mm_mask_srai_epi32): Ditto.
8488         (_mm_maskz_srai_epi32): Ditto.
8489         (_mm256_srai_epi64): Ditto.
8490         (_mm256_mask_srai_epi64): Ditto.
8491         (_mm256_maskz_srai_epi64): Ditto.
8492         (_mm_srai_epi64): Ditto.
8493         (_mm_mask_srai_epi64): Ditto.
8494         (_mm_maskz_srai_epi64): Ditto.
8495         (_mm_mask_slli_epi32): Ditto.
8496         (_mm_maskz_slli_epi32): Ditto.
8497         (_mm_mask_slli_epi64): Ditto.
8498         (_mm_maskz_slli_epi64): Ditto.
8499         (_mm256_mask_slli_epi32): Ditto.
8500         (_mm256_maskz_slli_epi32): Ditto.
8501         (_mm256_mask_slli_epi64): Ditto.
8502         (_mm256_maskz_slli_epi64): Ditto.
8504 2023-05-25  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8506         * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz
8507         instructions.
8509 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
8511         * data-streamer-in.cc (streamer_read_value_range): Handle NANs.
8512         * data-streamer-out.cc (streamer_write_vrange): Same.
8513         * value-range.h (class vrange): Make streamer_write_vrange a friend.
8515 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
8517         * value-query.cc (range_query::get_tree_range): Set NAN directly
8518         if necessary.
8519         * value-range.cc (frange::set): Assert that bounds are not NAN.
8521 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
8523         * value-range.cc (add_vrange): Handle known NANs.
8525 2023-05-25  Aldy Hernandez  <aldyh@redhat.com>
8527         * value-range.h (frange::set_nan): New.
8529 2023-05-25  Alexandre Oliva  <oliva@adacore.com>
8531         PR target/100106
8532         * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that
8533         requires stricter alignment than MEM's.
8535 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
8537         PR tree-optimization/107822
8538         PR tree-optimization/107986
8539         * Makefile.in (OBJS): Add gimple-range-phi.o.
8540         * gimple-range-cache.h (ranger_cache::m_estimate): New
8541         phi_analyzer pointer member.
8542         * gimple-range-fold.cc (fold_using_range::range_of_phi): Use
8543         phi_analyzer if no loop info is available.
8544         * gimple-range-phi.cc: New file.
8545         * gimple-range-phi.h: New file.
8546         * tree-vrp.cc (execute_ranger_vrp): Utililze a phi_analyzer.
8548 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
8550         * gimple-range-fold.cc (fur_list::fur_list): Add range_query param
8551         to contructors.
8552         (fold_range): Add range_query parameter.
8553         (fur_relation::fur_relation): New.
8554         (fur_relation::trio): New.
8555         (fur_relation::register_relation): New.
8556         (fold_relations): New.
8557         * gimple-range-fold.h (fold_range): Adjust prototypes.
8558         (fold_relations): New.
8560 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
8562         * gimple-range-cache.cc (ssa_cache::range_of_expr): New.
8563         * gimple-range-cache.h (class ssa_cache): Inherit from range_query.
8564         (ranger_cache::const_query): New.
8565         * gimple-range.cc (gimple_ranger::const_query): New.
8566         * gimple-range.h (gimple_ranger::const_query): New prototype.
8568 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
8570         * gimple-range-cache.cc (ssa_cache::dump): Use get_range.
8571         (ssa_cache::dump_range_query): Delete.
8572         (ssa_lazy_cache::dump_range_query): Delete.
8573         (ssa_lazy_cache::get_range): Move from header file.
8574         (ssa_lazy_cache::clear_range): ditto.
8575         (ssa_lazy_cache::clear): Ditto.
8576         * gimple-range-cache.h (class ssa_cache): Virtualize.
8577         (class ssa_lazy_cache): Inherit and virtualize.
8579 2023-05-24  Aldy Hernandez  <aldyh@redhat.com>
8581         * value-range.h (vrange::kind): Remove.
8583 2023-05-24  Roger Sayle  <roger@nextmovesoftware.com>
8585         PR middle-end/109840
8586         * match.pd <popcount optimizations>: Preserve zero-extension when
8587         optimizing popcount((T)bswap(x)) and popcount((T)rotate(x,y)) as
8588         popcount((T)x), so the popcount's argument keeps the same type.
8589         <parity optimizations>:  Likewise preserve extensions when
8590         simplifying parity((T)bswap(x)) and parity((T)rotate(x,y)) as
8591         parity((T)x), so that the parity's argument type is the same.
8593 2023-05-24  Aldy Hernandez  <aldyh@redhat.com>
8595         * ipa-cp.cc (ipa_value_range_from_jfunc): Use new ipa_vr API.
8596         (ipcp_store_vr_results): Same.
8597         * ipa-prop.cc (ipa_vr::ipa_vr): New.
8598         (ipa_vr::get_vrange): New.
8599         (ipa_vr::set_unknown): New.
8600         (ipa_vr::streamer_read): New.
8601         (ipa_vr::streamer_write): New.
8602         (write_ipcp_transformation_info): Use new ipa_vr API.
8603         (read_ipcp_transformation_info): Same.
8604         (ipa_vr::nonzero_p): Delete.
8605         (ipcp_update_vr): Use new ipa_vr API.
8606         * ipa-prop.h (class ipa_vr): Provide an API and hide internals.
8607         * ipa-sra.cc (zap_useless_ipcp_results): Use new ipa_vr API.
8609 2023-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
8611         * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to
8612         silence overflow warnings later on.
8614 2023-05-24  Uros Bizjak  <ubizjak@gmail.com>
8616         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
8617         Remove handling of V8QImode.
8618         * config/i386/mmx.md (v<insn>v8qi3): Move from sse.md.
8619         Call ix86_expand_vecop_qihi_partial.  Enable for TARGET_MMX_WITH_SSE.
8620         (v<insn>v4qi3): Ditto.
8621         * config/i386/sse.md (v<insn>v8qi3): Remove.
8623 2023-05-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8625         PR target/99195
8626         * config/aarch64/aarch64-simd.md (aarch64_simd_lshr<mode>): Rename to...
8627         (aarch64_simd_lshr<mode><vczle><vczbe>): ... This.
8628         (aarch64_simd_ashr<mode>): Rename to...
8629         (aarch64_simd_ashr<mode><vczle><vczbe>): ... This.
8630         (aarch64_simd_imm_shl<mode>): Rename to...
8631         (aarch64_simd_imm_shl<mode><vczle><vczbe>): ... This.
8632         (aarch64_simd_reg_sshl<mode>): Rename to...
8633         (aarch64_simd_reg_sshl<mode><vczle><vczbe>): ... This.
8634         (aarch64_simd_reg_shl<mode>_unsigned): Rename to...
8635         (aarch64_simd_reg_shl<mode>_unsigned<vczle><vczbe>): ... This.
8636         (aarch64_simd_reg_shl<mode>_signed): Rename to...
8637         (aarch64_simd_reg_shl<mode>_signed<vczle><vczbe>): ... This.
8638         (vec_shr_<mode>): Rename to...
8639         (vec_shr_<mode><vczle><vczbe>): ... This.
8640         (aarch64_<sur>shl<mode>): Rename to...
8641         (aarch64_<sur>shl<mode><vczle><vczbe>): ... This.
8642         (aarch64_<sur>q<r>shl<mode>): Rename to...
8643         (aarch64_<sur>q<r>shl<mode><vczle><vczbe>): ... This.
8645 2023-05-24  Richard Biener  <rguenther@suse.de>
8647         PR target/109944
8648         * config/i386/i386-expand.cc (ix86_expand_vector_init_general):
8649         Perform final vector composition using
8650         ix86_expand_vector_init_general instead of setting
8651         the highpart and lowpart which causes spilling.
8653 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
8655         PR tree-optimization/109695
8656         * gimple-range-cache.cc (ranger_cache::get_global_range): Add
8657         changed param.
8658         * gimple-range-cache.h (ranger_cache::get_global_range): Ditto.
8659         * gimple-range.cc (gimple_ranger::range_of_stmt): Pass changed
8660         flag to set_global_range.
8661         (gimple_ranger::prefill_stmt_dependencies): Ditto.
8663 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
8665         PR tree-optimization/109695
8666         * gimple-range-cache.cc (temporal_cache::temporal_value): Return
8667         a positive int.
8668         (temporal_cache::current_p): Check always_current method.
8669         (temporal_cache::set_always_current): Add param and set value
8670         appropriately.
8671         (temporal_cache::always_current_p): New.
8672         (ranger_cache::get_global_range): Adjust.
8673         (ranger_cache::set_global_range): set always current first.
8675 2023-05-24  Andrew MacLeod  <amacleod@redhat.com>
8677         PR tree-optimization/109695
8678         * gimple-range-cache.cc (ranger_cache::get_global_range): Call
8679         fold_range with global query to choose an initial value.
8681 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8683         * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_
8684         prefix.
8686 2023-05-24  Richard Biener  <rguenther@suse.de>
8688         PR tree-optimization/109849
8689         * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect
8690         expressions but take the first sets.
8692 2023-05-24  Gaius Mulley  <gaiusmod2@gmail.com>
8694         PR modula2/109952
8695         * doc/gm2.texi (High procedure function): New node.
8696         (Using): New menu entry for High procedure function.
8698 2023-05-24  Richard Sandiford  <richard.sandiford@arm.com>
8700         PR rtl-optimization/109940
8701         * early-remat.cc (postorder_index): Rename to...
8702         (rpo_index): ...this.
8703         (compare_candidates): Sort by decreasing rpo_index rather than
8704         increasing postorder_index.
8705         (early_remat::sort_candidates): Calculate the forward RPO from
8706         DF_FORWARD.
8707         (early_remat::local_phase): Follow forward RPO using DF_FORWARD,
8708         rather than DF_BACKWARD in reverse.
8710 2023-05-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8712         PR target/109939
8713         * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use
8714         qualifier_none for the return operand.
8716 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8718         * config/riscv/autovec.md (<optab><mode>3): New pattern.
8719         (one_cmpl<mode>2): Ditto.
8720         (*<optab>not<mode>): Ditto.
8721         (*n<optab><mode>): Ditto.
8722         * config/riscv/riscv-v.cc (expand_vec_cmp_float): Change to
8723         one_cmpl.
8725 2023-05-24  Kewen Lin  <linkw@linux.ibm.com>
8727         * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the
8728         calculation on n_perms by considering nvectors_per_build.
8730 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8731             Richard Sandiford  <richard.sandiford@arm.com>
8733         * config/riscv/autovec.md (@vcond_mask_<mode><vm>): New pattern.
8734         (vec_cmp<mode><vm>): New pattern.
8735         (vec_cmpu<mode><vm>): New pattern.
8736         (vcond<V:mode><VI:mode>): New pattern.
8737         (vcondu<V:mode><VI:mode>): New pattern.
8738         * config/riscv/riscv-protos.h (enum insn_type): Add new enum.
8739         (emit_vlmax_merge_insn): New function.
8740         (emit_vlmax_cmp_insn): Ditto.
8741         (emit_vlmax_cmp_mu_insn): Ditto.
8742         (expand_vec_cmp): Ditto.
8743         (expand_vec_cmp_float): Ditto.
8744         (expand_vcond): Ditto.
8745         * config/riscv/riscv-v.cc (emit_vlmax_merge_insn): Ditto.
8746         (emit_vlmax_cmp_insn): Ditto.
8747         (emit_vlmax_cmp_mu_insn): Ditto.
8748         (get_cmp_insn_code): Ditto.
8749         (expand_vec_cmp): Ditto.
8750         (expand_vec_cmp_float): Ditto.
8751         (expand_vcond): Ditto.
8753 2023-05-24  Pan Li  <pan2.li@intel.com>
8755         * config/riscv/genrvv-type-indexer.cc (main): Add
8756         unsigned_eew*_lmul1_interpret for indexer.
8757         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
8758         Register vuint*m1_t interpret function.
8759         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
8760         New macro for vuint8m1_t.
8761         (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
8762         (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
8763         (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
8764         (vbool1_t): Add to unsigned_eew*_interpret_ops.
8765         (vbool2_t): Likewise.
8766         (vbool4_t): Likewise.
8767         (vbool8_t): Likewise.
8768         (vbool16_t): Likewise.
8769         (vbool32_t): Likewise.
8770         (vbool64_t): Likewise.
8771         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
8772         New macro for vuint*m1_t.
8773         (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
8774         (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
8775         (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
8776         (required_extensions_p): Add vuint*m1_t interpret case.
8777         * config/riscv/riscv-vector-builtins.def (unsigned_eew8_lmul1_interpret):
8778         Add vuint*m1_t interpret to base type.
8779         (unsigned_eew16_lmul1_interpret): Likewise.
8780         (unsigned_eew32_lmul1_interpret): Likewise.
8781         (unsigned_eew64_lmul1_interpret): Likewise.
8783 2023-05-24  Pan Li  <pan2.li@intel.com>
8785         * config/riscv/genrvv-type-indexer.cc (EEW_SIZE_LIST): New macro
8786         for the eew size list.
8787         (LMUL1_LOG2): New macro for the log2 value of lmul=1.
8788         (main): Add signed_eew*_lmul1_interpret for indexer.
8789         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
8790         Register vint*m1_t interpret function.
8791         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
8792         New macro for vint8m1_t.
8793         (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
8794         (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
8795         (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
8796         (vbool1_t): Add to signed_eew*_interpret_ops.
8797         (vbool2_t): Likewise.
8798         (vbool4_t): Likewise.
8799         (vbool8_t): Likewise.
8800         (vbool16_t): Likewise.
8801         (vbool32_t): Likewise.
8802         (vbool64_t): Likewise.
8803         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
8804         New macro for vint*m1_t.
8805         (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
8806         (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
8807         (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
8808         (required_extensions_p): Add vint8m1_t interpret case.
8809         * config/riscv/riscv-vector-builtins.def (signed_eew8_lmul1_interpret):
8810         Add vint*m1_t interpret to base type.
8811         (signed_eew16_lmul1_interpret): Likewise.
8812         (signed_eew32_lmul1_interpret): Likewise.
8813         (signed_eew64_lmul1_interpret): Likewise.
8815 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8817         * config/riscv/autovec.md: Adjust for new interface.
8818         * config/riscv/riscv-protos.h (emit_vlmax_insn): Add VL operand.
8819         (emit_nonvlmax_insn): Add AVL operand.
8820         * config/riscv/riscv-v.cc (emit_vlmax_insn): Add VL operand.
8821         (emit_nonvlmax_insn): Add AVL operand.
8822         (sew64_scalar_helper): Adjust for new interface.
8823         (expand_tuple_move): Ditto.
8824         * config/riscv/vector.md: Ditto.
8826 2023-05-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8828         * config/riscv/riscv-v.cc (expand_vec_series): Remove magic number.
8829         (expand_const_vector): Ditto.
8830         (legitimize_move): Ditto.
8831         (sew64_scalar_helper): Ditto.
8832         (expand_tuple_move): Ditto.
8833         (expand_vector_init_insert_elems): Ditto.
8834         * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
8836 2023-05-24  liuhongt  <hongtao.liu@intel.com>
8838         PR target/109900
8839         * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
8840         _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} and
8841         _mm_abs_{pi8,pi16,pi32} into gimple ABS_EXPR.
8842         (ix86_masked_all_ones): Handle 64-bit mask.
8843         * config/i386/i386-builtin.def: Replace icode of related
8844         non-mask simd abs builtins with CODE_FOR_nothing.
8846 2023-05-23  Martin Uecker  <uecker@tugraz.at>
8848         PR c/109450
8849         * function.cc (gimplify_parm_type): Remove function.
8850         (gimplify_parameters): Call gimplify_type_sizes.
8852 2023-05-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
8854         * config/xtensa/xtensa.md (*addsubx): Rename from '*addx',
8855         and change to also accept '*subx' pattern.
8856         (*subx): Remove.
8858 2023-05-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
8860         * config/xtensa/predicates.md (addsub_operator): New.
8861         * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3,
8862         *extzvsi-1bit_addsubx): New insn_and_split patterns.
8863         * config/xtensa/xtensa.cc (xtensa_rtx_costs):
8864         Add a special case about ifcvt 'noce_try_cmove()' to handle
8865         constant loads that do not fit into signed 12 bits in the
8866         patterns added above.
8868 2023-05-23  Richard Biener  <rguenther@suse.de>
8870         PR tree-optimization/109747
8871         * tree-vect-slp.cc (vect_prologue_cost_for_slp): Pass down
8872         the SLP node only once to the cost hook.
8874 2023-05-23  Georg-Johann Lay  <avr@gjlay.de>
8876         * config/avr/avr.cc (avr_insn_cost): New static function.
8877         (TARGET_INSN_COST): Define to that function.
8879 2023-05-23  Richard Biener  <rguenther@suse.de>
8881         PR target/109944
8882         * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
8883         For vector construction or splats apply GPR->XMM move
8884         costing.  QImode memory can be handled directly only
8885         with SSE4.1 pinsrb.
8887 2023-05-23  Richard Biener  <rguenther@suse.de>
8889         PR tree-optimization/108752
8890         * tree-vect-stmts.cc (vectorizable_operation): For bit
8891         operations with generic word_mode vectors do not cost
8892         an extra stmt.  For plus, minus and negate also cost the
8893         constant materialization.
8895 2023-05-23  Uros Bizjak  <ubizjak@gmail.com>
8897         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial):
8898         Call ix86_expand_vec_shift_qihi_constant for shifts
8899         with constant count operand.
8900         * config/i386/i386.cc (ix86_shift_rotate_cost):
8901         Handle V4QImode and V8QImode.
8902         * config/i386/mmx.md (<insn>v8qi3): New insn pattern.
8903         (<insn>v4qi3): Ditto.
8905 2023-05-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8907         * config/riscv/vector.md: Add mode.
8909 2023-05-23  Aldy Hernandez  <aldyh@redhat.com>
8911         PR tree-optimization/109934
8912         * value-range.cc (irange::invert): Remove buggy special case.
8914 2023-05-23  Richard Biener  <rguenther@suse.de>
8916         * tree-ssa-pre.cc (compute_antic_aux): Dump the correct
8917         ANTIC_OUT.
8919 2023-05-23  Richard Sandiford  <richard.sandiford@arm.com>
8921         PR target/109632
8922         * config/aarch64/aarch64.cc (aarch64_modes_tieable_p): Allow
8923         subregs between any scalars that are 64 bits or smaller.
8924         * config/aarch64/iterators.md (SUBDI_BITS): New int iterator.
8925         (bits_etype): New int attribute.
8926         * config/aarch64/aarch64.md (*insv_reg<mode>_<SUBDI_BITS>)
8927         (*aarch64_bfi<GPI:mode><ALLX:mode>_<SUBDI_BITS>): New patterns.
8928         (*aarch64_bfidi<ALLX:mode>_subreg_<SUBDI_BITS>): Likewise.
8930 2023-05-23  Richard Sandiford  <richard.sandiford@arm.com>
8932         * doc/md.texi: Document that <FOO> can be used to refer to the
8933         numerical value of an int iterator FOO.  Tweak other parts of
8934         the int iterator documentation.
8935         * read-rtl.cc (iterator_group::has_self_attr): New field.
8936         (map_attr_string): When has_self_attr is true, make <FOO>
8937         expand to the current value of iterator FOO.
8938         (initialize_iterators): Set has_self_attr for int iterators.
8940 2023-05-23  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8942         * config/riscv/autovec.md: Refactor the framework of RVV auto-vectorization.
8943         * config/riscv/riscv-protos.h (RVV_MISC_OP_NUM): Ditto.
8944         (RVV_UNOP_NUM): New macro.
8945         (RVV_BINOP_NUM): Ditto.
8946         (legitimize_move): Refactor the framework of RVV auto-vectorization.
8947         (emit_vlmax_op): Ditto.
8948         (emit_vlmax_reg_op): Ditto.
8949         (emit_len_op): Ditto.
8950         (emit_len_binop): Ditto.
8951         (emit_vlmax_tany_many): Ditto.
8952         (emit_nonvlmax_tany_many): Ditto.
8953         (sew64_scalar_helper): Ditto.
8954         (expand_tuple_move): Ditto.
8955         * config/riscv/riscv-v.cc (emit_pred_op): Ditto.
8956         (emit_pred_binop): Ditto.
8957         (emit_vlmax_op): Ditto.
8958         (emit_vlmax_tany_many): New function.
8959         (emit_len_op): Remove.
8960         (emit_nonvlmax_tany_many): New function.
8961         (emit_vlmax_reg_op): Remove.
8962         (emit_len_binop): Ditto.
8963         (emit_index_op): Ditto.
8964         (expand_vec_series): Refactor the framework of RVV auto-vectorization.
8965         (expand_const_vector): Ditto.
8966         (legitimize_move): Ditto.
8967         (sew64_scalar_helper): Ditto.
8968         (expand_tuple_move): Ditto.
8969         (expand_vector_init_insert_elems): Ditto.
8970         * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
8971         * config/riscv/vector.md: Ditto.
8973 2023-05-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8975         PR target/109855
8976         * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Add predicate
8977         and constraint for operand 0.
8978         (add_vec_concat_subst_be): Likewise.
8980 2023-05-23  Richard Biener  <rguenther@suse.de>
8982         PR tree-optimization/109849
8983         * tree-ssa-pre.cc (do_hoist_insertion): Compute ANTIC_OUT
8984         and use that to determine what to hoist.
8986 2023-05-23  Eric Botcazou  <ebotcazou@adacore.com>
8988         * fold-const.cc (native_encode_initializer) <CONSTRUCTOR>: Apply the
8989         specific treatment for bit-fields only if they have an integral type
8990         and filter out non-integral bit-fields that do not start and end on
8991         a byte boundary.
8993 2023-05-23  Aldy Hernandez  <aldyh@redhat.com>
8995         PR tree-optimization/109920
8996         * value-range.h (RESIZABLE>::~int_range): Use delete[].
8998 2023-05-22  Uros Bizjak  <ubizjak@gmail.com>
9000         * config/i386/i386.cc (ix86_shift_rotate_cost): Correct
9001         calcuation of integer vector mode costs to reflect generated
9002         instruction sequences of different integer vector modes and
9003         different target ABIs.  Remove "speed" function argument.
9004         (ix86_rtx_costs): Update call for removed function argument.
9005         (ix86_vector_costs::add_stmt_cost): Ditto.
9007 2023-05-22  Aldy Hernandez  <aldyh@redhat.com>
9009         * value-range.h (class Value_Range): Implement set_zero,
9010         set_nonzero, and nonzero_p.
9012 2023-05-22  Uros Bizjak  <ubizjak@gmail.com>
9014         * config/i386/i386.cc (ix86_multiplication_cost): Add
9015         the cost of a memory read to the cost of V?QImode sequences.
9017 2023-05-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9019         * config/riscv/riscv-v.cc: Add "m_" prefix.
9021 2023-05-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
9023         * tree-vect-loop.cc (vect_get_loop_len): Fix issue for
9024         multiple-rgroup of length.
9025         * tree-vect-stmts.cc (vectorizable_store): Ditto.
9026         (vectorizable_load): Ditto.
9027         * tree-vectorizer.h (vect_get_loop_len): Ditto.
9029 2023-05-22  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9031         * config/riscv/riscv.cc (riscv_const_insns): Reorganize the
9032         codes.
9034 2023-05-22  Kewen Lin  <linkw@linux.ibm.com>
9036         * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the
9037         handling for the case index == count.
9039 2023-05-21  Georg-Johann Lay  <avr@gjlay.de>
9041         PR target/90622
9042         * config/avr/avr.cc (avr_fold_builtin) [AVR_BUILTIN_INSERT_BITS]:
9043         Don't fold to XOR / AND / XOR if just one bit is copied to the
9044         same position.
9046 2023-05-21  Roger Sayle  <roger@nextmovesoftware.com>
9048         * config/nvptx/nvptx.cc (nvptx_expand_brev): Expand target
9049         builtin for bit reversal using brev instruction.
9050         (enum nvptx_builtins): Add NVPTX_BUILTIN_BREV and
9051         NVPTX_BUILTIN_BREVLL.
9052         (nvptx_init_builtins): Define "brev" and "brevll".
9053         (nvptx_expand_builtin): Expand NVPTX_BUILTIN_BREV and
9054         NVPTX_BUILTIN_BREVLL via nvptx_expand_brev function.
9055         * doc/extend.texi (Nvidia PTX Builtin-in Functions): New
9056         section, document __builtin_nvptx_brev{,ll}.
9058 2023-05-21  Jakub Jelinek  <jakub@redhat.com>
9060         PR tree-optimization/109505
9061         * match.pd ((x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2),
9062         Combine successive equal operations with constants,
9063         (A +- CST1) +- CST2 -> A + CST3, (CST1 - A) +- CST2 -> CST3 - A,
9064         CST1 - (CST2 - A) -> CST3 + A): Use ! on ops with 2 CONSTANT_CLASS_P
9065         operands.
9067 2023-05-21  Andrew Pinski  <apinski@marvell.com>
9069         * expr.cc (expand_single_bit_test): Correct bitpos for big-endian.
9071 2023-05-21  Pan Li  <pan2.li@intel.com>
9073         * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): Add the
9074         rest bool size, aka 2, 4, 8, 16, 32, 64.
9075         * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
9076         Register vbool[2|4|8|16|32|64] interpret function.
9077         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_BOOL2_INTERPRET_OPS):
9078         New macro for vbool2_t.
9079         (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
9080         (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
9081         (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
9082         (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
9083         (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
9084         (vint8m1_t): Add the type to bool[2|4|8|16|32|64]_interpret_ops.
9085         (vint16m1_t): Likewise.
9086         (vint32m1_t): Likewise.
9087         (vint64m1_t): Likewise.
9088         (vuint8m1_t): Likewise.
9089         (vuint16m1_t): Likewise.
9090         (vuint32m1_t): Likewise.
9091         (vuint64m1_t): Likewise.
9092         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_BOOL2_INTERPRET_OPS):
9093         New macro for vbool2_t.
9094         (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
9095         (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
9096         (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
9097         (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
9098         (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
9099         (required_extensions_p): Add vbool[2|4|8|16|32|64] interpret case.
9100         * config/riscv/riscv-vector-builtins.def (bool2_interpret): Add
9101         vbool2_t interprect to base type.
9102         (bool4_interpret): Likewise.
9103         (bool8_interpret): Likewise.
9104         (bool16_interpret): Likewise.
9105         (bool32_interpret): Likewise.
9106         (bool64_interpret): Likewise.
9108 2023-05-21  Andrew Pinski  <apinski@marvell.com>
9110         PR middle-end/109919
9111         * expr.cc (expand_single_bit_test): Don't use the
9112         target for expand_expr.
9114 2023-05-20  Gerald Pfeifer  <gerald@pfeifer.com>
9116         * doc/install.texi (Specific): Remove de facto empty alpha*-*-*
9117         section.
9119 2023-05-20  Pan Li  <pan2.li@intel.com>
9121         * mode-switching.cc (entity_map): Initialize the array to zero.
9122         (bb_info): Ditto.
9124 2023-05-20  Triffid Hunter  <triffid.hunter@gmail.com>
9126         PR target/105753
9127         * config/avr/avr.md (divmodpsi, udivmodpsi, divmodsi, udivmodsi):
9128         Remove superfluous "parallel" in insn pattern.
9129         ([u]divmod<mode>4): Tidy code.  Use gcc_unreachable() instead of
9130         printing error text to assembly.
9132 2023-05-20  Andrew Pinski  <apinski@marvell.com>
9134         * expr.cc (fold_single_bit_test): Rename to ...
9135         (expand_single_bit_test): This and expand directly.
9136         (do_store_flag): Update for the rename function.
9138 2023-05-20  Andrew Pinski  <apinski@marvell.com>
9140         * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF
9141         instead of shift/and.
9143 2023-05-20  Andrew Pinski  <apinski@marvell.com>
9145         * expr.cc (fold_single_bit_test): Add an assert
9146         and simplify based on code being NE_EXPR or EQ_EXPR.
9148 2023-05-20  Andrew Pinski  <apinski@marvell.com>
9150         * expr.cc (fold_single_bit_test): Take inner and bitnum
9151         instead of arg0 and arg1. Update the code.
9152         (do_store_flag): Don't create a tree when calling
9153         fold_single_bit_test instead just call it with the bitnum
9154         and the inner tree.
9156 2023-05-20  Andrew Pinski  <apinski@marvell.com>
9158         * expr.cc (fold_single_bit_test): Use get_def_for_expr
9159         instead of checking the inner's code.
9161 2023-05-20  Andrew Pinski  <apinski@marvell.com>
9163         * expr.cc (fold_single_bit_test_into_sign_test): Inline into ...
9164         (fold_single_bit_test): This and simplify.
9166 2023-05-20  Andrew Pinski  <apinski@marvell.com>
9168         * fold-const.cc (fold_single_bit_test_into_sign_test): Move to
9169         expr.cc.
9170         (fold_single_bit_test): Likewise.
9171         * expr.cc (fold_single_bit_test_into_sign_test): Move from fold-const.cc
9172         (fold_single_bit_test): Likewise and make static.
9173         * fold-const.h (fold_single_bit_test): Remove declaration.
9175 2023-05-20  Die Li  <lidie@eswincomputing.com>
9177         * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode
9178         checking.
9180 2023-05-20  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
9182         * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern.
9184 2023-05-20  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
9186         PR target/106888
9187         * config/riscv/bitmanip.md
9188         (<bitmanip_optab>disi2): Match with any_extend.
9189         (<bitmanip_optab>disi2_sext): New pattern to match
9190         with sign extend using an ANDI instruction.
9192 2023-05-19  Nathan Sidwell  <nathan@acm.org>
9194         PR other/99451
9195         * opts.h (handle_deferred_dump_options): Declare.
9196         * opts-global.cc (handle_common_deferred_options): Do not handle
9197         dump options here.
9198         (handle_deferred_dump_options): New.
9199         * toplev.cc (toplev::main): Call it after plugin init.
9201 2023-05-19  Joern Rennecke  <joern.rennecke@embecosm.com>
9203         * config/riscv/constraints.md (DsS, DsD): Restore agreement
9204         with shiftm1 mode attribute.
9206 2023-05-19  Andrew Pinski  <apinski@marvell.com>
9208         PR driver/33980
9209         * gcc.cc (default_compilers["@c-header"]): Add %w
9210         after the --output-pch.
9212 2023-05-19  Vineet Gupta  <vineetg@rivosinc.com>
9214         * config/riscv/riscv.cc (riscv_split_integer): if loval is equal
9215         to hival, ASHIFT the corresponding regs.
9217 2023-05-19  Robin Dapp  <rdapp@ventanamicro.com>
9219         * config/riscv/riscv.cc (riscv_const_insns): Remove else.
9221 2023-05-19  Jakub Jelinek  <jakub@redhat.com>
9223         PR tree-optimization/105776
9224         * tree-ssa-math-opts.cc (arith_overflow_check_p): If cast_stmt is
9225         non-NULL, allow division statement to have a cast as single imm use
9226         rather than comparison/condition.
9227         (match_arith_overflow): In that case remove the cast stmt in addition
9228         to the division statement.
9230 2023-05-19  Jakub Jelinek  <jakub@redhat.com>
9232         PR tree-optimization/101856
9233         * tree-ssa-math-opts.cc (match_arith_overflow): Pattern detect
9234         unsigned __builtin_mul_overflow_p even when umulv4_optab doesn't
9235         support it but umul_highpart_optab does.
9237 2023-05-19  Eric Botcazou  <ebotcazou@adacore.com>
9239         * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead
9240         of tree_to_shwi on array indices.  Minor tweaks.
9242 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
9244         * alias.cc (ref_all_alias_ptr_type_p): Use _P() defines from tree.h.
9245         * attribs.cc (diag_attr_exclusions): Ditto.
9246         (decl_attributes): Ditto.
9247         (build_type_attribute_qual_variant): Ditto.
9248         * builtins.cc (fold_builtin_carg): Ditto.
9249         (fold_builtin_next_arg): Ditto.
9250         (do_mpc_arg2): Ditto.
9251         * cfgexpand.cc (expand_return): Ditto.
9252         * cgraph.h (decl_in_symtab_p): Ditto.
9253         (symtab_node::get_create): Ditto.
9254         * dwarf2out.cc (base_type_die): Ditto.
9255         (implicit_ptr_descriptor): Ditto.
9256         (gen_array_type_die): Ditto.
9257         (gen_type_die_with_usage): Ditto.
9258         (optimize_location_into_implicit_ptr): Ditto.
9259         * expr.cc (do_store_flag): Ditto.
9260         * fold-const.cc (negate_expr_p): Ditto.
9261         (fold_negate_expr_1): Ditto.
9262         (fold_convert_const): Ditto.
9263         (fold_convert_loc): Ditto.
9264         (constant_boolean_node): Ditto.
9265         (fold_binary_op_with_conditional_arg): Ditto.
9266         (build_fold_addr_expr_with_type_loc): Ditto.
9267         (fold_comparison): Ditto.
9268         (fold_checksum_tree): Ditto.
9269         (tree_unary_nonnegative_warnv_p): Ditto.
9270         (integer_valued_real_unary_p): Ditto.
9271         (fold_read_from_constant_string): Ditto.
9272         * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text): Ditto.
9273         * gimple-expr.cc (useless_type_conversion_p): Ditto.
9274         (is_gimple_reg): Ditto.
9275         (is_gimple_asm_val): Ditto.
9276         (mark_addressable): Ditto.
9277         * gimple-expr.h (is_gimple_variable): Ditto.
9278         (virtual_operand_p): Ditto.
9279         * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): Ditto.
9280         * gimplify.cc (gimplify_bind_expr): Ditto.
9281         (gimplify_return_expr): Ditto.
9282         (gimple_add_padding_init_for_auto_var): Ditto.
9283         (gimplify_addr_expr): Ditto.
9284         (omp_add_variable): Ditto.
9285         (omp_notice_variable): Ditto.
9286         (omp_get_base_pointer): Ditto.
9287         (omp_strip_components_and_deref): Ditto.
9288         (omp_strip_indirections): Ditto.
9289         (omp_accumulate_sibling_list): Ditto.
9290         (omp_build_struct_sibling_lists): Ditto.
9291         (gimplify_adjust_omp_clauses_1): Ditto.
9292         (gimplify_adjust_omp_clauses): Ditto.
9293         (gimplify_omp_for): Ditto.
9294         (goa_lhs_expr_p): Ditto.
9295         (gimplify_one_sizepos): Ditto.
9296         * graphite-scop-detection.cc (scop_detection::graphite_can_represent_scev): Ditto.
9297         * ipa-devirt.cc (odr_types_equivalent_p): Ditto.
9298         * ipa-prop.cc (ipa_set_jf_constant): Ditto.
9299         (propagate_controlled_uses): Ditto.
9300         * ipa-sra.cc (type_prevails_p): Ditto.
9301         (scan_expr_access): Ditto.
9302         * optabs-tree.cc (optab_for_tree_code): Ditto.
9303         * toplev.cc (wrapup_global_declaration_1): Ditto.
9304         * trans-mem.cc (transaction_invariant_address_p): Ditto.
9305         * tree-cfg.cc (verify_types_in_gimple_reference): Ditto.
9306         (verify_gimple_comparison): Ditto.
9307         (verify_gimple_assign_binary): Ditto.
9308         (verify_gimple_assign_single): Ditto.
9309         * tree-complex.cc (get_component_ssa_name): Ditto.
9310         * tree-emutls.cc (lower_emutls_2): Ditto.
9311         * tree-inline.cc (copy_tree_body_r): Ditto.
9312         (estimate_move_cost): Ditto.
9313         (copy_decl_for_dup_finish): Ditto.
9314         * tree-nested.cc (convert_nonlocal_omp_clauses): Ditto.
9315         (note_nonlocal_vla_type): Ditto.
9316         (convert_local_omp_clauses): Ditto.
9317         (remap_vla_decls): Ditto.
9318         (fixup_vla_decls): Ditto.
9319         * tree-parloops.cc (loop_has_vector_phi_nodes): Ditto.
9320         * tree-pretty-print.cc (print_declaration): Ditto.
9321         (print_call_name): Ditto.
9322         * tree-sra.cc (compare_access_positions): Ditto.
9323         * tree-ssa-alias.cc (compare_type_sizes): Ditto.
9324         * tree-ssa-ccp.cc (get_default_value): Ditto.
9325         * tree-ssa-coalesce.cc (populate_coalesce_list_for_outofssa): Ditto.
9326         * tree-ssa-dom.cc (reduce_vector_comparison_to_scalar_comparison): Ditto.
9327         * tree-ssa-forwprop.cc (can_propagate_from): Ditto.
9328         * tree-ssa-propagate.cc (may_propagate_copy): Ditto.
9329         * tree-ssa-sccvn.cc (fully_constant_vn_reference_p): Ditto.
9330         * tree-ssa-sink.cc (statement_sink_location): Ditto.
9331         * tree-ssa-structalias.cc (type_must_have_pointers): Ditto.
9332         * tree-ssa-ter.cc (find_replaceable_in_bb): Ditto.
9333         * tree-ssa-uninit.cc (warn_uninit): Ditto.
9334         * tree-ssa.cc (maybe_rewrite_mem_ref_base): Ditto.
9335         (non_rewritable_mem_ref_base): Ditto.
9336         * tree-streamer-in.cc (lto_input_ts_type_non_common_tree_pointers): Ditto.
9337         * tree-streamer-out.cc (write_ts_type_non_common_tree_pointers): Ditto.
9338         * tree-vect-generic.cc (do_binop): Ditto.
9339         (do_cond): Ditto.
9340         * tree-vect-stmts.cc (vect_init_vector): Ditto.
9341         * tree-vector-builder.h (tree_vector_builder::note_representative): Ditto.
9342         * tree.cc (sign_mask_for): Ditto.
9343         (verify_type_variant): Ditto.
9344         (gimple_canonical_types_compatible_p): Ditto.
9345         (verify_type): Ditto.
9346         * ubsan.cc (get_ubsan_type_info_for_type): Ditto.
9347         * var-tracking.cc (prepare_call_arguments): Ditto.
9348         (vt_add_function_parameters): Ditto.
9349         * varasm.cc (decode_addr_const): Ditto.
9351 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
9353         * omp-low.cc (scan_sharing_clauses): Use _P() defines from tree.h.
9354         (lower_reduction_clauses): Ditto.
9355         (lower_send_clauses): Ditto.
9356         (lower_omp_task_reductions): Ditto.
9357         * omp-oacc-neuter-broadcast.cc (install_var_field): Ditto.
9358         (worker_single_copy): Ditto.
9359         * omp-offload.cc (oacc_rewrite_var_decl): Ditto.
9360         * omp-simd-clone.cc (plausible_type_for_simd_clone): Ditto.
9362 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
9364         * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from
9365         tree.h.
9366         (lto_read_body_or_constructor): Ditto.
9367         * lto-streamer-out.cc (tree_is_indexable): Ditto.
9368         (lto_output_var_decl_ref): Ditto.
9369         (DFS::DFS_write_tree_body): Ditto.
9370         (wrap_refs): Ditto.
9371         (write_symbol_extension_info): Ditto.
9373 2023-05-18  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
9375         * config/aarch64/aarch64.cc (aarch64_short_vector_p): Use _P
9376         defines from tree.h.
9377         (aarch64_mangle_type): Ditto.
9378         * config/alpha/alpha.cc (alpha_in_small_data_p): Ditto.
9379         (alpha_gimplify_va_arg_1): Ditto.
9380         * config/arc/arc.cc (arc_encode_section_info): Ditto.
9381         (arc_is_aux_reg_p): Ditto.
9382         (arc_is_uncached_mem_p): Ditto.
9383         (arc_handle_aux_attribute): Ditto.
9384         * config/arm/arm.cc (arm_handle_isr_attribute): Ditto.
9385         (arm_handle_cmse_nonsecure_call): Ditto.
9386         (arm_set_default_type_attributes): Ditto.
9387         (arm_is_segment_info_known): Ditto.
9388         (arm_mangle_type): Ditto.
9389         * config/arm/unknown-elf.h (IN_NAMED_SECTION_P): Ditto.
9390         * config/avr/avr.cc (avr_lookup_function_attribute1): Ditto.
9391         (avr_decl_absdata_p): Ditto.
9392         (avr_insert_attributes): Ditto.
9393         (avr_section_type_flags): Ditto.
9394         (avr_encode_section_info): Ditto.
9395         * config/bfin/bfin.cc (bfin_handle_l2_attribute): Ditto.
9396         * config/bpf/bpf.cc (bpf_core_compute): Ditto.
9397         * config/c6x/c6x.cc (c6x_in_small_data_p): Ditto.
9398         * config/csky/csky.cc (csky_handle_isr_attribute): Ditto.
9399         (csky_mangle_type): Ditto.
9400         * config/darwin-c.cc (darwin_pragma_unused): Ditto.
9401         * config/darwin.cc (is_objc_metadata): Ditto.
9402         * config/epiphany/epiphany.cc (epiphany_function_ok_for_sibcall): Ditto.
9403         * config/epiphany/epiphany.h (ROUND_TYPE_ALIGN): Ditto.
9404         * config/frv/frv.cc (frv_emit_movsi): Ditto.
9405         * config/gcn/gcn-tree.cc (gcn_lockless_update): Ditto.
9406         * config/gcn/gcn.cc (gcn_asm_output_symbol_ref): Ditto.
9407         * config/h8300/h8300.cc (h8300_encode_section_info): Ditto.
9408         * config/i386/i386-expand.cc: Ditto.
9409         * config/i386/i386.cc (type_natural_mode): Ditto.
9410         (ix86_function_arg): Ditto.
9411         (ix86_data_alignment): Ditto.
9412         (ix86_local_alignment): Ditto.
9413         (ix86_simd_clone_compute_vecsize_and_simdlen): Ditto.
9414         * config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Ditto.
9415         (i386_pe_type_dllexport_p): Ditto.
9416         (i386_pe_adjust_class_at_definition): Ditto.
9417         * config/i386/winnt.cc (i386_pe_determine_dllimport_p): Ditto.
9418         (i386_pe_binds_local_p): Ditto.
9419         (i386_pe_section_type_flags): Ditto.
9420         * config/ia64/ia64.cc (ia64_encode_section_info): Ditto.
9421         (ia64_gimplify_va_arg): Ditto.
9422         (ia64_in_small_data_p): Ditto.
9423         * config/iq2000/iq2000.cc (iq2000_function_arg): Ditto.
9424         * config/lm32/lm32.cc (lm32_in_small_data_p): Ditto.
9425         * config/loongarch/loongarch.cc (loongarch_handle_model_attribute): Ditto.
9426         * config/m32c/m32c.cc (m32c_insert_attributes): Ditto.
9427         * config/mcore/mcore.cc (mcore_mark_dllimport): Ditto.
9428         (mcore_encode_section_info): Ditto.
9429         * config/microblaze/microblaze.cc (microblaze_elf_in_small_data_p): Ditto.
9430         * config/mips/mips.cc (mips_output_aligned_decl_common): Ditto.
9431         * config/mmix/mmix.cc (mmix_encode_section_info): Ditto.
9432         * config/nvptx/nvptx.cc (nvptx_encode_section_info): Ditto.
9433         (pass_in_memory): Ditto.
9434         (nvptx_generate_vector_shuffle): Ditto.
9435         (nvptx_lockless_update): Ditto.
9436         * config/pa/pa.cc (pa_function_arg_padding): Ditto.
9437         (pa_function_value): Ditto.
9438         (pa_function_arg): Ditto.
9439         * config/pa/pa.h (IN_NAMED_SECTION_P): Ditto.
9440         (TEXT_SPACE_P): Ditto.
9441         * config/pa/som.h (MAKE_DECL_ONE_ONLY): Ditto.
9442         * config/pdp11/pdp11.cc (pdp11_return_in_memory): Ditto.
9443         * config/riscv/riscv.cc (riscv_in_small_data_p): Ditto.
9444         (riscv_mangle_type): Ditto.
9445         * config/rl78/rl78.cc (rl78_insert_attributes): Ditto.
9446         (rl78_addsi3_internal): Ditto.
9447         * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Ditto.
9448         * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Ditto.
9449         * config/rs6000/freebsd64.h (ROUND_TYPE_ALIGN): Ditto.
9450         * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Ditto.
9451         * config/rs6000/rs6000-call.cc (rs6000_function_arg_boundary): Ditto.
9452         (rs6000_function_arg_advance_1): Ditto.
9453         (rs6000_function_arg): Ditto.
9454         (rs6000_pass_by_reference): Ditto.
9455         * config/rs6000/rs6000-logue.cc (rs6000_function_ok_for_sibcall): Ditto.
9456         * config/rs6000/rs6000.cc (rs6000_data_alignment): Ditto.
9457         (rs6000_set_default_type_attributes): Ditto.
9458         (rs6000_elf_in_small_data_p): Ditto.
9459         (IN_NAMED_SECTION): Ditto.
9460         (rs6000_xcoff_encode_section_info): Ditto.
9461         (rs6000_function_value): Ditto.
9462         (invalid_arg_for_unprototyped_fn): Ditto.
9463         * config/s390/s390-c.cc (s390_fn_types_compatible): Ditto.
9464         (s390_vec_n_elem): Ditto.
9465         * config/s390/s390.cc (s390_check_type_for_vector_abi): Ditto.
9466         (s390_function_arg_integer): Ditto.
9467         (s390_return_in_memory): Ditto.
9468         (s390_encode_section_info): Ditto.
9469         * config/sh/sh.cc (sh_gimplify_va_arg_expr): Ditto.
9470         (sh_function_value): Ditto.
9471         * config/sol2.cc (solaris_insert_attributes): Ditto.
9472         * config/sparc/sparc.cc (function_arg_slotno): Ditto.
9473         * config/sparc/sparc.h (ROUND_TYPE_ALIGN): Ditto.
9474         * config/stormy16/stormy16.cc (xstormy16_encode_section_info): Ditto.
9475         (xstormy16_handle_below100_attribute): Ditto.
9476         * config/v850/v850.cc (v850_encode_section_info): Ditto.
9477         (v850_insert_attributes): Ditto.
9478         * config/visium/visium.cc (visium_pass_by_reference): Ditto.
9479         (visium_return_in_memory): Ditto.
9480         * config/xtensa/xtensa.cc (xtensa_multibss_section_type_flags): Ditto.
9482 2023-05-18  Uros Bizjak  <ubizjak@gmail.com>
9484         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial): New.
9485         (ix86_expand_vecop_qihi): Add op2vec bool variable.
9486         Do not set REG_EQUAL note.
9487         * config/i386/i386-protos.h (ix86_expand_vecop_qihi_partial):
9488         Add prototype.
9489         * config/i386/i386.cc (ix86_multiplication_cost): Handle
9490         V4QImode and V8QImode.
9491         * config/i386/mmx.md (mulv8qi3): New expander.
9492         (mulv4qi3): Ditto.
9493         * config/i386/sse.md (mulv8qi3): Remove.
9495 2023-05-18  Georg-Johann Lay  <avr@gjlay.de>
9497         * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
9499 2023-05-18  Jonathan Wakely  <jwakely@redhat.com>
9501         PR bootstrap/105831
9502         * config.gcc: Use = operator instead of ==.
9504 2023-05-18  Michael Bäuerle  <micha@NetBSD.org>
9506         PR bootstrap/105831
9507         * config/nvptx/gen-opt.sh: Use = operator instead of ==.
9508         * configure.ac: Likewise.
9509         * configure: Regenerate.
9511 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
9513         * config/arm/arm_mve.h: (__ARM_mve_typeid): Add more pointer types.
9514         (__ARM_mve_coerce1): Remove.
9515         (__ARM_mve_coerce2): Remove.
9516         (__ARM_mve_coerce3): Remove.
9517         (__ARM_mve_coerce_i_scalar): New.
9518         (__ARM_mve_coerce_s8_ptr): New.
9519         (__ARM_mve_coerce_u8_ptr): New.
9520         (__ARM_mve_coerce_s16_ptr): New.
9521         (__ARM_mve_coerce_u16_ptr): New.
9522         (__ARM_mve_coerce_s32_ptr): New.
9523         (__ARM_mve_coerce_u32_ptr): New.
9524         (__ARM_mve_coerce_s64_ptr): New.
9525         (__ARM_mve_coerce_u64_ptr): New.
9526         (__ARM_mve_coerce_f_scalar): New.
9527         (__ARM_mve_coerce_f16_ptr): New.
9528         (__ARM_mve_coerce_f32_ptr): New.
9529         (__arm_vst4q): Change _coerce_ overloads.
9530         (__arm_vbicq): Change _coerce_ overloads.
9531         (__arm_vld1q): Change _coerce_ overloads.
9532         (__arm_vld1q_z): Change _coerce_ overloads.
9533         (__arm_vld2q): Change _coerce_ overloads.
9534         (__arm_vld4q): Change _coerce_ overloads.
9535         (__arm_vldrhq_gather_offset): Change _coerce_ overloads.
9536         (__arm_vldrhq_gather_offset_z): Change _coerce_ overloads.
9537         (__arm_vldrhq_gather_shifted_offset): Change _coerce_ overloads.
9538         (__arm_vldrhq_gather_shifted_offset_z): Change _coerce_ overloads.
9539         (__arm_vldrwq_gather_offset): Change _coerce_ overloads.
9540         (__arm_vldrwq_gather_offset_z): Change _coerce_ overloads.
9541         (__arm_vldrwq_gather_shifted_offset): Change _coerce_ overloads.
9542         (__arm_vldrwq_gather_shifted_offset_z): Change _coerce_ overloads.
9543         (__arm_vst1q_p): Change _coerce_ overloads.
9544         (__arm_vst2q): Change _coerce_ overloads.
9545         (__arm_vst1q): Change _coerce_ overloads.
9546         (__arm_vstrhq): Change _coerce_ overloads.
9547         (__arm_vstrhq_p): Change _coerce_ overloads.
9548         (__arm_vstrhq_scatter_offset_p): Change _coerce_ overloads.
9549         (__arm_vstrhq_scatter_offset): Change _coerce_ overloads.
9550         (__arm_vstrhq_scatter_shifted_offset_p): Change _coerce_ overloads.
9551         (__arm_vstrhq_scatter_shifted_offset): Change _coerce_ overloads.
9552         (__arm_vstrwq_p): Change _coerce_ overloads.
9553         (__arm_vstrwq): Change _coerce_ overloads.
9554         (__arm_vstrwq_scatter_offset): Change _coerce_ overloads.
9555         (__arm_vstrwq_scatter_offset_p): Change _coerce_ overloads.
9556         (__arm_vstrwq_scatter_shifted_offset): Change _coerce_ overloads.
9557         (__arm_vstrwq_scatter_shifted_offset_p): Change _coerce_ overloads.
9558         (__arm_vsetq_lane): Change _coerce_ overloads.
9559         (__arm_vldrbq_gather_offset): Change _coerce_ overloads.
9560         (__arm_vdwdupq_x_u8): Change _coerce_ overloads.
9561         (__arm_vdwdupq_x_u16): Change _coerce_ overloads.
9562         (__arm_vdwdupq_x_u32): Change _coerce_ overloads.
9563         (__arm_viwdupq_x_u8): Change _coerce_ overloads.
9564         (__arm_viwdupq_x_u16): Change _coerce_ overloads.
9565         (__arm_viwdupq_x_u32): Change _coerce_ overloads.
9566         (__arm_vidupq_x_u8): Change _coerce_ overloads.
9567         (__arm_vddupq_x_u8): Change _coerce_ overloads.
9568         (__arm_vidupq_x_u16): Change _coerce_ overloads.
9569         (__arm_vddupq_x_u16): Change _coerce_ overloads.
9570         (__arm_vidupq_x_u32): Change _coerce_ overloads.
9571         (__arm_vddupq_x_u32): Change _coerce_ overloads.
9572         (__arm_vldrdq_gather_offset): Change _coerce_ overloads.
9573         (__arm_vldrdq_gather_offset_z): Change _coerce_ overloads.
9574         (__arm_vldrdq_gather_shifted_offset): Change _coerce_ overloads.
9575         (__arm_vldrdq_gather_shifted_offset_z): Change _coerce_ overloads.
9576         (__arm_vldrbq_gather_offset_z): Change _coerce_ overloads.
9577         (__arm_vidupq_u16): Change _coerce_ overloads.
9578         (__arm_vidupq_u32): Change _coerce_ overloads.
9579         (__arm_vidupq_u8): Change _coerce_ overloads.
9580         (__arm_vddupq_u16): Change _coerce_ overloads.
9581         (__arm_vddupq_u32): Change _coerce_ overloads.
9582         (__arm_vddupq_u8): Change _coerce_ overloads.
9583         (__arm_viwdupq_m): Change _coerce_ overloads.
9584         (__arm_viwdupq_u16): Change _coerce_ overloads.
9585         (__arm_viwdupq_u32): Change _coerce_ overloads.
9586         (__arm_viwdupq_u8): Change _coerce_ overloads.
9587         (__arm_vdwdupq_m): Change _coerce_ overloads.
9588         (__arm_vdwdupq_u16): Change _coerce_ overloads.
9589         (__arm_vdwdupq_u32): Change _coerce_ overloads.
9590         (__arm_vdwdupq_u8): Change _coerce_ overloads.
9591         (__arm_vstrbq): Change _coerce_ overloads.
9592         (__arm_vstrbq_p): Change _coerce_ overloads.
9593         (__arm_vstrbq_scatter_offset_p): Change _coerce_ overloads.
9594         (__arm_vstrdq_scatter_offset_p): Change _coerce_ overloads.
9595         (__arm_vstrdq_scatter_offset): Change _coerce_ overloads.
9596         (__arm_vstrdq_scatter_shifted_offset_p): Change _coerce_ overloads.
9597         (__arm_vstrdq_scatter_shifted_offset): Change _coerce_ overloads.
9599 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
9601         * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
9602         scalar constant.
9604 2023-05-18  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
9606         * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic.
9607         (__arm_vadcq_u32): Likewise.
9608         (__arm_vadcq_m_s32): Likewise.
9609         (__arm_vadcq_m_u32): Likewise.
9610         (__arm_vsbcq_s32): Likewise.
9611         (__arm_vsbcq_u32): Likewise.
9612         (__arm_vsbcq_m_s32): Likewise.
9613         (__arm_vsbcq_m_u32): Likewise.
9614         * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile.
9616 2023-05-18  Andrea Corallo  <andrea.corallo@arm.com>
9618         * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrev64q_f<mode>)
9619         (mve_vrev32q_fv8hf, mve_vcvttq_f32_f16v4sf)
9620         (mve_vcvtbq_f32_f16v4sf, mve_vcvtq_to_f_<supf><mode>)
9621         (mve_vrev64q_<supf><mode>, mve_vcvtq_from_f_<supf><mode>)
9622         (mve_vmovltq_<supf><mode>, mve_vmovlbq_<supf><mode>)
9623         (mve_vcvtpq_<supf><mode>, mve_vcvtnq_<supf><mode>)
9624         (mve_vcvtmq_<supf><mode>, mve_vcvtaq_<supf><mode>)
9625         (mve_vmvnq_n_<supf><mode>, mve_vrev16q_<supf>v16qi)
9626         (mve_vctp<MVE_vctp>q<MVE_vpred>, mve_vbrsrq_n_f<mode>)
9627         (mve_vbrsrq_n_<supf><mode>, mve_vandq_f<mode>, mve_vbicq_f<mode>)
9628         (mve_vctp<MVE_vctp>q_m<MVE_vpred>, mve_vcvtbq_f16_f32v8hf)
9629         (mve_vcvttq_f16_f32v8hf, mve_veorq_f<mode>)
9630         (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
9631         (mve_vmlsldavxq_s<mode>, mve_vornq_f<mode>, mve_vorrq_f<mode>)
9632         (mve_vrmlaldavhxq_sv4si, mve_vcvtq_m_to_f_<supf><mode>)
9633         (mve_vshlcq_<supf><mode>, mve_vmvnq_m_<supf><mode>)
9634         (mve_vpselq_<supf><mode>, mve_vcvtbq_m_f16_f32v8hf)
9635         (mve_vcvtbq_m_f32_f16v4sf, mve_vcvttq_m_f16_f32v8hf)
9636         (mve_vcvttq_m_f32_f16v4sf, mve_vmlaldavq_p_<supf><mode>)
9637         (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
9638         (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>)
9639         (mve_vmvnq_m_n_<supf><mode>, mve_vorrq_m_n_<supf><mode>)
9640         (mve_vpselq_f<mode>, mve_vrev32q_m_fv8hf)
9641         (mve_vrev32q_m_<supf><mode>, mve_vrev64q_m_f<mode>)
9642         (mve_vrmlaldavhaxq_sv4si, mve_vrmlaldavhxq_p_sv4si)
9643         (mve_vrmlsldavhaxq_sv4si, mve_vrmlsldavhq_p_sv4si)
9644         (mve_vrmlsldavhxq_p_sv4si, mve_vrev16q_m_<supf>v16qi)
9645         (mve_vrmlaldavhq_p_<supf>v4si, mve_vrmlsldavhaq_sv4si)
9646         (mve_vandq_m_<supf><mode>, mve_vbicq_m_<supf><mode>)
9647         (mve_veorq_m_<supf><mode>, mve_vornq_m_<supf><mode>)
9648         (mve_vorrq_m_<supf><mode>, mve_vandq_m_f<mode>)
9649         (mve_vbicq_m_f<mode>, mve_veorq_m_f<mode>, mve_vornq_m_f<mode>)
9650         (mve_vorrq_m_f<mode>)
9651         (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn)
9652         (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn)
9653         (mve_vstrdq_scatter_base_wb_p_<supf>v2di) : Fix spacing and
9654         capitalization in the emitted asm.
9656 2023-05-18  Andrea Corallo  <andrea.corallo@arm.com>
9658         * config/arm/constraints.md (mve_vldrd_immediate): Move it to
9659         predicates.md.
9660         (Ri): Move constraint definition from predicates.md.
9661         (Rl): Define new constraint.
9662         * config/arm/mve.md (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Add
9663         missing constraint.
9664         (mve_vstrwq_scatter_base_wb_p_fv4sf): Add missing Up constraint
9665         for op 1, use mve_vstrw_immediate predicate and Rl constraint for
9666         op 2. Fix asm output spacing.
9667         (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Add missing constraint.
9668         * config/arm/predicates.md (Ri) Move constraint to constraints.md
9669         (mve_vldrd_immediate): Move it from
9670         constraints.md.
9671         (mve_vstrw_immediate): New predicate.
9673 2023-05-18  Pan Li  <pan2.li@intel.com>
9674             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
9675             Kito Cheng  <kito.cheng@sifive.com>
9676             Richard Biener  <rguenther@suse.de>
9677             Richard Sandiford  <richard.sandiford@arm.com>
9679         * combine.cc (struct reg_stat_type): Extend machine_mode to 16 bits.
9680         * cse.cc (struct qty_table_elem): Extend machine_mode to 16 bits
9681         (struct table_elt): Extend machine_mode to 16 bits.
9682         (struct set): Ditto.
9683         * genmodes.cc (emit_mode_wider): Extend type from char to short.
9684         (emit_mode_complex): Ditto.
9685         (emit_mode_inner): Ditto.
9686         (emit_class_narrowest_mode): Ditto.
9687         * genopinit.cc (main): Extend the machine_mode limit.
9688         * ira-int.h (struct ira_allocno): Extend machine_mode to 16 bits and
9689         re-ordered the struct fields for padding.
9690         * machmode.h (MACHINE_MODE_BITSIZE): New macro.
9691         (GET_MODE_2XWIDER_MODE): Extend type from char to short.
9692         (get_mode_alignment): Extend type from char to short.
9693         * ree.cc (struct ext_modified): Extend machine_mode to 16 bits and
9694         removed the ATTRIBUTE_PACKED.
9695         * rtl-ssa/accesses.h: Extend machine_mode to 16 bits, narrow
9696         * rtl-ssa/internals.inl (rtl_ssa::access_info): Adjust the assignment.
9697         m_kind to 2 bits and remove m_spare.
9698         * rtl.h (RTX_CODE_BITSIZE): New macro.
9699         (struct rtx_def): Swap both the bit size and location between the
9700         rtx_code and the machine_mode.
9701         (subreg_shape::unique_id): Extend the machine_mode limit.
9702         * rtlanal.h: Extend machine_mode to 16 bits.
9703         * tree-core.h (struct tree_type_common): Extend machine_mode to 16
9704         bits and re-ordered the struct fields for padding.
9705         (struct tree_decl_common): Extend machine_mode to 16 bits.
9707 2023-05-17  Jin Ma  <jinma@linux.alibaba.com>
9709         * genrecog.cc (print_nonbool_test): Fix type error of
9710         switch (SUBREG_BYTE (op))'.
9712 2023-05-17  Jin Ma  <jinma@linux.alibaba.com>
9714         * common/config/riscv/riscv-common.cc: Remove
9715         trailing spaces on lines.
9716         * config/riscv/riscv.cc (riscv_legitimize_move): Likewise.
9717         * config/riscv/riscv.h (enum reg_class): Likewise.
9718         * config/riscv/riscv.md: Likewise.
9720 2023-05-17  John David Anglin  <danglin@gcc.gnu.org>
9722         * config/pa/pa.md (clear_cache): New.
9724 2023-05-17  Arsen Arsenović  <arsen@aarsen.me>
9726         * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
9727         parenthesis.  Fix misnamed index entry.
9728         <concept>: Fix misnamed index entry.
9730 2023-05-17  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
9732         * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern,
9733         combined from ...
9734         (*<optab>si3_mask, *<optab>di3_mask): Here.
9735         (*<optab>si3_mask_1, *<optab>di3_mask_1): And here.
9736         * config/riscv/bitmanip.md (*<bitmanip_optab><GPR:mode>3_mask): New
9737         pattern.
9738         (*<bitmanip_optab>si3_sext_mask): Likewise.
9739         * config/riscv/iterators.md (shiftm1): Use const_si_mask_operand
9740         and const_di_mask_operand.
9741         (bitmanip_rotate): New iterator.
9742         (bitmanip_optab): Add rotates.
9743         * config/riscv/predicates.md (const_si_mask_operand): Renamed
9744         from const31_operand.  Generalize to handle more mask constants.
9745         (const_di_mask_operand): Similarly.
9747 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
9749         PR c++/109884
9750         * config/i386/i386-builtin-types.def (FLOAT128): Use
9751         float128t_type_node rather than float128_type_node.
9753 2023-05-17  Alexander Monakov  <amonakov@ispras.ru>
9755         * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
9756         FP_CONTRACT_FAST (no functional change).
9758 2023-05-17  Uros Bizjak  <ubizjak@gmail.com>
9760         * config/i386/i386.cc (ix86_multiplication_cost): Correct
9761         calcuation of integer vector mode costs to reflect generated
9762         instruction sequences of different integer vector modes and
9763         different target ABIs.
9765 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9767         * config/riscv/riscv-opts.h (enum riscv_entity): New enum.
9768         * config/riscv/riscv.cc (riscv_emit_mode_set): New function.
9769         (riscv_mode_needed): Ditto.
9770         (riscv_mode_after): Ditto.
9771         (riscv_mode_entry): Ditto.
9772         (riscv_mode_exit): Ditto.
9773         (riscv_mode_priority): Ditto.
9774         (TARGET_MODE_EMIT): New target hook.
9775         (TARGET_MODE_NEEDED): Ditto.
9776         (TARGET_MODE_AFTER): Ditto.
9777         (TARGET_MODE_ENTRY): Ditto.
9778         (TARGET_MODE_EXIT): Ditto.
9779         (TARGET_MODE_PRIORITY): Ditto.
9780         * config/riscv/riscv.h (OPTIMIZE_MODE_SWITCHING): Ditto.
9781         (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
9782         * config/riscv/riscv.md: Add csrwvxrm.
9783         * config/riscv/vector.md (rnu,rne,rdn,rod,none): New attribute.
9784         (vxrmsi): New pattern.
9786 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9788         * config/riscv/riscv-vector-builtins-bases.cc: Introduce rounding mode.
9789         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
9790         (struct narrow_alu_def): Ditto.
9791         * config/riscv/riscv-vector-builtins.cc (function_builder::apply_predication): Ditto.
9792         (function_expander::use_exact_insn): Ditto.
9793         * config/riscv/riscv-vector-builtins.h (function_checker::arg_num): New function.
9794         (function_base::has_rounding_mode_operand_p): New function.
9796 2023-05-17  Andrew Pinski  <apinski@marvell.com>
9798         * tree-ssa-forwprop.cc (simplify_builtin_call): Check
9799         against 0 instead of calling integer_zerop.
9801 2023-05-17  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9803         * config/riscv/riscv-vector-builtins.cc (register_vxrm): New function.
9804         (DEF_RVV_VXRM_ENUM): New macro.
9805         (handle_pragma_vector): Add vxrm enum register.
9806         * config/riscv/riscv-vector-builtins.def (DEF_RVV_VXRM_ENUM): New macro.
9807         (RNU): Ditto.
9808         (RNE): Ditto.
9809         (RDN): Ditto.
9810         (ROD): Ditto.
9812 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
9814         * value-range.h (Value_Range::operator=): New.
9816 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
9818         * value-range.cc (vrange::operator=): Add a stub to copy
9819         unsupported ranges.
9820         * value-range.h (is_a <unsupported_range>): New.
9821         (Value_Range::operator=): Support copying unsupported ranges.
9823 2023-05-17  Aldy Hernandez  <aldyh@redhat.com>
9825         * data-streamer-in.cc (streamer_read_real_value): New.
9826         (streamer_read_value_range): New.
9827         * data-streamer-out.cc (streamer_write_real_value): New.
9828         (streamer_write_vrange): New.
9829         * data-streamer.h (streamer_write_vrange): New.
9830         (streamer_read_value_range): New.
9832 2023-05-17  Jonathan Wakely  <jwakely@redhat.com>
9834         PR c++/109532
9835         * doc/invoke.texi (Code Gen Options): Note that -fshort-enums
9836         is ignored for a fixed underlying type.
9837         (C++ Dialect Options): Likewise for -fstrict-enums.
9839 2023-05-17  Tobias Burnus  <tobias@codesourcery.com>
9841         * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
9842         special case.
9844 2023-05-17  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
9846         * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
9847         New.
9848         (s390_atomic_align_for_mode): New.
9850 2023-05-17  Jakub Jelinek  <jakub@redhat.com>
9852         * wide-int.cc (wi::from_array): Add missing closing paren in function
9853         comment.
9855 2023-05-17  Kewen Lin  <linkw@linux.ibm.com>
9857         * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
9858         suggested unroll factor once the previous analysis fails.
9860 2023-05-17  Pan Li  <pan2.li@intel.com>
9862         * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New
9863         macro.
9864         (main): Add bool1 to the type indexer.
9865         * config/riscv/riscv-vector-builtins-functions.def
9866         (vreinterpret): Register vbool1 interpret function.
9867         * config/riscv/riscv-vector-builtins-types.def
9868         (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
9869         (vint8m1_t): Add the type to bool1_interpret_ops.
9870         (vint16m1_t): Ditto.
9871         (vint32m1_t): Ditto.
9872         (vint64m1_t): Ditto.
9873         (vuint8m1_t): Ditto.
9874         (vuint16m1_t): Ditto.
9875         (vuint32m1_t): Ditto.
9876         (vuint64m1_t): Ditto.
9877         * config/riscv/riscv-vector-builtins.cc
9878         (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
9879         (required_extensions_p): Add bool1 interpret case.
9880         * config/riscv/riscv-vector-builtins.def
9881         (bool1_interpret): Add bool1 interpret to base type.
9882         * config/riscv/vector.md (@vreinterpret<mode>): Add new expand
9883         with VB dest for vreinterpret.
9885 2023-05-17  Jiufu Guo  <guojiufu@linux.ibm.com>
9887         PR target/106708
9888         * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
9889         constants through "lis; xoris".
9891 2023-05-16  Ajit Kumar Agarwal  <aagarwa1@linux.ibm.com>
9893         * common/config/rs6000/rs6000-common.cc: Add REE pass as a
9894         default rs6000 target pass for O2 and above.
9895         * doc/invoke.texi: Document -free
9897 2023-05-16  Kito Cheng  <kito.cheng@sifive.com>
9899         * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
9900         Fix wrong select_kind...
9902 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
9904         * config/s390/s390-protos.h (s390_expand_setmem): Change
9905         function signature.
9906         * config/s390/s390.cc (s390_expand_setmem): For memset's less
9907         than or equal to 256 byte do not perform a libc call.
9908         * config/s390/s390.md: Change expander into a version which
9909         takes 8 operands.
9911 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
9913         * config/s390/s390-protos.h (s390_expand_movmem): New.
9914         * config/s390/s390.cc (s390_expand_movmem): New.
9915         * config/s390/s390.md (movmem<mode>): New.
9916         (*mvcrl): New.
9917         (mvcrl): New.
9919 2023-05-16  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
9921         * config/s390/s390-protos.h (s390_expand_cpymem): Change
9922         function signature.
9923         * config/s390/s390.cc (s390_expand_cpymem): For memcpy's less
9924         than or equal to 256 byte do not perform a libc call.
9925         (s390_expand_insv): Adapt new function signature of
9926         s390_expand_cpymem.
9927         * config/s390/s390.md: Change expander into a version which
9928         takes 8 operands.
9930 2023-05-16  Andrew Pinski  <apinski@marvell.com>
9932         PR tree-optimization/109424
9933         * match.pd: Add patterns for min/max of zero_one_valued
9934         values to `&`/`|`.
9936 2023-05-16  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9938         * config/riscv/riscv-protos.h (enum frm_field_enum): New enum.
9939         * config/riscv/riscv-vector-builtins.cc
9940         (function_expander::use_ternop_insn): Add default rounding mode.
9941         (function_expander::use_widen_ternop_insn): Ditto.
9942         * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add FRM REGNUM.
9943         (riscv_hard_regno_mode_ok): Ditto.
9944         (riscv_conditional_register_usage): Ditto.
9945         * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
9946         (FRM_REG_P): Ditto.
9947         (RISCV_DWARF_FRM): Ditto.
9948         * config/riscv/riscv.md: Ditto.
9949         * config/riscv/vector-iterators.md: split no frm and has frm operations.
9950         * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
9951         (@pred_<optab><mode>): Ditto.
9953 2023-05-15  Aldy Hernandez  <aldyh@redhat.com>
9955         PR tree-optimization/109695
9956         * value-range.cc (irange::operator=): Resize range.
9957         (irange::union_): Same.
9958         (irange::intersect): Same.
9959         (irange::invert): Same.
9960         (int_range_max): Default to 3 sub-ranges and resize as needed.
9961         * value-range.h (irange::maybe_resize): New.
9962         (~int_range): New.
9963         (int_range::int_range): Adjust for resizing.
9964         (int_range::operator=): Same.
9966 2023-05-15  Aldy Hernandez  <aldyh@redhat.com>
9968         * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary
9969         range copying
9970         * value-range.cc (irange::union_nonzero_bits): Return TRUE only
9971         when range changed.
9973 2023-05-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
9975         * config/riscv/riscv-protos.h (enum vxrm_field_enum): New enum.
9976         * config/riscv/riscv-vector-builtins.cc
9977         (function_expander::use_exact_insn): Add default rounding mode operand.
9978         * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add VXRM_REGNUM.
9979         (riscv_hard_regno_mode_ok): Ditto.
9980         (riscv_conditional_register_usage): Ditto.
9981         * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
9982         (VXRM_REG_P): Ditto.
9983         (RISCV_DWARF_VXRM): Ditto.
9984         * config/riscv/riscv.md: Ditto.
9985         * config/riscv/vector.md: Ditto
9987 2023-05-15  Pan Li  <pan2.li@intel.com>
9989         * optabs.cc (maybe_gen_insn): Add case to generate instruction
9990         that has 11 operands.
9992 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9994         * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
9995         logic for vector modes.
9997 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9999         PR target/99195
10000         * config/aarch64/aarch64-simd.md (aarch64_cm<optab><mode>): Rename to...
10001         (aarch64_cm<optab><mode><vczle><vczbe>): ... This.
10002         (aarch64_cmtst<mode>): Rename to...
10003         (aarch64_cmtst<mode><vczle><vczbe>): ... This.
10004         (*aarch64_cmtst_same_<mode>): Rename to...
10005         (*aarch64_cmtst_same_<mode><vczle><vczbe>): ... This.
10006         (*aarch64_cmtstdi): Rename to...
10007         (*aarch64_cmtstdi<vczle><vczbe>): ... This.
10008         (aarch64_fac<optab><mode>): Rename to...
10009         (aarch64_fac<optab><mode><vczle><vczbe>): ... This.
10011 2023-05-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10013         PR target/99195
10014         * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
10015         (aarch64_s<optab><mode><vczle><vczbe>): ... This.
10017 2023-05-15  Pan Li  <pan2.li@intel.com>
10018             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10019             kito-cheng  <kito.cheng@sifive.com>
10021         * config/riscv/riscv-v.cc (const_vlmax_p): New function for
10022         deciding the mode is constant or not.
10023         (set_len_and_policy): Optimize VLS-VLMAX code gen to vsetivli.
10025 2023-05-15  Richard Biener  <rguenther@suse.de>
10027         PR tree-optimization/109848
10028         * tree-ssa-forwprop.cc (pass_forwprop::execute): Put the
10029         TARGET_MEM_REF address preparation before the store, not
10030         before the CTOR.
10032 2023-05-15  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10034         * config/riscv/riscv.cc
10035         (riscv_vectorize_preferred_vector_alignment): New function.
10036         (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
10038 2023-05-14  Andrew Pinski  <apinski@marvell.com>
10040         PR tree-optimization/109829
10041         * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
10043 2023-05-14  Uros Bizjak  <ubizjak@gmail.com>
10045         PR target/109807
10046         * config/i386/i386.cc: Revert the 2023-05-11 change.
10047         (ix86_widen_mult_cost): Return high value instead of
10048         ICEing for unsupported modes.
10050 2023-05-14  Ard Biesheuvel  <ardb@kernel.org>
10052         * config/i386/i386.cc (x86_function_profiler): Take
10053         ix86_direct_extern_access into account when generating calls
10054         to __fentry__()
10056 2023-05-14  Pan Li  <pan2.li@intel.com>
10058         * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
10059         Refactor the or pattern to switch cases.
10061 2023-05-13  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
10063         * config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Rename
10064         aarch64_expand_vector_init to this, and remove  interleaving case.
10065         Recursively call aarch64_expand_vector_init_fallback, instead of
10066         aarch64_expand_vector_init.
10067         (aarch64_unzip_vector_init): New function.
10068         (aarch64_expand_vector_init): Likewise.
10070 2023-05-13  Kito Cheng  <kito.cheng@sifive.com>
10072         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
10073         Pull out function call from the gcc_assert.
10075 2023-05-13  Kito Cheng  <kito.cheng@sifive.com>
10077         * config/riscv/riscv-vsetvl.cc (vlmul_to_str): New.
10078         (policy_to_str): New.
10079         (vector_insn_info::dump): Use vlmul_to_str and policy_to_str.
10081 2023-05-13  Andrew Pinski  <apinski@marvell.com>
10083         PR tree-optimization/109834
10084         * match.pd (popcount(bswap(x))->popcount(x)): Fix up unsigned type checking.
10085         (popcount(rotate(x,y))->popcount(x)): Likewise.
10087 2023-05-12  Uros Bizjak  <ubizjak@gmail.com>
10089         * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also
10090         reject ymm instructions for TARGET_PREFER_AVX128.  Use generic
10091         gen_extend_insn to generate zero/sign extension instructions.
10092         Fix comments.
10093         (ix86_expand_vecop_qihi): Initialize interleave functions
10094         for MULT code only.  Fix comments.
10096 2023-05-12  Uros Bizjak  <ubizjak@gmail.com>
10098         PR target/109797
10099         * config/i386/mmx.md (mulv2si3): Remove expander.
10100         (mulv2si3): Rename insn pattern from *mulv2si.
10102 2023-05-12  Tobias Burnus  <tobias@codesourcery.com>
10104         PR libstdc++/109816
10105         * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
10106         '!lto_stream_offload_p'.
10108 2023-05-12  Kito Cheng  <kito.cheng@sifive.com>
10109             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
10111         PR target/109743
10112         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vsetvl_at_end): New.
10113         (local_avl_compatible_p): New.
10114         (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance local optimizations
10115         for LCM, rewrite as a backward algorithm.
10116         (pass_vsetvl::cleanup_insns): Use new local_eliminate_vsetvl_insn
10117         interface, handle a BB at once.
10119 2023-05-12  Richard Biener  <rguenther@suse.de>
10121         PR tree-optimization/64731
10122         * tree-ssa-forwprop.cc (pass_forwprop::execute): Also
10123         handle TARGET_MEM_REF destinations of stores from vector
10124         CTORs.
10126 2023-05-12  Richard Biener  <rguenther@suse.de>
10128         PR tree-optimization/109791
10129         * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))):
10130         New pattern.
10131         (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
10132         Likewise.
10134 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10136         * config/arm/arm-mve-builtins-base.cc (vsriq): New.
10137         * config/arm/arm-mve-builtins-base.def (vsriq): New.
10138         * config/arm/arm-mve-builtins-base.h (vsriq): New.
10139         * config/arm/arm-mve-builtins.cc
10140         (function_instance::has_inactive_argument): Handle vsriq.
10141         * config/arm/arm_mve.h (vsriq): Remove.
10142         (vsriq_m): Remove.
10143         (vsriq_n_u8): Remove.
10144         (vsriq_n_s8): Remove.
10145         (vsriq_n_u16): Remove.
10146         (vsriq_n_s16): Remove.
10147         (vsriq_n_u32): Remove.
10148         (vsriq_n_s32): Remove.
10149         (vsriq_m_n_s8): Remove.
10150         (vsriq_m_n_u8): Remove.
10151         (vsriq_m_n_s16): Remove.
10152         (vsriq_m_n_u16): Remove.
10153         (vsriq_m_n_s32): Remove.
10154         (vsriq_m_n_u32): Remove.
10155         (__arm_vsriq_n_u8): Remove.
10156         (__arm_vsriq_n_s8): Remove.
10157         (__arm_vsriq_n_u16): Remove.
10158         (__arm_vsriq_n_s16): Remove.
10159         (__arm_vsriq_n_u32): Remove.
10160         (__arm_vsriq_n_s32): Remove.
10161         (__arm_vsriq_m_n_s8): Remove.
10162         (__arm_vsriq_m_n_u8): Remove.
10163         (__arm_vsriq_m_n_s16): Remove.
10164         (__arm_vsriq_m_n_u16): Remove.
10165         (__arm_vsriq_m_n_s32): Remove.
10166         (__arm_vsriq_m_n_u32): Remove.
10167         (__arm_vsriq): Remove.
10168         (__arm_vsriq_m): Remove.
10170 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10172         * config/arm/iterators.md (mve_insn): Add vsri.
10173         * config/arm/mve.md (mve_vsriq_n_<supf><mode>): Rename into ...
10174         (@mve_<mve_insn>q_n_<supf><mode>): .,. this.
10175         (mve_vsriq_m_n_<supf><mode>): Rename into ...
10176         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10178 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10180         * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
10181         * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
10183 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10185         * config/arm/arm-mve-builtins-base.cc (vsliq): New.
10186         * config/arm/arm-mve-builtins-base.def (vsliq): New.
10187         * config/arm/arm-mve-builtins-base.h (vsliq): New.
10188         * config/arm/arm-mve-builtins.cc
10189         (function_instance::has_inactive_argument): Handle vsliq.
10190         * config/arm/arm_mve.h (vsliq): Remove.
10191         (vsliq_m): Remove.
10192         (vsliq_n_u8): Remove.
10193         (vsliq_n_s8): Remove.
10194         (vsliq_n_u16): Remove.
10195         (vsliq_n_s16): Remove.
10196         (vsliq_n_u32): Remove.
10197         (vsliq_n_s32): Remove.
10198         (vsliq_m_n_s8): Remove.
10199         (vsliq_m_n_s32): Remove.
10200         (vsliq_m_n_s16): Remove.
10201         (vsliq_m_n_u8): Remove.
10202         (vsliq_m_n_u32): Remove.
10203         (vsliq_m_n_u16): Remove.
10204         (__arm_vsliq_n_u8): Remove.
10205         (__arm_vsliq_n_s8): Remove.
10206         (__arm_vsliq_n_u16): Remove.
10207         (__arm_vsliq_n_s16): Remove.
10208         (__arm_vsliq_n_u32): Remove.
10209         (__arm_vsliq_n_s32): Remove.
10210         (__arm_vsliq_m_n_s8): Remove.
10211         (__arm_vsliq_m_n_s32): Remove.
10212         (__arm_vsliq_m_n_s16): Remove.
10213         (__arm_vsliq_m_n_u8): Remove.
10214         (__arm_vsliq_m_n_u32): Remove.
10215         (__arm_vsliq_m_n_u16): Remove.
10216         (__arm_vsliq): Remove.
10217         (__arm_vsliq_m): Remove.
10219 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10221         * config/arm/iterators.md (mve_insn>): Add vsli.
10222         * config/arm/mve.md (mve_vsliq_n_<supf><mode>): Rename into ...
10223         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10224         (mve_vsliq_m_n_<supf><mode>): Rename into ...
10225         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10227 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10229         * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
10230         * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
10232 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10234         * config/arm/arm-mve-builtins-base.cc (vpselq): New.
10235         * config/arm/arm-mve-builtins-base.def (vpselq): New.
10236         * config/arm/arm-mve-builtins-base.h (vpselq): New.
10237         * config/arm/arm_mve.h (vpselq): Remove.
10238         (vpselq_u8): Remove.
10239         (vpselq_s8): Remove.
10240         (vpselq_u16): Remove.
10241         (vpselq_s16): Remove.
10242         (vpselq_u32): Remove.
10243         (vpselq_s32): Remove.
10244         (vpselq_u64): Remove.
10245         (vpselq_s64): Remove.
10246         (vpselq_f16): Remove.
10247         (vpselq_f32): Remove.
10248         (__arm_vpselq_u8): Remove.
10249         (__arm_vpselq_s8): Remove.
10250         (__arm_vpselq_u16): Remove.
10251         (__arm_vpselq_s16): Remove.
10252         (__arm_vpselq_u32): Remove.
10253         (__arm_vpselq_s32): Remove.
10254         (__arm_vpselq_u64): Remove.
10255         (__arm_vpselq_s64): Remove.
10256         (__arm_vpselq_f16): Remove.
10257         (__arm_vpselq_f32): Remove.
10258         (__arm_vpselq): Remove.
10260 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10262         * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
10263         * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
10265 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10267         * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of
10268         gen_mve_vpselq.
10269         * config/arm/iterators.md (MVE_VPSELQ_F): New.
10270         (mve_insn): Add vpsel.
10271         * config/arm/mve.md (@mve_vpselq_<supf><mode>): Rename into ...
10272         (@mve_<mve_insn>q_<supf><mode>): ... this.
10273         (@mve_vpselq_f<mode>): Rename into ...
10274         (@mve_<mve_insn>q_f<mode>): ... this.
10276 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10278         * config/arm/arm-mve-builtins-base.cc (vfmaq, vfmasq, vfmsq): New.
10279         * config/arm/arm-mve-builtins-base.def (vfmaq, vfmasq, vfmsq): New.
10280         * config/arm/arm-mve-builtins-base.h (vfmaq, vfmasq, vfmsq): New.
10281         * config/arm/arm-mve-builtins.cc
10282         (function_instance::has_inactive_argument): Handle vfmaq, vfmasq,
10283         vfmsq.
10284         * config/arm/arm_mve.h (vfmaq): Remove.
10285         (vfmasq): Remove.
10286         (vfmsq): Remove.
10287         (vfmaq_m): Remove.
10288         (vfmasq_m): Remove.
10289         (vfmsq_m): Remove.
10290         (vfmaq_f16): Remove.
10291         (vfmaq_n_f16): Remove.
10292         (vfmasq_n_f16): Remove.
10293         (vfmsq_f16): Remove.
10294         (vfmaq_f32): Remove.
10295         (vfmaq_n_f32): Remove.
10296         (vfmasq_n_f32): Remove.
10297         (vfmsq_f32): Remove.
10298         (vfmaq_m_f32): Remove.
10299         (vfmaq_m_f16): Remove.
10300         (vfmaq_m_n_f32): Remove.
10301         (vfmaq_m_n_f16): Remove.
10302         (vfmasq_m_n_f32): Remove.
10303         (vfmasq_m_n_f16): Remove.
10304         (vfmsq_m_f32): Remove.
10305         (vfmsq_m_f16): Remove.
10306         (__arm_vfmaq_f16): Remove.
10307         (__arm_vfmaq_n_f16): Remove.
10308         (__arm_vfmasq_n_f16): Remove.
10309         (__arm_vfmsq_f16): Remove.
10310         (__arm_vfmaq_f32): Remove.
10311         (__arm_vfmaq_n_f32): Remove.
10312         (__arm_vfmasq_n_f32): Remove.
10313         (__arm_vfmsq_f32): Remove.
10314         (__arm_vfmaq_m_f32): Remove.
10315         (__arm_vfmaq_m_f16): Remove.
10316         (__arm_vfmaq_m_n_f32): Remove.
10317         (__arm_vfmaq_m_n_f16): Remove.
10318         (__arm_vfmasq_m_n_f32): Remove.
10319         (__arm_vfmasq_m_n_f16): Remove.
10320         (__arm_vfmsq_m_f32): Remove.
10321         (__arm_vfmsq_m_f16): Remove.
10322         (__arm_vfmaq): Remove.
10323         (__arm_vfmasq): Remove.
10324         (__arm_vfmsq): Remove.
10325         (__arm_vfmaq_m): Remove.
10326         (__arm_vfmasq_m): Remove.
10327         (__arm_vfmsq_m): Remove.
10329 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10331         * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_M_F,
10332         VFMSQ_M_F.
10333         (MVE_FP_M_N_BINARY): Add VFMAQ_M_N_F, VFMASQ_M_N_F.
10334         (MVE_VFMxQ_F, MVE_VFMAxQ_N_F): New.
10335         (mve_insn): Add vfma, vfmas, vfms.
10336         * config/arm/mve.md (mve_vfmaq_f<mode>, mve_vfmsq_f<mode>): Merge
10337         into ...
10338         (@mve_<mve_insn>q_f<mode>): ... this.
10339         (mve_vfmaq_n_f<mode>, mve_vfmasq_n_f<mode>): Merge into ...
10340         (@mve_<mve_insn>q_n_f<mode>): ... this.
10341         (mve_vfmaq_m_f<mode>, mve_vfmsq_m_f<mode>): Merge into
10342         @mve_<mve_insn>q_m_f<mode>.
10343         (mve_vfmaq_m_n_f<mode>, mve_vfmasq_m_n_f<mode>): Merge into
10344         @mve_<mve_insn>q_m_n_f<mode>.
10346 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10348         * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
10349         * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
10351 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10353         * config/arm/arm-mve-builtins-base.cc
10354         (FUNCTION_WITH_RTX_M_N_NO_F): New.
10355         (vmvnq): New.
10356         * config/arm/arm-mve-builtins-base.def (vmvnq): New.
10357         * config/arm/arm-mve-builtins-base.h (vmvnq): New.
10358         * config/arm/arm_mve.h (vmvnq): Remove.
10359         (vmvnq_m): Remove.
10360         (vmvnq_x): Remove.
10361         (vmvnq_s8): Remove.
10362         (vmvnq_s16): Remove.
10363         (vmvnq_s32): Remove.
10364         (vmvnq_n_s16): Remove.
10365         (vmvnq_n_s32): Remove.
10366         (vmvnq_u8): Remove.
10367         (vmvnq_u16): Remove.
10368         (vmvnq_u32): Remove.
10369         (vmvnq_n_u16): Remove.
10370         (vmvnq_n_u32): Remove.
10371         (vmvnq_m_u8): Remove.
10372         (vmvnq_m_s8): Remove.
10373         (vmvnq_m_u16): Remove.
10374         (vmvnq_m_s16): Remove.
10375         (vmvnq_m_u32): Remove.
10376         (vmvnq_m_s32): Remove.
10377         (vmvnq_m_n_s16): Remove.
10378         (vmvnq_m_n_u16): Remove.
10379         (vmvnq_m_n_s32): Remove.
10380         (vmvnq_m_n_u32): Remove.
10381         (vmvnq_x_s8): Remove.
10382         (vmvnq_x_s16): Remove.
10383         (vmvnq_x_s32): Remove.
10384         (vmvnq_x_u8): Remove.
10385         (vmvnq_x_u16): Remove.
10386         (vmvnq_x_u32): Remove.
10387         (vmvnq_x_n_s16): Remove.
10388         (vmvnq_x_n_s32): Remove.
10389         (vmvnq_x_n_u16): Remove.
10390         (vmvnq_x_n_u32): Remove.
10391         (__arm_vmvnq_s8): Remove.
10392         (__arm_vmvnq_s16): Remove.
10393         (__arm_vmvnq_s32): Remove.
10394         (__arm_vmvnq_n_s16): Remove.
10395         (__arm_vmvnq_n_s32): Remove.
10396         (__arm_vmvnq_u8): Remove.
10397         (__arm_vmvnq_u16): Remove.
10398         (__arm_vmvnq_u32): Remove.
10399         (__arm_vmvnq_n_u16): Remove.
10400         (__arm_vmvnq_n_u32): Remove.
10401         (__arm_vmvnq_m_u8): Remove.
10402         (__arm_vmvnq_m_s8): Remove.
10403         (__arm_vmvnq_m_u16): Remove.
10404         (__arm_vmvnq_m_s16): Remove.
10405         (__arm_vmvnq_m_u32): Remove.
10406         (__arm_vmvnq_m_s32): Remove.
10407         (__arm_vmvnq_m_n_s16): Remove.
10408         (__arm_vmvnq_m_n_u16): Remove.
10409         (__arm_vmvnq_m_n_s32): Remove.
10410         (__arm_vmvnq_m_n_u32): Remove.
10411         (__arm_vmvnq_x_s8): Remove.
10412         (__arm_vmvnq_x_s16): Remove.
10413         (__arm_vmvnq_x_s32): Remove.
10414         (__arm_vmvnq_x_u8): Remove.
10415         (__arm_vmvnq_x_u16): Remove.
10416         (__arm_vmvnq_x_u32): Remove.
10417         (__arm_vmvnq_x_n_s16): Remove.
10418         (__arm_vmvnq_x_n_s32): Remove.
10419         (__arm_vmvnq_x_n_u16): Remove.
10420         (__arm_vmvnq_x_n_u32): Remove.
10421         (__arm_vmvnq): Remove.
10422         (__arm_vmvnq_m): Remove.
10423         (__arm_vmvnq_x): Remove.
10425 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10427         * config/arm/iterators.md (mve_insn): Add vmvn.
10428         * config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Rename into ...
10429         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10430         (mve_vmvnq_m_<supf><mode>): Rename into ...
10431         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
10432         (mve_vmvnq_m_n_<supf><mode>): Rename into ...
10433         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10435 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10437         * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
10438         * config/arm/arm-mve-builtins-shapes.h (mvn): New.
10440 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10442         * config/arm/arm-mve-builtins-base.cc (vbrsrq): New.
10443         * config/arm/arm-mve-builtins-base.def (vbrsrq): New.
10444         * config/arm/arm-mve-builtins-base.h (vbrsrq): New.
10445         * config/arm/arm_mve.h (vbrsrq): Remove.
10446         (vbrsrq_m): Remove.
10447         (vbrsrq_x): Remove.
10448         (vbrsrq_n_f16): Remove.
10449         (vbrsrq_n_f32): Remove.
10450         (vbrsrq_n_u8): Remove.
10451         (vbrsrq_n_s8): Remove.
10452         (vbrsrq_n_u16): Remove.
10453         (vbrsrq_n_s16): Remove.
10454         (vbrsrq_n_u32): Remove.
10455         (vbrsrq_n_s32): Remove.
10456         (vbrsrq_m_n_s8): Remove.
10457         (vbrsrq_m_n_s32): Remove.
10458         (vbrsrq_m_n_s16): Remove.
10459         (vbrsrq_m_n_u8): Remove.
10460         (vbrsrq_m_n_u32): Remove.
10461         (vbrsrq_m_n_u16): Remove.
10462         (vbrsrq_m_n_f32): Remove.
10463         (vbrsrq_m_n_f16): Remove.
10464         (vbrsrq_x_n_s8): Remove.
10465         (vbrsrq_x_n_s16): Remove.
10466         (vbrsrq_x_n_s32): Remove.
10467         (vbrsrq_x_n_u8): Remove.
10468         (vbrsrq_x_n_u16): Remove.
10469         (vbrsrq_x_n_u32): Remove.
10470         (vbrsrq_x_n_f16): Remove.
10471         (vbrsrq_x_n_f32): Remove.
10472         (__arm_vbrsrq_n_u8): Remove.
10473         (__arm_vbrsrq_n_s8): Remove.
10474         (__arm_vbrsrq_n_u16): Remove.
10475         (__arm_vbrsrq_n_s16): Remove.
10476         (__arm_vbrsrq_n_u32): Remove.
10477         (__arm_vbrsrq_n_s32): Remove.
10478         (__arm_vbrsrq_m_n_s8): Remove.
10479         (__arm_vbrsrq_m_n_s32): Remove.
10480         (__arm_vbrsrq_m_n_s16): Remove.
10481         (__arm_vbrsrq_m_n_u8): Remove.
10482         (__arm_vbrsrq_m_n_u32): Remove.
10483         (__arm_vbrsrq_m_n_u16): Remove.
10484         (__arm_vbrsrq_x_n_s8): Remove.
10485         (__arm_vbrsrq_x_n_s16): Remove.
10486         (__arm_vbrsrq_x_n_s32): Remove.
10487         (__arm_vbrsrq_x_n_u8): Remove.
10488         (__arm_vbrsrq_x_n_u16): Remove.
10489         (__arm_vbrsrq_x_n_u32): Remove.
10490         (__arm_vbrsrq_n_f16): Remove.
10491         (__arm_vbrsrq_n_f32): Remove.
10492         (__arm_vbrsrq_m_n_f32): Remove.
10493         (__arm_vbrsrq_m_n_f16): Remove.
10494         (__arm_vbrsrq_x_n_f16): Remove.
10495         (__arm_vbrsrq_x_n_f32): Remove.
10496         (__arm_vbrsrq): Remove.
10497         (__arm_vbrsrq_m): Remove.
10498         (__arm_vbrsrq_x): Remove.
10500 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10502         * config/arm/iterators.md (MVE_VBRSR_M_N_FP, MVE_VBRSR_N_FP): New.
10503         (mve_insn): Add vbrsr.
10504         * config/arm/mve.md (mve_vbrsrq_n_f<mode>): Rename into ...
10505         (@mve_<mve_insn>q_n_f<mode>): ... this.
10506         (mve_vbrsrq_n_<supf><mode>): Rename into ...
10507         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10508         (mve_vbrsrq_m_n_<supf><mode>): Rename into ...
10509         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10510         (mve_vbrsrq_m_n_f<mode>): Rename into ...
10511         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
10513 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10515         * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
10516         * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
10518 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10520         * config/arm/arm-mve-builtins-base.cc (vqshluq): New.
10521         * config/arm/arm-mve-builtins-base.def (vqshluq): New.
10522         * config/arm/arm-mve-builtins-base.h (vqshluq): New.
10523         * config/arm/arm_mve.h (vqshluq): Remove.
10524         (vqshluq_m): Remove.
10525         (vqshluq_n_s8): Remove.
10526         (vqshluq_n_s16): Remove.
10527         (vqshluq_n_s32): Remove.
10528         (vqshluq_m_n_s8): Remove.
10529         (vqshluq_m_n_s16): Remove.
10530         (vqshluq_m_n_s32): Remove.
10531         (__arm_vqshluq_n_s8): Remove.
10532         (__arm_vqshluq_n_s16): Remove.
10533         (__arm_vqshluq_n_s32): Remove.
10534         (__arm_vqshluq_m_n_s8): Remove.
10535         (__arm_vqshluq_m_n_s16): Remove.
10536         (__arm_vqshluq_m_n_s32): Remove.
10537         (__arm_vqshluq): Remove.
10538         (__arm_vqshluq_m): Remove.
10540 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10542         * config/arm/iterators.md (mve_insn): Add vqshlu.
10543         (supf): Add VQSHLUQ_M_N_S, VQSHLUQ_N_S.
10544         (VQSHLUQ_M_N, VQSHLUQ_N): New.
10545         * config/arm/mve.md (mve_vqshluq_n_s<mode>): Change name into ...
10546         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10547         (mve_vqshluq_m_n_s<mode>): Change name into ...
10548         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10550 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10552         * config/arm/arm-mve-builtins-shapes.cc
10553         (binary_lshift_unsigned): New.
10554         * config/arm/arm-mve-builtins-shapes.h
10555         (binary_lshift_unsigned): New.
10557 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10559         * config/arm/arm-mve-builtins-base.cc (vrmlaldavhaq)
10560         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
10561         * config/arm/arm-mve-builtins-base.def (vrmlaldavhaq)
10562         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
10563         * config/arm/arm-mve-builtins-base.h (vrmlaldavhaq)
10564         (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
10565         * config/arm/arm-mve-builtins-functions.h: Handle vrmlaldavhaq,
10566         vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq.
10567         * config/arm/arm_mve.h (vrmlaldavhaq): Remove.
10568         (vrmlaldavhaxq): Remove.
10569         (vrmlsldavhaq): Remove.
10570         (vrmlsldavhaxq): Remove.
10571         (vrmlaldavhaq_p): Remove.
10572         (vrmlaldavhaxq_p): Remove.
10573         (vrmlsldavhaq_p): Remove.
10574         (vrmlsldavhaxq_p): Remove.
10575         (vrmlaldavhaq_s32): Remove.
10576         (vrmlaldavhaq_u32): Remove.
10577         (vrmlaldavhaxq_s32): Remove.
10578         (vrmlsldavhaq_s32): Remove.
10579         (vrmlsldavhaxq_s32): Remove.
10580         (vrmlaldavhaq_p_s32): Remove.
10581         (vrmlaldavhaq_p_u32): Remove.
10582         (vrmlaldavhaxq_p_s32): Remove.
10583         (vrmlsldavhaq_p_s32): Remove.
10584         (vrmlsldavhaxq_p_s32): Remove.
10585         (__arm_vrmlaldavhaq_s32): Remove.
10586         (__arm_vrmlaldavhaq_u32): Remove.
10587         (__arm_vrmlaldavhaxq_s32): Remove.
10588         (__arm_vrmlsldavhaq_s32): Remove.
10589         (__arm_vrmlsldavhaxq_s32): Remove.
10590         (__arm_vrmlaldavhaq_p_s32): Remove.
10591         (__arm_vrmlaldavhaq_p_u32): Remove.
10592         (__arm_vrmlaldavhaxq_p_s32): Remove.
10593         (__arm_vrmlsldavhaq_p_s32): Remove.
10594         (__arm_vrmlsldavhaxq_p_s32): Remove.
10595         (__arm_vrmlaldavhaq): Remove.
10596         (__arm_vrmlaldavhaxq): Remove.
10597         (__arm_vrmlsldavhaq): Remove.
10598         (__arm_vrmlsldavhaxq): Remove.
10599         (__arm_vrmlaldavhaq_p): Remove.
10600         (__arm_vrmlaldavhaxq_p): Remove.
10601         (__arm_vrmlsldavhaq_p): Remove.
10602         (__arm_vrmlsldavhaxq_p): Remove.
10604 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10606         * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ)
10607         (MVE_VRMLxLDAVHAxQ_P): New.
10608         (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha,
10609         vrmlsldavhax.
10610         (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
10611         VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S,
10612         VRMLALDAVHAQ_P_S.
10613         * config/arm/mve.md (mve_vrmlaldavhaq_<supf>v4si)
10614         (mve_vrmlaldavhaxq_sv4si, mve_vrmlsldavhaxq_sv4si)
10615         (mve_vrmlsldavhaq_sv4si): Merge into ...
10616         (@mve_<mve_insn>q_<supf>v4si): ... this.
10617         (mve_vrmlaldavhaq_p_sv4si, mve_vrmlaldavhaq_p_uv4si)
10618         (mve_vrmlaldavhaxq_p_sv4si, mve_vrmlsldavhaq_p_sv4si)
10619         (mve_vrmlsldavhaxq_p_sv4si): Merge into ...
10620         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
10622 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10624         * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New.
10625         * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq):
10626         New.
10627         * config/arm/arm-mve-builtins-base.h (vqdmullbq, vqdmulltq): New.
10628         * config/arm/arm_mve.h (vqdmulltq): Remove.
10629         (vqdmullbq): Remove.
10630         (vqdmullbq_m): Remove.
10631         (vqdmulltq_m): Remove.
10632         (vqdmulltq_s16): Remove.
10633         (vqdmulltq_n_s16): Remove.
10634         (vqdmullbq_s16): Remove.
10635         (vqdmullbq_n_s16): Remove.
10636         (vqdmulltq_s32): Remove.
10637         (vqdmulltq_n_s32): Remove.
10638         (vqdmullbq_s32): Remove.
10639         (vqdmullbq_n_s32): Remove.
10640         (vqdmullbq_m_n_s32): Remove.
10641         (vqdmullbq_m_n_s16): Remove.
10642         (vqdmullbq_m_s32): Remove.
10643         (vqdmullbq_m_s16): Remove.
10644         (vqdmulltq_m_n_s32): Remove.
10645         (vqdmulltq_m_n_s16): Remove.
10646         (vqdmulltq_m_s32): Remove.
10647         (vqdmulltq_m_s16): Remove.
10648         (__arm_vqdmulltq_s16): Remove.
10649         (__arm_vqdmulltq_n_s16): Remove.
10650         (__arm_vqdmullbq_s16): Remove.
10651         (__arm_vqdmullbq_n_s16): Remove.
10652         (__arm_vqdmulltq_s32): Remove.
10653         (__arm_vqdmulltq_n_s32): Remove.
10654         (__arm_vqdmullbq_s32): Remove.
10655         (__arm_vqdmullbq_n_s32): Remove.
10656         (__arm_vqdmullbq_m_n_s32): Remove.
10657         (__arm_vqdmullbq_m_n_s16): Remove.
10658         (__arm_vqdmullbq_m_s32): Remove.
10659         (__arm_vqdmullbq_m_s16): Remove.
10660         (__arm_vqdmulltq_m_n_s32): Remove.
10661         (__arm_vqdmulltq_m_n_s16): Remove.
10662         (__arm_vqdmulltq_m_s32): Remove.
10663         (__arm_vqdmulltq_m_s16): Remove.
10664         (__arm_vqdmulltq): Remove.
10665         (__arm_vqdmullbq): Remove.
10666         (__arm_vqdmullbq_m): Remove.
10667         (__arm_vqdmulltq_m): Remove.
10669 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10671         * config/arm/iterators.md (MVE_VQDMULLxQ, MVE_VQDMULLxQ_M)
10672         (MVE_VQDMULLxQ_M_N, MVE_VQDMULLxQ_N): New.
10673         (mve_insn): Add vqdmullb, vqdmullt.
10674         (supf): Add VQDMULLBQ_S, VQDMULLBQ_M_S, VQDMULLBQ_M_N_S,
10675         VQDMULLBQ_N_S, VQDMULLTQ_S, VQDMULLTQ_M_S, VQDMULLTQ_M_N_S,
10676         VQDMULLTQ_N_S.
10677         * config/arm/mve.md (mve_vqdmullbq_n_s<mode>)
10678         (mve_vqdmulltq_n_s<mode>): Merge into ...
10679         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10680         (mve_vqdmullbq_s<mode>, mve_vqdmulltq_s<mode>): Merge into ...
10681         (@mve_<mve_insn>q_<supf><mode>): ... this.
10682         (mve_vqdmullbq_m_n_s<mode>, mve_vqdmulltq_m_n_s<mode>): Merge into
10683         ...
10684         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10685         (mve_vqdmullbq_m_s<mode>, mve_vqdmulltq_m_s<mode>): Merge into ...
10686         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
10688 2023-05-12  Christophe Lyon  <christophe.lyon@arm.com>
10690         * config/arm/arm-mve-builtins-shapes.cc (binary_widen_opt_n): New.
10691         * config/arm/arm-mve-builtins-shapes.h (binary_widen_opt_n): New.
10693 2023-05-12  Kito Cheng  <kito.cheng@sifive.com>
10695         * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi):
10696         Drop unused parameter.
10697         (riscv_select_multilib): Ditto.
10698         (riscv_compute_multilib): Update call site of
10699         riscv_select_multilib_by_abi and riscv_select_multilib_by_abi.
10701 2023-05-12  Juzhe Zhong  <juzhe.zhong@rivai.ai>
10703         * config/riscv/autovec.md (vec_init<mode><vel>): New pattern.
10704         * config/riscv/riscv-protos.h (expand_vec_init): New function.
10705         * config/riscv/riscv-v.cc (class rvv_builder): New class.
10706         (rvv_builder::can_duplicate_repeating_sequence_p): New function.
10707         (rvv_builder::get_merged_repeating_sequence): Ditto.
10708         (expand_vector_init_insert_elems): Ditto.
10709         (expand_vec_init): Ditto.
10710         * config/riscv/vector-iterators.md: New attribute.
10712 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
10714         * config/rs6000/rs6000-builtins.def
10715         (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp
10716         to xsiexpdp_di.
10717         (__builtin_vsx_scalar_insert_exp_dp): Replace bif-pattern from
10718         xsiexpdpf to xsiexpdpf_di.
10719         * config/rs6000/vsx.md (xsiexpdp): Rename to...
10720         (xsiexpdp_<mode>): ..., set the mode of second operand to GPR and
10721         replace TARGET_64BIT with TARGET_POWERPC64.
10722         (xsiexpdpf): Rename to...
10723         (xsiexpdpf_<mode>): ..., set the mode of second operand to GPR and
10724         replace TARGET_64BIT with TARGET_POWERPC64.
10726 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
10728         * config/rs6000/rs6000-builtins.def
10729         (__builtin_vsx_scalar_extract_sig): Set return type to const signed
10730         long long.
10731         * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
10732         TARGET_POWERPC64.
10734 2023-05-12  Haochen Gui  <guihaoc@gcc.gnu.org>
10736         * config/rs6000/rs6000-builtins.def
10737         (__builtin_vsx_scalar_extract_exp): Set return type to const signed
10738         int and set its bif-pattern to xsxexpdp_si, move it from power9-64
10739         to power9 catalog.
10740         * config/rs6000/vsx.md (xsxexpdp): Rename to ...
10741         (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
10742         TARGET_64BIT check.
10743         * doc/extend.texi (scalar_extract_exp): Remove 64-bit environment
10744         requirement when it has a 64-bit argument.
10746 2023-05-12  Pan Li  <pan2.li@intel.com>
10747             Richard Sandiford  <richard.sandiford@arm.com>
10748             Richard Biener  <rguenther@suse.de>
10749             Jakub Jelinek  <jakub@redhat.com>
10751         * mux-utils.h: Add overload operator == and != for pointer_mux.
10752         * var-tracking.cc: Included mux-utils.h for pointer_tmux.
10753         (decl_or_value): Changed from void * to pointer_mux<tree_node, rtx_def>.
10754         (dv_is_decl_p): Reconciled to the new type, aka pointer_mux.
10755         (dv_as_decl): Ditto.
10756         (dv_as_opaque): Removed due to unnecessary.
10757         (struct variable_hasher): Take decl_or_value as compare_type.
10758         (variable_hasher::equal): Diito.
10759         (dv_from_decl): Reconciled to the new type, aka pointer_mux.
10760         (dv_from_value): Ditto.
10761         (attrs_list_member):  Ditto.
10762         (vars_copy): Ditto.
10763         (var_reg_decl_set): Ditto.
10764         (var_reg_delete_and_set): Ditto.
10765         (find_loc_in_1pdv): Ditto.
10766         (canonicalize_values_star): Ditto.
10767         (variable_post_merge_new_vals): Ditto.
10768         (dump_onepart_variable_differences): Ditto.
10769         (variable_different_p): Ditto.
10770         (set_slot_part): Ditto.
10771         (clobber_slot_part): Ditto.
10772         (clobber_variable_part): Ditto.
10774 2023-05-11  mtsamis  <manolis.tsamis@vrull.eu>
10776         * match.pd: simplify vector shift + bit_and + multiply.
10778 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10780         * config/arm/arm-mve-builtins-base.cc (vmlaq, vmlasq, vqdmlahq)
10781         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
10782         * config/arm/arm-mve-builtins-base.def (vmlaq, vmlasq, vqdmlahq)
10783         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
10784         * config/arm/arm-mve-builtins-base.h (vmlaq, vmlasq, vqdmlahq)
10785         (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
10786         * config/arm/arm-mve-builtins.cc
10787         (function_instance::has_inactive_argument): Handle vmlaq, vmlasq,
10788         vqdmlahq, vqdmlashq, vqrdmlahq, vqrdmlashq.
10789         * config/arm/arm_mve.h (vqrdmlashq): Remove.
10790         (vqrdmlahq): Remove.
10791         (vqdmlashq): Remove.
10792         (vqdmlahq): Remove.
10793         (vmlasq): Remove.
10794         (vmlaq): Remove.
10795         (vmlaq_m): Remove.
10796         (vmlasq_m): Remove.
10797         (vqdmlashq_m): Remove.
10798         (vqdmlahq_m): Remove.
10799         (vqrdmlahq_m): Remove.
10800         (vqrdmlashq_m): Remove.
10801         (vmlasq_n_u8): Remove.
10802         (vmlaq_n_u8): Remove.
10803         (vqrdmlashq_n_s8): Remove.
10804         (vqrdmlahq_n_s8): Remove.
10805         (vqdmlahq_n_s8): Remove.
10806         (vqdmlashq_n_s8): Remove.
10807         (vmlasq_n_s8): Remove.
10808         (vmlaq_n_s8): Remove.
10809         (vmlasq_n_u16): Remove.
10810         (vmlaq_n_u16): Remove.
10811         (vqrdmlashq_n_s16): Remove.
10812         (vqrdmlahq_n_s16): Remove.
10813         (vqdmlashq_n_s16): Remove.
10814         (vqdmlahq_n_s16): Remove.
10815         (vmlasq_n_s16): Remove.
10816         (vmlaq_n_s16): Remove.
10817         (vmlasq_n_u32): Remove.
10818         (vmlaq_n_u32): Remove.
10819         (vqrdmlashq_n_s32): Remove.
10820         (vqrdmlahq_n_s32): Remove.
10821         (vqdmlashq_n_s32): Remove.
10822         (vqdmlahq_n_s32): Remove.
10823         (vmlasq_n_s32): Remove.
10824         (vmlaq_n_s32): Remove.
10825         (vmlaq_m_n_s8): Remove.
10826         (vmlaq_m_n_s32): Remove.
10827         (vmlaq_m_n_s16): Remove.
10828         (vmlaq_m_n_u8): Remove.
10829         (vmlaq_m_n_u32): Remove.
10830         (vmlaq_m_n_u16): Remove.
10831         (vmlasq_m_n_s8): Remove.
10832         (vmlasq_m_n_s32): Remove.
10833         (vmlasq_m_n_s16): Remove.
10834         (vmlasq_m_n_u8): Remove.
10835         (vmlasq_m_n_u32): Remove.
10836         (vmlasq_m_n_u16): Remove.
10837         (vqdmlashq_m_n_s8): Remove.
10838         (vqdmlashq_m_n_s32): Remove.
10839         (vqdmlashq_m_n_s16): Remove.
10840         (vqdmlahq_m_n_s8): Remove.
10841         (vqdmlahq_m_n_s32): Remove.
10842         (vqdmlahq_m_n_s16): Remove.
10843         (vqrdmlahq_m_n_s8): Remove.
10844         (vqrdmlahq_m_n_s32): Remove.
10845         (vqrdmlahq_m_n_s16): Remove.
10846         (vqrdmlashq_m_n_s8): Remove.
10847         (vqrdmlashq_m_n_s32): Remove.
10848         (vqrdmlashq_m_n_s16): Remove.
10849         (__arm_vmlasq_n_u8): Remove.
10850         (__arm_vmlaq_n_u8): Remove.
10851         (__arm_vqrdmlashq_n_s8): Remove.
10852         (__arm_vqdmlashq_n_s8): Remove.
10853         (__arm_vqrdmlahq_n_s8): Remove.
10854         (__arm_vqdmlahq_n_s8): Remove.
10855         (__arm_vmlasq_n_s8): Remove.
10856         (__arm_vmlaq_n_s8): Remove.
10857         (__arm_vmlasq_n_u16): Remove.
10858         (__arm_vmlaq_n_u16): Remove.
10859         (__arm_vqrdmlashq_n_s16): Remove.
10860         (__arm_vqdmlashq_n_s16): Remove.
10861         (__arm_vqrdmlahq_n_s16): Remove.
10862         (__arm_vqdmlahq_n_s16): Remove.
10863         (__arm_vmlasq_n_s16): Remove.
10864         (__arm_vmlaq_n_s16): Remove.
10865         (__arm_vmlasq_n_u32): Remove.
10866         (__arm_vmlaq_n_u32): Remove.
10867         (__arm_vqrdmlashq_n_s32): Remove.
10868         (__arm_vqdmlashq_n_s32): Remove.
10869         (__arm_vqrdmlahq_n_s32): Remove.
10870         (__arm_vqdmlahq_n_s32): Remove.
10871         (__arm_vmlasq_n_s32): Remove.
10872         (__arm_vmlaq_n_s32): Remove.
10873         (__arm_vmlaq_m_n_s8): Remove.
10874         (__arm_vmlaq_m_n_s32): Remove.
10875         (__arm_vmlaq_m_n_s16): Remove.
10876         (__arm_vmlaq_m_n_u8): Remove.
10877         (__arm_vmlaq_m_n_u32): Remove.
10878         (__arm_vmlaq_m_n_u16): Remove.
10879         (__arm_vmlasq_m_n_s8): Remove.
10880         (__arm_vmlasq_m_n_s32): Remove.
10881         (__arm_vmlasq_m_n_s16): Remove.
10882         (__arm_vmlasq_m_n_u8): Remove.
10883         (__arm_vmlasq_m_n_u32): Remove.
10884         (__arm_vmlasq_m_n_u16): Remove.
10885         (__arm_vqdmlahq_m_n_s8): Remove.
10886         (__arm_vqdmlahq_m_n_s32): Remove.
10887         (__arm_vqdmlahq_m_n_s16): Remove.
10888         (__arm_vqrdmlahq_m_n_s8): Remove.
10889         (__arm_vqrdmlahq_m_n_s32): Remove.
10890         (__arm_vqrdmlahq_m_n_s16): Remove.
10891         (__arm_vqrdmlashq_m_n_s8): Remove.
10892         (__arm_vqrdmlashq_m_n_s32): Remove.
10893         (__arm_vqrdmlashq_m_n_s16): Remove.
10894         (__arm_vqdmlashq_m_n_s8): Remove.
10895         (__arm_vqdmlashq_m_n_s16): Remove.
10896         (__arm_vqdmlashq_m_n_s32): Remove.
10897         (__arm_vmlasq): Remove.
10898         (__arm_vmlaq): Remove.
10899         (__arm_vqrdmlashq): Remove.
10900         (__arm_vqdmlashq): Remove.
10901         (__arm_vqrdmlahq): Remove.
10902         (__arm_vqdmlahq): Remove.
10903         (__arm_vmlaq_m): Remove.
10904         (__arm_vmlasq_m): Remove.
10905         (__arm_vqdmlahq_m): Remove.
10906         (__arm_vqrdmlahq_m): Remove.
10907         (__arm_vqrdmlashq_m): Remove.
10908         (__arm_vqdmlashq_m): Remove.
10910 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10912         * config/arm/iterators.md (MVE_VMLxQ_N): New.
10913         (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah,
10914         vqrdmlash.
10915         (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S,
10916         VQRDMLASHQ_N_S.
10917         * config/arm/mve.md (mve_vmlaq_n_<supf><mode>)
10918         (mve_vmlasq_n_<supf><mode>, mve_vqdmlahq_n_<supf><mode>)
10919         (mve_vqdmlashq_n_<supf><mode>, mve_vqrdmlahq_n_<supf><mode>)
10920         (mve_vqrdmlashq_n_<supf><mode>): Merge into ...
10921         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10923 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10925         * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
10926         * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
10928 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
10930         * config/arm/arm-mve-builtins-base.cc (vqdmladhq, vqdmladhxq)
10931         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
10932         (vqrdmlsdhxq): New.
10933         * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
10934         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
10935         (vqrdmlsdhxq): New.
10936         * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
10937         (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
10938         (vqrdmlsdhxq): New.
10939         * config/arm/arm-mve-builtins.cc
10940         (function_instance::has_inactive_argument): Handle vqrdmladhq,
10941         vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq vqdmladhq, vqdmladhxq,
10942         vqdmlsdhq, vqdmlsdhxq.
10943         * config/arm/arm_mve.h (vqrdmlsdhxq): Remove.
10944         (vqrdmlsdhq): Remove.
10945         (vqrdmladhxq): Remove.
10946         (vqrdmladhq): Remove.
10947         (vqdmlsdhxq): Remove.
10948         (vqdmlsdhq): Remove.
10949         (vqdmladhxq): Remove.
10950         (vqdmladhq): Remove.
10951         (vqdmladhq_m): Remove.
10952         (vqdmladhxq_m): Remove.
10953         (vqdmlsdhq_m): Remove.
10954         (vqdmlsdhxq_m): Remove.
10955         (vqrdmladhq_m): Remove.
10956         (vqrdmladhxq_m): Remove.
10957         (vqrdmlsdhq_m): Remove.
10958         (vqrdmlsdhxq_m): Remove.
10959         (vqrdmlsdhxq_s8): Remove.
10960         (vqrdmlsdhq_s8): Remove.
10961         (vqrdmladhxq_s8): Remove.
10962         (vqrdmladhq_s8): Remove.
10963         (vqdmlsdhxq_s8): Remove.
10964         (vqdmlsdhq_s8): Remove.
10965         (vqdmladhxq_s8): Remove.
10966         (vqdmladhq_s8): Remove.
10967         (vqrdmlsdhxq_s16): Remove.
10968         (vqrdmlsdhq_s16): Remove.
10969         (vqrdmladhxq_s16): Remove.
10970         (vqrdmladhq_s16): Remove.
10971         (vqdmlsdhxq_s16): Remove.
10972         (vqdmlsdhq_s16): Remove.
10973         (vqdmladhxq_s16): Remove.
10974         (vqdmladhq_s16): Remove.
10975         (vqrdmlsdhxq_s32): Remove.
10976         (vqrdmlsdhq_s32): Remove.
10977         (vqrdmladhxq_s32): Remove.
10978         (vqrdmladhq_s32): Remove.
10979         (vqdmlsdhxq_s32): Remove.
10980         (vqdmlsdhq_s32): Remove.
10981         (vqdmladhxq_s32): Remove.
10982         (vqdmladhq_s32): Remove.
10983         (vqdmladhq_m_s8): Remove.
10984         (vqdmladhq_m_s32): Remove.
10985         (vqdmladhq_m_s16): Remove.
10986         (vqdmladhxq_m_s8): Remove.
10987         (vqdmladhxq_m_s32): Remove.
10988         (vqdmladhxq_m_s16): Remove.
10989         (vqdmlsdhq_m_s8): Remove.
10990         (vqdmlsdhq_m_s32): Remove.
10991         (vqdmlsdhq_m_s16): Remove.
10992         (vqdmlsdhxq_m_s8): Remove.
10993         (vqdmlsdhxq_m_s32): Remove.
10994         (vqdmlsdhxq_m_s16): Remove.
10995         (vqrdmladhq_m_s8): Remove.
10996         (vqrdmladhq_m_s32): Remove.
10997         (vqrdmladhq_m_s16): Remove.
10998         (vqrdmladhxq_m_s8): Remove.
10999         (vqrdmladhxq_m_s32): Remove.
11000         (vqrdmladhxq_m_s16): Remove.
11001         (vqrdmlsdhq_m_s8): Remove.
11002         (vqrdmlsdhq_m_s32): Remove.
11003         (vqrdmlsdhq_m_s16): Remove.
11004         (vqrdmlsdhxq_m_s8): Remove.
11005         (vqrdmlsdhxq_m_s32): Remove.
11006         (vqrdmlsdhxq_m_s16): Remove.
11007         (__arm_vqrdmlsdhxq_s8): Remove.
11008         (__arm_vqrdmlsdhq_s8): Remove.
11009         (__arm_vqrdmladhxq_s8): Remove.
11010         (__arm_vqrdmladhq_s8): Remove.
11011         (__arm_vqdmlsdhxq_s8): Remove.
11012         (__arm_vqdmlsdhq_s8): Remove.
11013         (__arm_vqdmladhxq_s8): Remove.
11014         (__arm_vqdmladhq_s8): Remove.
11015         (__arm_vqrdmlsdhxq_s16): Remove.
11016         (__arm_vqrdmlsdhq_s16): Remove.
11017         (__arm_vqrdmladhxq_s16): Remove.
11018         (__arm_vqrdmladhq_s16): Remove.
11019         (__arm_vqdmlsdhxq_s16): Remove.
11020         (__arm_vqdmlsdhq_s16): Remove.
11021         (__arm_vqdmladhxq_s16): Remove.
11022         (__arm_vqdmladhq_s16): Remove.
11023         (__arm_vqrdmlsdhxq_s32): Remove.
11024         (__arm_vqrdmlsdhq_s32): Remove.
11025         (__arm_vqrdmladhxq_s32): Remove.
11026         (__arm_vqrdmladhq_s32): Remove.
11027         (__arm_vqdmlsdhxq_s32): Remove.
11028         (__arm_vqdmlsdhq_s32): Remove.
11029         (__arm_vqdmladhxq_s32): Remove.
11030         (__arm_vqdmladhq_s32): Remove.
11031         (__arm_vqdmladhq_m_s8): Remove.
11032         (__arm_vqdmladhq_m_s32): Remove.
11033         (__arm_vqdmladhq_m_s16): Remove.
11034         (__arm_vqdmladhxq_m_s8): Remove.
11035         (__arm_vqdmladhxq_m_s32): Remove.
11036         (__arm_vqdmladhxq_m_s16): Remove.
11037         (__arm_vqdmlsdhq_m_s8): Remove.
11038         (__arm_vqdmlsdhq_m_s32): Remove.
11039         (__arm_vqdmlsdhq_m_s16): Remove.
11040         (__arm_vqdmlsdhxq_m_s8): Remove.
11041         (__arm_vqdmlsdhxq_m_s32): Remove.
11042         (__arm_vqdmlsdhxq_m_s16): Remove.
11043         (__arm_vqrdmladhq_m_s8): Remove.
11044         (__arm_vqrdmladhq_m_s32): Remove.
11045         (__arm_vqrdmladhq_m_s16): Remove.
11046         (__arm_vqrdmladhxq_m_s8): Remove.
11047         (__arm_vqrdmladhxq_m_s32): Remove.
11048         (__arm_vqrdmladhxq_m_s16): Remove.
11049         (__arm_vqrdmlsdhq_m_s8): Remove.
11050         (__arm_vqrdmlsdhq_m_s32): Remove.
11051         (__arm_vqrdmlsdhq_m_s16): Remove.
11052         (__arm_vqrdmlsdhxq_m_s8): Remove.
11053         (__arm_vqrdmlsdhxq_m_s32): Remove.
11054         (__arm_vqrdmlsdhxq_m_s16): Remove.
11055         (__arm_vqrdmlsdhxq): Remove.
11056         (__arm_vqrdmlsdhq): Remove.
11057         (__arm_vqrdmladhxq): Remove.
11058         (__arm_vqrdmladhq): Remove.
11059         (__arm_vqdmlsdhxq): Remove.
11060         (__arm_vqdmlsdhq): Remove.
11061         (__arm_vqdmladhxq): Remove.
11062         (__arm_vqdmladhq): Remove.
11063         (__arm_vqdmladhq_m): Remove.
11064         (__arm_vqdmladhxq_m): Remove.
11065         (__arm_vqdmlsdhq_m): Remove.
11066         (__arm_vqdmlsdhxq_m): Remove.
11067         (__arm_vqrdmladhq_m): Remove.
11068         (__arm_vqrdmladhxq_m): Remove.
11069         (__arm_vqrdmlsdhq_m): Remove.
11070         (__arm_vqrdmlsdhxq_m): Remove.
11072 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11074         * config/arm/iterators.md (MVE_VQxDMLxDHxQ_S): New.
11075         (mve_insn): Add vqdmladh, vqdmladhx, vqdmlsdh, vqdmlsdhx,
11076         vqrdmladh, vqrdmladhx, vqrdmlsdh, vqrdmlsdhx.
11077         (supf): Add VQDMLADHQ_S, VQDMLADHXQ_S, VQDMLSDHQ_S, VQDMLSDHXQ_S,
11078         VQRDMLADHQ_S,VQRDMLADHXQ_S, VQRDMLSDHQ_S, VQRDMLSDHXQ_S.
11079         * config/arm/mve.md (mve_vqrdmladhq_s<mode>)
11080         (mve_vqrdmladhxq_s<mode>, mve_vqrdmlsdhq_s<mode>)
11081         (mve_vqrdmlsdhxq_s<mode>, mve_vqdmlsdhxq_s<mode>)
11082         (mve_vqdmlsdhq_s<mode>, mve_vqdmladhxq_s<mode>)
11083         (mve_vqdmladhq_s<mode>): Merge into ...
11084         (@mve_<mve_insn>q_<supf><mode>): ... this.
11086 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11088         * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
11089         * config/arm/arm-mve-builtins-shapes.h (ternary): New.
11091 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11093         * config/arm/arm-mve-builtins-base.cc (vmlaldavaq, vmlaldavaxq)
11094         (vmlsldavaq, vmlsldavaxq): New.
11095         * config/arm/arm-mve-builtins-base.def (vmlaldavaq, vmlaldavaxq)
11096         (vmlsldavaq, vmlsldavaxq): New.
11097         * config/arm/arm-mve-builtins-base.h (vmlaldavaq, vmlaldavaxq)
11098         (vmlsldavaq, vmlsldavaxq): New.
11099         * config/arm/arm_mve.h (vmlaldavaq): Remove.
11100         (vmlaldavaxq): Remove.
11101         (vmlsldavaq): Remove.
11102         (vmlsldavaxq): Remove.
11103         (vmlaldavaq_p): Remove.
11104         (vmlaldavaxq_p): Remove.
11105         (vmlsldavaq_p): Remove.
11106         (vmlsldavaxq_p): Remove.
11107         (vmlaldavaq_s16): Remove.
11108         (vmlaldavaxq_s16): Remove.
11109         (vmlsldavaq_s16): Remove.
11110         (vmlsldavaxq_s16): Remove.
11111         (vmlaldavaq_u16): Remove.
11112         (vmlaldavaq_s32): Remove.
11113         (vmlaldavaxq_s32): Remove.
11114         (vmlsldavaq_s32): Remove.
11115         (vmlsldavaxq_s32): Remove.
11116         (vmlaldavaq_u32): Remove.
11117         (vmlaldavaq_p_s32): Remove.
11118         (vmlaldavaq_p_s16): Remove.
11119         (vmlaldavaq_p_u32): Remove.
11120         (vmlaldavaq_p_u16): Remove.
11121         (vmlaldavaxq_p_s32): Remove.
11122         (vmlaldavaxq_p_s16): Remove.
11123         (vmlsldavaq_p_s32): Remove.
11124         (vmlsldavaq_p_s16): Remove.
11125         (vmlsldavaxq_p_s32): Remove.
11126         (vmlsldavaxq_p_s16): Remove.
11127         (__arm_vmlaldavaq_s16): Remove.
11128         (__arm_vmlaldavaxq_s16): Remove.
11129         (__arm_vmlsldavaq_s16): Remove.
11130         (__arm_vmlsldavaxq_s16): Remove.
11131         (__arm_vmlaldavaq_u16): Remove.
11132         (__arm_vmlaldavaq_s32): Remove.
11133         (__arm_vmlaldavaxq_s32): Remove.
11134         (__arm_vmlsldavaq_s32): Remove.
11135         (__arm_vmlsldavaxq_s32): Remove.
11136         (__arm_vmlaldavaq_u32): Remove.
11137         (__arm_vmlaldavaq_p_s32): Remove.
11138         (__arm_vmlaldavaq_p_s16): Remove.
11139         (__arm_vmlaldavaq_p_u32): Remove.
11140         (__arm_vmlaldavaq_p_u16): Remove.
11141         (__arm_vmlaldavaxq_p_s32): Remove.
11142         (__arm_vmlaldavaxq_p_s16): Remove.
11143         (__arm_vmlsldavaq_p_s32): Remove.
11144         (__arm_vmlsldavaq_p_s16): Remove.
11145         (__arm_vmlsldavaxq_p_s32): Remove.
11146         (__arm_vmlsldavaxq_p_s16): Remove.
11147         (__arm_vmlaldavaq): Remove.
11148         (__arm_vmlaldavaxq): Remove.
11149         (__arm_vmlsldavaq): Remove.
11150         (__arm_vmlsldavaxq): Remove.
11151         (__arm_vmlaldavaq_p): Remove.
11152         (__arm_vmlaldavaxq_p): Remove.
11153         (__arm_vmlsldavaq_p): Remove.
11154         (__arm_vmlsldavaxq_p): Remove.
11156 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11158         * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P):
11159         New.
11160         (mve_insn): Add vmlaldava, vmlaldavax, vmlsldava, vmlsldavax.
11161         (supf): Add VMLALDAVAXQ_P_S, VMLALDAVAXQ_S, VMLSLDAVAQ_P_S,
11162         VMLSLDAVAQ_S, VMLSLDAVAXQ_P_S, VMLSLDAVAXQ_S.
11163         * config/arm/mve.md (mve_vmlaldavaq_<supf><mode>)
11164         (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
11165         (mve_vmlaldavaxq_s<mode>): Merge into ...
11166         (@mve_<mve_insn>q_<supf><mode>): ... this.
11167         (mve_vmlaldavaq_p_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>)
11168         (mve_vmlsldavaq_p_s<mode>, mve_vmlsldavaxq_p_s<mode>): Merge into
11169         ...
11170         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
11172 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11174         * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
11175         * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
11177 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11179         * config/arm/arm-mve-builtins-base.cc (vrmlaldavhq, vrmlaldavhxq)
11180         (vrmlsldavhq, vrmlsldavhxq): New.
11181         * config/arm/arm-mve-builtins-base.def (vrmlaldavhq, vrmlaldavhxq)
11182         (vrmlsldavhq, vrmlsldavhxq): New.
11183         * config/arm/arm-mve-builtins-base.h (vrmlaldavhq, vrmlaldavhxq)
11184         (vrmlsldavhq, vrmlsldavhxq): New.
11185         * config/arm/arm-mve-builtins-functions.h
11186         (unspec_mve_function_exact_insn_pred_p): Handle vrmlaldavhq,
11187         vrmlaldavhxq, vrmlsldavhq, vrmlsldavhxq.
11188         * config/arm/arm_mve.h (vrmlaldavhq): Remove.
11189         (vrmlsldavhxq): Remove.
11190         (vrmlsldavhq): Remove.
11191         (vrmlaldavhxq): Remove.
11192         (vrmlaldavhq_p): Remove.
11193         (vrmlaldavhxq_p): Remove.
11194         (vrmlsldavhq_p): Remove.
11195         (vrmlsldavhxq_p): Remove.
11196         (vrmlaldavhq_u32): Remove.
11197         (vrmlsldavhxq_s32): Remove.
11198         (vrmlsldavhq_s32): Remove.
11199         (vrmlaldavhxq_s32): Remove.
11200         (vrmlaldavhq_s32): Remove.
11201         (vrmlaldavhq_p_s32): Remove.
11202         (vrmlaldavhxq_p_s32): Remove.
11203         (vrmlsldavhq_p_s32): Remove.
11204         (vrmlsldavhxq_p_s32): Remove.
11205         (vrmlaldavhq_p_u32): Remove.
11206         (__arm_vrmlaldavhq_u32): Remove.
11207         (__arm_vrmlsldavhxq_s32): Remove.
11208         (__arm_vrmlsldavhq_s32): Remove.
11209         (__arm_vrmlaldavhxq_s32): Remove.
11210         (__arm_vrmlaldavhq_s32): Remove.
11211         (__arm_vrmlaldavhq_p_s32): Remove.
11212         (__arm_vrmlaldavhxq_p_s32): Remove.
11213         (__arm_vrmlsldavhq_p_s32): Remove.
11214         (__arm_vrmlsldavhxq_p_s32): Remove.
11215         (__arm_vrmlaldavhq_p_u32): Remove.
11216         (__arm_vrmlaldavhq): Remove.
11217         (__arm_vrmlsldavhxq): Remove.
11218         (__arm_vrmlsldavhq): Remove.
11219         (__arm_vrmlaldavhxq): Remove.
11220         (__arm_vrmlaldavhq_p): Remove.
11221         (__arm_vrmlaldavhxq_p): Remove.
11222         (__arm_vrmlsldavhq_p): Remove.
11223         (__arm_vrmlsldavhxq_p): Remove.
11225 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11227         * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P):
11228         New.
11229         (mve_insn): Add vrmlaldavh, vrmlaldavhx, vrmlsldavh, vrmlsldavhx.
11230         (supf): Add VRMLALDAVHXQ_P_S, VRMLALDAVHXQ_S, VRMLSLDAVHQ_P_S,
11231         VRMLSLDAVHQ_S, VRMLSLDAVHXQ_P_S, VRMLSLDAVHXQ_S.
11232         * config/arm/mve.md (mve_vrmlaldavhxq_sv4si)
11233         (mve_vrmlsldavhq_sv4si, mve_vrmlsldavhxq_sv4si)
11234         (mve_vrmlaldavhq_<supf>v4si): Merge into ...
11235         (@mve_<mve_insn>q_<supf>v4si): ... this.
11236         (mve_vrmlaldavhxq_p_sv4si, mve_vrmlsldavhq_p_sv4si)
11237         (mve_vrmlsldavhxq_p_sv4si, mve_vrmlaldavhq_p_<supf>v4si): Merge
11238         into ...
11239         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
11241 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11243         * config/arm/arm-mve-builtins-base.cc (vmlaldavq, vmlaldavxq)
11244         (vmlsldavq, vmlsldavxq): New.
11245         * config/arm/arm-mve-builtins-base.def (vmlaldavq, vmlaldavxq)
11246         (vmlsldavq, vmlsldavxq): New.
11247         * config/arm/arm-mve-builtins-base.h (vmlaldavq, vmlaldavxq)
11248         (vmlsldavq, vmlsldavxq): New.
11249         * config/arm/arm_mve.h (vmlaldavq): Remove.
11250         (vmlsldavxq): Remove.
11251         (vmlsldavq): Remove.
11252         (vmlaldavxq): Remove.
11253         (vmlaldavq_p): Remove.
11254         (vmlaldavxq_p): Remove.
11255         (vmlsldavq_p): Remove.
11256         (vmlsldavxq_p): Remove.
11257         (vmlaldavq_u16): Remove.
11258         (vmlsldavxq_s16): Remove.
11259         (vmlsldavq_s16): Remove.
11260         (vmlaldavxq_s16): Remove.
11261         (vmlaldavq_s16): Remove.
11262         (vmlaldavq_u32): Remove.
11263         (vmlsldavxq_s32): Remove.
11264         (vmlsldavq_s32): Remove.
11265         (vmlaldavxq_s32): Remove.
11266         (vmlaldavq_s32): Remove.
11267         (vmlaldavq_p_s16): Remove.
11268         (vmlaldavxq_p_s16): Remove.
11269         (vmlsldavq_p_s16): Remove.
11270         (vmlsldavxq_p_s16): Remove.
11271         (vmlaldavq_p_u16): Remove.
11272         (vmlaldavq_p_s32): Remove.
11273         (vmlaldavxq_p_s32): Remove.
11274         (vmlsldavq_p_s32): Remove.
11275         (vmlsldavxq_p_s32): Remove.
11276         (vmlaldavq_p_u32): Remove.
11277         (__arm_vmlaldavq_u16): Remove.
11278         (__arm_vmlsldavxq_s16): Remove.
11279         (__arm_vmlsldavq_s16): Remove.
11280         (__arm_vmlaldavxq_s16): Remove.
11281         (__arm_vmlaldavq_s16): Remove.
11282         (__arm_vmlaldavq_u32): Remove.
11283         (__arm_vmlsldavxq_s32): Remove.
11284         (__arm_vmlsldavq_s32): Remove.
11285         (__arm_vmlaldavxq_s32): Remove.
11286         (__arm_vmlaldavq_s32): Remove.
11287         (__arm_vmlaldavq_p_s16): Remove.
11288         (__arm_vmlaldavxq_p_s16): Remove.
11289         (__arm_vmlsldavq_p_s16): Remove.
11290         (__arm_vmlsldavxq_p_s16): Remove.
11291         (__arm_vmlaldavq_p_u16): Remove.
11292         (__arm_vmlaldavq_p_s32): Remove.
11293         (__arm_vmlaldavxq_p_s32): Remove.
11294         (__arm_vmlsldavq_p_s32): Remove.
11295         (__arm_vmlsldavxq_p_s32): Remove.
11296         (__arm_vmlaldavq_p_u32): Remove.
11297         (__arm_vmlaldavq): Remove.
11298         (__arm_vmlsldavxq): Remove.
11299         (__arm_vmlsldavq): Remove.
11300         (__arm_vmlaldavxq): Remove.
11301         (__arm_vmlaldavq_p): Remove.
11302         (__arm_vmlaldavxq_p): Remove.
11303         (__arm_vmlsldavq_p): Remove.
11304         (__arm_vmlsldavxq_p): Remove.
11306 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11308         * config/arm/iterators.md (MVE_VMLxLDAVxQ, MVE_VMLxLDAVxQ_P): New.
11309         (mve_insn): Add vmlaldav, vmlaldavx, vmlsldav, vmlsldavx.
11310         (supf): Add VMLALDAVXQ_S, VMLSLDAVQ_S, VMLSLDAVXQ_S,
11311         VMLALDAVXQ_P_S, VMLSLDAVQ_P_S, VMLSLDAVXQ_P_S.
11312         * config/arm/mve.md (mve_vmlaldavq_<supf><mode>)
11313         (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
11314         (mve_vmlsldavxq_s<mode>): Merge into ...
11315         (@mve_<mve_insn>q_<supf><mode>): ... this.
11316         (mve_vmlaldavq_p_<supf><mode>, mve_vmlaldavxq_p_s<mode>)
11317         (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>): Merge into
11318         ...
11319         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
11321 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11323         * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
11324         * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
11326 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11328         * config/arm/arm-mve-builtins-base.cc (vabavq): New.
11329         * config/arm/arm-mve-builtins-base.def (vabavq): New.
11330         * config/arm/arm-mve-builtins-base.h (vabavq): New.
11331         * config/arm/arm_mve.h (vabavq): Remove.
11332         (vabavq_p): Remove.
11333         (vabavq_s8): Remove.
11334         (vabavq_s16): Remove.
11335         (vabavq_s32): Remove.
11336         (vabavq_u8): Remove.
11337         (vabavq_u16): Remove.
11338         (vabavq_u32): Remove.
11339         (vabavq_p_s8): Remove.
11340         (vabavq_p_u8): Remove.
11341         (vabavq_p_s16): Remove.
11342         (vabavq_p_u16): Remove.
11343         (vabavq_p_s32): Remove.
11344         (vabavq_p_u32): Remove.
11345         (__arm_vabavq_s8): Remove.
11346         (__arm_vabavq_s16): Remove.
11347         (__arm_vabavq_s32): Remove.
11348         (__arm_vabavq_u8): Remove.
11349         (__arm_vabavq_u16): Remove.
11350         (__arm_vabavq_u32): Remove.
11351         (__arm_vabavq_p_s8): Remove.
11352         (__arm_vabavq_p_u8): Remove.
11353         (__arm_vabavq_p_s16): Remove.
11354         (__arm_vabavq_p_u16): Remove.
11355         (__arm_vabavq_p_s32): Remove.
11356         (__arm_vabavq_p_u32): Remove.
11357         (__arm_vabavq): Remove.
11358         (__arm_vabavq_p): Remove.
11360 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11362         * config/arm/iterators.md (mve_insn): Add vabav.
11363         * config/arm/mve.md (mve_vabavq_<supf><mode>): Rename into ...
11364         (@mve_<mve_insn>q_<supf><mode>): ... this,.
11365         (mve_vabavq_p_<supf><mode>): Rename into ...
11366         (@mve_<mve_insn>q_p_<supf><mode>): ... this,.
11368 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11370         * config/arm/arm-mve-builtins-base.cc (vmladavaxq, vmladavaq)
11371         (vmlsdavaq, vmlsdavaxq): New.
11372         * config/arm/arm-mve-builtins-base.def (vmladavaxq, vmladavaq)
11373         (vmlsdavaq, vmlsdavaxq): New.
11374         * config/arm/arm-mve-builtins-base.h (vmladavaxq, vmladavaq)
11375         (vmlsdavaq, vmlsdavaxq): New.
11376         * config/arm/arm_mve.h (vmladavaq): Remove.
11377         (vmlsdavaxq): Remove.
11378         (vmlsdavaq): Remove.
11379         (vmladavaxq): Remove.
11380         (vmladavaq_p): Remove.
11381         (vmladavaxq_p): Remove.
11382         (vmlsdavaq_p): Remove.
11383         (vmlsdavaxq_p): Remove.
11384         (vmladavaq_u8): Remove.
11385         (vmlsdavaxq_s8): Remove.
11386         (vmlsdavaq_s8): Remove.
11387         (vmladavaxq_s8): Remove.
11388         (vmladavaq_s8): Remove.
11389         (vmladavaq_u16): Remove.
11390         (vmlsdavaxq_s16): Remove.
11391         (vmlsdavaq_s16): Remove.
11392         (vmladavaxq_s16): Remove.
11393         (vmladavaq_s16): Remove.
11394         (vmladavaq_u32): Remove.
11395         (vmlsdavaxq_s32): Remove.
11396         (vmlsdavaq_s32): Remove.
11397         (vmladavaxq_s32): Remove.
11398         (vmladavaq_s32): Remove.
11399         (vmladavaq_p_s8): Remove.
11400         (vmladavaq_p_s32): Remove.
11401         (vmladavaq_p_s16): Remove.
11402         (vmladavaq_p_u8): Remove.
11403         (vmladavaq_p_u32): Remove.
11404         (vmladavaq_p_u16): Remove.
11405         (vmladavaxq_p_s8): Remove.
11406         (vmladavaxq_p_s32): Remove.
11407         (vmladavaxq_p_s16): Remove.
11408         (vmlsdavaq_p_s8): Remove.
11409         (vmlsdavaq_p_s32): Remove.
11410         (vmlsdavaq_p_s16): Remove.
11411         (vmlsdavaxq_p_s8): Remove.
11412         (vmlsdavaxq_p_s32): Remove.
11413         (vmlsdavaxq_p_s16): Remove.
11414         (__arm_vmladavaq_u8): Remove.
11415         (__arm_vmlsdavaxq_s8): Remove.
11416         (__arm_vmlsdavaq_s8): Remove.
11417         (__arm_vmladavaxq_s8): Remove.
11418         (__arm_vmladavaq_s8): Remove.
11419         (__arm_vmladavaq_u16): Remove.
11420         (__arm_vmlsdavaxq_s16): Remove.
11421         (__arm_vmlsdavaq_s16): Remove.
11422         (__arm_vmladavaxq_s16): Remove.
11423         (__arm_vmladavaq_s16): Remove.
11424         (__arm_vmladavaq_u32): Remove.
11425         (__arm_vmlsdavaxq_s32): Remove.
11426         (__arm_vmlsdavaq_s32): Remove.
11427         (__arm_vmladavaxq_s32): Remove.
11428         (__arm_vmladavaq_s32): Remove.
11429         (__arm_vmladavaq_p_s8): Remove.
11430         (__arm_vmladavaq_p_s32): Remove.
11431         (__arm_vmladavaq_p_s16): Remove.
11432         (__arm_vmladavaq_p_u8): Remove.
11433         (__arm_vmladavaq_p_u32): Remove.
11434         (__arm_vmladavaq_p_u16): Remove.
11435         (__arm_vmladavaxq_p_s8): Remove.
11436         (__arm_vmladavaxq_p_s32): Remove.
11437         (__arm_vmladavaxq_p_s16): Remove.
11438         (__arm_vmlsdavaq_p_s8): Remove.
11439         (__arm_vmlsdavaq_p_s32): Remove.
11440         (__arm_vmlsdavaq_p_s16): Remove.
11441         (__arm_vmlsdavaxq_p_s8): Remove.
11442         (__arm_vmlsdavaxq_p_s32): Remove.
11443         (__arm_vmlsdavaxq_p_s16): Remove.
11444         (__arm_vmladavaq): Remove.
11445         (__arm_vmlsdavaxq): Remove.
11446         (__arm_vmlsdavaq): Remove.
11447         (__arm_vmladavaxq): Remove.
11448         (__arm_vmladavaq_p): Remove.
11449         (__arm_vmladavaxq_p): Remove.
11450         (__arm_vmlsdavaq_p): Remove.
11451         (__arm_vmlsdavaxq_p): Remove.
11453 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11455         * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
11456         * config/arm/arm-mve-builtins-shapes.h  (binary_acca_int32): New.
11458 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11460         * config/arm/arm-mve-builtins-base.cc (vmladavq, vmladavxq)
11461         (vmlsdavq, vmlsdavxq): New.
11462         * config/arm/arm-mve-builtins-base.def (vmladavq, vmladavxq)
11463         (vmlsdavq, vmlsdavxq): New.
11464         * config/arm/arm-mve-builtins-base.h (vmladavq, vmladavxq)
11465         (vmlsdavq, vmlsdavxq): New.
11466         * config/arm/arm_mve.h (vmladavq): Remove.
11467         (vmlsdavxq): Remove.
11468         (vmlsdavq): Remove.
11469         (vmladavxq): Remove.
11470         (vmladavq_p): Remove.
11471         (vmlsdavxq_p): Remove.
11472         (vmlsdavq_p): Remove.
11473         (vmladavxq_p): Remove.
11474         (vmladavq_u8): Remove.
11475         (vmlsdavxq_s8): Remove.
11476         (vmlsdavq_s8): Remove.
11477         (vmladavxq_s8): Remove.
11478         (vmladavq_s8): Remove.
11479         (vmladavq_u16): Remove.
11480         (vmlsdavxq_s16): Remove.
11481         (vmlsdavq_s16): Remove.
11482         (vmladavxq_s16): Remove.
11483         (vmladavq_s16): Remove.
11484         (vmladavq_u32): Remove.
11485         (vmlsdavxq_s32): Remove.
11486         (vmlsdavq_s32): Remove.
11487         (vmladavxq_s32): Remove.
11488         (vmladavq_s32): Remove.
11489         (vmladavq_p_u8): Remove.
11490         (vmlsdavxq_p_s8): Remove.
11491         (vmlsdavq_p_s8): Remove.
11492         (vmladavxq_p_s8): Remove.
11493         (vmladavq_p_s8): Remove.
11494         (vmladavq_p_u16): Remove.
11495         (vmlsdavxq_p_s16): Remove.
11496         (vmlsdavq_p_s16): Remove.
11497         (vmladavxq_p_s16): Remove.
11498         (vmladavq_p_s16): Remove.
11499         (vmladavq_p_u32): Remove.
11500         (vmlsdavxq_p_s32): Remove.
11501         (vmlsdavq_p_s32): Remove.
11502         (vmladavxq_p_s32): Remove.
11503         (vmladavq_p_s32): Remove.
11504         (__arm_vmladavq_u8): Remove.
11505         (__arm_vmlsdavxq_s8): Remove.
11506         (__arm_vmlsdavq_s8): Remove.
11507         (__arm_vmladavxq_s8): Remove.
11508         (__arm_vmladavq_s8): Remove.
11509         (__arm_vmladavq_u16): Remove.
11510         (__arm_vmlsdavxq_s16): Remove.
11511         (__arm_vmlsdavq_s16): Remove.
11512         (__arm_vmladavxq_s16): Remove.
11513         (__arm_vmladavq_s16): Remove.
11514         (__arm_vmladavq_u32): Remove.
11515         (__arm_vmlsdavxq_s32): Remove.
11516         (__arm_vmlsdavq_s32): Remove.
11517         (__arm_vmladavxq_s32): Remove.
11518         (__arm_vmladavq_s32): Remove.
11519         (__arm_vmladavq_p_u8): Remove.
11520         (__arm_vmlsdavxq_p_s8): Remove.
11521         (__arm_vmlsdavq_p_s8): Remove.
11522         (__arm_vmladavxq_p_s8): Remove.
11523         (__arm_vmladavq_p_s8): Remove.
11524         (__arm_vmladavq_p_u16): Remove.
11525         (__arm_vmlsdavxq_p_s16): Remove.
11526         (__arm_vmlsdavq_p_s16): Remove.
11527         (__arm_vmladavxq_p_s16): Remove.
11528         (__arm_vmladavq_p_s16): Remove.
11529         (__arm_vmladavq_p_u32): Remove.
11530         (__arm_vmlsdavxq_p_s32): Remove.
11531         (__arm_vmlsdavq_p_s32): Remove.
11532         (__arm_vmladavxq_p_s32): Remove.
11533         (__arm_vmladavq_p_s32): Remove.
11534         (__arm_vmladavq): Remove.
11535         (__arm_vmlsdavxq): Remove.
11536         (__arm_vmlsdavq): Remove.
11537         (__arm_vmladavxq): Remove.
11538         (__arm_vmladavq_p): Remove.
11539         (__arm_vmlsdavxq_p): Remove.
11540         (__arm_vmlsdavq_p): Remove.
11541         (__arm_vmladavxq_p): Remove.
11543 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11545         * config/arm/iterators.md (MVE_VMLxDAVQ, MVE_VMLxDAVQ_P)
11546         (MVE_VMLxDAVAQ, MVE_VMLxDAVAQ_P): New.
11547         (mve_insn): Add vmladava, vmladavax, vmladav, vmladavx, vmlsdava,
11548         vmlsdavax, vmlsdav, vmlsdavx.
11549         (supf): Add VMLADAVAXQ_P_S, VMLADAVAXQ_S, VMLADAVXQ_P_S,
11550         VMLADAVXQ_S, VMLSDAVAQ_P_S, VMLSDAVAQ_S, VMLSDAVAXQ_P_S,
11551         VMLSDAVAXQ_S, VMLSDAVQ_P_S, VMLSDAVQ_S, VMLSDAVXQ_P_S,
11552         VMLSDAVXQ_S.
11553         * config/arm/mve.md (mve_vmladavq_<supf><mode>)
11554         (mve_vmladavxq_s<mode>, mve_vmlsdavq_s<mode>)
11555         (mve_vmlsdavxq_s<mode>): Merge into ...
11556         (@mve_<mve_insn>q_<supf><mode>): ... this.
11557         (mve_vmlsdavaq_s<mode>, mve_vmladavaxq_s<mode>)
11558         (mve_vmlsdavaxq_s<mode>, mve_vmladavaq_<supf><mode>): Merge into
11559         ...
11560         (@mve_<mve_insn>q_<supf><mode>): ... this.
11561         (mve_vmladavq_p_<supf><mode>, mve_vmladavxq_p_s<mode>)
11562         (mve_vmlsdavq_p_s<mode>, mve_vmlsdavxq_p_s<mode>): Merge into ...
11563         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
11564         (mve_vmladavaq_p_<supf><mode>, mve_vmladavaxq_p_s<mode>)
11565         (mve_vmlsdavaq_p_s<mode>, mve_vmlsdavaxq_p_s<mode>): Merge into
11566         ...
11567         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
11569 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11571         * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
11572         * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
11574 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11576         * config/arm/arm-mve-builtins-base.cc (vaddlvaq): New.
11577         * config/arm/arm-mve-builtins-base.def (vaddlvaq): New.
11578         * config/arm/arm-mve-builtins-base.h (vaddlvaq): New.
11579         * config/arm/arm_mve.h (vaddlvaq): Remove.
11580         (vaddlvaq_p): Remove.
11581         (vaddlvaq_u32): Remove.
11582         (vaddlvaq_s32): Remove.
11583         (vaddlvaq_p_s32): Remove.
11584         (vaddlvaq_p_u32): Remove.
11585         (__arm_vaddlvaq_u32): Remove.
11586         (__arm_vaddlvaq_s32): Remove.
11587         (__arm_vaddlvaq_p_s32): Remove.
11588         (__arm_vaddlvaq_p_u32): Remove.
11589         (__arm_vaddlvaq): Remove.
11590         (__arm_vaddlvaq_p): Remove.
11592 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11594         * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
11595         * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
11597 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11599         * config/arm/iterators.md (mve_insn): Add vaddlva.
11600         * config/arm/mve.md (mve_vaddlvaq_<supf>v4si): Rename into ...
11601         (@mve_<mve_insn>q_<supf>v4si): ... this.
11602         (mve_vaddlvaq_p_<supf>v4si): Rename into ...
11603         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
11605 2023-05-11  Uros Bizjak  <ubizjak@gmail.com>
11607         PR target/109807
11608         * config/i386/i386.cc (ix86_widen_mult_cost):
11609         Handle V4HImode and V2SImode.
11611 2023-05-11  Andrew Pinski  <apinski@marvell.com>
11613         * tree-ssa-dce.cc (simple_dce_from_worklist): For ssa names
11614         defined by a phi node with more than one uses, allow for the
11615         only uses are in that same defining statement.
11617 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
11619         * config/riscv/riscv.cc (riscv_const_insns): Add permissible
11620         vector constants.
11622 2023-05-11  Pan Li  <pan2.li@intel.com>
11624         * config/riscv/vector.md: Add comments for simplifying to vmset.
11626 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
11628         * config/riscv/autovec.md (<optab><mode>3): Add scalar shift
11629         pattern.
11630         (v<optab><mode>3): Add vector shift pattern.
11631         * config/riscv/vector-iterators.md: New iterator.
11633 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
11635         * config/riscv/autovec.md: Use renamed functions.
11636         * config/riscv/riscv-protos.h (emit_vlmax_op): Rename.
11637         (emit_vlmax_reg_op): To this.
11638         (emit_nonvlmax_op): Rename.
11639         (emit_len_op): To this.
11640         (emit_nonvlmax_binop): Rename.
11641         (emit_len_binop): To this.
11642         * config/riscv/riscv-v.cc (emit_pred_op): Add default parameter.
11643         (emit_pred_binop): Remove vlmax_p.
11644         (emit_vlmax_op): Rename.
11645         (emit_vlmax_reg_op): To this.
11646         (emit_nonvlmax_op): Rename.
11647         (emit_len_op): To this.
11648         (emit_nonvlmax_binop): Rename.
11649         (emit_len_binop): To this.
11650         (sew64_scalar_helper): Use renamed functions.
11651         (expand_tuple_move): Use renamed functions.
11652         * config/riscv/riscv.cc (vector_zero_call_used_regs): Use
11653         renamed functions.
11654         * config/riscv/vector.md: Use renamed functions.
11656 2023-05-11  Robin Dapp  <rdapp@ventanamicro.com>
11657             Michael Collison  <collison@rivosinc.com>
11659         * config/riscv/autovec.md (<optab><mode>3): Add integer binops.
11660         * config/riscv/riscv-protos.h (emit_nonvlmax_binop): Declare.
11661         * config/riscv/riscv-v.cc (emit_pred_op): New function.
11662         (set_expander_dest_and_mask): New function.
11663         (emit_pred_binop): New function.
11664         (emit_nonvlmax_binop): New function.
11666 2023-05-11  Pan Li  <pan2.li@intel.com>
11668         * cfgloopmanip.cc (create_empty_loop_on_edge): Add PLUS_EXPR.
11669         * gimple-loop-interchange.cc
11670         (tree_loop_interchange::map_inductions_to_loop): Ditto.
11671         * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Ditto.
11672         * tree-ssa-loop-ivopts.cc (create_new_iv): Ditto.
11673         * tree-ssa-loop-manip.cc (create_iv): Ditto.
11674         (tree_transform_and_unroll_loop): Ditto.
11675         (canonicalize_loop_ivs): Ditto.
11676         * tree-ssa-loop-manip.h (create_iv): Ditto.
11677         * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Ditto.
11678         * tree-vect-loop-manip.cc (vect_set_loop_controls_directly):
11679         Ditto.
11680         (vect_set_loop_condition_normal): Ditto.
11681         * tree-vect-loop.cc (vect_create_epilog_for_reduction): Ditto.
11682         * tree-vect-stmts.cc (vectorizable_store): Ditto.
11683         (vectorizable_load): Ditto.
11685 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11687         * config/arm/arm-mve-builtins-base.cc (vmovlbq, vmovltq): New.
11688         * config/arm/arm-mve-builtins-base.def (vmovlbq, vmovltq): New.
11689         * config/arm/arm-mve-builtins-base.h (vmovlbq, vmovltq): New.
11690         * config/arm/arm_mve.h (vmovlbq): Remove.
11691         (vmovltq): Remove.
11692         (vmovlbq_m): Remove.
11693         (vmovltq_m): Remove.
11694         (vmovlbq_x): Remove.
11695         (vmovltq_x): Remove.
11696         (vmovlbq_s8): Remove.
11697         (vmovlbq_s16): Remove.
11698         (vmovltq_s8): Remove.
11699         (vmovltq_s16): Remove.
11700         (vmovltq_u8): Remove.
11701         (vmovltq_u16): Remove.
11702         (vmovlbq_u8): Remove.
11703         (vmovlbq_u16): Remove.
11704         (vmovlbq_m_s8): Remove.
11705         (vmovltq_m_s8): Remove.
11706         (vmovlbq_m_u8): Remove.
11707         (vmovltq_m_u8): Remove.
11708         (vmovlbq_m_s16): Remove.
11709         (vmovltq_m_s16): Remove.
11710         (vmovlbq_m_u16): Remove.
11711         (vmovltq_m_u16): Remove.
11712         (vmovlbq_x_s8): Remove.
11713         (vmovlbq_x_s16): Remove.
11714         (vmovlbq_x_u8): Remove.
11715         (vmovlbq_x_u16): Remove.
11716         (vmovltq_x_s8): Remove.
11717         (vmovltq_x_s16): Remove.
11718         (vmovltq_x_u8): Remove.
11719         (vmovltq_x_u16): Remove.
11720         (__arm_vmovlbq_s8): Remove.
11721         (__arm_vmovlbq_s16): Remove.
11722         (__arm_vmovltq_s8): Remove.
11723         (__arm_vmovltq_s16): Remove.
11724         (__arm_vmovltq_u8): Remove.
11725         (__arm_vmovltq_u16): Remove.
11726         (__arm_vmovlbq_u8): Remove.
11727         (__arm_vmovlbq_u16): Remove.
11728         (__arm_vmovlbq_m_s8): Remove.
11729         (__arm_vmovltq_m_s8): Remove.
11730         (__arm_vmovlbq_m_u8): Remove.
11731         (__arm_vmovltq_m_u8): Remove.
11732         (__arm_vmovlbq_m_s16): Remove.
11733         (__arm_vmovltq_m_s16): Remove.
11734         (__arm_vmovlbq_m_u16): Remove.
11735         (__arm_vmovltq_m_u16): Remove.
11736         (__arm_vmovlbq_x_s8): Remove.
11737         (__arm_vmovlbq_x_s16): Remove.
11738         (__arm_vmovlbq_x_u8): Remove.
11739         (__arm_vmovlbq_x_u16): Remove.
11740         (__arm_vmovltq_x_s8): Remove.
11741         (__arm_vmovltq_x_s16): Remove.
11742         (__arm_vmovltq_x_u8): Remove.
11743         (__arm_vmovltq_x_u16): Remove.
11744         (__arm_vmovlbq): Remove.
11745         (__arm_vmovltq): Remove.
11746         (__arm_vmovlbq_m): Remove.
11747         (__arm_vmovltq_m): Remove.
11748         (__arm_vmovlbq_x): Remove.
11749         (__arm_vmovltq_x): Remove.
11751 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11753         * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
11754         * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
11756 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11758         * config/arm/iterators.md (mve_insn): Add vmovlb, vmovlt.
11759         (VMOVLBQ, VMOVLTQ): Merge into ...
11760         (VMOVLxQ): ... this.
11761         (VMOVLTQ_M, VMOVLBQ_M): Merge into ...
11762         (VMOVLxQ_M): ... this.
11763         * config/arm/mve.md (mve_vmovltq_<supf><mode>)
11764         (mve_vmovlbq_<supf><mode>): Merge into ...
11765         (@mve_<mve_insn>q_<supf><mode>): ... this.
11766         (mve_vmovlbq_m_<supf><mode>, mve_vmovltq_m_<supf><mode>): Merge
11767         into ...
11768         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
11770 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11772         * config/arm/arm-mve-builtins-base.cc (vaddlvq): New.
11773         * config/arm/arm-mve-builtins-base.def (vaddlvq): New.
11774         * config/arm/arm-mve-builtins-base.h (vaddlvq): New.
11775         * config/arm/arm-mve-builtins-functions.h
11776         (unspec_mve_function_exact_insn_pred_p): Handle vaddlvq.
11777         * config/arm/arm_mve.h (vaddlvq): Remove.
11778         (vaddlvq_p): Remove.
11779         (vaddlvq_s32): Remove.
11780         (vaddlvq_u32): Remove.
11781         (vaddlvq_p_s32): Remove.
11782         (vaddlvq_p_u32): Remove.
11783         (__arm_vaddlvq_s32): Remove.
11784         (__arm_vaddlvq_u32): Remove.
11785         (__arm_vaddlvq_p_s32): Remove.
11786         (__arm_vaddlvq_p_u32): Remove.
11787         (__arm_vaddlvq): Remove.
11788         (__arm_vaddlvq_p): Remove.
11790 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11792         * config/arm/iterators.md (mve_insn): Add vaddlv.
11793         * config/arm/mve.md (mve_vaddlvq_<supf>v4si): Rename into ...
11794         (@mve_<mve_insn>q_<supf>v4si): ... this.
11795         (mve_vaddlvq_p_<supf>v4si): Rename into ...
11796         (@mve_<mve_insn>q_p_<supf>v4si): ... this.
11798 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11800         * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
11801         * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
11803 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11805         * config/arm/arm-mve-builtins-base.cc (vaddvaq): New.
11806         * config/arm/arm-mve-builtins-base.def (vaddvaq): New.
11807         * config/arm/arm-mve-builtins-base.h (vaddvaq): New.
11808         * config/arm/arm_mve.h (vaddvaq): Remove.
11809         (vaddvaq_p): Remove.
11810         (vaddvaq_u8): Remove.
11811         (vaddvaq_s8): Remove.
11812         (vaddvaq_u16): Remove.
11813         (vaddvaq_s16): Remove.
11814         (vaddvaq_u32): Remove.
11815         (vaddvaq_s32): Remove.
11816         (vaddvaq_p_u8): Remove.
11817         (vaddvaq_p_s8): Remove.
11818         (vaddvaq_p_u16): Remove.
11819         (vaddvaq_p_s16): Remove.
11820         (vaddvaq_p_u32): Remove.
11821         (vaddvaq_p_s32): Remove.
11822         (__arm_vaddvaq_u8): Remove.
11823         (__arm_vaddvaq_s8): Remove.
11824         (__arm_vaddvaq_u16): Remove.
11825         (__arm_vaddvaq_s16): Remove.
11826         (__arm_vaddvaq_u32): Remove.
11827         (__arm_vaddvaq_s32): Remove.
11828         (__arm_vaddvaq_p_u8): Remove.
11829         (__arm_vaddvaq_p_s8): Remove.
11830         (__arm_vaddvaq_p_u16): Remove.
11831         (__arm_vaddvaq_p_s16): Remove.
11832         (__arm_vaddvaq_p_u32): Remove.
11833         (__arm_vaddvaq_p_s32): Remove.
11834         (__arm_vaddvaq): Remove.
11835         (__arm_vaddvaq_p): Remove.
11837 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11839         * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
11840         * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
11842 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11844         * config/arm/iterators.md (mve_insn): Add vaddva.
11845         * config/arm/mve.md (mve_vaddvaq_<supf><mode>): Rename into ...
11846         (@mve_<mve_insn>q_<supf><mode>): ... this.
11847         (mve_vaddvaq_p_<supf><mode>): Rename into ...
11848         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
11850 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11852         * config/arm/arm-mve-builtins-base.cc (vaddvq): New.
11853         * config/arm/arm-mve-builtins-base.def (vaddvq): New.
11854         * config/arm/arm-mve-builtins-base.h (vaddvq): New.
11855         * config/arm/arm_mve.h (vaddvq): Remove.
11856         (vaddvq_p): Remove.
11857         (vaddvq_s8): Remove.
11858         (vaddvq_s16): Remove.
11859         (vaddvq_s32): Remove.
11860         (vaddvq_u8): Remove.
11861         (vaddvq_u16): Remove.
11862         (vaddvq_u32): Remove.
11863         (vaddvq_p_u8): Remove.
11864         (vaddvq_p_s8): Remove.
11865         (vaddvq_p_u16): Remove.
11866         (vaddvq_p_s16): Remove.
11867         (vaddvq_p_u32): Remove.
11868         (vaddvq_p_s32): Remove.
11869         (__arm_vaddvq_s8): Remove.
11870         (__arm_vaddvq_s16): Remove.
11871         (__arm_vaddvq_s32): Remove.
11872         (__arm_vaddvq_u8): Remove.
11873         (__arm_vaddvq_u16): Remove.
11874         (__arm_vaddvq_u32): Remove.
11875         (__arm_vaddvq_p_u8): Remove.
11876         (__arm_vaddvq_p_s8): Remove.
11877         (__arm_vaddvq_p_u16): Remove.
11878         (__arm_vaddvq_p_s16): Remove.
11879         (__arm_vaddvq_p_u32): Remove.
11880         (__arm_vaddvq_p_s32): Remove.
11881         (__arm_vaddvq): Remove.
11882         (__arm_vaddvq_p): Remove.
11884 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11886         * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
11887         * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
11889 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11891         * config/arm/iterators.md (mve_insn): Add vaddv.
11892         * config/arm/mve.md (@mve_vaddvq_<supf><mode>): Rename into ...
11893         (@mve_<mve_insn>q_<supf><mode>): ... this.
11894         (mve_vaddvq_p_<supf><mode>): Rename into ...
11895         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
11896         * config/arm/vec-common.md: Use gen_mve_q instead of
11897         gen_mve_vaddvq.
11899 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11901         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New.
11902         (vdupq): New.
11903         * config/arm/arm-mve-builtins-base.def (vdupq): New.
11904         * config/arm/arm-mve-builtins-base.h: (vdupq): New.
11905         * config/arm/arm_mve.h (vdupq_n): Remove.
11906         (vdupq_m): Remove.
11907         (vdupq_n_f16): Remove.
11908         (vdupq_n_f32): Remove.
11909         (vdupq_n_s8): Remove.
11910         (vdupq_n_s16): Remove.
11911         (vdupq_n_s32): Remove.
11912         (vdupq_n_u8): Remove.
11913         (vdupq_n_u16): Remove.
11914         (vdupq_n_u32): Remove.
11915         (vdupq_m_n_u8): Remove.
11916         (vdupq_m_n_s8): Remove.
11917         (vdupq_m_n_u16): Remove.
11918         (vdupq_m_n_s16): Remove.
11919         (vdupq_m_n_u32): Remove.
11920         (vdupq_m_n_s32): Remove.
11921         (vdupq_m_n_f16): Remove.
11922         (vdupq_m_n_f32): Remove.
11923         (vdupq_x_n_s8): Remove.
11924         (vdupq_x_n_s16): Remove.
11925         (vdupq_x_n_s32): Remove.
11926         (vdupq_x_n_u8): Remove.
11927         (vdupq_x_n_u16): Remove.
11928         (vdupq_x_n_u32): Remove.
11929         (vdupq_x_n_f16): Remove.
11930         (vdupq_x_n_f32): Remove.
11931         (__arm_vdupq_n_s8): Remove.
11932         (__arm_vdupq_n_s16): Remove.
11933         (__arm_vdupq_n_s32): Remove.
11934         (__arm_vdupq_n_u8): Remove.
11935         (__arm_vdupq_n_u16): Remove.
11936         (__arm_vdupq_n_u32): Remove.
11937         (__arm_vdupq_m_n_u8): Remove.
11938         (__arm_vdupq_m_n_s8): Remove.
11939         (__arm_vdupq_m_n_u16): Remove.
11940         (__arm_vdupq_m_n_s16): Remove.
11941         (__arm_vdupq_m_n_u32): Remove.
11942         (__arm_vdupq_m_n_s32): Remove.
11943         (__arm_vdupq_x_n_s8): Remove.
11944         (__arm_vdupq_x_n_s16): Remove.
11945         (__arm_vdupq_x_n_s32): Remove.
11946         (__arm_vdupq_x_n_u8): Remove.
11947         (__arm_vdupq_x_n_u16): Remove.
11948         (__arm_vdupq_x_n_u32): Remove.
11949         (__arm_vdupq_n_f16): Remove.
11950         (__arm_vdupq_n_f32): Remove.
11951         (__arm_vdupq_m_n_f16): Remove.
11952         (__arm_vdupq_m_n_f32): Remove.
11953         (__arm_vdupq_x_n_f16): Remove.
11954         (__arm_vdupq_x_n_f32): Remove.
11955         (__arm_vdupq_n): Remove.
11956         (__arm_vdupq_m): Remove.
11958 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11960         * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
11961         * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
11963 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11965         * config/arm/iterators.md (MVE_FP_M_N_VDUPQ_ONLY)
11966         (MVE_FP_N_VDUPQ_ONLY): New.
11967         (mve_insn): Add vdupq.
11968         * config/arm/mve.md (mve_vdupq_n_f<mode>): Rename into ...
11969         (@mve_<mve_insn>q_n_f<mode>): ... this.
11970         (mve_vdupq_n_<supf><mode>): Rename into ...
11971         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
11972         (mve_vdupq_m_n_<supf><mode>): Rename into ...
11973         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
11974         (mve_vdupq_m_n_f<mode>): Rename into ...
11975         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
11977 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
11979         * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q):
11980         New.
11981         * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
11982         (vrev64q): New.
11983         * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
11984         (vrev64q): New.
11985         * config/arm/arm_mve.h (vrev16q): Remove.
11986         (vrev32q): Remove.
11987         (vrev64q): Remove.
11988         (vrev64q_m): Remove.
11989         (vrev16q_m): Remove.
11990         (vrev32q_m): Remove.
11991         (vrev16q_x): Remove.
11992         (vrev32q_x): Remove.
11993         (vrev64q_x): Remove.
11994         (vrev64q_f16): Remove.
11995         (vrev64q_f32): Remove.
11996         (vrev32q_f16): Remove.
11997         (vrev16q_s8): Remove.
11998         (vrev32q_s8): Remove.
11999         (vrev32q_s16): Remove.
12000         (vrev64q_s8): Remove.
12001         (vrev64q_s16): Remove.
12002         (vrev64q_s32): Remove.
12003         (vrev64q_u8): Remove.
12004         (vrev64q_u16): Remove.
12005         (vrev64q_u32): Remove.
12006         (vrev32q_u8): Remove.
12007         (vrev32q_u16): Remove.
12008         (vrev16q_u8): Remove.
12009         (vrev64q_m_u8): Remove.
12010         (vrev64q_m_s8): Remove.
12011         (vrev64q_m_u16): Remove.
12012         (vrev64q_m_s16): Remove.
12013         (vrev64q_m_u32): Remove.
12014         (vrev64q_m_s32): Remove.
12015         (vrev16q_m_s8): Remove.
12016         (vrev32q_m_f16): Remove.
12017         (vrev16q_m_u8): Remove.
12018         (vrev32q_m_s8): Remove.
12019         (vrev64q_m_f16): Remove.
12020         (vrev32q_m_u8): Remove.
12021         (vrev32q_m_s16): Remove.
12022         (vrev64q_m_f32): Remove.
12023         (vrev32q_m_u16): Remove.
12024         (vrev16q_x_s8): Remove.
12025         (vrev16q_x_u8): Remove.
12026         (vrev32q_x_s8): Remove.
12027         (vrev32q_x_s16): Remove.
12028         (vrev32q_x_u8): Remove.
12029         (vrev32q_x_u16): Remove.
12030         (vrev64q_x_s8): Remove.
12031         (vrev64q_x_s16): Remove.
12032         (vrev64q_x_s32): Remove.
12033         (vrev64q_x_u8): Remove.
12034         (vrev64q_x_u16): Remove.
12035         (vrev64q_x_u32): Remove.
12036         (vrev32q_x_f16): Remove.
12037         (vrev64q_x_f16): Remove.
12038         (vrev64q_x_f32): Remove.
12039         (__arm_vrev16q_s8): Remove.
12040         (__arm_vrev32q_s8): Remove.
12041         (__arm_vrev32q_s16): Remove.
12042         (__arm_vrev64q_s8): Remove.
12043         (__arm_vrev64q_s16): Remove.
12044         (__arm_vrev64q_s32): Remove.
12045         (__arm_vrev64q_u8): Remove.
12046         (__arm_vrev64q_u16): Remove.
12047         (__arm_vrev64q_u32): Remove.
12048         (__arm_vrev32q_u8): Remove.
12049         (__arm_vrev32q_u16): Remove.
12050         (__arm_vrev16q_u8): Remove.
12051         (__arm_vrev64q_m_u8): Remove.
12052         (__arm_vrev64q_m_s8): Remove.
12053         (__arm_vrev64q_m_u16): Remove.
12054         (__arm_vrev64q_m_s16): Remove.
12055         (__arm_vrev64q_m_u32): Remove.
12056         (__arm_vrev64q_m_s32): Remove.
12057         (__arm_vrev16q_m_s8): Remove.
12058         (__arm_vrev16q_m_u8): Remove.
12059         (__arm_vrev32q_m_s8): Remove.
12060         (__arm_vrev32q_m_u8): Remove.
12061         (__arm_vrev32q_m_s16): Remove.
12062         (__arm_vrev32q_m_u16): Remove.
12063         (__arm_vrev16q_x_s8): Remove.
12064         (__arm_vrev16q_x_u8): Remove.
12065         (__arm_vrev32q_x_s8): Remove.
12066         (__arm_vrev32q_x_s16): Remove.
12067         (__arm_vrev32q_x_u8): Remove.
12068         (__arm_vrev32q_x_u16): Remove.
12069         (__arm_vrev64q_x_s8): Remove.
12070         (__arm_vrev64q_x_s16): Remove.
12071         (__arm_vrev64q_x_s32): Remove.
12072         (__arm_vrev64q_x_u8): Remove.
12073         (__arm_vrev64q_x_u16): Remove.
12074         (__arm_vrev64q_x_u32): Remove.
12075         (__arm_vrev64q_f16): Remove.
12076         (__arm_vrev64q_f32): Remove.
12077         (__arm_vrev32q_f16): Remove.
12078         (__arm_vrev32q_m_f16): Remove.
12079         (__arm_vrev64q_m_f16): Remove.
12080         (__arm_vrev64q_m_f32): Remove.
12081         (__arm_vrev32q_x_f16): Remove.
12082         (__arm_vrev64q_x_f16): Remove.
12083         (__arm_vrev64q_x_f32): Remove.
12084         (__arm_vrev16q): Remove.
12085         (__arm_vrev32q): Remove.
12086         (__arm_vrev64q): Remove.
12087         (__arm_vrev64q_m): Remove.
12088         (__arm_vrev16q_m): Remove.
12089         (__arm_vrev32q_m): Remove.
12090         (__arm_vrev16q_x): Remove.
12091         (__arm_vrev32q_x): Remove.
12092         (__arm_vrev64q_x): Remove.
12094 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
12096         * config/arm/iterators.md (MVE_V8HF, MVE_V16QI)
12097         (MVE_FP_VREV64Q_ONLY, MVE_FP_M_VREV64Q_ONLY, MVE_FP_VREV32Q_ONLY)
12098         (MVE_FP_M_VREV32Q_ONLY): New iterators.
12099         (mve_insn): Add vrev16q, vrev32q, vrev64q.
12100         * config/arm/mve.md (mve_vrev64q_f<mode>): Rename into ...
12101         (@mve_<mve_insn>q_f<mode>): ... this
12102         (mve_vrev32q_fv8hf): Rename into @mve_<mve_insn>q_f<mode>.
12103         (mve_vrev64q_<supf><mode>): Rename into ...
12104         (@mve_<mve_insn>q_<supf><mode>): ... this.
12105         (mve_vrev32q_<supf><mode>): Rename into
12106         @mve_<mve_insn>q_<supf><mode>.
12107         (mve_vrev16q_<supf>v16qi): Rename into
12108         @mve_<mve_insn>q_<supf><mode>.
12109         (mve_vrev64q_m_<supf><mode>): Rename into
12110         @mve_<mve_insn>q_m_<supf><mode>.
12111         (mve_vrev32q_m_fv8hf): Rename into @mve_<mve_insn>q_m_f<mode>.
12112         (mve_vrev32q_m_<supf><mode>): Rename into
12113         @mve_<mve_insn>q_m_<supf><mode>.
12114         (mve_vrev64q_m_f<mode>): Rename into @mve_<mve_insn>q_m_f<mode>.
12115         (mve_vrev16q_m_<supf>v16qi): Rename into
12116         @mve_<mve_insn>q_m_<supf><mode>.
12118 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
12120         * config/arm/arm-mve-builtins-base.cc (vcmpeqq, vcmpneq, vcmpgeq)
12121         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
12122         * config/arm/arm-mve-builtins-base.def (vcmpeqq, vcmpneq, vcmpgeq)
12123         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
12124         * config/arm/arm-mve-builtins-base.h (vcmpeqq, vcmpneq, vcmpgeq)
12125         (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
12126         * config/arm/arm-mve-builtins-functions.h (class
12127         unspec_based_mve_function_exact_insn_vcmp): New.
12128         * config/arm/arm-mve-builtins.cc
12129         (function_instance::has_inactive_argument): Handle vcmp.
12130         * config/arm/arm_mve.h (vcmpneq): Remove.
12131         (vcmphiq): Remove.
12132         (vcmpeqq): Remove.
12133         (vcmpcsq): Remove.
12134         (vcmpltq): Remove.
12135         (vcmpleq): Remove.
12136         (vcmpgtq): Remove.
12137         (vcmpgeq): Remove.
12138         (vcmpneq_m): Remove.
12139         (vcmphiq_m): Remove.
12140         (vcmpeqq_m): Remove.
12141         (vcmpcsq_m): Remove.
12142         (vcmpcsq_m_n): Remove.
12143         (vcmpltq_m): Remove.
12144         (vcmpleq_m): Remove.
12145         (vcmpgtq_m): Remove.
12146         (vcmpgeq_m): Remove.
12147         (vcmpneq_s8): Remove.
12148         (vcmpneq_s16): Remove.
12149         (vcmpneq_s32): Remove.
12150         (vcmpneq_u8): Remove.
12151         (vcmpneq_u16): Remove.
12152         (vcmpneq_u32): Remove.
12153         (vcmpneq_n_u8): Remove.
12154         (vcmphiq_u8): Remove.
12155         (vcmphiq_n_u8): Remove.
12156         (vcmpeqq_u8): Remove.
12157         (vcmpeqq_n_u8): Remove.
12158         (vcmpcsq_u8): Remove.
12159         (vcmpcsq_n_u8): Remove.
12160         (vcmpneq_n_s8): Remove.
12161         (vcmpltq_s8): Remove.
12162         (vcmpltq_n_s8): Remove.
12163         (vcmpleq_s8): Remove.
12164         (vcmpleq_n_s8): Remove.
12165         (vcmpgtq_s8): Remove.
12166         (vcmpgtq_n_s8): Remove.
12167         (vcmpgeq_s8): Remove.
12168         (vcmpgeq_n_s8): Remove.
12169         (vcmpeqq_s8): Remove.
12170         (vcmpeqq_n_s8): Remove.
12171         (vcmpneq_n_u16): Remove.
12172         (vcmphiq_u16): Remove.
12173         (vcmphiq_n_u16): Remove.
12174         (vcmpeqq_u16): Remove.
12175         (vcmpeqq_n_u16): Remove.
12176         (vcmpcsq_u16): Remove.
12177         (vcmpcsq_n_u16): Remove.
12178         (vcmpneq_n_s16): Remove.
12179         (vcmpltq_s16): Remove.
12180         (vcmpltq_n_s16): Remove.
12181         (vcmpleq_s16): Remove.
12182         (vcmpleq_n_s16): Remove.
12183         (vcmpgtq_s16): Remove.
12184         (vcmpgtq_n_s16): Remove.
12185         (vcmpgeq_s16): Remove.
12186         (vcmpgeq_n_s16): Remove.
12187         (vcmpeqq_s16): Remove.
12188         (vcmpeqq_n_s16): Remove.
12189         (vcmpneq_n_u32): Remove.
12190         (vcmphiq_u32): Remove.
12191         (vcmphiq_n_u32): Remove.
12192         (vcmpeqq_u32): Remove.
12193         (vcmpeqq_n_u32): Remove.
12194         (vcmpcsq_u32): Remove.
12195         (vcmpcsq_n_u32): Remove.
12196         (vcmpneq_n_s32): Remove.
12197         (vcmpltq_s32): Remove.
12198         (vcmpltq_n_s32): Remove.
12199         (vcmpleq_s32): Remove.
12200         (vcmpleq_n_s32): Remove.
12201         (vcmpgtq_s32): Remove.
12202         (vcmpgtq_n_s32): Remove.
12203         (vcmpgeq_s32): Remove.
12204         (vcmpgeq_n_s32): Remove.
12205         (vcmpeqq_s32): Remove.
12206         (vcmpeqq_n_s32): Remove.
12207         (vcmpneq_n_f16): Remove.
12208         (vcmpneq_f16): Remove.
12209         (vcmpltq_n_f16): Remove.
12210         (vcmpltq_f16): Remove.
12211         (vcmpleq_n_f16): Remove.
12212         (vcmpleq_f16): Remove.
12213         (vcmpgtq_n_f16): Remove.
12214         (vcmpgtq_f16): Remove.
12215         (vcmpgeq_n_f16): Remove.
12216         (vcmpgeq_f16): Remove.
12217         (vcmpeqq_n_f16): Remove.
12218         (vcmpeqq_f16): Remove.
12219         (vcmpneq_n_f32): Remove.
12220         (vcmpneq_f32): Remove.
12221         (vcmpltq_n_f32): Remove.
12222         (vcmpltq_f32): Remove.
12223         (vcmpleq_n_f32): Remove.
12224         (vcmpleq_f32): Remove.
12225         (vcmpgtq_n_f32): Remove.
12226         (vcmpgtq_f32): Remove.
12227         (vcmpgeq_n_f32): Remove.
12228         (vcmpgeq_f32): Remove.
12229         (vcmpeqq_n_f32): Remove.
12230         (vcmpeqq_f32): Remove.
12231         (vcmpeqq_m_f16): Remove.
12232         (vcmpeqq_m_f32): Remove.
12233         (vcmpneq_m_u8): Remove.
12234         (vcmpneq_m_n_u8): Remove.
12235         (vcmphiq_m_u8): Remove.
12236         (vcmphiq_m_n_u8): Remove.
12237         (vcmpeqq_m_u8): Remove.
12238         (vcmpeqq_m_n_u8): Remove.
12239         (vcmpcsq_m_u8): Remove.
12240         (vcmpcsq_m_n_u8): Remove.
12241         (vcmpneq_m_s8): Remove.
12242         (vcmpneq_m_n_s8): Remove.
12243         (vcmpltq_m_s8): Remove.
12244         (vcmpltq_m_n_s8): Remove.
12245         (vcmpleq_m_s8): Remove.
12246         (vcmpleq_m_n_s8): Remove.
12247         (vcmpgtq_m_s8): Remove.
12248         (vcmpgtq_m_n_s8): Remove.
12249         (vcmpgeq_m_s8): Remove.
12250         (vcmpgeq_m_n_s8): Remove.
12251         (vcmpeqq_m_s8): Remove.
12252         (vcmpeqq_m_n_s8): Remove.
12253         (vcmpneq_m_u16): Remove.
12254         (vcmpneq_m_n_u16): Remove.
12255         (vcmphiq_m_u16): Remove.
12256         (vcmphiq_m_n_u16): Remove.
12257         (vcmpeqq_m_u16): Remove.
12258         (vcmpeqq_m_n_u16): Remove.
12259         (vcmpcsq_m_u16): Remove.
12260         (vcmpcsq_m_n_u16): Remove.
12261         (vcmpneq_m_s16): Remove.
12262         (vcmpneq_m_n_s16): Remove.
12263         (vcmpltq_m_s16): Remove.
12264         (vcmpltq_m_n_s16): Remove.
12265         (vcmpleq_m_s16): Remove.
12266         (vcmpleq_m_n_s16): Remove.
12267         (vcmpgtq_m_s16): Remove.
12268         (vcmpgtq_m_n_s16): Remove.
12269         (vcmpgeq_m_s16): Remove.
12270         (vcmpgeq_m_n_s16): Remove.
12271         (vcmpeqq_m_s16): Remove.
12272         (vcmpeqq_m_n_s16): Remove.
12273         (vcmpneq_m_u32): Remove.
12274         (vcmpneq_m_n_u32): Remove.
12275         (vcmphiq_m_u32): Remove.
12276         (vcmphiq_m_n_u32): Remove.
12277         (vcmpeqq_m_u32): Remove.
12278         (vcmpeqq_m_n_u32): Remove.
12279         (vcmpcsq_m_u32): Remove.
12280         (vcmpcsq_m_n_u32): Remove.
12281         (vcmpneq_m_s32): Remove.
12282         (vcmpneq_m_n_s32): Remove.
12283         (vcmpltq_m_s32): Remove.
12284         (vcmpltq_m_n_s32): Remove.
12285         (vcmpleq_m_s32): Remove.
12286         (vcmpleq_m_n_s32): Remove.
12287         (vcmpgtq_m_s32): Remove.
12288         (vcmpgtq_m_n_s32): Remove.
12289         (vcmpgeq_m_s32): Remove.
12290         (vcmpgeq_m_n_s32): Remove.
12291         (vcmpeqq_m_s32): Remove.
12292         (vcmpeqq_m_n_s32): Remove.
12293         (vcmpeqq_m_n_f16): Remove.
12294         (vcmpgeq_m_f16): Remove.
12295         (vcmpgeq_m_n_f16): Remove.
12296         (vcmpgtq_m_f16): Remove.
12297         (vcmpgtq_m_n_f16): Remove.
12298         (vcmpleq_m_f16): Remove.
12299         (vcmpleq_m_n_f16): Remove.
12300         (vcmpltq_m_f16): Remove.
12301         (vcmpltq_m_n_f16): Remove.
12302         (vcmpneq_m_f16): Remove.
12303         (vcmpneq_m_n_f16): Remove.
12304         (vcmpeqq_m_n_f32): Remove.
12305         (vcmpgeq_m_f32): Remove.
12306         (vcmpgeq_m_n_f32): Remove.
12307         (vcmpgtq_m_f32): Remove.
12308         (vcmpgtq_m_n_f32): Remove.
12309         (vcmpleq_m_f32): Remove.
12310         (vcmpleq_m_n_f32): Remove.
12311         (vcmpltq_m_f32): Remove.
12312         (vcmpltq_m_n_f32): Remove.
12313         (vcmpneq_m_f32): Remove.
12314         (vcmpneq_m_n_f32): Remove.
12315         (__arm_vcmpneq_s8): Remove.
12316         (__arm_vcmpneq_s16): Remove.
12317         (__arm_vcmpneq_s32): Remove.
12318         (__arm_vcmpneq_u8): Remove.
12319         (__arm_vcmpneq_u16): Remove.
12320         (__arm_vcmpneq_u32): Remove.
12321         (__arm_vcmpneq_n_u8): Remove.
12322         (__arm_vcmphiq_u8): Remove.
12323         (__arm_vcmphiq_n_u8): Remove.
12324         (__arm_vcmpeqq_u8): Remove.
12325         (__arm_vcmpeqq_n_u8): Remove.
12326         (__arm_vcmpcsq_u8): Remove.
12327         (__arm_vcmpcsq_n_u8): Remove.
12328         (__arm_vcmpneq_n_s8): Remove.
12329         (__arm_vcmpltq_s8): Remove.
12330         (__arm_vcmpltq_n_s8): Remove.
12331         (__arm_vcmpleq_s8): Remove.
12332         (__arm_vcmpleq_n_s8): Remove.
12333         (__arm_vcmpgtq_s8): Remove.
12334         (__arm_vcmpgtq_n_s8): Remove.
12335         (__arm_vcmpgeq_s8): Remove.
12336         (__arm_vcmpgeq_n_s8): Remove.
12337         (__arm_vcmpeqq_s8): Remove.
12338         (__arm_vcmpeqq_n_s8): Remove.
12339         (__arm_vcmpneq_n_u16): Remove.
12340         (__arm_vcmphiq_u16): Remove.
12341         (__arm_vcmphiq_n_u16): Remove.
12342         (__arm_vcmpeqq_u16): Remove.
12343         (__arm_vcmpeqq_n_u16): Remove.
12344         (__arm_vcmpcsq_u16): Remove.
12345         (__arm_vcmpcsq_n_u16): Remove.
12346         (__arm_vcmpneq_n_s16): Remove.
12347         (__arm_vcmpltq_s16): Remove.
12348         (__arm_vcmpltq_n_s16): Remove.
12349         (__arm_vcmpleq_s16): Remove.
12350         (__arm_vcmpleq_n_s16): Remove.
12351         (__arm_vcmpgtq_s16): Remove.
12352         (__arm_vcmpgtq_n_s16): Remove.
12353         (__arm_vcmpgeq_s16): Remove.
12354         (__arm_vcmpgeq_n_s16): Remove.
12355         (__arm_vcmpeqq_s16): Remove.
12356         (__arm_vcmpeqq_n_s16): Remove.
12357         (__arm_vcmpneq_n_u32): Remove.
12358         (__arm_vcmphiq_u32): Remove.
12359         (__arm_vcmphiq_n_u32): Remove.
12360         (__arm_vcmpeqq_u32): Remove.
12361         (__arm_vcmpeqq_n_u32): Remove.
12362         (__arm_vcmpcsq_u32): Remove.
12363         (__arm_vcmpcsq_n_u32): Remove.
12364         (__arm_vcmpneq_n_s32): Remove.
12365         (__arm_vcmpltq_s32): Remove.
12366         (__arm_vcmpltq_n_s32): Remove.
12367         (__arm_vcmpleq_s32): Remove.
12368         (__arm_vcmpleq_n_s32): Remove.
12369         (__arm_vcmpgtq_s32): Remove.
12370         (__arm_vcmpgtq_n_s32): Remove.
12371         (__arm_vcmpgeq_s32): Remove.
12372         (__arm_vcmpgeq_n_s32): Remove.
12373         (__arm_vcmpeqq_s32): Remove.
12374         (__arm_vcmpeqq_n_s32): Remove.
12375         (__arm_vcmpneq_m_u8): Remove.
12376         (__arm_vcmpneq_m_n_u8): Remove.
12377         (__arm_vcmphiq_m_u8): Remove.
12378         (__arm_vcmphiq_m_n_u8): Remove.
12379         (__arm_vcmpeqq_m_u8): Remove.
12380         (__arm_vcmpeqq_m_n_u8): Remove.
12381         (__arm_vcmpcsq_m_u8): Remove.
12382         (__arm_vcmpcsq_m_n_u8): Remove.
12383         (__arm_vcmpneq_m_s8): Remove.
12384         (__arm_vcmpneq_m_n_s8): Remove.
12385         (__arm_vcmpltq_m_s8): Remove.
12386         (__arm_vcmpltq_m_n_s8): Remove.
12387         (__arm_vcmpleq_m_s8): Remove.
12388         (__arm_vcmpleq_m_n_s8): Remove.
12389         (__arm_vcmpgtq_m_s8): Remove.
12390         (__arm_vcmpgtq_m_n_s8): Remove.
12391         (__arm_vcmpgeq_m_s8): Remove.
12392         (__arm_vcmpgeq_m_n_s8): Remove.
12393         (__arm_vcmpeqq_m_s8): Remove.
12394         (__arm_vcmpeqq_m_n_s8): Remove.
12395         (__arm_vcmpneq_m_u16): Remove.
12396         (__arm_vcmpneq_m_n_u16): Remove.
12397         (__arm_vcmphiq_m_u16): Remove.
12398         (__arm_vcmphiq_m_n_u16): Remove.
12399         (__arm_vcmpeqq_m_u16): Remove.
12400         (__arm_vcmpeqq_m_n_u16): Remove.
12401         (__arm_vcmpcsq_m_u16): Remove.
12402         (__arm_vcmpcsq_m_n_u16): Remove.
12403         (__arm_vcmpneq_m_s16): Remove.
12404         (__arm_vcmpneq_m_n_s16): Remove.
12405         (__arm_vcmpltq_m_s16): Remove.
12406         (__arm_vcmpltq_m_n_s16): Remove.
12407         (__arm_vcmpleq_m_s16): Remove.
12408         (__arm_vcmpleq_m_n_s16): Remove.
12409         (__arm_vcmpgtq_m_s16): Remove.
12410         (__arm_vcmpgtq_m_n_s16): Remove.
12411         (__arm_vcmpgeq_m_s16): Remove.
12412         (__arm_vcmpgeq_m_n_s16): Remove.
12413         (__arm_vcmpeqq_m_s16): Remove.
12414         (__arm_vcmpeqq_m_n_s16): Remove.
12415         (__arm_vcmpneq_m_u32): Remove.
12416         (__arm_vcmpneq_m_n_u32): Remove.
12417         (__arm_vcmphiq_m_u32): Remove.
12418         (__arm_vcmphiq_m_n_u32): Remove.
12419         (__arm_vcmpeqq_m_u32): Remove.
12420         (__arm_vcmpeqq_m_n_u32): Remove.
12421         (__arm_vcmpcsq_m_u32): Remove.
12422         (__arm_vcmpcsq_m_n_u32): Remove.
12423         (__arm_vcmpneq_m_s32): Remove.
12424         (__arm_vcmpneq_m_n_s32): Remove.
12425         (__arm_vcmpltq_m_s32): Remove.
12426         (__arm_vcmpltq_m_n_s32): Remove.
12427         (__arm_vcmpleq_m_s32): Remove.
12428         (__arm_vcmpleq_m_n_s32): Remove.
12429         (__arm_vcmpgtq_m_s32): Remove.
12430         (__arm_vcmpgtq_m_n_s32): Remove.
12431         (__arm_vcmpgeq_m_s32): Remove.
12432         (__arm_vcmpgeq_m_n_s32): Remove.
12433         (__arm_vcmpeqq_m_s32): Remove.
12434         (__arm_vcmpeqq_m_n_s32): Remove.
12435         (__arm_vcmpneq_n_f16): Remove.
12436         (__arm_vcmpneq_f16): Remove.
12437         (__arm_vcmpltq_n_f16): Remove.
12438         (__arm_vcmpltq_f16): Remove.
12439         (__arm_vcmpleq_n_f16): Remove.
12440         (__arm_vcmpleq_f16): Remove.
12441         (__arm_vcmpgtq_n_f16): Remove.
12442         (__arm_vcmpgtq_f16): Remove.
12443         (__arm_vcmpgeq_n_f16): Remove.
12444         (__arm_vcmpgeq_f16): Remove.
12445         (__arm_vcmpeqq_n_f16): Remove.
12446         (__arm_vcmpeqq_f16): Remove.
12447         (__arm_vcmpneq_n_f32): Remove.
12448         (__arm_vcmpneq_f32): Remove.
12449         (__arm_vcmpltq_n_f32): Remove.
12450         (__arm_vcmpltq_f32): Remove.
12451         (__arm_vcmpleq_n_f32): Remove.
12452         (__arm_vcmpleq_f32): Remove.
12453         (__arm_vcmpgtq_n_f32): Remove.
12454         (__arm_vcmpgtq_f32): Remove.
12455         (__arm_vcmpgeq_n_f32): Remove.
12456         (__arm_vcmpgeq_f32): Remove.
12457         (__arm_vcmpeqq_n_f32): Remove.
12458         (__arm_vcmpeqq_f32): Remove.
12459         (__arm_vcmpeqq_m_f16): Remove.
12460         (__arm_vcmpeqq_m_f32): Remove.
12461         (__arm_vcmpeqq_m_n_f16): Remove.
12462         (__arm_vcmpgeq_m_f16): Remove.
12463         (__arm_vcmpgeq_m_n_f16): Remove.
12464         (__arm_vcmpgtq_m_f16): Remove.
12465         (__arm_vcmpgtq_m_n_f16): Remove.
12466         (__arm_vcmpleq_m_f16): Remove.
12467         (__arm_vcmpleq_m_n_f16): Remove.
12468         (__arm_vcmpltq_m_f16): Remove.
12469         (__arm_vcmpltq_m_n_f16): Remove.
12470         (__arm_vcmpneq_m_f16): Remove.
12471         (__arm_vcmpneq_m_n_f16): Remove.
12472         (__arm_vcmpeqq_m_n_f32): Remove.
12473         (__arm_vcmpgeq_m_f32): Remove.
12474         (__arm_vcmpgeq_m_n_f32): Remove.
12475         (__arm_vcmpgtq_m_f32): Remove.
12476         (__arm_vcmpgtq_m_n_f32): Remove.
12477         (__arm_vcmpleq_m_f32): Remove.
12478         (__arm_vcmpleq_m_n_f32): Remove.
12479         (__arm_vcmpltq_m_f32): Remove.
12480         (__arm_vcmpltq_m_n_f32): Remove.
12481         (__arm_vcmpneq_m_f32): Remove.
12482         (__arm_vcmpneq_m_n_f32): Remove.
12483         (__arm_vcmpneq): Remove.
12484         (__arm_vcmphiq): Remove.
12485         (__arm_vcmpeqq): Remove.
12486         (__arm_vcmpcsq): Remove.
12487         (__arm_vcmpltq): Remove.
12488         (__arm_vcmpleq): Remove.
12489         (__arm_vcmpgtq): Remove.
12490         (__arm_vcmpgeq): Remove.
12491         (__arm_vcmpneq_m): Remove.
12492         (__arm_vcmphiq_m): Remove.
12493         (__arm_vcmpeqq_m): Remove.
12494         (__arm_vcmpcsq_m): Remove.
12495         (__arm_vcmpltq_m): Remove.
12496         (__arm_vcmpleq_m): Remove.
12497         (__arm_vcmpgtq_m): Remove.
12498         (__arm_vcmpgeq_m): Remove.
12500 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
12502         * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
12503         * config/arm/arm-mve-builtins-shapes.h (cmp): New.
12505 2023-05-11  Christophe Lyon  <christophe.lyon@arm.com>
12507         * config/arm/iterators.md (MVE_CMP_M, MVE_CMP_M_F, MVE_CMP_M_N)
12508         (MVE_CMP_M_N_F, mve_cmp_op1): New.
12509         (isu): Add VCMP*
12510         (supf): Likewise.
12511         * config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>): Rename into ...
12512         (@mve_vcmp<mve_cmp_op>q_n_<mode>): ... this.
12513         (mve_vcmpeqq_m_f<mode>, mve_vcmpgeq_m_f<mode>)
12514         (mve_vcmpgtq_m_f<mode>, mve_vcmpleq_m_f<mode>)
12515         (mve_vcmpltq_m_f<mode>, mve_vcmpneq_m_f<mode>): Merge into ...
12516         (@mve_vcmp<mve_cmp_op1>q_m_f<mode>): ... this.
12517         (mve_vcmpcsq_m_u<mode>, mve_vcmpeqq_m_<supf><mode>)
12518         (mve_vcmpgeq_m_s<mode>, mve_vcmpgtq_m_s<mode>)
12519         (mve_vcmphiq_m_u<mode>, mve_vcmpleq_m_s<mode>)
12520         (mve_vcmpltq_m_s<mode>, mve_vcmpneq_m_<supf><mode>): Merge into
12521         ...
12522         (@mve_vcmp<mve_cmp_op1>q_m_<supf><mode>): ... this.
12523         (mve_vcmpcsq_m_n_u<mode>, mve_vcmpeqq_m_n_<supf><mode>)
12524         (mve_vcmpgeq_m_n_s<mode>, mve_vcmpgtq_m_n_s<mode>)
12525         (mve_vcmphiq_m_n_u<mode>, mve_vcmpleq_m_n_s<mode>)
12526         (mve_vcmpltq_m_n_s<mode>, mve_vcmpneq_m_n_<supf><mode>): Merge
12527         into ...
12528         (@mve_vcmp<mve_cmp_op1>q_m_n_<supf><mode>): ... this.
12529         (mve_vcmpeqq_m_n_f<mode>, mve_vcmpgeq_m_n_f<mode>)
12530         (mve_vcmpgtq_m_n_f<mode>, mve_vcmpleq_m_n_f<mode>)
12531         (mve_vcmpltq_m_n_f<mode>, mve_vcmpneq_m_n_f<mode>): Merge into ...
12532         (@mve_vcmp<mve_cmp_op1>q_m_n_f<mode>): ... this.
12534 2023-05-11  Roger Sayle  <roger@nextmovesoftware.com>
12536         * match.pd <popcount optimizations>: Simplify popcount(X|Y) +
12537         popcount(X&Y) as popcount(X)+popcount(Y).  Likewise, simplify
12538         popcount(X)+popcount(Y)-popcount(X&Y) as popcount(X|Y), and
12539         vice versa.
12541 2023-05-11  Roger Sayle  <roger@nextmovesoftware.com>
12543         * match.pd <popcount optimizations>: Simplify popcount(bswap(x))
12544         as popcount(x).  Simplify popcount(rotate(x,y)) as popcount(x).
12545         <parity optimizations>:  Simplify parity(bswap(x)) as parity(x).
12546         Simplify parity(rotate(x,y)) as parity(x).
12548 2023-05-11  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12550         * config/riscv/autovec.md (@vec_series<mode>): New pattern
12551         * config/riscv/riscv-protos.h (expand_vec_series): New function.
12552         * config/riscv/riscv-v.cc (emit_binop): Ditto.
12553         (emit_index_op): Ditto.
12554         (expand_vec_series): Ditto.
12555         (expand_const_vector): Add series vector handling.
12556         * config/riscv/riscv.cc (riscv_const_insns): Enable series vector for testing.
12558 2023-05-10  Roger Sayle  <roger@nextmovesoftware.com>
12560         * config/i386/i386.md (*concat<mode><dwi>3_1): Use preferred
12561         [(const_int 0)] idiom, instead of [(clobber (const_int 0))].
12562         (*concat<mode><dwi>3_2): Likewise.
12563         (*concat<mode><dwi>3_3): Likewise.
12564         (*concat<mode><dwi>3_4): Likewise.
12565         (*concat<mode><dwi>3_5): Likewise.
12566         (*concat<mode><dwi>3_6): Likewise.
12567         (*concat<mode><dwi>3_7): Likewise.
12569 2023-05-10  Uros Bizjak  <ubizjak@gmail.com>
12571         PR target/92658
12572         * config/i386/mmx.md (sse4_1_<code>v2qiv2si2): New insn pattern.
12573         (<insn>v4qiv4hi2): New expander.
12574         (<insn>v2hiv2si2): Ditto.
12575         (<insn>v2qiv2si2): Ditto.
12576         (<insn>v2qiv2hi2): Ditto.
12578 2023-05-10  Jeff Law  <jlaw@ventanamicro>
12580         * config/h8300/constraints.md (Q): Make this a special memory
12581         constraint.
12582         (Zz): Similarly.
12584 2023-05-10  Jakub Jelinek  <jakub@redhat.com>
12586         PR fortran/109788
12587         * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t)
12588         if t is void_list_node.
12590 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12592         * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode>_insn_le): Delete.
12593         (aarch64_sqmovun<mode>_insn_be): Delete.
12594         (aarch64_sqmovun<mode><vczle><vczbe>): New define_insn.
12595         (aarch64_sqmovun<mode>): Delete expander.
12597 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12599         PR target/99195
12600         * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
12601         Rename to...
12602         (aarch64_<PERMUTE:perm_insn><mode><vczle><vczbe>): ... This.
12603         (aarch64_rev<REVERSE:rev_op><mode>): Rename to...
12604         (aarch64_rev<REVERSE:rev_op><mode><vczle><vczbe>): ... This.
12606 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12608         PR target/99195
12609         * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
12610         Rename to...
12611         (aarch64_<su_optab>q<addsub><mode><vczle><vczbe>): ... This.
12612         (aarch64_<sur>qadd<mode>): Rename to...
12613         (aarch64_<sur>qadd<mode><vczle><vczbe>): ... This.
12615 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12617         * config/aarch64/aarch64-simd.md
12618         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): Delete.
12619         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): Delete.
12620         (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): New define_insn.
12621         (aarch64_<sur>q<r>shr<u>n_n<mode>): Simplify expander.
12623 2023-05-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12625         PR target/99195
12626         * config/aarch64/aarch64-simd.md (aarch64_xtn<mode>_insn_le): Delete.
12627         (aarch64_xtn<mode>_insn_be): Likewise.
12628         (trunc<mode><Vnarrowq>2): Rename to...
12629         (trunc<mode><Vnarrowq>2<vczle><vczbe>): ... This.
12630         (aarch64_xtn<mode>): Move under the above.  Just emit the truncate RTL.
12631         (aarch64_<su>qmovn<mode>): Likewise.
12632         (aarch64_<su>qmovn<mode><vczle><vczbe>): New define_insn.
12633         (aarch64_<su>qmovn<mode>_insn_le): Delete.
12634         (aarch64_<su>qmovn<mode>_insn_be): Likewise.
12636 2023-05-10  Li Xu  <xuli1@eswincomputing.com>
12638         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): For vfmv.f.s/vmv.x.s
12639         intruction replace null avl with (const_int 0).
12641 2023-05-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12643         * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
12644         incorrect codes.
12646 2023-05-10  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
12648         PR target/109773
12649         * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function.
12650         (source_equal_p): Fix dead loop in vsetvl avl checking.
12652 2023-05-10  Hans-Peter Nilsson  <hp@axis.com>
12654         * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
12655         of modeadjusted_dccr.
12657 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12659         * config/arm/arm-mve-builtins-base.cc (vmaxaq, vminaq): New.
12660         * config/arm/arm-mve-builtins-base.def (vmaxaq, vminaq): New.
12661         * config/arm/arm-mve-builtins-base.h (vmaxaq, vminaq): New.
12662         * config/arm/arm-mve-builtins.cc
12663         (function_instance::has_inactive_argument): Handle vmaxaq and
12664         vminaq.
12665         * config/arm/arm_mve.h (vminaq): Remove.
12666         (vmaxaq): Remove.
12667         (vminaq_m): Remove.
12668         (vmaxaq_m): Remove.
12669         (vminaq_s8): Remove.
12670         (vmaxaq_s8): Remove.
12671         (vminaq_s16): Remove.
12672         (vmaxaq_s16): Remove.
12673         (vminaq_s32): Remove.
12674         (vmaxaq_s32): Remove.
12675         (vminaq_m_s8): Remove.
12676         (vmaxaq_m_s8): Remove.
12677         (vminaq_m_s16): Remove.
12678         (vmaxaq_m_s16): Remove.
12679         (vminaq_m_s32): Remove.
12680         (vmaxaq_m_s32): Remove.
12681         (__arm_vminaq_s8): Remove.
12682         (__arm_vmaxaq_s8): Remove.
12683         (__arm_vminaq_s16): Remove.
12684         (__arm_vmaxaq_s16): Remove.
12685         (__arm_vminaq_s32): Remove.
12686         (__arm_vmaxaq_s32): Remove.
12687         (__arm_vminaq_m_s8): Remove.
12688         (__arm_vmaxaq_m_s8): Remove.
12689         (__arm_vminaq_m_s16): Remove.
12690         (__arm_vmaxaq_m_s16): Remove.
12691         (__arm_vminaq_m_s32): Remove.
12692         (__arm_vmaxaq_m_s32): Remove.
12693         (__arm_vminaq): Remove.
12694         (__arm_vmaxaq): Remove.
12695         (__arm_vminaq_m): Remove.
12696         (__arm_vmaxaq_m): Remove.
12698 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12700         * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M):
12701         New.
12702         (mve_insn): Add vmaxa, vmina.
12703         (supf): Add VMAXAQ_S, VMAXAQ_M_S, VMINAQ_S, VMINAQ_M_S.
12704         * config/arm/mve.md (mve_vmaxaq_s<mode>, mve_vminaq_s<mode>):
12705         Merge into ...
12706         (@mve_<mve_insn>q_<supf><mode>): ... this.
12707         (mve_vmaxaq_m_s<mode>, mve_vminaq_m_s<mode>): Merge into ...
12708         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
12710 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12712         * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
12713         * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
12715 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12717         * config/arm/arm-mve-builtins-base.cc (vmaxnmaq, vminnmaq): New.
12718         * config/arm/arm-mve-builtins-base.def (vmaxnmaq, vminnmaq): New.
12719         * config/arm/arm-mve-builtins-base.h (vmaxnmaq, vminnmaq): New.
12720         * config/arm/arm-mve-builtins.cc
12721         (function_instance::has_inactive_argument): Handle vmaxnmaq and
12722         vminnmaq.
12723         * config/arm/arm_mve.h (vminnmaq): Remove.
12724         (vmaxnmaq): Remove.
12725         (vmaxnmaq_m): Remove.
12726         (vminnmaq_m): Remove.
12727         (vminnmaq_f16): Remove.
12728         (vmaxnmaq_f16): Remove.
12729         (vminnmaq_f32): Remove.
12730         (vmaxnmaq_f32): Remove.
12731         (vmaxnmaq_m_f16): Remove.
12732         (vminnmaq_m_f16): Remove.
12733         (vmaxnmaq_m_f32): Remove.
12734         (vminnmaq_m_f32): Remove.
12735         (__arm_vminnmaq_f16): Remove.
12736         (__arm_vmaxnmaq_f16): Remove.
12737         (__arm_vminnmaq_f32): Remove.
12738         (__arm_vmaxnmaq_f32): Remove.
12739         (__arm_vmaxnmaq_m_f16): Remove.
12740         (__arm_vminnmaq_m_f16): Remove.
12741         (__arm_vmaxnmaq_m_f32): Remove.
12742         (__arm_vminnmaq_m_f32): Remove.
12743         (__arm_vminnmaq): Remove.
12744         (__arm_vmaxnmaq): Remove.
12745         (__arm_vmaxnmaq_m): Remove.
12746         (__arm_vminnmaq_m): Remove.
12748 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12750         * config/arm/iterators.md (MVE_VMAXNMA_VMINNMAQ)
12751         (MVE_VMAXNMA_VMINNMAQ_M): New.
12752         (mve_insn): Add vmaxnma, vminnma.
12753         * config/arm/mve.md (mve_vmaxnmaq_f<mode>, mve_vminnmaq_f<mode>):
12754         Merge into ...
12755         (@mve_<mve_insn>q_f<mode>): ... this.
12756         (mve_vmaxnmaq_m_f<mode>, mve_vminnmaq_m_f<mode>): Merge into ...
12757         (@mve_<mve_insn>q_m_f<mode>): ... this.
12759 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12761         * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_F): New.
12762         (vmaxnmavq, vmaxnmvq, vminnmavq, vminnmvq): New.
12763         * config/arm/arm-mve-builtins-base.def (vmaxnmavq, vmaxnmvq)
12764         (vminnmavq, vminnmvq): New.
12765         * config/arm/arm-mve-builtins-base.h (vmaxnmavq, vmaxnmvq)
12766         (vminnmavq, vminnmvq): New.
12767         * config/arm/arm_mve.h (vminnmvq): Remove.
12768         (vminnmavq): Remove.
12769         (vmaxnmvq): Remove.
12770         (vmaxnmavq): Remove.
12771         (vmaxnmavq_p): Remove.
12772         (vmaxnmvq_p): Remove.
12773         (vminnmavq_p): Remove.
12774         (vminnmvq_p): Remove.
12775         (vminnmvq_f16): Remove.
12776         (vminnmavq_f16): Remove.
12777         (vmaxnmvq_f16): Remove.
12778         (vmaxnmavq_f16): Remove.
12779         (vminnmvq_f32): Remove.
12780         (vminnmavq_f32): Remove.
12781         (vmaxnmvq_f32): Remove.
12782         (vmaxnmavq_f32): Remove.
12783         (vmaxnmavq_p_f16): Remove.
12784         (vmaxnmvq_p_f16): Remove.
12785         (vminnmavq_p_f16): Remove.
12786         (vminnmvq_p_f16): Remove.
12787         (vmaxnmavq_p_f32): Remove.
12788         (vmaxnmvq_p_f32): Remove.
12789         (vminnmavq_p_f32): Remove.
12790         (vminnmvq_p_f32): Remove.
12791         (__arm_vminnmvq_f16): Remove.
12792         (__arm_vminnmavq_f16): Remove.
12793         (__arm_vmaxnmvq_f16): Remove.
12794         (__arm_vmaxnmavq_f16): Remove.
12795         (__arm_vminnmvq_f32): Remove.
12796         (__arm_vminnmavq_f32): Remove.
12797         (__arm_vmaxnmvq_f32): Remove.
12798         (__arm_vmaxnmavq_f32): Remove.
12799         (__arm_vmaxnmavq_p_f16): Remove.
12800         (__arm_vmaxnmvq_p_f16): Remove.
12801         (__arm_vminnmavq_p_f16): Remove.
12802         (__arm_vminnmvq_p_f16): Remove.
12803         (__arm_vmaxnmavq_p_f32): Remove.
12804         (__arm_vmaxnmvq_p_f32): Remove.
12805         (__arm_vminnmavq_p_f32): Remove.
12806         (__arm_vminnmvq_p_f32): Remove.
12807         (__arm_vminnmvq): Remove.
12808         (__arm_vminnmavq): Remove.
12809         (__arm_vmaxnmvq): Remove.
12810         (__arm_vmaxnmavq): Remove.
12811         (__arm_vmaxnmavq_p): Remove.
12812         (__arm_vmaxnmvq_p): Remove.
12813         (__arm_vminnmavq_p): Remove.
12814         (__arm_vminnmvq_p): Remove.
12815         (__arm_vmaxnmavq_m): Remove.
12816         (__arm_vmaxnmvq_m): Remove.
12818 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12820         * config/arm/arm-mve-builtins-functions.h
12821         (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
12823 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12825         * config/arm/iterators.md (MVE_VMAXNMxV_MINNMxVQ)
12826         (MVE_VMAXNMxV_MINNMxVQ_P): New.
12827         (mve_insn): Add vmaxnmav, vmaxnmv, vminnmav, vminnmv.
12828         * config/arm/mve.md (mve_vmaxnmavq_f<mode>, mve_vmaxnmvq_f<mode>)
12829         (mve_vminnmavq_f<mode>, mve_vminnmvq_f<mode>): Merge into ...
12830         (@mve_<mve_insn>q_f<mode>): ... this.
12831         (mve_vmaxnmavq_p_f<mode>, mve_vmaxnmvq_p_f<mode>)
12832         (mve_vminnmavq_p_f<mode>, mve_vminnmvq_p_f<mode>): Merge into ...
12833         (@mve_<mve_insn>q_p_f<mode>): ... this.
12835 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12837         * config/arm/arm-mve-builtins-base.cc (vmaxnmq, vminnmq): New.
12838         * config/arm/arm-mve-builtins-base.def (vmaxnmq, vminnmq): New.
12839         * config/arm/arm-mve-builtins-base.h (vmaxnmq, vminnmq): New.
12840         * config/arm/arm_mve.h (vminnmq): Remove.
12841         (vmaxnmq): Remove.
12842         (vmaxnmq_m): Remove.
12843         (vminnmq_m): Remove.
12844         (vminnmq_x): Remove.
12845         (vmaxnmq_x): Remove.
12846         (vminnmq_f16): Remove.
12847         (vmaxnmq_f16): Remove.
12848         (vminnmq_f32): Remove.
12849         (vmaxnmq_f32): Remove.
12850         (vmaxnmq_m_f32): Remove.
12851         (vmaxnmq_m_f16): Remove.
12852         (vminnmq_m_f32): Remove.
12853         (vminnmq_m_f16): Remove.
12854         (vminnmq_x_f16): Remove.
12855         (vminnmq_x_f32): Remove.
12856         (vmaxnmq_x_f16): Remove.
12857         (vmaxnmq_x_f32): Remove.
12858         (__arm_vminnmq_f16): Remove.
12859         (__arm_vmaxnmq_f16): Remove.
12860         (__arm_vminnmq_f32): Remove.
12861         (__arm_vmaxnmq_f32): Remove.
12862         (__arm_vmaxnmq_m_f32): Remove.
12863         (__arm_vmaxnmq_m_f16): Remove.
12864         (__arm_vminnmq_m_f32): Remove.
12865         (__arm_vminnmq_m_f16): Remove.
12866         (__arm_vminnmq_x_f16): Remove.
12867         (__arm_vminnmq_x_f32): Remove.
12868         (__arm_vmaxnmq_x_f16): Remove.
12869         (__arm_vmaxnmq_x_f32): Remove.
12870         (__arm_vminnmq): Remove.
12871         (__arm_vmaxnmq): Remove.
12872         (__arm_vmaxnmq_m): Remove.
12873         (__arm_vminnmq_m): Remove.
12874         (__arm_vminnmq_x): Remove.
12875         (__arm_vmaxnmq_x): Remove.
12877 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12879         * config/arm/iterators.md (MAX_MIN_F): New.
12880         (MVE_FP_M_BINARY): Add VMAXNMQ_M_F, VMINNMQ_M_F.
12881         (mve_insn): Add vmaxnm, vminnm.
12882         (max_min_f_str): New.
12883         * config/arm/mve.md (mve_vmaxnmq_f<mode>, mve_vminnmq_f<mode>):
12884         Merge into ...
12885         (@mve_<max_min_f_str>q_f<mode>): ... this.
12886         (mve_vmaxnmq_m_f<mode>, mve_vminnmq_m_f<mode>): Merge into ...
12887         (@mve_<mve_insn>q_m_f<mode>): ... this.
12889 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12891         * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
12892         (smax<mode>3): Likewise.
12894 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12896         * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_S_U)
12897         (FUNCTION_PRED_P_S): New.
12898         (vmaxavq, vminavq, vmaxvq, vminvq): New.
12899         * config/arm/arm-mve-builtins-base.def (vmaxavq, vminavq, vmaxvq)
12900         (vminvq): New.
12901         * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
12902         (vminvq): New.
12903         * config/arm/arm_mve.h (vminvq): Remove.
12904         (vmaxvq): Remove.
12905         (vminvq_p): Remove.
12906         (vmaxvq_p): Remove.
12907         (vminvq_u8): Remove.
12908         (vmaxvq_u8): Remove.
12909         (vminvq_s8): Remove.
12910         (vmaxvq_s8): Remove.
12911         (vminvq_u16): Remove.
12912         (vmaxvq_u16): Remove.
12913         (vminvq_s16): Remove.
12914         (vmaxvq_s16): Remove.
12915         (vminvq_u32): Remove.
12916         (vmaxvq_u32): Remove.
12917         (vminvq_s32): Remove.
12918         (vmaxvq_s32): Remove.
12919         (vminvq_p_u8): Remove.
12920         (vmaxvq_p_u8): Remove.
12921         (vminvq_p_s8): Remove.
12922         (vmaxvq_p_s8): Remove.
12923         (vminvq_p_u16): Remove.
12924         (vmaxvq_p_u16): Remove.
12925         (vminvq_p_s16): Remove.
12926         (vmaxvq_p_s16): Remove.
12927         (vminvq_p_u32): Remove.
12928         (vmaxvq_p_u32): Remove.
12929         (vminvq_p_s32): Remove.
12930         (vmaxvq_p_s32): Remove.
12931         (__arm_vminvq_u8): Remove.
12932         (__arm_vmaxvq_u8): Remove.
12933         (__arm_vminvq_s8): Remove.
12934         (__arm_vmaxvq_s8): Remove.
12935         (__arm_vminvq_u16): Remove.
12936         (__arm_vmaxvq_u16): Remove.
12937         (__arm_vminvq_s16): Remove.
12938         (__arm_vmaxvq_s16): Remove.
12939         (__arm_vminvq_u32): Remove.
12940         (__arm_vmaxvq_u32): Remove.
12941         (__arm_vminvq_s32): Remove.
12942         (__arm_vmaxvq_s32): Remove.
12943         (__arm_vminvq_p_u8): Remove.
12944         (__arm_vmaxvq_p_u8): Remove.
12945         (__arm_vminvq_p_s8): Remove.
12946         (__arm_vmaxvq_p_s8): Remove.
12947         (__arm_vminvq_p_u16): Remove.
12948         (__arm_vmaxvq_p_u16): Remove.
12949         (__arm_vminvq_p_s16): Remove.
12950         (__arm_vmaxvq_p_s16): Remove.
12951         (__arm_vminvq_p_u32): Remove.
12952         (__arm_vmaxvq_p_u32): Remove.
12953         (__arm_vminvq_p_s32): Remove.
12954         (__arm_vmaxvq_p_s32): Remove.
12955         (__arm_vminvq): Remove.
12956         (__arm_vmaxvq): Remove.
12957         (__arm_vminvq_p): Remove.
12958         (__arm_vmaxvq_p): Remove.
12959         (vminavq): Remove.
12960         (vmaxavq): Remove.
12961         (vminavq_p): Remove.
12962         (vmaxavq_p): Remove.
12963         (vminavq_s8): Remove.
12964         (vmaxavq_s8): Remove.
12965         (vminavq_s16): Remove.
12966         (vmaxavq_s16): Remove.
12967         (vminavq_s32): Remove.
12968         (vmaxavq_s32): Remove.
12969         (vminavq_p_s8): Remove.
12970         (vmaxavq_p_s8): Remove.
12971         (vminavq_p_s16): Remove.
12972         (vmaxavq_p_s16): Remove.
12973         (vminavq_p_s32): Remove.
12974         (vmaxavq_p_s32): Remove.
12975         (__arm_vminavq_s8): Remove.
12976         (__arm_vmaxavq_s8): Remove.
12977         (__arm_vminavq_s16): Remove.
12978         (__arm_vmaxavq_s16): Remove.
12979         (__arm_vminavq_s32): Remove.
12980         (__arm_vmaxavq_s32): Remove.
12981         (__arm_vminavq_p_s8): Remove.
12982         (__arm_vmaxavq_p_s8): Remove.
12983         (__arm_vminavq_p_s16): Remove.
12984         (__arm_vmaxavq_p_s16): Remove.
12985         (__arm_vminavq_p_s32): Remove.
12986         (__arm_vmaxavq_p_s32): Remove.
12987         (__arm_vminavq): Remove.
12988         (__arm_vmaxavq): Remove.
12989         (__arm_vminavq_p): Remove.
12990         (__arm_vmaxavq_p): Remove.
12992 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
12994         * config/arm/iterators.md (MVE_VMAXVQ_VMINVQ, MVE_VMAXVQ_VMINVQ_P): New.
12995         (mve_insn): Add vmaxav, vmaxv, vminav, vminv.
12996         (supf): Add VMAXAVQ_S, VMAXAVQ_P_S, VMINAVQ_S, VMINAVQ_P_S.
12997         * config/arm/mve.md (mve_vmaxavq_s<mode>, mve_vmaxvq_<supf><mode>)
12998         (mve_vminavq_s<mode>, mve_vminvq_<supf><mode>): Merge into ...
12999         (@mve_<mve_insn>q_<supf><mode>): ... this.
13000         (mve_vmaxavq_p_s<mode>, mve_vmaxvq_p_<supf><mode>)
13001         (mve_vminavq_p_s<mode>, mve_vminvq_p_<supf><mode>): Merge into ...
13002         (@mve_<mve_insn>q_p_<supf><mode>): ... this.
13004 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
13006         * config/arm/arm-mve-builtins-functions.h (class
13007         unspec_mve_function_exact_insn_pred_p): New.
13009 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
13011         * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
13012         * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
13014 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
13016         * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
13017         * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
13019 2023-05-09  Richard Sandiford  <richard.sandiford@arm.com>
13021         * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order):
13022         Declare.
13023         * config/aarch64/aarch64.h (REG_ALLOC_ORDER): Define.
13024         (ADJUST_REG_ALLOC_ORDER): Likewise.
13025         * config/aarch64/aarch64.cc (aarch64_adjust_reg_alloc_order): New
13026         function.
13027         * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use
13028         Upa rather than Upl for unpredicated movprfx alternatives.
13030 2023-05-09  Jeff Law  <jlaw@ventanamicro>
13032         * config/h8300/testcompare.md: Add peephole2 which uses a memory
13033         load to set flags, thus eliminating a compare against zero.
13035 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
13037         * config/arm/arm-mve-builtins-base.cc (vshllbq, vshlltq): New.
13038         * config/arm/arm-mve-builtins-base.def (vshllbq, vshlltq): New.
13039         * config/arm/arm-mve-builtins-base.h (vshllbq, vshlltq): New.
13040         * config/arm/arm_mve.h (vshlltq): Remove.
13041         (vshllbq): Remove.
13042         (vshllbq_m): Remove.
13043         (vshlltq_m): Remove.
13044         (vshllbq_x): Remove.
13045         (vshlltq_x): Remove.
13046         (vshlltq_n_u8): Remove.
13047         (vshllbq_n_u8): Remove.
13048         (vshlltq_n_s8): Remove.
13049         (vshllbq_n_s8): Remove.
13050         (vshlltq_n_u16): Remove.
13051         (vshllbq_n_u16): Remove.
13052         (vshlltq_n_s16): Remove.
13053         (vshllbq_n_s16): Remove.
13054         (vshllbq_m_n_s8): Remove.
13055         (vshllbq_m_n_s16): Remove.
13056         (vshllbq_m_n_u8): Remove.
13057         (vshllbq_m_n_u16): Remove.
13058         (vshlltq_m_n_s8): Remove.
13059         (vshlltq_m_n_s16): Remove.
13060         (vshlltq_m_n_u8): Remove.
13061         (vshlltq_m_n_u16): Remove.
13062         (vshllbq_x_n_s8): Remove.
13063         (vshllbq_x_n_s16): Remove.
13064         (vshllbq_x_n_u8): Remove.
13065         (vshllbq_x_n_u16): Remove.
13066         (vshlltq_x_n_s8): Remove.
13067         (vshlltq_x_n_s16): Remove.
13068         (vshlltq_x_n_u8): Remove.
13069         (vshlltq_x_n_u16): Remove.
13070         (__arm_vshlltq_n_u8): Remove.
13071         (__arm_vshllbq_n_u8): Remove.
13072         (__arm_vshlltq_n_s8): Remove.
13073         (__arm_vshllbq_n_s8): Remove.
13074         (__arm_vshlltq_n_u16): Remove.
13075         (__arm_vshllbq_n_u16): Remove.
13076         (__arm_vshlltq_n_s16): Remove.
13077         (__arm_vshllbq_n_s16): Remove.
13078         (__arm_vshllbq_m_n_s8): Remove.
13079         (__arm_vshllbq_m_n_s16): Remove.
13080         (__arm_vshllbq_m_n_u8): Remove.
13081         (__arm_vshllbq_m_n_u16): Remove.
13082         (__arm_vshlltq_m_n_s8): Remove.
13083         (__arm_vshlltq_m_n_s16): Remove.
13084         (__arm_vshlltq_m_n_u8): Remove.
13085         (__arm_vshlltq_m_n_u16): Remove.
13086         (__arm_vshllbq_x_n_s8): Remove.
13087         (__arm_vshllbq_x_n_s16): Remove.
13088         (__arm_vshllbq_x_n_u8): Remove.
13089         (__arm_vshllbq_x_n_u16): Remove.
13090         (__arm_vshlltq_x_n_s8): Remove.
13091         (__arm_vshlltq_x_n_s16): Remove.
13092         (__arm_vshlltq_x_n_u8): Remove.
13093         (__arm_vshlltq_x_n_u16): Remove.
13094         (__arm_vshlltq): Remove.
13095         (__arm_vshllbq): Remove.
13096         (__arm_vshllbq_m): Remove.
13097         (__arm_vshlltq_m): Remove.
13098         (__arm_vshllbq_x): Remove.
13099         (__arm_vshlltq_x): Remove.
13101 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
13103         * config/arm/iterators.md (mve_insn): Add vshllb, vshllt.
13104         (VSHLLBQ_N, VSHLLTQ_N): Remove.
13105         (VSHLLxQ_N): New.
13106         (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
13107         (VSHLLxQ_M_N): New.
13108         * config/arm/mve.md (mve_vshllbq_n_<supf><mode>)
13109         (mve_vshlltq_n_<supf><mode>): Merge into ...
13110         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
13111         (mve_vshllbq_m_n_<supf><mode>, mve_vshlltq_m_n_<supf><mode>):
13112         Merge into ...
13113         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
13115 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
13117         * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
13118         * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
13120 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
13122         * config/arm/arm-mve-builtins-base.cc (vmovnbq, vmovntq, vqmovnbq)
13123         (vqmovntq, vqmovunbq, vqmovuntq): New.
13124         * config/arm/arm-mve-builtins-base.def (vmovnbq, vmovntq)
13125         (vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq): New.
13126         * config/arm/arm-mve-builtins-base.h (vmovnbq, vmovntq, vqmovnbq)
13127         (vqmovntq, vqmovunbq, vqmovuntq): New.
13128         * config/arm/arm-mve-builtins.cc
13129         (function_instance::has_inactive_argument): Handle vmovnbq,
13130         vmovntq, vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq.
13131         * config/arm/arm_mve.h (vqmovntq): Remove.
13132         (vqmovnbq): Remove.
13133         (vqmovnbq_m): Remove.
13134         (vqmovntq_m): Remove.
13135         (vqmovntq_u16): Remove.
13136         (vqmovnbq_u16): Remove.
13137         (vqmovntq_s16): Remove.
13138         (vqmovnbq_s16): Remove.
13139         (vqmovntq_u32): Remove.
13140         (vqmovnbq_u32): Remove.
13141         (vqmovntq_s32): Remove.
13142         (vqmovnbq_s32): Remove.
13143         (vqmovnbq_m_s16): Remove.
13144         (vqmovntq_m_s16): Remove.
13145         (vqmovnbq_m_u16): Remove.
13146         (vqmovntq_m_u16): Remove.
13147         (vqmovnbq_m_s32): Remove.
13148         (vqmovntq_m_s32): Remove.
13149         (vqmovnbq_m_u32): Remove.
13150         (vqmovntq_m_u32): Remove.
13151         (__arm_vqmovntq_u16): Remove.
13152         (__arm_vqmovnbq_u16): Remove.
13153         (__arm_vqmovntq_s16): Remove.
13154         (__arm_vqmovnbq_s16): Remove.
13155         (__arm_vqmovntq_u32): Remove.
13156         (__arm_vqmovnbq_u32): Remove.
13157         (__arm_vqmovntq_s32): Remove.
13158         (__arm_vqmovnbq_s32): Remove.
13159         (__arm_vqmovnbq_m_s16): Remove.
13160         (__arm_vqmovntq_m_s16): Remove.
13161         (__arm_vqmovnbq_m_u16): Remove.
13162         (__arm_vqmovntq_m_u16): Remove.
13163         (__arm_vqmovnbq_m_s32): Remove.
13164         (__arm_vqmovntq_m_s32): Remove.
13165         (__arm_vqmovnbq_m_u32): Remove.
13166         (__arm_vqmovntq_m_u32): Remove.
13167         (__arm_vqmovntq): Remove.
13168         (__arm_vqmovnbq): Remove.
13169         (__arm_vqmovnbq_m): Remove.
13170         (__arm_vqmovntq_m): Remove.
13171         (vmovntq): Remove.
13172         (vmovnbq): Remove.
13173         (vmovnbq_m): Remove.
13174         (vmovntq_m): Remove.
13175         (vmovntq_u16): Remove.
13176         (vmovnbq_u16): Remove.
13177         (vmovntq_s16): Remove.
13178         (vmovnbq_s16): Remove.
13179         (vmovntq_u32): Remove.
13180         (vmovnbq_u32): Remove.
13181         (vmovntq_s32): Remove.
13182         (vmovnbq_s32): Remove.
13183         (vmovnbq_m_s16): Remove.
13184         (vmovntq_m_s16): Remove.
13185         (vmovnbq_m_u16): Remove.
13186         (vmovntq_m_u16): Remove.
13187         (vmovnbq_m_s32): Remove.
13188         (vmovntq_m_s32): Remove.
13189         (vmovnbq_m_u32): Remove.
13190         (vmovntq_m_u32): Remove.
13191         (__arm_vmovntq_u16): Remove.
13192         (__arm_vmovnbq_u16): Remove.
13193         (__arm_vmovntq_s16): Remove.
13194         (__arm_vmovnbq_s16): Remove.
13195         (__arm_vmovntq_u32): Remove.
13196         (__arm_vmovnbq_u32): Remove.
13197         (__arm_vmovntq_s32): Remove.
13198         (__arm_vmovnbq_s32): Remove.
13199         (__arm_vmovnbq_m_s16): Remove.
13200         (__arm_vmovntq_m_s16): Remove.
13201         (__arm_vmovnbq_m_u16): Remove.
13202         (__arm_vmovntq_m_u16): Remove.
13203         (__arm_vmovnbq_m_s32): Remove.
13204         (__arm_vmovntq_m_s32): Remove.
13205         (__arm_vmovnbq_m_u32): Remove.
13206         (__arm_vmovntq_m_u32): Remove.
13207         (__arm_vmovntq): Remove.
13208         (__arm_vmovnbq): Remove.
13209         (__arm_vmovnbq_m): Remove.
13210         (__arm_vmovntq_m): Remove.
13211         (vqmovuntq): Remove.
13212         (vqmovunbq): Remove.
13213         (vqmovunbq_m): Remove.
13214         (vqmovuntq_m): Remove.
13215         (vqmovuntq_s16): Remove.
13216         (vqmovunbq_s16): Remove.
13217         (vqmovuntq_s32): Remove.
13218         (vqmovunbq_s32): Remove.
13219         (vqmovunbq_m_s16): Remove.
13220         (vqmovuntq_m_s16): Remove.
13221         (vqmovunbq_m_s32): Remove.
13222         (vqmovuntq_m_s32): Remove.
13223         (__arm_vqmovuntq_s16): Remove.
13224         (__arm_vqmovunbq_s16): Remove.
13225         (__arm_vqmovuntq_s32): Remove.
13226         (__arm_vqmovunbq_s32): Remove.
13227         (__arm_vqmovunbq_m_s16): Remove.
13228         (__arm_vqmovuntq_m_s16): Remove.
13229         (__arm_vqmovunbq_m_s32): Remove.
13230         (__arm_vqmovuntq_m_s32): Remove.
13231         (__arm_vqmovuntq): Remove.
13232         (__arm_vqmovunbq): Remove.
13233         (__arm_vqmovunbq_m): Remove.
13234         (__arm_vqmovuntq_m): Remove.
13236 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
13238         * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New.
13239         (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb,
13240         vqmovunt.
13241         (isu): Likewise.
13242         (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S,
13243         VQMOVUNTQ_S.
13244         * config/arm/mve.md (mve_vmovnbq_<supf><mode>)
13245         (mve_vmovntq_<supf><mode>, mve_vqmovnbq_<supf><mode>)
13246         (mve_vqmovntq_<supf><mode>, mve_vqmovunbq_s<mode>)
13247         (mve_vqmovuntq_s<mode>): Merge into ...
13248         (@mve_<mve_insn>q_<supf><mode>): ... this.
13249         (mve_vmovnbq_m_<supf><mode>, mve_vmovntq_m_<supf><mode>)
13250         (mve_vqmovnbq_m_<supf><mode>, mve_vqmovntq_m_<supf><mode>)
13251         (mve_vqmovunbq_m_s<mode>, mve_vqmovuntq_m_s<mode>): Merge into ...
13252         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
13254 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
13256         * config/arm/arm-mve-builtins-shapes.cc (binary_move_narrow): New.
13257         (binary_move_narrow_unsigned): New.
13258         * config/arm/arm-mve-builtins-shapes.h (binary_move_narrow): New.
13259         (binary_move_narrow_unsigned): New.
13261 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
13263         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_F): New.
13264         (vrndaq, vrndmq, vrndnq, vrndpq, vrndq, vrndxq): New.
13265         * config/arm/arm-mve-builtins-base.def (vrndaq, vrndmq, vrndnq)
13266         (vrndpq, vrndq, vrndxq): New.
13267         * config/arm/arm-mve-builtins-base.h (vrndaq, vrndmq, vrndnq)
13268         (vrndpq, vrndq, vrndxq): New.
13269         * config/arm/arm_mve.h (vrndxq): Remove.
13270         (vrndq): Remove.
13271         (vrndpq): Remove.
13272         (vrndnq): Remove.
13273         (vrndmq): Remove.
13274         (vrndaq): Remove.
13275         (vrndaq_m): Remove.
13276         (vrndmq_m): Remove.
13277         (vrndnq_m): Remove.
13278         (vrndpq_m): Remove.
13279         (vrndq_m): Remove.
13280         (vrndxq_m): Remove.
13281         (vrndq_x): Remove.
13282         (vrndnq_x): Remove.
13283         (vrndmq_x): Remove.
13284         (vrndpq_x): Remove.
13285         (vrndaq_x): Remove.
13286         (vrndxq_x): Remove.
13287         (vrndxq_f16): Remove.
13288         (vrndxq_f32): Remove.
13289         (vrndq_f16): Remove.
13290         (vrndq_f32): Remove.
13291         (vrndpq_f16): Remove.
13292         (vrndpq_f32): Remove.
13293         (vrndnq_f16): Remove.
13294         (vrndnq_f32): Remove.
13295         (vrndmq_f16): Remove.
13296         (vrndmq_f32): Remove.
13297         (vrndaq_f16): Remove.
13298         (vrndaq_f32): Remove.
13299         (vrndaq_m_f16): Remove.
13300         (vrndmq_m_f16): Remove.
13301         (vrndnq_m_f16): Remove.
13302         (vrndpq_m_f16): Remove.
13303         (vrndq_m_f16): Remove.
13304         (vrndxq_m_f16): Remove.
13305         (vrndaq_m_f32): Remove.
13306         (vrndmq_m_f32): Remove.
13307         (vrndnq_m_f32): Remove.
13308         (vrndpq_m_f32): Remove.
13309         (vrndq_m_f32): Remove.
13310         (vrndxq_m_f32): Remove.
13311         (vrndq_x_f16): Remove.
13312         (vrndq_x_f32): Remove.
13313         (vrndnq_x_f16): Remove.
13314         (vrndnq_x_f32): Remove.
13315         (vrndmq_x_f16): Remove.
13316         (vrndmq_x_f32): Remove.
13317         (vrndpq_x_f16): Remove.
13318         (vrndpq_x_f32): Remove.
13319         (vrndaq_x_f16): Remove.
13320         (vrndaq_x_f32): Remove.
13321         (vrndxq_x_f16): Remove.
13322         (vrndxq_x_f32): Remove.
13323         (__arm_vrndxq_f16): Remove.
13324         (__arm_vrndxq_f32): Remove.
13325         (__arm_vrndq_f16): Remove.
13326         (__arm_vrndq_f32): Remove.
13327         (__arm_vrndpq_f16): Remove.
13328         (__arm_vrndpq_f32): Remove.
13329         (__arm_vrndnq_f16): Remove.
13330         (__arm_vrndnq_f32): Remove.
13331         (__arm_vrndmq_f16): Remove.
13332         (__arm_vrndmq_f32): Remove.
13333         (__arm_vrndaq_f16): Remove.
13334         (__arm_vrndaq_f32): Remove.
13335         (__arm_vrndaq_m_f16): Remove.
13336         (__arm_vrndmq_m_f16): Remove.
13337         (__arm_vrndnq_m_f16): Remove.
13338         (__arm_vrndpq_m_f16): Remove.
13339         (__arm_vrndq_m_f16): Remove.
13340         (__arm_vrndxq_m_f16): Remove.
13341         (__arm_vrndaq_m_f32): Remove.
13342         (__arm_vrndmq_m_f32): Remove.
13343         (__arm_vrndnq_m_f32): Remove.
13344         (__arm_vrndpq_m_f32): Remove.
13345         (__arm_vrndq_m_f32): Remove.
13346         (__arm_vrndxq_m_f32): Remove.
13347         (__arm_vrndq_x_f16): Remove.
13348         (__arm_vrndq_x_f32): Remove.
13349         (__arm_vrndnq_x_f16): Remove.
13350         (__arm_vrndnq_x_f32): Remove.
13351         (__arm_vrndmq_x_f16): Remove.
13352         (__arm_vrndmq_x_f32): Remove.
13353         (__arm_vrndpq_x_f16): Remove.
13354         (__arm_vrndpq_x_f32): Remove.
13355         (__arm_vrndaq_x_f16): Remove.
13356         (__arm_vrndaq_x_f32): Remove.
13357         (__arm_vrndxq_x_f16): Remove.
13358         (__arm_vrndxq_x_f32): Remove.
13359         (__arm_vrndxq): Remove.
13360         (__arm_vrndq): Remove.
13361         (__arm_vrndpq): Remove.
13362         (__arm_vrndnq): Remove.
13363         (__arm_vrndmq): Remove.
13364         (__arm_vrndaq): Remove.
13365         (__arm_vrndaq_m): Remove.
13366         (__arm_vrndmq_m): Remove.
13367         (__arm_vrndnq_m): Remove.
13368         (__arm_vrndpq_m): Remove.
13369         (__arm_vrndq_m): Remove.
13370         (__arm_vrndxq_m): Remove.
13371         (__arm_vrndq_x): Remove.
13372         (__arm_vrndnq_x): Remove.
13373         (__arm_vrndmq_x): Remove.
13374         (__arm_vrndpq_x): Remove.
13375         (__arm_vrndaq_x): Remove.
13376         (__arm_vrndxq_x): Remove.
13378 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
13380         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N_NO_U_F): New.
13381         (vabsq, vnegq, vclsq, vclzq, vqabsq, vqnegq): New.
13382         * config/arm/arm-mve-builtins-base.def (vabsq, vnegq, vclsq)
13383         (vclzq, vqabsq, vqnegq): New.
13384         * config/arm/arm-mve-builtins-base.h (vabsq, vnegq, vclsq, vclzq)
13385         (vqabsq, vqnegq): New.
13386         * config/arm/arm_mve.h (vabsq): Remove.
13387         (vabsq_m): Remove.
13388         (vabsq_x): Remove.
13389         (vabsq_f16): Remove.
13390         (vabsq_f32): Remove.
13391         (vabsq_s8): Remove.
13392         (vabsq_s16): Remove.
13393         (vabsq_s32): Remove.
13394         (vabsq_m_s8): Remove.
13395         (vabsq_m_s16): Remove.
13396         (vabsq_m_s32): Remove.
13397         (vabsq_m_f16): Remove.
13398         (vabsq_m_f32): Remove.
13399         (vabsq_x_s8): Remove.
13400         (vabsq_x_s16): Remove.
13401         (vabsq_x_s32): Remove.
13402         (vabsq_x_f16): Remove.
13403         (vabsq_x_f32): Remove.
13404         (__arm_vabsq_s8): Remove.
13405         (__arm_vabsq_s16): Remove.
13406         (__arm_vabsq_s32): Remove.
13407         (__arm_vabsq_m_s8): Remove.
13408         (__arm_vabsq_m_s16): Remove.
13409         (__arm_vabsq_m_s32): Remove.
13410         (__arm_vabsq_x_s8): Remove.
13411         (__arm_vabsq_x_s16): Remove.
13412         (__arm_vabsq_x_s32): Remove.
13413         (__arm_vabsq_f16): Remove.
13414         (__arm_vabsq_f32): Remove.
13415         (__arm_vabsq_m_f16): Remove.
13416         (__arm_vabsq_m_f32): Remove.
13417         (__arm_vabsq_x_f16): Remove.
13418         (__arm_vabsq_x_f32): Remove.
13419         (__arm_vabsq): Remove.
13420         (__arm_vabsq_m): Remove.
13421         (__arm_vabsq_x): Remove.
13422         (vnegq): Remove.
13423         (vnegq_m): Remove.
13424         (vnegq_x): Remove.
13425         (vnegq_f16): Remove.
13426         (vnegq_f32): Remove.
13427         (vnegq_s8): Remove.
13428         (vnegq_s16): Remove.
13429         (vnegq_s32): Remove.
13430         (vnegq_m_s8): Remove.
13431         (vnegq_m_s16): Remove.
13432         (vnegq_m_s32): Remove.
13433         (vnegq_m_f16): Remove.
13434         (vnegq_m_f32): Remove.
13435         (vnegq_x_s8): Remove.
13436         (vnegq_x_s16): Remove.
13437         (vnegq_x_s32): Remove.
13438         (vnegq_x_f16): Remove.
13439         (vnegq_x_f32): Remove.
13440         (__arm_vnegq_s8): Remove.
13441         (__arm_vnegq_s16): Remove.
13442         (__arm_vnegq_s32): Remove.
13443         (__arm_vnegq_m_s8): Remove.
13444         (__arm_vnegq_m_s16): Remove.
13445         (__arm_vnegq_m_s32): Remove.
13446         (__arm_vnegq_x_s8): Remove.
13447         (__arm_vnegq_x_s16): Remove.
13448         (__arm_vnegq_x_s32): Remove.
13449         (__arm_vnegq_f16): Remove.
13450         (__arm_vnegq_f32): Remove.
13451         (__arm_vnegq_m_f16): Remove.
13452         (__arm_vnegq_m_f32): Remove.
13453         (__arm_vnegq_x_f16): Remove.
13454         (__arm_vnegq_x_f32): Remove.
13455         (__arm_vnegq): Remove.
13456         (__arm_vnegq_m): Remove.
13457         (__arm_vnegq_x): Remove.
13458         (vclsq): Remove.
13459         (vclsq_m): Remove.
13460         (vclsq_x): Remove.
13461         (vclsq_s8): Remove.
13462         (vclsq_s16): Remove.
13463         (vclsq_s32): Remove.
13464         (vclsq_m_s8): Remove.
13465         (vclsq_m_s16): Remove.
13466         (vclsq_m_s32): Remove.
13467         (vclsq_x_s8): Remove.
13468         (vclsq_x_s16): Remove.
13469         (vclsq_x_s32): Remove.
13470         (__arm_vclsq_s8): Remove.
13471         (__arm_vclsq_s16): Remove.
13472         (__arm_vclsq_s32): Remove.
13473         (__arm_vclsq_m_s8): Remove.
13474         (__arm_vclsq_m_s16): Remove.
13475         (__arm_vclsq_m_s32): Remove.
13476         (__arm_vclsq_x_s8): Remove.
13477         (__arm_vclsq_x_s16): Remove.
13478         (__arm_vclsq_x_s32): Remove.
13479         (__arm_vclsq): Remove.
13480         (__arm_vclsq_m): Remove.
13481         (__arm_vclsq_x): Remove.
13482         (vclzq): Remove.
13483         (vclzq_m): Remove.
13484         (vclzq_x): Remove.
13485         (vclzq_s8): Remove.
13486         (vclzq_s16): Remove.
13487         (vclzq_s32): Remove.
13488         (vclzq_u8): Remove.
13489         (vclzq_u16): Remove.
13490         (vclzq_u32): Remove.
13491         (vclzq_m_u8): Remove.
13492         (vclzq_m_s8): Remove.
13493         (vclzq_m_u16): Remove.
13494         (vclzq_m_s16): Remove.
13495         (vclzq_m_u32): Remove.
13496         (vclzq_m_s32): Remove.
13497         (vclzq_x_s8): Remove.
13498         (vclzq_x_s16): Remove.
13499         (vclzq_x_s32): Remove.
13500         (vclzq_x_u8): Remove.
13501         (vclzq_x_u16): Remove.
13502         (vclzq_x_u32): Remove.
13503         (__arm_vclzq_s8): Remove.
13504         (__arm_vclzq_s16): Remove.
13505         (__arm_vclzq_s32): Remove.
13506         (__arm_vclzq_u8): Remove.
13507         (__arm_vclzq_u16): Remove.
13508         (__arm_vclzq_u32): Remove.
13509         (__arm_vclzq_m_u8): Remove.
13510         (__arm_vclzq_m_s8): Remove.
13511         (__arm_vclzq_m_u16): Remove.
13512         (__arm_vclzq_m_s16): Remove.
13513         (__arm_vclzq_m_u32): Remove.
13514         (__arm_vclzq_m_s32): Remove.
13515         (__arm_vclzq_x_s8): Remove.
13516         (__arm_vclzq_x_s16): Remove.
13517         (__arm_vclzq_x_s32): Remove.
13518         (__arm_vclzq_x_u8): Remove.
13519         (__arm_vclzq_x_u16): Remove.
13520         (__arm_vclzq_x_u32): Remove.
13521         (__arm_vclzq): Remove.
13522         (__arm_vclzq_m): Remove.
13523         (__arm_vclzq_x): Remove.
13524         (vqabsq): Remove.
13525         (vqnegq): Remove.
13526         (vqnegq_m): Remove.
13527         (vqabsq_m): Remove.
13528         (vqabsq_s8): Remove.
13529         (vqabsq_s16): Remove.
13530         (vqabsq_s32): Remove.
13531         (vqnegq_s8): Remove.
13532         (vqnegq_s16): Remove.
13533         (vqnegq_s32): Remove.
13534         (vqnegq_m_s8): Remove.
13535         (vqabsq_m_s8): Remove.
13536         (vqnegq_m_s16): Remove.
13537         (vqabsq_m_s16): Remove.
13538         (vqnegq_m_s32): Remove.
13539         (vqabsq_m_s32): Remove.
13540         (__arm_vqabsq_s8): Remove.
13541         (__arm_vqabsq_s16): Remove.
13542         (__arm_vqabsq_s32): Remove.
13543         (__arm_vqnegq_s8): Remove.
13544         (__arm_vqnegq_s16): Remove.
13545         (__arm_vqnegq_s32): Remove.
13546         (__arm_vqnegq_m_s8): Remove.
13547         (__arm_vqabsq_m_s8): Remove.
13548         (__arm_vqnegq_m_s16): Remove.
13549         (__arm_vqabsq_m_s16): Remove.
13550         (__arm_vqnegq_m_s32): Remove.
13551         (__arm_vqabsq_m_s32): Remove.
13552         (__arm_vqabsq): Remove.
13553         (__arm_vqnegq): Remove.
13554         (__arm_vqnegq_m): Remove.
13555         (__arm_vqabsq_m): Remove.
13557 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
13559         * config/arm/iterators.md (MVE_INT_M_UNARY, MVE_INT_UNARY)
13560         (MVE_FP_UNARY, MVE_FP_M_UNARY): New.
13561         (mve_insn): Add vabs, vcls, vclz, vneg, vqabs, vqneg, vrnda,
13562         vrndm, vrndn, vrndp, vrnd, vrndx.
13563         (isu): Add VABSQ_M_S, VCLSQ_M_S, VCLZQ_M_S, VCLZQ_M_U, VNEGQ_M_S,
13564         VQABSQ_M_S, VQNEGQ_M_S.
13565         (mve_mnemo): New.
13566         * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrndxq_f<mode>)
13567         (mve_vrndq_f<mode>, mve_vrndpq_f<mode>, mve_vrndnq_f<mode>)
13568         (mve_vrndmq_f<mode>, mve_vrndaq_f<mode>): Merge into ...
13569         (@mve_<mve_insn>q_f<mode>): ... this.
13570         (mve_vnegq_f<mode>, mve_vabsq_f<mode>): Merge into ...
13571         (mve_v<absneg_str>q_f<mode>): ... this.
13572         (mve_vnegq_s<mode>, mve_vabsq_s<mode>): Merge into ...
13573         (mve_v<absneg_str>q_s<mode>): ... this.
13574         (mve_vclsq_s<mode>, mve_vqnegq_s<mode>, mve_vqabsq_s<mode>): Merge into ...
13575         (@mve_<mve_insn>q_<supf><mode>): ... this.
13576         (mve_vabsq_m_s<mode>, mve_vclsq_m_s<mode>)
13577         (mve_vclzq_m_<supf><mode>, mve_vnegq_m_s<mode>)
13578         (mve_vqabsq_m_s<mode>, mve_vqnegq_m_s<mode>): Merge into ...
13579         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
13580         (mve_vabsq_m_f<mode>, mve_vnegq_m_f<mode>, mve_vrndaq_m_f<mode>)
13581         (mve_vrndmq_m_f<mode>, mve_vrndnq_m_f<mode>, mve_vrndpq_m_f<mode>)
13582         (mve_vrndxq_m_f<mode>): Merge into ...
13583         (@mve_<mve_insn>q_m_f<mode>): ... this.
13585 2023-05-09  Christophe Lyon  <christophe.lyon@arm.com>
13587         * config/arm/arm-mve-builtins-shapes.cc (unary): New.
13588         * config/arm/arm-mve-builtins-shapes.h (unary): New.
13590 2023-05-09  Jakub Jelinek  <jakub@redhat.com>
13592         * mux-utils.h: Fix comment typo, avoides -> avoids.
13594 2023-05-09  Jakub Jelinek  <jakub@redhat.com>
13596         PR tree-optimization/109778
13597         * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on
13598         wi::zext (x, width) rather than x if width != precision, rather
13599         than using wi::zext (right, width) after the shift.
13600         * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results
13601         of wi::lrotate or wi::rrotate.
13603 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
13605         * genmatch.cc (get_out_file): Make static and rename to ...
13606         (choose_output): ... this. Reimplement. Update all uses ...
13607         (decision_tree::gen): ... here and ...
13608         (main): ... here.
13610 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
13612         * genmatch.cc (showUsage): Reimplement as ...
13613         (usage): ...this.  Adjust all uses.
13614         (main): Print usage when no arguments.  Add missing 'return 1'.
13616 2023-05-09  Alexander Monakov  <amonakov@ispras.ru>
13618         * genmatch.cc (header_file): Make static.
13619         (emit_func): Rename to...
13620         (fp_decl): ... this.  Adjust all uses.
13621         (fp_decl_done): New function.  Use it...
13622         (decision_tree::gen): ... here and...
13623         (write_predicate): ... here.
13624         (main): Adjust.
13626 2023-05-09  Richard Sandiford  <richard.sandiford@arm.com>
13628         * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
13629         earlyclobbers.
13631 2023-05-08  Roger Sayle  <roger@nextmovesoftware.com>
13632             Uros Bizjak  <ubizjak@gmail.com>
13634         * config/i386/i386.md (any_or_plus): Move definition earlier.
13635         (*insvti_highpart_1): New define_insn_and_split to overwrite
13636         (insv) the highpart of a TImode register/memory.
13638 2023-05-08  Eugene Rozenfeld  <erozen@microsoft.com>
13640         * auto-profile.cc (auto_profile): Check todo from early_inline
13641         to see if cleanup_tree_vfg needs to be called.
13642         (early_inline): Return todo from early_inliner.
13644 2023-05-08  Kito Cheng  <kito.cheng@sifive.com>
13646         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info):
13647         New.
13648         (pass_vsetvl::get_block_info): New.
13649         (pass_vsetvl::update_vector_info): New.
13650         (pass_vsetvl::simple_vsetvl): Use get_vector_info.
13651         (pass_vsetvl::compute_local_backward_infos): Ditto.
13652         (pass_vsetvl::transfer_before): Ditto.
13653         (pass_vsetvl::transfer_after): Ditto.
13654         (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
13655         (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
13656         (pass_vsetvl::cleanup_insns): Ditto.
13657         (pass_vsetvl::compute_local_backward_infos): Use
13658         update_vector_info.
13660 2023-05-08  Jeff Law  <jlaw@ventanamicro>
13662         * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
13664 2023-05-08  Richard Biener  <rguenther@suse.de>
13665             Michael Meissner  <meissner@linux.ibm.com>
13667         PR middle-end/108623
13668         * tree-core.h (tree_type_common): Bump up precision field to 16 bits.
13669         Align bit fields > 1 bit to at least an 8-bit boundary.
13671 2023-05-08  Andrew Pinski  <apinski@marvell.com>
13673         PR tree-optimization/109424
13674         PR tree-optimization/59424
13675         * tree-ssa-phiopt.cc (factor_out_conditional_conversion): Rename to ...
13676         (factor_out_conditional_operation): This and add support for all unary
13677         operations.
13678         (pass_phiopt::execute): Update call to factor_out_conditional_conversion
13679         to call factor_out_conditional_operation instead.
13681 2023-05-08  Andrew Pinski  <apinski@marvell.com>
13683         * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
13684         over factor_out_conditional_conversion.
13686 2023-05-08  Andrew Pinski  <apinski@marvell.com>
13688         PR tree-optimization/49959
13689         PR tree-optimization/103771
13690         * tree-ssa-phiopt.cc (pass_phiopt::execute): Support
13691         Diamond shapped bb form for factor_out_conditional_conversion.
13693 2023-05-08  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13695         * config/riscv/autovec.md (movmisalign<mode>): New pattern.
13696         * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): Delete.
13697         (riscv_vector_get_mask_mode): Ditto.
13698         (get_mask_policy_no_pred): Ditto.
13699         (get_tail_policy_no_pred): Ditto.
13700         (get_mask_mode): New function.
13701         * config/riscv/riscv-v.cc (get_mask_policy_no_pred): Delete.
13702         (get_tail_policy_no_pred): Ditto.
13703         (riscv_vector_mask_mode_p): Ditto.
13704         (riscv_vector_get_mask_mode): Ditto.
13705         (get_mask_mode): New function.
13706         * config/riscv/riscv-vector-builtins.cc (use_real_merge_p): Remove
13707         global extern.
13708         (get_tail_policy_for_pred): Ditto.
13709         * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred): Ditto.
13710         (get_mask_policy_for_pred): Ditto
13711         * config/riscv/riscv.cc (riscv_get_mask_mode): Refine codes.
13713 2023-05-08  Kito Cheng  <kito.cheng@sifive.com>
13715         * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi): New.
13716         (riscv_select_multilib): New.
13717         (riscv_compute_multilib): Extract logic to riscv_select_multilib and
13718         also handle select_by_abi.
13719         * config/riscv/elf.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Change it
13720         to select_by_abi_arch_cmodel from 1.
13721         * config/riscv/linux.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Define.
13722         * config/riscv/riscv-opts.h (enum riscv_multilib_select_kind): New.
13724 2023-05-08  Alexander Monakov  <amonakov@ispras.ru>
13726         * Makefile.in: (gimple-match-head.o-warn): Remove.
13727         (GIMPLE_MATCH_PD_SEQ_SRC): Do not depend on
13728         gimple-match-exports.cc.
13729         (gimple-match-auto.h): Only depend on s-gimple-match.
13730         (generic-match-auto.h): Likewise.
13732 2023-05-08  Andrew Pinski  <apinski@marvell.com>
13734         PR tree-optimization/109691
13735         * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
13736         argument.
13737         If the removed statement can throw, have need_eh_cleanup
13738         include the bb of that statement.
13739         * tree-ssa-dce.h (simple_dce_from_worklist): Update declaration.
13740         * tree-ssa-propagate.cc (struct prop_stats_d): Remove
13741         num_dce.
13742         (substitute_and_fold_dom_walker::substitute_and_fold_dom_walker):
13743         Initialize dceworklist instead of stmts_to_remove.
13744         (substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker):
13745         Destore dceworklist instead of stmts_to_remove.
13746         (substitute_and_fold_dom_walker::before_dom_children):
13747         Set dceworklist instead of adding to stmts_to_remove.
13748         (substitute_and_fold_engine::substitute_and_fold):
13749         Call simple_dce_from_worklist instead of poping
13750         from the list.
13751         Don't update the stat on removal statements.
13753 2023-05-07  Andrew Pinski  <apinski@marvell.com>
13755         PR target/109762
13756         * config/aarch64/aarch64-builtins.cc (aarch64_simd_switcher::aarch64_simd_switcher):
13757         Change argument type to aarch64_feature_flags.
13758         * config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Change
13759         constructor argument type to aarch64_feature_flags.
13760         Change m_old_asm_isa_flags to be aarch64_feature_flags.
13762 2023-05-07  Jiufu Guo  <guojiufu@linux.ibm.com>
13764         * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
13765         more parallel code if can_create_pseudo_p.
13767 2023-05-07  Roger Sayle  <roger@nextmovesoftware.com>
13769         PR target/43644
13770         * lower-subreg.cc (resolve_simple_move): Don't emit a clobber
13771         immediately before moving a multi-word register by parts.
13773 2023-05-06  Jeff Law  <jlaw@ventanamicro>
13775         * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
13777 2023-05-06  Michael Collison  <collison@rivosinc.com>
13779         * tree-vect-slp.cc (can_duplicate_and_interleave_p):
13780         Check that GET_MODE_NUNITS is a multiple of 2.
13782 2023-05-06  Michael Collison  <collison@rivosinc.com>
13784         * config/riscv/riscv.cc
13785         (riscv_estimated_poly_value): Implement
13786         TARGET_ESTIMATED_POLY_VALUE.
13787         (riscv_preferred_simd_mode): Implement
13788         TARGET_VECTORIZE_PREFERRED_SIMD_MODE.
13789         (riscv_get_mask_mode): Implement TARGET_VECTORIZE_GET_MASK_MODE.
13790         (riscv_empty_mask_is_expensive): Implement
13791         TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE.
13792         (riscv_vectorize_create_costs): Implement
13793         TARGET_VECTORIZE_CREATE_COSTS.
13794         (riscv_support_vector_misalignment): Implement
13795         TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT.
13796         (TARGET_ESTIMATED_POLY_VALUE): Register target macro.
13797         (TARGET_VECTORIZE_GET_MASK_MODE): Ditto.
13798         (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Ditto.
13799         (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
13801 2023-05-06  Jeff Law  <jlaw@ventanamicro>
13803         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
13804         duplicate definition.
13806 2023-05-06  Michael Collison  <collison@rivosinc.com>
13808         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): New function.
13809         (riscv_vector_preferred_simd_mode): Ditto.
13810         (get_mask_policy_no_pred): Ditto.
13811         (get_tail_policy_no_pred): Ditto.
13812         (riscv_vector_mask_mode_p): Ditto.
13813         (riscv_vector_get_mask_mode): Ditto.
13815 2023-05-06  Michael Collison  <collison@rivosinc.com>
13817         * config/riscv/riscv-vector-builtins.cc (get_tail_policy_for_pred):
13818         Remove static declaration to to make externally visible.
13819         (get_mask_policy_for_pred): Ditto.
13820         * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred):
13821         New external declaration.
13822         (get_mask_policy_for_pred): Ditto.
13824 2023-05-06  Michael Collison  <collison@rivosinc.com>
13826         * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): New.
13827         (riscv_vector_get_mask_mode): Ditto.
13828         (get_mask_policy_no_pred): Ditto.
13829         (get_tail_policy_no_pred): Ditto.
13831 2023-05-06  Xi Ruoyao  <xry111@xry111.site>
13833         * config/loongarch/loongarch.h (struct machine_function): Add
13834         reg_is_wrapped_separately array for register wrapping
13835         information.
13836         * config/loongarch/loongarch.cc
13837         (loongarch_get_separate_components): New function.
13838         (loongarch_components_for_bb): Likewise.
13839         (loongarch_disqualify_components): Likewise.
13840         (loongarch_process_components): Likewise.
13841         (loongarch_emit_prologue_components): Likewise.
13842         (loongarch_emit_epilogue_components): Likewise.
13843         (loongarch_set_handled_components): Likewise.
13844         (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define.
13845         (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise.
13846         (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise.
13847         (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise.
13848         (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise.
13849         (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise.
13850         (loongarch_for_each_saved_reg): Skip registers that are wrapped
13851         separately.
13853 2023-05-06  Xi Ruoyao  <xry111@xry111.site>
13855         PR other/109522
13856         * Makefile.in (s-macro_list): Pass -nostdinc to
13857         $(GCC_FOR_TARGET).
13859 2023-05-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13861         * config/riscv/riscv-protos.h (preferred_simd_mode): New function.
13862         * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto.
13863         (preferred_simd_mode): Ditto.
13864         * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function arg.
13865         (riscv_convert_vector_bits): Adjust for RVV auto-vectorization.
13866         (riscv_preferred_simd_mode): New function.
13867         (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): New target hook support.
13868         * config/riscv/vector.md: Add autovec.md.
13869         * config/riscv/autovec.md: New file.
13871 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
13873         * real.h (dconst_pi): Define.
13874         (dconst_e_ptr): Formatting fix.
13875         (dconst_pi_ptr): Declare.
13876         * real.cc (dconst_pi_ptr): New function.
13877         * gimple-range-op.cc (cfn_sincos::fold_range): Intersect the generic
13878         boundaries range with range computed from sin/cos of the particular
13879         bounds if the argument range is shorter than 2*pi.
13880         (cfn_sincos::op1_range): Take bulps into account when determining
13881         which result ranges are always invalid or behave like known NAN.
13883 2023-05-06  Aldy Hernandez  <aldyh@redhat.com>
13885         * gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not
13886         pass type to vrange_storage::equal_p.
13887         * value-range-storage.cc (vrange_storage::equal_p): Remove type.
13888         (irange_storage::equal_p): Same.
13889         (frange_storage::equal_p): Same.
13890         * value-range-storage.h (class frange_storage): Same.
13892 2023-05-06  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
13894         PR target/109748
13895         * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it.
13896         (pass_vsetvl::local_eliminate_vsetvl_insn): New function.
13898 2023-05-06  liuhongt  <hongtao.liu@intel.com>
13900         * combine.cc (maybe_swap_commutative_operands): Canonicalize
13901         vec_merge when mask is constant.
13902         * doc/md.texi: Document vec_merge canonicalization.
13904 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
13906         * value-range.h (frange_arithmetic): Declare.
13907         * range-op-float.cc (frange_arithmetic): No longer static.
13908         * gimple-range-op.cc (frange_mpfr_arg1): New function.
13909         (cfn_sqrt::fold_range): Intersect the generic boundaries range
13910         with range computed from sqrt of the particular bounds.
13911         (cfn_sqrt::op1_range): Intersect the generic boundaries range
13912         with range computed from squared particular bounds.
13914 2023-05-06  Jakub Jelinek  <jakub@redhat.com>
13916         * Makefile.in (check_p_numbers): Rename to one_to_9999, move
13917         earlier with helper variables also renamed.
13918         (MATCH_SPLUT_SEQ): Use $(wordlist 1,$(NUM_MATCH_SPLITS),$(one_to_9999))
13919         instead of $(shell seq 1 $(NUM_MATCH_SPLITS)).
13920         (check_p_subdirs): Use $(one_to_9999) instead of $(check_p_numbers).
13922 2023-05-06  Hans-Peter Nilsson  <hp@axis.com>
13924         * config/cris/cris.md (splitop): Add PLUS.
13925         * config/cris/cris.cc (cris_split_constant): Also handle
13926         PLUS when a split into two insns may be useful.
13928 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
13930         * config/cris/cris.md (movandsplit1): New define_peephole2.
13932 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
13934         * config/cris/cris.md (lsrandsplit1): New define_peephole2.
13936 2023-05-05  Hans-Peter Nilsson  <hp@axis.com>
13938         * doc/md.texi (define_peephole2): Document order of scanning.
13940 2023-05-05  Pan Li  <pan2.li@intel.com>
13941             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
13943         * config/riscv/vector.md: Allow const as the operand of RVV
13944         indexed load/store.
13946 2023-05-05  Pan Li  <pan2.li@intel.com>
13948         * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
13949         consumed by simplify_rtx.
13951 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
13953         * config/arm/arm-mve-builtins-base.cc (vrshrq, vshrq): New.
13954         * config/arm/arm-mve-builtins-base.def (vrshrq, vshrq): New.
13955         * config/arm/arm-mve-builtins-base.h (vrshrq, vshrq): New.
13956         * config/arm/arm_mve.h (vshrq): Remove.
13957         (vrshrq): Remove.
13958         (vrshrq_m): Remove.
13959         (vshrq_m): Remove.
13960         (vrshrq_x): Remove.
13961         (vshrq_x): Remove.
13962         (vshrq_n_s8): Remove.
13963         (vshrq_n_s16): Remove.
13964         (vshrq_n_s32): Remove.
13965         (vshrq_n_u8): Remove.
13966         (vshrq_n_u16): Remove.
13967         (vshrq_n_u32): Remove.
13968         (vrshrq_n_u8): Remove.
13969         (vrshrq_n_s8): Remove.
13970         (vrshrq_n_u16): Remove.
13971         (vrshrq_n_s16): Remove.
13972         (vrshrq_n_u32): Remove.
13973         (vrshrq_n_s32): Remove.
13974         (vrshrq_m_n_s8): Remove.
13975         (vrshrq_m_n_s32): Remove.
13976         (vrshrq_m_n_s16): Remove.
13977         (vrshrq_m_n_u8): Remove.
13978         (vrshrq_m_n_u32): Remove.
13979         (vrshrq_m_n_u16): Remove.
13980         (vshrq_m_n_s8): Remove.
13981         (vshrq_m_n_s32): Remove.
13982         (vshrq_m_n_s16): Remove.
13983         (vshrq_m_n_u8): Remove.
13984         (vshrq_m_n_u32): Remove.
13985         (vshrq_m_n_u16): Remove.
13986         (vrshrq_x_n_s8): Remove.
13987         (vrshrq_x_n_s16): Remove.
13988         (vrshrq_x_n_s32): Remove.
13989         (vrshrq_x_n_u8): Remove.
13990         (vrshrq_x_n_u16): Remove.
13991         (vrshrq_x_n_u32): Remove.
13992         (vshrq_x_n_s8): Remove.
13993         (vshrq_x_n_s16): Remove.
13994         (vshrq_x_n_s32): Remove.
13995         (vshrq_x_n_u8): Remove.
13996         (vshrq_x_n_u16): Remove.
13997         (vshrq_x_n_u32): Remove.
13998         (__arm_vshrq_n_s8): Remove.
13999         (__arm_vshrq_n_s16): Remove.
14000         (__arm_vshrq_n_s32): Remove.
14001         (__arm_vshrq_n_u8): Remove.
14002         (__arm_vshrq_n_u16): Remove.
14003         (__arm_vshrq_n_u32): Remove.
14004         (__arm_vrshrq_n_u8): Remove.
14005         (__arm_vrshrq_n_s8): Remove.
14006         (__arm_vrshrq_n_u16): Remove.
14007         (__arm_vrshrq_n_s16): Remove.
14008         (__arm_vrshrq_n_u32): Remove.
14009         (__arm_vrshrq_n_s32): Remove.
14010         (__arm_vrshrq_m_n_s8): Remove.
14011         (__arm_vrshrq_m_n_s32): Remove.
14012         (__arm_vrshrq_m_n_s16): Remove.
14013         (__arm_vrshrq_m_n_u8): Remove.
14014         (__arm_vrshrq_m_n_u32): Remove.
14015         (__arm_vrshrq_m_n_u16): Remove.
14016         (__arm_vshrq_m_n_s8): Remove.
14017         (__arm_vshrq_m_n_s32): Remove.
14018         (__arm_vshrq_m_n_s16): Remove.
14019         (__arm_vshrq_m_n_u8): Remove.
14020         (__arm_vshrq_m_n_u32): Remove.
14021         (__arm_vshrq_m_n_u16): Remove.
14022         (__arm_vrshrq_x_n_s8): Remove.
14023         (__arm_vrshrq_x_n_s16): Remove.
14024         (__arm_vrshrq_x_n_s32): Remove.
14025         (__arm_vrshrq_x_n_u8): Remove.
14026         (__arm_vrshrq_x_n_u16): Remove.
14027         (__arm_vrshrq_x_n_u32): Remove.
14028         (__arm_vshrq_x_n_s8): Remove.
14029         (__arm_vshrq_x_n_s16): Remove.
14030         (__arm_vshrq_x_n_s32): Remove.
14031         (__arm_vshrq_x_n_u8): Remove.
14032         (__arm_vshrq_x_n_u16): Remove.
14033         (__arm_vshrq_x_n_u32): Remove.
14034         (__arm_vshrq): Remove.
14035         (__arm_vrshrq): Remove.
14036         (__arm_vrshrq_m): Remove.
14037         (__arm_vshrq_m): Remove.
14038         (__arm_vrshrq_x): Remove.
14039         (__arm_vshrq_x): Remove.
14041 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14043         * config/arm/iterators.md (MVE_VSHRQ_M_N, MVE_VSHRQ_N): New.
14044         (mve_insn): Add vrshr, vshr.
14045         * config/arm/mve.md (mve_vshrq_n_<supf><mode>)
14046         (mve_vrshrq_n_<supf><mode>): Merge into ...
14047         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
14048         (mve_vrshrq_m_n_<supf><mode>, mve_vshrq_m_n_<supf><mode>): Merge
14049         into ...
14050         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14052 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14054         * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
14055         * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
14057 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14059         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_U_F): New.
14060         (vqshrunbq, vqshruntq, vqrshrunbq, vqrshruntq): New.
14061         * config/arm/arm-mve-builtins-base.def (vqshrunbq, vqshruntq)
14062         (vqrshrunbq, vqrshruntq): New.
14063         * config/arm/arm-mve-builtins-base.h (vqshrunbq, vqshruntq)
14064         (vqrshrunbq, vqrshruntq): New.
14065         * config/arm/arm-mve-builtins.cc
14066         (function_instance::has_inactive_argument): Handle vqshrunbq,
14067         vqshruntq, vqrshrunbq, vqrshruntq.
14068         * config/arm/arm_mve.h (vqrshrunbq): Remove.
14069         (vqrshruntq): Remove.
14070         (vqrshrunbq_m): Remove.
14071         (vqrshruntq_m): Remove.
14072         (vqrshrunbq_n_s16): Remove.
14073         (vqrshrunbq_n_s32): Remove.
14074         (vqrshruntq_n_s16): Remove.
14075         (vqrshruntq_n_s32): Remove.
14076         (vqrshrunbq_m_n_s32): Remove.
14077         (vqrshrunbq_m_n_s16): Remove.
14078         (vqrshruntq_m_n_s32): Remove.
14079         (vqrshruntq_m_n_s16): Remove.
14080         (__arm_vqrshrunbq_n_s16): Remove.
14081         (__arm_vqrshrunbq_n_s32): Remove.
14082         (__arm_vqrshruntq_n_s16): Remove.
14083         (__arm_vqrshruntq_n_s32): Remove.
14084         (__arm_vqrshrunbq_m_n_s32): Remove.
14085         (__arm_vqrshrunbq_m_n_s16): Remove.
14086         (__arm_vqrshruntq_m_n_s32): Remove.
14087         (__arm_vqrshruntq_m_n_s16): Remove.
14088         (__arm_vqrshrunbq): Remove.
14089         (__arm_vqrshruntq): Remove.
14090         (__arm_vqrshrunbq_m): Remove.
14091         (__arm_vqrshruntq_m): Remove.
14092         (vqshrunbq): Remove.
14093         (vqshruntq): Remove.
14094         (vqshrunbq_m): Remove.
14095         (vqshruntq_m): Remove.
14096         (vqshrunbq_n_s16): Remove.
14097         (vqshruntq_n_s16): Remove.
14098         (vqshrunbq_n_s32): Remove.
14099         (vqshruntq_n_s32): Remove.
14100         (vqshrunbq_m_n_s32): Remove.
14101         (vqshrunbq_m_n_s16): Remove.
14102         (vqshruntq_m_n_s32): Remove.
14103         (vqshruntq_m_n_s16): Remove.
14104         (__arm_vqshrunbq_n_s16): Remove.
14105         (__arm_vqshruntq_n_s16): Remove.
14106         (__arm_vqshrunbq_n_s32): Remove.
14107         (__arm_vqshruntq_n_s32): Remove.
14108         (__arm_vqshrunbq_m_n_s32): Remove.
14109         (__arm_vqshrunbq_m_n_s16): Remove.
14110         (__arm_vqshruntq_m_n_s32): Remove.
14111         (__arm_vqshruntq_m_n_s16): Remove.
14112         (__arm_vqshrunbq): Remove.
14113         (__arm_vqshruntq): Remove.
14114         (__arm_vqshrunbq_m): Remove.
14115         (__arm_vqshruntq_m): Remove.
14117 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14119         * config/arm/iterators.md (MVE_SHRN_N): Add VQRSHRUNBQ,
14120         VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
14121         (MVE_SHRN_M_N): Likewise.
14122         (mve_insn): Add vqrshrunb, vqrshrunt, vqshrunb, vqshrunt.
14123         (isu): Add VQRSHRUNBQ, VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
14124         (supf): Likewise.
14125         * config/arm/mve.md (mve_vqrshrunbq_n_s<mode>): Remove.
14126         (mve_vqrshruntq_n_s<mode>): Remove.
14127         (mve_vqshrunbq_n_s<mode>): Remove.
14128         (mve_vqshruntq_n_s<mode>): Remove.
14129         (mve_vqrshrunbq_m_n_s<mode>): Remove.
14130         (mve_vqrshruntq_m_n_s<mode>): Remove.
14131         (mve_vqshrunbq_m_n_s<mode>): Remove.
14132         (mve_vqshruntq_m_n_s<mode>): Remove.
14134 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14136         * config/arm/arm-mve-builtins-shapes.cc
14137         (binary_rshift_narrow_unsigned): New.
14138         * config/arm/arm-mve-builtins-shapes.h
14139         (binary_rshift_narrow_unsigned): New.
14141 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14143         * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_F): New.
14144         (vshrnbq, vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq)
14145         (vqrshrnbq, vqrshrntq): New.
14146         * config/arm/arm-mve-builtins-base.def (vshrnbq, vshrntq)
14147         (vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq):
14148         New.
14149         * config/arm/arm-mve-builtins-base.h (vshrnbq, vshrntq, vrshrnbq)
14150         (vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq): New.
14151         * config/arm/arm-mve-builtins.cc
14152         (function_instance::has_inactive_argument): Handle vshrnbq,
14153         vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq,
14154         vqrshrntq.
14155         * config/arm/arm_mve.h (vshrnbq): Remove.
14156         (vshrntq): Remove.
14157         (vshrnbq_m): Remove.
14158         (vshrntq_m): Remove.
14159         (vshrnbq_n_s16): Remove.
14160         (vshrntq_n_s16): Remove.
14161         (vshrnbq_n_u16): Remove.
14162         (vshrntq_n_u16): Remove.
14163         (vshrnbq_n_s32): Remove.
14164         (vshrntq_n_s32): Remove.
14165         (vshrnbq_n_u32): Remove.
14166         (vshrntq_n_u32): Remove.
14167         (vshrnbq_m_n_s32): Remove.
14168         (vshrnbq_m_n_s16): Remove.
14169         (vshrnbq_m_n_u32): Remove.
14170         (vshrnbq_m_n_u16): Remove.
14171         (vshrntq_m_n_s32): Remove.
14172         (vshrntq_m_n_s16): Remove.
14173         (vshrntq_m_n_u32): Remove.
14174         (vshrntq_m_n_u16): Remove.
14175         (__arm_vshrnbq_n_s16): Remove.
14176         (__arm_vshrntq_n_s16): Remove.
14177         (__arm_vshrnbq_n_u16): Remove.
14178         (__arm_vshrntq_n_u16): Remove.
14179         (__arm_vshrnbq_n_s32): Remove.
14180         (__arm_vshrntq_n_s32): Remove.
14181         (__arm_vshrnbq_n_u32): Remove.
14182         (__arm_vshrntq_n_u32): Remove.
14183         (__arm_vshrnbq_m_n_s32): Remove.
14184         (__arm_vshrnbq_m_n_s16): Remove.
14185         (__arm_vshrnbq_m_n_u32): Remove.
14186         (__arm_vshrnbq_m_n_u16): Remove.
14187         (__arm_vshrntq_m_n_s32): Remove.
14188         (__arm_vshrntq_m_n_s16): Remove.
14189         (__arm_vshrntq_m_n_u32): Remove.
14190         (__arm_vshrntq_m_n_u16): Remove.
14191         (__arm_vshrnbq): Remove.
14192         (__arm_vshrntq): Remove.
14193         (__arm_vshrnbq_m): Remove.
14194         (__arm_vshrntq_m): Remove.
14195         (vrshrnbq): Remove.
14196         (vrshrntq): Remove.
14197         (vrshrnbq_m): Remove.
14198         (vrshrntq_m): Remove.
14199         (vrshrnbq_n_s16): Remove.
14200         (vrshrntq_n_s16): Remove.
14201         (vrshrnbq_n_u16): Remove.
14202         (vrshrntq_n_u16): Remove.
14203         (vrshrnbq_n_s32): Remove.
14204         (vrshrntq_n_s32): Remove.
14205         (vrshrnbq_n_u32): Remove.
14206         (vrshrntq_n_u32): Remove.
14207         (vrshrnbq_m_n_s32): Remove.
14208         (vrshrnbq_m_n_s16): Remove.
14209         (vrshrnbq_m_n_u32): Remove.
14210         (vrshrnbq_m_n_u16): Remove.
14211         (vrshrntq_m_n_s32): Remove.
14212         (vrshrntq_m_n_s16): Remove.
14213         (vrshrntq_m_n_u32): Remove.
14214         (vrshrntq_m_n_u16): Remove.
14215         (__arm_vrshrnbq_n_s16): Remove.
14216         (__arm_vrshrntq_n_s16): Remove.
14217         (__arm_vrshrnbq_n_u16): Remove.
14218         (__arm_vrshrntq_n_u16): Remove.
14219         (__arm_vrshrnbq_n_s32): Remove.
14220         (__arm_vrshrntq_n_s32): Remove.
14221         (__arm_vrshrnbq_n_u32): Remove.
14222         (__arm_vrshrntq_n_u32): Remove.
14223         (__arm_vrshrnbq_m_n_s32): Remove.
14224         (__arm_vrshrnbq_m_n_s16): Remove.
14225         (__arm_vrshrnbq_m_n_u32): Remove.
14226         (__arm_vrshrnbq_m_n_u16): Remove.
14227         (__arm_vrshrntq_m_n_s32): Remove.
14228         (__arm_vrshrntq_m_n_s16): Remove.
14229         (__arm_vrshrntq_m_n_u32): Remove.
14230         (__arm_vrshrntq_m_n_u16): Remove.
14231         (__arm_vrshrnbq): Remove.
14232         (__arm_vrshrntq): Remove.
14233         (__arm_vrshrnbq_m): Remove.
14234         (__arm_vrshrntq_m): Remove.
14235         (vqshrnbq): Remove.
14236         (vqshrntq): Remove.
14237         (vqshrnbq_m): Remove.
14238         (vqshrntq_m): Remove.
14239         (vqshrnbq_n_s16): Remove.
14240         (vqshrntq_n_s16): Remove.
14241         (vqshrnbq_n_u16): Remove.
14242         (vqshrntq_n_u16): Remove.
14243         (vqshrnbq_n_s32): Remove.
14244         (vqshrntq_n_s32): Remove.
14245         (vqshrnbq_n_u32): Remove.
14246         (vqshrntq_n_u32): Remove.
14247         (vqshrnbq_m_n_s32): Remove.
14248         (vqshrnbq_m_n_s16): Remove.
14249         (vqshrnbq_m_n_u32): Remove.
14250         (vqshrnbq_m_n_u16): Remove.
14251         (vqshrntq_m_n_s32): Remove.
14252         (vqshrntq_m_n_s16): Remove.
14253         (vqshrntq_m_n_u32): Remove.
14254         (vqshrntq_m_n_u16): Remove.
14255         (__arm_vqshrnbq_n_s16): Remove.
14256         (__arm_vqshrntq_n_s16): Remove.
14257         (__arm_vqshrnbq_n_u16): Remove.
14258         (__arm_vqshrntq_n_u16): Remove.
14259         (__arm_vqshrnbq_n_s32): Remove.
14260         (__arm_vqshrntq_n_s32): Remove.
14261         (__arm_vqshrnbq_n_u32): Remove.
14262         (__arm_vqshrntq_n_u32): Remove.
14263         (__arm_vqshrnbq_m_n_s32): Remove.
14264         (__arm_vqshrnbq_m_n_s16): Remove.
14265         (__arm_vqshrnbq_m_n_u32): Remove.
14266         (__arm_vqshrnbq_m_n_u16): Remove.
14267         (__arm_vqshrntq_m_n_s32): Remove.
14268         (__arm_vqshrntq_m_n_s16): Remove.
14269         (__arm_vqshrntq_m_n_u32): Remove.
14270         (__arm_vqshrntq_m_n_u16): Remove.
14271         (__arm_vqshrnbq): Remove.
14272         (__arm_vqshrntq): Remove.
14273         (__arm_vqshrnbq_m): Remove.
14274         (__arm_vqshrntq_m): Remove.
14275         (vqrshrnbq): Remove.
14276         (vqrshrntq): Remove.
14277         (vqrshrnbq_m): Remove.
14278         (vqrshrntq_m): Remove.
14279         (vqrshrnbq_n_s16): Remove.
14280         (vqrshrnbq_n_u16): Remove.
14281         (vqrshrnbq_n_s32): Remove.
14282         (vqrshrnbq_n_u32): Remove.
14283         (vqrshrntq_n_s16): Remove.
14284         (vqrshrntq_n_u16): Remove.
14285         (vqrshrntq_n_s32): Remove.
14286         (vqrshrntq_n_u32): Remove.
14287         (vqrshrnbq_m_n_s32): Remove.
14288         (vqrshrnbq_m_n_s16): Remove.
14289         (vqrshrnbq_m_n_u32): Remove.
14290         (vqrshrnbq_m_n_u16): Remove.
14291         (vqrshrntq_m_n_s32): Remove.
14292         (vqrshrntq_m_n_s16): Remove.
14293         (vqrshrntq_m_n_u32): Remove.
14294         (vqrshrntq_m_n_u16): Remove.
14295         (__arm_vqrshrnbq_n_s16): Remove.
14296         (__arm_vqrshrnbq_n_u16): Remove.
14297         (__arm_vqrshrnbq_n_s32): Remove.
14298         (__arm_vqrshrnbq_n_u32): Remove.
14299         (__arm_vqrshrntq_n_s16): Remove.
14300         (__arm_vqrshrntq_n_u16): Remove.
14301         (__arm_vqrshrntq_n_s32): Remove.
14302         (__arm_vqrshrntq_n_u32): Remove.
14303         (__arm_vqrshrnbq_m_n_s32): Remove.
14304         (__arm_vqrshrnbq_m_n_s16): Remove.
14305         (__arm_vqrshrnbq_m_n_u32): Remove.
14306         (__arm_vqrshrnbq_m_n_u16): Remove.
14307         (__arm_vqrshrntq_m_n_s32): Remove.
14308         (__arm_vqrshrntq_m_n_s16): Remove.
14309         (__arm_vqrshrntq_m_n_u32): Remove.
14310         (__arm_vqrshrntq_m_n_u16): Remove.
14311         (__arm_vqrshrnbq): Remove.
14312         (__arm_vqrshrntq): Remove.
14313         (__arm_vqrshrnbq_m): Remove.
14314         (__arm_vqrshrntq_m): Remove.
14316 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14318         * config/arm/iterators.md (MVE_SHRN_N, MVE_SHRN_M_N): New.
14319         (mve_insn): Add vqrshrnb, vqrshrnt, vqshrnb, vqshrnt, vrshrnb,
14320         vrshrnt, vshrnb, vshrnt.
14321         (isu): New.
14322         * config/arm/mve.md (mve_vqrshrnbq_n_<supf><mode>)
14323         (mve_vqrshrntq_n_<supf><mode>, mve_vqshrnbq_n_<supf><mode>)
14324         (mve_vqshrntq_n_<supf><mode>, mve_vrshrnbq_n_<supf><mode>)
14325         (mve_vrshrntq_n_<supf><mode>, mve_vshrnbq_n_<supf><mode>)
14326         (mve_vshrntq_n_<supf><mode>): Merge into ...
14327         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
14328         (mve_vqrshrnbq_m_n_<supf><mode>, mve_vqrshrntq_m_n_<supf><mode>)
14329         (mve_vqshrnbq_m_n_<supf><mode>, mve_vqshrntq_m_n_<supf><mode>)
14330         (mve_vrshrnbq_m_n_<supf><mode>, mve_vrshrntq_m_n_<supf><mode>)
14331         (mve_vshrnbq_m_n_<supf><mode>, mve_vshrntq_m_n_<supf><mode>):
14332         Merge into ...
14333         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14335 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14337         * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow):
14338         New.
14339         * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New.
14341 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14343         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_NO_F): New.
14344         (vmaxq, vminq): New.
14345         * config/arm/arm-mve-builtins-base.def (vmaxq, vminq): New.
14346         * config/arm/arm-mve-builtins-base.h (vmaxq, vminq): New.
14347         * config/arm/arm_mve.h (vminq): Remove.
14348         (vmaxq): Remove.
14349         (vmaxq_m): Remove.
14350         (vminq_m): Remove.
14351         (vminq_x): Remove.
14352         (vmaxq_x): Remove.
14353         (vminq_u8): Remove.
14354         (vmaxq_u8): Remove.
14355         (vminq_s8): Remove.
14356         (vmaxq_s8): Remove.
14357         (vminq_u16): Remove.
14358         (vmaxq_u16): Remove.
14359         (vminq_s16): Remove.
14360         (vmaxq_s16): Remove.
14361         (vminq_u32): Remove.
14362         (vmaxq_u32): Remove.
14363         (vminq_s32): Remove.
14364         (vmaxq_s32): Remove.
14365         (vmaxq_m_s8): Remove.
14366         (vmaxq_m_s32): Remove.
14367         (vmaxq_m_s16): Remove.
14368         (vmaxq_m_u8): Remove.
14369         (vmaxq_m_u32): Remove.
14370         (vmaxq_m_u16): Remove.
14371         (vminq_m_s8): Remove.
14372         (vminq_m_s32): Remove.
14373         (vminq_m_s16): Remove.
14374         (vminq_m_u8): Remove.
14375         (vminq_m_u32): Remove.
14376         (vminq_m_u16): Remove.
14377         (vminq_x_s8): Remove.
14378         (vminq_x_s16): Remove.
14379         (vminq_x_s32): Remove.
14380         (vminq_x_u8): Remove.
14381         (vminq_x_u16): Remove.
14382         (vminq_x_u32): Remove.
14383         (vmaxq_x_s8): Remove.
14384         (vmaxq_x_s16): Remove.
14385         (vmaxq_x_s32): Remove.
14386         (vmaxq_x_u8): Remove.
14387         (vmaxq_x_u16): Remove.
14388         (vmaxq_x_u32): Remove.
14389         (__arm_vminq_u8): Remove.
14390         (__arm_vmaxq_u8): Remove.
14391         (__arm_vminq_s8): Remove.
14392         (__arm_vmaxq_s8): Remove.
14393         (__arm_vminq_u16): Remove.
14394         (__arm_vmaxq_u16): Remove.
14395         (__arm_vminq_s16): Remove.
14396         (__arm_vmaxq_s16): Remove.
14397         (__arm_vminq_u32): Remove.
14398         (__arm_vmaxq_u32): Remove.
14399         (__arm_vminq_s32): Remove.
14400         (__arm_vmaxq_s32): Remove.
14401         (__arm_vmaxq_m_s8): Remove.
14402         (__arm_vmaxq_m_s32): Remove.
14403         (__arm_vmaxq_m_s16): Remove.
14404         (__arm_vmaxq_m_u8): Remove.
14405         (__arm_vmaxq_m_u32): Remove.
14406         (__arm_vmaxq_m_u16): Remove.
14407         (__arm_vminq_m_s8): Remove.
14408         (__arm_vminq_m_s32): Remove.
14409         (__arm_vminq_m_s16): Remove.
14410         (__arm_vminq_m_u8): Remove.
14411         (__arm_vminq_m_u32): Remove.
14412         (__arm_vminq_m_u16): Remove.
14413         (__arm_vminq_x_s8): Remove.
14414         (__arm_vminq_x_s16): Remove.
14415         (__arm_vminq_x_s32): Remove.
14416         (__arm_vminq_x_u8): Remove.
14417         (__arm_vminq_x_u16): Remove.
14418         (__arm_vminq_x_u32): Remove.
14419         (__arm_vmaxq_x_s8): Remove.
14420         (__arm_vmaxq_x_s16): Remove.
14421         (__arm_vmaxq_x_s32): Remove.
14422         (__arm_vmaxq_x_u8): Remove.
14423         (__arm_vmaxq_x_u16): Remove.
14424         (__arm_vmaxq_x_u32): Remove.
14425         (__arm_vminq): Remove.
14426         (__arm_vmaxq): Remove.
14427         (__arm_vmaxq_m): Remove.
14428         (__arm_vminq_m): Remove.
14429         (__arm_vminq_x): Remove.
14430         (__arm_vmaxq_x): Remove.
14432 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14434         * config/arm/iterators.md (MAX_MIN_SU): New.
14435         (max_min_su_str): New.
14436         (max_min_supf): New.
14437         * config/arm/mve.md (mve_vmaxq_s<mode>, mve_vmaxq_u<mode>)
14438         (mve_vminq_s<mode>, mve_vminq_u<mode>): Merge into ...
14439         (mve_<max_min_su_str>q_<max_min_supf><mode>): ... this.
14441 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14443         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_R): New.
14444         (vqshlq, vshlq): New.
14445         * config/arm/arm-mve-builtins-base.def (vqshlq, vshlq): New.
14446         * config/arm/arm-mve-builtins-base.h (vqshlq, vshlq): New.
14447         * config/arm/arm_mve.h (vshlq): Remove.
14448         (vshlq_r): Remove.
14449         (vshlq_n): Remove.
14450         (vshlq_m_r): Remove.
14451         (vshlq_m): Remove.
14452         (vshlq_m_n): Remove.
14453         (vshlq_x): Remove.
14454         (vshlq_x_n): Remove.
14455         (vshlq_s8): Remove.
14456         (vshlq_s16): Remove.
14457         (vshlq_s32): Remove.
14458         (vshlq_u8): Remove.
14459         (vshlq_u16): Remove.
14460         (vshlq_u32): Remove.
14461         (vshlq_r_u8): Remove.
14462         (vshlq_n_u8): Remove.
14463         (vshlq_r_s8): Remove.
14464         (vshlq_n_s8): Remove.
14465         (vshlq_r_u16): Remove.
14466         (vshlq_n_u16): Remove.
14467         (vshlq_r_s16): Remove.
14468         (vshlq_n_s16): Remove.
14469         (vshlq_r_u32): Remove.
14470         (vshlq_n_u32): Remove.
14471         (vshlq_r_s32): Remove.
14472         (vshlq_n_s32): Remove.
14473         (vshlq_m_r_u8): Remove.
14474         (vshlq_m_r_s8): Remove.
14475         (vshlq_m_r_u16): Remove.
14476         (vshlq_m_r_s16): Remove.
14477         (vshlq_m_r_u32): Remove.
14478         (vshlq_m_r_s32): Remove.
14479         (vshlq_m_u8): Remove.
14480         (vshlq_m_s8): Remove.
14481         (vshlq_m_u16): Remove.
14482         (vshlq_m_s16): Remove.
14483         (vshlq_m_u32): Remove.
14484         (vshlq_m_s32): Remove.
14485         (vshlq_m_n_s8): Remove.
14486         (vshlq_m_n_s32): Remove.
14487         (vshlq_m_n_s16): Remove.
14488         (vshlq_m_n_u8): Remove.
14489         (vshlq_m_n_u32): Remove.
14490         (vshlq_m_n_u16): Remove.
14491         (vshlq_x_s8): Remove.
14492         (vshlq_x_s16): Remove.
14493         (vshlq_x_s32): Remove.
14494         (vshlq_x_u8): Remove.
14495         (vshlq_x_u16): Remove.
14496         (vshlq_x_u32): Remove.
14497         (vshlq_x_n_s8): Remove.
14498         (vshlq_x_n_s16): Remove.
14499         (vshlq_x_n_s32): Remove.
14500         (vshlq_x_n_u8): Remove.
14501         (vshlq_x_n_u16): Remove.
14502         (vshlq_x_n_u32): Remove.
14503         (__arm_vshlq_s8): Remove.
14504         (__arm_vshlq_s16): Remove.
14505         (__arm_vshlq_s32): Remove.
14506         (__arm_vshlq_u8): Remove.
14507         (__arm_vshlq_u16): Remove.
14508         (__arm_vshlq_u32): Remove.
14509         (__arm_vshlq_r_u8): Remove.
14510         (__arm_vshlq_n_u8): Remove.
14511         (__arm_vshlq_r_s8): Remove.
14512         (__arm_vshlq_n_s8): Remove.
14513         (__arm_vshlq_r_u16): Remove.
14514         (__arm_vshlq_n_u16): Remove.
14515         (__arm_vshlq_r_s16): Remove.
14516         (__arm_vshlq_n_s16): Remove.
14517         (__arm_vshlq_r_u32): Remove.
14518         (__arm_vshlq_n_u32): Remove.
14519         (__arm_vshlq_r_s32): Remove.
14520         (__arm_vshlq_n_s32): Remove.
14521         (__arm_vshlq_m_r_u8): Remove.
14522         (__arm_vshlq_m_r_s8): Remove.
14523         (__arm_vshlq_m_r_u16): Remove.
14524         (__arm_vshlq_m_r_s16): Remove.
14525         (__arm_vshlq_m_r_u32): Remove.
14526         (__arm_vshlq_m_r_s32): Remove.
14527         (__arm_vshlq_m_u8): Remove.
14528         (__arm_vshlq_m_s8): Remove.
14529         (__arm_vshlq_m_u16): Remove.
14530         (__arm_vshlq_m_s16): Remove.
14531         (__arm_vshlq_m_u32): Remove.
14532         (__arm_vshlq_m_s32): Remove.
14533         (__arm_vshlq_m_n_s8): Remove.
14534         (__arm_vshlq_m_n_s32): Remove.
14535         (__arm_vshlq_m_n_s16): Remove.
14536         (__arm_vshlq_m_n_u8): Remove.
14537         (__arm_vshlq_m_n_u32): Remove.
14538         (__arm_vshlq_m_n_u16): Remove.
14539         (__arm_vshlq_x_s8): Remove.
14540         (__arm_vshlq_x_s16): Remove.
14541         (__arm_vshlq_x_s32): Remove.
14542         (__arm_vshlq_x_u8): Remove.
14543         (__arm_vshlq_x_u16): Remove.
14544         (__arm_vshlq_x_u32): Remove.
14545         (__arm_vshlq_x_n_s8): Remove.
14546         (__arm_vshlq_x_n_s16): Remove.
14547         (__arm_vshlq_x_n_s32): Remove.
14548         (__arm_vshlq_x_n_u8): Remove.
14549         (__arm_vshlq_x_n_u16): Remove.
14550         (__arm_vshlq_x_n_u32): Remove.
14551         (__arm_vshlq): Remove.
14552         (__arm_vshlq_r): Remove.
14553         (__arm_vshlq_n): Remove.
14554         (__arm_vshlq_m_r): Remove.
14555         (__arm_vshlq_m): Remove.
14556         (__arm_vshlq_m_n): Remove.
14557         (__arm_vshlq_x): Remove.
14558         (__arm_vshlq_x_n): Remove.
14559         (vqshlq): Remove.
14560         (vqshlq_r): Remove.
14561         (vqshlq_n): Remove.
14562         (vqshlq_m_r): Remove.
14563         (vqshlq_m_n): Remove.
14564         (vqshlq_m): Remove.
14565         (vqshlq_u8): Remove.
14566         (vqshlq_r_u8): Remove.
14567         (vqshlq_n_u8): Remove.
14568         (vqshlq_s8): Remove.
14569         (vqshlq_r_s8): Remove.
14570         (vqshlq_n_s8): Remove.
14571         (vqshlq_u16): Remove.
14572         (vqshlq_r_u16): Remove.
14573         (vqshlq_n_u16): Remove.
14574         (vqshlq_s16): Remove.
14575         (vqshlq_r_s16): Remove.
14576         (vqshlq_n_s16): Remove.
14577         (vqshlq_u32): Remove.
14578         (vqshlq_r_u32): Remove.
14579         (vqshlq_n_u32): Remove.
14580         (vqshlq_s32): Remove.
14581         (vqshlq_r_s32): Remove.
14582         (vqshlq_n_s32): Remove.
14583         (vqshlq_m_r_u8): Remove.
14584         (vqshlq_m_r_s8): Remove.
14585         (vqshlq_m_r_u16): Remove.
14586         (vqshlq_m_r_s16): Remove.
14587         (vqshlq_m_r_u32): Remove.
14588         (vqshlq_m_r_s32): Remove.
14589         (vqshlq_m_n_s8): Remove.
14590         (vqshlq_m_n_s32): Remove.
14591         (vqshlq_m_n_s16): Remove.
14592         (vqshlq_m_n_u8): Remove.
14593         (vqshlq_m_n_u32): Remove.
14594         (vqshlq_m_n_u16): Remove.
14595         (vqshlq_m_s8): Remove.
14596         (vqshlq_m_s32): Remove.
14597         (vqshlq_m_s16): Remove.
14598         (vqshlq_m_u8): Remove.
14599         (vqshlq_m_u32): Remove.
14600         (vqshlq_m_u16): Remove.
14601         (__arm_vqshlq_u8): Remove.
14602         (__arm_vqshlq_r_u8): Remove.
14603         (__arm_vqshlq_n_u8): Remove.
14604         (__arm_vqshlq_s8): Remove.
14605         (__arm_vqshlq_r_s8): Remove.
14606         (__arm_vqshlq_n_s8): Remove.
14607         (__arm_vqshlq_u16): Remove.
14608         (__arm_vqshlq_r_u16): Remove.
14609         (__arm_vqshlq_n_u16): Remove.
14610         (__arm_vqshlq_s16): Remove.
14611         (__arm_vqshlq_r_s16): Remove.
14612         (__arm_vqshlq_n_s16): Remove.
14613         (__arm_vqshlq_u32): Remove.
14614         (__arm_vqshlq_r_u32): Remove.
14615         (__arm_vqshlq_n_u32): Remove.
14616         (__arm_vqshlq_s32): Remove.
14617         (__arm_vqshlq_r_s32): Remove.
14618         (__arm_vqshlq_n_s32): Remove.
14619         (__arm_vqshlq_m_r_u8): Remove.
14620         (__arm_vqshlq_m_r_s8): Remove.
14621         (__arm_vqshlq_m_r_u16): Remove.
14622         (__arm_vqshlq_m_r_s16): Remove.
14623         (__arm_vqshlq_m_r_u32): Remove.
14624         (__arm_vqshlq_m_r_s32): Remove.
14625         (__arm_vqshlq_m_n_s8): Remove.
14626         (__arm_vqshlq_m_n_s32): Remove.
14627         (__arm_vqshlq_m_n_s16): Remove.
14628         (__arm_vqshlq_m_n_u8): Remove.
14629         (__arm_vqshlq_m_n_u32): Remove.
14630         (__arm_vqshlq_m_n_u16): Remove.
14631         (__arm_vqshlq_m_s8): Remove.
14632         (__arm_vqshlq_m_s32): Remove.
14633         (__arm_vqshlq_m_s16): Remove.
14634         (__arm_vqshlq_m_u8): Remove.
14635         (__arm_vqshlq_m_u32): Remove.
14636         (__arm_vqshlq_m_u16): Remove.
14637         (__arm_vqshlq): Remove.
14638         (__arm_vqshlq_r): Remove.
14639         (__arm_vqshlq_n): Remove.
14640         (__arm_vqshlq_m_r): Remove.
14641         (__arm_vqshlq_m_n): Remove.
14642         (__arm_vqshlq_m): Remove.
14644 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14646         * config/arm/arm-mve-builtins-functions.h (class
14647         unspec_mve_function_exact_insn_vshl): New.
14649 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14651         * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
14652         * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
14654 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14656         * config/arm/arm-mve-builtins.cc (has_inactive_argument)
14657         (finish_opt_n_resolution): Handle MODE_r.
14658         * config/arm/arm-mve-builtins.def (r): New mode.
14660 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14662         * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
14663         * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
14665 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14667         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): New.
14668         (vabdq): New.
14669         * config/arm/arm-mve-builtins-base.def (vabdq): New.
14670         * config/arm/arm-mve-builtins-base.h (vabdq): New.
14671         * config/arm/arm_mve.h (vabdq): Remove.
14672         (vabdq_m): Remove.
14673         (vabdq_x): Remove.
14674         (vabdq_u8): Remove.
14675         (vabdq_s8): Remove.
14676         (vabdq_u16): Remove.
14677         (vabdq_s16): Remove.
14678         (vabdq_u32): Remove.
14679         (vabdq_s32): Remove.
14680         (vabdq_f16): Remove.
14681         (vabdq_f32): Remove.
14682         (vabdq_m_s8): Remove.
14683         (vabdq_m_s32): Remove.
14684         (vabdq_m_s16): Remove.
14685         (vabdq_m_u8): Remove.
14686         (vabdq_m_u32): Remove.
14687         (vabdq_m_u16): Remove.
14688         (vabdq_m_f32): Remove.
14689         (vabdq_m_f16): Remove.
14690         (vabdq_x_s8): Remove.
14691         (vabdq_x_s16): Remove.
14692         (vabdq_x_s32): Remove.
14693         (vabdq_x_u8): Remove.
14694         (vabdq_x_u16): Remove.
14695         (vabdq_x_u32): Remove.
14696         (vabdq_x_f16): Remove.
14697         (vabdq_x_f32): Remove.
14698         (__arm_vabdq_u8): Remove.
14699         (__arm_vabdq_s8): Remove.
14700         (__arm_vabdq_u16): Remove.
14701         (__arm_vabdq_s16): Remove.
14702         (__arm_vabdq_u32): Remove.
14703         (__arm_vabdq_s32): Remove.
14704         (__arm_vabdq_m_s8): Remove.
14705         (__arm_vabdq_m_s32): Remove.
14706         (__arm_vabdq_m_s16): Remove.
14707         (__arm_vabdq_m_u8): Remove.
14708         (__arm_vabdq_m_u32): Remove.
14709         (__arm_vabdq_m_u16): Remove.
14710         (__arm_vabdq_x_s8): Remove.
14711         (__arm_vabdq_x_s16): Remove.
14712         (__arm_vabdq_x_s32): Remove.
14713         (__arm_vabdq_x_u8): Remove.
14714         (__arm_vabdq_x_u16): Remove.
14715         (__arm_vabdq_x_u32): Remove.
14716         (__arm_vabdq_f16): Remove.
14717         (__arm_vabdq_f32): Remove.
14718         (__arm_vabdq_m_f32): Remove.
14719         (__arm_vabdq_m_f16): Remove.
14720         (__arm_vabdq_x_f16): Remove.
14721         (__arm_vabdq_x_f32): Remove.
14722         (__arm_vabdq): Remove.
14723         (__arm_vabdq_m): Remove.
14724         (__arm_vabdq_x): Remove.
14726 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14728         * config/arm/iterators.md (MVE_FP_M_BINARY): Add vabdq.
14729         (MVE_FP_VABDQ_ONLY): New.
14730         (mve_insn): Add vabd.
14731         * config/arm/mve.md (mve_vabdq_f<mode>): Move into ...
14732         (@mve_<mve_insn>q_f<mode>): ... this.
14733         (mve_vabdq_m_f<mode>): Remove.
14735 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14737         * config/arm/arm-mve-builtins-base.cc (vqrdmulhq): New.
14738         * config/arm/arm-mve-builtins-base.def (vqrdmulhq): New.
14739         * config/arm/arm-mve-builtins-base.h (vqrdmulhq): New.
14740         * config/arm/arm_mve.h (vqrdmulhq): Remove.
14741         (vqrdmulhq_m): Remove.
14742         (vqrdmulhq_s8): Remove.
14743         (vqrdmulhq_n_s8): Remove.
14744         (vqrdmulhq_s16): Remove.
14745         (vqrdmulhq_n_s16): Remove.
14746         (vqrdmulhq_s32): Remove.
14747         (vqrdmulhq_n_s32): Remove.
14748         (vqrdmulhq_m_n_s8): Remove.
14749         (vqrdmulhq_m_n_s32): Remove.
14750         (vqrdmulhq_m_n_s16): Remove.
14751         (vqrdmulhq_m_s8): Remove.
14752         (vqrdmulhq_m_s32): Remove.
14753         (vqrdmulhq_m_s16): Remove.
14754         (__arm_vqrdmulhq_s8): Remove.
14755         (__arm_vqrdmulhq_n_s8): Remove.
14756         (__arm_vqrdmulhq_s16): Remove.
14757         (__arm_vqrdmulhq_n_s16): Remove.
14758         (__arm_vqrdmulhq_s32): Remove.
14759         (__arm_vqrdmulhq_n_s32): Remove.
14760         (__arm_vqrdmulhq_m_n_s8): Remove.
14761         (__arm_vqrdmulhq_m_n_s32): Remove.
14762         (__arm_vqrdmulhq_m_n_s16): Remove.
14763         (__arm_vqrdmulhq_m_s8): Remove.
14764         (__arm_vqrdmulhq_m_s32): Remove.
14765         (__arm_vqrdmulhq_m_s16): Remove.
14766         (__arm_vqrdmulhq): Remove.
14767         (__arm_vqrdmulhq_m): Remove.
14769 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14771         * config/arm/iterators.md (MVE_SHIFT_M_R, MVE_SHIFT_M_N)
14772         (MVE_SHIFT_N, MVE_SHIFT_R): New.
14773         (mve_insn): Add vqshl, vshl.
14774         * config/arm/mve.md (mve_vqshlq_n_<supf><mode>)
14775         (mve_vshlq_n_<supf><mode>): Merge into ...
14776         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
14777         (mve_vqshlq_r_<supf><mode>, mve_vshlq_r_<supf><mode>): Merge into
14778         ...
14779         (@mve_<mve_insn>q_r_<supf><mode>): ... this.
14780         (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
14781         into ...
14782         (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
14783         (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
14784         into ...
14785         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14786         * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
14787         into ...
14788         (@mve_<mve_insn>q_<supf><mode>): ... this.
14790 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14792         * config/arm/arm-mve-builtins-base.cc (vqrshlq, vrshlq): New.
14793         * config/arm/arm-mve-builtins-base.def (vqrshlq, vrshlq): New.
14794         * config/arm/arm-mve-builtins-base.h (vqrshlq, vrshlq): New.
14795         * config/arm/arm-mve-builtins.cc (has_inactive_argument): Handle
14796         vqrshlq, vrshlq.
14797         * config/arm/arm_mve.h (vrshlq): Remove.
14798         (vrshlq_m_n): Remove.
14799         (vrshlq_m): Remove.
14800         (vrshlq_x): Remove.
14801         (vrshlq_u8): Remove.
14802         (vrshlq_n_u8): Remove.
14803         (vrshlq_s8): Remove.
14804         (vrshlq_n_s8): Remove.
14805         (vrshlq_u16): Remove.
14806         (vrshlq_n_u16): Remove.
14807         (vrshlq_s16): Remove.
14808         (vrshlq_n_s16): Remove.
14809         (vrshlq_u32): Remove.
14810         (vrshlq_n_u32): Remove.
14811         (vrshlq_s32): Remove.
14812         (vrshlq_n_s32): Remove.
14813         (vrshlq_m_n_u8): Remove.
14814         (vrshlq_m_n_s8): Remove.
14815         (vrshlq_m_n_u16): Remove.
14816         (vrshlq_m_n_s16): Remove.
14817         (vrshlq_m_n_u32): Remove.
14818         (vrshlq_m_n_s32): Remove.
14819         (vrshlq_m_s8): Remove.
14820         (vrshlq_m_s32): Remove.
14821         (vrshlq_m_s16): Remove.
14822         (vrshlq_m_u8): Remove.
14823         (vrshlq_m_u32): Remove.
14824         (vrshlq_m_u16): Remove.
14825         (vrshlq_x_s8): Remove.
14826         (vrshlq_x_s16): Remove.
14827         (vrshlq_x_s32): Remove.
14828         (vrshlq_x_u8): Remove.
14829         (vrshlq_x_u16): Remove.
14830         (vrshlq_x_u32): Remove.
14831         (__arm_vrshlq_u8): Remove.
14832         (__arm_vrshlq_n_u8): Remove.
14833         (__arm_vrshlq_s8): Remove.
14834         (__arm_vrshlq_n_s8): Remove.
14835         (__arm_vrshlq_u16): Remove.
14836         (__arm_vrshlq_n_u16): Remove.
14837         (__arm_vrshlq_s16): Remove.
14838         (__arm_vrshlq_n_s16): Remove.
14839         (__arm_vrshlq_u32): Remove.
14840         (__arm_vrshlq_n_u32): Remove.
14841         (__arm_vrshlq_s32): Remove.
14842         (__arm_vrshlq_n_s32): Remove.
14843         (__arm_vrshlq_m_n_u8): Remove.
14844         (__arm_vrshlq_m_n_s8): Remove.
14845         (__arm_vrshlq_m_n_u16): Remove.
14846         (__arm_vrshlq_m_n_s16): Remove.
14847         (__arm_vrshlq_m_n_u32): Remove.
14848         (__arm_vrshlq_m_n_s32): Remove.
14849         (__arm_vrshlq_m_s8): Remove.
14850         (__arm_vrshlq_m_s32): Remove.
14851         (__arm_vrshlq_m_s16): Remove.
14852         (__arm_vrshlq_m_u8): Remove.
14853         (__arm_vrshlq_m_u32): Remove.
14854         (__arm_vrshlq_m_u16): Remove.
14855         (__arm_vrshlq_x_s8): Remove.
14856         (__arm_vrshlq_x_s16): Remove.
14857         (__arm_vrshlq_x_s32): Remove.
14858         (__arm_vrshlq_x_u8): Remove.
14859         (__arm_vrshlq_x_u16): Remove.
14860         (__arm_vrshlq_x_u32): Remove.
14861         (__arm_vrshlq): Remove.
14862         (__arm_vrshlq_m_n): Remove.
14863         (__arm_vrshlq_m): Remove.
14864         (__arm_vrshlq_x): Remove.
14865         (vqrshlq): Remove.
14866         (vqrshlq_m_n): Remove.
14867         (vqrshlq_m): Remove.
14868         (vqrshlq_u8): Remove.
14869         (vqrshlq_n_u8): Remove.
14870         (vqrshlq_s8): Remove.
14871         (vqrshlq_n_s8): Remove.
14872         (vqrshlq_u16): Remove.
14873         (vqrshlq_n_u16): Remove.
14874         (vqrshlq_s16): Remove.
14875         (vqrshlq_n_s16): Remove.
14876         (vqrshlq_u32): Remove.
14877         (vqrshlq_n_u32): Remove.
14878         (vqrshlq_s32): Remove.
14879         (vqrshlq_n_s32): Remove.
14880         (vqrshlq_m_n_u8): Remove.
14881         (vqrshlq_m_n_s8): Remove.
14882         (vqrshlq_m_n_u16): Remove.
14883         (vqrshlq_m_n_s16): Remove.
14884         (vqrshlq_m_n_u32): Remove.
14885         (vqrshlq_m_n_s32): Remove.
14886         (vqrshlq_m_s8): Remove.
14887         (vqrshlq_m_s32): Remove.
14888         (vqrshlq_m_s16): Remove.
14889         (vqrshlq_m_u8): Remove.
14890         (vqrshlq_m_u32): Remove.
14891         (vqrshlq_m_u16): Remove.
14892         (__arm_vqrshlq_u8): Remove.
14893         (__arm_vqrshlq_n_u8): Remove.
14894         (__arm_vqrshlq_s8): Remove.
14895         (__arm_vqrshlq_n_s8): Remove.
14896         (__arm_vqrshlq_u16): Remove.
14897         (__arm_vqrshlq_n_u16): Remove.
14898         (__arm_vqrshlq_s16): Remove.
14899         (__arm_vqrshlq_n_s16): Remove.
14900         (__arm_vqrshlq_u32): Remove.
14901         (__arm_vqrshlq_n_u32): Remove.
14902         (__arm_vqrshlq_s32): Remove.
14903         (__arm_vqrshlq_n_s32): Remove.
14904         (__arm_vqrshlq_m_n_u8): Remove.
14905         (__arm_vqrshlq_m_n_s8): Remove.
14906         (__arm_vqrshlq_m_n_u16): Remove.
14907         (__arm_vqrshlq_m_n_s16): Remove.
14908         (__arm_vqrshlq_m_n_u32): Remove.
14909         (__arm_vqrshlq_m_n_s32): Remove.
14910         (__arm_vqrshlq_m_s8): Remove.
14911         (__arm_vqrshlq_m_s32): Remove.
14912         (__arm_vqrshlq_m_s16): Remove.
14913         (__arm_vqrshlq_m_u8): Remove.
14914         (__arm_vqrshlq_m_u32): Remove.
14915         (__arm_vqrshlq_m_u16): Remove.
14916         (__arm_vqrshlq): Remove.
14917         (__arm_vqrshlq_m_n): Remove.
14918         (__arm_vqrshlq_m): Remove.
14920 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14922         * config/arm/iterators.md (MVE_RSHIFT_M_N, MVE_RSHIFT_N): New.
14923         (mve_insn): Add vqrshl, vrshl.
14924         * config/arm/mve.md (mve_vqrshlq_n_<supf><mode>)
14925         (mve_vrshlq_n_<supf><mode>): Merge into ...
14926         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
14927         (mve_vqrshlq_m_n_<supf><mode>, mve_vrshlq_m_n_<supf><mode>): Merge
14928         into ...
14929         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14931 2023-05-05  Christophe Lyon  <christophe.lyon@arm.com>
14933         * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
14934         * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
14936 2023-05-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
14938         PR target/109615
14939         * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
14940         denegrate PHI optmization.
14942 2023-05-05  Uros Bizjak  <ubizjak@gmail.com>
14944         * config/i386/predicates.md (register_no_SP_operand):
14945         Rename from index_register_operand.
14946         (call_register_operand): Update for rename.
14947         * config/i386/i386.md (*lea<mode>_general_[1234]): Update for rename.
14949 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
14951         PR bootstrap/84402
14952         * Makefile.in (NUM_MATCH_SPLITS, MATCH_SPLITS_SEQ,
14953         GIMPLE_MATCH_PD_SEQ_SRC, GIMPLE_MATCH_PD_SEQ_O,
14954         GENERIC_MATCH_PD_SEQ_SRC, GENERIC_MATCH_PD_SEQ_O): New.
14955         (OBJS, MOSTLYCLEANFILES, .PRECIOUS): Use them.
14956         (s-match): Split into s-generic-match and s-gimple-match.
14957         * configure.ac (with-matchpd-partitions,
14958         DEFAULT_MATCHPD_PARTITIONS): New.
14959         * configure: Regenerate.
14961 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
14963         PR bootstrap/84402
14964         * genmatch.cc (emit_func, SIZED_BASED_CHUNKS, get_out_file): New.
14965         (decision_tree::gen): Accept list of files instead of single and update
14966         to write function definition to header and main file.
14967         (write_predicate): Likewise.
14968         (write_header): Emit pragmas and new includes.
14969         (main): Create file buffers and cleanup.
14970         (showUsage, write_header_includes): New.
14972 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
14974         PR bootstrap/84402
14975         * Makefile.in (OBJS): Add gimple-match-exports.o.
14976         * genmatch.cc (decision_tree::gen): Export gimple_gimplify helpers.
14977         * gimple-match-head.cc (gimple_simplify, gimple_resimplify1,
14978         gimple_resimplify2, gimple_resimplify3, gimple_resimplify4,
14979         gimple_resimplify5, constant_for_folding, convert_conditional_op,
14980         maybe_resimplify_conditional_op, gimple_match_op::resimplify,
14981         maybe_build_generic_op, build_call_internal, maybe_push_res_to_seq,
14982         do_valueize, try_conditional_simplification, gimple_extract,
14983         gimple_extract_op, canonicalize_code, commutative_binary_op_p,
14984         commutative_ternary_op_p, first_commutative_argument,
14985         associative_binary_op_p, directly_supported_p,
14986         get_conditional_internal_fn): Moved to gimple-match-exports.cc
14987         * gimple-match-exports.cc: New file.
14989 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
14991         PR bootstrap/84402
14992         * genmatch.cc (decision_tree::gen, write_predicate): Generate new
14993         debug_dump var.
14994         (dt_simplify::gen_1): Use it.
14996 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
14998         PR bootstrap/84402
14999         * genmatch.cc (output_line_directive): Only emit commented directive
15000         when -vv.
15002 2023-05-05  Tamar Christina  <tamar.christina@arm.com>
15004         PR bootstrap/84402
15005         * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
15007 2023-05-05  Tobias Burnus  <tobias@codesourcery.com>
15009         * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
15010         unused in_mode/in_n variables.
15012 2023-05-05  Richard Biener  <rguenther@suse.de>
15014         PR tree-optimization/109735
15015         * tree-vect-stmts.cc (vectorizable_operation): Perform
15016         conversion for POINTER_DIFF_EXPR unconditionally.
15018 2023-05-05  Uros Bizjak  <ubizjak@gmail.com>
15020         * config/i386/mmx.md (mulv2si3): New expander.
15021         (*mulv2si3): New insn pattern.
15023 2023-05-05  Tobias Burnus  <tobias@codesourcery.com>
15024             Thomas Schwinge  <thomas@codesourcery.com>
15026         PR libgomp/108098
15027         * config/nvptx/mkoffload.cc (process): Emit dummy procedure
15028         alongside reverse-offload function table to prevent NULL values
15029         of the function addresses.
15031 2023-05-05  Jakub Jelinek  <jakub@redhat.com>
15033         * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo,
15034         mpft_t -> mpfr_t.
15035         * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise.
15037 2023-05-05  Andrew Pinski  <apinski@marvell.com>
15039         PR tree-optimization/109732
15040         * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
15041         of the argtrue/argfalse.
15043 2023-05-05  Andrew Pinski  <apinski@marvell.com>
15045         PR tree-optimization/109722
15046         * match.pd: Extend the `ABS<a> == 0` pattern
15047         to cover `ABSU<a> == 0` too.
15049 2023-05-04  Uros Bizjak  <ubizjak@gmail.com>
15051         PR target/109733
15052         * config/i386/predicates.md (index_reg_operand): New predicate.
15053         * config/i386/i386.md (ashift to lea spliter): Use
15054         general_reg_operand and index_reg_operand predicates.
15056 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
15058         * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn2<mode>_insn_le):
15059         Rename and reimplement with RTL codes to...
15060         (aarch64_<optab>hn2<mode>_insn_le): .. This.
15061         (aarch64_r<optab>hn2<mode>_insn_le): New pattern.
15062         (aarch64_<sur><addsub>hn2<mode>_insn_be): Rename and reimplement with RTL
15063         codes to...
15064         (aarch64_<optab>hn2<mode>_insn_be): ... This.
15065         (aarch64_r<optab>hn2<mode>_insn_be): New pattern.
15066         (aarch64_<sur><addsub>hn2<mode>): Rename and adjust expander to...
15067         (aarch64_<optab>hn2<mode>): ... This.
15068         (aarch64_r<optab>hn2<mode>): New expander.
15069         * config/aarch64/iterators.md (UNSPEC_ADDHN, UNSPEC_RADDHN,
15070         UNSPEC_SUBHN, UNSPEC_RSUBHN): Delete unspecs.
15071         (ADDSUBHN): Delete.
15072         (sur): Remove handling of the above.
15073         (addsub): Likewise.
15075 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
15077         * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
15078         Delete.
15079         (aarch64_<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
15080         (aarch64_<sur><addsub>hn<mode>_insn_be): Delete.
15081         (aarch64_r<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
15082         (aarch64_<sur><addsub>hn<mode>): Delete.
15083         (aarch64_<optab>hn<mode>): New define_expand.
15084         (aarch64_r<optab>hn<mode>): Likewise.
15085         * config/aarch64/predicates.md (aarch64_simd_raddsubhn_imm_vec):
15086         New predicate.
15088 2023-05-04  Andrew Pinski  <apinski@marvell.com>
15090         * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
15091         diamond form bb with forwarder only empty blocks better.
15093 2023-05-04  Andrew Pinski  <apinski@marvell.com>
15095         * tree-ssa-threadupdate.cc (copy_phi_arg_into_existing_phi): Move to ...
15096         * tree-cfg.cc (copy_phi_arg_into_existing_phi): Here and remove static.
15097         (gimple_duplicate_sese_tail): Use copy_phi_arg_into_existing_phi instead
15098         of an inline version of it.
15099         * tree-cfgcleanup.cc (remove_forwarder_block): Likewise.
15100         * tree-cfg.h (copy_phi_arg_into_existing_phi): New declaration.
15102 2023-05-04  Andrew Pinski  <apinski@marvell.com>
15104         * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Change
15105         the default argument value for dce_ssa_names to nullptr.
15106         Check to make sure dce_ssa_names is a non-nullptr before
15107         calling simple_dce_from_worklist.
15109 2023-05-04  Uros Bizjak  <ubizjak@gmail.com>
15111         * config/i386/predicates.md (index_register_operand): Reject
15112         arg_pointer_rtx, frame_pointer_rtx, stack_pointer_rtx and
15113         VIRTUAL_REGISTER_P operands.  Allow subregs of memory before reload.
15114         (call_register_no_elim_operand): Rewrite as ...
15115         (call_register_operand): ... this.
15116         (call_insn_operand): Use call_register_operand predicate.
15118 2023-05-04  Richard Biener  <rguenther@suse.de>
15120         PR tree-optimization/109721
15121         * tree-vect-stmts.cc (vectorizable_operation): Make sure
15122         to test word_mode for all !target_support_p operations.
15124 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
15126         PR target/99195
15127         * config/aarch64/aarch64-simd.md (aarch64_<su>aba<mode>): Rename to...
15128         (aarch64_<su>aba<mode><vczle><vczbe>): ... This.
15129         (aarch64_mla<mode>): Rename to...
15130         (aarch64_mla<mode><vczle><vczbe>): ... This.
15131         (*aarch64_mla_elt<mode>): Rename to...
15132         (*aarch64_mla_elt<mode><vczle><vczbe>): ... This.
15133         (*aarch64_mla_elt_<vswap_width_name><mode>): Rename to...
15134         (*aarch64_mla_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
15135         (aarch64_mla_n<mode>): Rename to...
15136         (aarch64_mla_n<mode><vczle><vczbe>): ... This.
15137         (aarch64_mls<mode>): Rename to...
15138         (aarch64_mls<mode><vczle><vczbe>): ... This.
15139         (*aarch64_mls_elt<mode>): Rename to...
15140         (*aarch64_mls_elt<mode><vczle><vczbe>): ... This.
15141         (*aarch64_mls_elt_<vswap_width_name><mode>): Rename to...
15142         (*aarch64_mls_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
15143         (aarch64_mls_n<mode>): Rename to...
15144         (aarch64_mls_n<mode><vczle><vczbe>): ... This.
15145         (fma<mode>4): Rename to...
15146         (fma<mode>4<vczle><vczbe>): ... This.
15147         (*aarch64_fma4_elt<mode>): Rename to...
15148         (*aarch64_fma4_elt<mode><vczle><vczbe>): ... This.
15149         (*aarch64_fma4_elt_<vswap_width_name><mode>): Rename to...
15150         (*aarch64_fma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
15151         (*aarch64_fma4_elt_from_dup<mode>): Rename to...
15152         (*aarch64_fma4_elt_from_dup<mode><vczle><vczbe>): ... This.
15153         (fnma<mode>4): Rename to...
15154         (fnma<mode>4<vczle><vczbe>): ... This.
15155         (*aarch64_fnma4_elt<mode>): Rename to...
15156         (*aarch64_fnma4_elt<mode><vczle><vczbe>): ... This.
15157         (*aarch64_fnma4_elt_<vswap_width_name><mode>): Rename to...
15158         (*aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
15159         (*aarch64_fnma4_elt_from_dup<mode>): Rename to...
15160         (*aarch64_fnma4_elt_from_dup<mode><vczle><vczbe>): ... This.
15161         (aarch64_simd_bsl<mode>_internal): Rename to...
15162         (aarch64_simd_bsl<mode>_internal<vczle><vczbe>): ... This.
15163         (*aarch64_simd_bsl<mode>_alt): Rename to...
15164         (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>): ... This.
15166 2023-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
15168         PR target/99195
15169         * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>): Rename to...
15170         (aarch64_<su>abd<mode><vczle><vczbe>): ... This.
15171         (fabd<mode>3): Rename to...
15172         (fabd<mode>3<vczle><vczbe>): ... This.
15173         (aarch64_<optab>p<mode>): Rename to...
15174         (aarch64_<optab>p<mode><vczle><vczbe>): ... This.
15175         (aarch64_faddp<mode>): Rename to...
15176         (aarch64_faddp<mode><vczle><vczbe>): ... This.
15178 2023-05-04  Martin Liska  <mliska@suse.cz>
15180         * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
15181         (print_version): Use it.
15182         (generate_results): Likewise.
15184 2023-05-04  Richard Biener  <rguenther@suse.de>
15186         * tree-cfg.h (last_stmt): Rename to ...
15187         (last_nondebug_stmt): ... this.
15188         * tree-cfg.cc (last_stmt): Rename to ...
15189         (last_nondebug_stmt): ... this.
15190         (assign_discriminators): Adjust.
15191         (group_case_labels_stmt): Likewise.
15192         (gimple_can_duplicate_bb_p): Likewise.
15193         (execute_fixup_cfg): Likewise.
15194         * auto-profile.cc (afdo_propagate_circuit): Likewise.
15195         * gimple-range.cc (gimple_ranger::range_on_exit): Likewise.
15196         * omp-expand.cc (workshare_safe_to_combine_p): Likewise.
15197         (determine_parallel_type): Likewise.
15198         (adjust_context_and_scope): Likewise.
15199         (expand_task_call): Likewise.
15200         (remove_exit_barrier): Likewise.
15201         (expand_omp_taskreg): Likewise.
15202         (expand_omp_for_init_counts): Likewise.
15203         (expand_omp_for_init_vars): Likewise.
15204         (expand_omp_for_static_chunk): Likewise.
15205         (expand_omp_simd): Likewise.
15206         (expand_oacc_for): Likewise.
15207         (expand_omp_for): Likewise.
15208         (expand_omp_sections): Likewise.
15209         (expand_omp_atomic_fetch_op): Likewise.
15210         (expand_omp_atomic_cas): Likewise.
15211         (expand_omp_atomic): Likewise.
15212         (expand_omp_target): Likewise.
15213         (expand_omp): Likewise.
15214         (omp_make_gimple_edges): Likewise.
15215         * trans-mem.cc (tm_region_init): Likewise.
15216         * tree-inline.cc (redirect_all_calls): Likewise.
15217         * tree-parloops.cc (gen_parallel_loop): Likewise.
15218         * tree-ssa-loop-ch.cc (do_while_loop_p): Likewise.
15219         * tree-ssa-loop-ivcanon.cc (canonicalize_loop_induction_variables):
15220         Likewise.
15221         * tree-ssa-loop-ivopts.cc (stmt_after_ip_normal_pos): Likewise.
15222         (may_eliminate_iv): Likewise.
15223         * tree-ssa-loop-manip.cc (standard_iv_increment_position): Likewise.
15224         * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations):
15225         Likewise.
15226         (estimate_numbers_of_iterations): Likewise.
15227         * tree-ssa-loop-split.cc (compute_added_num_insns): Likewise.
15228         * tree-ssa-loop-unswitch.cc (get_predicates_for_bb): Likewise.
15229         (set_predicates_for_bb): Likewise.
15230         (init_loop_unswitch_info): Likewise.
15231         (hoist_guard): Likewise.
15232         * tree-ssa-phiopt.cc (match_simplify_replacement): Likewise.
15233         (minmax_replacement): Likewise.
15234         * tree-ssa-reassoc.cc (update_range_test): Likewise.
15235         (optimize_range_tests_to_bit_test): Likewise.
15236         (optimize_range_tests_var_bound): Likewise.
15237         (optimize_range_tests): Likewise.
15238         (no_side_effect_bb): Likewise.
15239         (suitable_cond_bb): Likewise.
15240         (maybe_optimize_range_tests): Likewise.
15241         (reassociate_bb): Likewise.
15242         * tree-vrp.cc (rvrp_folder::pre_fold_bb): Likewise.
15244 2023-05-04  Jakub Jelinek  <jakub@redhat.com>
15246         PR debug/109676
15247         * config/i386/i386-features.cc (timode_scalar_chain::convert_insn):
15248         If src is REG, change its mode to V1TImode and call fix_debug_reg_uses
15249         for it only if it still has TImode.  Don't decide whether to call
15250         fix_debug_reg_uses based on whether SRC is ever set or not.
15252 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
15254         * config/cris/cris.cc (cris_split_constant): New function.
15255         * config/cris/cris.md (splitop): New iterator.
15256         (opsplit1): New define_peephole2.
15257         * config/cris/cris-protos.h (cris_split_constant): Declare.
15258         (cris_splittable_constant_p): New macro.
15260 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
15262         * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
15263         to ALL_REGS.
15265 2023-05-04  Hans-Peter Nilsson  <hp@axis.com>
15267         * config/cris/cris.cc (cris_side_effect_mode_ok): Use
15268         lra_in_progress, not reload_in_progress.
15269         * config/cris/cris.md ("movdi", "*addi_reload"): Ditto.
15270         * config/cris/constraints.md ("Q"): Ditto.
15272 2023-05-03  Andrew Pinski  <apinski@marvell.com>
15274         * tree-ssa-dce.cc (simple_dce_from_worklist): Record
15275         stats on removed number of statements and phis.
15277 2023-05-03  Aldy Hernandez  <aldyh@redhat.com>
15279         PR tree-optimization/109711
15280         * value-range.cc (irange::verify_range): Allow types of
15281         error_mark_node.
15283 2023-05-03  Alexander Monakov  <amonakov@ispras.ru>
15285         PR sanitizer/90746
15286         * calls.cc (can_implement_as_sibling_call_p): Reject calls
15287         to __sanitizer_cov_trace_pc.
15289 2023-05-03  Richard Sandiford  <richard.sandiford@arm.com>
15291         PR target/109661
15292         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Add
15293         a new ABI break parameter for GCC 14.  Set it to the alignment
15294         of enums that have an underlying type.  Take the true alignment
15295         of such enums from the TYPE_ALIGN of the underlying type's
15296         TYPE_MAIN_VARIANT.
15297         (aarch64_function_arg_boundary): Update accordingly.
15298         (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise.
15299         Warn about ABI differences.
15301 2023-05-03  Richard Sandiford  <richard.sandiford@arm.com>
15303         PR target/109661
15304         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Rename
15305         ABI break variables to abi_break_gcc_9 and abi_break_gcc_13.
15306         (aarch64_layout_arg, aarch64_function_arg_boundary): Likewise.
15307         (aarch64_gimplify_va_arg_expr): Likewise.
15309 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
15311         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_NO_F)
15312         (FUNCTION_WITHOUT_N_NO_F, FUNCTION_WITH_M_N_NO_U_F): New.
15313         (vhaddq, vhsubq, vmulhq, vqaddq, vqsubq, vqdmulhq, vrhaddq)
15314         (vrmulhq): New.
15315         * config/arm/arm-mve-builtins-base.def (vhaddq, vhsubq, vmulhq)
15316         (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
15317         * config/arm/arm-mve-builtins-base.h (vhaddq, vhsubq, vmulhq)
15318         (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
15319         * config/arm/arm_mve.h (vhsubq): Remove.
15320         (vhaddq): Remove.
15321         (vhaddq_m): Remove.
15322         (vhsubq_m): Remove.
15323         (vhaddq_x): Remove.
15324         (vhsubq_x): Remove.
15325         (vhsubq_u8): Remove.
15326         (vhsubq_n_u8): Remove.
15327         (vhaddq_u8): Remove.
15328         (vhaddq_n_u8): Remove.
15329         (vhsubq_s8): Remove.
15330         (vhsubq_n_s8): Remove.
15331         (vhaddq_s8): Remove.
15332         (vhaddq_n_s8): Remove.
15333         (vhsubq_u16): Remove.
15334         (vhsubq_n_u16): Remove.
15335         (vhaddq_u16): Remove.
15336         (vhaddq_n_u16): Remove.
15337         (vhsubq_s16): Remove.
15338         (vhsubq_n_s16): Remove.
15339         (vhaddq_s16): Remove.
15340         (vhaddq_n_s16): Remove.
15341         (vhsubq_u32): Remove.
15342         (vhsubq_n_u32): Remove.
15343         (vhaddq_u32): Remove.
15344         (vhaddq_n_u32): Remove.
15345         (vhsubq_s32): Remove.
15346         (vhsubq_n_s32): Remove.
15347         (vhaddq_s32): Remove.
15348         (vhaddq_n_s32): Remove.
15349         (vhaddq_m_n_s8): Remove.
15350         (vhaddq_m_n_s32): Remove.
15351         (vhaddq_m_n_s16): Remove.
15352         (vhaddq_m_n_u8): Remove.
15353         (vhaddq_m_n_u32): Remove.
15354         (vhaddq_m_n_u16): Remove.
15355         (vhaddq_m_s8): Remove.
15356         (vhaddq_m_s32): Remove.
15357         (vhaddq_m_s16): Remove.
15358         (vhaddq_m_u8): Remove.
15359         (vhaddq_m_u32): Remove.
15360         (vhaddq_m_u16): Remove.
15361         (vhsubq_m_n_s8): Remove.
15362         (vhsubq_m_n_s32): Remove.
15363         (vhsubq_m_n_s16): Remove.
15364         (vhsubq_m_n_u8): Remove.
15365         (vhsubq_m_n_u32): Remove.
15366         (vhsubq_m_n_u16): Remove.
15367         (vhsubq_m_s8): Remove.
15368         (vhsubq_m_s32): Remove.
15369         (vhsubq_m_s16): Remove.
15370         (vhsubq_m_u8): Remove.
15371         (vhsubq_m_u32): Remove.
15372         (vhsubq_m_u16): Remove.
15373         (vhaddq_x_n_s8): Remove.
15374         (vhaddq_x_n_s16): Remove.
15375         (vhaddq_x_n_s32): Remove.
15376         (vhaddq_x_n_u8): Remove.
15377         (vhaddq_x_n_u16): Remove.
15378         (vhaddq_x_n_u32): Remove.
15379         (vhaddq_x_s8): Remove.
15380         (vhaddq_x_s16): Remove.
15381         (vhaddq_x_s32): Remove.
15382         (vhaddq_x_u8): Remove.
15383         (vhaddq_x_u16): Remove.
15384         (vhaddq_x_u32): Remove.
15385         (vhsubq_x_n_s8): Remove.
15386         (vhsubq_x_n_s16): Remove.
15387         (vhsubq_x_n_s32): Remove.
15388         (vhsubq_x_n_u8): Remove.
15389         (vhsubq_x_n_u16): Remove.
15390         (vhsubq_x_n_u32): Remove.
15391         (vhsubq_x_s8): Remove.
15392         (vhsubq_x_s16): Remove.
15393         (vhsubq_x_s32): Remove.
15394         (vhsubq_x_u8): Remove.
15395         (vhsubq_x_u16): Remove.
15396         (vhsubq_x_u32): Remove.
15397         (__arm_vhsubq_u8): Remove.
15398         (__arm_vhsubq_n_u8): Remove.
15399         (__arm_vhaddq_u8): Remove.
15400         (__arm_vhaddq_n_u8): Remove.
15401         (__arm_vhsubq_s8): Remove.
15402         (__arm_vhsubq_n_s8): Remove.
15403         (__arm_vhaddq_s8): Remove.
15404         (__arm_vhaddq_n_s8): Remove.
15405         (__arm_vhsubq_u16): Remove.
15406         (__arm_vhsubq_n_u16): Remove.
15407         (__arm_vhaddq_u16): Remove.
15408         (__arm_vhaddq_n_u16): Remove.
15409         (__arm_vhsubq_s16): Remove.
15410         (__arm_vhsubq_n_s16): Remove.
15411         (__arm_vhaddq_s16): Remove.
15412         (__arm_vhaddq_n_s16): Remove.
15413         (__arm_vhsubq_u32): Remove.
15414         (__arm_vhsubq_n_u32): Remove.
15415         (__arm_vhaddq_u32): Remove.
15416         (__arm_vhaddq_n_u32): Remove.
15417         (__arm_vhsubq_s32): Remove.
15418         (__arm_vhsubq_n_s32): Remove.
15419         (__arm_vhaddq_s32): Remove.
15420         (__arm_vhaddq_n_s32): Remove.
15421         (__arm_vhaddq_m_n_s8): Remove.
15422         (__arm_vhaddq_m_n_s32): Remove.
15423         (__arm_vhaddq_m_n_s16): Remove.
15424         (__arm_vhaddq_m_n_u8): Remove.
15425         (__arm_vhaddq_m_n_u32): Remove.
15426         (__arm_vhaddq_m_n_u16): Remove.
15427         (__arm_vhaddq_m_s8): Remove.
15428         (__arm_vhaddq_m_s32): Remove.
15429         (__arm_vhaddq_m_s16): Remove.
15430         (__arm_vhaddq_m_u8): Remove.
15431         (__arm_vhaddq_m_u32): Remove.
15432         (__arm_vhaddq_m_u16): Remove.
15433         (__arm_vhsubq_m_n_s8): Remove.
15434         (__arm_vhsubq_m_n_s32): Remove.
15435         (__arm_vhsubq_m_n_s16): Remove.
15436         (__arm_vhsubq_m_n_u8): Remove.
15437         (__arm_vhsubq_m_n_u32): Remove.
15438         (__arm_vhsubq_m_n_u16): Remove.
15439         (__arm_vhsubq_m_s8): Remove.
15440         (__arm_vhsubq_m_s32): Remove.
15441         (__arm_vhsubq_m_s16): Remove.
15442         (__arm_vhsubq_m_u8): Remove.
15443         (__arm_vhsubq_m_u32): Remove.
15444         (__arm_vhsubq_m_u16): Remove.
15445         (__arm_vhaddq_x_n_s8): Remove.
15446         (__arm_vhaddq_x_n_s16): Remove.
15447         (__arm_vhaddq_x_n_s32): Remove.
15448         (__arm_vhaddq_x_n_u8): Remove.
15449         (__arm_vhaddq_x_n_u16): Remove.
15450         (__arm_vhaddq_x_n_u32): Remove.
15451         (__arm_vhaddq_x_s8): Remove.
15452         (__arm_vhaddq_x_s16): Remove.
15453         (__arm_vhaddq_x_s32): Remove.
15454         (__arm_vhaddq_x_u8): Remove.
15455         (__arm_vhaddq_x_u16): Remove.
15456         (__arm_vhaddq_x_u32): Remove.
15457         (__arm_vhsubq_x_n_s8): Remove.
15458         (__arm_vhsubq_x_n_s16): Remove.
15459         (__arm_vhsubq_x_n_s32): Remove.
15460         (__arm_vhsubq_x_n_u8): Remove.
15461         (__arm_vhsubq_x_n_u16): Remove.
15462         (__arm_vhsubq_x_n_u32): Remove.
15463         (__arm_vhsubq_x_s8): Remove.
15464         (__arm_vhsubq_x_s16): Remove.
15465         (__arm_vhsubq_x_s32): Remove.
15466         (__arm_vhsubq_x_u8): Remove.
15467         (__arm_vhsubq_x_u16): Remove.
15468         (__arm_vhsubq_x_u32): Remove.
15469         (__arm_vhsubq): Remove.
15470         (__arm_vhaddq): Remove.
15471         (__arm_vhaddq_m): Remove.
15472         (__arm_vhsubq_m): Remove.
15473         (__arm_vhaddq_x): Remove.
15474         (__arm_vhsubq_x): Remove.
15475         (vmulhq): Remove.
15476         (vmulhq_m): Remove.
15477         (vmulhq_x): Remove.
15478         (vmulhq_u8): Remove.
15479         (vmulhq_s8): Remove.
15480         (vmulhq_u16): Remove.
15481         (vmulhq_s16): Remove.
15482         (vmulhq_u32): Remove.
15483         (vmulhq_s32): Remove.
15484         (vmulhq_m_s8): Remove.
15485         (vmulhq_m_s32): Remove.
15486         (vmulhq_m_s16): Remove.
15487         (vmulhq_m_u8): Remove.
15488         (vmulhq_m_u32): Remove.
15489         (vmulhq_m_u16): Remove.
15490         (vmulhq_x_s8): Remove.
15491         (vmulhq_x_s16): Remove.
15492         (vmulhq_x_s32): Remove.
15493         (vmulhq_x_u8): Remove.
15494         (vmulhq_x_u16): Remove.
15495         (vmulhq_x_u32): Remove.
15496         (__arm_vmulhq_u8): Remove.
15497         (__arm_vmulhq_s8): Remove.
15498         (__arm_vmulhq_u16): Remove.
15499         (__arm_vmulhq_s16): Remove.
15500         (__arm_vmulhq_u32): Remove.
15501         (__arm_vmulhq_s32): Remove.
15502         (__arm_vmulhq_m_s8): Remove.
15503         (__arm_vmulhq_m_s32): Remove.
15504         (__arm_vmulhq_m_s16): Remove.
15505         (__arm_vmulhq_m_u8): Remove.
15506         (__arm_vmulhq_m_u32): Remove.
15507         (__arm_vmulhq_m_u16): Remove.
15508         (__arm_vmulhq_x_s8): Remove.
15509         (__arm_vmulhq_x_s16): Remove.
15510         (__arm_vmulhq_x_s32): Remove.
15511         (__arm_vmulhq_x_u8): Remove.
15512         (__arm_vmulhq_x_u16): Remove.
15513         (__arm_vmulhq_x_u32): Remove.
15514         (__arm_vmulhq): Remove.
15515         (__arm_vmulhq_m): Remove.
15516         (__arm_vmulhq_x): Remove.
15517         (vqsubq): Remove.
15518         (vqaddq): Remove.
15519         (vqaddq_m): Remove.
15520         (vqsubq_m): Remove.
15521         (vqsubq_u8): Remove.
15522         (vqsubq_n_u8): Remove.
15523         (vqaddq_u8): Remove.
15524         (vqaddq_n_u8): Remove.
15525         (vqsubq_s8): Remove.
15526         (vqsubq_n_s8): Remove.
15527         (vqaddq_s8): Remove.
15528         (vqaddq_n_s8): Remove.
15529         (vqsubq_u16): Remove.
15530         (vqsubq_n_u16): Remove.
15531         (vqaddq_u16): Remove.
15532         (vqaddq_n_u16): Remove.
15533         (vqsubq_s16): Remove.
15534         (vqsubq_n_s16): Remove.
15535         (vqaddq_s16): Remove.
15536         (vqaddq_n_s16): Remove.
15537         (vqsubq_u32): Remove.
15538         (vqsubq_n_u32): Remove.
15539         (vqaddq_u32): Remove.
15540         (vqaddq_n_u32): Remove.
15541         (vqsubq_s32): Remove.
15542         (vqsubq_n_s32): Remove.
15543         (vqaddq_s32): Remove.
15544         (vqaddq_n_s32): Remove.
15545         (vqaddq_m_n_s8): Remove.
15546         (vqaddq_m_n_s32): Remove.
15547         (vqaddq_m_n_s16): Remove.
15548         (vqaddq_m_n_u8): Remove.
15549         (vqaddq_m_n_u32): Remove.
15550         (vqaddq_m_n_u16): Remove.
15551         (vqaddq_m_s8): Remove.
15552         (vqaddq_m_s32): Remove.
15553         (vqaddq_m_s16): Remove.
15554         (vqaddq_m_u8): Remove.
15555         (vqaddq_m_u32): Remove.
15556         (vqaddq_m_u16): Remove.
15557         (vqsubq_m_n_s8): Remove.
15558         (vqsubq_m_n_s32): Remove.
15559         (vqsubq_m_n_s16): Remove.
15560         (vqsubq_m_n_u8): Remove.
15561         (vqsubq_m_n_u32): Remove.
15562         (vqsubq_m_n_u16): Remove.
15563         (vqsubq_m_s8): Remove.
15564         (vqsubq_m_s32): Remove.
15565         (vqsubq_m_s16): Remove.
15566         (vqsubq_m_u8): Remove.
15567         (vqsubq_m_u32): Remove.
15568         (vqsubq_m_u16): Remove.
15569         (__arm_vqsubq_u8): Remove.
15570         (__arm_vqsubq_n_u8): Remove.
15571         (__arm_vqaddq_u8): Remove.
15572         (__arm_vqaddq_n_u8): Remove.
15573         (__arm_vqsubq_s8): Remove.
15574         (__arm_vqsubq_n_s8): Remove.
15575         (__arm_vqaddq_s8): Remove.
15576         (__arm_vqaddq_n_s8): Remove.
15577         (__arm_vqsubq_u16): Remove.
15578         (__arm_vqsubq_n_u16): Remove.
15579         (__arm_vqaddq_u16): Remove.
15580         (__arm_vqaddq_n_u16): Remove.
15581         (__arm_vqsubq_s16): Remove.
15582         (__arm_vqsubq_n_s16): Remove.
15583         (__arm_vqaddq_s16): Remove.
15584         (__arm_vqaddq_n_s16): Remove.
15585         (__arm_vqsubq_u32): Remove.
15586         (__arm_vqsubq_n_u32): Remove.
15587         (__arm_vqaddq_u32): Remove.
15588         (__arm_vqaddq_n_u32): Remove.
15589         (__arm_vqsubq_s32): Remove.
15590         (__arm_vqsubq_n_s32): Remove.
15591         (__arm_vqaddq_s32): Remove.
15592         (__arm_vqaddq_n_s32): Remove.
15593         (__arm_vqaddq_m_n_s8): Remove.
15594         (__arm_vqaddq_m_n_s32): Remove.
15595         (__arm_vqaddq_m_n_s16): Remove.
15596         (__arm_vqaddq_m_n_u8): Remove.
15597         (__arm_vqaddq_m_n_u32): Remove.
15598         (__arm_vqaddq_m_n_u16): Remove.
15599         (__arm_vqaddq_m_s8): Remove.
15600         (__arm_vqaddq_m_s32): Remove.
15601         (__arm_vqaddq_m_s16): Remove.
15602         (__arm_vqaddq_m_u8): Remove.
15603         (__arm_vqaddq_m_u32): Remove.
15604         (__arm_vqaddq_m_u16): Remove.
15605         (__arm_vqsubq_m_n_s8): Remove.
15606         (__arm_vqsubq_m_n_s32): Remove.
15607         (__arm_vqsubq_m_n_s16): Remove.
15608         (__arm_vqsubq_m_n_u8): Remove.
15609         (__arm_vqsubq_m_n_u32): Remove.
15610         (__arm_vqsubq_m_n_u16): Remove.
15611         (__arm_vqsubq_m_s8): Remove.
15612         (__arm_vqsubq_m_s32): Remove.
15613         (__arm_vqsubq_m_s16): Remove.
15614         (__arm_vqsubq_m_u8): Remove.
15615         (__arm_vqsubq_m_u32): Remove.
15616         (__arm_vqsubq_m_u16): Remove.
15617         (__arm_vqsubq): Remove.
15618         (__arm_vqaddq): Remove.
15619         (__arm_vqaddq_m): Remove.
15620         (__arm_vqsubq_m): Remove.
15621         (vqdmulhq): Remove.
15622         (vqdmulhq_m): Remove.
15623         (vqdmulhq_s8): Remove.
15624         (vqdmulhq_n_s8): Remove.
15625         (vqdmulhq_s16): Remove.
15626         (vqdmulhq_n_s16): Remove.
15627         (vqdmulhq_s32): Remove.
15628         (vqdmulhq_n_s32): Remove.
15629         (vqdmulhq_m_n_s8): Remove.
15630         (vqdmulhq_m_n_s32): Remove.
15631         (vqdmulhq_m_n_s16): Remove.
15632         (vqdmulhq_m_s8): Remove.
15633         (vqdmulhq_m_s32): Remove.
15634         (vqdmulhq_m_s16): Remove.
15635         (__arm_vqdmulhq_s8): Remove.
15636         (__arm_vqdmulhq_n_s8): Remove.
15637         (__arm_vqdmulhq_s16): Remove.
15638         (__arm_vqdmulhq_n_s16): Remove.
15639         (__arm_vqdmulhq_s32): Remove.
15640         (__arm_vqdmulhq_n_s32): Remove.
15641         (__arm_vqdmulhq_m_n_s8): Remove.
15642         (__arm_vqdmulhq_m_n_s32): Remove.
15643         (__arm_vqdmulhq_m_n_s16): Remove.
15644         (__arm_vqdmulhq_m_s8): Remove.
15645         (__arm_vqdmulhq_m_s32): Remove.
15646         (__arm_vqdmulhq_m_s16): Remove.
15647         (__arm_vqdmulhq): Remove.
15648         (__arm_vqdmulhq_m): Remove.
15649         (vrhaddq): Remove.
15650         (vrhaddq_m): Remove.
15651         (vrhaddq_x): Remove.
15652         (vrhaddq_u8): Remove.
15653         (vrhaddq_s8): Remove.
15654         (vrhaddq_u16): Remove.
15655         (vrhaddq_s16): Remove.
15656         (vrhaddq_u32): Remove.
15657         (vrhaddq_s32): Remove.
15658         (vrhaddq_m_s8): Remove.
15659         (vrhaddq_m_s32): Remove.
15660         (vrhaddq_m_s16): Remove.
15661         (vrhaddq_m_u8): Remove.
15662         (vrhaddq_m_u32): Remove.
15663         (vrhaddq_m_u16): Remove.
15664         (vrhaddq_x_s8): Remove.
15665         (vrhaddq_x_s16): Remove.
15666         (vrhaddq_x_s32): Remove.
15667         (vrhaddq_x_u8): Remove.
15668         (vrhaddq_x_u16): Remove.
15669         (vrhaddq_x_u32): Remove.
15670         (__arm_vrhaddq_u8): Remove.
15671         (__arm_vrhaddq_s8): Remove.
15672         (__arm_vrhaddq_u16): Remove.
15673         (__arm_vrhaddq_s16): Remove.
15674         (__arm_vrhaddq_u32): Remove.
15675         (__arm_vrhaddq_s32): Remove.
15676         (__arm_vrhaddq_m_s8): Remove.
15677         (__arm_vrhaddq_m_s32): Remove.
15678         (__arm_vrhaddq_m_s16): Remove.
15679         (__arm_vrhaddq_m_u8): Remove.
15680         (__arm_vrhaddq_m_u32): Remove.
15681         (__arm_vrhaddq_m_u16): Remove.
15682         (__arm_vrhaddq_x_s8): Remove.
15683         (__arm_vrhaddq_x_s16): Remove.
15684         (__arm_vrhaddq_x_s32): Remove.
15685         (__arm_vrhaddq_x_u8): Remove.
15686         (__arm_vrhaddq_x_u16): Remove.
15687         (__arm_vrhaddq_x_u32): Remove.
15688         (__arm_vrhaddq): Remove.
15689         (__arm_vrhaddq_m): Remove.
15690         (__arm_vrhaddq_x): Remove.
15691         (vrmulhq): Remove.
15692         (vrmulhq_m): Remove.
15693         (vrmulhq_x): Remove.
15694         (vrmulhq_u8): Remove.
15695         (vrmulhq_s8): Remove.
15696         (vrmulhq_u16): Remove.
15697         (vrmulhq_s16): Remove.
15698         (vrmulhq_u32): Remove.
15699         (vrmulhq_s32): Remove.
15700         (vrmulhq_m_s8): Remove.
15701         (vrmulhq_m_s32): Remove.
15702         (vrmulhq_m_s16): Remove.
15703         (vrmulhq_m_u8): Remove.
15704         (vrmulhq_m_u32): Remove.
15705         (vrmulhq_m_u16): Remove.
15706         (vrmulhq_x_s8): Remove.
15707         (vrmulhq_x_s16): Remove.
15708         (vrmulhq_x_s32): Remove.
15709         (vrmulhq_x_u8): Remove.
15710         (vrmulhq_x_u16): Remove.
15711         (vrmulhq_x_u32): Remove.
15712         (__arm_vrmulhq_u8): Remove.
15713         (__arm_vrmulhq_s8): Remove.
15714         (__arm_vrmulhq_u16): Remove.
15715         (__arm_vrmulhq_s16): Remove.
15716         (__arm_vrmulhq_u32): Remove.
15717         (__arm_vrmulhq_s32): Remove.
15718         (__arm_vrmulhq_m_s8): Remove.
15719         (__arm_vrmulhq_m_s32): Remove.
15720         (__arm_vrmulhq_m_s16): Remove.
15721         (__arm_vrmulhq_m_u8): Remove.
15722         (__arm_vrmulhq_m_u32): Remove.
15723         (__arm_vrmulhq_m_u16): Remove.
15724         (__arm_vrmulhq_x_s8): Remove.
15725         (__arm_vrmulhq_x_s16): Remove.
15726         (__arm_vrmulhq_x_s32): Remove.
15727         (__arm_vrmulhq_x_u8): Remove.
15728         (__arm_vrmulhq_x_u16): Remove.
15729         (__arm_vrmulhq_x_u32): Remove.
15730         (__arm_vrmulhq): Remove.
15731         (__arm_vrmulhq_m): Remove.
15732         (__arm_vrmulhq_x): Remove.
15734 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
15736         * config/arm/iterators.md (MVE_INT_SU_BINARY): New.
15737         (mve_insn): Add vabdq, vhaddq, vhsubq, vmulhq, vqaddq, vqdmulhq,
15738         vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq.
15739         (supf): Add VQDMULHQ_S, VQRDMULHQ_S.
15740         * config/arm/mve.md (mve_vabdq_<supf><mode>)
15741         (@mve_vhaddq_<supf><mode>, mve_vhsubq_<supf><mode>)
15742         (mve_vmulhq_<supf><mode>, mve_vqaddq_<supf><mode>)
15743         (mve_vqdmulhq_s<mode>, mve_vqrdmulhq_s<mode>)
15744         (mve_vqrshlq_<supf><mode>, mve_vqshlq_<supf><mode>)
15745         (mve_vqsubq_<supf><mode>, @mve_vrhaddq_<supf><mode>)
15746         (mve_vrmulhq_<supf><mode>, mve_vrshlq_<supf><mode>): Merge into
15747         ...
15748         (@mve_<mve_insn>q_<supf><mode>): ... this.
15749         * config/arm/vec-common.md (avg<mode>3_floor, uavg<mode>3_floor)
15750         (avg<mode>3_ceil, uavg<mode>3_ceil): Use gen_mve_q instead of
15751         gen_mve_vhaddq / gen_mve_vrhaddq.
15753 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
15755         * config/arm/iterators.md (MVE_INT_SU_M_N_BINARY): New.
15756         (mve_insn): Add vhaddq, vhsubq, vmlaq, vmlasq, vqaddq, vqdmlahq,
15757         vqdmlashq, vqdmulhq, vqrdmlahq, vqrdmlashq, vqrdmulhq, vqsubq.
15758         (supf): Add VQDMLAHQ_M_N_S, VQDMLASHQ_M_N_S, VQRDMLAHQ_M_N_S,
15759         VQRDMLASHQ_M_N_S, VQDMULHQ_M_N_S, VQRDMULHQ_M_N_S.
15760         * config/arm/mve.md (mve_vhaddq_m_n_<supf><mode>)
15761         (mve_vhsubq_m_n_<supf><mode>, mve_vmlaq_m_n_<supf><mode>)
15762         (mve_vmlasq_m_n_<supf><mode>, mve_vqaddq_m_n_<supf><mode>)
15763         (mve_vqdmlahq_m_n_s<mode>, mve_vqdmlashq_m_n_s<mode>)
15764         (mve_vqrdmlahq_m_n_s<mode>, mve_vqrdmlashq_m_n_s<mode>)
15765         (mve_vqsubq_m_n_<supf><mode>, mve_vqdmulhq_m_n_s<mode>)
15766         (mve_vqrdmulhq_m_n_s<mode>): Merge into ...
15767         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
15769 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
15771         * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New.
15772         (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq,
15773         vqsubq.
15774         (supf): Add VQDMULHQ_N_S, VQRDMULHQ_N_S.
15775         * config/arm/mve.md (mve_vhaddq_n_<supf><mode>)
15776         (mve_vhsubq_n_<supf><mode>, mve_vqaddq_n_<supf><mode>)
15777         (mve_vqdmulhq_n_s<mode>, mve_vqrdmulhq_n_s<mode>)
15778         (mve_vqsubq_n_<supf><mode>): Merge into ...
15779         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
15781 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
15783         * config/arm/iterators.md (MVE_INT_SU_M_BINARY): New.
15784         (mve_insn): Add vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq,
15785         vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq,
15786         vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq,
15787         vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq.
15788         (supf): Add VQDMLADHQ_M_S, VQDMLADHXQ_M_S, VQDMLSDHQ_M_S,
15789         VQDMLSDHXQ_M_S, VQDMULHQ_M_S, VQRDMLADHQ_M_S, VQRDMLADHXQ_M_S,
15790         VQRDMLSDHQ_M_S, VQRDMLSDHXQ_M_S, VQRDMULHQ_M_S.
15791         * config/arm/mve.md (@mve_<mve_insn>q_m_<supf><mode>): New.
15792         (mve_vshlq_m_<supf><mode>): Merged into
15793         @mve_<mve_insn>q_m_<supf><mode>.
15794         (mve_vabdq_m_<supf><mode>): Likewise.
15795         (mve_vhaddq_m_<supf><mode>): Likewise.
15796         (mve_vhsubq_m_<supf><mode>): Likewise.
15797         (mve_vmaxq_m_<supf><mode>): Likewise.
15798         (mve_vminq_m_<supf><mode>): Likewise.
15799         (mve_vmulhq_m_<supf><mode>): Likewise.
15800         (mve_vqaddq_m_<supf><mode>): Likewise.
15801         (mve_vqrshlq_m_<supf><mode>): Likewise.
15802         (mve_vqshlq_m_<supf><mode>): Likewise.
15803         (mve_vqsubq_m_<supf><mode>): Likewise.
15804         (mve_vrhaddq_m_<supf><mode>): Likewise.
15805         (mve_vrmulhq_m_<supf><mode>): Likewise.
15806         (mve_vrshlq_m_<supf><mode>): Likewise.
15807         (mve_vqdmladhq_m_s<mode>): Likewise.
15808         (mve_vqdmladhxq_m_s<mode>): Likewise.
15809         (mve_vqdmlsdhq_m_s<mode>): Likewise.
15810         (mve_vqdmlsdhxq_m_s<mode>): Likewise.
15811         (mve_vqdmulhq_m_s<mode>): Likewise.
15812         (mve_vqrdmladhq_m_s<mode>): Likewise.
15813         (mve_vqrdmladhxq_m_s<mode>): Likewise.
15814         (mve_vqrdmlsdhq_m_s<mode>): Likewise.
15815         (mve_vqrdmlsdhxq_m_s<mode>): Likewise.
15816         (mve_vqrdmulhq_m_s<mode>): Likewise.
15818 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
15820         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_M_N): New. (vcreateq): New.
15821         * config/arm/arm-mve-builtins-base.def (vcreateq): New.
15822         * config/arm/arm-mve-builtins-base.h (vcreateq): New.
15823         * config/arm/arm_mve.h (vcreateq_f16): Remove.
15824         (vcreateq_f32): Remove.
15825         (vcreateq_u8): Remove.
15826         (vcreateq_u16): Remove.
15827         (vcreateq_u32): Remove.
15828         (vcreateq_u64): Remove.
15829         (vcreateq_s8): Remove.
15830         (vcreateq_s16): Remove.
15831         (vcreateq_s32): Remove.
15832         (vcreateq_s64): Remove.
15833         (__arm_vcreateq_u8): Remove.
15834         (__arm_vcreateq_u16): Remove.
15835         (__arm_vcreateq_u32): Remove.
15836         (__arm_vcreateq_u64): Remove.
15837         (__arm_vcreateq_s8): Remove.
15838         (__arm_vcreateq_s16): Remove.
15839         (__arm_vcreateq_s32): Remove.
15840         (__arm_vcreateq_s64): Remove.
15841         (__arm_vcreateq_f16): Remove.
15842         (__arm_vcreateq_f32): Remove.
15844 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
15846         * config/arm/iterators.md (MVE_FP_CREATE_ONLY): New.
15847         (mve_insn): Add VCREATEQ_S, VCREATEQ_U, VCREATEQ_F.
15848         * config/arm/mve.md (mve_vcreateq_f<mode>): Rename into ...
15849         (@mve_<mve_insn>q_f<mode>): ... this.
15850         (mve_vcreateq_<supf><mode>): Rename into ...
15851         (@mve_<mve_insn>q_<supf><mode>): ... this.
15853 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
15855         * config/arm/arm-mve-builtins-shapes.cc (create): New.
15856         * config/arm/arm-mve-builtins-shapes.h: (create): New.
15858 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
15860         * config/arm/arm-mve-builtins-functions.h (class
15861         unspec_mve_function_exact_insn): New.
15863 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
15865         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): New.
15866         (vorrq): New.
15867         * config/arm/arm-mve-builtins-base.def (vorrq): New.
15868         * config/arm/arm-mve-builtins-base.h (vorrq): New.
15869         * config/arm/arm-mve-builtins.cc
15870         (function_instance::has_inactive_argument): Handle vorrq.
15871         * config/arm/arm_mve.h (vorrq): Remove.
15872         (vorrq_m_n): Remove.
15873         (vorrq_m): Remove.
15874         (vorrq_x): Remove.
15875         (vorrq_u8): Remove.
15876         (vorrq_s8): Remove.
15877         (vorrq_u16): Remove.
15878         (vorrq_s16): Remove.
15879         (vorrq_u32): Remove.
15880         (vorrq_s32): Remove.
15881         (vorrq_n_u16): Remove.
15882         (vorrq_f16): Remove.
15883         (vorrq_n_s16): Remove.
15884         (vorrq_n_u32): Remove.
15885         (vorrq_f32): Remove.
15886         (vorrq_n_s32): Remove.
15887         (vorrq_m_n_s16): Remove.
15888         (vorrq_m_n_u16): Remove.
15889         (vorrq_m_n_s32): Remove.
15890         (vorrq_m_n_u32): Remove.
15891         (vorrq_m_s8): Remove.
15892         (vorrq_m_s32): Remove.
15893         (vorrq_m_s16): Remove.
15894         (vorrq_m_u8): Remove.
15895         (vorrq_m_u32): Remove.
15896         (vorrq_m_u16): Remove.
15897         (vorrq_m_f32): Remove.
15898         (vorrq_m_f16): Remove.
15899         (vorrq_x_s8): Remove.
15900         (vorrq_x_s16): Remove.
15901         (vorrq_x_s32): Remove.
15902         (vorrq_x_u8): Remove.
15903         (vorrq_x_u16): Remove.
15904         (vorrq_x_u32): Remove.
15905         (vorrq_x_f16): Remove.
15906         (vorrq_x_f32): Remove.
15907         (__arm_vorrq_u8): Remove.
15908         (__arm_vorrq_s8): Remove.
15909         (__arm_vorrq_u16): Remove.
15910         (__arm_vorrq_s16): Remove.
15911         (__arm_vorrq_u32): Remove.
15912         (__arm_vorrq_s32): Remove.
15913         (__arm_vorrq_n_u16): Remove.
15914         (__arm_vorrq_n_s16): Remove.
15915         (__arm_vorrq_n_u32): Remove.
15916         (__arm_vorrq_n_s32): Remove.
15917         (__arm_vorrq_m_n_s16): Remove.
15918         (__arm_vorrq_m_n_u16): Remove.
15919         (__arm_vorrq_m_n_s32): Remove.
15920         (__arm_vorrq_m_n_u32): Remove.
15921         (__arm_vorrq_m_s8): Remove.
15922         (__arm_vorrq_m_s32): Remove.
15923         (__arm_vorrq_m_s16): Remove.
15924         (__arm_vorrq_m_u8): Remove.
15925         (__arm_vorrq_m_u32): Remove.
15926         (__arm_vorrq_m_u16): Remove.
15927         (__arm_vorrq_x_s8): Remove.
15928         (__arm_vorrq_x_s16): Remove.
15929         (__arm_vorrq_x_s32): Remove.
15930         (__arm_vorrq_x_u8): Remove.
15931         (__arm_vorrq_x_u16): Remove.
15932         (__arm_vorrq_x_u32): Remove.
15933         (__arm_vorrq_f16): Remove.
15934         (__arm_vorrq_f32): Remove.
15935         (__arm_vorrq_m_f32): Remove.
15936         (__arm_vorrq_m_f16): Remove.
15937         (__arm_vorrq_x_f16): Remove.
15938         (__arm_vorrq_x_f32): Remove.
15939         (__arm_vorrq): Remove.
15940         (__arm_vorrq_m_n): Remove.
15941         (__arm_vorrq_m): Remove.
15942         (__arm_vorrq_x): Remove.
15944 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
15946         * config/arm/arm-mve-builtins-shapes.cc (binary_orrq): New.
15947         * config/arm/arm-mve-builtins-shapes.h (binary_orrq): New.
15948         * config/arm/arm-mve-builtins.cc (preds_m_or_none): Remove static.
15949         * config/arm/arm-mve-builtins.h (preds_m_or_none): Declare.
15951 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
15953         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M): New.
15954         (vandq,veorq): New.
15955         * config/arm/arm-mve-builtins-base.def (vandq, veorq): New.
15956         * config/arm/arm-mve-builtins-base.h (vandq, veorq): New.
15957         * config/arm/arm_mve.h (vandq): Remove.
15958         (vandq_m): Remove.
15959         (vandq_x): Remove.
15960         (vandq_u8): Remove.
15961         (vandq_s8): Remove.
15962         (vandq_u16): Remove.
15963         (vandq_s16): Remove.
15964         (vandq_u32): Remove.
15965         (vandq_s32): Remove.
15966         (vandq_f16): Remove.
15967         (vandq_f32): Remove.
15968         (vandq_m_s8): Remove.
15969         (vandq_m_s32): Remove.
15970         (vandq_m_s16): Remove.
15971         (vandq_m_u8): Remove.
15972         (vandq_m_u32): Remove.
15973         (vandq_m_u16): Remove.
15974         (vandq_m_f32): Remove.
15975         (vandq_m_f16): Remove.
15976         (vandq_x_s8): Remove.
15977         (vandq_x_s16): Remove.
15978         (vandq_x_s32): Remove.
15979         (vandq_x_u8): Remove.
15980         (vandq_x_u16): Remove.
15981         (vandq_x_u32): Remove.
15982         (vandq_x_f16): Remove.
15983         (vandq_x_f32): Remove.
15984         (__arm_vandq_u8): Remove.
15985         (__arm_vandq_s8): Remove.
15986         (__arm_vandq_u16): Remove.
15987         (__arm_vandq_s16): Remove.
15988         (__arm_vandq_u32): Remove.
15989         (__arm_vandq_s32): Remove.
15990         (__arm_vandq_m_s8): Remove.
15991         (__arm_vandq_m_s32): Remove.
15992         (__arm_vandq_m_s16): Remove.
15993         (__arm_vandq_m_u8): Remove.
15994         (__arm_vandq_m_u32): Remove.
15995         (__arm_vandq_m_u16): Remove.
15996         (__arm_vandq_x_s8): Remove.
15997         (__arm_vandq_x_s16): Remove.
15998         (__arm_vandq_x_s32): Remove.
15999         (__arm_vandq_x_u8): Remove.
16000         (__arm_vandq_x_u16): Remove.
16001         (__arm_vandq_x_u32): Remove.
16002         (__arm_vandq_f16): Remove.
16003         (__arm_vandq_f32): Remove.
16004         (__arm_vandq_m_f32): Remove.
16005         (__arm_vandq_m_f16): Remove.
16006         (__arm_vandq_x_f16): Remove.
16007         (__arm_vandq_x_f32): Remove.
16008         (__arm_vandq): Remove.
16009         (__arm_vandq_m): Remove.
16010         (__arm_vandq_x): Remove.
16011         (veorq_m): Remove.
16012         (veorq_x): Remove.
16013         (veorq_u8): Remove.
16014         (veorq_s8): Remove.
16015         (veorq_u16): Remove.
16016         (veorq_s16): Remove.
16017         (veorq_u32): Remove.
16018         (veorq_s32): Remove.
16019         (veorq_f16): Remove.
16020         (veorq_f32): Remove.
16021         (veorq_m_s8): Remove.
16022         (veorq_m_s32): Remove.
16023         (veorq_m_s16): Remove.
16024         (veorq_m_u8): Remove.
16025         (veorq_m_u32): Remove.
16026         (veorq_m_u16): Remove.
16027         (veorq_m_f32): Remove.
16028         (veorq_m_f16): Remove.
16029         (veorq_x_s8): Remove.
16030         (veorq_x_s16): Remove.
16031         (veorq_x_s32): Remove.
16032         (veorq_x_u8): Remove.
16033         (veorq_x_u16): Remove.
16034         (veorq_x_u32): Remove.
16035         (veorq_x_f16): Remove.
16036         (veorq_x_f32): Remove.
16037         (__arm_veorq_u8): Remove.
16038         (__arm_veorq_s8): Remove.
16039         (__arm_veorq_u16): Remove.
16040         (__arm_veorq_s16): Remove.
16041         (__arm_veorq_u32): Remove.
16042         (__arm_veorq_s32): Remove.
16043         (__arm_veorq_m_s8): Remove.
16044         (__arm_veorq_m_s32): Remove.
16045         (__arm_veorq_m_s16): Remove.
16046         (__arm_veorq_m_u8): Remove.
16047         (__arm_veorq_m_u32): Remove.
16048         (__arm_veorq_m_u16): Remove.
16049         (__arm_veorq_x_s8): Remove.
16050         (__arm_veorq_x_s16): Remove.
16051         (__arm_veorq_x_s32): Remove.
16052         (__arm_veorq_x_u8): Remove.
16053         (__arm_veorq_x_u16): Remove.
16054         (__arm_veorq_x_u32): Remove.
16055         (__arm_veorq_f16): Remove.
16056         (__arm_veorq_f32): Remove.
16057         (__arm_veorq_m_f32): Remove.
16058         (__arm_veorq_m_f16): Remove.
16059         (__arm_veorq_x_f16): Remove.
16060         (__arm_veorq_x_f32): Remove.
16061         (__arm_veorq): Remove.
16062         (__arm_veorq_m): Remove.
16063         (__arm_veorq_x): Remove.
16065 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
16067         * config/arm/iterators.md (MVE_INT_M_BINARY_LOGIC)
16068         (MVE_FP_M_BINARY_LOGIC): New.
16069         (MVE_INT_M_N_BINARY_LOGIC): New.
16070         (MVE_INT_N_BINARY_LOGIC): New.
16071         (mve_insn): Add vand, veor, vorr, vbic.
16072         * config/arm/mve.md (mve_vandq_m_<supf><mode>)
16073         (mve_veorq_m_<supf><mode>, mve_vorrq_m_<supf><mode>)
16074         (mve_vbicq_m_<supf><mode>): Merge into ...
16075         (@mve_<mve_insn>q_m_<supf><mode>): ... this.
16076         (mve_vandq_m_f<mode>, mve_veorq_m_f<mode>, mve_vorrq_m_f<mode>)
16077         (mve_vbicq_m_f<mode>): Merge into ...
16078         (@mve_<mve_insn>q_m_f<mode>): ... this.
16079         (mve_vorrq_n_<supf><mode>)
16080         (mve_vbicq_n_<supf><mode>): Merge into ...
16081         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
16082         (mve_vorrq_m_n_<supf><mode>, mve_vbicq_m_n_<supf><mode>): Merge
16083         into ...
16084         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
16086 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
16088         * config/arm/arm-mve-builtins-shapes.cc (binary): New.
16089         * config/arm/arm-mve-builtins-shapes.h (binary): New.
16091 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
16093         * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N):
16094         New.
16095         (vaddq, vmulq, vsubq): New.
16096         * config/arm/arm-mve-builtins-base.def (vaddq, vmulq, vsubq): New.
16097         * config/arm/arm-mve-builtins-base.h (vaddq, vmulq, vsubq): New.
16098         * config/arm/arm_mve.h (vaddq): Remove.
16099         (vaddq_m): Remove.
16100         (vaddq_x): Remove.
16101         (vaddq_n_u8): Remove.
16102         (vaddq_n_s8): Remove.
16103         (vaddq_n_u16): Remove.
16104         (vaddq_n_s16): Remove.
16105         (vaddq_n_u32): Remove.
16106         (vaddq_n_s32): Remove.
16107         (vaddq_n_f16): Remove.
16108         (vaddq_n_f32): Remove.
16109         (vaddq_m_n_s8): Remove.
16110         (vaddq_m_n_s32): Remove.
16111         (vaddq_m_n_s16): Remove.
16112         (vaddq_m_n_u8): Remove.
16113         (vaddq_m_n_u32): Remove.
16114         (vaddq_m_n_u16): Remove.
16115         (vaddq_m_s8): Remove.
16116         (vaddq_m_s32): Remove.
16117         (vaddq_m_s16): Remove.
16118         (vaddq_m_u8): Remove.
16119         (vaddq_m_u32): Remove.
16120         (vaddq_m_u16): Remove.
16121         (vaddq_m_f32): Remove.
16122         (vaddq_m_f16): Remove.
16123         (vaddq_m_n_f32): Remove.
16124         (vaddq_m_n_f16): Remove.
16125         (vaddq_s8): Remove.
16126         (vaddq_s16): Remove.
16127         (vaddq_s32): Remove.
16128         (vaddq_u8): Remove.
16129         (vaddq_u16): Remove.
16130         (vaddq_u32): Remove.
16131         (vaddq_f16): Remove.
16132         (vaddq_f32): Remove.
16133         (vaddq_x_s8): Remove.
16134         (vaddq_x_s16): Remove.
16135         (vaddq_x_s32): Remove.
16136         (vaddq_x_n_s8): Remove.
16137         (vaddq_x_n_s16): Remove.
16138         (vaddq_x_n_s32): Remove.
16139         (vaddq_x_u8): Remove.
16140         (vaddq_x_u16): Remove.
16141         (vaddq_x_u32): Remove.
16142         (vaddq_x_n_u8): Remove.
16143         (vaddq_x_n_u16): Remove.
16144         (vaddq_x_n_u32): Remove.
16145         (vaddq_x_f16): Remove.
16146         (vaddq_x_f32): Remove.
16147         (vaddq_x_n_f16): Remove.
16148         (vaddq_x_n_f32): Remove.
16149         (__arm_vaddq_n_u8): Remove.
16150         (__arm_vaddq_n_s8): Remove.
16151         (__arm_vaddq_n_u16): Remove.
16152         (__arm_vaddq_n_s16): Remove.
16153         (__arm_vaddq_n_u32): Remove.
16154         (__arm_vaddq_n_s32): Remove.
16155         (__arm_vaddq_m_n_s8): Remove.
16156         (__arm_vaddq_m_n_s32): Remove.
16157         (__arm_vaddq_m_n_s16): Remove.
16158         (__arm_vaddq_m_n_u8): Remove.
16159         (__arm_vaddq_m_n_u32): Remove.
16160         (__arm_vaddq_m_n_u16): Remove.
16161         (__arm_vaddq_m_s8): Remove.
16162         (__arm_vaddq_m_s32): Remove.
16163         (__arm_vaddq_m_s16): Remove.
16164         (__arm_vaddq_m_u8): Remove.
16165         (__arm_vaddq_m_u32): Remove.
16166         (__arm_vaddq_m_u16): Remove.
16167         (__arm_vaddq_s8): Remove.
16168         (__arm_vaddq_s16): Remove.
16169         (__arm_vaddq_s32): Remove.
16170         (__arm_vaddq_u8): Remove.
16171         (__arm_vaddq_u16): Remove.
16172         (__arm_vaddq_u32): Remove.
16173         (__arm_vaddq_x_s8): Remove.
16174         (__arm_vaddq_x_s16): Remove.
16175         (__arm_vaddq_x_s32): Remove.
16176         (__arm_vaddq_x_n_s8): Remove.
16177         (__arm_vaddq_x_n_s16): Remove.
16178         (__arm_vaddq_x_n_s32): Remove.
16179         (__arm_vaddq_x_u8): Remove.
16180         (__arm_vaddq_x_u16): Remove.
16181         (__arm_vaddq_x_u32): Remove.
16182         (__arm_vaddq_x_n_u8): Remove.
16183         (__arm_vaddq_x_n_u16): Remove.
16184         (__arm_vaddq_x_n_u32): Remove.
16185         (__arm_vaddq_n_f16): Remove.
16186         (__arm_vaddq_n_f32): Remove.
16187         (__arm_vaddq_m_f32): Remove.
16188         (__arm_vaddq_m_f16): Remove.
16189         (__arm_vaddq_m_n_f32): Remove.
16190         (__arm_vaddq_m_n_f16): Remove.
16191         (__arm_vaddq_f16): Remove.
16192         (__arm_vaddq_f32): Remove.
16193         (__arm_vaddq_x_f16): Remove.
16194         (__arm_vaddq_x_f32): Remove.
16195         (__arm_vaddq_x_n_f16): Remove.
16196         (__arm_vaddq_x_n_f32): Remove.
16197         (__arm_vaddq): Remove.
16198         (__arm_vaddq_m): Remove.
16199         (__arm_vaddq_x): Remove.
16200         (vmulq): Remove.
16201         (vmulq_m): Remove.
16202         (vmulq_x): Remove.
16203         (vmulq_u8): Remove.
16204         (vmulq_n_u8): Remove.
16205         (vmulq_s8): Remove.
16206         (vmulq_n_s8): Remove.
16207         (vmulq_u16): Remove.
16208         (vmulq_n_u16): Remove.
16209         (vmulq_s16): Remove.
16210         (vmulq_n_s16): Remove.
16211         (vmulq_u32): Remove.
16212         (vmulq_n_u32): Remove.
16213         (vmulq_s32): Remove.
16214         (vmulq_n_s32): Remove.
16215         (vmulq_n_f16): Remove.
16216         (vmulq_f16): Remove.
16217         (vmulq_n_f32): Remove.
16218         (vmulq_f32): Remove.
16219         (vmulq_m_n_s8): Remove.
16220         (vmulq_m_n_s32): Remove.
16221         (vmulq_m_n_s16): Remove.
16222         (vmulq_m_n_u8): Remove.
16223         (vmulq_m_n_u32): Remove.
16224         (vmulq_m_n_u16): Remove.
16225         (vmulq_m_s8): Remove.
16226         (vmulq_m_s32): Remove.
16227         (vmulq_m_s16): Remove.
16228         (vmulq_m_u8): Remove.
16229         (vmulq_m_u32): Remove.
16230         (vmulq_m_u16): Remove.
16231         (vmulq_m_f32): Remove.
16232         (vmulq_m_f16): Remove.
16233         (vmulq_m_n_f32): Remove.
16234         (vmulq_m_n_f16): Remove.
16235         (vmulq_x_s8): Remove.
16236         (vmulq_x_s16): Remove.
16237         (vmulq_x_s32): Remove.
16238         (vmulq_x_n_s8): Remove.
16239         (vmulq_x_n_s16): Remove.
16240         (vmulq_x_n_s32): Remove.
16241         (vmulq_x_u8): Remove.
16242         (vmulq_x_u16): Remove.
16243         (vmulq_x_u32): Remove.
16244         (vmulq_x_n_u8): Remove.
16245         (vmulq_x_n_u16): Remove.
16246         (vmulq_x_n_u32): Remove.
16247         (vmulq_x_f16): Remove.
16248         (vmulq_x_f32): Remove.
16249         (vmulq_x_n_f16): Remove.
16250         (vmulq_x_n_f32): Remove.
16251         (__arm_vmulq_u8): Remove.
16252         (__arm_vmulq_n_u8): Remove.
16253         (__arm_vmulq_s8): Remove.
16254         (__arm_vmulq_n_s8): Remove.
16255         (__arm_vmulq_u16): Remove.
16256         (__arm_vmulq_n_u16): Remove.
16257         (__arm_vmulq_s16): Remove.
16258         (__arm_vmulq_n_s16): Remove.
16259         (__arm_vmulq_u32): Remove.
16260         (__arm_vmulq_n_u32): Remove.
16261         (__arm_vmulq_s32): Remove.
16262         (__arm_vmulq_n_s32): Remove.
16263         (__arm_vmulq_m_n_s8): Remove.
16264         (__arm_vmulq_m_n_s32): Remove.
16265         (__arm_vmulq_m_n_s16): Remove.
16266         (__arm_vmulq_m_n_u8): Remove.
16267         (__arm_vmulq_m_n_u32): Remove.
16268         (__arm_vmulq_m_n_u16): Remove.
16269         (__arm_vmulq_m_s8): Remove.
16270         (__arm_vmulq_m_s32): Remove.
16271         (__arm_vmulq_m_s16): Remove.
16272         (__arm_vmulq_m_u8): Remove.
16273         (__arm_vmulq_m_u32): Remove.
16274         (__arm_vmulq_m_u16): Remove.
16275         (__arm_vmulq_x_s8): Remove.
16276         (__arm_vmulq_x_s16): Remove.
16277         (__arm_vmulq_x_s32): Remove.
16278         (__arm_vmulq_x_n_s8): Remove.
16279         (__arm_vmulq_x_n_s16): Remove.
16280         (__arm_vmulq_x_n_s32): Remove.
16281         (__arm_vmulq_x_u8): Remove.
16282         (__arm_vmulq_x_u16): Remove.
16283         (__arm_vmulq_x_u32): Remove.
16284         (__arm_vmulq_x_n_u8): Remove.
16285         (__arm_vmulq_x_n_u16): Remove.
16286         (__arm_vmulq_x_n_u32): Remove.
16287         (__arm_vmulq_n_f16): Remove.
16288         (__arm_vmulq_f16): Remove.
16289         (__arm_vmulq_n_f32): Remove.
16290         (__arm_vmulq_f32): Remove.
16291         (__arm_vmulq_m_f32): Remove.
16292         (__arm_vmulq_m_f16): Remove.
16293         (__arm_vmulq_m_n_f32): Remove.
16294         (__arm_vmulq_m_n_f16): Remove.
16295         (__arm_vmulq_x_f16): Remove.
16296         (__arm_vmulq_x_f32): Remove.
16297         (__arm_vmulq_x_n_f16): Remove.
16298         (__arm_vmulq_x_n_f32): Remove.
16299         (__arm_vmulq): Remove.
16300         (__arm_vmulq_m): Remove.
16301         (__arm_vmulq_x): Remove.
16302         (vsubq): Remove.
16303         (vsubq_m): Remove.
16304         (vsubq_x): Remove.
16305         (vsubq_n_f16): Remove.
16306         (vsubq_n_f32): Remove.
16307         (vsubq_u8): Remove.
16308         (vsubq_n_u8): Remove.
16309         (vsubq_s8): Remove.
16310         (vsubq_n_s8): Remove.
16311         (vsubq_u16): Remove.
16312         (vsubq_n_u16): Remove.
16313         (vsubq_s16): Remove.
16314         (vsubq_n_s16): Remove.
16315         (vsubq_u32): Remove.
16316         (vsubq_n_u32): Remove.
16317         (vsubq_s32): Remove.
16318         (vsubq_n_s32): Remove.
16319         (vsubq_f16): Remove.
16320         (vsubq_f32): Remove.
16321         (vsubq_m_s8): Remove.
16322         (vsubq_m_u8): Remove.
16323         (vsubq_m_s16): Remove.
16324         (vsubq_m_u16): Remove.
16325         (vsubq_m_s32): Remove.
16326         (vsubq_m_u32): Remove.
16327         (vsubq_m_n_s8): Remove.
16328         (vsubq_m_n_s32): Remove.
16329         (vsubq_m_n_s16): Remove.
16330         (vsubq_m_n_u8): Remove.
16331         (vsubq_m_n_u32): Remove.
16332         (vsubq_m_n_u16): Remove.
16333         (vsubq_m_f32): Remove.
16334         (vsubq_m_f16): Remove.
16335         (vsubq_m_n_f32): Remove.
16336         (vsubq_m_n_f16): Remove.
16337         (vsubq_x_s8): Remove.
16338         (vsubq_x_s16): Remove.
16339         (vsubq_x_s32): Remove.
16340         (vsubq_x_n_s8): Remove.
16341         (vsubq_x_n_s16): Remove.
16342         (vsubq_x_n_s32): Remove.
16343         (vsubq_x_u8): Remove.
16344         (vsubq_x_u16): Remove.
16345         (vsubq_x_u32): Remove.
16346         (vsubq_x_n_u8): Remove.
16347         (vsubq_x_n_u16): Remove.
16348         (vsubq_x_n_u32): Remove.
16349         (vsubq_x_f16): Remove.
16350         (vsubq_x_f32): Remove.
16351         (vsubq_x_n_f16): Remove.
16352         (vsubq_x_n_f32): Remove.
16353         (__arm_vsubq_u8): Remove.
16354         (__arm_vsubq_n_u8): Remove.
16355         (__arm_vsubq_s8): Remove.
16356         (__arm_vsubq_n_s8): Remove.
16357         (__arm_vsubq_u16): Remove.
16358         (__arm_vsubq_n_u16): Remove.
16359         (__arm_vsubq_s16): Remove.
16360         (__arm_vsubq_n_s16): Remove.
16361         (__arm_vsubq_u32): Remove.
16362         (__arm_vsubq_n_u32): Remove.
16363         (__arm_vsubq_s32): Remove.
16364         (__arm_vsubq_n_s32): Remove.
16365         (__arm_vsubq_m_s8): Remove.
16366         (__arm_vsubq_m_u8): Remove.
16367         (__arm_vsubq_m_s16): Remove.
16368         (__arm_vsubq_m_u16): Remove.
16369         (__arm_vsubq_m_s32): Remove.
16370         (__arm_vsubq_m_u32): Remove.
16371         (__arm_vsubq_m_n_s8): Remove.
16372         (__arm_vsubq_m_n_s32): Remove.
16373         (__arm_vsubq_m_n_s16): Remove.
16374         (__arm_vsubq_m_n_u8): Remove.
16375         (__arm_vsubq_m_n_u32): Remove.
16376         (__arm_vsubq_m_n_u16): Remove.
16377         (__arm_vsubq_x_s8): Remove.
16378         (__arm_vsubq_x_s16): Remove.
16379         (__arm_vsubq_x_s32): Remove.
16380         (__arm_vsubq_x_n_s8): Remove.
16381         (__arm_vsubq_x_n_s16): Remove.
16382         (__arm_vsubq_x_n_s32): Remove.
16383         (__arm_vsubq_x_u8): Remove.
16384         (__arm_vsubq_x_u16): Remove.
16385         (__arm_vsubq_x_u32): Remove.
16386         (__arm_vsubq_x_n_u8): Remove.
16387         (__arm_vsubq_x_n_u16): Remove.
16388         (__arm_vsubq_x_n_u32): Remove.
16389         (__arm_vsubq_n_f16): Remove.
16390         (__arm_vsubq_n_f32): Remove.
16391         (__arm_vsubq_f16): Remove.
16392         (__arm_vsubq_f32): Remove.
16393         (__arm_vsubq_m_f32): Remove.
16394         (__arm_vsubq_m_f16): Remove.
16395         (__arm_vsubq_m_n_f32): Remove.
16396         (__arm_vsubq_m_n_f16): Remove.
16397         (__arm_vsubq_x_f16): Remove.
16398         (__arm_vsubq_x_f32): Remove.
16399         (__arm_vsubq_x_n_f16): Remove.
16400         (__arm_vsubq_x_n_f32): Remove.
16401         (__arm_vsubq): Remove.
16402         (__arm_vsubq_m): Remove.
16403         (__arm_vsubq_x): Remove.
16404         * config/arm/arm_mve_builtins.def (vsubq_u, vsubq_s, vsubq_f):
16405         Remove.
16406         (vmulq_u, vmulq_s, vmulq_f): Remove.
16407         * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove.
16408         (mve_vmulq_<supf><mode>): Remove.
16410 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
16412         * config/arm/iterators.md (MVE_INT_BINARY_RTX, MVE_INT_M_BINARY)
16413         (MVE_INT_M_N_BINARY, MVE_INT_N_BINARY, MVE_FP_M_BINARY)
16414         (MVE_FP_M_N_BINARY, MVE_FP_N_BINARY, mve_addsubmul, mve_insn): New
16415         iterators.
16416         * config/arm/mve.md
16417         (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
16418         Factorize into ...
16419         (@mve_<mve_insn>q_n_f<mode>): ... this.
16420         (mve_vaddq_n_<supf><mode>, mve_vmulq_n_<supf><mode>)
16421         (mve_vsubq_n_<supf><mode>): Factorize into ...
16422         (@mve_<mve_insn>q_n_<supf><mode>): ... this.
16423         (mve_vaddq<mode>, mve_vmulq<mode>, mve_vsubq<mode>): Factorize
16424         into ...
16425         (mve_<mve_addsubmul>q<mode>): ... this.
16426         (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
16427         Factorize into ...
16428         (mve_<mve_addsubmul>q_f<mode>): ... this.
16429         (mve_vaddq_m_<supf><mode>, mve_vmulq_m_<supf><mode>)
16430         (mve_vsubq_m_<supf><mode>): Factorize into ...
16431         (@mve_<mve_insn>q_m_<supf><mode>): ... this,
16432         (mve_vaddq_m_n_<supf><mode>, mve_vmulq_m_n_<supf><mode>)
16433         (mve_vsubq_m_n_<supf><mode>): Factorize into ...
16434         (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
16435         (mve_vaddq_m_f<mode>, mve_vmulq_m_f<mode>, mve_vsubq_m_f<mode>):
16436         Factorize into ...
16437         (@mve_<mve_insn>q_m_f<mode>): ... this.
16438         (mve_vaddq_m_n_f<mode>, mve_vmulq_m_n_f<mode>)
16439         (mve_vsubq_m_n_f<mode>): Factorize into ...
16440         (@mve_<mve_insn>q_m_n_f<mode>): ... this.
16442 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
16444         * config/arm/arm-mve-builtins-functions.h (class
16445         unspec_based_mve_function_base): New.
16446         (class unspec_based_mve_function_exact_insn): New.
16448 2023-05-03  Christophe Lyon  <christophe.lyon@arm.com>
16450         * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
16451         * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
16453 2023-05-03  Murray Steele  <murray.steele@arm.com>
16454             Christophe Lyon  <christophe.lyon@arm.com>
16456         * config/arm/arm-mve-builtins-base.cc (class
16457         vuninitializedq_impl): New.
16458         * config/arm/arm-mve-builtins-base.def (vuninitializedq): New.
16459         * config/arm/arm-mve-builtins-base.h (vuninitializedq): New
16460         declaration.
16461         * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
16462         * config/arm/arm-mve-builtins-shapes.h (inherent): New
16463         declaration.
16464         * config/arm/arm_mve_types.h (__arm_vuninitializedq): Move to ...
16465         * config/arm/arm_mve.h (__arm_vuninitializedq): ... here.
16466         (__arm_vuninitializedq_u8): Remove.
16467         (__arm_vuninitializedq_u16): Remove.
16468         (__arm_vuninitializedq_u32): Remove.
16469         (__arm_vuninitializedq_u64): Remove.
16470         (__arm_vuninitializedq_s8): Remove.
16471         (__arm_vuninitializedq_s16): Remove.
16472         (__arm_vuninitializedq_s32): Remove.
16473         (__arm_vuninitializedq_s64): Remove.
16474         (__arm_vuninitializedq_f16): Remove.
16475         (__arm_vuninitializedq_f32): Remove.
16477 2023-05-03  Murray Steele  <murray.steele@arm.com>
16478             Christophe Lyon  <christophe.lyon@arm.com>
16480         * config/arm/arm-mve-builtins-base.cc (vreinterpretq_impl): New class.
16481         * config/arm/arm-mve-builtins-base.def: Define vreinterpretq.
16482         * config/arm/arm-mve-builtins-base.h (vreinterpretq): New declaration.
16483         * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): New function.
16484         (parse_type): Likewise.
16485         (parse_signature): Likewise.
16486         (build_one): Likewise.
16487         (build_all): Likewise.
16488         (overloaded_base): New struct.
16489         (unary_convert_def): Likewise.
16490         * config/arm/arm-mve-builtins-shapes.h (unary_convert): Declare.
16491         * config/arm/arm-mve-builtins.cc (TYPES_reinterpret_signed1): New
16492         macro.
16493         (TYPES_reinterpret_unsigned1): Likewise.
16494         (TYPES_reinterpret_integer): Likewise.
16495         (TYPES_reinterpret_integer1): Likewise.
16496         (TYPES_reinterpret_float1): Likewise.
16497         (TYPES_reinterpret_float): Likewise.
16498         (reinterpret_integer): New.
16499         (reinterpret_float): New.
16500         (handle_arm_mve_h): Register builtins.
16501         * config/arm/arm_mve.h (vreinterpretq_s16): Remove.
16502         (vreinterpretq_s32): Likewise.
16503         (vreinterpretq_s64): Likewise.
16504         (vreinterpretq_s8): Likewise.
16505         (vreinterpretq_u16): Likewise.
16506         (vreinterpretq_u32): Likewise.
16507         (vreinterpretq_u64): Likewise.
16508         (vreinterpretq_u8): Likewise.
16509         (vreinterpretq_f16): Likewise.
16510         (vreinterpretq_f32): Likewise.
16511         (vreinterpretq_s16_s32): Likewise.
16512         (vreinterpretq_s16_s64): Likewise.
16513         (vreinterpretq_s16_s8): Likewise.
16514         (vreinterpretq_s16_u16): Likewise.
16515         (vreinterpretq_s16_u32): Likewise.
16516         (vreinterpretq_s16_u64): Likewise.
16517         (vreinterpretq_s16_u8): Likewise.
16518         (vreinterpretq_s32_s16): Likewise.
16519         (vreinterpretq_s32_s64): Likewise.
16520         (vreinterpretq_s32_s8): Likewise.
16521         (vreinterpretq_s32_u16): Likewise.
16522         (vreinterpretq_s32_u32): Likewise.
16523         (vreinterpretq_s32_u64): Likewise.
16524         (vreinterpretq_s32_u8): Likewise.
16525         (vreinterpretq_s64_s16): Likewise.
16526         (vreinterpretq_s64_s32): Likewise.
16527         (vreinterpretq_s64_s8): Likewise.
16528         (vreinterpretq_s64_u16): Likewise.
16529         (vreinterpretq_s64_u32): Likewise.
16530         (vreinterpretq_s64_u64): Likewise.
16531         (vreinterpretq_s64_u8): Likewise.
16532         (vreinterpretq_s8_s16): Likewise.
16533         (vreinterpretq_s8_s32): Likewise.
16534         (vreinterpretq_s8_s64): Likewise.
16535         (vreinterpretq_s8_u16): Likewise.
16536         (vreinterpretq_s8_u32): Likewise.
16537         (vreinterpretq_s8_u64): Likewise.
16538         (vreinterpretq_s8_u8): Likewise.
16539         (vreinterpretq_u16_s16): Likewise.
16540         (vreinterpretq_u16_s32): Likewise.
16541         (vreinterpretq_u16_s64): Likewise.
16542         (vreinterpretq_u16_s8): Likewise.
16543         (vreinterpretq_u16_u32): Likewise.
16544         (vreinterpretq_u16_u64): Likewise.
16545         (vreinterpretq_u16_u8): Likewise.
16546         (vreinterpretq_u32_s16): Likewise.
16547         (vreinterpretq_u32_s32): Likewise.
16548         (vreinterpretq_u32_s64): Likewise.
16549         (vreinterpretq_u32_s8): Likewise.
16550         (vreinterpretq_u32_u16): Likewise.
16551         (vreinterpretq_u32_u64): Likewise.
16552         (vreinterpretq_u32_u8): Likewise.
16553         (vreinterpretq_u64_s16): Likewise.
16554         (vreinterpretq_u64_s32): Likewise.
16555         (vreinterpretq_u64_s64): Likewise.
16556         (vreinterpretq_u64_s8): Likewise.
16557         (vreinterpretq_u64_u16): Likewise.
16558         (vreinterpretq_u64_u32): Likewise.
16559         (vreinterpretq_u64_u8): Likewise.
16560         (vreinterpretq_u8_s16): Likewise.
16561         (vreinterpretq_u8_s32): Likewise.
16562         (vreinterpretq_u8_s64): Likewise.
16563         (vreinterpretq_u8_s8): Likewise.
16564         (vreinterpretq_u8_u16): Likewise.
16565         (vreinterpretq_u8_u32): Likewise.
16566         (vreinterpretq_u8_u64): Likewise.
16567         (vreinterpretq_s32_f16): Likewise.
16568         (vreinterpretq_s32_f32): Likewise.
16569         (vreinterpretq_u16_f16): Likewise.
16570         (vreinterpretq_u16_f32): Likewise.
16571         (vreinterpretq_u32_f16): Likewise.
16572         (vreinterpretq_u32_f32): Likewise.
16573         (vreinterpretq_u64_f16): Likewise.
16574         (vreinterpretq_u64_f32): Likewise.
16575         (vreinterpretq_u8_f16): Likewise.
16576         (vreinterpretq_u8_f32): Likewise.
16577         (vreinterpretq_f16_f32): Likewise.
16578         (vreinterpretq_f16_s16): Likewise.
16579         (vreinterpretq_f16_s32): Likewise.
16580         (vreinterpretq_f16_s64): Likewise.
16581         (vreinterpretq_f16_s8): Likewise.
16582         (vreinterpretq_f16_u16): Likewise.
16583         (vreinterpretq_f16_u32): Likewise.
16584         (vreinterpretq_f16_u64): Likewise.
16585         (vreinterpretq_f16_u8): Likewise.
16586         (vreinterpretq_f32_f16): Likewise.
16587         (vreinterpretq_f32_s16): Likewise.
16588         (vreinterpretq_f32_s32): Likewise.
16589         (vreinterpretq_f32_s64): Likewise.
16590         (vreinterpretq_f32_s8): Likewise.
16591         (vreinterpretq_f32_u16): Likewise.
16592         (vreinterpretq_f32_u32): Likewise.
16593         (vreinterpretq_f32_u64): Likewise.
16594         (vreinterpretq_f32_u8): Likewise.
16595         (vreinterpretq_s16_f16): Likewise.
16596         (vreinterpretq_s16_f32): Likewise.
16597         (vreinterpretq_s64_f16): Likewise.
16598         (vreinterpretq_s64_f32): Likewise.
16599         (vreinterpretq_s8_f16): Likewise.
16600         (vreinterpretq_s8_f32): Likewise.
16601         (__arm_vreinterpretq_f16): Likewise.
16602         (__arm_vreinterpretq_f32): Likewise.
16603         (__arm_vreinterpretq_s16): Likewise.
16604         (__arm_vreinterpretq_s32): Likewise.
16605         (__arm_vreinterpretq_s64): Likewise.
16606         (__arm_vreinterpretq_s8): Likewise.
16607         (__arm_vreinterpretq_u16): Likewise.
16608         (__arm_vreinterpretq_u32): Likewise.
16609         (__arm_vreinterpretq_u64): Likewise.
16610         (__arm_vreinterpretq_u8): Likewise.
16611         * config/arm/arm_mve_types.h (__arm_vreinterpretq_s16_s32): Remove.
16612         (__arm_vreinterpretq_s16_s64): Likewise.
16613         (__arm_vreinterpretq_s16_s8): Likewise.
16614         (__arm_vreinterpretq_s16_u16): Likewise.
16615         (__arm_vreinterpretq_s16_u32): Likewise.
16616         (__arm_vreinterpretq_s16_u64): Likewise.
16617         (__arm_vreinterpretq_s16_u8): Likewise.
16618         (__arm_vreinterpretq_s32_s16): Likewise.
16619         (__arm_vreinterpretq_s32_s64): Likewise.
16620         (__arm_vreinterpretq_s32_s8): Likewise.
16621         (__arm_vreinterpretq_s32_u16): Likewise.
16622         (__arm_vreinterpretq_s32_u32): Likewise.
16623         (__arm_vreinterpretq_s32_u64): Likewise.
16624         (__arm_vreinterpretq_s32_u8): Likewise.
16625         (__arm_vreinterpretq_s64_s16): Likewise.
16626         (__arm_vreinterpretq_s64_s32): Likewise.
16627         (__arm_vreinterpretq_s64_s8): Likewise.
16628         (__arm_vreinterpretq_s64_u16): Likewise.
16629         (__arm_vreinterpretq_s64_u32): Likewise.
16630         (__arm_vreinterpretq_s64_u64): Likewise.
16631         (__arm_vreinterpretq_s64_u8): Likewise.
16632         (__arm_vreinterpretq_s8_s16): Likewise.
16633         (__arm_vreinterpretq_s8_s32): Likewise.
16634         (__arm_vreinterpretq_s8_s64): Likewise.
16635         (__arm_vreinterpretq_s8_u16): Likewise.
16636         (__arm_vreinterpretq_s8_u32): Likewise.
16637         (__arm_vreinterpretq_s8_u64): Likewise.
16638         (__arm_vreinterpretq_s8_u8): Likewise.
16639         (__arm_vreinterpretq_u16_s16): Likewise.
16640         (__arm_vreinterpretq_u16_s32): Likewise.
16641         (__arm_vreinterpretq_u16_s64): Likewise.
16642         (__arm_vreinterpretq_u16_s8): Likewise.
16643         (__arm_vreinterpretq_u16_u32): Likewise.
16644         (__arm_vreinterpretq_u16_u64): Likewise.
16645         (__arm_vreinterpretq_u16_u8): Likewise.
16646         (__arm_vreinterpretq_u32_s16): Likewise.
16647         (__arm_vreinterpretq_u32_s32): Likewise.
16648         (__arm_vreinterpretq_u32_s64): Likewise.
16649         (__arm_vreinterpretq_u32_s8): Likewise.
16650         (__arm_vreinterpretq_u32_u16): Likewise.
16651         (__arm_vreinterpretq_u32_u64): Likewise.
16652         (__arm_vreinterpretq_u32_u8): Likewise.
16653         (__arm_vreinterpretq_u64_s16): Likewise.
16654         (__arm_vreinterpretq_u64_s32): Likewise.
16655         (__arm_vreinterpretq_u64_s64): Likewise.
16656         (__arm_vreinterpretq_u64_s8): Likewise.
16657         (__arm_vreinterpretq_u64_u16): Likewise.
16658         (__arm_vreinterpretq_u64_u32): Likewise.
16659         (__arm_vreinterpretq_u64_u8): Likewise.
16660         (__arm_vreinterpretq_u8_s16): Likewise.
16661         (__arm_vreinterpretq_u8_s32): Likewise.
16662         (__arm_vreinterpretq_u8_s64): Likewise.
16663         (__arm_vreinterpretq_u8_s8): Likewise.
16664         (__arm_vreinterpretq_u8_u16): Likewise.
16665         (__arm_vreinterpretq_u8_u32): Likewise.
16666         (__arm_vreinterpretq_u8_u64): Likewise.
16667         (__arm_vreinterpretq_s32_f16): Likewise.
16668         (__arm_vreinterpretq_s32_f32): Likewise.
16669         (__arm_vreinterpretq_s16_f16): Likewise.
16670         (__arm_vreinterpretq_s16_f32): Likewise.
16671         (__arm_vreinterpretq_s64_f16): Likewise.
16672         (__arm_vreinterpretq_s64_f32): Likewise.
16673         (__arm_vreinterpretq_s8_f16): Likewise.
16674         (__arm_vreinterpretq_s8_f32): Likewise.
16675         (__arm_vreinterpretq_u16_f16): Likewise.
16676         (__arm_vreinterpretq_u16_f32): Likewise.
16677         (__arm_vreinterpretq_u32_f16): Likewise.
16678         (__arm_vreinterpretq_u32_f32): Likewise.
16679         (__arm_vreinterpretq_u64_f16): Likewise.
16680         (__arm_vreinterpretq_u64_f32): Likewise.
16681         (__arm_vreinterpretq_u8_f16): Likewise.
16682         (__arm_vreinterpretq_u8_f32): Likewise.
16683         (__arm_vreinterpretq_f16_f32): Likewise.
16684         (__arm_vreinterpretq_f16_s16): Likewise.
16685         (__arm_vreinterpretq_f16_s32): Likewise.
16686         (__arm_vreinterpretq_f16_s64): Likewise.
16687         (__arm_vreinterpretq_f16_s8): Likewise.
16688         (__arm_vreinterpretq_f16_u16): Likewise.
16689         (__arm_vreinterpretq_f16_u32): Likewise.
16690         (__arm_vreinterpretq_f16_u64): Likewise.
16691         (__arm_vreinterpretq_f16_u8): Likewise.
16692         (__arm_vreinterpretq_f32_f16): Likewise.
16693         (__arm_vreinterpretq_f32_s16): Likewise.
16694         (__arm_vreinterpretq_f32_s32): Likewise.
16695         (__arm_vreinterpretq_f32_s64): Likewise.
16696         (__arm_vreinterpretq_f32_s8): Likewise.
16697         (__arm_vreinterpretq_f32_u16): Likewise.
16698         (__arm_vreinterpretq_f32_u32): Likewise.
16699         (__arm_vreinterpretq_f32_u64): Likewise.
16700         (__arm_vreinterpretq_f32_u8): Likewise.
16701         (__arm_vreinterpretq_s16): Likewise.
16702         (__arm_vreinterpretq_s32): Likewise.
16703         (__arm_vreinterpretq_s64): Likewise.
16704         (__arm_vreinterpretq_s8): Likewise.
16705         (__arm_vreinterpretq_u16): Likewise.
16706         (__arm_vreinterpretq_u32): Likewise.
16707         (__arm_vreinterpretq_u64): Likewise.
16708         (__arm_vreinterpretq_u8): Likewise.
16709         (__arm_vreinterpretq_f16): Likewise.
16710         (__arm_vreinterpretq_f32): Likewise.
16711         * config/arm/mve.md (@arm_mve_reinterpret<mode>): New pattern.
16712         * config/arm/unspecs.md: (REINTERPRET): New unspec.
16714 2023-05-03  Murray Steele  <murray.steele@arm.com>
16715             Christophe Lyon  <christophe.lyon@arm.com>
16716             Christophe Lyon   <christophe.lyon@arm.com
16718         * config.gcc: Add arm-mve-builtins-base.o and
16719         arm-mve-builtins-shapes.o to extra_objs.
16720         * config/arm/arm-builtins.cc (arm_builtin_decl): Handle MVE builtin
16721         numberspace.
16722         (arm_expand_builtin): Likewise
16723         (arm_check_builtin_call): Likewise
16724         (arm_describe_resolver): Likewise.
16725         * config/arm/arm-builtins.h (enum resolver_ident): Add
16726         arm_mve_resolver.
16727         * config/arm/arm-c.cc (arm_pragma_arm): Handle new pragma.
16728         (arm_resolve_overloaded_builtin): Handle MVE builtins.
16729         (arm_register_target_pragmas): Register arm_check_builtin_call.
16730         * config/arm/arm-mve-builtins.cc (class registered_function): New
16731         class.
16732         (struct registered_function_hasher): New struct.
16733         (pred_suffixes): New table.
16734         (mode_suffixes): New table.
16735         (type_suffix_info): New table.
16736         (TYPES_float16): New.
16737         (TYPES_all_float): New.
16738         (TYPES_integer_8): New.
16739         (TYPES_integer_8_16): New.
16740         (TYPES_integer_16_32): New.
16741         (TYPES_integer_32): New.
16742         (TYPES_signed_16_32): New.
16743         (TYPES_signed_32): New.
16744         (TYPES_all_signed): New.
16745         (TYPES_all_unsigned): New.
16746         (TYPES_all_integer): New.
16747         (TYPES_all_integer_with_64): New.
16748         (DEF_VECTOR_TYPE): New.
16749         (DEF_DOUBLE_TYPE): New.
16750         (DEF_MVE_TYPES_ARRAY): New.
16751         (all_integer): New.
16752         (all_integer_with_64): New.
16753         (float16): New.
16754         (all_float): New.
16755         (all_signed): New.
16756         (all_unsigned): New.
16757         (integer_8): New.
16758         (integer_8_16): New.
16759         (integer_16_32): New.
16760         (integer_32): New.
16761         (signed_16_32): New.
16762         (signed_32): New.
16763         (register_vector_type): Use void_type_node for mve.fp-only types when
16764         mve.fp is not enabled.
16765         (register_builtin_tuple_types): Likewise.
16766         (handle_arm_mve_h): New function..
16767         (matches_type_p): Likewise..
16768         (report_out_of_range): Likewise.
16769         (report_not_enum): Likewise.
16770         (report_missing_float): Likewise.
16771         (report_non_ice): Likewise.
16772         (check_requires_float): Likewise.
16773         (function_instance::hash): Likewise
16774         (function_instance::call_properties): Likewise.
16775         (function_instance::reads_global_state_p): Likewise.
16776         (function_instance::modifies_global_state_p): Likewise.
16777         (function_instance::could_trap_p): Likewise.
16778         (function_instance::has_inactive_argument): Likewise.
16779         (registered_function_hasher::hash): Likewise.
16780         (registered_function_hasher::equal): Likewise.
16781         (function_builder::function_builder): Likewise.
16782         (function_builder::~function_builder): Likewise.
16783         (function_builder::append_name): Likewise.
16784         (function_builder::finish_name): Likewise.
16785         (function_builder::get_name): Likewise.
16786         (add_attribute): Likewise.
16787         (function_builder::get_attributes): Likewise.
16788         (function_builder::add_function): Likewise.
16789         (function_builder::add_unique_function): Likewise.
16790         (function_builder::add_overloaded_function): Likewise.
16791         (function_builder::add_overloaded_functions): Likewise.
16792         (function_builder::register_function_group): Likewise.
16793         (function_call_info::function_call_info): Likewise.
16794         (function_resolver::function_resolver): Likewise.
16795         (function_resolver::get_vector_type): Likewise.
16796         (function_resolver::get_scalar_type_name): Likewise.
16797         (function_resolver::get_argument_type): Likewise.
16798         (function_resolver::scalar_argument_p): Likewise.
16799         (function_resolver::report_no_such_form): Likewise.
16800         (function_resolver::lookup_form): Likewise.
16801         (function_resolver::resolve_to): Likewise.
16802         (function_resolver::infer_vector_or_tuple_type): Likewise.
16803         (function_resolver::infer_vector_type): Likewise.
16804         (function_resolver::require_vector_or_scalar_type): Likewise.
16805         (function_resolver::require_vector_type): Likewise.
16806         (function_resolver::require_matching_vector_type): Likewise.
16807         (function_resolver::require_derived_vector_type): Likewise.
16808         (function_resolver::require_derived_scalar_type): Likewise.
16809         (function_resolver::require_integer_immediate): Likewise.
16810         (function_resolver::require_scalar_type): Likewise.
16811         (function_resolver::check_num_arguments): Likewise.
16812         (function_resolver::check_gp_argument): Likewise.
16813         (function_resolver::finish_opt_n_resolution): Likewise.
16814         (function_resolver::resolve_unary): Likewise.
16815         (function_resolver::resolve_unary_n): Likewise.
16816         (function_resolver::resolve_uniform): Likewise.
16817         (function_resolver::resolve_uniform_opt_n): Likewise.
16818         (function_resolver::resolve): Likewise.
16819         (function_checker::function_checker): Likewise.
16820         (function_checker::argument_exists_p): Likewise.
16821         (function_checker::require_immediate): Likewise.
16822         (function_checker::require_immediate_enum): Likewise.
16823         (function_checker::require_immediate_range): Likewise.
16824         (function_checker::check): Likewise.
16825         (gimple_folder::gimple_folder): Likewise.
16826         (gimple_folder::fold): Likewise.
16827         (function_expander::function_expander): Likewise.
16828         (function_expander::direct_optab_handler): Likewise.
16829         (function_expander::get_fallback_value): Likewise.
16830         (function_expander::get_reg_target): Likewise.
16831         (function_expander::add_output_operand): Likewise.
16832         (function_expander::add_input_operand): Likewise.
16833         (function_expander::add_integer_operand): Likewise.
16834         (function_expander::generate_insn): Likewise.
16835         (function_expander::use_exact_insn): Likewise.
16836         (function_expander::use_unpred_insn): Likewise.
16837         (function_expander::use_pred_x_insn): Likewise.
16838         (function_expander::use_cond_insn): Likewise.
16839         (function_expander::map_to_rtx_codes): Likewise.
16840         (function_expander::expand): Likewise.
16841         (resolve_overloaded_builtin): Likewise.
16842         (check_builtin_call): Likewise.
16843         (gimple_fold_builtin): Likewise.
16844         (expand_builtin): Likewise.
16845         (gt_ggc_mx): Likewise.
16846         (gt_pch_nx): Likewise.
16847         (gt_pch_nx): Likewise.
16848         * config/arm/arm-mve-builtins.def(s8): Define new type suffix.
16849         (s16): Likewise.
16850         (s32): Likewise.
16851         (s64): Likewise.
16852         (u8): Likewise.
16853         (u16): Likewise.
16854         (u32): Likewise.
16855         (u64): Likewise.
16856         (f16): Likewise.
16857         (f32): Likewise.
16858         (n): New mode.
16859         (offset): New mode.
16860         * config/arm/arm-mve-builtins.h (MAX_TUPLE_SIZE): New constant.
16861         (CP_READ_FPCR): Likewise.
16862         (CP_RAISE_FP_EXCEPTIONS): Likewise.
16863         (CP_READ_MEMORY): Likewise.
16864         (CP_WRITE_MEMORY): Likewise.
16865         (enum units_index): New enum.
16866         (enum predication_index): New.
16867         (enum type_class_index): New.
16868         (enum mode_suffix_index): New enum.
16869         (enum type_suffix_index): New.
16870         (struct mode_suffix_info): New struct.
16871         (struct type_suffix_info): New.
16872         (struct function_group_info): Likewise.
16873         (class function_instance): Likewise.
16874         (class registered_function): Likewise.
16875         (class function_builder): Likewise.
16876         (class function_call_info): Likewise.
16877         (class function_resolver): Likewise.
16878         (class function_checker): Likewise.
16879         (class gimple_folder): Likewise.
16880         (class function_expander): Likewise.
16881         (get_mve_pred16_t): Likewise.
16882         (find_mode_suffix): New function.
16883         (class function_base): Likewise.
16884         (class function_shape): Likewise.
16885         (function_instance::operator==): New function.
16886         (function_instance::operator!=): Likewise.
16887         (function_instance::vectors_per_tuple): Likewise.
16888         (function_instance::mode_suffix): Likewise.
16889         (function_instance::type_suffix): Likewise.
16890         (function_instance::scalar_type): Likewise.
16891         (function_instance::vector_type): Likewise.
16892         (function_instance::tuple_type): Likewise.
16893         (function_instance::vector_mode): Likewise.
16894         (function_call_info::function_returns_void_p): Likewise.
16895         (function_base::call_properties): Likewise.
16896         * config/arm/arm-protos.h (enum arm_builtin_class): Add
16897         ARM_BUILTIN_MVE.
16898         (handle_arm_mve_h): New.
16899         (resolve_overloaded_builtin): New.
16900         (check_builtin_call): New.
16901         (gimple_fold_builtin): New.
16902         (expand_builtin): New.
16903         * config/arm/arm.cc (TARGET_GIMPLE_FOLD_BUILTIN): Define as
16904         arm_gimple_fold_builtin.
16905         (arm_gimple_fold_builtin): New function.
16906         * config/arm/arm_mve.h: Use new arm_mve.h pragma.
16907         * config/arm/predicates.md (arm_any_register_operand): New predicate.
16908         * config/arm/t-arm: (arm-mve-builtins.o): Add includes.
16909         (arm-mve-builtins-shapes.o): New target.
16910         (arm-mve-builtins-base.o): New target.
16911         * config/arm/arm-mve-builtins-base.cc: New file.
16912         * config/arm/arm-mve-builtins-base.def: New file.
16913         * config/arm/arm-mve-builtins-base.h: New file.
16914         * config/arm/arm-mve-builtins-functions.h: New file.
16915         * config/arm/arm-mve-builtins-shapes.cc: New file.
16916         * config/arm/arm-mve-builtins-shapes.h: New file.
16918 2023-05-03  Murray Steele  <murray.steele@arm.com>
16919             Christophe Lyon  <christophe.lyon@arm.com>
16920             Christophe Lyon   <christophe.lyon@arm.com>
16922         * config/arm/arm-builtins.cc (arm_general_add_builtin_function):
16923         New function.
16924         (arm_init_builtin): Use arm_general_add_builtin_function instead
16925         of arm_add_builtin_function.
16926         (arm_init_acle_builtins): Likewise.
16927         (arm_init_mve_builtins): Likewise.
16928         (arm_init_crypto_builtins): Likewise.
16929         (arm_init_builtins): Likewise.
16930         (arm_general_builtin_decl): New function.
16931         (arm_builtin_decl): Defer to numberspace-specialized functions.
16932         (arm_expand_builtin_args): Rename into arm_general_expand_builtin_args.
16933         (arm_expand_builtin_1): Rename into arm_general_expand_builtin_1 and ...
16934         (arm_general_expand_builtin_1): ... specialize for general builtins.
16935         (arm_expand_acle_builtin): Use arm_general_expand_builtin
16936         instead of arm_expand_builtin.
16937         (arm_expand_mve_builtin): Likewise.
16938         (arm_expand_neon_builtin): Likewise.
16939         (arm_expand_vfp_builtin): Likewise.
16940         (arm_general_expand_builtin): New function.
16941         (arm_expand_builtin): Specialize for general builtins.
16942         (arm_general_check_builtin_call): New function.
16943         (arm_check_builtin_call): Specialize for general builtins.
16944         (arm_describe_resolver): Validate numberspace.
16945         (arm_cde_end_args): Likewise.
16946         * config/arm/arm-protos.h (enum arm_builtin_class): New enum.
16947         (ARM_BUILTIN_SHIFT, ARM_BUILTIN_CLASS): New constants.
16949 2023-05-03  Martin Liska  <mliska@suse.cz>
16951         PR target/109713
16952         * config/riscv/sync.md: Add gcc_unreachable to a switch.
16954 2023-05-03  Richard Biener  <rguenther@suse.de>
16956         * tree-ssa-loop-split.cc (split_at_bb_p): Avoid last_stmt.
16957         (patch_loop_exit): Likewise.
16958         (connect_loops): Likewise.
16959         (split_loop): Likewise.
16960         (control_dep_semi_invariant_p): Likewise.
16961         (do_split_loop_on_cond): Likewise.
16962         (split_loop_on_cond): Likewise.
16963         * tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
16964         Likewise.
16965         (simplify_loop_version): Likewise.
16966         (evaluate_bbs): Likewise.
16967         (find_loop_guard): Likewise.
16968         (clean_up_after_unswitching): Likewise.
16969         * tree-ssa-math-opts.cc (maybe_optimize_guarding_check):
16970         Likewise.
16971         (optimize_spaceship): Take a gcond * argument, avoid
16972         last_stmt.
16973         (math_opts_dom_walker::after_dom_children): Adjust call to
16974         optimize_spaceship.
16975         * tree-vrp.cc (maybe_set_nonzero_bits): Avoid last_stmt.
16976         * value-pointer-equiv.cc (pointer_equiv_analyzer::visit_edge):
16977         Likewise.
16979 2023-05-03  Andreas Schwab  <schwab@suse.de>
16981         * config/riscv/linux.h (LIB_SPEC): Don't redefine.
16983 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
16985         * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
16986         New function.
16987         (class vlseg): New class.
16988         (class vsseg): Ditto.
16989         (class vlsseg): Ditto.
16990         (class vssseg): Ditto.
16991         (class seg_indexed_load): Ditto.
16992         (class seg_indexed_store): Ditto.
16993         (class vlsegff): Ditto.
16994         (BASE): Ditto.
16995         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16996         * config/riscv/riscv-vector-builtins-functions.def (vlseg):
16997         Ditto.
16998         (vsseg): Ditto.
16999         (vlsseg): Ditto.
17000         (vssseg): Ditto.
17001         (vluxseg): Ditto.
17002         (vloxseg): Ditto.
17003         (vsuxseg): Ditto.
17004         (vsoxseg): Ditto.
17005         (vlsegff): Ditto.
17006         * config/riscv/riscv-vector-builtins-shapes.cc (struct
17007         seg_loadstore_def): Ditto.
17008         (struct seg_indexed_loadstore_def): Ditto.
17009         (struct seg_fault_load_def): Ditto.
17010         (SHAPE): Ditto.
17011         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
17012         * config/riscv/riscv-vector-builtins.cc
17013         (function_builder::append_nf): New function.
17014         * config/riscv/riscv-vector-builtins.def (vfloat32m1x2_t):
17015         Change ptr from double into float.
17016         (vfloat32m1x3_t): Ditto.
17017         (vfloat32m1x4_t): Ditto.
17018         (vfloat32m1x5_t): Ditto.
17019         (vfloat32m1x6_t): Ditto.
17020         (vfloat32m1x7_t): Ditto.
17021         (vfloat32m1x8_t): Ditto.
17022         (vfloat32m2x2_t): Ditto.
17023         (vfloat32m2x3_t): Ditto.
17024         (vfloat32m2x4_t): Ditto.
17025         (vfloat32m4x2_t): Ditto.
17026         * config/riscv/riscv-vector-builtins.h: Add segment intrinsics.
17027         * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Adapt for
17028         segment ff load.
17029         * config/riscv/riscv.md: Add segment instructions.
17030         * config/riscv/vector-iterators.md: Support segment intrinsics.
17031         * config/riscv/vector.md (@pred_unit_strided_load<mode>): New
17032         pattern.
17033         (@pred_unit_strided_store<mode>): Ditto.
17034         (@pred_strided_load<mode>): Ditto.
17035         (@pred_strided_store<mode>): Ditto.
17036         (@pred_fault_load<mode>): Ditto.
17037         (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
17038         (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
17039         (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
17040         (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
17041         (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
17042         (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
17043         (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
17044         (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
17045         (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
17046         (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
17047         (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
17048         (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
17049         (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
17050         (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
17052 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17054         * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
17055         tuple type support.
17056         (inttype): Ditto.
17057         (floattype): Ditto.
17058         (main): Ditto.
17059         * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
17060         * config/riscv/riscv-vector-builtins-functions.def (vset): Add
17061         tuple type vset.
17062         (vget): Add tuple type vget.
17063         * config/riscv/riscv-vector-builtins-types.def
17064         (DEF_RVV_TUPLE_OPS): New macro.
17065         (vint8mf8x2_t): Ditto.
17066         (vuint8mf8x2_t): Ditto.
17067         (vint8mf8x3_t): Ditto.
17068         (vuint8mf8x3_t): Ditto.
17069         (vint8mf8x4_t): Ditto.
17070         (vuint8mf8x4_t): Ditto.
17071         (vint8mf8x5_t): Ditto.
17072         (vuint8mf8x5_t): Ditto.
17073         (vint8mf8x6_t): Ditto.
17074         (vuint8mf8x6_t): Ditto.
17075         (vint8mf8x7_t): Ditto.
17076         (vuint8mf8x7_t): Ditto.
17077         (vint8mf8x8_t): Ditto.
17078         (vuint8mf8x8_t): Ditto.
17079         (vint8mf4x2_t): Ditto.
17080         (vuint8mf4x2_t): Ditto.
17081         (vint8mf4x3_t): Ditto.
17082         (vuint8mf4x3_t): Ditto.
17083         (vint8mf4x4_t): Ditto.
17084         (vuint8mf4x4_t): Ditto.
17085         (vint8mf4x5_t): Ditto.
17086         (vuint8mf4x5_t): Ditto.
17087         (vint8mf4x6_t): Ditto.
17088         (vuint8mf4x6_t): Ditto.
17089         (vint8mf4x7_t): Ditto.
17090         (vuint8mf4x7_t): Ditto.
17091         (vint8mf4x8_t): Ditto.
17092         (vuint8mf4x8_t): Ditto.
17093         (vint8mf2x2_t): Ditto.
17094         (vuint8mf2x2_t): Ditto.
17095         (vint8mf2x3_t): Ditto.
17096         (vuint8mf2x3_t): Ditto.
17097         (vint8mf2x4_t): Ditto.
17098         (vuint8mf2x4_t): Ditto.
17099         (vint8mf2x5_t): Ditto.
17100         (vuint8mf2x5_t): Ditto.
17101         (vint8mf2x6_t): Ditto.
17102         (vuint8mf2x6_t): Ditto.
17103         (vint8mf2x7_t): Ditto.
17104         (vuint8mf2x7_t): Ditto.
17105         (vint8mf2x8_t): Ditto.
17106         (vuint8mf2x8_t): Ditto.
17107         (vint8m1x2_t): Ditto.
17108         (vuint8m1x2_t): Ditto.
17109         (vint8m1x3_t): Ditto.
17110         (vuint8m1x3_t): Ditto.
17111         (vint8m1x4_t): Ditto.
17112         (vuint8m1x4_t): Ditto.
17113         (vint8m1x5_t): Ditto.
17114         (vuint8m1x5_t): Ditto.
17115         (vint8m1x6_t): Ditto.
17116         (vuint8m1x6_t): Ditto.
17117         (vint8m1x7_t): Ditto.
17118         (vuint8m1x7_t): Ditto.
17119         (vint8m1x8_t): Ditto.
17120         (vuint8m1x8_t): Ditto.
17121         (vint8m2x2_t): Ditto.
17122         (vuint8m2x2_t): Ditto.
17123         (vint8m2x3_t): Ditto.
17124         (vuint8m2x3_t): Ditto.
17125         (vint8m2x4_t): Ditto.
17126         (vuint8m2x4_t): Ditto.
17127         (vint8m4x2_t): Ditto.
17128         (vuint8m4x2_t): Ditto.
17129         (vint16mf4x2_t): Ditto.
17130         (vuint16mf4x2_t): Ditto.
17131         (vint16mf4x3_t): Ditto.
17132         (vuint16mf4x3_t): Ditto.
17133         (vint16mf4x4_t): Ditto.
17134         (vuint16mf4x4_t): Ditto.
17135         (vint16mf4x5_t): Ditto.
17136         (vuint16mf4x5_t): Ditto.
17137         (vint16mf4x6_t): Ditto.
17138         (vuint16mf4x6_t): Ditto.
17139         (vint16mf4x7_t): Ditto.
17140         (vuint16mf4x7_t): Ditto.
17141         (vint16mf4x8_t): Ditto.
17142         (vuint16mf4x8_t): Ditto.
17143         (vint16mf2x2_t): Ditto.
17144         (vuint16mf2x2_t): Ditto.
17145         (vint16mf2x3_t): Ditto.
17146         (vuint16mf2x3_t): Ditto.
17147         (vint16mf2x4_t): Ditto.
17148         (vuint16mf2x4_t): Ditto.
17149         (vint16mf2x5_t): Ditto.
17150         (vuint16mf2x5_t): Ditto.
17151         (vint16mf2x6_t): Ditto.
17152         (vuint16mf2x6_t): Ditto.
17153         (vint16mf2x7_t): Ditto.
17154         (vuint16mf2x7_t): Ditto.
17155         (vint16mf2x8_t): Ditto.
17156         (vuint16mf2x8_t): Ditto.
17157         (vint16m1x2_t): Ditto.
17158         (vuint16m1x2_t): Ditto.
17159         (vint16m1x3_t): Ditto.
17160         (vuint16m1x3_t): Ditto.
17161         (vint16m1x4_t): Ditto.
17162         (vuint16m1x4_t): Ditto.
17163         (vint16m1x5_t): Ditto.
17164         (vuint16m1x5_t): Ditto.
17165         (vint16m1x6_t): Ditto.
17166         (vuint16m1x6_t): Ditto.
17167         (vint16m1x7_t): Ditto.
17168         (vuint16m1x7_t): Ditto.
17169         (vint16m1x8_t): Ditto.
17170         (vuint16m1x8_t): Ditto.
17171         (vint16m2x2_t): Ditto.
17172         (vuint16m2x2_t): Ditto.
17173         (vint16m2x3_t): Ditto.
17174         (vuint16m2x3_t): Ditto.
17175         (vint16m2x4_t): Ditto.
17176         (vuint16m2x4_t): Ditto.
17177         (vint16m4x2_t): Ditto.
17178         (vuint16m4x2_t): Ditto.
17179         (vint32mf2x2_t): Ditto.
17180         (vuint32mf2x2_t): Ditto.
17181         (vint32mf2x3_t): Ditto.
17182         (vuint32mf2x3_t): Ditto.
17183         (vint32mf2x4_t): Ditto.
17184         (vuint32mf2x4_t): Ditto.
17185         (vint32mf2x5_t): Ditto.
17186         (vuint32mf2x5_t): Ditto.
17187         (vint32mf2x6_t): Ditto.
17188         (vuint32mf2x6_t): Ditto.
17189         (vint32mf2x7_t): Ditto.
17190         (vuint32mf2x7_t): Ditto.
17191         (vint32mf2x8_t): Ditto.
17192         (vuint32mf2x8_t): Ditto.
17193         (vint32m1x2_t): Ditto.
17194         (vuint32m1x2_t): Ditto.
17195         (vint32m1x3_t): Ditto.
17196         (vuint32m1x3_t): Ditto.
17197         (vint32m1x4_t): Ditto.
17198         (vuint32m1x4_t): Ditto.
17199         (vint32m1x5_t): Ditto.
17200         (vuint32m1x5_t): Ditto.
17201         (vint32m1x6_t): Ditto.
17202         (vuint32m1x6_t): Ditto.
17203         (vint32m1x7_t): Ditto.
17204         (vuint32m1x7_t): Ditto.
17205         (vint32m1x8_t): Ditto.
17206         (vuint32m1x8_t): Ditto.
17207         (vint32m2x2_t): Ditto.
17208         (vuint32m2x2_t): Ditto.
17209         (vint32m2x3_t): Ditto.
17210         (vuint32m2x3_t): Ditto.
17211         (vint32m2x4_t): Ditto.
17212         (vuint32m2x4_t): Ditto.
17213         (vint32m4x2_t): Ditto.
17214         (vuint32m4x2_t): Ditto.
17215         (vint64m1x2_t): Ditto.
17216         (vuint64m1x2_t): Ditto.
17217         (vint64m1x3_t): Ditto.
17218         (vuint64m1x3_t): Ditto.
17219         (vint64m1x4_t): Ditto.
17220         (vuint64m1x4_t): Ditto.
17221         (vint64m1x5_t): Ditto.
17222         (vuint64m1x5_t): Ditto.
17223         (vint64m1x6_t): Ditto.
17224         (vuint64m1x6_t): Ditto.
17225         (vint64m1x7_t): Ditto.
17226         (vuint64m1x7_t): Ditto.
17227         (vint64m1x8_t): Ditto.
17228         (vuint64m1x8_t): Ditto.
17229         (vint64m2x2_t): Ditto.
17230         (vuint64m2x2_t): Ditto.
17231         (vint64m2x3_t): Ditto.
17232         (vuint64m2x3_t): Ditto.
17233         (vint64m2x4_t): Ditto.
17234         (vuint64m2x4_t): Ditto.
17235         (vint64m4x2_t): Ditto.
17236         (vuint64m4x2_t): Ditto.
17237         (vfloat32mf2x2_t): Ditto.
17238         (vfloat32mf2x3_t): Ditto.
17239         (vfloat32mf2x4_t): Ditto.
17240         (vfloat32mf2x5_t): Ditto.
17241         (vfloat32mf2x6_t): Ditto.
17242         (vfloat32mf2x7_t): Ditto.
17243         (vfloat32mf2x8_t): Ditto.
17244         (vfloat32m1x2_t): Ditto.
17245         (vfloat32m1x3_t): Ditto.
17246         (vfloat32m1x4_t): Ditto.
17247         (vfloat32m1x5_t): Ditto.
17248         (vfloat32m1x6_t): Ditto.
17249         (vfloat32m1x7_t): Ditto.
17250         (vfloat32m1x8_t): Ditto.
17251         (vfloat32m2x2_t): Ditto.
17252         (vfloat32m2x3_t): Ditto.
17253         (vfloat32m2x4_t): Ditto.
17254         (vfloat32m4x2_t): Ditto.
17255         (vfloat64m1x2_t): Ditto.
17256         (vfloat64m1x3_t): Ditto.
17257         (vfloat64m1x4_t): Ditto.
17258         (vfloat64m1x5_t): Ditto.
17259         (vfloat64m1x6_t): Ditto.
17260         (vfloat64m1x7_t): Ditto.
17261         (vfloat64m1x8_t): Ditto.
17262         (vfloat64m2x2_t): Ditto.
17263         (vfloat64m2x3_t): Ditto.
17264         (vfloat64m2x4_t): Ditto.
17265         (vfloat64m4x2_t): Ditto.
17266         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_OPS):
17267         Ditto.
17268         (DEF_RVV_TYPE_INDEX): Ditto.
17269         (rvv_arg_type_info::get_tuple_subpart_type): New function.
17270         (DEF_RVV_TUPLE_TYPE): New macro.
17271         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE_INDEX):
17272         Adapt for tuple vget/vset support.
17273         (vint8mf4_t): Ditto.
17274         (vuint8mf4_t): Ditto.
17275         (vint8mf2_t): Ditto.
17276         (vuint8mf2_t): Ditto.
17277         (vint8m1_t): Ditto.
17278         (vuint8m1_t): Ditto.
17279         (vint8m2_t): Ditto.
17280         (vuint8m2_t): Ditto.
17281         (vint8m4_t): Ditto.
17282         (vuint8m4_t): Ditto.
17283         (vint8m8_t): Ditto.
17284         (vuint8m8_t): Ditto.
17285         (vint16mf4_t): Ditto.
17286         (vuint16mf4_t): Ditto.
17287         (vint16mf2_t): Ditto.
17288         (vuint16mf2_t): Ditto.
17289         (vint16m1_t): Ditto.
17290         (vuint16m1_t): Ditto.
17291         (vint16m2_t): Ditto.
17292         (vuint16m2_t): Ditto.
17293         (vint16m4_t): Ditto.
17294         (vuint16m4_t): Ditto.
17295         (vint16m8_t): Ditto.
17296         (vuint16m8_t): Ditto.
17297         (vint32mf2_t): Ditto.
17298         (vuint32mf2_t): Ditto.
17299         (vint32m1_t): Ditto.
17300         (vuint32m1_t): Ditto.
17301         (vint32m2_t): Ditto.
17302         (vuint32m2_t): Ditto.
17303         (vint32m4_t): Ditto.
17304         (vuint32m4_t): Ditto.
17305         (vint32m8_t): Ditto.
17306         (vuint32m8_t): Ditto.
17307         (vint64m1_t): Ditto.
17308         (vuint64m1_t): Ditto.
17309         (vint64m2_t): Ditto.
17310         (vuint64m2_t): Ditto.
17311         (vint64m4_t): Ditto.
17312         (vuint64m4_t): Ditto.
17313         (vint64m8_t): Ditto.
17314         (vuint64m8_t): Ditto.
17315         (vfloat32mf2_t): Ditto.
17316         (vfloat32m1_t): Ditto.
17317         (vfloat32m2_t): Ditto.
17318         (vfloat32m4_t): Ditto.
17319         (vfloat32m8_t): Ditto.
17320         (vfloat64m1_t): Ditto.
17321         (vfloat64m2_t): Ditto.
17322         (vfloat64m4_t): Ditto.
17323         (vfloat64m8_t): Ditto.
17324         (tuple_subpart): Add tuple subpart base type.
17325         * config/riscv/riscv-vector-builtins.h (struct
17326         rvv_arg_type_info): Ditto.
17327         (tuple_type_field): New function.
17329 2023-05-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
17331         * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
17332         (RVV_TUPLE_PARTIAL_MODES): Ditto.
17333         * config/riscv/riscv-protos.h (riscv_v_ext_tuple_mode_p): New
17334         function.
17335         (get_nf): Ditto.
17336         (get_subpart_mode): Ditto.
17337         (get_tuple_mode): Ditto.
17338         (expand_tuple_move): Ditto.
17339         * config/riscv/riscv-v.cc (ENTRY): New macro.
17340         (TUPLE_ENTRY): Ditto.
17341         (get_nf): New function.
17342         (get_subpart_mode): Ditto.
17343         (get_tuple_mode): Ditto.
17344         (expand_tuple_move): Ditto.
17345         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_TYPE):
17346         New macro.
17347         (register_tuple_type): New function
17348         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
17349         New macro.
17350         (vint8mf8x2_t): New macro.
17351         (vuint8mf8x2_t): Ditto.
17352         (vint8mf8x3_t): Ditto.
17353         (vuint8mf8x3_t): Ditto.
17354         (vint8mf8x4_t): Ditto.
17355         (vuint8mf8x4_t): Ditto.
17356         (vint8mf8x5_t): Ditto.
17357         (vuint8mf8x5_t): Ditto.
17358         (vint8mf8x6_t): Ditto.
17359         (vuint8mf8x6_t): Ditto.
17360         (vint8mf8x7_t): Ditto.
17361         (vuint8mf8x7_t): Ditto.
17362         (vint8mf8x8_t): Ditto.
17363         (vuint8mf8x8_t): Ditto.
17364         (vint8mf4x2_t): Ditto.
17365         (vuint8mf4x2_t): Ditto.
17366         (vint8mf4x3_t): Ditto.
17367         (vuint8mf4x3_t): Ditto.
17368         (vint8mf4x4_t): Ditto.
17369         (vuint8mf4x4_t): Ditto.
17370         (vint8mf4x5_t): Ditto.
17371         (vuint8mf4x5_t): Ditto.
17372         (vint8mf4x6_t): Ditto.
17373         (vuint8mf4x6_t): Ditto.
17374         (vint8mf4x7_t): Ditto.
17375         (vuint8mf4x7_t): Ditto.
17376         (vint8mf4x8_t): Ditto.
17377         (vuint8mf4x8_t): Ditto.
17378         (vint8mf2x2_t): Ditto.
17379         (vuint8mf2x2_t): Ditto.
17380         (vint8mf2x3_t): Ditto.
17381         (vuint8mf2x3_t): Ditto.
17382         (vint8mf2x4_t): Ditto.
17383         (vuint8mf2x4_t): Ditto.
17384         (vint8mf2x5_t): Ditto.
17385         (vuint8mf2x5_t): Ditto.
17386         (vint8mf2x6_t): Ditto.
17387         (vuint8mf2x6_t): Ditto.
17388         (vint8mf2x7_t): Ditto.
17389         (vuint8mf2x7_t): Ditto.
17390         (vint8mf2x8_t): Ditto.
17391         (vuint8mf2x8_t): Ditto.
17392         (vint8m1x2_t): Ditto.
17393         (vuint8m1x2_t): Ditto.
17394         (vint8m1x3_t): Ditto.
17395         (vuint8m1x3_t): Ditto.
17396         (vint8m1x4_t): Ditto.
17397         (vuint8m1x4_t): Ditto.
17398         (vint8m1x5_t): Ditto.
17399         (vuint8m1x5_t): Ditto.
17400         (vint8m1x6_t): Ditto.
17401         (vuint8m1x6_t): Ditto.
17402         (vint8m1x7_t): Ditto.
17403         (vuint8m1x7_t): Ditto.
17404         (vint8m1x8_t): Ditto.
17405         (vuint8m1x8_t): Ditto.
17406         (vint8m2x2_t): Ditto.
17407         (vuint8m2x2_t): Ditto.
17408         (vint8m2x3_t): Ditto.
17409         (vuint8m2x3_t): Ditto.
17410         (vint8m2x4_t): Ditto.
17411         (vuint8m2x4_t): Ditto.
17412         (vint8m4x2_t): Ditto.
17413         (vuint8m4x2_t): Ditto.
17414         (vint16mf4x2_t): Ditto.
17415         (vuint16mf4x2_t): Ditto.
17416         (vint16mf4x3_t): Ditto.
17417         (vuint16mf4x3_t): Ditto.
17418         (vint16mf4x4_t): Ditto.
17419         (vuint16mf4x4_t): Ditto.
17420         (vint16mf4x5_t): Ditto.
17421         (vuint16mf4x5_t): Ditto.
17422         (vint16mf4x6_t): Ditto.
17423         (vuint16mf4x6_t): Ditto.
17424         (vint16mf4x7_t): Ditto.
17425         (vuint16mf4x7_t): Ditto.
17426         (vint16mf4x8_t): Ditto.
17427         (vuint16mf4x8_t): Ditto.
17428         (vint16mf2x2_t): Ditto.
17429         (vuint16mf2x2_t): Ditto.
17430         (vint16mf2x3_t): Ditto.
17431         (vuint16mf2x3_t): Ditto.
17432         (vint16mf2x4_t): Ditto.
17433         (vuint16mf2x4_t): Ditto.
17434         (vint16mf2x5_t): Ditto.
17435         (vuint16mf2x5_t): Ditto.
17436         (vint16mf2x6_t): Ditto.
17437         (vuint16mf2x6_t): Ditto.
17438         (vint16mf2x7_t): Ditto.
17439         (vuint16mf2x7_t): Ditto.
17440         (vint16mf2x8_t): Ditto.
17441         (vuint16mf2x8_t): Ditto.
17442         (vint16m1x2_t): Ditto.
17443         (vuint16m1x2_t): Ditto.
17444         (vint16m1x3_t): Ditto.
17445         (vuint16m1x3_t): Ditto.
17446         (vint16m1x4_t): Ditto.
17447         (vuint16m1x4_t): Ditto.
17448         (vint16m1x5_t): Ditto.
17449         (vuint16m1x5_t): Ditto.
17450         (vint16m1x6_t): Ditto.
17451         (vuint16m1x6_t): Ditto.
17452         (vint16m1x7_t): Ditto.
17453         (vuint16m1x7_t): Ditto.
17454         (vint16m1x8_t): Ditto.
17455         (vuint16m1x8_t): Ditto.
17456         (vint16m2x2_t): Ditto.
17457         (vuint16m2x2_t): Ditto.
17458         (vint16m2x3_t): Ditto.
17459         (vuint16m2x3_t): Ditto.
17460         (vint16m2x4_t): Ditto.
17461         (vuint16m2x4_t): Ditto.
17462         (vint16m4x2_t): Ditto.
17463         (vuint16m4x2_t): Ditto.
17464         (vint32mf2x2_t): Ditto.
17465         (vuint32mf2x2_t): Ditto.
17466         (vint32mf2x3_t): Ditto.
17467         (vuint32mf2x3_t): Ditto.
17468         (vint32mf2x4_t): Ditto.
17469         (vuint32mf2x4_t): Ditto.
17470         (vint32mf2x5_t): Ditto.
17471         (vuint32mf2x5_t): Ditto.
17472         (vint32mf2x6_t): Ditto.
17473         (vuint32mf2x6_t): Ditto.
17474         (vint32mf2x7_t): Ditto.
17475         (vuint32mf2x7_t): Ditto.
17476         (vint32mf2x8_t): Ditto.
17477         (vuint32mf2x8_t): Ditto.
17478         (vint32m1x2_t): Ditto.
17479         (vuint32m1x2_t): Ditto.
17480         (vint32m1x3_t): Ditto.
17481         (vuint32m1x3_t): Ditto.
17482         (vint32m1x4_t): Ditto.
17483         (vuint32m1x4_t): Ditto.
17484         (vint32m1x5_t): Ditto.
17485         (vuint32m1x5_t): Ditto.
17486         (vint32m1x6_t): Ditto.
17487         (vuint32m1x6_t): Ditto.
17488         (vint32m1x7_t): Ditto.
17489         (vuint32m1x7_t): Ditto.
17490         (vint32m1x8_t): Ditto.
17491         (vuint32m1x8_t): Ditto.
17492         (vint32m2x2_t): Ditto.
17493         (vuint32m2x2_t): Ditto.
17494         (vint32m2x3_t): Ditto.
17495         (vuint32m2x3_t): Ditto.
17496         (vint32m2x4_t): Ditto.
17497         (vuint32m2x4_t): Ditto.
17498         (vint32m4x2_t): Ditto.
17499         (vuint32m4x2_t): Ditto.
17500         (vint64m1x2_t): Ditto.
17501         (vuint64m1x2_t): Ditto.
17502         (vint64m1x3_t): Ditto.
17503         (vuint64m1x3_t): Ditto.
17504         (vint64m1x4_t): Ditto.
17505         (vuint64m1x4_t): Ditto.
17506         (vint64m1x5_t): Ditto.
17507         (vuint64m1x5_t): Ditto.
17508         (vint64m1x6_t): Ditto.
17509         (vuint64m1x6_t): Ditto.
17510         (vint64m1x7_t): Ditto.
17511         (vuint64m1x7_t): Ditto.
17512         (vint64m1x8_t): Ditto.
17513         (vuint64m1x8_t): Ditto.
17514         (vint64m2x2_t): Ditto.
17515         (vuint64m2x2_t): Ditto.
17516         (vint64m2x3_t): Ditto.
17517         (vuint64m2x3_t): Ditto.
17518         (vint64m2x4_t): Ditto.
17519         (vuint64m2x4_t): Ditto.
17520         (vint64m4x2_t): Ditto.
17521         (vuint64m4x2_t): Ditto.
17522         (vfloat32mf2x2_t): Ditto.
17523         (vfloat32mf2x3_t): Ditto.
17524         (vfloat32mf2x4_t): Ditto.
17525         (vfloat32mf2x5_t): Ditto.
17526         (vfloat32mf2x6_t): Ditto.
17527         (vfloat32mf2x7_t): Ditto.
17528         (vfloat32mf2x8_t): Ditto.
17529         (vfloat32m1x2_t): Ditto.
17530         (vfloat32m1x3_t): Ditto.
17531         (vfloat32m1x4_t): Ditto.
17532         (vfloat32m1x5_t): Ditto.
17533         (vfloat32m1x6_t): Ditto.
17534         (vfloat32m1x7_t): Ditto.
17535         (vfloat32m1x8_t): Ditto.
17536         (vfloat32m2x2_t): Ditto.
17537         (vfloat32m2x3_t): Ditto.
17538         (vfloat32m2x4_t): Ditto.
17539         (vfloat32m4x2_t): Ditto.
17540         (vfloat64m1x2_t): Ditto.
17541         (vfloat64m1x3_t): Ditto.
17542         (vfloat64m1x4_t): Ditto.
17543         (vfloat64m1x5_t): Ditto.
17544         (vfloat64m1x6_t): Ditto.
17545         (vfloat64m1x7_t): Ditto.
17546         (vfloat64m1x8_t): Ditto.
17547         (vfloat64m2x2_t): Ditto.
17548         (vfloat64m2x3_t): Ditto.
17549         (vfloat64m2x4_t): Ditto.
17550         (vfloat64m4x2_t): Ditto.
17551         * config/riscv/riscv-vector-builtins.h (DEF_RVV_TUPLE_TYPE):
17552         Ditto.
17553         * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
17554         * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
17555         function.
17556         (TUPLE_ENTRY): Ditto.
17557         (riscv_v_ext_mode_p): New function.
17558         (riscv_v_adjust_nunits): Add tuple mode adjustment.
17559         (riscv_classify_address): Ditto.
17560         (riscv_binary_cost): Ditto.
17561         (riscv_rtx_costs): Ditto.
17562         (riscv_secondary_memory_needed): Ditto.
17563         (riscv_hard_regno_nregs): Ditto.
17564         (riscv_hard_regno_mode_ok): Ditto.
17565         (riscv_vector_mode_supported_p): Ditto.
17566         (riscv_regmode_natural_size): Ditto.
17567         (riscv_array_mode): New function.
17568         (TARGET_ARRAY_MODE): New target hook.
17569         * config/riscv/riscv.md: Add tuple modes.
17570         * config/riscv/vector-iterators.md: Ditto.
17571         * config/riscv/vector.md (mov<mode>): Add tuple modes data
17572         movement.
17573         (*mov<VT:mode>_<P:mode>): Ditto.
17575 2023-05-03  Richard Biener  <rguenther@suse.de>
17577         * cse.cc (cse_insn): Track an equivalence to the destination
17578         separately and delay using src_related for it.
17580 2023-05-03  Richard Biener  <rguenther@suse.de>
17582         * cse.cc (HASH): Turn into inline function and mix
17583         in another HASH_SHIFT bits.
17584         (SAFE_HASH): Likewise.
17586 2023-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17588         PR target/99195
17589         * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to...
17590         (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This.
17592 2023-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
17594         PR target/99195
17595         * config/aarch64/aarch64-simd.md (add<mode>3): Rename to...
17596         (add<mode>3<vczle><vczbe>): ... This.
17597         (sub<mode>3): Rename to...
17598         (sub<mode>3<vczle><vczbe>): ... This.
17599         (mul<mode>3): Rename to...
17600         (mul<mode>3<vczle><vczbe>): ... This.
17601         (*div<mode>3): Rename to...
17602         (*div<mode>3<vczle><vczbe>): ... This.
17603         (neg<mode>2): Rename to...
17604         (neg<mode>2<vczle><vczbe>): ... This.
17605         (abs<mode>2): Rename to...
17606         (abs<mode>2<vczle><vczbe>): ... This.
17607         (<frint_pattern><mode>2): Rename to...
17608         (<frint_pattern><mode>2<vczle><vczbe>): ... This.
17609         (<fmaxmin><mode>3): Rename to...
17610         (<fmaxmin><mode>3<vczle><vczbe>): ... This.
17611         (*sqrt<mode>2): Rename to...
17612         (*sqrt<mode>2<vczle><vczbe>): ... This.
17614 2023-05-03  Kito Cheng  <kito.cheng@sifive.com>
17616         * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
17618 2023-05-03  Martin Liska  <mliska@suse.cz>
17620         PR tree-optimization/109693
17621         * value-range-storage.cc (vrange_allocator::vrange_allocator):
17622         Remove unused field.
17623         * value-range-storage.h: Likewise.
17625 2023-05-02  Andrew Pinski  <apinski@marvell.com>
17627         * tree-ssa-phiopt.cc (move_stmt): New function.
17628         (match_simplify_replacement): Use move_stmt instead
17629         of the inlined version.
17631 2023-05-02  Andrew Pinski  <apinski@marvell.com>
17633         * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
17634         pattern.
17636 2023-05-02  Andrew Pinski  <apinski@marvell.com>
17638         PR tree-optimization/109702
17639         * match.pd: Fix "a != 0 ? FUNC(a) : CST" patterns
17640         for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
17642 2023-05-02  Andrew Pinski  <apinski@marvell.com>
17644         PR target/109657
17645         * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
17646         insn_and_split pattern.
17648 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
17650         * config/riscv/sync.md (atomic_load<mode>): Implement atomic
17651         load mapping.
17653 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
17655         * config/riscv/sync.md (mem_thread_fence_1): Change fence
17656         depending on the given memory model.
17658 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
17660         * config/riscv/riscv-protos.h (riscv_union_memmodels): Expose
17661         riscv_union_memmodels function to sync.md.
17662         * config/riscv/riscv.cc (riscv_union_memmodels): Add function to
17663         get the union of two memmodels in sync.md.
17664         (riscv_print_operand): Add %I and %J flags that output the
17665         optimal LR/SC flag bits for a given memory model.
17666         * config/riscv/sync.md: Remove static .aqrl bits on LR op/.rl
17667         bits on SC op and replace with optimized %I, %J flags.
17669 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
17671         * config/riscv/riscv.cc
17672         (riscv_memmodel_needs_amo_release): Change function name.
17673         (riscv_print_operand): Remove unneeded %F case.
17674         * config/riscv/sync.md: Remove unneeded fences.
17676 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
17678         PR target/89835
17679         * config/riscv/sync.md (atomic_store<mode>): Use simple store
17680         instruction in combination with fence(s).
17682 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
17684         * config/riscv/riscv.cc (riscv_print_operand): Change behavior
17685         of %A to include release bits.
17687 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
17689         * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change
17690         FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl
17691         pair.
17693 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
17695         * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
17696         sequentially consistent LR.aqrl/SC.rl pairs.
17698 2023-05-02  Patrick O'Neill  <patrick@rivosinc.com>
17700         * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
17701         sanitize memmodel input with memmodel_base.
17703 2023-05-02  Yanzhang Wang  <yanzhang.wang@intel.com>
17704             Pan Li  <pan2.li@intel.com>
17706         PR target/109617
17707         * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
17709 2023-05-02  Romain Naour  <romain.naour@gmail.com>
17711         * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
17712         the namespace.
17714 2023-05-02  Martin Liska  <mliska@suse.cz>
17716         * doc/invoke.texi: Update documentation based on param.opt file.
17718 2023-05-02  Richard Biener  <rguenther@suse.de>
17720         PR tree-optimization/109672
17721         * tree-vect-stmts.cc (vectorizable_operation): For plus,
17722         minus and negate always check the vector mode is word mode.
17724 2023-05-01  Andrew Pinski  <apinski@marvell.com>
17726         * tree-ssa-phiopt.cc: Update comment about
17727         how the transformation are implemented.
17729 2023-05-01  Jeff Law  <jlaw@ventanamicro>
17731         * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
17733 2023-05-01  Jeff Law  <jlaw@ventanamicro>
17735         * config/cris/cris.cc (TARGET_LRA_P): Remove.
17736         * config/epiphany/epiphany.cc (TARGET_LRA_P): Remove.
17737         * config/iq2000/iq2000.cc (TARGET_LRA_P): Remove.
17738         * config/m32r/m32r.cc (TARGET_LRA_P): Remove.
17739         * config/microblaze/microblaze.cc (TARGET_LRA_P): Remove.
17740         * config/mmix/mmix.cc (TARGET_LRA_P): Remove.
17742 2023-05-01  Rasmus Villemoes  <rasmus.villemoes@prevas.dk>
17744         * print-tree.h (PRINT_DECL_REMAP_DEBUG): New flag.
17745         * print-tree.cc (print_decl_identifier): Implement it.
17746         * toplev.cc (output_stack_usage_1): Use it.
17748 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
17750         * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
17751         friends.
17753 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
17755         * value-range.h (irange::set_nonzero): Inline.
17757 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
17759         * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct
17760         precision.
17761         * gimple-ssa-warn-alloca.cc (alloca_call_type): Use <2> for
17762         invalid_range, as it is an inverse range.
17763         * tree-vrp.cc (find_case_label_range): Avoid trees.
17764         * value-range.cc (irange::irange_set): Delete.
17765         (irange::irange_set_1bit_anti_range): Delete.
17766         (irange::irange_set_anti_range): Delete.
17767         (irange::set): Cleanup.
17768         * value-range.h (class irange): Remove irange_set,
17769         irange_set_anti_range, irange_set_1bit_anti_range.
17770         (irange::set_undefined): Remove set to m_type.
17772 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
17774         * range-op.cc (update_known_bitmask): Adjust for irange containing
17775         wide_ints internally.
17776         * tree-ssanames.cc (set_nonzero_bits): Same.
17777         * tree-ssanames.h (set_nonzero_bits): Same.
17778         * value-range-storage.cc (irange_storage::set_irange): Same.
17779         (irange_storage::get_irange): Same.
17780         * value-range.cc (irange::operator=): Same.
17781         (irange::irange_set): Same.
17782         (irange::irange_set_1bit_anti_range): Same.
17783         (irange::irange_set_anti_range): Same.
17784         (irange::set): Same.
17785         (irange::verify_range): Same.
17786         (irange::contains_p): Same.
17787         (irange::irange_single_pair_union): Same.
17788         (irange::union_): Same.
17789         (irange::irange_contains_p): Same.
17790         (irange::intersect): Same.
17791         (irange::invert): Same.
17792         (irange::set_range_from_nonzero_bits): Same.
17793         (irange::set_nonzero_bits): Same.
17794         (mask_to_wi): Same.
17795         (irange::intersect_nonzero_bits): Same.
17796         (irange::union_nonzero_bits): Same.
17797         (gt_ggc_mx): Same.
17798         (gt_pch_nx): Same.
17799         (tree_range): Same.
17800         (range_tests_strict_enum): Same.
17801         (range_tests_misc): Same.
17802         (range_tests_nonzero_bits): Same.
17803         * value-range.h (irange::type): Same.
17804         (irange::varying_compatible_p): Same.
17805         (irange::irange): Same.
17806         (int_range::int_range): Same.
17807         (irange::set_undefined): Same.
17808         (irange::set_varying): Same.
17809         (irange::lower_bound): Same.
17810         (irange::upper_bound): Same.
17812 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
17814         * gimple-range-fold.cc (tree_lower_bound): Delete.
17815         (tree_upper_bound): Delete.
17816         (vrp_val_max): Delete.
17817         (vrp_val_min): Delete.
17818         (fold_using_range::range_of_ssa_name_with_loop_info): Call
17819         range_of_var_in_loop.
17820         * vr-values.cc (valid_value_p): Delete.
17821         (fix_overflow): Delete.
17822         (get_scev_info): New.
17823         (bounds_of_var_in_loop): Refactor into...
17824         (induction_variable_may_overflow_p): ...this,
17825         (range_from_loop_direction): ...and this,
17826         (range_of_var_in_loop): ...and this.
17827         * vr-values.h (bounds_of_var_in_loop): Delete.
17828         (range_of_var_in_loop): New.
17830 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
17832         * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with
17833         irange_val*.
17834         (vrp_val_max): New.
17835         (vrp_val_min): New.
17836         * gimple-range-op.cc (cfn_strlen::fold_range): Use irange_val_*.
17837         * range-op.cc (max_limit): Same.
17838         (min_limit): Same.
17839         (plus_minus_ranges): Same.
17840         (operator_rshift::op1_range): Same.
17841         (operator_cast::inside_domain_p): Same.
17842         * value-range.cc (vrp_val_is_max): Delete.
17843         (vrp_val_is_min): Delete.
17844         (range_tests_misc): Use irange_val_*.
17845         * value-range.h (vrp_val_is_min): Delete.
17846         (vrp_val_is_max): Delete.
17847         (vrp_val_max): Delete.
17848         (irange_val_min): New.
17849         (vrp_val_min): Delete.
17850         (irange_val_max): New.
17851         * vr-values.cc (check_for_binary_op_overflow): Use irange_val_*.
17853 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
17855         * fold-const.cc (expr_not_equal_to): Convert to irange wide_int API.
17856         * gimple-fold.cc (size_must_be_zero_p): Same.
17857         * gimple-loop-versioning.cc
17858         (loop_versioning::prune_loop_conditions): Same.
17859         * gimple-range-edge.cc (gcond_edge_range): Same.
17860         (gimple_outgoing_range::calc_switch_ranges): Same.
17861         * gimple-range-fold.cc (adjust_imagpart_expr): Same.
17862         (adjust_realpart_expr): Same.
17863         (fold_using_range::range_of_address): Same.
17864         (fold_using_range::relation_fold_and_or): Same.
17865         * gimple-range-gori.cc (gori_compute::gori_compute): Same.
17866         (range_is_either_true_or_false): Same.
17867         * gimple-range-op.cc (cfn_toupper_tolower::get_letter_range): Same.
17868         (cfn_clz::fold_range): Same.
17869         (cfn_ctz::fold_range): Same.
17870         * gimple-range-tests.cc (class test_expr_eval): Same.
17871         * gimple-ssa-warn-alloca.cc (alloca_call_type): Same.
17872         * ipa-cp.cc (ipa_value_range_from_jfunc): Same.
17873         (propagate_vr_across_jump_function): Same.
17874         (decide_whether_version_node): Same.
17875         * ipa-prop.cc (ipa_get_value_range): Same.
17876         * ipa-prop.h (ipa_range_set_and_normalize): Same.
17877         * range-op.cc (get_shift_range): Same.
17878         (value_range_from_overflowed_bounds): Same.
17879         (value_range_with_overflow): Same.
17880         (create_possibly_reversed_range): Same.
17881         (equal_op1_op2_relation): Same.
17882         (not_equal_op1_op2_relation): Same.
17883         (lt_op1_op2_relation): Same.
17884         (le_op1_op2_relation): Same.
17885         (gt_op1_op2_relation): Same.
17886         (ge_op1_op2_relation): Same.
17887         (operator_mult::op1_range): Same.
17888         (operator_exact_divide::op1_range): Same.
17889         (operator_lshift::op1_range): Same.
17890         (operator_rshift::op1_range): Same.
17891         (operator_cast::op1_range): Same.
17892         (operator_logical_and::fold_range): Same.
17893         (set_nonzero_range_from_mask): Same.
17894         (operator_bitwise_or::op1_range): Same.
17895         (operator_bitwise_xor::op1_range): Same.
17896         (operator_addr_expr::fold_range): Same.
17897         (pointer_plus_operator::wi_fold): Same.
17898         (pointer_or_operator::op1_range): Same.
17899         (INT): Same.
17900         (UINT): Same.
17901         (INT16): Same.
17902         (UINT16): Same.
17903         (SCHAR): Same.
17904         (UCHAR): Same.
17905         (range_op_cast_tests): Same.
17906         (range_op_lshift_tests): Same.
17907         (range_op_rshift_tests): Same.
17908         (range_op_bitwise_and_tests): Same.
17909         (range_relational_tests): Same.
17910         * range.cc (range_zero): Same.
17911         (range_nonzero): Same.
17912         * range.h (range_true): Same.
17913         (range_false): Same.
17914         (range_true_and_false): Same.
17915         * tree-data-ref.cc (split_constant_offset_1): Same.
17916         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Same.
17917         * tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Same.
17918         (find_unswitching_predicates_for_bb): Same.
17919         * tree-ssa-phiopt.cc (value_replacement): Same.
17920         * tree-ssa-threadbackward.cc
17921         (back_threader::find_taken_edge_cond): Same.
17922         * tree-ssanames.cc (ssa_name_has_boolean_range): Same.
17923         * tree-vrp.cc (find_case_label_range): Same.
17924         * value-query.cc (range_query::get_tree_range): Same.
17925         * value-range.cc (irange::set_nonnegative): Same.
17926         (frange::contains_p): Same.
17927         (frange::singleton_p): Same.
17928         (frange::internal_singleton_p): Same.
17929         (irange::irange_set): Same.
17930         (irange::irange_set_1bit_anti_range): Same.
17931         (irange::irange_set_anti_range): Same.
17932         (irange::set): Same.
17933         (irange::operator==): Same.
17934         (irange::singleton_p): Same.
17935         (irange::contains_p): Same.
17936         (irange::set_range_from_nonzero_bits): Same.
17937         (DEFINE_INT_RANGE_INSTANCE): Same.
17938         (INT): Same.
17939         (UINT): Same.
17940         (SCHAR): Same.
17941         (UINT128): Same.
17942         (UCHAR): Same.
17943         (range): New.
17944         (tree_range): New.
17945         (range_int): New.
17946         (range_uint): New.
17947         (range_uint128): New.
17948         (range_uchar): New.
17949         (range_char): New.
17950         (build_range3): Convert to irange wide_int API.
17951         (range_tests_irange3): Same.
17952         (range_tests_int_range_max): Same.
17953         (range_tests_strict_enum): Same.
17954         (range_tests_misc): Same.
17955         (range_tests_nonzero_bits): Same.
17956         (range_tests_nan): Same.
17957         (range_tests_signed_zeros): Same.
17958         * value-range.h (Value_Range::Value_Range): Same.
17959         (irange::set): Same.
17960         (irange::nonzero_p): Same.
17961         (irange::contains_p): Same.
17962         (range_includes_zero_p): Same.
17963         (irange::set_nonzero): Same.
17964         (irange::set_zero): Same.
17965         (contains_zero_p): Same.
17966         (frange::contains_p): Same.
17967         * vr-values.cc
17968         (simplify_using_ranges::op_with_boolean_value_range_p): Same.
17969         (bounds_of_var_in_loop): Same.
17970         (simplify_using_ranges::legacy_fold_cond_overflow): Same.
17972 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
17974         * value-range.cc (irange::irange_union): Rename to...
17975         (irange::union_): ...this.
17976         (irange::irange_intersect): Rename to...
17977         (irange::intersect): ...this.
17978         * value-range.h (irange::union_): Delete.
17979         (irange::intersect): Delete.
17981 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
17983         * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
17985 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
17987         * vr-values.cc (check_for_binary_op_overflow): Tidy up by using
17988         ranger API.
17989         (compare_ranges): Delete.
17990         (compare_range_with_value): Delete.
17991         (bounds_of_var_in_loop): Tidy up by using ranger API.
17992         (simplify_using_ranges::fold_cond_with_ops): Cleanup and rename
17993         from vrp_evaluate_conditional_warnv_with_ops_using_ranges.
17994         (simplify_using_ranges::legacy_fold_cond_overflow): Remove
17995         strict_overflow_p and only_ranges.
17996         (simplify_using_ranges::legacy_fold_cond): Adjust call to
17997         legacy_fold_cond_overflow.
17998         (simplify_using_ranges::simplify_abs_using_ranges): Adjust for
17999         rename.
18000         (range_fits_type_p): Rename value_range to irange.
18001         * vr-values.h (range_fits_type_p): Adjust prototype.
18003 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
18005         * value-range.cc (irange::irange_set_anti_range): Remove uses of
18006         tree_lower_bound and tree_upper_bound.
18007         (irange::verify_range): Same.
18008         (irange::operator==): Same.
18009         (irange::singleton_p): Same.
18010         * value-range.h (irange::tree_lower_bound): Delete.
18011         (irange::tree_upper_bound): Delete.
18012         (irange::lower_bound): Delete.
18013         (irange::upper_bound): Delete.
18014         (irange::zero_p): Remove uses of tree_lower_bound and
18015         tree_upper_bound.
18017 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
18019         * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
18020         kind() call.
18021         (determine_value_range): Same.
18022         (record_nonwrapping_iv): Same.
18023         (infer_loop_bounds_from_signedness): Same.
18024         (scev_var_range_cant_overflow): Same.
18025         * tree-vrp.cc (operand_less_p): Delete.
18026         * tree-vrp.h (operand_less_p): Delete.
18027         * value-range.cc (get_legacy_range): Remove uses of deprecated API.
18028         (irange::value_inside_range): Delete.
18029         * value-range.h (vrange::kind): Delete.
18030         (irange::num_pairs): Remove check of m_kind.
18031         (irange::min): Delete.
18032         (irange::max): Delete.
18034 2023-05-01  Aldy Hernandez  <aldyh@redhat.com>
18036         * gimple-fold.cc (maybe_fold_comparisons_from_match_pd): Adjust
18037         for vrange_storage.
18038         * gimple-range-cache.cc (sbr_vector::sbr_vector): Same.
18039         (sbr_vector::grow): Same.
18040         (sbr_vector::set_bb_range): Same.
18041         (sbr_vector::get_bb_range): Same.
18042         (sbr_sparse_bitmap::sbr_sparse_bitmap): Same.
18043         (sbr_sparse_bitmap::set_bb_range): Same.
18044         (sbr_sparse_bitmap::get_bb_range): Same.
18045         (block_range_cache::block_range_cache): Same.
18046         (ssa_global_cache::ssa_global_cache): Same.
18047         (ssa_global_cache::get_global_range): Same.
18048         (ssa_global_cache::set_global_range): Same.
18049         * gimple-range-cache.h: Same.
18050         * gimple-range-edge.cc
18051         (gimple_outgoing_range::gimple_outgoing_range): Same.
18052         (gimple_outgoing_range::switch_edge_range): Same.
18053         (gimple_outgoing_range::calc_switch_ranges): Same.
18054         * gimple-range-edge.h: Same.
18055         * gimple-range-infer.cc
18056         (infer_range_manager::infer_range_manager): Same.
18057         (infer_range_manager::get_nonzero): Same.
18058         (infer_range_manager::maybe_adjust_range): Same.
18059         (infer_range_manager::add_range): Same.
18060         * gimple-range-infer.h: Rename obstack_vrange_allocator to
18061         vrange_allocator.
18062         * tree-core.h (struct irange_storage_slot): Remove.
18063         (struct tree_ssa_name): Remove irange_info and frange_info.  Make
18064         range_info a pointer to vrange_storage.
18065         * tree-ssanames.cc (range_info_fits_p): Adjust for vrange_storage.
18066         (range_info_alloc): Same.
18067         (range_info_free): Same.
18068         (range_info_get_range): Same.
18069         (range_info_set_range): Same.
18070         (get_nonzero_bits): Same.
18071         * value-query.cc (get_ssa_name_range_info): Same.
18072         * value-range-storage.cc (class vrange_internal_alloc): New.
18073         (class vrange_obstack_alloc): New.
18074         (class vrange_ggc_alloc): New.
18075         (vrange_allocator::vrange_allocator): New.
18076         (vrange_allocator::~vrange_allocator): New.
18077         (vrange_storage::alloc_slot): New.
18078         (vrange_allocator::alloc): New.
18079         (vrange_allocator::free): New.
18080         (vrange_allocator::clone): New.
18081         (vrange_allocator::clone_varying): New.
18082         (vrange_allocator::clone_undefined): New.
18083         (vrange_storage::alloc): New.
18084         (vrange_storage::set_vrange): Remove slot argument.
18085         (vrange_storage::get_vrange): Same.
18086         (vrange_storage::fits_p): Same.
18087         (vrange_storage::equal_p): New.
18088         (irange_storage::write_lengths_address): New.
18089         (irange_storage::lengths_address): New.
18090         (irange_storage_slot::alloc_slot): Remove.
18091         (irange_storage::alloc): New.
18092         (irange_storage_slot::irange_storage_slot): Remove.
18093         (irange_storage::irange_storage): New.
18094         (write_wide_int): New.
18095         (irange_storage_slot::set_irange): Remove.
18096         (irange_storage::set_irange): New.
18097         (read_wide_int): New.
18098         (irange_storage_slot::get_irange): Remove.
18099         (irange_storage::get_irange): New.
18100         (irange_storage_slot::size): Remove.
18101         (irange_storage::equal_p): New.
18102         (irange_storage_slot::num_wide_ints_needed): Remove.
18103         (irange_storage::size): New.
18104         (irange_storage_slot::fits_p): Remove.
18105         (irange_storage::fits_p): New.
18106         (irange_storage_slot::dump): Remove.
18107         (irange_storage::dump): New.
18108         (frange_storage_slot::alloc_slot): Remove.
18109         (frange_storage::alloc): New.
18110         (frange_storage_slot::set_frange): Remove.
18111         (frange_storage::set_frange): New.
18112         (frange_storage_slot::get_frange): Remove.
18113         (frange_storage::get_frange): New.
18114         (frange_storage_slot::fits_p): Remove.
18115         (frange_storage::equal_p): New.
18116         (frange_storage::fits_p): New.
18117         (ggc_vrange_allocator): New.
18118         (ggc_alloc_vrange_storage): New.
18119         * value-range-storage.h (class vrange_storage): Rewrite.
18120         (class irange_storage): Rewrite.
18121         (class frange_storage): Rewrite.
18122         (class obstack_vrange_allocator): Remove.
18123         (class ggc_vrange_allocator): Remove.
18124         (vrange_allocator::alloc_vrange): Remove.
18125         (vrange_allocator::alloc_irange): Remove.
18126         (vrange_allocator::alloc_frange): Remove.
18127         (ggc_alloc_vrange_storage): New.
18128         * value-range.h (class irange): Rename vrange_allocator to
18129         irange_storage.
18130         (class frange): Same.
18132 2023-04-30  Roger Sayle  <roger@nextmovesoftware.com>
18134         * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
18135         inc to avoid clobbering the carry flag.
18137 2023-04-30  Andrew Pinski  <apinski@marvell.com>
18139         * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
18140         for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
18142 2023-04-30  Andrew Pinski  <apinski@marvell.com>
18144         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
18145         Allow some builtin/internal function calls which
18146         are known not to trap/throw.
18147         (phiopt_worker::match_simplify_replacement):
18148         Use name instead of getting the lhs again.
18150 2023-04-30  Joakim Nohlgård  <joakim@nohlgard.se>
18152         * configure: Regenerate.
18153         * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
18155 2023-04-29  Hans-Peter Nilsson  <hp@axis.com>
18157         * reload1.cc (emit_insn_if_valid_for_reload_1): Rename from
18158         emit_insn_if_valid_for_reload.
18159         (emit_insn_if_valid_for_reload): Call new helper, and if a SET fails
18160         to be recognized, also try emitting a parallel that clobbers
18161         TARGET_FLAGS_REGNUM, as applicable.
18163 2023-04-29  Roger Sayle  <roger@nextmovesoftware.com>
18165         * config/stormy16/stormy16.md (neghi2): Convert from a define_expand
18166         to a define_insn.
18167         (*rotatehi_1): New define_insn for efficient 2 insn sequence.
18168         (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb.
18170 2023-04-29  Roger Sayle  <roger@nextmovesoftware.com>
18172         * config/stormy16/stormy16.md (any_lshift): New code iterator.
18173         (any_or_plus): Likewise.
18174         (any_rotate): Likewise.
18175         (*<any_lshift>_and_internal): New define_insn_and_split to
18176         recognize a logical shift followed by an AND, and split it
18177         again after reload.
18178         (*swpn): New define_insn matching xstormy16's swpn.
18179         (*swpn_zext): New define_insn recognizing swpn followed by
18180         zero_extendqihi2, i.e. with the high byte set to zero.
18181         (*swpn_sext): Likewise, for swpn followed by cbw.
18182         (*swpn_sext_2): Likewise, for an alternate RTL form.
18183         (*swpn_zext_ior): A pre-reload splitter so that an swpn+zext+ior
18184         sequence is split in the correct place to recognize the *swpn_zext
18185         followed by any_or_plus (ior, xor or plus) instruction.
18187 2023-04-29  Mikael Pettersson  <mikpelinux@gmail.com>
18189         PR target/105525
18190         * config.gcc (vax-*-linux*): Add glibc-stdint.h.
18191         (lm32-*-uclinux*): Likewise.
18193 2023-04-29  Fei Gao  <gaofei@eswincomputing.com>
18195         * config/riscv/riscv.cc (riscv_avoid_save_libcall): helper function
18196         for riscv_use_save_libcall.
18197         (riscv_use_save_libcall): call riscv_avoid_save_libcall.
18198         (riscv_compute_frame_info): restructure to decouple stack allocation
18199         for rv32e w/o save-restore.
18201 2023-04-28  Eugene Rozenfeld  <erozen@microsoft.com>
18203         * doc/install.texi: Fix documentation typo
18205 2023-04-28  Matevos Mehrabyan  <matevosmehrabyan@gmail.com>
18207         * config/riscv/iterators.md (only_div, paired_mod): New iterators.
18208         (u): Add div/udiv cases.
18209         * config/riscv/riscv-protos.h (riscv_use_divmod_expander): Prototype.
18210         * config/riscv/riscv.cc (struct riscv_tune_param): Add field for
18211         divmod expansion.
18212         (rocket_tune_info, sifive_7_tune_info): Initialize new field.
18213         (thead_c906_tune_info): Likewise.
18214         (optimize_size_tune_info): Likewise.
18215         (riscv_use_divmod_expander): New function.
18216         * config/riscv/riscv.md (<u>divmod<mode>4): New expander.
18218 2023-04-28  Karen Sargsyan  <karen1999411@gmail.com>
18220         * config/riscv/bitmanip.md: Added clmulr instruction.
18221         * config/riscv/riscv-builtins.cc (AVAIL): Add new.
18222         * config/riscv/riscv.md: (UNSPEC_CLMULR): Add new unspec type.
18223         (type): Add clmul
18224         * config/riscv/riscv-cmo.def: Added built-in function for clmulr.
18225         * config/riscv/crypto.md: Move clmul[h] instructions to bitmanip.md.
18226         * config/riscv/riscv-scalar-crypto.def: Move clmul[h] built-in
18227         functions to riscv-cmo.def.
18228         * config/riscv/generic.md: Add clmul to list of instructions
18229         using the generic_imul reservation.
18231 2023-04-28  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
18233         * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
18235 2023-04-28  Andrew Pinski  <apinski@marvell.com>
18237         PR tree-optimization/100958
18238         * tree-ssa-phiopt.cc (two_value_replacement): Remove.
18239         (pass_phiopt::execute): Don't call two_value_replacement.
18240         * match.pd (a !=/== CST1 ? CST2 : CST3): Add pattern to
18241         handle what two_value_replacement did.
18243 2023-04-28  Andrew Pinski  <apinski@marvell.com>
18245         * match.pd: Add patterns for
18246         "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
18248 2023-04-28  Andrew Pinski  <apinski@marvell.com>
18250         * match.pd: Factor out the deciding the min/max from
18251         the "(cond (cmp (convert1? x) c1) (convert2? x) c2)"
18252         pattern to ...
18253         * fold-const.cc (minmax_from_comparison): this new function.
18254         * fold-const.h (minmax_from_comparison): New prototype.
18256 2023-04-28  Roger Sayle  <roger@nextmovesoftware.com>
18258         PR rtl-optimization/109476
18259         * lower-subreg.cc: Include explow.h for force_reg.
18260         (find_decomposable_shift_zext): Pass an additional SPEED_P argument.
18261         If decomposing a suitable LSHIFTRT and we're not splitting
18262         ZERO_EXTEND (based on the current SPEED_P), then use a ZERO_EXTEND
18263         instead of setting a high part SUBREG to zero, which helps combine.
18264         (decompose_multiword_subregs): Update call to resolve_shift_zext.
18266 2023-04-28  Richard Biener  <rguenther@suse.de>
18268         * tree-vect-data-refs.cc (vect_analyze_data_refs): Always
18269         consider scatters.
18270         * tree-vect-stmts.cc (vect_model_store_cost): Pass in the
18271         gather-scatter info and cost emulated scatters accordingly.
18272         (get_load_store_type): Support emulated scatters.
18273         (vectorizable_store): Likewise.  Emulate them by extracting
18274         scalar offsets and data, doing scalar stores.
18276 2023-04-28  Richard Biener  <rguenther@suse.de>
18278         * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
18279         Tame down element extracts and scalar loads for gather/scatter
18280         similar to elementwise strided accesses.
18282 2023-04-28  Pan Li  <pan2.li@intel.com>
18283             kito-cheng  <kito.cheng@sifive.com>
18285         * config/riscv/vector.md: Add new define split to perform
18286         the simplification.
18288 2023-04-28  Richard Biener  <rguenther@suse.de>
18290         PR ipa/109652
18291         * ipa-param-manipulation.cc
18292         (ipa_param_body_adjustments::modify_expression): Allow
18293         conversion of a register to a non-register type.  Elide
18294         conversions inside BIT_FIELD_REFs.
18296 2023-04-28  Richard Biener  <rguenther@suse.de>
18298         PR tree-optimization/109644
18299         * tree-cfg.cc (verify_types_in_gimple_reference): Check
18300         register constraints on the outermost VIEW_CONVERT_EXPR
18301         only.  Do not allow register or invariant bases on
18302         multi-level or possibly variable index handled components.
18304 2023-04-28  Richard Biener  <rguenther@suse.de>
18306         * gimplify.cc (gimplify_compound_lval): When there's a
18307         non-register type produced by one of the handled component
18308         operations make sure we get a non-register base.
18310 2023-04-28  Richard Biener  <rguenther@suse.de>
18312         PR tree-optimization/108752
18313         * tree-vect-generic.cc (build_replicated_const): Rename
18314         to build_replicated_int_cst and move to tree.{h,cc}.
18315         (do_plus_minus): Adjust.
18316         (do_negate): Likewise.
18317         * tree-vect-stmts.cc (vectorizable_operation): Emit emulated
18318         arithmetic vector operations in lowered form.
18319         * tree.h (build_replicated_int_cst): Declare.
18320         * tree.cc (build_replicated_int_cst): Moved from
18321         tree-vect-generic.cc build_replicated_const.
18323 2023-04-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18325         PR target/99195
18326         * config/aarch64/aarch64-simd.md (aarch64_rbit<mode>): Rename to...
18327         (aarch64_rbit<mode><vczle><vczbe>): ... This.
18328         (neg<mode>2): Rename to...
18329         (neg<mode>2<vczle><vczbe>): ... This.
18330         (abs<mode>2): Rename to...
18331         (abs<mode>2<vczle><vczbe>): ... This.
18332         (aarch64_abs<mode>): Rename to...
18333         (aarch64_abs<mode><vczle><vczbe>): ... This.
18334         (one_cmpl<mode>2): Rename to...
18335         (one_cmpl<mode>2<vczle><vczbe>): ... This.
18336         (clrsb<mode>2): Rename to...
18337         (clrsb<mode>2<vczle><vczbe>): ... This.
18338         (clz<mode>2): Rename to...
18339         (clz<mode>2<vczle><vczbe>): ... This.
18340         (popcount<mode>2): Rename to...
18341         (popcount<mode>2<vczle><vczbe>): ... This.
18343 2023-04-28  Jakub Jelinek  <jakub@redhat.com>
18345         * gimple-range-op.cc (class cfn_sqrt): New type.
18346         (op_cfn_sqrt): New variable.
18347         (gimple_range_op_handler::maybe_builtin_call): Handle
18348         CASE_CFN_SQRT{,_FN}.
18350 2023-04-28  Aldy Hernandez  <aldyh@redhat.com>
18351             Jakub Jelinek  <jakub@redhat.com>
18353         * value-range.h (frange_nextafter): Declare.
18354         * gimple-range-op.cc (class cfn_sincos): New.
18355         (op_cfn_sin, op_cfn_cos): New variables.
18356         (gimple_range_op_handler::maybe_builtin_call): Handle
18357         CASE_CFN_{SIN,COS}{,_FN}.
18359 2023-04-28  Jakub Jelinek  <jakub@redhat.com>
18361         * target.def (libm_function_max_error): New target hook.
18362         * doc/tm.texi.in (TARGET_LIBM_FUNCTION_MAX_ERROR): Add.
18363         * doc/tm.texi: Regenerated.
18364         * targhooks.h (default_libm_function_max_error,
18365         glibc_linux_libm_function_max_error): Declare.
18366         * targhooks.cc: Include case-cfn-macros.h.
18367         (default_libm_function_max_error,
18368         glibc_linux_libm_function_max_error): New functions.
18369         * config/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
18370         * config/linux-protos.h (linux_libm_function_max_error): Declare.
18371         * config/linux.cc: Include target.h and targhooks.h.
18372         (linux_libm_function_max_error): New function.
18373         * config/arc/arc.cc: Include targhooks.h and case-cfn-macros.h.
18374         (arc_libm_function_max_error): New function.
18375         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
18376         * config/i386/i386.cc (ix86_libc_has_fast_function): Formatting fix.
18377         (ix86_libm_function_max_error): New function.
18378         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
18379         * config/rs6000/rs6000-protos.h
18380         (rs6000_linux_libm_function_max_error): Declare.
18381         * config/rs6000/rs6000-linux.cc: Include target.h, targhooks.h, tree.h
18382         and case-cfn-macros.h.
18383         (rs6000_linux_libm_function_max_error): New function.
18384         * config/rs6000/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
18385         * config/rs6000/linux64.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
18386         * config/or1k/or1k.cc: Include targhooks.h and case-cfn-macros.h.
18387         (or1k_libm_function_max_error): New function.
18388         (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
18390 2023-04-28  Alexandre Oliva  <oliva@adacore.com>
18392         * gimple-harden-conditionals.cc (insert_edge_check_and_trap):
18393         Move detach value calls...
18394         (pass_harden_conditional_branches::execute): ... here.
18395         (pass_harden_compares::execute): Detach values before
18396         compares.
18398 2023-04-27  Andrew Stubbs  <ams@codesourcery.com>
18400         * config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef.
18401         (cml<addsub_as><mode>4): Likewise.
18402         (vec_addsub<mode>3): Likewise.
18403         (cadd<rot><mode>3): Likewise.
18404         (vec_fmaddsub<mode>4): Likewise.
18405         (vec_fmsubadd<mode>4): Likewise, and use sub for the odd lanes.
18407 2023-04-27  Andrew Pinski  <apinski@marvell.com>
18409         * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
18410         up to 2 min/max expressions in the sequence/match code.
18412 2023-04-27  Andrew Pinski  <apinski@marvell.com>
18414         * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
18415         COMPARISON.
18416         * tree-eh.cc (operation_could_trap_helper_p): Treate
18417         MIN_EXPR/MAX_EXPR similar as other comparisons.
18419 2023-04-27  Andrew Pinski  <apinski@marvell.com>
18421         * tree-ssa-phiopt.cc (cond_store_replacement): Remove
18422         prototype.
18423         (cond_if_else_store_replacement): Likewise.
18424         (get_non_trapping): Likewise.
18425         (store_elim_worker): Move into ...
18426         (pass_cselim::execute): This.
18428 2023-04-27  Andrew Pinski  <apinski@marvell.com>
18430         * tree-ssa-phiopt.cc (two_value_replacement): Remove
18431         prototype.
18432         (match_simplify_replacement): Likewise.
18433         (factor_out_conditional_conversion): Likewise.
18434         (value_replacement): Likewise.
18435         (minmax_replacement): Likewise.
18436         (spaceship_replacement): Likewise.
18437         (cond_removal_in_builtin_zero_pattern): Likewise.
18438         (hoist_adjacent_loads): Likewise.
18439         (tree_ssa_phiopt_worker): Move into ...
18440         (pass_phiopt::execute): this.
18442 2023-04-27  Andrew Pinski  <apinski@marvell.com>
18444         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove
18445         do_store_elim argument and split that part out to ...
18446         (store_elim_worker): This new function.
18447         (pass_cselim::execute): Call store_elim_worker.
18448         (pass_phiopt::execute): Update call to tree_ssa_phiopt_worker.
18450 2023-04-27  Jan Hubicka  <jh@suse.cz>
18452         * cfgloopmanip.h (unloop_loops): Export.
18453         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Unloop loops
18454         that no longer loop.
18455         * tree-ssa-loop-ivcanon.cc (unloop_loops): Export; do not free
18456         vectors of loops to unloop.
18457         (canonicalize_induction_variables): Free vectors here.
18458         (tree_unroll_loops_completely): Free vectors here.
18460 2023-04-27  Richard Biener  <rguenther@suse.de>
18462         PR tree-optimization/109170
18463         * gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call):
18464         Handle __builtin_expect and similar via cfn_pass_through_arg1
18465         and inspecting the calls fnspec.
18466         * builtins.cc (builtin_fnspec): Handle BUILT_IN_EXPECT
18467         and BUILT_IN_EXPECT_WITH_PROBABILITY.
18469 2023-04-27  Alexandre Oliva  <oliva@adacore.com>
18471         * genmultilib: Use CONFIG_SHELL to run sub-scripts.
18473 2023-04-27  Aldy Hernandez  <aldyh@redhat.com>
18475         PR tree-optimization/109639
18476         * ipa-cp.cc (ipa_value_range_from_jfunc): Normalize range.
18477         (propagate_vr_across_jump_function): Same.
18478         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
18479         * ipa-prop.h (ipa_range_set_and_normalize): New.
18480         * value-range.cc (irange::set): Assert min and max are INTEGER_CST.
18482 2023-04-27  Richard Biener  <rguenther@suse.de>
18484         * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
18485         create a CTOR operand in the result when simplifying GIMPLE.
18487 2023-04-27  Richard Biener  <rguenther@suse.de>
18489         * gimplify.cc (gimplify_compound_lval): When the base
18490         gimplified to a register make sure to split up chains
18491         of operations.
18493 2023-04-27  Richard Biener  <rguenther@suse.de>
18495         PR ipa/109607
18496         * ipa-param-manipulation.h
18497         (ipa_param_body_adjustments::modify_expression): Add extra_stmts
18498         argument.
18499         * ipa-param-manipulation.cc
18500         (ipa_param_body_adjustments::modify_expression): Likewise.
18501         When we need a conversion and the replacement is a register
18502         split the conversion out.
18503         (ipa_param_body_adjustments::modify_assignment): Pass
18504         extra_stmts to RHS modify_expression.
18506 2023-04-27  Jonathan Wakely  <jwakely@redhat.com>
18508         * doc/extend.texi (Zero Length): Describe example.
18510 2023-04-27  Richard Biener  <rguenther@suse.de>
18512         PR tree-optimization/109594
18513         * tree-ssa.cc (non_rewritable_mem_ref_base): Constrain
18514         what we rewrite to a register based on the above.
18516 2023-04-26  Patrick O'Neill  <patrick@rivosinc.com>
18518         * config/riscv/riscv.cc: Fix whitespace.
18519         * config/riscv/sync.md: Fix whitespace.
18521 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
18523         PR tree-optimization/108697
18524         * gimple-range-cache.cc (ssa_global_cache::clear_range): Do
18525         not clear the vector on an out of range query.
18526         (ssa_cache::dump): Use dump_range_query instead of get_range.
18527         (ssa_cache::dump_range_query): New.
18528         (ssa_lazy_cache::dump_range_query): New.
18529         (ssa_lazy_cache::set_range): New.
18530         * gimple-range-cache.h (ssa_cache::dump_range_query): New.
18531         (class ssa_lazy_cache): New.
18532         (ssa_lazy_cache::ssa_lazy_cache): New.
18533         (ssa_lazy_cache::~ssa_lazy_cache): New.
18534         (ssa_lazy_cache::get_range): New.
18535         (ssa_lazy_cache::clear_range): New.
18536         (ssa_lazy_cache::clear): New.
18537         (ssa_lazy_cache::dump): New.
18538         * gimple-range-path.cc (path_range_query::path_range_query): Do
18539         not allocate a ssa_cache object nor has_cache bitmap.
18540         (path_range_query::~path_range_query): Do not free objects.
18541         (path_range_query::clear_cache): Remove.
18542         (path_range_query::get_cache): Adjust.
18543         (path_range_query::set_cache): Remove.
18544         (path_range_query::dump): Don't call through a pointer.
18545         (path_range_query::internal_range_of_expr): Set cache directly.
18546         (path_range_query::reset_path): Clear cache directly.
18547         (path_range_query::ssa_range_in_phi): Fold with globals only.
18548         (path_range_query::compute_ranges_in_phis): Simply set range.
18549         (path_range_query::compute_ranges_in_block): Call cache directly.
18550         * gimple-range-path.h (class path_range_query): Replace bitmap
18551         and cache pointer with lazy cache object.
18552         * gimple-range.h (class assume_query): Use ssa_lazy_cache.
18554 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
18556         * gimple-range-cache.cc (ssa_cache::ssa_cache): Rename.
18557         (ssa_cache::~ssa_cache): Rename.
18558         (ssa_cache::has_range): New.
18559         (ssa_cache::get_range): Rename.
18560         (ssa_cache::set_range): Rename.
18561         (ssa_cache::clear_range): Rename.
18562         (ssa_cache::clear): Rename.
18563         (ssa_cache::dump): Rename and use get_range.
18564         (ranger_cache::get_global_range): Use get_range and set_range.
18565         (ranger_cache::range_of_def): Use get_range.
18566         * gimple-range-cache.h (class ssa_cache): Rename class and methods.
18567         (class ranger_cache): Use ssa_cache.
18568         * gimple-range-path.cc (path_range_query::path_range_query): Use
18569         ssa_cache.
18570         (path_range_query::get_cache): Use get_range.
18571         (path_range_query::set_cache): Use set_range.
18572         * gimple-range-path.h (class path_range_query): Use ssa_cache.
18573         * gimple-range.cc (assume_query::assume_range_p): Use get_range.
18574         (assume_query::range_of_expr): Use get_range.
18575         (assume_query::assume_query): Use set_range.
18576         (assume_query::calculate_op): Use get_range and set_range.
18577         * gimple-range.h (class assume_query): Use ssa_cache.
18579 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
18581         * gimple-range-cache.cc (sbr_vector::sbr_vector): Add parameter
18582         and local to optionally zero memory.
18583         (br_vector::grow): Only zero memory if flag is set.
18584         (class sbr_lazy_vector): New.
18585         (sbr_lazy_vector::sbr_lazy_vector): New.
18586         (sbr_lazy_vector::set_bb_range): New.
18587         (sbr_lazy_vector::get_bb_range): New.
18588         (sbr_lazy_vector::bb_range_p): New.
18589         (block_range_cache::set_bb_range): Check flags and Use sbr_lazy_vector.
18590         * gimple-range-gori.cc (gori_map::calculate_gori): Use
18591         param_vrp_switch_limit.
18592         (gori_compute::gori_compute): Use param_vrp_switch_limit.
18593         * params.opt (vrp_sparse_threshold): Rename from evrp_sparse_threshold.
18594         (vrp_switch_limit): Rename from evrp_switch_limit.
18595         (vrp_vector_threshold): New.
18597 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
18599         * value-relation.cc (dom_oracle::query_relation): Check early for lack
18600         of any relation.
18601         * value-relation.h (equiv_oracle::has_equiv_p): New.
18603 2023-04-26  Andrew MacLeod  <amacleod@redhat.com>
18605         PR tree-optimization/109417
18606         * gimple-range-gori.cc (range_def_chain::register_dependency):
18607         Save the ssa version number, not the pointer.
18608         (gori_compute::may_recompute_p): No need to check if a dependency
18609         is in the free list.
18610         * gimple-range-gori.h (class range_def_chain): Change ssa1 and ssa2
18611         fields to be unsigned int instead of trees.
18612         (ange_def_chain::depend1): Adjust.
18613         (ange_def_chain::depend2): Adjust.
18614         * gimple-range.h: Include "ssa.h" to inline ssa_name().
18616 2023-04-26  David Edelsohn  <dje.gcc@gmail.com>
18618         * config/rs6000/aix72.h (TARGET_DEFAULT): Use ISA_2_6_MASKS_SERVER.
18619         * config/rs6000/aix73.h (TARGET_DEFAULT): Use ISA_2_7_MASKS_SERVER.
18620         (PROCESSOR_DEFAULT): Use PROCESSOR_POWER8.
18622 2023-04-26  Patrick O'Neill  <patrick@rivosinc.com>
18624         PR target/104338
18625         * config/riscv/riscv-protos.h: Add helper function stubs.
18626         * config/riscv/riscv.cc: Add helper functions for subword masking.
18627         * config/riscv/riscv.opt: Add command-line flags -minline-atomics and
18628         -mno-inline-atomics.
18629         * config/riscv/sync.md: Add masking logic and inline asm for fetch_and_op,
18630         fetch_and_nand, CAS, and exchange ops.
18631         * doc/invoke.texi: Add blurb regarding new command-line flags
18632         -minline-atomics and -mno-inline-atomics.
18634 2023-04-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18636         * config/aarch64/aarch64-simd.md (aarch64_rshrn2<mode>_insn_le):
18637         Reimplement using standard RTL codes instead of unspec.
18638         (aarch64_rshrn2<mode>_insn_be): Likewise.
18639         (aarch64_rshrn2<mode>): Adjust for the above.
18640         * config/aarch64/aarch64.md (UNSPEC_RSHRN): Delete.
18642 2023-04-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
18644         * config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le): Reimplement
18645         with standard RTL codes instead of an UNSPEC.
18646         (aarch64_rshrn<mode>_insn_be): Likewise.
18647         (aarch64_rshrn<mode>): Adjust for the above.
18648         * config/aarch64/predicates.md (aarch64_simd_rshrn_imm_vec): Define.
18650 2023-04-26  Pan Li  <pan2.li@intel.com>
18651             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18653         * config/riscv/riscv.cc (riscv_classify_address): Allow
18654         const0_rtx for the RVV load/store.
18656 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
18658         * range-op.cc (range_op_cast_tests): Remove legacy support.
18659         * value-range-storage.h (vrange_allocator::alloc_irange): Same.
18660         * value-range.cc (irange::operator=): Same.
18661         (get_legacy_range): Same.
18662         (irange::copy_legacy_to_multi_range): Delete.
18663         (irange::copy_to_legacy): Delete.
18664         (irange::irange_set_anti_range): Delete.
18665         (irange::set): Remove legacy support.
18666         (irange::verify_range): Same.
18667         (irange::legacy_lower_bound): Delete.
18668         (irange::legacy_upper_bound): Delete.
18669         (irange::legacy_equal_p): Delete.
18670         (irange::operator==): Remove legacy support.
18671         (irange::singleton_p): Same.
18672         (irange::value_inside_range): Same.
18673         (irange::contains_p): Same.
18674         (intersect_ranges): Delete.
18675         (irange::legacy_intersect): Delete.
18676         (union_ranges): Delete.
18677         (irange::legacy_union): Delete.
18678         (irange::legacy_verbose_union_): Delete.
18679         (irange::legacy_verbose_intersect): Delete.
18680         (irange::irange_union): Remove legacy support.
18681         (irange::irange_intersect): Same.
18682         (irange::intersect): Same.
18683         (irange::invert): Same.
18684         (ranges_from_anti_range): Delete.
18685         (gt_pch_nx): Adjust for legacy removal.
18686         (gt_ggc_mx): Same.
18687         (range_tests_legacy): Delete.
18688         (range_tests_misc): Adjust for legacy removal.
18689         (range_tests): Same.
18690         * value-range.h (class irange): Same.
18691         (irange::legacy_mode_p): Delete.
18692         (ranges_from_anti_range): Delete.
18693         (irange::nonzero_p): Adjust for legacy removal.
18694         (irange::lower_bound): Same.
18695         (irange::upper_bound): Same.
18696         (irange::union_): Same.
18697         (irange::intersect): Same.
18698         (irange::set_nonzero): Same.
18699         (irange::set_zero): Same.
18700         * vr-values.cc (simplify_using_ranges::legacy_fold_cond_overflow): Same.
18702 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
18704         * value-range.cc (irange::copy_legacy_to_multi_range): Rewrite use
18705         of range_has_numeric_bounds_p with irange API.
18706         (range_has_numeric_bounds_p): Delete.
18707         * value-range.h (range_has_numeric_bounds_p): Delete.
18709 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
18711         * tree-data-ref.cc (compute_distributive_range): Replace uses of
18712         range_int_cst_p with irange API.
18713         * tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.
18714         * tree-vrp.h (range_int_cst_p): Delete.
18715         * vr-values.cc (check_for_binary_op_overflow): Replace usees of
18716         range_int_cst_p with irange API.
18717         (vr_set_zero_nonzero_bits): Same.
18718         (range_fits_type_p): Same.
18719         (simplify_using_ranges::simplify_casted_cond): Same.
18720         * tree-vrp.cc (range_int_cst_p): Remove.
18722 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
18724         * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
18726 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
18728         * builtins.cc (expand_builtin_strnlen): Rewrite deprecated irange
18729         API uses to new API.
18730         * gimple-predicate-analysis.cc (find_var_cmp_const): Same.
18731         * internal-fn.cc (get_min_precision): Same.
18732         * match.pd: Same.
18733         * tree-affine.cc (expr_to_aff_combination): Same.
18734         * tree-data-ref.cc (dr_step_indicator): Same.
18735         * tree-dfa.cc (get_ref_base_and_extent): Same.
18736         * tree-scalar-evolution.cc (iv_can_overflow_p): Same.
18737         * tree-ssa-phiopt.cc (two_value_replacement): Same.
18738         * tree-ssa-pre.cc (insert_into_preds_of_block): Same.
18739         * tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): Same.
18740         * tree-ssa-strlen.cc (compare_nonzero_chars): Same.
18741         * tree-switch-conversion.cc (bit_test_cluster::emit): Same.
18742         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Same.
18743         * tree.cc (get_range_pos_neg): Same.
18745 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
18747         * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Use
18748         vrange::dump instead of ad-hoc dumper.
18749         * tree-ssa-strlen.cc (dump_strlen_info): Same.
18750         * value-range-pretty-print.cc (visit): Pass TDF_NOUID to
18751         dump_generic_node.
18753 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
18755         * range-op.cc (operator_cast::op1_range): Use
18756         create_possibly_reversed_range.
18757         (operator_bitwise_and::simple_op1_range_solver): Same.
18758         * value-range.cc (swap_out_of_order_endpoints): Delete.
18759         (irange::set): Remove call to swap_out_of_order_endpoints.
18761 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
18763         * builtins.cc (determine_block_size): Convert use of legacy API to
18764         get_legacy_range.
18765         * gimple-array-bounds.cc (check_out_of_bounds_and_warn): Same.
18766         (array_bounds_checker::check_array_ref): Same.
18767         * gimple-ssa-warn-restrict.cc
18768         (builtin_memref::extend_offset_range): Same.
18769         * ipa-cp.cc (ipcp_store_vr_results): Same.
18770         * ipa-fnsummary.cc (set_switch_stmt_execution_predicate): Same.
18771         * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Same.
18772         (ipa_write_jump_function): Same.
18773         * pointer-query.cc (get_size_range): Same.
18774         * tree-data-ref.cc (split_constant_offset): Same.
18775         * tree-ssa-strlen.cc (get_range): Same.
18776         (maybe_diag_stxncpy_trunc): Same.
18777         (strlen_pass::get_len_or_size): Same.
18778         (strlen_pass::count_nonzero_bytes_addr): Same.
18779         * tree-vect-patterns.cc (vect_get_range_info): Same.
18780         * value-range.cc (irange::maybe_anti_range): Remove.
18781         (get_legacy_range): New.
18782         (irange::copy_to_legacy): Use get_legacy_range.
18783         (ranges_from_anti_range): Same.
18784         * value-range.h (class irange): Remove maybe_anti_range.
18785         (get_legacy_range): New.
18786         * vr-values.cc (check_for_binary_op_overflow): Convert use of
18787         legacy API to get_legacy_range.
18788         (compare_ranges): Same.
18789         (compare_range_with_value): Same.
18790         (bounds_of_var_in_loop): Same.
18791         (find_case_label_ranges): Same.
18792         (simplify_using_ranges::simplify_switch_using_ranges): Same.
18794 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
18796         * value-range-pretty-print.cc (vrange_printer::visit): Remove
18797         constant_p use.
18798         * value-range.cc (irange::constant_p): Remove.
18799         (irange::get_nonzero_bits_from_range): Remove constant_p use.
18800         * value-range.h (class irange): Remove constant_p.
18801         (irange::num_pairs): Remove constant_p use.
18803 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
18805         * value-range.cc (irange::copy_legacy_to_multi_range): Remove
18806         symbolics support.
18807         (irange::set): Same.
18808         (irange::legacy_lower_bound): Same.
18809         (irange::legacy_upper_bound): Same.
18810         (irange::contains_p): Same.
18811         (range_tests_legacy): Same.
18812         (irange::normalize_addresses): Remove.
18813         (irange::normalize_symbolics): Remove.
18814         (irange::symbolic_p): Remove.
18815         * value-range.h (class irange): Remove symbolic_p,
18816         normalize_symbolics, and normalize_addresses.
18817         * vr-values.cc (simplify_using_ranges::two_valued_val_range_p):
18818         Remove symbolics support.
18820 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
18822         * value-range.cc (irange::may_contain_p): Remove.
18823         * value-range.h (range_includes_zero_p):  Rewrite may_contain_p
18824         usage with contains_p.
18825         * vr-values.cc (compare_range_with_value): Same.
18827 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
18829         * tree-vrp.cc (supported_types_p): Remove.
18830         (defined_ranges_p): Remove.
18831         (range_fold_binary_expr): Remove.
18832         (range_fold_unary_expr): Remove.
18833         * tree-vrp.h (range_fold_unary_expr): Remove.
18834         (range_fold_binary_expr): Remove.
18836 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
18838         * ipa-cp.cc (ipa_vr_operation_and_type_effects): Convert to ranger API.
18839         (ipa_value_range_from_jfunc): Same.
18840         (propagate_vr_across_jump_function): Same.
18841         * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
18842         * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
18843         * vr-values.cc (bounds_of_var_in_loop): Same.
18845 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
18847         * gimple-array-bounds.cc (array_bounds_checker::get_value_range):
18848         Add irange argument.
18849         (check_out_of_bounds_and_warn): Remove check for vr.
18850         (array_bounds_checker::check_array_ref): Remove pointer qualifier
18851         for vr and adjust accordingly.
18852         * gimple-array-bounds.h (get_value_range): Add irange argument.
18853         * value-query.cc (class equiv_allocator): Delete.
18854         (range_query::get_value_range): Delete.
18855         (range_query::range_query): Remove allocator access.
18856         (range_query::~range_query): Same.
18857         * value-query.h (get_value_range): Delete.
18858         * vr-values.cc
18859         (simplify_using_ranges::op_with_boolean_value_range_p): Remove
18860         call to get_value_range.
18861         (check_for_binary_op_overflow): Same.
18862         (simplify_using_ranges::legacy_fold_cond_overflow): Same.
18863         (simplify_using_ranges::simplify_abs_using_ranges): Same.
18864         (simplify_using_ranges::simplify_cond_using_ranges_1): Same.
18865         (simplify_using_ranges::simplify_casted_cond): Same.
18866         (simplify_using_ranges::simplify_switch_using_ranges): Same.
18867         (simplify_using_ranges::two_valued_val_range_p): Same.
18869 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
18871         * vr-values.cc
18872         (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
18873         Rename to...
18874         (simplify_using_ranges::legacy_fold_cond_overflow): ...this.
18875         (simplify_using_ranges::vrp_visit_cond_stmt): Rename to...
18876         (simplify_using_ranges::legacy_fold_cond): ...this.
18877         (simplify_using_ranges::fold_cond): Rename
18878         vrp_evaluate_conditional_warnv_with_ops to
18879         legacy_fold_cond_overflow.
18880         * vr-values.h (class vr_values): Replace vrp_visit_cond_stmt and
18881         vrp_evaluate_conditional_warnv_with_ops with legacy_fold_cond and
18882         legacy_fold_cond_overflow respectively.
18884 2023-04-26  Aldy Hernandez  <aldyh@redhat.com>
18886         * vr-values.cc (get_vr_for_comparison): Remove.
18887         (compare_name_with_value): Same.
18888         (vrp_evaluate_conditional_warnv_with_ops): Remove calls to
18889         compare_name_with_value.
18890         * vr-values.h: Remove compare_name_with_value.
18891         Remove get_vr_for_comparison.
18893 2023-04-26  Roger Sayle  <roger@nextmovesoftware.com>
18895         * config/stormy16/stormy16.md (bswaphi2): New define_insn.
18896         (bswapsi2): New define_insn.
18897         (swaphi): New define_insn to exchange two registers (swpw).
18898         (define_peephole2): Recognize exchange of registers as swaphi.
18900 2023-04-26  Richard Biener  <rguenther@suse.de>
18902         * gimple-range-path.cc (path_range_query::compute_outgoing_relations):
18903         Avoid last_stmt.
18904         * ipa-pure-const.cc (pass_nothrow::execute): Likewise.
18905         * predict.cc (apply_return_prediction): Likewise.
18906         * sese.cc (set_ifsese_condition): Likewise.  Simplify.
18907         * tree-cfg.cc (assert_unreachable_fallthru_edge_p): Avoid last_stmt.
18908         (make_edges_bb): Likewise.
18909         (make_cond_expr_edges): Likewise.
18910         (end_recording_case_labels): Likewise.
18911         (make_gimple_asm_edges): Likewise.
18912         (cleanup_dead_labels): Likewise.
18913         (group_case_labels): Likewise.
18914         (gimple_can_merge_blocks_p): Likewise.
18915         (gimple_merge_blocks): Likewise.
18916         (find_taken_edge): Likewise.  Also handle empty fallthru blocks.
18917         (gimple_duplicate_sese_tail): Avoid last_stmt.
18918         (find_loop_dist_alias): Likewise.
18919         (gimple_block_ends_with_condjump_p): Likewise.
18920         (gimple_purge_dead_eh_edges): Likewise.
18921         (gimple_purge_dead_abnormal_call_edges): Likewise.
18922         (pass_warn_function_return::execute): Likewise.
18923         (execute_fixup_cfg): Likewise.
18924         * tree-eh.cc (redirect_eh_edge_1): Likewise.
18925         (pass_lower_resx::execute): Likewise.
18926         (pass_lower_eh_dispatch::execute): Likewise.
18927         (cleanup_empty_eh): Likewise.
18928         * tree-if-conv.cc (if_convertible_bb_p): Likewise.
18929         (predicate_bbs): Likewise.
18930         (ifcvt_split_critical_edges): Likewise.
18931         * tree-loop-distribution.cc (create_edge_for_control_dependence):
18932         Likewise.
18933         (loop_distribution::transform_reduction_loop): Likewise.
18934         * tree-parloops.cc (transform_to_exit_first_loop_alt): Likewise.
18935         (try_transform_to_exit_first_loop_alt): Likewise.
18936         (transform_to_exit_first_loop): Likewise.
18937         (create_parallel_loop): Likewise.
18938         * tree-scalar-evolution.cc (get_loop_exit_condition): Likewise.
18939         * tree-ssa-dce.cc (mark_last_stmt_necessary): Likewise.
18940         (eliminate_unnecessary_stmts): Likewise.
18941         * tree-ssa-dom.cc
18942         (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
18943         Likewise.
18944         * tree-ssa-ifcombine.cc (ifcombine_ifandif): Likewise.
18945         (pass_tree_ifcombine::execute): Likewise.
18946         * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Likewise.
18947         (should_duplicate_loop_header_p): Likewise.
18948         * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Likewise.
18949         (tree_estimate_loop_size): Likewise.
18950         (try_unroll_loop_completely): Likewise.
18951         * tree-ssa-loop-ivopts.cc (tree_ssa_iv_optimize_loop): Likewise.
18952         * tree-ssa-loop-manip.cc (ip_normal_pos): Likewise.
18953         (canonicalize_loop_ivs): Likewise.
18954         * tree-ssa-loop-niter.cc (determine_value_range): Likewise.
18955         (bound_difference): Likewise.
18956         (number_of_iterations_popcount): Likewise.
18957         (number_of_iterations_cltz): Likewise.
18958         (number_of_iterations_cltz_complement): Likewise.
18959         (simplify_using_initial_conditions): Likewise.
18960         (number_of_iterations_exit_assumptions): Likewise.
18961         (loop_niter_by_eval): Likewise.
18962         (estimate_numbers_of_iterations): Likewise.
18964 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18966         * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
18968 2023-04-26  Kewen Lin  <linkw@linux.ibm.com>
18970         PR target/108758
18971         * config/rs6000/rs6000-builtins.def
18972         (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt
18973         __builtin_vsx_scalar_cmp_exp_qp_lt,
18974         __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw
18975         to power9-vector.
18977 2023-04-26  Kewen Lin  <linkw@linux.ibm.com>
18979         PR target/109069
18980         * config/rs6000/altivec.md (sldoi_to_mov<mode>): Replace predicate
18981         easy_vector_constant with const_vector_each_byte_same, add
18982         handlings in preparation for !easy_vector_constant, and update
18983         VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P.
18984         * config/rs6000/predicates.md (const_vector_each_byte_same): New
18985         predicate.
18987 2023-04-26  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
18989         * config/riscv/vector.md (*pred_cmp<mode>_merge_tie_mask): New pattern.
18990         (*pred_ltge<mode>_merge_tie_mask): Ditto.
18991         (*pred_cmp<mode>_scalar_merge_tie_mask): Ditto.
18992         (*pred_eqne<mode>_scalar_merge_tie_mask): Ditto.
18993         (*pred_cmp<mode>_extended_scalar_merge_tie_mask): Ditto.
18994         (*pred_eqne<mode>_extended_scalar_merge_tie_mask): Ditto.
18995         (*pred_cmp<mode>_narrow_merge_tie_mask): Ditto.
18997 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
18999         * config/riscv/vector.md: Fix redundant vmv1r.v.
19001 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19003         * config/riscv/vector.md: Fix RA constraint.
19005 2023-04-26  Pan Li  <pan2.li@intel.com>
19007         PR target/109272
19008         * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
19009         check for vn_reference equal.
19011 2023-04-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19013         * config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Add enum for
19014         auto-vectorization preference.
19015         (enum riscv_autovec_lmul_enum): Add enum for choosing LMUL of RVV
19016         auto-vectorization.
19017         * config/riscv/riscv.opt: Add compile option for RVV auto-vectorization.
19019 2023-04-26  Jivan Hakobyan  <jivanhakobyan9@gmail.com>
19021         * config/riscv/bitmanip.md: Updated predicates of bclri<mode>_nottwobits
19022         and bclridisi_nottwobits patterns.
19023         * config/riscv/predicates.md: (not_uimm_extra_bit_or_nottwobits): Adjust
19024         predicate to avoid splitting arith constants.
19025         (const_nottwobits_not_arith_operand): New predicate.
19027 2023-04-25  Hans-Peter Nilsson  <hp@axis.com>
19029         * recog.cc (peep2_attempt, peep2_update_life): Correct
19030         head-comment description of parameter match_len.
19032 2023-04-25  Vineet Gupta  <vineetg@rivosinc.com>
19034         * config/riscv/riscv.md: riscv_move_integer() drop in_splitter arg.
19035         riscv_split_symbol() drop in_splitter arg.
19036         * config/riscv/riscv.cc: riscv_move_integer() drop in_splitter arg.
19037         riscv_split_symbol() drop in_splitter arg.
19038         riscv_force_temporary() drop in_splitter arg.
19039         * config/riscv/riscv-protos.h: riscv_move_integer() drop in_splitter arg.
19040         riscv_split_symbol() drop in_splitter arg.
19042 2023-04-25  Eric Botcazou  <ebotcazou@adacore.com>
19044         * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
19045         superfluous debug temporaries for single GIMPLE assignments.
19047 2023-04-25  Richard Biener  <rguenther@suse.de>
19049         PR tree-optimization/109609
19050         * attr-fnspec.h (arg_max_access_size_given_by_arg_p):
19051         Clarify semantics.
19052         * tree-ssa-alias.cc (check_fnspec): Correctly interpret
19053         the size given by arg_max_access_size_given_by_arg_p as
19054         maximum, not exact, size.
19056 2023-04-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19058         PR target/99195
19059         * config/aarch64/aarch64-simd.md (orn<mode>3): Rename to...
19060         (orn<mode>3<vczle><vczbe>): ... This.
19061         (bic<mode>3): Rename to...
19062         (bic<mode>3<vczle><vczbe>): ... This.
19063         (<su><maxmin><mode>3): Rename to...
19064         (<su><maxmin><mode>3<vczle><vczbe>): ... This.
19066 2023-04-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19068         * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3): New define_expand.
19069         * config/aarch64/iterators.md (VQDIV): New mode iterator.
19070         (vnx2di): New mode attribute.
19072 2023-04-25  Richard Biener  <rguenther@suse.de>
19074         PR rtl-optimization/109585
19075         * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
19077 2023-04-25  Jakub Jelinek  <jakub@redhat.com>
19079         PR target/109566
19080         * config/rs6000/rs6000.cc (rs6000_is_valid_rotate_dot_mask): For
19081         !TARGET_64BIT, don't return true if UINTVAL (mask) << (63 - nb)
19082         is larger than signed int maximum.
19084 2023-04-25  Martin Liska  <mliska@suse.cz>
19086         * doc/gcov.texi: Document the new "calls" field and document
19087         the API bump. Mention also "block_ids" for lines.
19088         * gcov.cc (output_intermediate_json_line): Output info about
19089         calls and extend branches as well.
19090         (generate_results): Bump version to 2.
19091         (output_line_details): Use block ID instead of a non-sensual
19092         index.
19094 2023-04-25  Roger Sayle  <roger@nextmovesoftware.com>
19096         * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
19097         length attribute for the first (memory operand) alternative.
19099 2023-04-25  Victor Do Nascimento  <victor.donascimento@arm.com>
19101         * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New.
19102         * config/aarch64/constraints.md: Make "Umn" relaxed memory
19103         constraint.
19104         * config/aarch64/iterators.md(ldpstp_vel_sz): New.
19106 2023-04-25  Aldy Hernandez  <aldyh@redhat.com>
19108         * value-range.cc (frange::set): Adjust constructor.
19109         * value-range.h (nan_state::nan_state): Replace default
19110         constructor with one taking an argument.
19112 2023-04-25  Aldy Hernandez  <aldyh@redhat.com>
19114         * ipa-cp.cc (ipa_range_contains_p): New.
19115         (decide_whether_version_node): Use it.
19117 2023-04-24  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
19119         * tree-ssa-forwprop.cc (is_combined_permutation_identity): Try to
19120         simplify two successive VEC_PERM_EXPRs with same VLA mask,
19121         where mask chooses elements in reverse order.
19123 2023-04-24  Andrew Pinski  <apinski@marvell.com>
19125         * tree-ssa-phiopt.cc (match_simplify_replacement): Add new arguments
19126         and support diamond shaped basic block form.
19127         (tree_ssa_phiopt_worker): Update call to match_simplify_replacement
19129 2023-04-24  Andrew Pinski  <apinski@marvell.com>
19131         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
19132         Instead of calling last_and_only_stmt, look for the last statement
19133         manually.
19135 2023-04-24  Andrew Pinski  <apinski@marvell.com>
19137         * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
19138         New function.
19139         (match_simplify_replacement): Call
19140         empty_bb_or_one_feeding_into_p instead of doing it inline.
19142 2023-04-24  Andrew Pinski  <apinski@marvell.com>
19144         PR tree-optimization/68894
19145         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove the
19146         continue for the do_hoist_loads diamond case.
19148 2023-04-24  Andrew Pinski  <apinski@marvell.com>
19150         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
19151         code for better code readability.
19153 2023-04-24  Andrew Pinski  <apinski@marvell.com>
19155         PR tree-optimization/109604
19156         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Move the
19157         diamond form check from ...
19158         (minmax_replacement): Here.
19160 2023-04-24  Patrick Palka  <ppalka@redhat.com>
19162         * tree.cc (strip_array_types): Don't define here.
19163         (is_typedef_decl): Don't define here.
19164         (typedef_variant_p): Don't define here.
19165         * tree.h (strip_array_types): Define here.
19166         (is_typedef_decl): Define here.
19167         (typedef_variant_p): Define here.
19169 2023-04-24  Frederik Harwath  <frederik@codesourcery.com>
19171         * doc/generic.texi (OpenMP): Add != to allowed
19172         conditions and state that vars can be unsigned.
19173         * tree.def (OMP_FOR): Likewise.
19175 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19177         * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
19179 2023-04-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
19181         * doc/install.texi: Consistently use Solaris rather than Solaris 2.
19182         Remove explicit Solaris 11 references.
19183         Markup fixes.
19184         (Options specification, --with-gnu-as): as and gas always differ
19185         on Solaris.
19186         Remove /usr/ccs/bin reference.
19187         (Installing GCC: Binaries, Solaris (SPARC, Intel)): Remove.
19188         (i?86-*-solaris2*): Merge assembler, linker recommendations ...
19189         (*-*-solaris2*): ... here.
19190         Update bundled GCC versions.
19191         Don't refer to pre-built binaries.
19192         Remove /bin/sh warning.
19193         Update assembler, linker recommendations.
19194         Document GNAT bootstrap compiler.
19195         (sparc-sun-solaris2*): Remove non-UltraSPARC reference.
19196         (sparc64-*-solaris2*): Move content...
19197         (sparcv9-*-solaris2*): ...here.
19198         Add GDC for 64-bit bootstrap compilers.
19200 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19202         PR target/109406
19203         * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
19204         case.
19205         * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
19206         pattern.
19208 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19210         * config/aarch64/aarch64-simd.md (aarch64_<sur>abal2<mode>): Rename to...
19211         (aarch64_<su>abal2<mode>_insn): ... This.  Use RTL codes instead of unspec.
19212         (aarch64_<su>abal2<mode>): New define_expand.
19213         * config/aarch64/aarch64.cc (aarch64_abd_rtx_p): New function.
19214         (aarch64_rtx_costs): Handle ABD rtxes.
19215         * config/aarch64/aarch64.md (UNSPEC_SABAL2, UNSPEC_UABAL2): Delete.
19216         * config/aarch64/iterators.md (ABAL2): Delete.
19217         (sur): Remove handling of UNSPEC_UABAL2 and UNSPEC_SABAL2.
19219 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19221         * config/aarch64/aarch64-simd.md (aarch64_<sur>abal<mode>): Rename to...
19222         (aarch64_<su>abal<mode>): ... This.  Use RTL codes instead of unspec.
19223         (<sur>sadv16qi): Rename to...
19224         (<su>sadv16qi): ... This.  Adjust for the above.
19225         * config/aarch64/aarch64-sve.md (<sur>sad<vsi2qi>): Rename to...
19226         (<su>sad<vsi2qi>): ... This.  Adjust for the above.
19227         * config/aarch64/aarch64.md (UNSPEC_SABAL, UNSPEC_UABAL): Delete.
19228         * config/aarch64/iterators.md (ABAL): Delete.
19229         (sur): Remove handling of UNSPEC_SABAL and UNSPEC_UABAL.
19231 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19233         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>): Rename to...
19234         (aarch64_<su>abdl2<mode>_insn): ... This.  Use RTL codes instead of unspec.
19235         (aarch64_<su>abdl2<mode>): New define_expand.
19236         * config/aarch64/aarch64.md (UNSPEC_SABDL2, UNSPEC_UABDL2): Delete.
19237         * config/aarch64/iterators.md (ABDL2): Delete.
19238         (sur): Remove handling of UNSPEC_SABDL2 and UNSPEC_UABDL2.
19240 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19242         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to...
19243         (aarch64_<su>abdl<mode>): ... This.  Use standard RTL ops instead of
19244         unspec.
19245         * config/aarch64/aarch64.md (UNSPEC_SABDL, UNSPEC_UABDL): Delete.
19246         * config/aarch64/iterators.md (ABDL): Delete.
19247         (sur): Remove handling of UNSPEC_SABDL and UNSPEC_UABDL.
19249 2023-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19251         * config/aarch64/aarch64-simd.md
19252         (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
19254 2023-04-24  Richard Biener  <rguenther@suse.de>
19256         * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid
19257         last_stmt.
19258         * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
19259         Likewise.
19260         * ipa-fnsummary.cc (set_cond_stmt_execution_predicate): Likewise.
19261         (set_switch_stmt_execution_predicate): Likewise.
19262         (phi_result_unknown_predicate): Likewise.
19263         * ipa-prop.cc (compute_complex_ancestor_jump_func): Likewise.
19264         (ipa_analyze_indirect_call_uses): Likewise.
19265         * predict.cc (predict_iv_comparison): Likewise.
19266         (predict_extra_loop_exits): Likewise.
19267         (predict_loops): Likewise.
19268         (tree_predict_by_opcode): Likewise.
19269         * gimple-predicate-analysis.cc (predicate::init_from_control_deps):
19270         Likewise.
19271         * gimple-pretty-print.cc (dump_implicit_edges): Likewise.
19272         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Likewise.
19273         (replace_phi_edge_with_variable): Likewise.
19274         (two_value_replacement): Likewise.
19275         (value_replacement): Likewise.
19276         (minmax_replacement): Likewise.
19277         (spaceship_replacement): Likewise.
19278         (cond_removal_in_builtin_zero_pattern): Likewise.
19279         * tree-ssa-reassoc.cc (maybe_optimize_range_tests): Likewise.
19280         * tree-ssa-sccvn.cc (vn_phi_eq): Likewise.
19281         (vn_phi_lookup): Likewise.
19282         (vn_phi_insert): Likewise.
19283         * tree-ssa-structalias.cc (compute_points_to_sets): Likewise.
19284         * tree-ssa-threadbackward.cc (back_threader::maybe_thread_block):
19285         Likewise.
19286         (back_threader_profitability::possibly_profitable_path_p):
19287         Likewise.
19288         * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
19289         Likewise.
19290         * tree-switch-conversion.cc (pass_convert_switch::execute):
19291         Likewise.
19292         (pass_lower_switch<O0>::execute): Likewise.
19293         * tree-tailcall.cc (tree_optimize_tail_calls_1): Likewise.
19294         * tree-vect-loop-manip.cc (vect_loop_versioning): Likewise.
19295         * tree-vect-slp.cc (vect_slp_function): Likewise.
19296         * tree-vect-stmts.cc (cfun_returns): Likewise.
19297         * tree-vectorizer.cc (vect_loop_vectorized_call): Likewise.
19298         (vect_loop_dist_alias_call): Likewise.
19300 2023-04-24  Richard Biener  <rguenther@suse.de>
19302         * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
19304 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19306         * config/riscv/riscv-vsetvl.cc
19307         (vector_infos_manager::all_avail_in_compatible_p): New function.
19308         (pass_vsetvl::refine_vsetvls): Optimize vsetvls.
19309         * config/riscv/riscv-vsetvl.h: New function.
19311 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19313         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
19314         comment for cleanup_insns.
19316 2023-04-24  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19318         * config/riscv/vector-iterators.md: New unspec to refine fault first load pattern.
19319         * config/riscv/vector.md: Refine fault first load pattern to erase avl from instructions
19320         with the fault first load property.
19322 2023-04-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19324         * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
19325         (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
19327 2023-04-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19329         PR target/99195
19330         * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
19331         (aarch64_addp<mode><vczle><vczbe>): ... This.
19333 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
19335         * config/stormy16/stormy16.cc (xstormy16_rtx_costs): Rewrite to
19336         provide reasonable values for common arithmetic operations and
19337         immediate operands (in several machine modes).
19339 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
19341         * config/stormy16/stormy16.cc (xstormy16_print_operand): Add %h
19342         format specifier to output high_part register name of SImode reg.
19343         * config/stormy16/stormy16.md (extendhisi2): New define_insn.
19344         (zero_extendqihi2): Fix lengths, consistent formatting and add
19345         "and Rx,#255" alternative, for documentation purposes.
19346         (zero_extendhisi2): New define_insn.
19348 2023-04-23  Roger Sayle  <roger@nextmovesoftware.com>
19350         * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
19351         SImode shifts by two by performing a single bit SImode shift twice.
19353 2023-04-23  Aldy Hernandez  <aldyh@redhat.com>
19355         PR tree-optimization/109593
19356         * value-range.cc (frange::operator==): Handle NANs.
19358 2023-04-23  liuhongt  <hongtao.liu@intel.com>
19360         PR rtl-optimization/108707
19361         * ira-costs.cc (scan_one_insn): Use NO_REGS instead of
19362         GENERAL_REGS when preferred reg_class is not known.
19364 2023-04-22  Andrew Pinski  <apinski@marvell.com>
19366         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
19367         Change the code around slightly to move diamond
19368         handling for do_store_elim/do_hoist_loads out of
19369         the big if/else.
19371 2023-04-22  Andrew Pinski  <apinski@marvell.com>
19373         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
19374         Remove check on empty_block_p.
19376 2023-04-22  Jakub Jelinek  <jakub@redhat.com>
19378         PR bootstrap/109589
19379         * system.h (class auto_mpz): Workaround PR62101 bug in GCC 4.8 and 4.9.
19380         * realmpfr.h (class auto_mpfr): Likewise.
19382 2023-04-22  Jakub Jelinek  <jakub@redhat.com>
19384         PR tree-optimization/109583
19385         * match.pd (fneg/fadd simplify): Don't call related_vector_mode
19386         if vec_mode is not VECTOR_MODE_P.
19388 2023-04-22  Jan Hubicka  <hubicka@ucw.cz>
19389             Ondrej Kubanek  <kubanek0ondrej@gmail.com>
19391         * cfgloopmanip.h (adjust_loop_info_after_peeling): Declare.
19392         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix updating of
19393         loop profile and bounds after header duplication.
19394         * tree-ssa-loop-ivcanon.cc (adjust_loop_info_after_peeling):
19395         Break out from try_peel_loop; fix handling of 0 iterations.
19396         (try_peel_loop): Use adjust_loop_info_after_peeling.
19398 2023-04-21  Andrew MacLeod  <amacleod@redhat.com>
19400         PR tree-optimization/109546
19401         * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
19402         not fold conditions with ADDR_EXPR early.
19404 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19406         * config/aarch64/aarch64.md (aarch64_umax<mode>3_insn): Delete.
19407         (umax<mode>3): Emit raw UMAX RTL instead of going through gen_ function
19408         for umax.
19409         (<optab><mode>3): New define_expand for MAXMIN_NOUMAX codes.
19410         (*aarch64_<optab><mode>3_zero): Define.
19411         (*aarch64_<optab><mode>3_cssc): Likewise.
19412         * config/aarch64/iterators.md (maxminand): New code attribute.
19414 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19416         PR target/108779
19417         * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
19418         * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
19419         Define prototype.
19420         * config/aarch64/aarch64.cc (aarch64_tpidr_register): Declare.
19421         (aarch64_override_options_internal): Handle the above.
19422         (aarch64_output_load_tp): New function.
19423         * config/aarch64/aarch64.md (aarch64_load_tp_hard): Call
19424         aarch64_output_load_tp.
19425         * config/aarch64/aarch64.opt (aarch64_tp_reg): Define enum.
19426         (mtp=): New option.
19427         * doc/invoke.texi (AArch64 Options): Document -mtp=.
19429 2023-04-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
19431         PR target/99195
19432         * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
19433         (add_vec_concat_subst_be): Likewise.
19434         (vczle): Likewise.
19435         (vczbe): Likewise.
19436         (add<mode>3): Rename to...
19437         (add<mode>3<vczle><vczbe>): ... This.
19438         (sub<mode>3): Rename to...
19439         (sub<mode>3<vczle><vczbe>): ... This.
19440         (mul<mode>3): Rename to...
19441         (mul<mode>3<vczle><vczbe>): ... This.
19442         (and<mode>3): Rename to...
19443         (and<mode>3<vczle><vczbe>): ... This.
19444         (ior<mode>3): Rename to...
19445         (ior<mode>3<vczle><vczbe>): ... This.
19446         (xor<mode>3): Rename to...
19447         (xor<mode>3<vczle><vczbe>): ... This.
19448         * config/aarch64/iterators.md (VDZ): Define.
19450 2023-04-21  Patrick Palka  <ppalka@redhat.com>
19452         * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
19453         and type_p.
19455 2023-04-21  Jan Hubicka  <jh@suse.cz>
19457         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
19458         commit.
19460 2023-04-21  Vineet Gupta  <vineetg@rivosinc.com>
19462         * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
19463         (shift*_cost_ptr ()): Access x_shift*_cost array directly.
19465 2023-04-21  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
19467         * config/aarch64/aarch64.cc (aarch64_simd_dup_constant): Use
19468         force_reg instead of copy_to_mode_reg.
19469         (aarch64_expand_vector_init): Likewise.
19471 2023-04-21  Uroš Bizjak  <ubizjak@gmail.com>
19473         * config/i386/i386.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Remove.
19474         (REG_OK_FOR_INDEX_NONSTRICT_P,  REG_OK_FOR_BASE_NONSTRICT_P): Ditto.
19475         (REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P): Ditto.
19476         (FIRST_INDEX_REG, LAST_INDEX_REG): New defines.
19477         (LEGACY_INDEX_REG_P, LEGACY_INDEX_REGNO_P): New macros.
19478         (INDEX_REG_P, INDEX_REGNO_P): Ditto.
19479         (REGNO_OK_FOR_INDEX_P): Use INDEX_REGNO_P predicates.
19480         (REGNO_OK_FOR_INDEX_NONSTRICT_P): New macro.
19481         (EG_OK_FOR_BASE_NONSTRICT_P): Ditto.
19482         * config/i386/predicates.md (index_register_operand):
19483         Use REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
19484         * config/i386/i386.cc (ix86_legitimate_address_p): Use
19485         REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_BASE_NONSTRICT_P,
19486         REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
19488 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
19489             Ondrej Kubanek  <kubanek0ondrej@gmail.com>
19491         * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
19492         latch.
19494 2023-04-21  Richard Biener  <rguenther@suse.de>
19496         * is-a.h (safe_is_a): New.
19498 2023-04-21  Richard Biener  <rguenther@suse.de>
19500         * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
19501         (gphi_iterator::operator*): Likewise.
19503 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
19504             Michal Jires  <michal@jires.eu>
19506         * ipa-inline.cc (class inline_badness): New class.
19507         (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead
19508         of sreal.
19509         (update_edge_key): Update.
19510         (lookup_recursive_calls): Likewise.
19511         (recursive_inlining): Likewise.
19512         (add_new_edges_to_heap): Likewise.
19513         (inline_small_functions): Likewise.
19515 2023-04-21  Jan Hubicka  <hubicka@ucw.cz>
19517         * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
19519 2023-04-21  Richard Biener  <rguenther@suse.de>
19521         PR tree-optimization/109573
19522         * tree-vect-loop.cc (vectorizable_live_operation): Allow
19523         unhandled SSA copy as well.  Demote assert to checking only.
19525 2023-04-21  Richard Biener  <rguenther@suse.de>
19527         * df-core.cc (df_analyze): Compute RPO on the reverse graph
19528         for DF_BACKWARD problems.
19529         (loop_post_order_compute): Rename to ...
19530         (loop_rev_post_order_compute): ... this, compute a RPO.
19531         (loop_inverted_post_order_compute): Rename to ...
19532         (loop_inverted_rev_post_order_compute): ... this, compute a RPO.
19533         (df_analyze_loop): Use RPO on the forward graph for DF_FORWARD
19534         problems, RPO on the inverted graph for DF_BACKWARD.
19536 2023-04-21  Richard Biener  <rguenther@suse.de>
19538         * cfganal.h (inverted_rev_post_order_compute): Rename
19539         from ...
19540         (inverted_post_order_compute): ... this.  Add struct function
19541         argument, change allocation to a C array.
19542         * cfganal.cc (inverted_rev_post_order_compute): Likewise.
19543         * lcm.cc (compute_antinout_edge): Adjust.
19544         * lra-lives.cc (lra_create_live_ranges_1): Likewise.
19545         * tree-ssa-dce.cc (remove_dead_stmt): Likewise.
19546         * tree-ssa-pre.cc (compute_antic): Likewise.
19548 2023-04-21  Richard Biener  <rguenther@suse.de>
19550         * df.h (df_d::postorder_inverted): Change back to int *,
19551         clarify comments.
19552         * df-core.cc (rest_of_handle_df_finish): Adjust.
19553         (df_analyze_1): Likewise.
19554         (df_analyze): For DF_FORWARD problems use RPO on the forward
19555         graph.  Adjust.
19556         (loop_inverted_post_order_compute): Adjust API.
19557         (df_analyze_loop): Adjust.
19558         (df_get_n_blocks): Likewise.
19559         (df_get_postorder): Likewise.
19561 2023-04-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19563         PR target/108270
19564         * config/riscv/riscv-vsetvl.cc
19565         (vector_infos_manager::all_empty_predecessor_p): New function.
19566         (pass_vsetvl::backward_demand_fusion): Ditto.
19567         * config/riscv/riscv-vsetvl.h: Ditto.
19569 2023-04-21  Robin Dapp  <rdapp@ventanamicro.com>
19571         PR target/109582
19572         * config/riscv/generic.md: Change standard names to insn names.
19574 2023-04-21  Richard Biener  <rguenther@suse.de>
19576         * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
19577         (compute_laterin): Use RPO.
19578         (compute_available): Likewise.
19580 2023-04-21  Peng Fan  <fanpeng@loongson.cn>
19582         * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
19584 2023-04-21  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19586         PR target/109547
19587         * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): New function.
19588         (vector_insn_info::skip_avl_compatible_p): Ditto.
19589         (vector_insn_info::merge): Remove default value.
19590         (pass_vsetvl::compute_local_backward_infos): Ditto.
19591         (pass_vsetvl::cleanup_insns): Add local vsetvl elimination.
19592         * config/riscv/riscv-vsetvl.h: Ditto.
19594 2023-04-20  Alejandro Colomar  <alx.manpages@gmail.com>
19596         * doc/extend.texi (Common Function Attributes): Remove duplicate
19597         word.
19599 2023-04-20  Andrew MacLeod  <amacleod@redhat.com>
19601         PR tree-optimization/109564
19602         * gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore
19603         UNDEFINED range names when deciding if all PHI arguments are the same,
19605 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
19607         PR tree-optimization/109011
19608         * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): Use
19609         .CTZ (X) = .POPCOUNT ((X - 1) & ~X) in preference to
19610         .CTZ (X) = PREC - .POPCOUNT (X | -X).
19612 2023-04-20  Vladimir N. Makarov  <vmakarov@redhat.com>
19614         * lra-constraints.cc (match_reload): Exclude some hard regs for
19615         multi-reg inout reload pseudos used in asm in different mode.
19617 2023-04-20  Uros Bizjak  <ubizjak@gmail.com>
19619         * config/arm/arm.cc (thumb1_legitimate_address_p):
19620         Use VIRTUAL_REGISTER_P predicate.
19621         (arm_eliminable_register): Ditto.
19622         * config/avr/avr.md (push<mode>_1): Ditto.
19623         * config/bfin/predicates.md (register_no_elim_operand): Ditto.
19624         * config/h8300/predicates.md (register_no_sp_elim_operand): Ditto.
19625         * config/i386/predicates.md (register_no_elim_operand): Ditto.
19626         * config/iq2000/predicates.md (call_insn_operand): Ditto.
19627         * config/microblaze/microblaze.h (CALL_INSN_OP): Ditto.
19629 2023-04-20  Uros Bizjak  <ubizjak@gmail.com>
19631         PR target/78952
19632         * config/i386/predicates.md (extract_operator): New predicate.
19633         * config/i386/i386.md (any_extract): Remove code iterator.
19634         (*cmpqi_ext<mode>_1_mem_rex64): Use extract_operator predicate.
19635         (*cmpqi_ext<mode>_1): Ditto.
19636         (*cmpqi_ext<mode>_2): Ditto.
19637         (*cmpqi_ext<mode>_3_mem_rex64): Ditto.
19638         (*cmpqi_ext<mode>_3): Ditto.
19639         (*cmpqi_ext<mode>_4): Ditto.
19640         (*extzvqi_mem_rex64): Ditto.
19641         (*extzvqi): Ditto.
19642         (*insvqi_2): Ditto.
19643         (*extendqi<SWI24:mode>_ext_1): Ditto.
19644         (*addqi_ext<mode>_0): Ditto.
19645         (*addqi_ext<mode>_1): Ditto.
19646         (*addqi_ext<mode>_2): Ditto.
19647         (*subqi_ext<mode>_0): Ditto.
19648         (*subqi_ext<mode>_2): Ditto.
19649         (*testqi_ext<mode>_1): Ditto.
19650         (*testqi_ext<mode>_2): Ditto.
19651         (*andqi_ext<mode>_0): Ditto.
19652         (*andqi_ext<mode>_1): Ditto.
19653         (*andqi_ext<mode>_1_cc): Ditto.
19654         (*andqi_ext<mode>_2): Ditto.
19655         (*<any_or:code>qi_ext<mode>_0): Ditto.
19656         (*<any_or:code>qi_ext<mode>_1): Ditto.
19657         (*<any_or:code>qi_ext<mode>_2): Ditto.
19658         (*xorqi_ext<mode>_1_cc): Ditto.
19659         (*negqi_ext<mode>_2): Ditto.
19660         (*ashlqi_ext<mode>_2): Ditto.
19661         (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
19663 2023-04-20  Raphael Zinsly  <rzinsly@ventanamicro.com>
19665         PR target/108248
19666         * config/riscv/bitmanip.md (clz, ctz, pcnt, min, max patterns): Use
19667         <bitmanip_insn> as the type to allow for fine grained control of
19668         scheduling these insns.
19669         * config/riscv/generic.md (generic_alu): Add bitmanip, clz, ctz, pcnt,
19670         min, max.
19671         * config/riscv/riscv.md (type attribute): Add types for clz, ctz,
19672         pcnt, signed and unsigned min/max.
19674 2023-04-20  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19675             kito-cheng  <kito.cheng@sifive.com>
19677         * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
19679 2023-04-20  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
19680             kito-cheng  <kito.cheng@sifive.com>
19682         PR target/109535
19683         * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
19684         (pass_vsetvl::cleanup_insns): Fix bug.
19686 2023-04-20  Andrew Stubbs  <ams@codesourcery.com>
19688         * config/gcn/gcn-valu.md (vnsi, VnSI): Add scalar modes.
19689         (ldexp<mode>3): Delete.
19690         (ldexp<mode>3<exec>): Change "B" to "A".
19692 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
19693             Jonathan Wakely  <jwakely@redhat.com>
19695         * tree.h (built_in_function_equal_p): New helper function.
19696         (fndecl_built_in_p): Turn into variadic template to support
19697         1 or more built_in_function arguments.
19698         * builtins.cc (fold_builtin_expect): Use 3 argument fndecl_built_in_p.
19699         * gimplify.cc (goa_stabilize_expr): Likewise.
19700         * cgraphclones.cc (cgraph_node::create_clone): Likewise.
19701         * ipa-fnsummary.cc (compute_fn_summary): Likewise.
19702         * omp-low.cc (setjmp_or_longjmp_p): Likewise.
19703         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
19704         cgraph_update_edges_for_call_stmt_node,
19705         cgraph_edge::verify_corresponds_to_fndecl,
19706         cgraph_node::verify_node): Likewise.
19707         * tree-stdarg.cc (optimize_va_list_gpr_fpr_size): Likewise.
19708         * gimple-ssa-warn-access.cc (matching_alloc_calls_p): Likewise.
19709         * ipa-prop.cc (try_make_edge_direct_virtual_call): Likewise.
19711 2023-04-20  Jakub Jelinek  <jakub@redhat.com>
19713         PR tree-optimization/109011
19714         * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): New function.
19715         (vect_recog_popcount_clz_ctz_ffs_pattern): Move vect_pattern_detected
19716         call later.  Don't punt for IFN_CTZ or IFN_FFS if it doesn't have
19717         direct optab support, but has instead IFN_CLZ, IFN_POPCOUNT or
19718         for IFN_FFS IFN_CTZ support, use vect_recog_ctz_ffs_pattern for that
19719         case.
19720         (vect_vect_recog_func_ptrs): Add ctz_ffs entry.
19722 2023-04-20  Richard Biener  <rguenther@suse.de>
19724         * df-core.cc (rest_of_handle_df_initialize): Remove
19725         computation of df->postorder, df->postorder_inverted and
19726         df->n_blocks.
19728 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
19730         * common/config/i386/i386-common.cc
19731         (OPTION_MASK_ISA2_AVX_UNSET): Add OPTION_MASK_ISA2_VAES_UNSET.
19732         (ix86_handle_option): Set AVX flag for VAES.
19733         * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
19734         Add OPTION_MASK_ISA2_VAES_UNSET.
19735         (def_builtin): Share builtin between AES and VAES.
19736         * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
19737         Ditto.
19738         * config/i386/i386.md (aes): New isa attribute.
19739         * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
19740         (aesenclast): Ditto.
19741         (aesdec): Ditto.
19742         (aesdeclast): Ditto.
19743         * config/i386/vaesintrin.h: Remove redundant avx target push.
19744         * config/i386/wmmintrin.h (_mm_aesdec_si128): Change to macro.
19745         (_mm_aesdeclast_si128): Ditto.
19746         (_mm_aesenc_si128): Ditto.
19747         (_mm_aesenclast_si128): Ditto.
19749 2023-04-20  Hu, Lin1  <lin1.hu@intel.com>
19751         * config/i386/avx2intrin.h
19752         (_MM_REDUCE_OPERATOR_BASIC_EPI16): New macro.
19753         (_MM_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
19754         (_MM256_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
19755         (_MM256_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
19756         (_MM_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
19757         (_MM_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
19758         (_MM256_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
19759         (_MM256_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
19760         (_mm_reduce_add_epi16): New instrinsics.
19761         (_mm_reduce_mul_epi16): Ditto.
19762         (_mm_reduce_and_epi16): Ditto.
19763         (_mm_reduce_or_epi16): Ditto.
19764         (_mm_reduce_max_epi16): Ditto.
19765         (_mm_reduce_max_epu16): Ditto.
19766         (_mm_reduce_min_epi16): Ditto.
19767         (_mm_reduce_min_epu16): Ditto.
19768         (_mm256_reduce_add_epi16): Ditto.
19769         (_mm256_reduce_mul_epi16): Ditto.
19770         (_mm256_reduce_and_epi16): Ditto.
19771         (_mm256_reduce_or_epi16): Ditto.
19772         (_mm256_reduce_max_epi16): Ditto.
19773         (_mm256_reduce_max_epu16): Ditto.
19774         (_mm256_reduce_min_epi16): Ditto.
19775         (_mm256_reduce_min_epu16): Ditto.
19776         (_mm_reduce_add_epi8): Ditto.
19777         (_mm_reduce_mul_epi8): Ditto.
19778         (_mm_reduce_and_epi8): Ditto.
19779         (_mm_reduce_or_epi8): Ditto.
19780         (_mm_reduce_max_epi8): Ditto.
19781         (_mm_reduce_max_epu8): Ditto.
19782         (_mm_reduce_min_epi8): Ditto.
19783         (_mm_reduce_min_epu8): Ditto.
19784         (_mm256_reduce_add_epi8): Ditto.
19785         (_mm256_reduce_mul_epi8): Ditto.
19786         (_mm256_reduce_and_epi8): Ditto.
19787         (_mm256_reduce_or_epi8): Ditto.
19788         (_mm256_reduce_max_epi8): Ditto.
19789         (_mm256_reduce_max_epu8): Ditto.
19790         (_mm256_reduce_min_epi8): Ditto.
19791         (_mm256_reduce_min_epu8): Ditto.
19792         * config/i386/avx512vlbwintrin.h:
19793         (_mm_mask_reduce_add_epi16): Ditto.
19794         (_mm_mask_reduce_mul_epi16): Ditto.
19795         (_mm_mask_reduce_and_epi16): Ditto.
19796         (_mm_mask_reduce_or_epi16): Ditto.
19797         (_mm_mask_reduce_max_epi16): Ditto.
19798         (_mm_mask_reduce_max_epu16): Ditto.
19799         (_mm_mask_reduce_min_epi16): Ditto.
19800         (_mm_mask_reduce_min_epu16): Ditto.
19801         (_mm256_mask_reduce_add_epi16): Ditto.
19802         (_mm256_mask_reduce_mul_epi16): Ditto.
19803         (_mm256_mask_reduce_and_epi16): Ditto.
19804         (_mm256_mask_reduce_or_epi16): Ditto.
19805         (_mm256_mask_reduce_max_epi16): Ditto.
19806         (_mm256_mask_reduce_max_epu16): Ditto.
19807         (_mm256_mask_reduce_min_epi16): Ditto.
19808         (_mm256_mask_reduce_min_epu16): Ditto.
19809         (_mm_mask_reduce_add_epi8): Ditto.
19810         (_mm_mask_reduce_mul_epi8): Ditto.
19811         (_mm_mask_reduce_and_epi8): Ditto.
19812         (_mm_mask_reduce_or_epi8): Ditto.
19813         (_mm_mask_reduce_max_epi8): Ditto.
19814         (_mm_mask_reduce_max_epu8): Ditto.
19815         (_mm_mask_reduce_min_epi8): Ditto.
19816         (_mm_mask_reduce_min_epu8): Ditto.
19817         (_mm256_mask_reduce_add_epi8): Ditto.
19818         (_mm256_mask_reduce_mul_epi8): Ditto.
19819         (_mm256_mask_reduce_and_epi8): Ditto.
19820         (_mm256_mask_reduce_or_epi8): Ditto.
19821         (_mm256_mask_reduce_max_epi8): Ditto.
19822         (_mm256_mask_reduce_max_epu8): Ditto.
19823         (_mm256_mask_reduce_min_epi8): Ditto.
19824         (_mm256_mask_reduce_min_epu8): Ditto.
19826 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
19828         * common/config/i386/i386-common.cc
19829         (OPTION_MASK_ISA_VPCLMULQDQ_SET):
19830         Add OPTION_MASK_ISA_PCLMUL_SET and OPTION_MASK_ISA_AVX_SET.
19831         (OPTION_MASK_ISA_AVX_UNSET):
19832         Add OPTION_MASK_ISA_VPCLMULQDQ_UNSET.
19833         (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
19834         * config/i386/i386.md (vpclmulqdqvl): New.
19835         * config/i386/sse.md (pclmulqdq): Add evex encoding.
19836         * config/i386/vpclmulqdqintrin.h: Remove redudant avx target
19837         push.
19839 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
19841         * config/i386/avx512vlbwintrin.h
19842         (_mm_mask_blend_epi16): Remove __OPTIMIZE__ wrapper.
19843         (_mm_mask_blend_epi8): Ditto.
19844         (_mm256_mask_blend_epi16): Ditto.
19845         (_mm256_mask_blend_epi8): Ditto.
19846         * config/i386/avx512vlintrin.h
19847         (_mm256_mask_blend_pd): Ditto.
19848         (_mm256_mask_blend_ps): Ditto.
19849         (_mm256_mask_blend_epi64): Ditto.
19850         (_mm256_mask_blend_epi32): Ditto.
19851         (_mm_mask_blend_pd): Ditto.
19852         (_mm_mask_blend_ps): Ditto.
19853         (_mm_mask_blend_epi64): Ditto.
19854         (_mm_mask_blend_epi32): Ditto.
19855         * config/i386/sse.md (VF_AVX512BWHFBF16): Removed.
19856         (VF_AVX512HFBFVL): Move it before the first usage.
19857         (<avx512>_blendm<mode>): Change iterator from VF_AVX512BWHFBF16
19858         to VF_AVX512HFBFVL.
19860 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
19862         * common/config/i386/i386-common.cc
19863         (OPTION_MASK_ISA_AVX512VBMI2_SET): Change OPTION_MASK_ISA_AVX512F_SET
19864         to OPTION_MASK_ISA_AVX512BW_SET.
19865         (OPTION_MASK_ISA_AVX512F_UNSET):
19866         Remove OPTION_MASK_ISA_AVX512VBMI2_UNSET.
19867         (OPTION_MASK_ISA_AVX512BW_UNSET):
19868         Add OPTION_MASK_ISA_AVX512VBMI2_UNSET.
19869         * config/i386/avx512vbmi2intrin.h: Do not push avx512bw.
19870         * config/i386/avx512vbmi2vlintrin.h: Ditto.
19871         * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA_AVX512BW.
19872         * config/i386/sse.md (VI12_AVX512VLBW): Removed.
19873         (VI12_VI48F_AVX512VLBW): Rename to VI12_VI48F_AVX512VL.
19874         (compress<mode>_mask): Change iterator from VI12_AVX512VLBW to
19875         VI12_AVX512VL.
19876         (compressstore<mode>_mask): Ditto.
19877         (expand<mode>_mask): Ditto.
19878         (expand<mode>_maskz): Ditto.
19879         (*expand<mode>_mask): Change iterator from VI12_VI48F_AVX512VLBW to
19880         VI12_VI48F_AVX512VL.
19882 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
19884         * common/config/i386/i386-common.cc
19885         (OPTION_MASK_ISA_AVX512BITALG_SET):
19886         Change OPTION_MASK_ISA_AVX512F_SET
19887         to OPTION_MASK_ISA_AVX512BW_SET.
19888         (OPTION_MASK_ISA_AVX512F_UNSET):
19889         Remove OPTION_MASK_ISA_AVX512BITALG_SET.
19890         (OPTION_MASK_ISA_AVX512BW_UNSET):
19891         Add OPTION_MASK_ISA_AVX512BITALG_SET.
19892         * config/i386/avx512bitalgintrin.h: Do not push avx512bw.
19893         * config/i386/i386-builtin.def:
19894         Remove redundant OPTION_MASK_ISA_AVX512BW.
19895         * config/i386/sse.md (VI1_AVX512VLBW): Removed.
19896         (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>):
19897         Change the iterator from VI1_AVX512VLBW to VI1_AVX512VL.
19899 2023-04-20  Haochen Jiang  <haochen.jiang@intel.com>
19901         * config/i386/i386-expand.cc
19902         (ix86_check_builtin_isa_match): Correct wrong comments.
19903         Add a new macro SHARE_BUILTIN and refactor the current if
19904         clauses to macro.
19906 2023-04-20  Mo, Zewei  <zewei.mo@intel.com>
19908         * config/i386/cpuid.h: Open a new section for Extended Features
19909         Leaf (%eax == 7, %ecx == 0) and Extended Features Sub-leaf (%eax == 7,
19910         %ecx == 1).
19912 2023-04-20  Hu, Lin1  <lin1.hu@intel.com>
19914         * config/i386/sse.md: Modify insn vperm{i,f}
19915         and vshuf{i,f}.
19917 2023-04-19  Max Filippov  <jcmvbkbc@gmail.com>
19919         * config/xtensa/xtensa-opts.h: New header.
19920         * config/xtensa/xtensa.h (STRICT_ALIGNMENT): Redefine as
19921         xtensa_strict_align.
19922         * config/xtensa/xtensa.cc (xtensa_option_override): When
19923         -m[no-]strict-align is not specified in the command line set
19924         xtensa_strict_align to 0 if the hardware supports both unaligned
19925         loads and stores or to 1 otherwise.
19926         * config/xtensa/xtensa.opt (mstrict-align): New option.
19927         * doc/invoke.texi (Xtensa Options): Document -m[no-]strict-align.
19929 2023-04-19  Max Filippov  <jcmvbkbc@gmail.com>
19931         * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
19932         function.
19934 2023-04-19  Andrew Pinski  <apinski@marvell.com>
19936         * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
19938 2023-04-19  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
19940         * config/riscv/riscv-modes.def (FLOAT_MODE): Add chunk 128 support.
19941         (VECTOR_BOOL_MODE): Ditto.
19942         (ADJUST_NUNITS): Ditto.
19943         (ADJUST_ALIGNMENT): Ditto.
19944         (ADJUST_BYTESIZE): Ditto.
19945         (ADJUST_PRECISION): Ditto.
19946         (RVV_MODES): Ditto.
19947         (VECTOR_MODE_WITH_PREFIX): Ditto.
19948         * config/riscv/riscv-v.cc (ENTRY): Ditto.
19949         (get_vlmul): Ditto.
19950         (get_ratio): Ditto.
19951         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
19952         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
19953         (vbool64_t): Ditto.
19954         (vbool32_t): Ditto.
19955         (vbool16_t): Ditto.
19956         (vbool8_t): Ditto.
19957         (vbool4_t): Ditto.
19958         (vbool2_t): Ditto.
19959         (vbool1_t): Ditto.
19960         (vint8mf8_t): Ditto.
19961         (vuint8mf8_t): Ditto.
19962         (vint8mf4_t): Ditto.
19963         (vuint8mf4_t): Ditto.
19964         (vint8mf2_t): Ditto.
19965         (vuint8mf2_t): Ditto.
19966         (vint8m1_t): Ditto.
19967         (vuint8m1_t): Ditto.
19968         (vint8m2_t): Ditto.
19969         (vuint8m2_t): Ditto.
19970         (vint8m4_t): Ditto.
19971         (vuint8m4_t): Ditto.
19972         (vint8m8_t): Ditto.
19973         (vuint8m8_t): Ditto.
19974         (vint16mf4_t): Ditto.
19975         (vuint16mf4_t): Ditto.
19976         (vint16mf2_t): Ditto.
19977         (vuint16mf2_t): Ditto.
19978         (vint16m1_t): Ditto.
19979         (vuint16m1_t): Ditto.
19980         (vint16m2_t): Ditto.
19981         (vuint16m2_t): Ditto.
19982         (vint16m4_t): Ditto.
19983         (vuint16m4_t): Ditto.
19984         (vint16m8_t): Ditto.
19985         (vuint16m8_t): Ditto.
19986         (vint32mf2_t): Ditto.
19987         (vuint32mf2_t): Ditto.
19988         (vint32m1_t): Ditto.
19989         (vuint32m1_t): Ditto.
19990         (vint32m2_t): Ditto.
19991         (vuint32m2_t): Ditto.
19992         (vint32m4_t): Ditto.
19993         (vuint32m4_t): Ditto.
19994         (vint32m8_t): Ditto.
19995         (vuint32m8_t): Ditto.
19996         (vint64m1_t): Ditto.
19997         (vuint64m1_t): Ditto.
19998         (vint64m2_t): Ditto.
19999         (vuint64m2_t): Ditto.
20000         (vint64m4_t): Ditto.
20001         (vuint64m4_t): Ditto.
20002         (vint64m8_t): Ditto.
20003         (vuint64m8_t): Ditto.
20004         (vfloat32mf2_t): Ditto.
20005         (vfloat32m1_t): Ditto.
20006         (vfloat32m2_t): Ditto.
20007         (vfloat32m4_t): Ditto.
20008         (vfloat32m8_t): Ditto.
20009         (vfloat64m1_t): Ditto.
20010         (vfloat64m2_t): Ditto.
20011         (vfloat64m4_t): Ditto.
20012         (vfloat64m8_t): Ditto.
20013         * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
20014         * config/riscv/riscv.cc (riscv_legitimize_poly_move): Ditto.
20015         (riscv_convert_vector_bits): Ditto.
20016         * config/riscv/riscv.md:
20017         * config/riscv/vector-iterators.md:
20018         * config/riscv/vector.md
20019         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
20020         (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
20021         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
20022         (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
20023         (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
20024         (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
20025         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
20026         (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
20027         (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
20029 2023-04-19  Pan Li  <pan2.li@intel.com>
20031         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
20032         Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
20034 2023-04-19  Uros Bizjak  <ubizjak@gmail.com>
20036         PR target/78904
20037         PR target/78952
20038         * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): New insn pattern.
20039         (*cmpqi_ext<mode>_1): Use nonimmediate_operand predicate
20040         for operand 0. Use any_extract code iterator.
20041         (*cmpqi_ext<mode>_1 peephole2): New peephole2 pattern.
20042         (*cmpqi_ext<mode>_2): Use any_extract code iterator.
20043         (*cmpqi_ext<mode>_3_mem_rex64): New insn pattern.
20044         (*cmpqi_ext<mode>_1): Use general_operand predicate
20045         for operand 1. Use any_extract code iterator.
20046         (*cmpqi_ext<mode>_3 peephole2): New peephole2 pattern.
20047         (*cmpqi_ext<mode>_4): Use any_extract code iterator.
20049 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20051         * config/aarch64/aarch64-simd.md (aarch64_saddw2<mode>): Delete.
20052         (aarch64_uaddw2<mode>): Delete.
20053         (aarch64_ssubw2<mode>): Delete.
20054         (aarch64_usubw2<mode>): Delete.
20055         (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>): New define_expand.
20057 2023-04-19  Richard Biener  <rguenther@suse.de>
20059         * tree-ssa-structalias.cc (do_ds_constraint): Use
20060         solve_add_graph_edge.
20062 2023-04-19  Richard Biener  <rguenther@suse.de>
20064         * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
20065         split out from ...
20066         (do_sd_constraint): ... here.
20068 2023-04-19  Richard Biener  <rguenther@suse.de>
20070         * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
20071         rejecting the merge when A contains only a non-local label.
20073 2023-04-19  Uros Bizjak  <ubizjak@gmail.com>
20075         * rtl.h (VIRTUAL_REGISTER_P): New predicate.
20076         (VIRTUAL_REGISTER_NUM_P): Ditto.
20077         (REGNO_PTR_FRAME_P): Use VIRTUAL_REGISTER_NUM_P predicate.
20078         * expr.cc (force_operand): Use VIRTUAL_REGISTER_P predicate.
20079         * function.cc (instantiate_decl_rtl): Ditto.
20080         * rtlanal.cc (rtx_addr_can_trap_p_1): Ditto.
20081         (nonzero_address_p): Ditto.
20082         (refers_to_regno_p): Use VIRTUAL_REGISTER_NUM_P predicate.
20084 2023-04-19  Aldy Hernandez  <aldyh@redhat.com>
20086         * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
20088 2023-04-19  Richard Biener  <rguenther@suse.de>
20090         * system.h (auto_mpz::operator->()): New.
20091         * realmpfr.h (auto_mpfr::operator->()): New.
20092         * builtins.cc (do_mpfr_lgamma_r): Use auto_mpfr.
20093         * real.cc (real_from_string): Likewise.
20094         (dconst_e_ptr): Likewise.
20095         (dconst_sqrt2_ptr): Likewise.
20096         * tree-ssa-loop-niter.cc (refine_value_range_using_guard):
20097         Use auto_mpz.
20098         (bound_difference_of_offsetted_base): Likewise.
20099         (number_of_iterations_ne): Likewise.
20100         (number_of_iterations_lt_to_ne): Likewise.
20101         * ubsan.cc: Include realmpfr.h.
20102         (ubsan_instrument_float_cast): Use auto_mpfr.
20104 2023-04-19  Richard Biener  <rguenther@suse.de>
20106         * tree-ssa-structalias.cc (solve_graph): Remove self-copy
20107         edges, remove edges from escaped after special-casing them.
20109 2023-04-19  Richard Biener  <rguenther@suse.de>
20111         * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
20112         special casing.
20114 2023-04-19  Richard Biener  <rguenther@suse.de>
20116         * tree-ssa-structalias.cc (do_sd_constraint): Do not write
20117         to the LHS varinfo solution member.
20119 2023-04-19  Richard Biener  <rguenther@suse.de>
20121         * tree-ssa-structalias.cc (topo_visit): Look at the real
20122         destination of edges.
20124 2023-04-19  Richard Biener  <rguenther@suse.de>
20126         PR tree-optimization/44794
20127         * tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop):
20128         If an epilogue loop is required set its iteration upper bound.
20130 2023-04-19  Xi Ruoyao  <xry111@xry111.site>
20132         PR target/109465
20133         * config/loongarch/loongarch-protos.h
20134         (loongarch_expand_block_move): Add a parameter as alignment RTX.
20135         * config/loongarch/loongarch.h:
20136         (LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER): Remove.
20137         (LARCH_MAX_MOVE_BYTES_STRAIGHT): Remove.
20138         (LARCH_MAX_MOVE_OPS_PER_LOOP_ITER): Define.
20139         (LARCH_MAX_MOVE_OPS_STRAIGHT): Define.
20140         (MOVE_RATIO): Use LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
20141         LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
20142         * config/loongarch/loongarch.cc (loongarch_expand_block_move):
20143         Take the alignment from the parameter, but set it to
20144         UNITS_PER_WORD if !TARGET_STRICT_ALIGN.  Limit the length of
20145         straight-line implementation with LARCH_MAX_MOVE_OPS_STRAIGHT
20146         instead of LARCH_MAX_MOVE_BYTES_STRAIGHT.
20147         (loongarch_block_move_straight): When there are left-over bytes,
20148         half the mode size instead of falling back to byte mode at once.
20149         (loongarch_block_move_loop): Limit the length of loop body with
20150         LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
20151         LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
20152         * config/loongarch/loongarch.md (cpymemsi): Pass the alignment
20153         to loongarch_expand_block_move.
20155 2023-04-19  Xi Ruoyao  <xry111@xry111.site>
20157         * config/loongarch/loongarch.cc
20158         (loongarch_setup_incoming_varargs): Don't save more GARs than
20159         cfun->va_list_gpr_size / UNITS_PER_WORD.
20161 2023-04-19  Richard Biener  <rguenther@suse.de>
20163         * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
20164         no epilogue condition.
20166 2023-04-19  Richard Biener  <rguenther@suse.de>
20168         * gimple.h (gimple_assign_load): Outline...
20169         * gimple.cc (gimple_assign_load): ... here.  Avoid
20170         get_base_address and instead just strip the outermost
20171         handled component, treating a remaining handled component
20172         as load.
20174 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20176         * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
20177         definition.
20178         * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
20180 2023-04-19  Jakub Jelinek  <jakub@redhat.com>
20182         PR tree-optimization/109011
20183         * tree-vect-patterns.cc (vect_recog_popcount_pattern): Rename to ...
20184         (vect_recog_popcount_clz_ctz_ffs_pattern): ... this.  Handle also
20185         CLZ, CTZ and FFS.  Remove vargs variable, use
20186         gimple_build_call_internal rather than gimple_build_call_internal_vec.
20187         (vect_vect_recog_func_ptrs): Adjust popcount entry.
20189 2023-04-19  Jakub Jelinek  <jakub@redhat.com>
20191         PR target/109040
20192         * dse.cc (replace_read): If read_reg is a SUBREG of a word mode
20193         REG, for WORD_REGISTER_OPERATIONS copy SUBREG_REG of it into
20194         a new REG rather than the SUBREG.
20196 2023-04-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
20198         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
20199         New pattern.
20201 2023-04-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20203         PR target/108840
20204         * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and
20205         ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases.  Handle subregs in op1.
20207 2023-04-19  Richard Biener  <rguenther@suse.de>
20209         PR rtl-optimization/109237
20210         * cse.cc (insn_live_p): Remove NEXT_INSN walk, instead check
20211         TREE_VISITED on INSN_VAR_LOCATION_DECL.
20212         (delete_trivially_dead_insns): Maintain TREE_VISITED on
20213         active debug bind INSN_VAR_LOCATION_DECL.
20215 2023-04-19  Richard Biener  <rguenther@suse.de>
20217         PR rtl-optimization/109237
20218         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
20220 2023-04-19  Christophe Lyon  <christophe.lyon@arm.com>
20222         * doc/install.texi (enable-decimal-float): Add AArch64.
20224 2023-04-19  liuhongt  <hongtao.liu@intel.com>
20226         PR rtl-optimization/109351
20227         * ira.cc (setup_class_subset_and_memory_move_costs): Check
20228         hard_regno_mode_ok before setting lowest memory move cost for
20229         the mode with different reg classes.
20231 2023-04-18  Jason Merrill  <jason@redhat.com>
20233         * doc/invoke.texi: Remove stray @gol.
20235 2023-04-18  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
20237         * ifcvt.cc (cond_move_process_if_block): Consider the result of
20238         targetm.noce_conversion_profitable_p() when replacing the original
20239         sequence with the converted one.
20241 2023-04-18  Mark Harmstone  <mark@harmstone.com>
20243         * common.opt (gcodeview): Add new option.
20244         * gcc.cc (driver_handle_option); Handle OPT_gcodeview.
20245         * opts.cc (command_handle_option): Similarly.
20246         * doc/invoke.texi: Add documentation for -gcodeview.
20248 2023-04-18  Andrew Pinski  <apinski@marvell.com>
20250         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove declaration.
20251         (make_pass_phiopt): Make execute out of line.
20252         (tree_ssa_cs_elim): Move code into ...
20253         (pass_cselim::execute): here.
20255 2023-04-18  Sam James  <sam@gentoo.org>
20257         * system.h: Drop unused INCLUDE_PTHREAD_H.
20259 2023-04-18  Kevin Lee  <kevinl@rivosinc.com>
20261         * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
20262         condition.
20264 2023-04-18  Sinan Lin  <sinan.lin@linux.alibaba.com>
20266         * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
20267         (bswapdi2, bswapsi2): Similarly.
20269 2023-04-18  Uros Bizjak  <ubizjak@gmail.com>
20271         PR target/94908
20272         * config/i386/i386-builtin.def (__builtin_ia32_insertps128):
20273         Use CODE_FOR_sse4_1_insertps_v4sf.
20274         * config/i386/i386-expand.cc (expand_vec_perm_insertps): New.
20275         (expand_vec_perm_1): Call expand_vec_per_insertps.
20276         * config/i386/i386.md ("unspec"): Declare UNSPEC_INSERTPS here.
20277         * config/i386/mmx.md (mmxscalarmode): New mode attribute.
20278         (@sse4_1_insertps_<mode>): New insn pattern.
20279         * config/i386/sse.md (@sse4_1_insertps_<mode>): Macroize insn
20280         pattern from sse4_1_insertps using VI4F_128 mode iterator.
20282 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
20284         * value-range.cc (gt_ggc_mx): New.
20285         (gt_pch_nx): New.
20286         * value-range.h (class vrange): Add GTY marker.
20287         (class frange): Same.
20288         (gt_ggc_mx): Remove.
20289         (gt_pch_nx): Remove.
20291 2023-04-18  Victor L. Do Nascimento  <victor.donascimento@arm.com>
20293         * lra-constraints.cc (constraint_unique): New.
20294         (process_address_1): Apply constraint_unique test.
20295         * recog.cc (constrain_operands): Allow relaxed memory
20296         constaints.
20298 2023-04-18  Kito Cheng  <kito.cheng@sifive.com>
20300         * doc/extend.texi (Target Builtins): Add RISC-V Vector
20301         Intrinsics.
20302         (RISC-V Vector Intrinsics): Document GCC implemented which
20303         version of RISC-V vector intrinsics and its reference.
20305 2023-04-18  Richard Biener  <rguenther@suse.de>
20307         PR middle-end/108786
20308         * bitmap.h (bitmap_clear_first_set_bit): New.
20309         * bitmap.cc (bitmap_first_set_bit_worker): Rename from
20310         bitmap_first_set_bit and add optional clearing of the bit.
20311         (bitmap_first_set_bit): Wrap bitmap_first_set_bit_worker.
20312         (bitmap_clear_first_set_bit): Likewise.
20313         * df-core.cc (df_worklist_dataflow_doublequeue): Use
20314         bitmap_clear_first_set_bit.
20315         * graphite-scop-detection.cc (scop_detection::merge_sese):
20316         Likewise.
20317         * sanopt.cc (sanitize_asan_mark_unpoison): Likewise.
20318         (sanitize_asan_mark_poison): Likewise.
20319         * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Likewise.
20320         * tree-into-ssa.cc (rewrite_blocks): Likewise.
20321         * tree-ssa-dce.cc (simple_dce_from_worklist): Likewise.
20322         * tree-ssa-sccvn.cc (do_rpo_vn_1): Likewise.
20324 2023-04-18  Richard Biener  <rguenther@suse.de>
20326         * tree-ssa-structalias.cc (dump_sa_stats): Split out from...
20327         (dump_sa_points_to_info): ... this function.
20328         (compute_points_to_sets): Guard large dumps with TDF_DETAILS,
20329         and call dump_sa_stats guarded with TDF_STATS.
20330         (ipa_pta_execute): Likewise.
20331         (compute_may_aliases): Guard dump_alias_info with
20332         TDF_DETAILS|TDF_ALIAS.
20334 2023-04-18  Andrew Pinski  <apinski@marvell.com>
20336         * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump
20337         the expression that is being tried when TDF_FOLDING
20338         is true.
20339         (phiopt_worker::match_simplify_replacement): Dump
20340         the sequence which was created by gimple_simplify_phiopt
20341         when TDF_FOLDING is true.
20343 2023-04-18  Andrew Pinski  <apinski@marvell.com>
20345         * tree-ssa-phiopt.cc (match_simplify_replacement):
20346         Simplify code that does the movement slightly.
20348 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20350         * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to
20351         define_expand.
20352         (rev16<mode>2): Rename to...
20353         (aarch64_rev16<mode>2_alt1): ... This.
20354         (rev16<mode>2_alt): Rename to...
20355         (*aarch64_rev16<mode>2_alt2): ... This.
20357 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
20359         * emit-rtl.cc (init_emit_once): Initialize dconstm0.
20360         * gimple-range-op.cc (class cfn_signbit): Remove dconstm0
20361         declaration.
20362         * range-op-float.cc (zero_range): Use dconstm0.
20363         (zero_to_inf_range): Same.
20364         * real.h (dconstm0): New.
20365         * value-range.cc (frange::flush_denormals_to_zero): Use dconstm0.
20366         (frange::set_zero): Do not declare dconstm0.
20368 2023-04-18  Richard Biener  <rguenther@suse.de>
20370         * system.h (class auto_mpz): New,
20371         * realmpfr.h (class auto_mpfr): Likewise.
20372         * fold-const-call.cc (do_mpfr_arg1): Use auto_mpfr.
20373         (do_mpfr_arg2): Likewise.
20374         * tree-ssa-loop-niter.cc (bound_difference): Use auto_mpz;
20376 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20378         * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
20379         builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
20381 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
20383         * value-range.cc (frange::operator==): Adjust for NAN.
20384         (range_tests_nan): Remove some NAN tests.
20386 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
20388         * inchash.cc (hash::add_real_value): New.
20389         * inchash.h (class hash): Add add_real_value.
20390         * value-range.cc (add_vrange): New.
20391         * value-range.h (inchash::add_vrange): New.
20393 2023-04-18  Richard Biener  <rguenther@suse.de>
20395         PR tree-optimization/109539
20396         * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
20397         Re-implement pointer relatedness for PHIs.
20399 2023-04-18  Andrew Stubbs  <ams@codesourcery.com>
20401         * config/gcn/gcn-valu.md (SV_SFDF): New iterator.
20402         (SV_FP): New iterator.
20403         (scalar_mode, SCALAR_MODE): Add identity mappings for scalar modes.
20404         (recip<mode>2): Unify the two patterns using SV_FP.
20405         (div_scale<mode><exec_vcc>): New insn.
20406         (div_fmas<mode><exec>): New insn.
20407         (div_fixup<mode><exec>): New insn.
20408         (div<mode>3): Unify the two expanders and rewrite using hardfp.
20409         * config/gcn/gcn.cc (gcn_md_reorg): Support "vccwait" attribute.
20410         * config/gcn/gcn.md (unspec): Add UNSPEC_DIV_SCALE, UNSPEC_DIV_FMAS,
20411         and UNSPEC_DIV_FIXUP.
20412         (vccwait): New attribute.
20414 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20416         * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
20417         if the argument matches that.
20419 2023-04-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
20421         * config/aarch64/atomics.md
20422         (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
20423         Use SD_HSDI for destination mode iterator.
20425 2023-04-18  Jin Ma  <jinma@linux.alibaba.com>
20427         * common/config/riscv/riscv-common.cc (multi_letter_subset_rank): Swap the order
20428         of z-extensions and s-extensions.
20429         (riscv_subset_list::parse): Likewise.
20431 2023-04-18  Jakub Jelinek  <jakub@redhat.com>
20433         PR tree-optimization/109240
20434         * match.pd (fneg/fadd): Rewrite such that it handles both plus as
20435         first vec_perm operand and minus as second using fneg/fadd and
20436         minus as first vec_perm operand and plus as second using fneg/fsub.
20438 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
20440         * data-streamer.cc (bp_pack_real_value): New.
20441         (bp_unpack_real_value): New.
20442         * data-streamer.h (bp_pack_real_value):  New.
20443         (bp_unpack_real_value): New.
20444         * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Use
20445         bp_unpack_real_value.
20446         * tree-streamer-out.cc (pack_ts_real_cst_value_fields): Use
20447         bp_pack_real_value.
20449 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
20451         * wide-int.h (WIDE_INT_MAX_HWIS): New.
20452         (class fixed_wide_int_storage): Use it.
20453         (trailing_wide_ints <N>::set_precision): Use it.
20454         (trailing_wide_ints <N>::extra_size): Use it.
20456 2023-04-18  Xi Ruoyao  <xry111@xry111.site>
20458         * config/loongarch/loongarch-protos.h
20459         (loongarch_addu16i_imm12_operand_p): New function prototype.
20460         (loongarch_split_plus_constant): Likewise.
20461         * config/loongarch/loongarch.cc
20462         (loongarch_addu16i_imm12_operand_p): New function.
20463         (loongarch_split_plus_constant): Likewise.
20464         * config/loongarch/loongarch.h (ADDU16I_OPERAND): New macro.
20465         (DUAL_IMM12_OPERAND): Likewise.
20466         (DUAL_ADDU16I_OPERAND): Likewise.
20467         * config/loongarch/constraints.md (La, Lb, Lc, Ld, Le): New
20468         constraint.
20469         * config/loongarch/predicates.md (const_dual_imm12_operand): New
20470         predicate.
20471         (const_addu16i_operand): Likewise.
20472         (const_addu16i_imm12_di_operand): Likewise.
20473         (const_addu16i_imm12_si_operand): Likewise.
20474         (plus_di_operand): Likewise.
20475         (plus_si_operand): Likewise.
20476         (plus_si_extend_operand): Likewise.
20477         * config/loongarch/loongarch.md (add<mode>3): Convert to
20478         define_insn_and_split.  Use plus_<mode>_operand predicate
20479         instead of arith_operand.  Add alternatives for La, Lb, Lc, Ld,
20480         and Le constraints.
20481         (*addsi3_extended): Convert to define_insn_and_split.  Use
20482         plus_si_extend_operand instead of arith_operand.  Add
20483         alternatives for La and Le alternatives.
20485 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
20487         * value-range.h (Value_Range::Value_Range): New.
20488         (Value_Range::contains_p): New.
20490 2023-04-18  Aldy Hernandez  <aldyh@redhat.com>
20492         * value-range.h (class vrange): Make m_discriminator const.
20493         (class irange): Make m_max_ranges const.  Adjust constructors
20494         accordingly.
20495         (class unsupported_range): Construct vrange appropriately.
20496         (class frange): Same.
20498 2023-04-18  Lulu Cheng  <chenglulu@loongson.cn>
20500         * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
20501         definition.
20503 2023-04-18  Lulu Cheng  <chenglulu@loongson.cn>
20505         * doc/extend.texi: Add section for LoongArch Base Built-in functions.
20507 2023-04-18  Fei Gao  <gaofei@eswincomputing.com>
20509         * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
20510         readable.
20511         (riscv_expand_epilogue): Likewise.
20513 2023-04-17  Fei Gao  <gaofei@eswincomputing.com>
20515         * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in
20516         stack allocation.
20517         (riscv_expand_epilogue): Consider save-restore in stack deallocation.
20519 2023-04-17  Andrew Pinski  <apinski@marvell.com>
20521         * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
20522         prototype.
20524 2023-04-17  Aldy Hernandez  <aldyh@redhat.com>
20526         * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
20527         global ranges.
20529 2023-04-17  Fei Gao  <gaofei@eswincomputing.com>
20531         * config/riscv/riscv.cc (riscv_first_stack_step): Add a new function
20532         parameter remaining_size.
20533         (riscv_compute_frame_info): Adapt new riscv_first_stack_step interface.
20534         (riscv_expand_prologue): Likewise.
20535         (riscv_expand_epilogue): Likewise.
20537 2023-04-17  Feng Wang  <wangfeng@eswincomputing.com>
20539         * config/riscv/bitmanip.md (rotrsi3_sext): Support generating
20540         roriw for constant counts.
20541         * rtl.h (reverse_rotate_by_imm_p): Add function declartion
20542         * simplify-rtx.cc (reverse_rotate_by_imm_p): New function.
20543         (simplify_context::simplify_binary_operation_1): Use it.
20544         * expmed.cc (expand_shift_1): Likewise.
20546 2023-04-17  Martin Jambor  <mjambor@suse.cz>
20548         PR ipa/107769
20549         PR ipa/109318
20550         * cgraph.h (symtab_node::find_reference): Add parameter use_type.
20551         * ipa-prop.h (ipa_pass_through_data): New flag refdesc_decremented.
20552         (ipa_zap_jf_refdesc): New function.
20553         (ipa_get_jf_pass_through_refdesc_decremented): Likewise.
20554         (ipa_set_jf_pass_through_refdesc_decremented): Likewise.
20555         * ipa-cp.cc (ipcp_discover_new_direct_edges): Provide a value for
20556         the new parameter of find_reference.
20557         (adjust_references_in_caller): Likewise. Make sure the constant jump
20558         function is not used to decrement a refdec counter again.  Only
20559         decrement refdesc counters when the pass_through jump function allows
20560         it.  Added a detailed dump when decrementing refdesc counters.
20561         * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Dump new flag.
20562         (ipa_set_jf_simple_pass_through): Initialize the new flag.
20563         (ipa_set_jf_unary_pass_through): Likewise.
20564         (ipa_set_jf_arith_pass_through): Likewise.
20565         (remove_described_reference): Provide a value for the new parameter of
20566         find_reference.
20567         (update_jump_functions_after_inlining): Zap refdesc of new jfunc if
20568         the previous pass_through had a flag mandating that we do so.
20569         (propagate_controlled_uses): Likewise.  Only decrement refdesc
20570         counters when the pass_through jump function allows it.
20571         (ipa_edge_args_sum_t::duplicate): Provide a value for the new
20572         parameter of find_reference.
20573         (ipa_write_jump_function): Assert the new flag does not have to be
20574         streamed.
20575         * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
20576         it in searching.
20578 2023-04-17  Philipp Tomsich  <philipp.tomsich@vrull.eu>
20579             Di Zhao  <di.zhao@amperecomputing.com>
20581         * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION):
20582         Add AARCH64_EXTRA_TUNE_NO_LDP_COMBINE.
20583         * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp):
20584         Check for the above tuning option when processing loads.
20586 2023-04-17  Richard Biener  <rguenther@suse.de>
20588         PR tree-optimization/109524
20589         * tree-vrp.cc (remove_unreachable::m_list): Change to a
20590         vector of pairs of block indices.
20591         (remove_unreachable::maybe_register_block): Adjust.
20592         (remove_unreachable::remove_and_update_globals): Likewise.
20593         Deal with removed blocks.
20595 2023-04-16  Jeff Law  <jlaw@ventanamicro>
20597         PR target/109508
20598         * config/riscv/riscv.cc (riscv_expand_conditional_move): For
20599         TARGET_SFB_ALU, force the true arm into a register.
20601 2023-04-15  John David Anglin  <danglin@gcc.gnu.org>
20603         PR target/104989
20604         * config/pa/pa-protos.h (pa_function_arg_size): Update prototype.
20605         * config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument
20606         size is zero.
20607         (pa_arg_partial_bytes): Don't call pa_function_arg_size twice.
20608         (pa_function_arg_size): Change return type to int.  Return zero
20609         for arguments larger than 1 GB.  Update comments.
20611 2023-04-15  Jakub Jelinek  <jakub@redhat.com>
20613         PR tree-optimization/109154
20614         * tree-if-conv.cc (predicate_scalar_phi): For complex PHIs, emit just
20615         args_len - 1 COND_EXPRs rather than args_len.  Formatting fix.
20617 2023-04-15  Jason Merrill  <jason@redhat.com>
20619         PR c++/109514
20620         * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
20621         Overhaul lhs_ref.ref analysis.
20623 2023-04-14  Richard Biener  <rguenther@suse.de>
20625         PR tree-optimization/109502
20626         * tree-vect-stmts.cc (vectorizable_assignment): Fix
20627         check for conversion between mask and non-mask types.
20629 2023-04-14  Jeff Law  <jlaw@ventanamicro.com>
20630             Jakub Jelinek  <jakub@redhat.com>
20632         PR target/108947
20633         PR target/109040
20634         * combine.cc (simplify_and_const_int_1): Compute nonzero_bits in
20635         word_mode rather than mode if WORD_REGISTER_OPERATIONS and mode is
20636         smaller than word_mode.
20637         * simplify-rtx.cc (simplify_context::simplify_binary_operation_1)
20638         <case AND>: Likewise.
20640 2023-04-14  Jakub Jelinek  <jakub@redhat.com>
20642         * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
20643         of GEN_INT.
20645 2023-04-13  Andrew MacLeod  <amacleod@redhat.com>
20647         PR tree-optimization/108139
20648         PR tree-optimization/109462
20649         * gimple-range-cache.cc (ranger_cache::fill_block_cache): Remove
20650         equivalency check for PHI nodes.
20651         * gimple-range-fold.cc (fold_using_range::range_of_phi): Ensure def
20652         does not dominate single-arg equivalency edges.
20654 2023-04-13  Richard Sandiford  <richard.sandiford@arm.com>
20656         PR target/108910
20657         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
20658         not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
20660 2023-04-13  Richard Biener  <rguenther@suse.de>
20662         PR tree-optimization/109491
20663         * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
20664         NULL operands test.
20666 2023-04-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20668         PR target/109479
20669         * config/riscv/riscv-vector-builtins-types.def (vint8mf8_t): Fix predicate.
20670         (vint16mf4_t): Ditto.
20671         (vint32mf2_t): Ditto.
20672         (vint64m1_t): Ditto.
20673         (vint64m2_t): Ditto.
20674         (vint64m4_t): Ditto.
20675         (vint64m8_t): Ditto.
20676         (vuint8mf8_t): Ditto.
20677         (vuint16mf4_t): Ditto.
20678         (vuint32mf2_t): Ditto.
20679         (vuint64m1_t): Ditto.
20680         (vuint64m2_t): Ditto.
20681         (vuint64m4_t): Ditto.
20682         (vuint64m8_t): Ditto.
20683         (vfloat32mf2_t): Ditto.
20684         (vbool64_t): Ditto.
20685         * config/riscv/riscv-vector-builtins.cc (register_builtin_type): Add comments.
20686         (register_vector_type): Ditto.
20687         (check_required_extensions): Fix condition.
20688         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ZVE64): Remove it.
20689         (RVV_REQUIRE_ELEN_64): New define.
20690         (RVV_REQUIRE_MIN_VLEN_64): Ditto.
20691         * config/riscv/riscv-vector-switch.def (TARGET_VECTOR_FP32): Remove it.
20692         (TARGET_VECTOR_FP64): Ditto.
20693         (ENTRY): Fix predicate.
20694         * config/riscv/vector-iterators.md: Fix predicate.
20696 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
20698         PR tree-optimization/109410
20699         * tree-ssa-reassoc.cc (build_and_add_sum): Split edge from entry
20700         block if first statement of the function is a call to returns_twice
20701         function.
20703 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
20705         PR target/109458
20706         * config/i386/i386.cc: Include rtl-error.h.
20707         (ix86_print_operand): For z modifier warning, use warning_for_asm
20708         if this_is_asm_operands.  For Z modifier errors, use %c and code
20709         instead of hardcoded Z.
20711 2023-04-12  Costas Argyris  <costas.argyris@gmail.com>
20713         * config/i386/x-mingw32-utf8: Remove extrataneous $@
20715 2023-04-12  Andrew MacLeod  <amacleod@redhat.com>
20717         PR tree-optimization/109462
20718         * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
20719         check for equivalences if NAME is a phi node.
20721 2023-04-12  Richard Biener  <rguenther@suse.de>
20723         PR tree-optimization/109473
20724         * tree-vect-loop.cc (vect_create_epilog_for_reduction):
20725         Convert scalar result to the computation type before performing
20726         the reduction adjustment.
20728 2023-04-12  Richard Biener  <rguenther@suse.de>
20730         PR tree-optimization/109469
20731         * tree-vect-slp.cc (vect_slp_function): Skip region starts with
20732         a returns-twice call.
20734 2023-04-12  Richard Biener  <rguenther@suse.de>
20736         PR tree-optimization/109434
20737         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly
20738         handle possibly throwing calls when processing the LHS
20739         and may-defs are not OK.
20741 2023-04-11  Lin Sinan  <mynameisxiaou@gmail.com>
20743         * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
20744         predicate to avoid splitting arith constants.
20746 2023-04-11  Yanzhang Wang  <yanzhang.wang@intel.com>
20747             Pan Li  <pan2.li@intel.com>
20748             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20749             Kito Cheng  <kito.cheng@sifive.com>
20751         PR target/109104
20752         * config/riscv/riscv-protos.h (emit_hard_vlmax_vsetvl): New.
20753         * config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): New.
20754         (emit_vlmax_vsetvl): Use emit_hard_vlmax_vsetvl.
20755         * config/riscv/riscv.cc (vector_zero_call_used_regs): New.
20756         (riscv_zero_call_used_regs): New.
20757         (TARGET_ZERO_CALL_USED_REGS): New.
20759 2023-04-11  Martin Liska  <mliska@suse.cz>
20761         PR driver/108241
20762         * opts.cc (finish_options): Drop also
20763         x_flag_var_tracking_assignments.
20765 2023-04-11  Andre Vieira  <andre.simoesdiasvieira@arm.com>
20767         PR tree-optimization/108888
20768         * tree-if-conv.cc (predicate_statements): Fix gimple call check.
20770 2023-04-11  Haochen Gui  <guihaoc@gcc.gnu.org>
20772         PR target/108812
20773         * config/rs6000/vsx.md (vsx_sign_extend_qi_<mode>): Rename to...
20774         (vsx_sign_extend_v16qi_<mode>): ... this.
20775         (vsx_sign_extend_hi_<mode>): Rename to...
20776         (vsx_sign_extend_v8hi_<mode>): ... this.
20777         (vsx_sign_extend_si_v2di): Rename to...
20778         (vsx_sign_extend_v4si_v2di): ... this.
20779         (vsignextend_qi_<mode>): Remove.
20780         (vsignextend_hi_<mode>): Remove.
20781         (vsignextend_si_v2di): Remove.
20782         (vsignextend_v2di_v1ti): Remove.
20783         (*xxspltib_<mode>_split): Replace gen_vsx_sign_extend_qi_v2di with
20784         gen_vsx_sign_extend_v16qi_v2di and gen_vsx_sign_extend_qi_v4si
20785         with gen_vsx_sign_extend_v16qi_v4si.
20786         * config/rs6000/rs6000.md (split for DI constant generation):
20787         Replace gen_vsx_sign_extend_qi_si with gen_vsx_sign_extend_v16qi_si.
20788         (split for HSDI constant generation): Replace gen_vsx_sign_extend_qi_di
20789         with gen_vsx_sign_extend_v16qi_di and gen_vsx_sign_extend_qi_si
20790         with gen_vsx_sign_extend_v16qi_si.
20791         * config/rs6000/rs6000-builtins.def (__builtin_altivec_vsignextsb2d):
20792         Set bif-pattern to vsx_sign_extend_v16qi_v2di.
20793         (__builtin_altivec_vsignextsb2w): Set bif-pattern to
20794         vsx_sign_extend_v16qi_v4si.
20795         (__builtin_altivec_visgnextsh2d): Set bif-pattern to
20796         vsx_sign_extend_v8hi_v2di.
20797         (__builtin_altivec_vsignextsh2w): Set bif-pattern to
20798         vsx_sign_extend_v8hi_v4si.
20799         (__builtin_altivec_vsignextsw2d): Set bif-pattern to
20800         vsx_sign_extend_si_v2di.
20801         (__builtin_altivec_vsignext): Set bif-pattern to
20802         vsx_sign_extend_v2di_v1ti.
20803         * config/rs6000/rs6000-builtin.cc (lxvrse_expand_builtin): Replace
20804         gen_vsx_sign_extend_qi_v2di with gen_vsx_sign_extend_v16qi_v2di,
20805         gen_vsx_sign_extend_hi_v2di with gen_vsx_sign_extend_v8hi_v2di and
20806         gen_vsx_sign_extend_si_v2di with gen_vsx_sign_extend_v4si_v2di.
20808 2023-04-10   Michael Meissner  <meissner@linux.ibm.com>
20810         PR target/70243
20811         * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
20812         (vsx_nfmsv4sf4): Do not generate vnmsubfp.
20814 2023-04-10  Haochen Jiang  <haochen.jiang@intel.com>
20816         * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
20818 2023-04-10  Haochen Jiang  <haochen.jiang@intel.com>
20820         * common/config/i386/cpuinfo.h (get_available_features):
20821         Detect AMX-COMPLEX.
20822         * common/config/i386/i386-common.cc
20823         (OPTION_MASK_ISA2_AMX_COMPLEX_SET,
20824         OPTION_MASK_ISA2_AMX_COMPLEX_UNSET): New.
20825         (ix86_handle_option): Handle -mamx-complex.
20826         * common/config/i386/i386-cpuinfo.h (enum processor_features):
20827         Add FEATURE_AMX_COMPLEX.
20828         * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
20829         amx-complex.
20830         * config.gcc: Add amxcomplexintrin.h.
20831         * config/i386/cpuid.h (bit_AMX_COMPLEX): New.
20832         * config/i386/i386-c.cc (ix86_target_macros_internal): Define
20833         __AMX_COMPLEX__.
20834         * config/i386/i386-isa.def (AMX_COMPLEX): Add DEF_PTA(AMX_COMPLEX).
20835         * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
20836         Handle amx-complex.
20837         * config/i386/i386.opt: Add option -mamx-complex.
20838         * config/i386/immintrin.h: Include amxcomplexintrin.h.
20839         * doc/extend.texi: Document amx-complex.
20840         * doc/invoke.texi: Document -mamx-complex.
20841         * doc/sourcebuild.texi: Document target amx-complex.
20842         * config/i386/amxcomplexintrin.h: New file.
20844 2023-04-08  Jakub Jelinek  <jakub@redhat.com>
20846         PR tree-optimization/109392
20847         * tree-vect-generic.cc (tree_vec_extract): Handle failure
20848         of maybe_push_res_to_seq better.
20850 2023-04-08  Jakub Jelinek  <jakub@redhat.com>
20852         * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
20853         poly-int-types.h.
20854         (SYSTEM_H): Depend on $(HASHTAB_H).
20855         * config/riscv/t-riscv (build/genrvv-type-indexer.o): Remove unused
20856         dependency on $(RTL_BASE_H), remove redundant dependency on
20857         insn-modes.h.
20859 2023-04-06  Richard Earnshaw  <rearnsha@arm.com>
20861         PR target/107674
20862         * config/arm/arm.cc (arm_effective_regno): New function.
20863         (mve_vector_mem_operand): Use it.
20865 2023-04-06  Andrew MacLeod  <amacleod@redhat.com>
20867         PR tree-optimization/109417
20868         * gimple-range-gori.cc (gori_compute::may_recompute_p): Check if
20869         dependency is in SSA_NAME_FREE_LIST.
20871 2023-04-06  Andrew Pinski  <apinski@marvell.com>
20873         PR tree-optimization/109427
20874         * params.opt (-param=vect-induction-float=):
20875         Fix option attribute typo for IntegerRange.
20877 2023-04-05  Jeff Law  <jlaw@ventanamicro>
20879         PR target/108892
20880         * combine.cc (combine_instructions): Force re-recognition when
20881         after restoring the body of an insn to its original form.
20883 2023-04-05  Martin Jambor  <mjambor@suse.cz>
20885         PR ipa/108959
20886         * ipa-sra.cc (zap_useless_ipcp_results): New function.
20887         (process_isra_node_results): Call it.
20889 2023-04-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
20891         * config/riscv/vector.md: Fix incorrect operand order.
20893 2023-04-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
20895         * config/riscv/riscv-vsetvl.cc
20896         (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
20897         demand fusion.
20899 2023-04-05  Li Xu  <xuli1@eswincomputing.com>
20901         * config/riscv/riscv-vector-builtins.def: Fix typo.
20902         * config/riscv/riscv.cc (riscv_dwarf_poly_indeterminate_value): Ditto.
20903         * config/riscv/vector-iterators.md: Ditto.
20905 2023-04-04  Hans-Peter Nilsson  <hp@axis.com>
20907         * doc/md.texi (Including Patterns): Fix page break.
20909 2023-04-04  Jakub Jelinek  <jakub@redhat.com>
20911         PR tree-optimization/109386
20912         * range-op-float.cc (foperator_lt::op1_range, foperator_lt::op2_range,
20913         foperator_le::op1_range, foperator_le::op2_range,
20914         foperator_gt::op1_range, foperator_gt::op2_range,
20915         foperator_ge::op1_range, foperator_ge::op2_range): Make r varying for
20916         BRS_FALSE case even if the other op is maybe_isnan, not just
20917         known_isnan.
20918         (foperator_unordered_lt::op1_range, foperator_unordered_lt::op2_range,
20919         foperator_unordered_le::op1_range, foperator_unordered_le::op2_range,
20920         foperator_unordered_gt::op1_range, foperator_unordered_gt::op2_range,
20921         foperator_unordered_ge::op1_range, foperator_unordered_ge::op2_range):
20922         Make r varying for BRS_TRUE case even if the other op is maybe_isnan,
20923         not just known_isnan.
20925 2023-04-04  Marek Polacek  <polacek@redhat.com>
20927         PR sanitizer/109107
20928         * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
20929         when associating.
20930         * match.pd: Use TYPE_OVERFLOW_SANITIZED.
20932 2023-04-04  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
20934         * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
20935         (mve_vcreateq_f<mode>): Swap operands.
20937 2023-04-04  Andrew Stubbs  <ams@codesourcery.com>
20939         * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
20941 2023-04-04  Jakub Jelinek  <jakub@redhat.com>
20943         PR target/109384
20944         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
20945         Reword diagnostics about zfinx conflict with f, formatting fixes.
20947 2023-04-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
20949         * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
20951 2023-04-04  Richard Biener  <rguenther@suse.de>
20953         PR tree-optimization/109304
20954         * tree-profile.cc (tree_profiling): Use symtab node
20955         availability to decide whether to skip adjusting calls.
20956         Do not adjust calls to internal functions.
20958 2023-04-04  Kewen Lin  <linkw@linux.ibm.com>
20960         PR target/108807
20961         * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
20962         function for permutation control vector by considering big endianness.
20964 2023-04-04  Kewen Lin  <linkw@linux.ibm.com>
20966         PR target/108699
20967         * config/rs6000/altivec.md (*p9v_parity<mode>2): Rename to ...
20968         (rs6000_vprtyb<mode>2): ... this.
20969         * config/rs6000/rs6000-builtins.def (VPRTYBD): Replace parityv2di2 with
20970         rs6000_vprtybv2di2.
20971         (VPRTYBW): Replace parityv4si2 with rs6000_vprtybv4si2.
20972         (VPRTYBQ): Replace parityv1ti2 with rs6000_vprtybv1ti2.
20973         * config/rs6000/vector.md (parity<mode>2 with VEC_IP): Expand with
20974         popcountv16qi2 and the corresponding rs6000_vprtyb<mode>2.
20976 2023-04-04  Hans-Peter Nilsson  <hp@axis.com>
20977             Sandra Loosemore  <sandra@codesourcery.com>
20979         * doc/md.texi (Insn Splitting): Tweak wording for readability.
20981 2023-04-03  Martin Jambor  <mjambor@suse.cz>
20983         PR ipa/109303
20984         * ipa-prop.cc (determine_known_aggregate_parts): Check that the
20985         offset + size will be representable in unsigned int.
20987 2023-04-03  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
20989         * configure.ac (ZSTD_LIB): Move before zstd.h check.
20990         Unset gcc_cv_header_zstd_h without libzstd.
20991         * configure: Regenerate.
20993 2023-04-03  Martin Liska  <mliska@suse.cz>
20995         * doc/invoke.texi: Document new param.
20997 2023-04-03  Cupertino Miranda  <cupertino.miranda@oracle.com>
20999         * doc/sourcebuild.texi (const_volatile_readonly_section): Document
21000         new check_effective_target function.
21002 2023-04-03  Li Xu  <xuli1@eswincomputing.com>
21004         * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
21005         (vfloat32m8_t): Likewise
21007 2023-04-03  liuhongt  <hongtao.liu@intel.com>
21009         * doc/md.texi: Document signbitm2.
21011 2023-04-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21012             kito-cheng  <kito.cheng@sifive.com>
21014         * config/riscv/vector.md: Fix RA constraint.
21016 2023-04-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
21018         * config/riscv/riscv-protos.h (gen_avl_for_scalar_move): New function.
21019         * config/riscv/riscv-v.cc (gen_avl_for_scalar_move): New function.
21020         * config/riscv/vector.md: Fix scalar move bug.
21022 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
21024         * range-op-float.cc (foperator_equal::fold_range): If at least
21025         one of the op ranges is not singleton and neither is NaN and all
21026         4 bounds are zero, return [1, 1].
21027         (foperator_not_equal::fold_range): In the same case return [0, 0].
21029 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
21031         * range-op-float.cc (foperator_equal::fold_range): Perform the
21032         non-singleton handling regardless of maybe_isnan (op1, op2).
21033         (foperator_not_equal::fold_range): Likewise.
21034         (foperator_lt::fold_range, foperator_le::fold_range,
21035         foperator_gt::fold_range, foperator_ge::fold_range): Perform the
21036         real_* comparison check which results in range_false (type)
21037         even if maybe_isnan (op1, op2).  Simplify.
21038         (foperator_ltgt): New class.
21039         (fop_ltgt): New variable.
21040         (floating_op_table::floating_op_table): Handle LTGT_EXPR using
21041         fop_ltgt.
21043 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
21045         PR target/109254
21046         * builtins.cc (apply_args_size): If targetm.calls.get_raw_arg_mode
21047         returns VOIDmode, handle it like if the register isn't used for
21048         passing arguments at all.
21049         (apply_result_size): If targetm.calls.get_raw_result_mode returns
21050         VOIDmode, handle it like if the register isn't used for returning
21051         results at all.
21052         * target.def (get_raw_result_mode, get_raw_arg_mode): Document what it
21053         means to return VOIDmode.
21054         * doc/tm.texi: Regenerated.
21055         * config/aarch64/aarch64.cc (aarch64_function_value_regno_p): Return
21056         TARGET_SVE for P0_REGNUM.
21057         (aarch64_function_arg_regno_p): Also return true for p0-p3.
21058         (aarch64_get_reg_raw_mode): Return VOIDmode for PR_REGNUM_P regs.
21060 2023-03-31  Vladimir N. Makarov  <vmakarov@redhat.com>
21062         * lra-constraints.cc: (combine_reload_insn): New function.
21064 2023-03-31  Jakub Jelinek  <jakub@redhat.com>
21066         PR tree-optimization/91645
21067         * range-op-float.cc (foperator_unordered_lt::fold_range,
21068         foperator_unordered_le::fold_range,
21069         foperator_unordered_gt::fold_range,
21070         foperator_unordered_ge::fold_range,
21071         foperator_unordered_equal::fold_range): Call the ordered
21072         fold_range on ranges with cleared NaNs.
21073         * value-query.cc (range_query::get_tree_range): Handle also
21074         COMPARISON_CLASS_P trees.
21076 2023-03-31  Kito Cheng  <kito.cheng@sifive.com>
21077             Andrew Pinski  <pinskia@gmail.com>
21079         PR target/109328
21080         * config/riscv/t-riscv: Add missing dependencies.
21082 2023-03-31  liuhongt  <hongtao.liu@intel.com>
21084         * config/i386/i386.cc (inline_memory_move_cost): Return 100
21085         for MASK_REGS when MODE_SIZE > 8.
21087 2023-03-31  liuhongt  <hongtao.liu@intel.com>
21089         PR target/85048
21090         * config/i386/i386-builtin.def (BDESC): Adjust icode name from
21091         ufloat/ufix to floatuns/fixuns.
21092         * config/i386/i386-expand.cc
21093         (ix86_expand_vector_convert_uns_vsivsf): Adjust comments.
21094         * config/i386/sse.md
21095         (ufloat<sseintvecmodelower><mode>2<mask_name><round_name>):
21096         Renamed to ..
21097         (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
21098         (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
21099         Renamed to ..
21100         (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
21101         .. this.
21102         (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
21103         Renamed to ..
21104         (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):.. this.
21105         (ufloat<si2dfmodelower><mode>2<mask_name>): Renamed to ..
21106         (floatuns<si2dfmodelower><mode>2<mask_name>): .. this.
21107         (ufloatv2siv2df2<mask_name>): Renamed to ..
21108         (<mask_codefor>floatunsv2siv2df2<mask_name>): .. this.
21109         (ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
21110         Renamed to ..
21111         (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
21112         .. this.
21113         (ufix_notruncv2dfv2si2): Renamed to ..
21114         (fixuns_notruncv2dfv2si2):.. this.
21115         (ufix_notruncv2dfv2si2_mask): Renamed to ..
21116         (fixuns_notruncv2dfv2si2_mask): .. this.
21117         (*ufix_notruncv2dfv2si2_mask_1): Renamed to ..
21118         (*fixuns_notruncv2dfv2si2_mask_1): .. this.
21119         (ufix_truncv2dfv2si2): Renamed to ..
21120         (*fixuns_truncv2dfv2si2): .. this.
21121         (ufix_truncv2dfv2si2_mask): Renamed to ..
21122         (fixuns_truncv2dfv2si2_mask): .. this.
21123         (*ufix_truncv2dfv2si2_mask_1): Renamed to ..
21124         (*fixuns_truncv2dfv2si2_mask_1): .. this.
21125         (ufix_truncv4dfv4si2<mask_name>): Renamed to ..
21126         (fixuns_truncv4dfv4si2<mask_name>): .. this.
21127         (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
21128         Renamed to ..
21129         (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
21130         .. this.
21131         (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
21132         (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
21133         .. this.
21135 2023-03-30  Andrew MacLeod  <amacleod@redhat.com>
21137         PR tree-optimization/109154
21138         * gimple-range-gori.cc (gori_compute::may_recompute_p): Add depth limit.
21139         * gimple-range-gori.h (may_recompute_p): Add depth param.
21140         * params.opt (ranger-recompute-depth): New param.
21142 2023-03-30  Jason Merrill  <jason@redhat.com>
21144         PR c++/107897
21145         PR c++/108887
21146         * cgraph.h: Move reset() from cgraph_node to symtab_node.
21147         * cgraphunit.cc (symtab_node::reset): Adjust.  Also call
21148         remove_from_same_comdat_group.
21150 2023-03-30  Richard Biener  <rguenther@suse.de>
21152         PR tree-optimization/107561
21153         * gimple-ssa-warn-access.cc (get_size_range): Add flags
21154         argument and pass it on.
21155         (check_access): When querying for the size range pass
21156         SR_ALLOW_ZERO when the known destination size is zero.
21158 2023-03-30  Richard Biener  <rguenther@suse.de>
21160         PR tree-optimization/109342
21161         * tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New
21162         overload for edge.  When that edge is a backedge use
21163         dominated_by_p directly.
21165 2023-03-30  liuhongt  <hongtao.liu@intel.com>
21167         * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
21168         vpblendd instead of vpblendw for V4SI under avx2.
21170 2023-03-29  Hans-Peter Nilsson  <hp@axis.com>
21172         * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
21173         for many quick operands, for register-sized modes.
21175 2023-03-29  Jiawei  <jiawei@iscas.ac.cn>
21177         * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
21178         New check.
21180 2023-03-29  Martin Liska  <mliska@suse.cz>
21182         PR bootstrap/109310
21183         * configure.ac: Emit a warning for deprecated option
21184         --enable-link-mutex.
21185         * configure: Regenerate.
21187 2023-03-29  Richard Biener  <rguenther@suse.de>
21189         PR tree-optimization/109331
21190         * tree-ssa-forwprop.cc (pass_forwprop::execute): When we
21191         discover a taken edge make sure to cleanup the CFG.
21193 2023-03-29  Richard Biener  <rguenther@suse.de>
21195         PR tree-optimization/109327
21196         * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
21197         already removed stmts when draining to_remove.
21199 2023-03-29  Richard Biener  <rguenther@suse.de>
21201         PR ipa/106124
21202         * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
21203         so we can re-create the DIE for the type if required.
21205 2023-03-29  Jakub Jelinek  <jakub@redhat.com>
21206             Richard Biener  <rguenther@suse.de>
21208         PR tree-optimization/109301
21209         * tree-ssa-math-opts.cc (pass_data_cse_sincos): Change
21210         properties_provided from PROP_gimple_opt_math to 0.
21211         (pass_data_expand_powcabs): Change properties_provided from 0 to
21212         PROP_gimple_opt_math.
21214 2023-03-29  Richard Biener  <rguenther@suse.de>
21216         PR tree-optimization/109154
21217         * tree-if-conv.cc (gen_phi_arg_condition): Handle single
21218         inverted condition specially by inverting at the caller.
21219         (gen_phi_arg_condition): Swap COND_EXPR arms if requested.
21221 2023-03-28  David Malcolm  <dmalcolm@redhat.com>
21223         PR c/107002
21224         * diagnostic-show-locus.cc (column_range::column_range): Factor
21225         out assertion conditional into...
21226         (column_range::valid_p): ...this new function.
21227         (line_corrections::add_hint): Don't attempt to consolidate hints
21228         if it would lead to invalid column_range instances.
21230 2023-03-28  Kito Cheng  <kito.cheng@sifive.com>
21232         PR target/109312
21233         * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
21234         (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
21235         minor refactor.
21237 2023-03-28  Alexander Monakov  <amonakov@ispras.ru>
21239         PR rtl-optimization/109187
21240         * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
21241         subtraction in three-way comparison.
21243 2023-03-28  Andrew MacLeod  <amacleod@redhat.com>
21245         PR tree-optimization/109265
21246         PR tree-optimization/109274
21247         * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
21248         not create a relation record is op1 and op2 are the same symbol.
21249         (gori_compute::compute_operand1_range): Pass op1 == op2 to the
21250         handler for this stmt, but create a new record only if this statement
21251         generates a relation based on the ranges.
21252         (gori_compute::compute_operand2_range): Ditto.
21253         * value-relation.h (value_relation::set_relation): Always create the
21254         record that is requested.
21256 2023-03-28  Richard Biener  <rguenther@suse.de>
21258         PR tree-optimization/107087
21259         * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
21260         executable regions to avoid useless work and to better
21261         propagate degenerate PHIs.
21263 2023-03-28  Costas Argyris  <costas.argyris@gmail.com>
21265         * config/i386/x-mingw32-utf8: update comments.
21267 2023-03-28  Richard Sandiford  <richard.sandiford@arm.com>
21269         PR target/109072
21270         * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
21271         * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
21272         variable.
21273         * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
21274         New function.
21275         (aarch64_general_gimple_fold_builtin): Delay folding of vld1 until
21276         after inlining.  Record which decls are loaded from.  Fix handling
21277         of vops for loads and stores.
21278         * config/aarch64/aarch64.cc (aarch64_vector_load_decl): New function.
21279         (aarch64_accesses_vector_load_decl_p): Likewise.
21280         (aarch64_vector_costs::m_stores_to_vector_load_decl): New member
21281         variable.
21282         (aarch64_vector_costs::add_stmt_cost): If the function has a vld1
21283         that loads from a decl, treat vector stores to those decls as
21284         zero cost.
21285         (aarch64_vector_costs::finish_cost): ...and in that case,
21286         if the vector code does nothing more than a store, give the
21287         prologue a zero cost as well.
21289 2023-03-28  Richard Biener  <rguenther@suse.de>
21291         PR bootstrap/84402
21292         PR tree-optimization/108129
21293         * genmatch.cc (lower_for): For (match ...) delay
21294         substituting into the match operator if possible.
21295         (dt_operand::gen_gimple_expr): For user_id look at the
21296         first substitute for determining how to access operands.
21297         (dt_operand::gen_generic_expr): Likewise.
21298         (dt_node::gen_kids): Properly sort user_ids according
21299         to their substitutes.
21300         (dt_node::gen_kids_1): Code-generate user_id matching.
21302 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
21303             Jonathan Wakely  <jwakely@redhat.com>
21305         * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
21306         Use subcommand rather than sub-command in function comments.
21308 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
21310         PR tree-optimization/109154
21311         * value-range.h (frange::flush_denormals_to_zero): Make it public
21312         rather than private.
21313         * value-range.cc (frange::set): Don't call flush_denormals_to_zero
21314         here.
21315         * range-op-float.cc (range_operator_float::fold_range): Call
21316         flush_denormals_to_zero.
21318 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
21320         PR middle-end/106190
21321         * sanopt.cc (pass_sanopt::execute): Return TODO_cleanup_cfg if any
21322         of the IFN_{UB,HWA,A}SAN_* internal fns are lowered.
21324 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
21326         * range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state
21327         as 4th argument to set to avoid clear_nan and union_ calls.
21329 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
21331         PR target/109276
21332         * config/i386/i386.cc (assign_386_stack_local): For DImode
21333         with SLOT_FLOATxFDI_387 and -m32 -mpreferred-stack-boundary=2 pass
21334         align 32 rather than 0 to assign_stack_local.
21336 2023-03-28  Eric Botcazou  <ebotcazou@adacore.com>
21338         PR target/109140
21339         * config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition
21340         on operand #3 to get the final condition code.  Use std::swap.
21341         * config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander.
21342         (fucmp<gcond:code>8<P:mode>_vis): Move around.
21343         (fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise.
21344         (vcondu<GCM:mode><GCM:mode>): New VIS 4 expander.
21346 2023-03-28  Eric Botcazou  <ebotcazou@adacore.com>
21348         * doc/gm2.texi: Add missing Next, Previous and Top fields to most
21349         top-level sections.
21351 2023-03-28  Costas Argyris  <costas.argyris@gmail.com>
21353         * config.host: Pull in i386/x-mingw32-utf8 Makefile
21354         fragment and reference utf8rc-mingw32.o explicitly
21355         for mingw hosts.
21356         * config/i386/sym-mingw32.cc: prevent name mangling of
21357         stub symbol.
21358         * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
21359         depend on manifest file explicitly.
21361 2023-03-28  Richard Biener  <rguenther@suse.de>
21363         Revert:
21364         2023-03-27  Richard Biener  <rguenther@suse.de>
21366         PR rtl-optimization/109237
21367         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
21369 2023-03-28  Richard Biener  <rguenther@suse.de>
21371         * common.opt (gdwarf): Remove Negative(gdwarf-).
21373 2023-03-28  Richard Biener  <rguenther@suse.de>
21375         * common.opt (gdwarf): Add RejectNegative.
21376         (gdwarf-): Likewise.
21377         (ggdb): Likewise.
21378         (gvms): Likewise.
21380 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
21382         * config/cris/constraints.md ("T"): Correct to
21383         define_memory_constraint.
21385 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
21387         * config/cris/cris.md (BW2): New mode-iterator.
21388         (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
21389         peephole2s.
21391 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
21393         * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
21394         for possible eliminable compares.
21396 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
21398         * config/cris/constraints.md ("R"): Remove unused constraint.
21400 2023-03-27  Jonathan Wakely  <jwakely@redhat.com>
21402         PR gcov-profile/109297
21403         * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
21404         (merge_stream_usage): Likewise.
21405         (overlap_usage): Likewise.
21407 2023-03-27  Christoph Müllner  <christoph.muellner@vrull.eu>
21409         PR target/109296
21410         * config/riscv/thead.md: Add missing mode specifiers.
21412 2023-03-27  Philipp Tomsich  <philipp.tomsich@vrull.eu>
21413             Jiangning Liu  <jiangning.liu@amperecomputing.com>
21414             Manolis Tsamis  <manolis.tsamis@vrull.eu>
21416         * config/aarch64/aarch64.cc: Update vector costs for ampere1.
21418 2023-03-27  Richard Biener  <rguenther@suse.de>
21420         PR rtl-optimization/109237
21421         * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
21423 2023-03-27  Richard Biener  <rguenther@suse.de>
21425         PR lto/109263
21426         * lto-wrapper.cc (run_gcc): Parse alternate debug options
21427         as well, they always enable debug.
21429 2023-03-27  Kewen Lin  <linkw@linux.ibm.com>
21431         PR target/109167
21432         * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
21433         from ...
21434         (_mm_slli_si128): ... here.  Change to call _mm_bslli_si128 directly.
21436 2023-03-27  Kewen Lin  <linkw@linux.ibm.com>
21438         PR target/109082
21439         * config/rs6000/emmintrin.h (_mm_bslli_si128): Check __N is not less
21440         than zero when calling vec_sld.
21441         (_mm_bsrli_si128): Return __A if __N is zero, check __N is bigger than
21442         zero when calling vec_sld.
21443         (_mm_slli_si128): Return __A if _imm5 is zero, check _imm5 is bigger
21444         than zero when calling vec_sld.
21446 2023-03-27  Sandra Loosemore  <sandra@codesourcery.com>
21448         * doc/generic.texi (OpenMP): Document OMP_SIMD, OMP_DISTRIBUTE,
21449         OMP_TASKLOOP, and OMP_LOOP with OMP_FOR.  Document how collapsed
21450         loops are represented and which fields are vectors.  Add
21451         documentation for OMP_FOR_PRE_BODY field.  Document internal
21452         form of non-rectangular loops and OMP_FOR_NON_RECTANGULAR.
21453         * tree.def (OMP_FOR): Make documentation consistent with the
21454         Texinfo manual, to fill some gaps and correct errors.
21456 2023-03-26  Andreas Schwab  <schwab@linux-m68k.org>
21458         PR target/106282
21459         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
21460         * config/m68k/m68k.cc (m68k_final_prescan_insn): Define.
21461         (handle_move_double): Call it before handle_movsi.
21462         * config/m68k/m68k-protos.h: Declare it.
21464 2023-03-26  Jakub Jelinek  <jakub@redhat.com>
21466         PR tree-optimization/109230
21467         * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
21469 2023-03-26  Jakub Jelinek  <jakub@redhat.com>
21471         PR ipa/105685
21472         * predict.cc (compute_function_frequency): Don't call
21473         warn_function_cold if function already has cold attribute.
21475 2023-03-26  Gerald Pfeifer  <gerald@pfeifer.com>
21477         * doc/install.texi: Remove anachronistic note
21478         related to languages built and separate source tarballs.
21480 2023-03-25  David Malcolm  <dmalcolm@redhat.com>
21482         PR analyzer/109098
21483         * diagnostic-format-sarif.cc (read_until_eof): Delete.
21484         (maybe_read_file): Delete.
21485         (sarif_builder::maybe_make_artifact_content_object): Use
21486         get_source_file_content rather than maybe_read_file.
21487         Reject it if it's not valid UTF-8.
21488         * input.cc (file_cache_slot::get_full_file_content): New.
21489         (get_source_file_content): New.
21490         (selftest::check_cpp_valid_utf8_p): New.
21491         (selftest::test_cpp_valid_utf8_p): New.
21492         (selftest::input_cc_tests): Call selftest::test_cpp_valid_utf8_p.
21493         * input.h (get_source_file_content): New prototype.
21495 2023-03-24  David Malcolm  <dmalcolm@redhat.com>
21497         * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
21498         debugging options.
21499         (Special Functions for Debugging the Analyzer): Convert to a
21500         table, and rewrite in places.
21501         (Other Debugging Techniques): Add notes on how to compare two
21502         different exploded graphs.
21504 2023-03-24  David Malcolm  <dmalcolm@redhat.com>
21506         PR other/109163
21507         * json.cc: Update comments to indicate that we now preserve
21508         insertion order of keys within objects.
21509         (object::print): Traverse keys in insertion order.
21510         (object::set): Preserve insertion order of keys.
21511         (selftest::test_writing_objects): Add an additional key to verify
21512         that we preserve insertion order.
21513         * json.h (object::m_keys): New field.
21515 2023-03-24  Andrew MacLeod  <amacleod@redhat.com>
21517         PR tree-optimization/109238
21518         * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
21519         predecessors which this block dominates.
21521 2023-03-24  Richard Biener  <rguenther@suse.de>
21523         PR tree-optimization/106912
21524         * tree-profile.cc (tree_profiling): Update stmts only when
21525         profiling or testing coverage.  Make sure to update calls
21526         fntype, stripping 'const' there.
21528 2023-03-24  Jakub Jelinek  <jakub@redhat.com>
21530         PR middle-end/109258
21531         * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
21532         if target == const0_rtx.
21534 2023-03-24  Alexandre Oliva  <oliva@adacore.com>
21536         * doc/sourcebuild.texi (weak_undefined, posix_memalign):
21537         Document options and effective targets.
21539 2023-03-24  Costas Argyris  <costas.argyris@gmail.com>
21541         * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
21542         optional.
21544 2023-03-23  Pat Haugen  <pthaugen@linux.ibm.com>
21546         * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
21547         non-earlyclobber alternative.
21549 2023-03-23  Andrew Pinski  <apinski@marvell.com>
21551         PR c/84900
21552         * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
21553         as a lvalue.
21555 2023-03-23  Richard Biener  <rguenther@suse.de>
21557         PR tree-optimization/107569
21558         * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
21559         Do not push SSA names with zero uses as available leader.
21560         (process_bb): Likewise.
21562 2023-03-23  Richard Biener  <rguenther@suse.de>
21564         PR tree-optimization/109262
21565         * tree-ssa-forwprop.cc (pass_forwprop::execute): When
21566         combining a piecewise complex load avoid touching loads
21567         that throw internally.  Use fun, not cfun throughout.
21569 2023-03-23  Jakub Jelinek  <jakub@redhat.com>
21571         * value-range.cc (irange::irange_union, irange::intersect): Fix
21572         comment spelling bugs.
21573         * gimple-range-trace.cc (range_tracer::do_header): Likewise.
21574         * gimple-range-trace.h: Likewise.
21575         * gimple-range-edge.cc: Likewise.
21576         (gimple_outgoing_range_stmt_p,
21577         gimple_outgoing_range::switch_edge_range,
21578         gimple_outgoing_range::edge_range_p): Likewise.
21579         * gimple-range.cc (gimple_ranger::prefill_stmt_dependencies,
21580         gimple_ranger::fold_stmt, gimple_ranger::register_transitive_infer,
21581         assume_query::assume_query, assume_query::calculate_phi): Likewise.
21582         * gimple-range-edge.h: Likewise.
21583         * value-range.h (Value_Range::set, Value_Range::lower_bound,
21584         Value_Range::upper_bound, frange::set_undefined): Likewise.
21585         * gimple-range-gori.h (range_def_chain::depend, gori_map::m_outgoing,
21586         gori_compute): Likewise.
21587         * gimple-range-fold.h (fold_using_range): Likewise.
21588         * gimple-range-path.cc (path_range_query::compute_ranges_in_phis):
21589         Likewise.
21590         * gimple-range-gori.cc (range_def_chain::in_chain_p,
21591         range_def_chain::dump, gori_map::calculate_gori,
21592         gori_compute::compute_operand_range_switch,
21593         gori_compute::logical_combine, gori_compute::refine_using_relation,
21594         gori_compute::compute_operand1_range, gori_compute::may_recompute_p):
21595         Likewise.
21596         * gimple-range.h: Likewise.
21597         (enable_ranger): Likewise.
21598         * range-op.h (empty_range_varying): Likewise.
21599         * value-query.h (value_query): Likewise.
21600         * gimple-range-cache.cc (block_range_cache::set_bb_range,
21601         block_range_cache::dump, ssa_global_cache::clear_global_range,
21602         temporal_cache::temporal_value, temporal_cache::current_p,
21603         ranger_cache::range_of_def, ranger_cache::propagate_updated_value,
21604         ranger_cache::range_from_dom, ranger_cache::register_inferred_value):
21605         Likewise.
21606         * gimple-range-fold.cc (fur_edge::get_phi_operand,
21607         fur_stmt::get_operand, gimple_range_adjustment,
21608         fold_using_range::range_of_phi,
21609         fold_using_range::relation_fold_and_or): Likewise.
21610         * value-range-storage.h (irange_storage_slot::MAX_INTS): Likewise.
21611         * value-query.cc (range_query::value_of_expr,
21612         range_query::value_on_edge, range_query::query_relation): Likewise.
21613         * tree-vrp.cc (remove_unreachable::remove_and_update_globals,
21614         intersect_range_with_nonzero_bits): Likewise.
21615         * gimple-range-infer.cc (gimple_infer_range::check_assume_func,
21616         exit_range): Likewise.
21617         * value-relation.h: Likewise.
21618         (equiv_oracle, relation_trio::relation_trio, value_relation,
21619         value_relation::value_relation, pe_min): Likewise.
21620         * range-op-float.cc (range_operator_float::rv_fold,
21621         frange_arithmetic, foperator_unordered_equal::op1_range,
21622         foperator_div::rv_fold): Likewise.
21623         * gimple-range-op.cc (cfn_clz::fold_range): Likewise.
21624         * value-relation.cc (equiv_oracle::query_relation,
21625         equiv_oracle::register_equiv, equiv_oracle::add_equiv_to_block,
21626         value_relation::apply_transitive, relation_chain_head::find_relation,
21627         dom_oracle::query_relation, dom_oracle::find_relation_block,
21628         dom_oracle::find_relation_dom, path_oracle::register_equiv): Likewise.
21629         * range-op.cc (range_operator::wi_fold_in_parts_equiv,
21630         create_possibly_reversed_range, adjust_op1_for_overflow,
21631         operator_mult::wi_fold, operator_exact_divide::op1_range,
21632         operator_cast::lhs_op1_relation, operator_cast::fold_pair,
21633         operator_cast::fold_range, operator_abs::wi_fold, range_op_cast_tests,
21634         range_op_lshift_tests): Likewise.
21636 2023-03-23  Andrew Stubbs  <ams@codesourcery.com>
21638         * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
21639         (move_callee_saved_registers): Detect the bug condition early.
21641 2023-03-23  Andrew Stubbs  <ams@codesourcery.com>
21643         * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
21644         * config/gcn/gcn-valu.md (V_1REG_ALT): New.
21645         (V_2REG_ALT): New.
21646         (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): New.
21647         (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): New.
21648         (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Use new patterns.
21649         * config/gcn/gcn.cc (gcn_stepped_zero_int_parallel_p): New.
21650         * config/gcn/predicates.md (ascending_zero_int_parallel): New.
21652 2023-03-23  Jakub Jelinek  <jakub@redhat.com>
21654         PR tree-optimization/109176
21655         * tree-vect-generic.cc (expand_vector_condition): If a has
21656         vector boolean type and is a comparison, also check if both
21657         the comparison and VEC_COND_EXPR could be successfully expanded
21658         individually.
21660 2023-03-23  Pan Li  <pan2.li@intel.com>
21661             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21663         PR target/108654
21664         PR target/108185
21665         * config/riscv/riscv-modes.def (ADJUST_BYTESIZE): Adjust size
21666         for vector mask modes.
21667         * config/riscv/riscv.cc (riscv_v_adjust_bytesize): New.
21668         * config/riscv/riscv.h (riscv_v_adjust_bytesize): New.
21670 2023-03-23  Songhe Zhu  <zhusonghe@eswincomputing.com>
21672         * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
21674 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21676         PR target/109244
21677         * config/riscv/riscv-protos.h (emit_vlmax_vsetvl): Define as global.
21678         (emit_vlmax_op): Ditto.
21679         * config/riscv/riscv-v.cc (get_sew): New function.
21680         (emit_vlmax_vsetvl): Adapt function.
21681         (emit_pred_op): Ditto.
21682         (emit_vlmax_op): Ditto.
21683         (emit_nonvlmax_op): Ditto.
21684         (legitimize_move): Fix LRA ICE.
21685         (gen_no_side_effects_vsetvl_rtx): Adapt function.
21686         * config/riscv/vector.md (@mov<V_FRACT:mode><P:mode>_lra): New pattern.
21687         (@mov<VB:mode><P:mode>_lra): Ditto.
21688         (*mov<V_FRACT:mode><P:mode>_lra): Ditto.
21689         (*mov<VB:mode><P:mode>_lra): Ditto.
21691 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21693         PR target/109228
21694         * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
21695         __riscv_vlenb support.
21696         (BASE): Ditto.
21697         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
21698         * config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto.
21699         * config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto.
21700         (SHAPE): Ditto.
21701         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
21702         * config/riscv/riscv-vector-builtins.cc: Ditto.
21704 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21705             kito-cheng  <kito.cheng@sifive.com>
21707         * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs.
21708         (pass_vsetvl::compute_local_backward_infos): Fix bugs.
21709         (pass_vsetvl::need_vsetvl): Fix bugs.
21710         (pass_vsetvl::backward_demand_fusion): Fix bugs.
21711         (pass_vsetvl::demand_fusion): Fix bugs.
21712         (eliminate_insn): Fix bugs.
21713         (insert_vsetvl): Ditto.
21714         (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
21715         * config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto.
21716         * config/riscv/vector.md: Ditto.
21718 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21719             kito-cheng  <kito.cheng@sifive.com>
21721         * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
21722         * config/riscv/vector-iterators.md (nmsac): Ditto.
21723         (nmsub): Ditto.
21724         (msac): Ditto.
21725         (msub): Ditto.
21726         (nmadd): Ditto.
21727         (nmacc): Ditto.
21728         * config/riscv/vector.md (@pred_mul_<optab><mode>): Ditto.
21729         (@pred_mul_plus<mode>): Ditto.
21730         (*pred_madd<mode>): Ditto.
21731         (*pred_macc<mode>): Ditto.
21732         (*pred_mul_plus<mode>): Ditto.
21733         (@pred_mul_plus<mode>_scalar): Ditto.
21734         (*pred_madd<mode>_scalar): Ditto.
21735         (*pred_macc<mode>_scalar): Ditto.
21736         (*pred_mul_plus<mode>_scalar): Ditto.
21737         (*pred_madd<mode>_extended_scalar): Ditto.
21738         (*pred_macc<mode>_extended_scalar): Ditto.
21739         (*pred_mul_plus<mode>_extended_scalar): Ditto.
21740         (@pred_minus_mul<mode>): Ditto.
21741         (*pred_<madd_nmsub><mode>): Ditto.
21742         (*pred_nmsub<mode>): Ditto.
21743         (*pred_<macc_nmsac><mode>): Ditto.
21744         (*pred_nmsac<mode>): Ditto.
21745         (*pred_mul_<optab><mode>): Ditto.
21746         (*pred_minus_mul<mode>): Ditto.
21747         (@pred_mul_<optab><mode>_scalar): Ditto.
21748         (@pred_minus_mul<mode>_scalar): Ditto.
21749         (*pred_<madd_nmsub><mode>_scalar): Ditto.
21750         (*pred_nmsub<mode>_scalar): Ditto.
21751         (*pred_<macc_nmsac><mode>_scalar): Ditto.
21752         (*pred_nmsac<mode>_scalar): Ditto.
21753         (*pred_mul_<optab><mode>_scalar): Ditto.
21754         (*pred_minus_mul<mode>_scalar): Ditto.
21755         (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
21756         (*pred_nmsub<mode>_extended_scalar): Ditto.
21757         (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
21758         (*pred_nmsac<mode>_extended_scalar): Ditto.
21759         (*pred_mul_<optab><mode>_extended_scalar): Ditto.
21760         (*pred_minus_mul<mode>_extended_scalar): Ditto.
21761         (*pred_<madd_msub><mode>): Ditto.
21762         (*pred_<macc_msac><mode>): Ditto.
21763         (*pred_<madd_msub><mode>_scalar): Ditto.
21764         (*pred_<macc_msac><mode>_scalar): Ditto.
21765         (@pred_neg_mul_<optab><mode>): Ditto.
21766         (@pred_mul_neg_<optab><mode>): Ditto.
21767         (*pred_<nmadd_msub><mode>): Ditto.
21768         (*pred_<nmsub_nmadd><mode>): Ditto.
21769         (*pred_<nmacc_msac><mode>): Ditto.
21770         (*pred_<nmsac_nmacc><mode>): Ditto.
21771         (*pred_neg_mul_<optab><mode>): Ditto.
21772         (*pred_mul_neg_<optab><mode>): Ditto.
21773         (@pred_neg_mul_<optab><mode>_scalar): Ditto.
21774         (@pred_mul_neg_<optab><mode>_scalar): Ditto.
21775         (*pred_<nmadd_msub><mode>_scalar): Ditto.
21776         (*pred_<nmsub_nmadd><mode>_scalar): Ditto.
21777         (*pred_<nmacc_msac><mode>_scalar): Ditto.
21778         (*pred_<nmsac_nmacc><mode>_scalar): Ditto.
21779         (*pred_neg_mul_<optab><mode>_scalar): Ditto.
21780         (*pred_mul_neg_<optab><mode>_scalar): Ditto.
21781         (@pred_widen_neg_mul_<optab><mode>): Ditto.
21782         (@pred_widen_mul_neg_<optab><mode>): Ditto.
21783         (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
21784         (@pred_widen_mul_neg_<optab><mode>_scalar): Ditto.
21786 2023-03-23  liuhongt  <hongtao.liu@intel.com>
21788         * builtins.cc (builtin_memset_read_str): Replace
21789         targetm.gen_memset_scratch_rtx with gen_reg_rtx.
21790         (builtin_memset_gen_str): Ditto.
21791         * config/i386/i386-expand.cc
21792         (ix86_convert_const_wide_int_to_broadcast): Replace
21793         ix86_gen_scratch_sse_rtx with gen_reg_rtx.
21794         (ix86_expand_vector_move): Ditto.
21795         * config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx):
21796         Removed.
21797         * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed.
21798         (TARGET_GEN_MEMSET_SCRATCH_RTX): Removed.
21799         * doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX.
21800         * doc/tm.texi.in: Ditto.
21801         * target.def: Ditto.
21803 2023-03-22  Vladimir N. Makarov  <vmakarov@redhat.com>
21805         * lra.cc (lra): Do not repeat inheritance and live range splitting
21806         when asm error is found.
21808 2023-03-22  Andrew Jenner  <andrew@codesourcery.com>
21810         * config/gcn/gcn-protos.h (gcn_expand_dpp_swap_pairs_insn)
21811         (gcn_expand_dpp_distribute_even_insn)
21812         (gcn_expand_dpp_distribute_odd_insn): Declare.
21813         * config/gcn/gcn-valu.md (@dpp_swap_pairs<mode>)
21814         (@dpp_distribute_even<mode>, @dpp_distribute_odd<mode>)
21815         (cmul<conj_op><mode>3, cml<addsub_as><mode>4, vec_addsub<mode>3)
21816         (cadd<rot><mode>3, vec_fmaddsub<mode>4, vec_fmsubadd<mode>4)
21817         (fms<mode>4<exec>, fms<mode>4_negop2<exec>, fms<mode>4)
21818         (fms<mode>4_negop2): New patterns.
21819         * config/gcn/gcn.cc (gcn_expand_dpp_swap_pairs_insn)
21820         (gcn_expand_dpp_distribute_even_insn)
21821         (gcn_expand_dpp_distribute_odd_insn): New functions.
21822         * config/gcn/gcn.md: Add entries to unspec enum.
21824 2023-03-22  Aldy Hernandez  <aldyh@redhat.com>
21826         PR tree-optimization/109008
21827         * value-range.cc (frange::set): Add nan_state argument.
21828         * value-range.h (class nan_state): New.
21829         (frange::get_nan_state): New.
21831 2023-03-22  Martin Liska  <mliska@suse.cz>
21833         * configure: Regenerate.
21835 2023-03-21  Joseph Myers  <joseph@codesourcery.com>
21837         * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
21838         to variants.
21840 2023-03-21  Andrew MacLeod  <amacleod@redhat.com>
21842         PR tree-optimization/109192
21843         * gimple-range-gori.cc (gori_compute::compute_operand_range):
21844         Terminate gori calculations if a relation is not relevant.
21845         * value-relation.h (value_relation::set_relation): Allow
21846         equality between op1 and op2 if they are the same.
21848 2023-03-21  Richard Biener  <rguenther@suse.de>
21850         PR tree-optimization/109219
21851         * tree-vect-loop.cc (vectorizable_reduction): Check
21852         slp_node, not STMT_SLP_TYPE.
21853         * tree-vect-stmts.cc (vectorizable_condition): Likewise.
21854         * tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
21855         Remove assertion on STMT_SLP_TYPE.
21857 2023-03-21  Jakub Jelinek  <jakub@redhat.com>
21859         PR tree-optimization/109215
21860         * tree.h (enum special_array_member): Adjust comments for int_0
21861         and trail_0.
21862         * tree.cc (component_ref_sam_type): Clear zero_elts if memtype
21863         has zero sized element type and the array has variable number of
21864         elements or constant one or more elements.
21865         (component_ref_size): Adjust comments, formatting fix.
21867 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
21869         * configure.ac: Add check for the Texinfo 6.8
21870         CONTENTS_OUTPUT_LOCATION customization variable and set it if
21871         supported.
21872         * configure: Regenerate.
21873         * Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable.  Set by
21874         configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
21875         CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
21876         ($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
21878 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
21880         * doc/extend.texi: Associate use_hazard_barrier_return index
21881         entry with its attribute.
21882         * doc/invoke.texi: Associate -fcanon-prefix-map index entry with
21883         its attribute
21885 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
21887         * doc/implement-c.texi: Remove usage of @gol.
21888         * doc/invoke.texi: Ditto.
21889         * doc/sourcebuild.texi: Ditto.
21890         * doc/include/gcc-common.texi: Remove @gol.  In new Makeinfo and
21891         texinfo.tex versions, the bug it was working around appears to
21892         be gone.
21894 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
21896         * doc/include/texinfo.tex: Update to 2023-01-17.19.
21898 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
21900         * doc/include/gcc-common.texi: Add @defbuiltin{,x} and
21901         @enddefbuiltin for defining built-in functions.
21902         * doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
21903         places where it should be used.
21905 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
21907         * doc/extend.texi (Formatted Output Function Checking): New
21908         subsection for  grouping together printf et al.
21909         (Exception handling) Fix missing @ sign before copyright
21910         header, which lead to the copyright line leaking into
21911         '(gcc)Exception handling'.
21912         * doc/gcc.texi: Set document language to en_US.
21913         (@copying): Wrap front cover texts in quotations, move in manual
21914         description text.
21916 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
21918         * doc/gcc.texi: Add the Indices appendix, to make texinfo
21919         generate nice indices overview page.
21921 2023-03-21  Richard Biener  <rguenther@suse.de>
21923         PR tree-optimization/109170
21924         * gimple-range-op.cc (cfn_pass_through_arg1): New.
21925         (gimple_range_op_handler::maybe_builtin_call): Handle
21926         __builtin_expect via cfn_pass_through_arg1.
21928 2023-03-20   Michael Meissner  <meissner@linux.ibm.com>
21930         PR target/109067
21931         * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
21932         (init_float128_ieee): Delete code to switch complex multiply and divide
21933         for long double.
21934         (complex_multiply_builtin_code): New helper function.
21935         (complex_divide_builtin_code): Likewise.
21936         (rs6000_mangle_decl_assembler_name): Add support for mangling the name
21937         of complex 128-bit multiply and divide built-in functions.
21939 2023-03-20  Peter Bergner  <bergner@linux.ibm.com>
21941         PR target/109178
21942         * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
21944 2023-03-19  Jonny Grant  <jg@jguk.org>
21946         * doc/extend.texi (Common Function Attributes) <nonnull>:
21947         Correct typo.
21949 2023-03-18  Peter Bergner  <bergner@linux.ibm.com>
21951         PR rtl-optimization/109179
21952         * lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug
21953         insn or note.  Move the tests earlier to guard lra_get_insn_recog_data.
21955 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
21957         PR target/105554
21958         * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
21959         to false.
21960         * function.cc (push_struct_function): Add ABSTRACT_P argument, pass it
21961         to allocate_struct_function instead of false.
21962         * tree-inline.cc (initialize_cfun): Don't copy DECL_ARGUMENTS
21963         nor DECL_RESULT here.  Pass true as ABSTRACT_P to
21964         push_struct_function.  Call targetm.target_option.relayout_function
21965         after it.
21966         (tree_function_versioning): Formatting fix.
21968 2023-03-17  Vladimir N. Makarov  <vmakarov@redhat.com>
21970         * lra-constraints.cc: Include hooks.h.
21971         (combine_reload_insn): New function.
21972         (lra_constraints): Call it.
21974 2023-03-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21975             kito-cheng  <kito.cheng@sifive.com>
21977         * config/riscv/riscv-v.cc (legitimize_move): Allow undef value
21978         as legitimate value.
21979         * config/riscv/riscv-vector-builtins.cc
21980         (function_expander::use_ternop_insn): Fix bugs of ternary intrinsic.
21981         (function_expander::use_widen_ternop_insn): Ditto.
21982         * config/riscv/vector.md (@vundefined<mode>): New pattern.
21983         (pred_mul_<optab><mode>_undef_merge): Remove.
21984         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
21985         (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
21986         (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
21987         (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
21989 2023-03-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
21991         PR target/109092
21992         * config/riscv/riscv.md: Fix subreg bug.
21994 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
21996         PR middle-end/108685
21997         * omp-expand.cc (expand_omp_for_ordered_loops): Add L0_BB argument,
21998         use its loop_father rather than BODY_BB's loop_father.
21999         (expand_omp_for_generic): Adjust expand_omp_for_ordered_loops caller.
22000         If broken_loop with ordered > collapse and at least one of those
22001         extra loops aren't guaranteed to have at least one iteration, change
22002         l0_bb's loop_father to entry_bb's loop_father.  Set cont_bb's
22003         loop_father to l0_bb's loop_father rather than l1_bb's.
22005 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
22007         PR plugins/108634
22008         * gdbhooks.py (TreePrinter.to_string): Wrap
22009         gdb.parse_and_eval('tree_code_type') in a try block, parse
22010         and eval 'tree_code_type_tmpl<0>::tree_code_type' instead if it
22011         raises exception.  Update comments for the recent tree_code_type
22012         changes.
22014 2023-03-17  Sandra Loosemore  <sandra@codesourcery.com>
22016         * doc/extend.texi (BPF Built-in Functions): Fix numerous markup
22017         issues.  Add more line breaks to example so it doesn't overflow
22018         the margins.
22020 2023-03-17  Sandra Loosemore  <sandra@codesourcery.com>
22022         * doc/extend.texi (Common Function Attributes) <access>: Fix bad
22023         line breaks in examples.
22024         <malloc>: Fix bad line breaks in running text, also copy-edit
22025         for consistency.
22026         (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
22027         * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
22028         @gol.
22029         (C++ Dialect Options) <-fcontracts>: Add line break in example.
22030         <-Wctad-maybe-unsupported>: Likewise.
22031         <-Winvalid-constexpr>: Likewise.
22032         (Warning Options) <-Wdangling-pointer>: Likewise.
22033         <-Winterference-size>: Likewise.
22034         <-Wvla-parameter>: Likewise.
22035         (Static Analyzer Options): Fix bad line breaks in running text,
22036         plus add some missing markup.
22037         (Optimize Options) <openacc-privatization>: Fix more bad line
22038         breaks in running text.
22040 2023-03-16  Uros Bizjak  <ubizjak@gmail.com>
22042         * config/i386/i386-expand.cc (expand_vec_perm_pblendv):
22043         Handle 8-byte modes only with TARGET_MMX_WITH_SSE.
22044         (expand_vec_perm_2perm_pblendv): Ditto.
22046 2023-03-16  Martin Liska  <mliska@suse.cz>
22048         PR middle-end/106133
22049         * gcc.cc (driver_handle_option): Use x_main_input_basename
22050         if x_dump_base_name is null.
22051         * opts.cc (common_handle_option): Likewise.
22053 2023-03-16  Richard Biener  <rguenther@suse.de>
22055         PR tree-optimization/109123
22056         * gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
22057         Do not emit -Wuse-after-free late.
22058         (pass_waccess::check_call): Always check call pointer uses.
22060 2023-03-16  Richard Biener  <rguenther@suse.de>
22062         PR tree-optimization/109141
22063         * tree-dfa.h (renumber_gimple_stmt_uids_in_block): New.
22064         * tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split
22065         out from ...
22066         (renumber_gimple_stmt_uids): ... here and
22067         (renumber_gimple_stmt_uids_in_blocks): ... here.
22068         * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p):
22069         Use renumber_gimple_stmt_uids_in_block to also assign UIDs
22070         to PHIs.
22071         (pass_waccess::check_pointer_uses): Process all PHIs.
22073 2023-03-15  David Malcolm  <dmalcolm@redhat.com>
22075         PR analyzer/109097
22076         * diagnostic-format-sarif.cc (class sarif_invocation): New.
22077         (class sarif_ice_notification): New.
22078         (sarif_builder::m_invocation_obj): New field.
22079         (sarif_invocation::add_notification_for_ice): New.
22080         (sarif_invocation::prepare_to_flush): New.
22081         (sarif_ice_notification::sarif_ice_notification): New.
22082         (sarif_builder::sarif_builder): Add m_invocation_obj.
22083         (sarif_builder::end_diagnostic): Special-case DK_ICE and
22084         DK_ICE_NOBT.
22085         (sarif_builder::flush_to_file): Call prepare_to_flush on
22086         m_invocation_obj.  Pass the latter to make_top_level_object.
22087         (sarif_builder::make_result_object): Move creation of "locations"
22088         array to...
22089         (sarif_builder::make_locations_arr): ...this new function.
22090         (sarif_builder::make_top_level_object): Add "invocation_obj" param
22091         and pass it to make_run_object.
22092         (sarif_builder::make_run_object): Add "invocation_obj" param and
22093         use it.
22094         (sarif_ice_handler): New callback.
22095         (diagnostic_output_format_init_sarif): Wire up sarif_ice_handler.
22096         * diagnostic.cc (diagnostic_initialize): Initialize new field
22097         "ice_handler_cb".
22098         (diagnostic_action_after_output): If it is set, make one attempt
22099         to call ice_handler_cb.
22100         * diagnostic.h (diagnostic_context::ice_handler_cb): New field.
22102 2023-03-15  Uros Bizjak  <ubizjak@gmail.com>
22104         * config/i386/i386-expand.cc (expand_vec_perm_blend):
22105         Handle 8-byte modes only with TARGET_MMX_WITH_SSE. Handle V2SFmode
22106         and fix V2HImode handling.
22107         (expand_vec_perm_1): Try to emit BLEND instruction
22108         before MOVSS/MOVSD.
22109         * config/i386/mmx.md (*mmx_blendps): New insn pattern.
22111 2023-03-15  Tobias Burnus  <tobias@codesourcery.com>
22113         * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
22115 2023-03-15  Richard Biener  <rguenther@suse.de>
22117         * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
22118         Do not diagnose clobbers.
22120 2023-03-15  Richard Biener  <rguenther@suse.de>
22122         PR tree-optimization/109139
22123         * tree-ssa-live.cc (remove_unused_locals): Look at the
22124         base address for unused decls on the LHS of .DEFERRED_INIT.
22126 2023-03-15  Xi Ruoyao  <xry111@xry111.site>
22128         PR other/109086
22129         * builtins.cc (inline_string_cmp): Force the character
22130         difference into "result" pseudo-register, instead of reassign
22131         the pseudo-register.
22133 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
22135         * config.gcc: Add thead.o to RISC-V extra_objs.
22136         * config/riscv/peephole.md: Add mempair peephole passes.
22137         * config/riscv/riscv-protos.h (riscv_split_64bit_move_p): New
22138         prototype.
22139         (th_mempair_operands_p): Likewise.
22140         (th_mempair_order_operands): Likewise.
22141         (th_mempair_prepare_save_restore_operands): Likewise.
22142         (th_mempair_save_restore_regs): Likewise.
22143         (th_mempair_output_move): Likewise.
22144         * config/riscv/riscv.cc (riscv_save_reg): Move code.
22145         (riscv_restore_reg): Move code.
22146         (riscv_for_each_saved_reg): Add code to emit mempair insns.
22147         * config/riscv/t-riscv: Add thead.cc.
22148         * config/riscv/thead.md (*th_mempair_load_<GPR:mode>2):
22149         New insn.
22150         (*th_mempair_store_<GPR:mode>2): Likewise.
22151         (*th_mempair_load_extendsidi2): Likewise.
22152         (*th_mempair_load_zero_extendsidi2): Likewise.
22153         * config/riscv/thead.cc: New file.
22155 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
22157         * config/riscv/constraints.md (TARGET_XTHEADFMV ? FP_REGS : NO_REGS)
22158         New constraint "th_f_fmv".
22159         (TARGET_XTHEADFMV ? GR_REGS : NO_REGS): New constraint
22160         "th_r_fmv".
22161         * config/riscv/riscv.cc (riscv_split_doubleword_move):
22162         Add split code for XTheadFmv.
22163         (riscv_secondary_memory_needed): XTheadFmv does not need
22164         secondary memory.
22165         * config/riscv/riscv.md: Add new UNSPEC_XTHEADFMV and
22166         UNSPEC_XTHEADFMV_HW. Add support for XTheadFmv to
22167         movdf_hardfloat_rv32.
22168         * config/riscv/thead.md (th_fmv_hw_w_x): New INSN.
22169         (th_fmv_x_w): New INSN.
22170         (th_fmv_x_hw): New INSN.
22172 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
22174         * config/riscv/riscv.md (maddhisi4): New expand.
22175         (msubhisi4): New expand.
22176         * config/riscv/thead.md (*th_mula<mode>): New pattern.
22177         (*th_mulawsi): New pattern.
22178         (*th_mulawsi2): New pattern.
22179         (*th_maddhisi4): New pattern.
22180         (*th_sextw_maddhisi4): New pattern.
22181         (*th_muls<mode>): New pattern.
22182         (*th_mulswsi): New pattern.
22183         (*th_mulswsi2): New pattern.
22184         (*th_msubhisi4): New pattern.
22185         (*th_sextw_msubhisi4): New pattern.
22187 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
22189         * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
22190         * config/riscv/riscv-protos.h (riscv_expand_conditional_move):
22191         Add prototype.
22192         * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
22193         XTheadCondMov.
22194         (riscv_expand_conditional_move): New function.
22195         (riscv_expand_conditional_move_onesided): New function.
22196         * config/riscv/riscv.md: Add support for XTheadCondMov.
22197         * config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add
22198         support for XTheadCondMov.
22199         (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise.
22201 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
22203         * config/riscv/bitmanip.md (clzdi2): New expand.
22204         (clzsi2): New expand.
22205         (ctz<mode>2): New expand.
22206         (popcount<mode>2): New expand.
22207         (<bitmanip_optab>si2): Rename INSN.
22208         (*<bitmanip_optab>si2): Hide INSN name.
22209         (<bitmanip_optab>di2): Rename INSN.
22210         (*<bitmanip_optab>di2): Hide INSN name.
22211         (rotrsi3): Remove INSN.
22212         (rotr<mode>3): Add expand.
22213         (*rotrsi3): New INSN.
22214         (rotrdi3): Rename INSN.
22215         (*rotrdi3): Hide INSN name.
22216         (rotrsi3_sext): Rename INSN.
22217         (*rotrsi3_sext): Hide INSN name.
22218         (bswap<mode>2): Remove INSN.
22219         (bswapdi2): Add expand.
22220         (bswapsi2): Add expand.
22221         (*bswap<mode>2): Hide INSN name.
22222         * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for sign
22223         extraction.
22224         * config/riscv/riscv.md (extv<mode>): New expand.
22225         (extzv<mode>): New expand.
22226         * config/riscv/thead.md (*th_srri<mode>3): New INSN.
22227         (*th_ext<mode>): New INSN.
22228         (*th_extu<mode>): New INSN.
22229         (*th_clz<mode>2): New INSN.
22230         (*th_rev<mode>2): New INSN.
22232 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
22234         * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
22235         * config/riscv/thead.md (*th_tst<mode>3): New INSN.
22237 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
22239         * config/riscv/riscv.md: Include thead.md
22240         * config/riscv/thead.md: New file.
22242 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
22244         * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
22246 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
22248         * common/config/riscv/riscv-common.cc: Add xthead* extensions.
22249         * config/riscv/riscv-opts.h (MASK_XTHEADBA): New.
22250         (MASK_XTHEADBB): New.
22251         (MASK_XTHEADBS): New.
22252         (MASK_XTHEADCMO): New.
22253         (MASK_XTHEADCONDMOV): New.
22254         (MASK_XTHEADFMEMIDX): New.
22255         (MASK_XTHEADFMV): New.
22256         (MASK_XTHEADINT): New.
22257         (MASK_XTHEADMAC): New.
22258         (MASK_XTHEADMEMIDX): New.
22259         (MASK_XTHEADMEMPAIR): New.
22260         (MASK_XTHEADSYNC): New.
22261         (TARGET_XTHEADBA): New.
22262         (TARGET_XTHEADBB): New.
22263         (TARGET_XTHEADBS): New.
22264         (TARGET_XTHEADCMO): New.
22265         (TARGET_XTHEADCONDMOV): New.
22266         (TARGET_XTHEADFMEMIDX): New.
22267         (TARGET_XTHEADFMV): New.
22268         (TARGET_XTHEADINT): New.
22269         (TARGET_XTHEADMAC): New.
22270         (TARGET_XTHEADMEMIDX): New.
22271         (TARGET_XTHEADMEMPAIR): new.
22272         (TARGET_XTHEADSYNC): New.
22273         * config/riscv/riscv.opt: Add riscv_xthead_subext.
22275 2023-03-15  Hu, Lin1  <lin1.hu@intel.com>
22277         PR target/109117
22278         * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
22279         __builtin_ia32_vaesdeclast_v16qi,__builtin_ia32_vaesenc_v16qi,
22280         __builtin_ia32_vaesenclast_v16qi): Require OPTION_MASK_ISA_AVX512VL.
22282 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
22284         PR target/109109
22285         * config/i386/i386-expand.cc (split_double_concat): Fix splitting
22286         when lo is equal to dhi and hi is a MEM which uses dlo register.
22288 2023-03-14  Martin Jambor  <mjambor@suse.cz>
22290         PR ipa/107925
22291         * ipa-cp.cc (update_profiling_info): Drop counts of orig_node to
22292         global0 instead of zeroing when it does not have as many counts as
22293         it should.
22295 2023-03-14  Martin Jambor  <mjambor@suse.cz>
22297         PR ipa/107925
22298         * ipa-cp.cc (update_specialized_profile): Drop orig_node_count to
22299         ipa count, remove assert, lenient_count_portion_handling, dump
22300         also orig_node_count.
22302 2023-03-14  Uros Bizjak  <ubizjak@gmail.com>
22304         * config/i386/i386-expand.cc (expand_vec_perm_movs):
22305         Handle V2SImode for TARGET_MMX_WITH_SSE.
22306         * config/i386/mmx.md (*mmx_movss_<mode>): Rename from *mmx_movss
22307         using V2FI mode iterator to handle both V2SI and V2SF modes.
22309 2023-03-14  Sam James  <sam@gentoo.org>
22311         * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
22312         including <sstream> earlier.
22313         * system.h: Add INCLUDE_SSTREAM.
22315 2023-03-14  Richard Biener  <rguenther@suse.de>
22317         * tree-ssa-live.cc (remove_unused_locals): Do not treat
22318         the .DEFERRED_INIT of a variable as use, instead remove
22319         that if it is the only use.
22321 2023-03-14  Eric Botcazou  <ebotcazou@adacore.com>
22323         PR rtl-optimization/107762
22324         * expr.cc (emit_group_store): Revert latest change.
22326 2023-03-14  Andre Vieira  <andre.simoesdiasvieira@arm.com>
22328         PR tree-optimization/109005
22329         * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
22330         aggregate type check.
22332 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
22334         PR tree-optimization/109115
22335         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Don't use
22336         r.upper_bound () on r.undefined_p () range.
22338 2023-03-14  Jan Hubicka  <hubicka@ucw.cz>
22340         PR tree-optimization/106896
22341         * profile-count.cc (profile_count::to_sreal_scale): Synchronize
22342         implementatoin with probability_in; avoid some asserts.
22344 2023-03-13  Max Filippov  <jcmvbkbc@gmail.com>
22346         * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
22348 2023-03-13  Sean Bright  <sean@seanbright.com>
22350         * doc/invoke.texi (Warning Options): Remove errant 'See'
22351         before @xref.
22353 2023-03-13  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
22355         * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
22356         REG_OK_FOR_BASE_P): Remove.
22358 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22360         * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
22361         (=vd,vd,vr,vr): Ditto.
22362         * config/riscv/vector.md: Ditto.
22364 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22366         * config/riscv/riscv-vector-builtins.cc
22367         (function_expander::use_compare_insn): Add operand predicate check.
22369 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22371         * config/riscv/vector.md: Fine tune RA constraints.
22373 2023-03-13  Tobias Burnus  <tobias@codesourcery.com>
22375         * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
22376         hsaco assemble/link.
22378 2023-03-13  Richard Biener  <rguenther@suse.de>
22380         PR tree-optimization/109046
22381         * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
22382         piecewise complex loads.
22384 2023-03-12  Jakub Jelinek  <jakub@redhat.com>
22386         * config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove.
22387         (aarch64_bf16_ptr_type_node): Adjust comment.
22388         * config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use
22389         bfloat16_type_node rather than aarch64_bf16_type_node.
22390         (aarch64_libgcc_floating_mode_supported_p,
22391         aarch64_scalar_mode_supported_p): Also support BFmode.
22392         (aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove.
22393         (aarch64_invalid_binary_op): Remove BFmode related rejections.
22394         (TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine.
22395         * config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove.
22396         (aarch64_int_or_fp_type): Use bfloat16_type_node rather than
22397         aarch64_bf16_type_node.
22398         (aarch64_init_simd_builtin_types): Likewise.
22399         (aarch64_init_bf16_types): Likewise.  Don't create bfloat16_type_node,
22400         which is created in tree.cc already.
22401         * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise.
22403 2023-03-12  Roger Sayle  <roger@nextmovesoftware.com>
22405         PR middle-end/109031
22406         * tree-chrec.cc (chrec_apply): When folding "{a, +, a} (x-1)",
22407         ensure that the type of x is as wide or wider than the type of a.
22409 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
22411         PR target/108583
22412         * config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): Remove.
22413         (*bitmask_shift_plus<mode>): New.
22414         * config/aarch64/aarch64-sve2.md (*bitmask_shift_plus<mode>): New.
22415         (@aarch64_bitmask_udiv<mode>3): Remove.
22416         * config/aarch64/aarch64.cc
22417         (aarch64_vectorize_can_special_div_by_constant,
22418         TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Removed.
22419         (TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT,
22420         aarch64_vectorize_preferred_div_as_shifts_over_mult): New.
22422 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
22424         PR target/108583
22425         * target.def (preferred_div_as_shifts_over_mult): New.
22426         * doc/tm.texi.in: Document it.
22427         * doc/tm.texi: Regenerate.
22428         * targhooks.cc (default_preferred_div_as_shifts_over_mult): New.
22429         * targhooks.h (default_preferred_div_as_shifts_over_mult): New.
22430         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Use it.
22432 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
22433             Richard Sandiford  <richard.sandiford@arm.com>
22435         PR target/108583
22436         * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
22437         single use.
22439 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
22440             Andrew MacLeod  <amacleod@redhat.com>
22442         PR target/108583
22443         * gimple-range-op.h (gimple_range_op_handler): Add maybe_non_standard.
22444         * gimple-range-op.cc (gimple_range_op_handler::gimple_range_op_handler):
22445         Use it.
22446         (gimple_range_op_handler::maybe_non_standard): New.
22447         * range-op.cc (class operator_widen_plus_signed,
22448         operator_widen_plus_signed::wi_fold, class operator_widen_plus_unsigned,
22449         operator_widen_plus_unsigned::wi_fold, class operator_widen_mult_signed,
22450         operator_widen_mult_signed::wi_fold, class operator_widen_mult_unsigned,
22451         operator_widen_mult_unsigned::wi_fold,
22452         ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
22453         ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New.
22454         * range-op.h (ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
22455         ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New
22457 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
22459         PR target/108583
22460         * doc/tm.texi (TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Remove.
22461         * doc/tm.texi.in: Likewise.
22462         * explow.cc (round_push, align_dynamic_address): Revert previous patch.
22463         * expmed.cc (expand_divmod): Likewise.
22464         * expmed.h (expand_divmod): Likewise.
22465         * expr.cc (force_operand, expand_expr_divmod): Likewise.
22466         * optabs.cc (expand_doubleword_mod, expand_doubleword_divmod): Likewise.
22467         * target.def (can_special_div_by_const): Remove.
22468         * target.h: Remove tree-core.h include
22469         * targhooks.cc (default_can_special_div_by_const): Remove.
22470         * targhooks.h (default_can_special_div_by_const): Remove.
22471         * tree-vect-generic.cc (expand_vector_operation): Remove hook.
22472         * tree-vect-patterns.cc (vect_recog_divmod_pattern): Remove hook.
22473         * tree-vect-stmts.cc (vectorizable_operation): Remove hook.
22475 2023-03-12  Sandra Loosemore  <sandra@codesourcery.com>
22477         * doc/install.texi2html: Fix issue number typo in comment.
22479 2023-03-12  Gaius Mulley  <gaiusmod2@gmail.com>
22481         * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
22482         bool.
22484 2023-03-12  Sandra Loosemore  <sandra@codesourcery.com>
22486         * doc/invoke.texi (Optimize Options):  Add markup to
22487         description of asan-kernel-mem-intrinsic-prefix, and clarify
22488         wording slightly.
22490 2023-03-11  Gerald Pfeifer  <gerald@pfeifer.com>
22492         * doc/extend.texi (Named Address Spaces): Drop a redundant link
22493         to AVR-LibC.
22495 2023-03-11  Jeff Law  <jlaw@ventanamicro>
22497         PR web/88860
22498         * doc/extend.texi: Clarify Attribute Syntax a bit.
22500 2023-03-11  Sandra Loosemore  <sandra@codesourcery.com>
22502         * doc/install.texi (Prerequisites): Suggest using newer versions
22503         of Texinfo.
22504         (Final install): Clean up and modernize discussion of how to
22505         build or obtain the GCC manuals.
22506         * doc/install.texi2html: Update comment to point to the PR instead
22507         of "makeinfo 4.7 brokenness" (it's not specific to that version).
22509 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
22511         PR target/107703
22512         * optabs.cc (expand_fix): For conversions from BFmode to integral,
22513         use shifts to convert it to SFmode first and then convert SFmode
22514         to integral.
22516 2023-03-10  Andrew Pinski  <apinski@marvell.com>
22518         * config/aarch64/aarch64.md: Add a new define_split
22519         to help combine.
22521 2023-03-10  Richard Biener  <rguenther@suse.de>
22523         * tree-ssa-structalias.cc (solve_graph): Immediately
22524         iterate self-cycles.
22526 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
22528         PR tree-optimization/109008
22529         * range-op-float.cc (float_widen_lhs_range): If not
22530         -frounding-math and not IBM double double format, extend lhs
22531         range just by 0.5ulp rather than 1ulp in each direction.
22533 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
22535         PR target/107998
22536         * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
22537         $tmake_file.
22538         * config/i386/t-cygwin-w64: Remove.
22540 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
22542         PR plugins/108634
22543         * tree-core.h (tree_code_type, tree_code_length): For C++11 or
22544         C++14, don't declare as extern const arrays.
22545         (tree_code_type_tmpl, tree_code_length_tmpl): New types with
22546         static constexpr member arrays for C++11 or C++14.
22547         * tree.h (TREE_CODE_CLASS): For C++11 or C++14 use
22548         tree_code_type_tmpl <0>::tree_code_type instead of tree_code_type.
22549         (TREE_CODE_LENGTH): For C++11 or C++14 use
22550         tree_code_length_tmpl <0>::tree_code_length instead of
22551         tree_code_length.
22552         * tree.cc (tree_code_type, tree_code_length): Remove.
22554 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
22556         PR other/108464
22557         * common.opt (fcanon-prefix-map): New option.
22558         * opts.cc: Include file-prefix-map.h.
22559         (flag_canon_prefix_map): New variable.
22560         (common_handle_option): Handle OPT_fcanon_prefix_map.
22561         (gen_command_line_string): Ignore OPT_fcanon_prefix_map.
22562         * file-prefix-map.h (flag_canon_prefix_map): Declare.
22563         * file-prefix-map.cc (struct file_prefix_map): Add canonicalize
22564         member.
22565         (add_prefix_map): Initialize canonicalize member from
22566         flag_canon_prefix_map, and if true canonicalize it using lrealpath.
22567         (remap_filename): Revert 2022-11-01 and 2022-11-07 changes,
22568         use lrealpath result only for map->canonicalize map entries.
22569         * lto-opts.cc (lto_write_options): Ignore OPT_fcanon_prefix_map.
22570         * opts-global.cc (handle_common_deferred_options): Clear
22571         flag_canon_prefix_map at the start and handle OPT_fcanon_prefix_map.
22572         * doc/invoke.texi (-fcanon-prefix-map): Document.
22573         (-ffile-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map): Add
22574         see also for -fcanon-prefix-map.
22575         * doc/cppopts.texi (-fmacro-prefix-map): Likewise.
22577 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
22579         PR c/108079
22580         * cgraphunit.cc (check_global_declaration): Don't warn for unused
22581         variables which have OPT_Wunused_variable warning suppressed.
22583 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
22585         PR tree-optimization/109008
22586         * range-op-float.cc (float_widen_lhs_range): If lb is
22587         minimum representable finite number or ub is maximum
22588         representable finite number, instead of widening it to
22589         -inf or inf widen it to negative or positive 0x0.8p+(EMAX+1).
22590         Temporarily clear flag_finite_math_only when canonicalizing
22591         the widened range.
22593 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22595         * config/riscv/riscv-builtins.cc (riscv_gimple_fold_builtin): New function.
22596         * config/riscv/riscv-protos.h (riscv_gimple_fold_builtin): Ditto.
22597         (gimple_fold_builtin):  Ditto.
22598         * config/riscv/riscv-vector-builtins-bases.cc (class read_vl): New class.
22599         (class vleff): Ditto.
22600         (BASE): Ditto.
22601         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22602         * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
22603         (vleff): Ditto.
22604         * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
22605         (struct fault_load_def): Ditto.
22606         (SHAPE): Ditto.
22607         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
22608         * config/riscv/riscv-vector-builtins.cc
22609         (rvv_arg_type_info::get_tree_type): Add size_ptr.
22610         (gimple_folder::gimple_folder): New class.
22611         (gimple_folder::fold): Ditto.
22612         (gimple_fold_builtin): New function.
22613         (get_read_vl_instance): Ditto.
22614         (get_read_vl_decl): Ditto.
22615         * config/riscv/riscv-vector-builtins.def (size_ptr): Add size_ptr.
22616         * config/riscv/riscv-vector-builtins.h (class gimple_folder): New class.
22617         (get_read_vl_instance): New function.
22618         (get_read_vl_decl):  Ditto.
22619         * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Ditto.
22620         (read_vl_insn_p): Ditto.
22621         (available_occurrence_p): Ditto.
22622         (backward_propagate_worthwhile_p): Ditto.
22623         (gen_vsetvl_pat): Adapt for vleff support.
22624         (get_forward_read_vl_insn): New function.
22625         (get_backward_fault_first_load_insn): Ditto.
22626         (source_equal_p): Adapt for vleff support.
22627         (first_ratio_invalid_for_second_sew_p): Remove.
22628         (first_ratio_invalid_for_second_lmul_p): Ditto.
22629         (first_lmul_less_than_second_lmul_p): Ditto.
22630         (first_ratio_less_than_second_ratio_p): Ditto.
22631         (support_relaxed_compatible_p): New function.
22632         (vector_insn_info::operator>): Remove.
22633         (vector_insn_info::operator>=): Refine.
22634         (vector_insn_info::parse_insn): Adapt for vleff support.
22635         (vector_insn_info::compatible_p): Ditto.
22636         (vector_insn_info::update_fault_first_load_avl): New function.
22637         (pass_vsetvl::transfer_after): Adapt for vleff support.
22638         (pass_vsetvl::demand_fusion): Ditto.
22639         (pass_vsetvl::cleanup_insns): Ditto.
22640         * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Remove
22641         redundant condtions.
22642         * config/riscv/riscv-vsetvl.h (struct demands_cond): New function.
22643         * config/riscv/riscv.cc (TARGET_GIMPLE_FOLD_BUILTIN): New target hook.
22644         * config/riscv/riscv.md: Adapt for vleff support.
22645         * config/riscv/t-riscv: Ditto.
22646         * config/riscv/vector-iterators.md: New iterator.
22647         * config/riscv/vector.md (read_vlsi): New pattern.
22648         (read_vldi_zero_extend): Ditto.
22649         (@pred_fault_load<mode>): Ditto.
22651 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22653         * config/riscv/riscv-vector-builtins.cc
22654         (function_expander::use_ternop_insn): Use maybe_gen_insn instead.
22655         (function_expander::use_widen_ternop_insn): Ditto.
22656         * optabs.cc (maybe_gen_insn): Extend nops handling.
22658 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22660         * config/riscv/riscv-vector-builtins-bases.cc: Split indexed load
22661         patterns according to RVV ISA.
22662         * config/riscv/vector-iterators.md: New iterators.
22663         * config/riscv/vector.md
22664         (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Remove.
22665         (@pred_indexed_<order>load<mode>_same_eew): New pattern.
22666         (@pred_indexed_<order>load<mode>_x2_greater_eew): Ditto.
22667         (@pred_indexed_<order>load<mode>_x4_greater_eew): Ditto.
22668         (@pred_indexed_<order>load<mode>_x8_greater_eew): Ditto.
22669         (@pred_indexed_<order>load<mode>_x2_smaller_eew): Ditto.
22670         (@pred_indexed_<order>load<mode>_x4_smaller_eew): Ditto.
22671         (@pred_indexed_<order>load<mode>_x8_smaller_eew): Ditto.
22672         (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Remove.
22673         (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
22674         (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
22675         (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
22676         (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
22677         (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
22679 2023-03-10  Michael Collison  <collison@rivosinc.com>
22681         * tree-vect-loop-manip.cc (vect_do_peeling): Use
22682         result of constant_lower_bound instead of vf for the lower
22683         bound of the epilog loop trip count.
22685 2023-03-09  Tamar Christina  <tamar.christina@arm.com>
22687         * passes.cc (emergency_dump_function): Finish graph generation.
22689 2023-03-09  Tamar Christina  <tamar.christina@arm.com>
22691         * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
22692         and bottom bit only.
22694 2023-03-09  Andrew Pinski  <apinski@marvell.com>
22696         PR tree-optimization/108980
22697         * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
22698         Reorgnize the call to warning for not strict flexible arrays
22699         to be before the check of warned.
22701 2023-03-09  Jason Merrill  <jason@redhat.com>
22703         * doc/extend.texi: Comment out __is_deducible docs.
22705 2023-03-09  Jason Merrill  <jason@redhat.com>
22707         PR c++/105841
22708         * doc/extend.texi (Type Traits):: Document __is_deducible.
22710 2023-03-09  Costas Argyris  <costas.argyris@gmail.com>
22712         PR driver/108865
22713         * config.host: add object for x86_64-*-mingw*.
22714         * config/i386/sym-mingw32.cc: dummy file to attach
22715         symbol.
22716         * config/i386/utf8-mingw32.rc: windres resource file.
22717         * config/i386/winnt-utf8.manifest: XML manifest to
22718         enable UTF-8.
22719         * config/i386/x-mingw32: reference to x-mingw32-utf8.
22720         * config/i386/x-mingw32-utf8: Makefile fragment to
22721         embed UTF-8 manifest.
22723 2023-03-09  Vladimir N. Makarov  <vmakarov@redhat.com>
22725         * lra-constraints.cc (process_alt_operands): Use operand modes for
22726         clobbered regs instead of the biggest access mode.
22728 2023-03-09  Richard Biener  <rguenther@suse.de>
22730         PR middle-end/108995
22731         * fold-const.cc (extract_muldiv_1): Avoid folding
22732         (CST * b) / CST2 when sanitizing overflow and we rely on
22733         overflow being undefined.
22735 2023-03-09  Jakub Jelinek  <jakub@redhat.com>
22736             Richard Biener  <rguenther@suse.de>
22738         PR tree-optimization/109008
22739         * range-op-float.cc (float_widen_lhs_range): New function.
22740         (foperator_plus::op1_range, foperator_minus::op1_range,
22741         foperator_minus::op2_range, foperator_mult::op1_range,
22742         foperator_div::op1_range, foperator_div::op2_range): Use it.
22744 2023-03-07  Jonathan Grant  <jg@jguk.org>
22746         PR sanitizer/81649
22747         * doc/invoke.texi (Instrumentation Options):  Clarify
22748         LeakSanitizer behavior.
22750 2023-03-07  Benson Muite  <benson_muite@emailplus.org>
22752         * doc/install.texi (Prerequisites): Add link to gmplib.org.
22754 2023-03-07  Pan Li  <pan2.li@intel.com>
22755             Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22757         PR target/108185
22758         PR target/108654
22759         * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
22760         modes.
22761         * config/riscv/riscv.cc (riscv_v_adjust_precision): New.
22762         * config/riscv/riscv.h (riscv_v_adjust_precision): New.
22763         * genmodes.cc (adj_precision): New.
22764         (ADJUST_PRECISION): New.
22765         (emit_mode_adjustments): Handle ADJUST_PRECISION.
22767 2023-03-07  Hans-Peter Nilsson  <hp@axis.com>
22769         * doc/sourcebuild.texi: Document check_effective_target_tail_call.
22771 2023-03-06  Paul-Antoine Arras  <pa@codesourcery.com>
22773         * config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for
22774         {s|u}{max|min} in QI, HI and DI modes.
22775         (<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode.
22776         (cond_<fexpander><mode>): Add pattern for cond_f{max|min}.
22777         (cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}.
22778         * config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be
22779         saved in SGPRs.
22781 2023-03-06  Richard Biener  <rguenther@suse.de>
22783         PR tree-optimization/109025
22784         * tree-vect-loop.cc (vect_is_simple_reduction): Verify
22785         the inner LC PHI use is the inner loop PHI latch definition
22786         before classifying an outer PHI as double reduction.
22788 2023-03-06  Jan Hubicka  <hubicka@ucw.cz>
22790         PR target/108429
22791         * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
22792         generic.
22793         (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
22794         (X86_TUNE_USE_SCATTER): Likewise.
22796 2023-03-06  Xi Ruoyao  <xry111@xry111.site>
22798         PR target/109000
22799         * config/loongarch/loongarch.h (FP_RETURN): Use
22800         TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
22801         (UNITS_PER_FP_ARG): Likewise.
22803 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22805         * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
22806         (pass_vsetvl::backward_demand_fusion): Ditto.
22808 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
22809             SiYu Wu  <siyu@isrc.iscas.ac.cn>
22811         * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
22812         instructions.
22813         (riscv_sm3p1_<mode>): New.
22814         (riscv_sm4ed_<mode>): New.
22815         (riscv_sm4ks_<mode>): New.
22816         * config/riscv/riscv-builtins.cc (AVAIL): Add ZKSED's and ZKSH's AVAIL.
22817         * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): Add ZKSED's and
22818         ZKSH's built-in functions.
22820 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
22821             SiYu Wu  <siyu@isrc.iscas.ac.cn>
22823         * config/riscv/crypto.md (riscv_sha256sig0_<mode>): Add ZKNH's instructions.
22824         (riscv_sha256sig1_<mode>): New.
22825         (riscv_sha256sum0_<mode>): New.
22826         (riscv_sha256sum1_<mode>): New.
22827         (riscv_sha512sig0h): New.
22828         (riscv_sha512sig0l): New.
22829         (riscv_sha512sig1h): New.
22830         (riscv_sha512sig1l): New.
22831         (riscv_sha512sum0r): New.
22832         (riscv_sha512sum1r): New.
22833         (riscv_sha512sig0): New.
22834         (riscv_sha512sig1): New.
22835         (riscv_sha512sum0): New.
22836         (riscv_sha512sum1): New.
22837         * config/riscv/riscv-builtins.cc (AVAIL): And ZKNH's AVAIL.
22838         * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): And ZKNH's
22839         built-in functions.
22840         (DIRECT_BUILTIN): Add new.
22842 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
22843             SiYu Wu  <siyu@isrc.iscas.ac.cn>
22845         * config/riscv/constraints.md (D03): Add constants of bs and rnum.
22846         (DsA): New.
22847         * config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions.
22848         (riscv_aes32dsmi): New.
22849         (riscv_aes64ds): New.
22850         (riscv_aes64dsm): New.
22851         (riscv_aes64im): New.
22852         (riscv_aes64ks1i): New.
22853         (riscv_aes64ks2): New.
22854         (riscv_aes32esi): New.
22855         (riscv_aes32esmi): New.
22856         (riscv_aes64es): New.
22857         (riscv_aes64esm): New.
22858         * config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL.
22859         * config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and
22860         ZKNE's built-in functions.
22862 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
22863             SiYu Wu  <siyu@isrc.iscas.ac.cn>
22865         * config/riscv/bitmanip.md: Add ZBKB's instructions.
22866         * config/riscv/riscv-builtins.cc (AVAIL): Add new.
22867         * config/riscv/riscv.md: Add new type for crypto instructions.
22868         * config/riscv/crypto.md: Add Scalar Cryptography extension's machine
22869         description file.
22870         * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
22871         extension's built-in function file.
22873 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
22874             SiYu Wu  <siyu@isrc.iscas.ac.cn>
22876         * config/riscv/riscv-builtins.cc (RISCV_FTYPE_NAME2): New.
22877         (RISCV_FTYPE_NAME3): New.
22878         (RISCV_ATYPE_QI): New.
22879         (RISCV_ATYPE_HI): New.
22880         (RISCV_FTYPE_ATYPES2): New.
22881         (RISCV_FTYPE_ATYPES3): New.
22882         * config/riscv/riscv-ftypes.def (2): New.
22883         (3): New.
22885 2023-03-05  Vineet Gupta  <vineetg@rivosinc.com>
22887         * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
22888         use exact_log2().
22890 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
22891             kito-cheng  <kito.cheng@sifive.com>
22893         * config/riscv/predicates.md (vector_any_register_operand): New predicate.
22894         * config/riscv/riscv-c.cc (riscv_check_builtin_call): New function.
22895         (riscv_register_pragmas): Add builtin function check call.
22896         * config/riscv/riscv-protos.h (RVV_VUNDEF): Adapt macro.
22897         (check_builtin_call): New function.
22898         * config/riscv/riscv-vector-builtins-bases.cc (class vundefined): New class.
22899         (class vreinterpret): Ditto.
22900         (class vlmul_ext): Ditto.
22901         (class vlmul_trunc): Ditto.
22902         (class vset): Ditto.
22903         (class vget): Ditto.
22904         (BASE): Ditto.
22905         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22906         * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
22907         (vluxei16): Ditto.
22908         (vluxei32): Ditto.
22909         (vluxei64): Ditto.
22910         (vloxei8): Ditto.
22911         (vloxei16): Ditto.
22912         (vloxei32): Ditto.
22913         (vloxei64): Ditto.
22914         (vsuxei8): Ditto.
22915         (vsuxei16): Ditto.
22916         (vsuxei32): Ditto.
22917         (vsuxei64): Ditto.
22918         (vsoxei8): Ditto.
22919         (vsoxei16): Ditto.
22920         (vsoxei32): Ditto.
22921         (vsoxei64): Ditto.
22922         (vundefined): Add new intrinsic.
22923         (vreinterpret): Ditto.
22924         (vlmul_ext): Ditto.
22925         (vlmul_trunc): Ditto.
22926         (vset): Ditto.
22927         (vget): Ditto.
22928         * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): New class.
22929         (struct narrow_alu_def): Ditto.
22930         (struct reduc_alu_def): Ditto.
22931         (struct vundefined_def): Ditto.
22932         (struct misc_def): Ditto.
22933         (struct vset_def): Ditto.
22934         (struct vget_def): Ditto.
22935         (SHAPE): Ditto.
22936         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
22937         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EEW8_INTERPRET_OPS): New def.
22938         (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
22939         (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
22940         (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
22941         (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
22942         (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
22943         (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
22944         (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
22945         (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
22946         (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
22947         (DEF_RVV_LMUL1_OPS): Ditto.
22948         (DEF_RVV_LMUL2_OPS): Ditto.
22949         (DEF_RVV_LMUL4_OPS): Ditto.
22950         (vint16mf4_t): Ditto.
22951         (vint16mf2_t): Ditto.
22952         (vint16m1_t): Ditto.
22953         (vint16m2_t): Ditto.
22954         (vint16m4_t): Ditto.
22955         (vint16m8_t): Ditto.
22956         (vint32mf2_t): Ditto.
22957         (vint32m1_t): Ditto.
22958         (vint32m2_t): Ditto.
22959         (vint32m4_t): Ditto.
22960         (vint32m8_t): Ditto.
22961         (vint64m1_t): Ditto.
22962         (vint64m2_t): Ditto.
22963         (vint64m4_t): Ditto.
22964         (vint64m8_t): Ditto.
22965         (vuint16mf4_t): Ditto.
22966         (vuint16mf2_t): Ditto.
22967         (vuint16m1_t): Ditto.
22968         (vuint16m2_t): Ditto.
22969         (vuint16m4_t): Ditto.
22970         (vuint16m8_t): Ditto.
22971         (vuint32mf2_t): Ditto.
22972         (vuint32m1_t): Ditto.
22973         (vuint32m2_t): Ditto.
22974         (vuint32m4_t): Ditto.
22975         (vuint32m8_t): Ditto.
22976         (vuint64m1_t): Ditto.
22977         (vuint64m2_t): Ditto.
22978         (vuint64m4_t): Ditto.
22979         (vuint64m8_t): Ditto.
22980         (vint8mf4_t): Ditto.
22981         (vint8mf2_t): Ditto.
22982         (vint8m1_t): Ditto.
22983         (vint8m2_t): Ditto.
22984         (vint8m4_t): Ditto.
22985         (vint8m8_t): Ditto.
22986         (vuint8mf4_t): Ditto.
22987         (vuint8mf2_t): Ditto.
22988         (vuint8m1_t): Ditto.
22989         (vuint8m2_t): Ditto.
22990         (vuint8m4_t): Ditto.
22991         (vuint8m8_t): Ditto.
22992         (vint8mf8_t): Ditto.
22993         (vuint8mf8_t): Ditto.
22994         (vfloat32mf2_t): Ditto.
22995         (vfloat32m1_t): Ditto.
22996         (vfloat32m2_t): Ditto.
22997         (vfloat32m4_t): Ditto.
22998         (vfloat64m1_t): Ditto.
22999         (vfloat64m2_t): Ditto.
23000         (vfloat64m4_t): Ditto.
23001         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
23002         (DEF_RVV_EEW8_INTERPRET_OPS): Ditto.
23003         (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
23004         (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
23005         (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
23006         (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
23007         (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
23008         (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
23009         (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
23010         (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
23011         (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
23012         (DEF_RVV_LMUL1_OPS): Ditto.
23013         (DEF_RVV_LMUL2_OPS): Ditto.
23014         (DEF_RVV_LMUL4_OPS): Ditto.
23015         (DEF_RVV_TYPE_INDEX): Ditto.
23016         (required_extensions_p): Adapt for new intrinsic support/
23017         (get_required_extensions): New function.
23018         (check_required_extensions): Ditto.
23019         (unsigned_base_type_p): Remove.
23020         (rvv_arg_type_info::get_scalar_ptr_type): New function.
23021         (get_mode_for_bitsize): Remove.
23022         (rvv_arg_type_info::get_scalar_const_ptr_type): New function.
23023         (rvv_arg_type_info::get_base_vector_type): Ditto.
23024         (rvv_arg_type_info::get_function_type_index): Ditto.
23025         (DEF_RVV_BASE_TYPE): New def.
23026         (function_builder::apply_predication): New class.
23027         (function_expander::mask_mode): Ditto.
23028         (function_checker::function_checker): Ditto.
23029         (function_checker::report_non_ice): Ditto.
23030         (function_checker::report_out_of_range): Ditto.
23031         (function_checker::require_immediate): Ditto.
23032         (function_checker::require_immediate_range): Ditto.
23033         (function_checker::check): Ditto.
23034         (check_builtin_call): Ditto.
23035         * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): New def.
23036         (DEF_RVV_BASE_TYPE): Ditto.
23037         (DEF_RVV_TYPE_INDEX): Ditto.
23038         (vbool64_t): Ditto.
23039         (vbool32_t): Ditto.
23040         (vbool16_t): Ditto.
23041         (vbool8_t): Ditto.
23042         (vbool4_t): Ditto.
23043         (vbool2_t): Ditto.
23044         (vbool1_t): Ditto.
23045         (vuint8mf8_t): Ditto.
23046         (vuint8mf4_t): Ditto.
23047         (vuint8mf2_t): Ditto.
23048         (vuint8m1_t): Ditto.
23049         (vuint8m2_t): Ditto.
23050         (vint8m4_t): Ditto.
23051         (vuint8m4_t): Ditto.
23052         (vint8m8_t): Ditto.
23053         (vuint8m8_t): Ditto.
23054         (vint16mf4_t): Ditto.
23055         (vuint16mf2_t): Ditto.
23056         (vuint16m1_t): Ditto.
23057         (vuint16m2_t): Ditto.
23058         (vuint16m4_t): Ditto.
23059         (vuint16m8_t): Ditto.
23060         (vint32mf2_t): Ditto.
23061         (vuint32m1_t): Ditto.
23062         (vuint32m2_t): Ditto.
23063         (vuint32m4_t): Ditto.
23064         (vuint32m8_t): Ditto.
23065         (vuint64m1_t): Ditto.
23066         (vuint64m2_t): Ditto.
23067         (vuint64m4_t): Ditto.
23068         (vuint64m8_t): Ditto.
23069         (vfloat32mf2_t): Ditto.
23070         (vfloat32m1_t): Ditto.
23071         (vfloat32m2_t): Ditto.
23072         (vfloat32m4_t): Ditto.
23073         (vfloat32m8_t): Ditto.
23074         (vfloat64m1_t): Ditto.
23075         (vfloat64m4_t): Ditto.
23076         (vector): Move it def.
23077         (scalar): Ditto.
23078         (mask): Ditto.
23079         (signed_vector): Ditto.
23080         (unsigned_vector): Ditto.
23081         (unsigned_scalar): Ditto.
23082         (vector_ptr): Ditto.
23083         (scalar_ptr): Ditto.
23084         (scalar_const_ptr): Ditto.
23085         (void): Ditto.
23086         (size): Ditto.
23087         (ptrdiff): Ditto.
23088         (unsigned_long): Ditto.
23089         (long): Ditto.
23090         (eew8_index): Ditto.
23091         (eew16_index): Ditto.
23092         (eew32_index): Ditto.
23093         (eew64_index): Ditto.
23094         (shift_vector): Ditto.
23095         (double_trunc_vector): Ditto.
23096         (quad_trunc_vector): Ditto.
23097         (oct_trunc_vector): Ditto.
23098         (double_trunc_scalar): Ditto.
23099         (double_trunc_signed_vector): Ditto.
23100         (double_trunc_unsigned_vector): Ditto.
23101         (double_trunc_unsigned_scalar): Ditto.
23102         (double_trunc_float_vector): Ditto.
23103         (float_vector): Ditto.
23104         (lmul1_vector): Ditto.
23105         (widen_lmul1_vector): Ditto.
23106         (eew8_interpret): Ditto.
23107         (eew16_interpret): Ditto.
23108         (eew32_interpret): Ditto.
23109         (eew64_interpret): Ditto.
23110         (vlmul_ext_x2): Ditto.
23111         (vlmul_ext_x4): Ditto.
23112         (vlmul_ext_x8): Ditto.
23113         (vlmul_ext_x16): Ditto.
23114         (vlmul_ext_x32): Ditto.
23115         (vlmul_ext_x64): Ditto.
23116         * config/riscv/riscv-vector-builtins.h (DEF_RVV_BASE_TYPE): New def.
23117         (struct function_type_info): New function.
23118         (struct rvv_arg_type_info): Ditto.
23119         (class function_checker): New class.
23120         (rvv_arg_type_info::get_scalar_type): New function.
23121         (rvv_arg_type_info::get_vector_type): Ditto.
23122         (function_expander::ret_mode): New function.
23123         (function_checker::arg_mode): Ditto.
23124         (function_checker::ret_mode): Ditto.
23125         * config/riscv/t-riscv: Add generator.
23126         * config/riscv/vector-iterators.md: New iterators.
23127         * config/riscv/vector.md (vundefined<mode>): New pattern.
23128         (@vundefined<mode>): Ditto.
23129         (@vreinterpret<mode>): Ditto.
23130         (@vlmul_extx2<mode>): Ditto.
23131         (@vlmul_extx4<mode>): Ditto.
23132         (@vlmul_extx8<mode>): Ditto.
23133         (@vlmul_extx16<mode>): Ditto.
23134         (@vlmul_extx32<mode>): Ditto.
23135         (@vlmul_extx64<mode>): Ditto.
23136         (*vlmul_extx2<mode>): Ditto.
23137         (*vlmul_extx4<mode>): Ditto.
23138         (*vlmul_extx8<mode>): Ditto.
23139         (*vlmul_extx16<mode>): Ditto.
23140         (*vlmul_extx32<mode>): Ditto.
23141         (*vlmul_extx64<mode>): Ditto.
23142         * config/riscv/genrvv-type-indexer.cc: New file.
23144 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23146         * config/riscv/riscv-protos.h (enum vlen_enum): New enum.
23147         (slide1_sew64_helper): New function.
23148         * config/riscv/riscv-v.cc (compute_vlmax): Ditto.
23149         (get_unknown_min_value): Ditto.
23150         (force_vector_length_operand): Ditto.
23151         (gen_no_side_effects_vsetvl_rtx): Ditto.
23152         (get_vl_x2_rtx): Ditto.
23153         (slide1_sew64_helper): Ditto.
23154         * config/riscv/riscv-vector-builtins-bases.cc (class slideop): New class.
23155         (class vrgather): Ditto.
23156         (class vrgatherei16): Ditto.
23157         (class vcompress): Ditto.
23158         (BASE): Ditto.
23159         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23160         * config/riscv/riscv-vector-builtins-functions.def (vslideup): Ditto.
23161         (vslidedown): Ditto.
23162         (vslide1up): Ditto.
23163         (vslide1down): Ditto.
23164         (vfslide1up): Ditto.
23165         (vfslide1down): Ditto.
23166         (vrgather): Ditto.
23167         (vrgatherei16): Ditto.
23168         (vcompress): Ditto.
23169         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EI16_OPS): New macro.
23170         (vint8mf8_t): Ditto.
23171         (vint8mf4_t): Ditto.
23172         (vint8mf2_t): Ditto.
23173         (vint8m1_t): Ditto.
23174         (vint8m2_t): Ditto.
23175         (vint8m4_t): Ditto.
23176         (vint16mf4_t): Ditto.
23177         (vint16mf2_t): Ditto.
23178         (vint16m1_t): Ditto.
23179         (vint16m2_t): Ditto.
23180         (vint16m4_t): Ditto.
23181         (vint16m8_t): Ditto.
23182         (vint32mf2_t): Ditto.
23183         (vint32m1_t): Ditto.
23184         (vint32m2_t): Ditto.
23185         (vint32m4_t): Ditto.
23186         (vint32m8_t): Ditto.
23187         (vint64m1_t): Ditto.
23188         (vint64m2_t): Ditto.
23189         (vint64m4_t): Ditto.
23190         (vint64m8_t): Ditto.
23191         (vuint8mf8_t): Ditto.
23192         (vuint8mf4_t): Ditto.
23193         (vuint8mf2_t): Ditto.
23194         (vuint8m1_t): Ditto.
23195         (vuint8m2_t): Ditto.
23196         (vuint8m4_t): Ditto.
23197         (vuint16mf4_t): Ditto.
23198         (vuint16mf2_t): Ditto.
23199         (vuint16m1_t): Ditto.
23200         (vuint16m2_t): Ditto.
23201         (vuint16m4_t): Ditto.
23202         (vuint16m8_t): Ditto.
23203         (vuint32mf2_t): Ditto.
23204         (vuint32m1_t): Ditto.
23205         (vuint32m2_t): Ditto.
23206         (vuint32m4_t): Ditto.
23207         (vuint32m8_t): Ditto.
23208         (vuint64m1_t): Ditto.
23209         (vuint64m2_t): Ditto.
23210         (vuint64m4_t): Ditto.
23211         (vuint64m8_t): Ditto.
23212         (vfloat32mf2_t): Ditto.
23213         (vfloat32m1_t): Ditto.
23214         (vfloat32m2_t): Ditto.
23215         (vfloat32m4_t): Ditto.
23216         (vfloat32m8_t): Ditto.
23217         (vfloat64m1_t): Ditto.
23218         (vfloat64m2_t): Ditto.
23219         (vfloat64m4_t): Ditto.
23220         (vfloat64m8_t): Ditto.
23221         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_EI16_OPS): Ditto.
23222         * config/riscv/riscv.md: Adjust RVV instruction types.
23223         * config/riscv/vector-iterators.md (down): New iterator.
23224         (=vd,vr): New attribute.
23225         (UNSPEC_VSLIDE1UP): New unspec.
23226         * config/riscv/vector.md (@pred_slide<ud><mode>): New pattern.
23227         (*pred_slide<ud><mode>): Ditto.
23228         (*pred_slide<ud><mode>_extended): Ditto.
23229         (@pred_gather<mode>): Ditto.
23230         (@pred_gather<mode>_scalar): Ditto.
23231         (@pred_gatherei16<mode>): Ditto.
23232         (@pred_compress<mode>): Ditto.
23234 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23236         * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
23238 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23240         * config/riscv/constraints.md (Wb1): New constraint.
23241         * config/riscv/predicates.md
23242         (vector_least_significant_set_mask_operand): New predicate.
23243         (vector_broadcast_mask_operand): Ditto.
23244         * config/riscv/riscv-protos.h (enum vlmul_type): Adjust.
23245         (gen_scalar_move_mask): New function.
23246         * config/riscv/riscv-v.cc (gen_scalar_move_mask): Ditto.
23247         * config/riscv/riscv-vector-builtins-bases.cc (class vmv): New class.
23248         (class vmv_s): Ditto.
23249         (BASE): Ditto.
23250         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23251         * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
23252         (vmv_s): Ditto.
23253         (vfmv_f): Ditto.
23254         (vfmv_s): Ditto.
23255         * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
23256         (SHAPE): Ditto.
23257         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
23258         * config/riscv/riscv-vector-builtins.cc (function_expander::mask_mode): Ditto.
23259         (function_expander::use_exact_insn): New function.
23260         (function_expander::use_contiguous_load_insn): New function.
23261         (function_expander::use_contiguous_store_insn): New function.
23262         (function_expander::use_ternop_insn): New function.
23263         (function_expander::use_widen_ternop_insn): New function.
23264         (function_expander::use_scalar_move_insn): New function.
23265         * config/riscv/riscv-vector-builtins.def (s): New operand suffix.
23266         * config/riscv/riscv-vector-builtins.h
23267         (function_expander::add_scalar_move_mask_operand): New class.
23268         * config/riscv/riscv-vsetvl.cc (ignore_vlmul_insn_p): New function.
23269         (scalar_move_insn_p): Ditto.
23270         (has_vsetvl_killed_avl_p): Ditto.
23271         (anticipatable_occurrence_p): Ditto.
23272         (insert_vsetvl): Ditto.
23273         (get_vl_vtype_info): Ditto.
23274         (calculate_sew): Ditto.
23275         (calculate_vlmul): Ditto.
23276         (incompatible_avl_p): Ditto.
23277         (different_sew_p): Ditto.
23278         (different_lmul_p): Ditto.
23279         (different_ratio_p): Ditto.
23280         (different_tail_policy_p): Ditto.
23281         (different_mask_policy_p): Ditto.
23282         (possible_zero_avl_p): Ditto.
23283         (first_ratio_invalid_for_second_sew_p): Ditto.
23284         (first_ratio_invalid_for_second_lmul_p): Ditto.
23285         (second_ratio_invalid_for_first_sew_p): Ditto.
23286         (second_ratio_invalid_for_first_lmul_p): Ditto.
23287         (second_sew_less_than_first_sew_p): Ditto.
23288         (first_sew_less_than_second_sew_p): Ditto.
23289         (compare_lmul): Ditto.
23290         (second_lmul_less_than_first_lmul_p): Ditto.
23291         (first_lmul_less_than_second_lmul_p): Ditto.
23292         (first_ratio_less_than_second_ratio_p): Ditto.
23293         (second_ratio_less_than_first_ratio_p): Ditto.
23294         (DEF_INCOMPATIBLE_COND): Ditto.
23295         (greatest_sew): Ditto.
23296         (first_sew): Ditto.
23297         (second_sew): Ditto.
23298         (first_vlmul): Ditto.
23299         (second_vlmul): Ditto.
23300         (first_ratio): Ditto.
23301         (second_ratio): Ditto.
23302         (vlmul_for_first_sew_second_ratio): Ditto.
23303         (ratio_for_second_sew_first_vlmul): Ditto.
23304         (DEF_SEW_LMUL_FUSE_RULE): Ditto.
23305         (always_unavailable): Ditto.
23306         (avl_unavailable_p): Ditto.
23307         (sew_unavailable_p): Ditto.
23308         (lmul_unavailable_p): Ditto.
23309         (ge_sew_unavailable_p): Ditto.
23310         (ge_sew_lmul_unavailable_p): Ditto.
23311         (ge_sew_ratio_unavailable_p): Ditto.
23312         (DEF_UNAVAILABLE_COND): Ditto.
23313         (same_sew_lmul_demand_p): Ditto.
23314         (propagate_avl_across_demands_p): Ditto.
23315         (reg_available_p): Ditto.
23316         (avl_info::has_non_zero_avl): Ditto.
23317         (vl_vtype_info::has_non_zero_avl): Ditto.
23318         (vector_insn_info::operator>=): Refactor.
23319         (vector_insn_info::parse_insn): Adjust for scalar move.
23320         (vector_insn_info::demand_vl_vtype): Remove.
23321         (vector_insn_info::compatible_p): New function.
23322         (vector_insn_info::compatible_avl_p): Ditto.
23323         (vector_insn_info::compatible_vtype_p): Ditto.
23324         (vector_insn_info::available_p): Ditto.
23325         (vector_insn_info::merge): Ditto.
23326         (vector_insn_info::fuse_avl): Ditto.
23327         (vector_insn_info::fuse_sew_lmul): Ditto.
23328         (vector_insn_info::fuse_tail_policy): Ditto.
23329         (vector_insn_info::fuse_mask_policy): Ditto.
23330         (vector_insn_info::dump): Ditto.
23331         (vector_infos_manager::release): Ditto.
23332         (pass_vsetvl::compute_local_backward_infos): Adjust for scalar move support.
23333         (pass_vsetvl::get_backward_fusion_type): Adjust for scalar move support.
23334         (pass_vsetvl::hard_empty_block_p): Ditto.
23335         (pass_vsetvl::backward_demand_fusion): Ditto.
23336         (pass_vsetvl::forward_demand_fusion): Ditto.
23337         (pass_vsetvl::refine_vsetvls): Ditto.
23338         (pass_vsetvl::cleanup_vsetvls): Ditto.
23339         (pass_vsetvl::commit_vsetvls): Ditto.
23340         (pass_vsetvl::propagate_avl): Ditto.
23341         * config/riscv/riscv-vsetvl.h (enum demand_status): New class.
23342         (struct demands_pair): Ditto.
23343         (struct demands_cond): Ditto.
23344         (struct demands_fuse_rule): Ditto.
23345         * config/riscv/vector-iterators.md: New iterator.
23346         * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
23347         (*pred_broadcast<mode>): Ditto.
23348         (*pred_broadcast<mode>_extended_scalar): Ditto.
23349         (@pred_extract_first<mode>): Ditto.
23350         (*pred_extract_first<mode>): Ditto.
23351         (@pred_extract_first_trunc<mode>): Ditto.
23352         * config/riscv/riscv-vsetvl.def: New file.
23354 2023-03-05  Lin Sinan  <sinan.lin@linux.alibaba.com>
23356         * config/riscv/bitmanip.md: allow 0 constant in max/min
23357         pattern.
23359 2023-03-05  Lin Sinan  <sinan.lin@linux.alibaba.com>
23361         * config/riscv/bitmanip.md: Fix wrong index in the check.
23363 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
23365         PR middle-end/109006
23366         * vec.cc (test_auto_alias): Adjust comment for removal of
23367         m_vecdata.
23368         * read-rtl-function.cc (function_reader::parse_block): Likewise.
23369         * gdbhooks.py: Likewise.
23371 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
23373         PR testsuite/108973
23374         * selftest-diagnostic.cc
23375         (test_diagnostic_context::test_diagnostic_context): Set
23376         caret_max_width to 80.
23378 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
23380         * gimple-ssa-warn-access.cc
23381         (pass_waccess::check_dangling_stores): Skip non-stores.
23383 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
23385         * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
23386         after vmsr and vmrs, and lower the case of P0.
23388 2023-03-03  Jonathan Wakely  <jwakely@redhat.com>
23390         PR middle-end/109006
23391         * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
23393 2023-03-03  Jonathan Wakely  <jwakely@redhat.com>
23395         PR middle-end/109006
23396         * gdbhooks.py (VecPrinter): Adjust for new vec layout.
23398 2023-03-03  Jakub Jelinek  <jakub@redhat.com>
23400         PR c/108986
23401         * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
23402         Return immediately if OPT_Wnonnull or OPT_Wstringop_overflow_ is
23403         suppressed on stmt.  For [static %E] warning, print access_nelts
23404         rather than access_size.  Fix up comment wording.
23406 2023-03-03  Robin Dapp  <rdapp@linux.ibm.com>
23408         * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
23409         arch14 instead of z16.
23411 2023-03-03  Anthony Green  <green@moxielogic.com>
23413         * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
23415 2023-03-03  Anthony Green  <green@moxielogic.com>
23417         * config/moxie/constraints.md (A, B, W): Change
23418         define_constraint to define_memory_constraint.
23420 2023-03-03  Xi Ruoyao  <xry111@xry111.site>
23422         * toplev.cc (process_options): Fix the spelling of
23423         "-fstack-clash-protection".
23425 2023-03-03  Richard Biener  <rguenther@suse.de>
23427         PR tree-optimization/109002
23428         * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
23429         PHI-translate ANTIC_IN.
23431 2023-03-03  Jakub Jelinek  <jakub@redhat.com>
23433         PR tree-optimization/108988
23434         * gimple-fold.cc (gimple_fold_builtin_fputs): Fold len to
23435         size_type_node before passing it as argument to fwrite.  Formatting
23436         fixes.
23438 2023-03-03  Richard Biener  <rguenther@suse.de>
23440         PR target/108738
23441         * config/i386/i386.opt (--param x86-stv-max-visits): New param.
23442         * doc/invoke.texi (--param x86-stv-max-visits): Document it.
23443         * config/i386/i386-features.h (scalar_chain::max_visits): New.
23444         (scalar_chain::build): Add bitmap parameter, return boolean.
23445         (scalar_chain::add_insn): Likewise.
23446         (scalar_chain::analyze_register_chain): Likewise.
23447         * config/i386/i386-features.cc (scalar_chain::scalar_chain):
23448         Initialize max_visits.
23449         (scalar_chain::analyze_register_chain): When we exhaust
23450         max_visits, abort.  Also abort when running into any
23451         disallowed insn.
23452         (scalar_chain::add_insn): Propagate abort.
23453         (scalar_chain::build): Likewise.  When aborting amend
23454         the set of disallowed insn with the insns set.
23455         (convert_scalars_to_vector): Adjust.  Do not convert aborted
23456         chains.
23458 2023-03-03  Richard Biener  <rguenther@suse.de>
23460         PR debug/108772
23461         * dwarf2out.cc (dwarf2out_late_global_decl): Do not
23462         generate a DIE for a function scope static.
23464 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
23466         * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
23468 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
23470         PR target/108883
23471         * target.h (emit_support_tinfos_callback): New typedef.
23472         * targhooks.h (default_emit_support_tinfos): Declare.
23473         * targhooks.cc (default_emit_support_tinfos): New function.
23474         * target.def (emit_support_tinfos): New target hook.
23475         * doc/tm.texi.in (emit_support_tinfos): Document it.
23476         * doc/tm.texi: Regenerated.
23477         * config/i386/i386.cc (ix86_emit_support_tinfos): New function.
23478         (TARGET_EMIT_SUPPORT_TINFOS): Redefine.
23480 2023-03-02  Vladimir N. Makarov  <vmakarov@redhat.com>
23482         * ira-costs.cc: Include print-rtl.h.
23483         (record_reg_classes, scan_one_insn): Add code to print debug info.
23484         (record_operand_costs): Find and use smaller cost for hard reg
23485         move.
23487 2023-03-02  Kwok Cheung Yeung  <kcy@codesourcery.com>
23488             Paul-Antoine Arras  <pa@codesourcery.com>
23490         * builtins.cc (mathfn_built_in_explicit): New.
23491         * config/gcn/gcn.cc: Include case-cfn-macros.h.
23492         (mathfn_built_in_explicit): Add prototype.
23493         (gcn_vectorize_builtin_vectorized_function): New.
23494         (gcn_libc_has_function): New.
23495         (TARGET_LIBC_HAS_FUNCTION): Define.
23496         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
23498 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
23500         PR tree-optimization/108979
23501         * tree-vect-stmts.cc (vectorizable_operation): Don't mask
23502         operations on invariants.
23504 2023-03-02  Robin Dapp  <rdapp@linux.ibm.com>
23506         * config/s390/predicates.md (vll_bias_operand): Add -1 bias.
23507         * config/s390/s390.cc (s390_option_override_internal): Make
23508         partial vector usage the default from z13 on.
23509         * config/s390/vector.md (len_load_v16qi): Add.
23510         (len_store_v16qi): Add.
23512 2023-03-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
23514         * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
23515         of constant 0 offset.
23517 2023-03-02  Robert Suchanek  <robert.suchanek@imgtec.com>
23519         * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
23520         instead of long.
23521         * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
23523 2023-03-02  Junxian Zhu  <zhujunxian@oss.cipunited.com>
23525         * config.gcc: add -with-{no-}msa build option.
23526         * config/mips/mips.h: Likewise.
23527         * doc/install.texi: Likewise.
23529 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
23531         PR tree-optimization/108603
23532         * explow.cc (convert_memory_address_addr_space_1): Only wrap
23533         the result of a recursive call in a CONST if no instructions
23534         were emitted.
23536 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
23538         PR tree-optimization/108430
23539         * tree-vect-stmts.cc (vectorizable_condition): Fix handling
23540         of inverted condition.
23542 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
23544         PR c++/108934
23545         * fold-const.cc (native_interpret_expr) <case REAL_CST>: Before memcmp
23546         comparison copy the bytes from ptr to a temporary buffer and clearing
23547         padding bits in there.
23549 2023-03-01  Tobias Burnus  <tobias@codesourcery.com>
23551         PR middle-end/108545
23552         * gimplify.cc (struct tree_operand_hash_no_se): New.
23553         (omp_index_mapping_groups_1, omp_index_mapping_groups,
23554         omp_reindex_mapping_groups, omp_mapped_by_containing_struct,
23555         omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
23556         oacc_resolve_clause_dependencies, omp_build_struct_sibling_lists,
23557         gimplify_scan_omp_clauses): Use tree_operand_hash_no_se instead
23558         of tree_operand_hash.
23560 2023-03-01  LIU Hao  <lh_mouse@126.com>
23562         PR pch/14940
23563         * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
23564         Remove the size limit `pch_VA_max_size`
23566 2023-03-01  Tobias Burnus  <tobias@codesourcery.com>
23568         PR middle-end/108546
23569         * omp-low.cc (lower_omp_target): Remove optional handling
23570         on the receiver side, i.e. inside target (data), for
23571         use_device_ptr.
23573 2023-03-01  Jakub Jelinek  <jakub@redhat.com>
23575         PR debug/108967
23576         * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
23577         and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
23579 2023-03-01  Richard Biener  <rguenther@suse.de>
23581         PR tree-optimization/108970
23582         * tree-vect-loop-manip.cc (slpeel_can_duplicate_loop_p):
23583         Check we can copy the BBs.
23584         (slpeel_tree_duplicate_loop_to_edge_cfg): Avoid redundant
23585         check.
23586         (vect_do_peeling): Streamline error handling.
23588 2023-03-01  Richard Biener  <rguenther@suse.de>
23590         PR tree-optimization/108950
23591         * tree-vect-patterns.cc (vect_recog_widen_sum_pattern):
23592         Check oprnd0 is defined in the loop.
23593         * tree-vect-loop.cc (vectorizable_reduction): Record all
23594         operands vector types, compute that of invariants and
23595         properly update their SLP nodes.
23597 2023-03-01  Kewen Lin  <linkw@linux.ibm.com>
23599         PR target/108240
23600         * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
23601         implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
23603 2023-02-28  Qing Zhao  <qing.zhao@oracle.com>
23605         PR middle-end/107411
23606         PR middle-end/107411
23607         * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
23608         xasprintf.
23609         * tree-ssa-uninit.cc (warn_uninit): Handle the case when the
23610         LHS varaible of a .DEFERRED_INIT call doesn't have a DECL_NAME.
23612 2023-02-28  Jakub Jelinek  <jakub@redhat.com>
23614         PR sanitizer/108894
23615         * ubsan.cc (ubsan_expand_bounds_ifn): Emit index >= bound
23616         comparison rather than index > bound.
23617         * gimple-fold.cc (gimple_fold_call): Use tree_int_cst_lt
23618         rather than tree_int_cst_le for IFN_UBSAN_BOUND comparison.
23619         * doc/invoke.texi (-fsanitize=bounds): Document that whether
23620         flexible array member-like arrays are instrumented or not depends
23621         on -fstrict-flex-arrays* options of strict_flex_array attributes.
23622         (-fsanitize=bounds-strict): Document that flexible array members
23623         are not instrumented.
23625 2023-02-27  Uroš Bizjak  <ubizjak@gmail.com>
23627         PR target/108922
23628         Revert:
23629         * config/i386/i386.md (fmodxf3): Enable for flag_finite_math_only only.
23630         (fmod<mode>3): Ditto.
23631         (fpremxf4_i387): Ditto.
23632         (reminderxf3): Ditto.
23633         (reminder<mode>3): Ditto.
23634         (fprem1xf4_i387): Ditto.
23636 2023-02-27  Roger Sayle  <roger@nextmovesoftware.com>
23638         * simplify-rtx.cc (simplify_unary_operation_1) <case FFS>: Avoid
23639         generating FFS with mismatched operand and result modes, by using
23640         an explicit SIGN_EXTEND/ZERO_EXTEND.
23641         <case POPCOUNT>: Likewise, for POPCOUNT of ZERO_EXTEND.
23642         <case PARITY>: Likewise, for PARITY of {ZERO,SIGN}_EXTEND.
23644 2023-02-27  Patrick Palka  <ppalka@redhat.com>
23646         * hash-table.h (gt_pch_nx(hash_table<D>)): Remove static.
23647         * lra-int.h (lra_change_class): Likewise.
23648         * recog.h (which_op_alt): Likewise.
23649         * sel-sched-ir.h (sel_bb_empty_or_nop_p): Declare inline
23650         instead of static.
23652 2023-02-27  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
23654         * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
23655         New prototype.
23656         * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
23657         New function.
23658         * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
23659         * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
23661 2023-02-27  Max Filippov  <jcmvbkbc@gmail.com>
23663         * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
23664         (xtensa_get_config_v3): New functions.
23666 2023-02-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
23668         * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
23670 2023-02-27  Lulu Cheng  <chenglulu@loongson.cn>
23672         * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
23673         the macro to 0x1000000000.
23675 2023-02-25  Gaius Mulley  <gaiusmod2@gmail.com>
23677         PR modula2/108261
23678         * doc/gm2.texi (-fm2-pathname): New option documented.
23679         (-fm2-pathnameI): New option documented.
23680         (-fm2-prefix=): New option documented.
23681         (-fruntime-modules=): Update default module list.
23683 2023-02-25  Max Filippov  <jcmvbkbc@gmail.com>
23685         PR target/108919
23686         * config/xtensa/xtensa-protos.h
23687         (xtensa_prepare_expand_call): Rename to xtensa_expand_call.
23688         * config/xtensa/xtensa.cc (xtensa_prepare_expand_call): Rename
23689         to xtensa_expand_call.
23690         (xtensa_expand_call): Emit the call and add a clobber expression
23691         for the static chain to it in case of windowed ABI.
23692         * config/xtensa/xtensa.md (call, call_value, sibcall)
23693         (sibcall_value): Call xtensa_expand_call and complete expansion
23694         right after that call.
23696 2023-02-24  Richard Biener  <rguenther@suse.de>
23698         * vec.h (vec<T, A, vl_embed>::m_vecdata): Remove.
23699         (vec<T, A, vl_embed>::m_vecpfx): Align as T to avoid
23700         changing alignment of vec<T, A, vl_embed> and simplifying
23701         address.
23702         (vec<T, A, vl_embed>::address): Compute as this + 1.
23703         (vec<T, A, vl_embed>::embedded_size): Use sizeof the
23704         vector instead of the offset of the m_vecdata member.
23705         (auto_vec<T, N>::m_data): Turn storage into
23706         uninitialized unsigned char.
23707         (auto_vec<T, N>::auto_vec): Allow allocation of one
23708         stack member.  Initialize m_vec in a special way to
23709         avoid later stringop overflow diagnostics.
23710         * vec.cc (test_auto_alias): New.
23711         (vec_cc_tests): Call it.
23713 2023-02-24  Richard Biener  <rguenther@suse.de>
23715         * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
23716         take a const reference to the object, use address to
23717         access data.
23718         (vec<T, A, vl_embed>::contains): Use address to access data.
23719         (vec<T, A, vl_embed>::operator[]): Use address instead of
23720         m_vecdata to access data.
23721         (vec<T, A, vl_embed>::iterate): Likewise.
23722         (vec<T, A, vl_embed>::copy): Likewise.
23723         (vec<T, A, vl_embed>::quick_push): Likewise.
23724         (vec<T, A, vl_embed>::pop): Likewise.
23725         (vec<T, A, vl_embed>::quick_insert): Likewise.
23726         (vec<T, A, vl_embed>::ordered_remove): Likewise.
23727         (vec<T, A, vl_embed>::unordered_remove): Likewise.
23728         (vec<T, A, vl_embed>::block_remove): Likewise.
23729         (vec<T, A, vl_heap>::address): Likewise.
23731 2023-02-24  Martin Liska  <mliska@suse.cz>
23733         PR sanitizer/108834
23734         * asan.cc (asan_add_global): Use proper TU name for normal
23735         global variables (and aux_base_name for the artificial one).
23737 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
23739         * config/i386/i386-builtin.def: Update description of BDESC
23740         and BDESC_FIRST in file comment to include mask2.
23742 2023-02-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
23744         * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
23746 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
23748         PR middle-end/108854
23749         * cgraphclones.cc (duplicate_thunk_for_node): If no parameter
23750         changes are needed, copy at least DECL_ARGUMENTS PARM_DECL
23751         nodes and adjust their DECL_CONTEXT.
23753 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
23755         PR target/108881
23756         * config/i386/i386-builtin.def (__builtin_ia32_cvtne2ps2bf16_v16bf,
23757         __builtin_ia32_cvtne2ps2bf16_v16bf_mask,
23758         __builtin_ia32_cvtne2ps2bf16_v16bf_maskz,
23759         __builtin_ia32_cvtne2ps2bf16_v8bf,
23760         __builtin_ia32_cvtne2ps2bf16_v8bf_mask,
23761         __builtin_ia32_cvtne2ps2bf16_v8bf_maskz,
23762         __builtin_ia32_cvtneps2bf16_v8sf_mask,
23763         __builtin_ia32_cvtneps2bf16_v8sf_maskz,
23764         __builtin_ia32_cvtneps2bf16_v4sf_mask,
23765         __builtin_ia32_cvtneps2bf16_v4sf_maskz,
23766         __builtin_ia32_dpbf16ps_v8sf, __builtin_ia32_dpbf16ps_v8sf_mask,
23767         __builtin_ia32_dpbf16ps_v8sf_maskz, __builtin_ia32_dpbf16ps_v4sf,
23768         __builtin_ia32_dpbf16ps_v4sf_mask,
23769         __builtin_ia32_dpbf16ps_v4sf_maskz): Require also
23770         OPTION_MASK_ISA_AVX512VL.
23772 2023-02-24  Sebastian Huber  <sebastian.huber@embedded-brains.de>
23774         * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
23775         Add non-compact 32-bit multilibs.
23777 2023-02-24  Junxian Zhu  <zhujunxian@oss.cipunited.com>
23779         * config/mips/mips.md (*clo<mode>2): New pattern.
23781 2023-02-24  Prachi Godbole  <prachi.godbole@imgtec.com>
23783         * config/mips/mips.h (machine_function): New variable
23784         use_hazard_barrier_return_p.
23785         * config/mips/mips.md (UNSPEC_JRHB): New unspec.
23786         (mips_hb_return_internal): New insn pattern.
23787         * config/mips/mips.cc (mips_attribute_table): Add attribute
23788         use_hazard_barrier_return.
23789         (mips_use_hazard_barrier_return_p): New static function.
23790         (mips_function_attr_inlinable_p): Likewise.
23791         (mips_compute_frame_info): Set use_hazard_barrier_return_p.
23792         Emit error for unsupported architecture choice.
23793         (mips_function_ok_for_sibcall, mips_can_use_return_insn):
23794         Return false for use_hazard_barrier_return.
23795         (mips_expand_epilogue): Emit hazard barrier return.
23796         * doc/extend.texi: Document use_hazard_barrier_return.
23798 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
23800         * config/xtensa/xtensa-dynconfig.cc (config.h, system.h)
23801         (coretypes.h, diagnostic.h, intl.h): Use "..." instead of <...>
23802         for the gcc-internal headers.
23804 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
23806         * config/xtensa/t-xtensa (xtensa-dynconfig.o): Use $(COMPILE)
23807         and $(POSTCOMPILE) instead of manual dependency listing.
23808         * config/xtensa/xtensa-dynconfig.c: Rename to ...
23809         * config/xtensa/xtensa-dynconfig.cc: ... this.
23811 2023-02-23  Arsen Arsenović  <arsen@aarsen.me>
23813         * doc/cfg.texi: Reorder index entries around @items.
23814         * doc/cpp.texi: Ditto.
23815         * doc/cppenv.texi: Ditto.
23816         * doc/cppopts.texi: Ditto.
23817         * doc/generic.texi: Ditto.
23818         * doc/install.texi: Ditto.
23819         * doc/extend.texi: Ditto.
23820         * doc/invoke.texi: Ditto.
23821         * doc/md.texi: Ditto.
23822         * doc/rtl.texi: Ditto.
23823         * doc/tm.texi.in: Ditto.
23824         * doc/trouble.texi: Ditto.
23825         * doc/tm.texi: Regenerate.
23827 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
23829         * config/xtensa/xtensa.md: New peephole2 pattern that eliminates
23830         the occurrence of general-purpose register used only once and for
23831         transferring intermediate value.
23833 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
23835         * config/xtensa/xtensa.cc (machine_function): Add new member
23836         'eliminated_callee_saved_bmp'.
23837         (xtensa_can_eliminate_callee_saved_reg_p): New function to
23838         determine whether the register can be eliminated or not.
23839         (xtensa_expand_prologue): Add invoking the above function and
23840         elimination the use of callee-saved register by using its stack
23841         slot through the stack pointer (or the frame pointer if needed)
23842         directly.
23843         (xtensa_expand_prologue): Modify to not emit register restoration
23844         insn from its stack slot if the register is already eliminated.
23846 2023-02-23  Jakub Jelinek  <jakub@redhat.com>
23848         PR translation/108890
23849         * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
23850         around fatal_error format strings.
23852 2023-02-23  Richard Biener  <rguenther@suse.de>
23854         * tree-ssa-structalias.cc (handle_lhs_call): Do not
23855         re-create rhsc, only truncate it.
23857 2023-02-23  Jakub Jelinek  <jakub@redhat.com>
23859         PR middle-end/106258
23860         * ipa-prop.cc (try_make_edge_direct_virtual_call): Handle
23861         BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
23863 2023-02-23  Richard Biener  <rguenther@suse.de>
23865         * tree-if-conv.cc (tree_if_conversion): Properly manage
23866         memory of refs and the contained data references.
23868 2023-02-23  Richard Biener  <rguenther@suse.de>
23870         PR tree-optimization/108888
23871         * tree-if-conv.cc (if_convertible_stmt_p): Set PLF_2 on
23872         calls to predicate.
23873         (predicate_statements): Only predicate calls with PLF_2.
23875 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
23877         * config/xtensa/xtensa.md
23878         (zero_cost_loop_start, zero_cost_loop_end, loop_end):
23879         Add missing "SI:" to PLUS RTXes.
23881 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
23883         PR target/108876
23884         * config/xtensa/xtensa.cc (xtensa_expand_epilogue):
23885         Emit (use (reg:SI A0_REG)) at the end in the sibling call
23886         (i.e. the same place as (return) in the normal call).
23888 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
23890         Revert:
23891         2023-02-21  Max Filippov  <jcmvbkbc@gmail.com>
23893         PR target/108876
23894         * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
23895         for A0_REG.
23896         * config/xtensa/xtensa.md (sibcall, sibcall_internal)
23897         (sibcall_value, sibcall_value_internal): Add 'use' expression
23898         for A0_REG.
23900 2023-02-23  Arsen Arsenović  <arsen@aarsen.me>
23902         * doc/cppdiropts.texi: Reorder @opindex commands to precede
23903         @items they relate to.
23904         * doc/cppopts.texi: Ditto.
23905         * doc/cppwarnopts.texi: Ditto.
23906         * doc/invoke.texi: Ditto.
23907         * doc/lto.texi: Ditto.
23909 2023-02-22  Andrew Stubbs  <ams@codesourcery.com>
23911         * internal-fn.cc (expand_MASK_CALL): New.
23912         * internal-fn.def (MASK_CALL): New.
23913         * internal-fn.h (expand_MASK_CALL): New prototype.
23914         * omp-simd-clone.cc (simd_clone_adjust_argument_types): Set vector_type
23915         for mask arguments also.
23916         * tree-if-conv.cc: Include cgraph.h.
23917         (if_convertible_stmt_p): Do if conversions for calls to SIMD calls.
23918         (predicate_statements): Convert functions to IFN_MASK_CALL.
23919         * tree-vect-loop.cc (vect_get_datarefs_in_loop): Recognise
23920         IFN_MASK_CALL as a SIMD function call.
23921         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
23922         IFN_MASK_CALL as an inbranch SIMD function call.
23923         Generate the mask vector arguments.
23925 2023-02-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
23927         * config/riscv/riscv-vector-builtins-bases.cc (class reducop): New class.
23928         (class widen_reducop): Ditto.
23929         (class freducop): Ditto.
23930         (class widen_freducop): Ditto.
23931         (BASE): Ditto.
23932         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23933         * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
23934         (vredmaxu): Ditto.
23935         (vredmax): Ditto.
23936         (vredminu): Ditto.
23937         (vredmin): Ditto.
23938         (vredand): Ditto.
23939         (vredor): Ditto.
23940         (vredxor): Ditto.
23941         (vwredsum): Ditto.
23942         (vwredsumu): Ditto.
23943         (vfredusum): Ditto.
23944         (vfredosum): Ditto.
23945         (vfredmax): Ditto.
23946         (vfredmin): Ditto.
23947         (vfwredosum): Ditto.
23948         (vfwredusum): Ditto.
23949         * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
23950         (SHAPE): Ditto.
23951         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
23952         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WI_OPS): New macro.
23953         (DEF_RVV_WU_OPS): Ditto.
23954         (DEF_RVV_WF_OPS): Ditto.
23955         (vint8mf8_t): Ditto.
23956         (vint8mf4_t): Ditto.
23957         (vint8mf2_t): Ditto.
23958         (vint8m1_t): Ditto.
23959         (vint8m2_t): Ditto.
23960         (vint8m4_t): Ditto.
23961         (vint8m8_t): Ditto.
23962         (vint16mf4_t): Ditto.
23963         (vint16mf2_t): Ditto.
23964         (vint16m1_t): Ditto.
23965         (vint16m2_t): Ditto.
23966         (vint16m4_t): Ditto.
23967         (vint16m8_t): Ditto.
23968         (vint32mf2_t): Ditto.
23969         (vint32m1_t): Ditto.
23970         (vint32m2_t): Ditto.
23971         (vint32m4_t): Ditto.
23972         (vint32m8_t): Ditto.
23973         (vuint8mf8_t): Ditto.
23974         (vuint8mf4_t): Ditto.
23975         (vuint8mf2_t): Ditto.
23976         (vuint8m1_t): Ditto.
23977         (vuint8m2_t): Ditto.
23978         (vuint8m4_t): Ditto.
23979         (vuint8m8_t): Ditto.
23980         (vuint16mf4_t): Ditto.
23981         (vuint16mf2_t): Ditto.
23982         (vuint16m1_t): Ditto.
23983         (vuint16m2_t): Ditto.
23984         (vuint16m4_t): Ditto.
23985         (vuint16m8_t): Ditto.
23986         (vuint32mf2_t): Ditto.
23987         (vuint32m1_t): Ditto.
23988         (vuint32m2_t): Ditto.
23989         (vuint32m4_t): Ditto.
23990         (vuint32m8_t): Ditto.
23991         (vfloat32mf2_t): Ditto.
23992         (vfloat32m1_t): Ditto.
23993         (vfloat32m2_t): Ditto.
23994         (vfloat32m4_t): Ditto.
23995         (vfloat32m8_t): Ditto.
23996         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WI_OPS): Ditto.
23997         (DEF_RVV_WU_OPS): Ditto.
23998         (DEF_RVV_WF_OPS): Ditto.
23999         (required_extensions_p): Add reduction support.
24000         (rvv_arg_type_info::get_base_vector_type): Ditto.
24001         (rvv_arg_type_info::get_tree_type): Ditto.
24002         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
24003         * config/riscv/riscv.md: Ditto.
24004         * config/riscv/vector-iterators.md (minu): Ditto.
24005         * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): New patern.
24006         (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
24007         (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Ditto.
24008         (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>):Ditto.
24009         (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
24010         (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
24011         (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
24013 2023-02-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24015         * config/riscv/iterators.md: New iterator.
24016         * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class.
24017         (enum ternop_type): New enum.
24018         (class vmacc): New class.
24019         (class imac): Ditto.
24020         (class vnmsac): Ditto.
24021         (enum widen_ternop_type): New enum.
24022         (class vmadd): Ditto.
24023         (class vnmsub): Ditto.
24024         (class iwmac): Ditto.
24025         (class vwmacc): Ditto.
24026         (class vwmaccu): Ditto.
24027         (class vwmaccsu): Ditto.
24028         (class vwmaccus): Ditto.
24029         (class reverse_binop): Ditto.
24030         (class vfmacc): Ditto.
24031         (class vfnmsac): Ditto.
24032         (class vfmadd): Ditto.
24033         (class vfnmsub): Ditto.
24034         (class vfnmacc): Ditto.
24035         (class vfmsac): Ditto.
24036         (class vfnmadd): Ditto.
24037         (class vfmsub): Ditto.
24038         (class vfwmacc): Ditto.
24039         (class vfwnmacc): Ditto.
24040         (class vfwmsac): Ditto.
24041         (class vfwnmsac): Ditto.
24042         (class float_misc): Ditto.
24043         (class fcmp): Ditto.
24044         (class vfclass): Ditto.
24045         (class vfcvt_x): Ditto.
24046         (class vfcvt_rtz_x): Ditto.
24047         (class vfcvt_f): Ditto.
24048         (class vfwcvt_x): Ditto.
24049         (class vfwcvt_rtz_x): Ditto.
24050         (class vfwcvt_f): Ditto.
24051         (class vfncvt_x): Ditto.
24052         (class vfncvt_rtz_x): Ditto.
24053         (class vfncvt_f): Ditto.
24054         (class vfncvt_rod_f): Ditto.
24055         (BASE): Ditto.
24056         * config/riscv/riscv-vector-builtins-bases.h:
24057         * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
24058         (vsext): Ditto.
24059         (vfadd): Ditto.
24060         (vfsub): Ditto.
24061         (vfrsub): Ditto.
24062         (vfwadd): Ditto.
24063         (vfwsub): Ditto.
24064         (vfmul): Ditto.
24065         (vfdiv): Ditto.
24066         (vfrdiv): Ditto.
24067         (vfwmul): Ditto.
24068         (vfmacc): Ditto.
24069         (vfnmsac): Ditto.
24070         (vfmadd): Ditto.
24071         (vfnmsub): Ditto.
24072         (vfnmacc): Ditto.
24073         (vfmsac): Ditto.
24074         (vfnmadd): Ditto.
24075         (vfmsub): Ditto.
24076         (vfwmacc): Ditto.
24077         (vfwnmacc): Ditto.
24078         (vfwmsac): Ditto.
24079         (vfwnmsac): Ditto.
24080         (vfsqrt): Ditto.
24081         (vfrsqrt7): Ditto.
24082         (vfrec7): Ditto.
24083         (vfmin): Ditto.
24084         (vfmax): Ditto.
24085         (vfsgnj): Ditto.
24086         (vfsgnjn): Ditto.
24087         (vfsgnjx): Ditto.
24088         (vfneg): Ditto.
24089         (vfabs): Ditto.
24090         (vmfeq): Ditto.
24091         (vmfne): Ditto.
24092         (vmflt): Ditto.
24093         (vmfle): Ditto.
24094         (vmfgt): Ditto.
24095         (vmfge): Ditto.
24096         (vfclass): Ditto.
24097         (vfmerge): Ditto.
24098         (vfmv_v): Ditto.
24099         (vfcvt_x): Ditto.
24100         (vfcvt_xu): Ditto.
24101         (vfcvt_rtz_x): Ditto.
24102         (vfcvt_rtz_xu): Ditto.
24103         (vfcvt_f): Ditto.
24104         (vfwcvt_x): Ditto.
24105         (vfwcvt_xu): Ditto.
24106         (vfwcvt_rtz_x): Ditto.
24107         (vfwcvt_rtz_xu): Ditto.
24108         (vfwcvt_f): Ditto.
24109         (vfncvt_x): Ditto.
24110         (vfncvt_xu): Ditto.
24111         (vfncvt_rtz_x): Ditto.
24112         (vfncvt_rtz_xu): Ditto.
24113         (vfncvt_f): Ditto.
24114         (vfncvt_rod_f): Ditto.
24115         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
24116         (struct move_def): Ditto.
24117         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTF_OPS): New macro.
24118         (DEF_RVV_CONVERT_I_OPS): Ditto.
24119         (DEF_RVV_CONVERT_U_OPS): Ditto.
24120         (DEF_RVV_WCONVERT_I_OPS): Ditto.
24121         (DEF_RVV_WCONVERT_U_OPS): Ditto.
24122         (DEF_RVV_WCONVERT_F_OPS): Ditto.
24123         (vfloat64m1_t): Ditto.
24124         (vfloat64m2_t): Ditto.
24125         (vfloat64m4_t): Ditto.
24126         (vfloat64m8_t): Ditto.
24127         (vint32mf2_t): Ditto.
24128         (vint32m1_t): Ditto.
24129         (vint32m2_t): Ditto.
24130         (vint32m4_t): Ditto.
24131         (vint32m8_t): Ditto.
24132         (vint64m1_t): Ditto.
24133         (vint64m2_t): Ditto.
24134         (vint64m4_t): Ditto.
24135         (vint64m8_t): Ditto.
24136         (vuint32mf2_t): Ditto.
24137         (vuint32m1_t): Ditto.
24138         (vuint32m2_t): Ditto.
24139         (vuint32m4_t): Ditto.
24140         (vuint32m8_t): Ditto.
24141         (vuint64m1_t): Ditto.
24142         (vuint64m2_t): Ditto.
24143         (vuint64m4_t): Ditto.
24144         (vuint64m8_t): Ditto.
24145         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_CONVERT_I_OPS): Ditto.
24146         (DEF_RVV_CONVERT_U_OPS): Ditto.
24147         (DEF_RVV_WCONVERT_I_OPS): Ditto.
24148         (DEF_RVV_WCONVERT_U_OPS): Ditto.
24149         (DEF_RVV_WCONVERT_F_OPS): Ditto.
24150         (DEF_RVV_F_OPS): Ditto.
24151         (DEF_RVV_WEXTF_OPS): Ditto.
24152         (required_extensions_p): Adjust for floating-point support.
24153         (check_required_extensions): Ditto.
24154         (unsigned_base_type_p): Ditto.
24155         (get_mode_for_bitsize): Ditto.
24156         (rvv_arg_type_info::get_base_vector_type): Ditto.
24157         (rvv_arg_type_info::get_tree_type): Ditto.
24158         * config/riscv/riscv-vector-builtins.def (v_f): New define.
24159         (f): New define.
24160         (f_v): New define.
24161         (xu_v): New define.
24162         (f_w): New define.
24163         (xu_w): New define.
24164         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): New enum.
24165         (function_expander::arg_mode): New function.
24166         * config/riscv/vector-iterators.md (sof): New iterator.
24167         (vfrecp): Ditto.
24168         (copysign): Ditto.
24169         (n): Ditto.
24170         (msac): Ditto.
24171         (msub): Ditto.
24172         (fixuns_trunc): Ditto.
24173         (floatuns): Ditto.
24174         * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
24175         (@pred_<optab><mode>): Ditto.
24176         (@pred_<optab><mode>_scalar): Ditto.
24177         (@pred_<optab><mode>_reverse_scalar): Ditto.
24178         (@pred_<copysign><mode>): Ditto.
24179         (@pred_<copysign><mode>_scalar): Ditto.
24180         (@pred_mul_<optab><mode>): Ditto.
24181         (pred_mul_<optab><mode>_undef_merge): Ditto.
24182         (*pred_<madd_nmsub><mode>): Ditto.
24183         (*pred_<macc_nmsac><mode>): Ditto.
24184         (*pred_mul_<optab><mode>): Ditto.
24185         (@pred_mul_<optab><mode>_scalar): Ditto.
24186         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
24187         (*pred_<madd_nmsub><mode>_scalar): Ditto.
24188         (*pred_<macc_nmsac><mode>_scalar): Ditto.
24189         (*pred_mul_<optab><mode>_scalar): Ditto.
24190         (@pred_neg_mul_<optab><mode>): Ditto.
24191         (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
24192         (*pred_<nmadd_msub><mode>): Ditto.
24193         (*pred_<nmacc_msac><mode>): Ditto.
24194         (*pred_neg_mul_<optab><mode>): Ditto.
24195         (@pred_neg_mul_<optab><mode>_scalar): Ditto.
24196         (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
24197         (*pred_<nmadd_msub><mode>_scalar): Ditto.
24198         (*pred_<nmacc_msac><mode>_scalar): Ditto.
24199         (*pred_neg_mul_<optab><mode>_scalar): Ditto.
24200         (@pred_<misc_op><mode>): Ditto.
24201         (@pred_class<mode>): Ditto.
24202         (@pred_dual_widen_<optab><mode>): Ditto.
24203         (@pred_dual_widen_<optab><mode>_scalar): Ditto.
24204         (@pred_single_widen_<plus_minus:optab><mode>): Ditto.
24205         (@pred_single_widen_<plus_minus:optab><mode>_scalar): Ditto.
24206         (@pred_widen_mul_<optab><mode>): Ditto.
24207         (@pred_widen_mul_<optab><mode>_scalar): Ditto.
24208         (@pred_widen_neg_mul_<optab><mode>): Ditto.
24209         (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
24210         (@pred_cmp<mode>): Ditto.
24211         (*pred_cmp<mode>): Ditto.
24212         (*pred_cmp<mode>_narrow): Ditto.
24213         (@pred_cmp<mode>_scalar): Ditto.
24214         (*pred_cmp<mode>_scalar): Ditto.
24215         (*pred_cmp<mode>_scalar_narrow): Ditto.
24216         (@pred_eqne<mode>_scalar): Ditto.
24217         (*pred_eqne<mode>_scalar): Ditto.
24218         (*pred_eqne<mode>_scalar_narrow): Ditto.
24219         (@pred_merge<mode>_scalar): Ditto.
24220         (@pred_fcvt_x<v_su>_f<mode>): Ditto.
24221         (@pred_<fix_cvt><mode>): Ditto.
24222         (@pred_<float_cvt><mode>): Ditto.
24223         (@pred_widen_fcvt_x<v_su>_f<mode>): Ditto.
24224         (@pred_widen_<fix_cvt><mode>): Ditto.
24225         (@pred_widen_<float_cvt><mode>): Ditto.
24226         (@pred_extend<mode>): Ditto.
24227         (@pred_narrow_fcvt_x<v_su>_f<mode>): Ditto.
24228         (@pred_narrow_<fix_cvt><mode>): Ditto.
24229         (@pred_narrow_<float_cvt><mode>): Ditto.
24230         (@pred_trunc<mode>): Ditto.
24231         (@pred_rod_trunc<mode>): Ditto.
24233 2023-02-22  Jakub Jelinek  <jakub@redhat.com>
24235         PR middle-end/106258
24236         * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
24237         cgraph_update_edges_for_call_stmt_node, cgraph_node::verify_node):
24238         Handle BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
24239         * cgraphclones.cc (cgraph_node::create_clone): Likewise.
24241 2023-02-22  Thomas Schwinge  <thomas@codesourcery.com>
24243         * common.opt (-Wcomplain-wrong-lang): New.
24244         * doc/invoke.texi (-Wno-complain-wrong-lang): Document it.
24245         * opts-common.cc (prune_options): Handle it.
24246         * opts-global.cc (complain_wrong_lang): Use it.
24248 2023-02-21  David Malcolm  <dmalcolm@redhat.com>
24250         PR analyzer/108830
24251         * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
24253 2023-02-21  Max Filippov  <jcmvbkbc@gmail.com>
24255         PR target/108876
24256         * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
24257         for A0_REG.
24258         * config/xtensa/xtensa.md (sibcall, sibcall_internal)
24259         (sibcall_value, sibcall_value_internal): Add 'use' expression
24260         for A0_REG.
24262 2023-02-21  Richard Biener  <rguenther@suse.de>
24264         PR tree-optimization/108691
24265         * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove
24266         assert about calls_setjmp not becoming true when it was false.
24268 2023-02-21  Richard Biener  <rguenther@suse.de>
24270         PR tree-optimization/108793
24271         * tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
24272         Use convert operands to niter_type when computing num.
24274 2023-02-21  Richard Biener  <rguenther@suse.de>
24276         Revert:
24277         2023-02-13  Richard Biener  <rguenther@suse.de>
24279         PR tree-optimization/108691
24280         * tree-cfg.cc (notice_special_calls): When the CFG is built
24281         honor gimple_call_ctrl_altering_p.
24282         * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
24283         temporarily if the call is not control-altering.
24284         * calls.cc (emit_call_1): Do not add REG_SETJMP if
24285         cfun->calls_setjmp is not set.  Do not alter cfun->calls_setjmp.
24287 2023-02-21  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
24289         * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
24290         true if register A0 (return address register) when -Og is specified.
24292 2023-02-20  Uroš Bizjak  <ubizjak@gmail.com>
24294         * config/i386/predicates.md
24295         (general_x64constmem_operand): New predicate.
24296         * config/i386/i386.md (*cmpqi_ext<mode>_1):
24297         Use nonimm_x64constmem_operand.
24298         (*cmpqi_ext<mode>_3): Use general_x64constmem_operand.
24299         (*addqi_ext<mode>_1): Ditto.
24300         (*testqi_ext<mode>_1): Ditto.
24301         (*andqi_ext<mode>_1): Ditto.
24302         (*andqi_ext<mode>_1_cc): Ditto.
24303         (*<any_or:code>qi_ext<mode>_1): Ditto.
24304         (*xorqi_ext<mode>_1_cc): Ditto.
24306 2023-02-20  Jakub Jelinek  <jakub2redhat.com>
24308         PR target/108862
24309         * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
24310         gen_umadddi4_highpart{,_le}.
24312 2023-02-20  Kito Cheng  <kito.cheng@sifive.com>
24314         * config/riscv/riscv.md (prefetch): Use r instead of p for the
24315         address operand.
24316         (riscv_prefetchi_<mode>): Ditto.
24318 2023-02-20  Richard Biener  <rguenther@suse.de>
24320         PR tree-optimization/108816
24321         * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
24322         versioning condition split prerequesite, assert required
24323         invariant.
24325 2023-02-20  Richard Biener  <rguenther@suse.de>
24327         PR tree-optimization/108825
24328         * tree-ssa-loop-manip.cc (verify_loop_closed_ssa): For
24329         loop-local verfication only verify there's no pending SSA
24330         update.
24332 2023-02-20  Richard Biener  <rguenther@suse.de>
24334         PR tree-optimization/108819
24335         * tree-ssa-loop-niter.cc (number_of_iterations_cltz): Check
24336         we have an SSA name as iv_2 as expected.
24338 2023-02-18  Jakub Jelinek  <jakub@redhat.com>
24340         PR tree-optimization/108819
24341         * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
24343 2023-02-18  Jakub Jelinek  <jakub@redhat.com>
24345         PR target/108832
24346         * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
24347         * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
24348         function.
24349         * config/i386/i386.md: Replace replace_rtx calls in all peephole2s
24350         with ix86_replace_reg_with_reg.
24352 2023-02-18  Gerald Pfeifer  <gerald@pfeifer.com>
24354         * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
24356 2023-02-18  Xi Ruoyao  <xry111@xry111.site>
24358         * config.gcc (triplet_abi): Set its value based on $with_abi,
24359         instead of $target.
24360         (la_canonical_triplet): Set it after $triplet_abi is set
24361         correctly.
24362         * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
24363         multiarch tuple for lp64d "loongarch64-linux-gnu" (without
24364         "f64" suffix).
24366 2023-02-18  Andrew Pinski  <apinski@marvell.com>
24368         * match.pd: Remove #if GIMPLE around the
24369         "1 - a" pattern
24371 2023-02-18  Andrew Pinski  <apinski@marvell.com>
24373         * value-query.h (get_range_query): Return the global ranges
24374         for a nullptr func.
24376 2023-02-17  Siddhesh Poyarekar  <siddhesh@gotplt.org>
24378         * doc/invoke.texi (@item -Wall): Fix typo in
24379         -Wuse-after-free.
24381 2023-02-17  Uroš Bizjak  <ubizjak@gmail.com>
24383         PR target/108831
24384         * config/i386/predicates.md
24385         (nonimm_x64constmem_operand): New predicate.
24386         * config/i386/i386.md (*addqi_ext<mode>_0): New insn pattern.
24387         (*subqi_ext<mode>_0): Ditto.
24388         (*andqi_ext<mode>_0): Ditto.
24389         (*<any_or:code>qi_ext<mode>_0): Ditto.
24391 2023-02-17  Uroš Bizjak  <ubizjak@gmail.com>
24393         PR target/108805
24394         * simplify-rtx.cc (simplify_context::simplify_subreg): Use
24395         int_outermode instead of GET_MODE (tem) to prevent
24396         VOIDmode from entering simplify_gen_subreg.
24398 2023-02-17  Richard Biener  <rguenther@suse.de>
24400         PR tree-optimization/108821
24401         * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
24402         move volatile accesses.
24404 2023-02-17  Richard Biener  <rguenther@suse.de>
24406         * tree-ssa.cc (ssa_undefined_value_p): Assert we are not
24407         called on virtual operands.
24408         * tree-ssa-sccvn.cc (vn_phi_lookup): Guard
24409         ssa_undefined_value_p calls.
24410         (vn_phi_insert): Likewise.
24411         (set_ssa_val_to): Likewise.
24412         (visit_phi): Avoid extra work with equivalences for
24413         virtual operand PHIs.
24415 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24417         * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
24418         class.
24419         (class mask_nlogic): Ditto.
24420         (class mask_notlogic): Ditto.
24421         (class vmmv): Ditto.
24422         (class vmclr): Ditto.
24423         (class vmset): Ditto.
24424         (class vmnot): Ditto.
24425         (class vcpop): Ditto.
24426         (class vfirst): Ditto.
24427         (class mask_misc): Ditto.
24428         (class viota): Ditto.
24429         (class vid): Ditto.
24430         (BASE): Ditto.
24431         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24432         * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
24433         (vmnand): Ditto.
24434         (vmandn): Ditto.
24435         (vmxor): Ditto.
24436         (vmor): Ditto.
24437         (vmnor): Ditto.
24438         (vmorn): Ditto.
24439         (vmxnor): Ditto.
24440         (vmmv): Ditto.
24441         (vmclr): Ditto.
24442         (vmset): Ditto.
24443         (vmnot): Ditto.
24444         (vcpop): Ditto.
24445         (vfirst): Ditto.
24446         (vmsbf): Ditto.
24447         (vmsif): Ditto.
24448         (vmsof): Ditto.
24449         (viota): Ditto.
24450         (vid): Ditto.
24451         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
24452         (struct mask_alu_def): Ditto.
24453         (SHAPE): Ditto.
24454         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
24455         * config/riscv/riscv-vector-builtins.cc: Ditto.
24456         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug
24457         for dest it scalar RVV intrinsics.
24458         * config/riscv/vector-iterators.md (sof): New iterator.
24459         * config/riscv/vector.md (@pred_<optab>n<mode>): New pattern.
24460         (@pred_<optab>not<mode>): New pattern.
24461         (@pred_popcount<VB:mode><P:mode>): New pattern.
24462         (@pred_ffs<VB:mode><P:mode>): New pattern.
24463         (@pred_<misc_op><mode>): New pattern.
24464         (@pred_iota<mode>): New pattern.
24465         (@pred_series<mode>): New pattern.
24467 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24469         * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
24470         (vsbc): Ditto.
24471         (vmerge): Ditto.
24472         (vmv_v): Ditto.
24473         * config/riscv/riscv-vector-builtins.cc: Ditto.
24475 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24476             kito-cheng  <kito.cheng@sifive.com>
24478         * config/riscv/riscv-protos.h (sew64_scalar_helper): New function.
24479         * config/riscv/riscv-v.cc (has_vi_variant_p): Adjust.
24480         (sew64_scalar_helper): New function.
24481         * config/riscv/vector.md: Normalization.
24483 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24485         * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
24486         (vsm): Ditto.
24487         (vsse): Ditto.
24488         (vsoxei64): Ditto.
24489         (vsub): Ditto.
24490         (vand): Ditto.
24491         (vor): Ditto.
24492         (vxor): Ditto.
24493         (vsll): Ditto.
24494         (vsra): Ditto.
24495         (vsrl): Ditto.
24496         (vmin): Ditto.
24497         (vmax): Ditto.
24498         (vminu): Ditto.
24499         (vmaxu): Ditto.
24500         (vmul): Ditto.
24501         (vmulh): Ditto.
24502         (vmulhu): Ditto.
24503         (vmulhsu): Ditto.
24504         (vdiv): Ditto.
24505         (vrem): Ditto.
24506         (vdivu): Ditto.
24507         (vremu): Ditto.
24508         (vnot): Ditto.
24509         (vsext): Ditto.
24510         (vzext): Ditto.
24511         (vwadd): Ditto.
24512         (vwsub): Ditto.
24513         (vwmul): Ditto.
24514         (vwmulu): Ditto.
24515         (vwmulsu): Ditto.
24516         (vwaddu): Ditto.
24517         (vwsubu): Ditto.
24518         (vsbc): Ditto.
24519         (vmsbc): Ditto.
24520         (vnsra): Ditto.
24521         (vmerge): Ditto.
24522         (vmv_v): Ditto.
24523         (vmsne): Ditto.
24524         (vmslt): Ditto.
24525         (vmsgt): Ditto.
24526         (vmsle): Ditto.
24527         (vmsge): Ditto.
24528         (vmsltu): Ditto.
24529         (vmsgtu): Ditto.
24530         (vmsleu): Ditto.
24531         (vmsgeu): Ditto.
24532         (vnmsac): Ditto.
24533         (vmadd): Ditto.
24534         (vnmsub): Ditto.
24535         (vwmacc): Ditto.
24536         (vsadd): Ditto.
24537         (vssub): Ditto.
24538         (vssubu): Ditto.
24539         (vaadd): Ditto.
24540         (vasub): Ditto.
24541         (vasubu): Ditto.
24542         (vsmul): Ditto.
24543         (vssra): Ditto.
24544         (vssrl): Ditto.
24545         (vnclip): Ditto.
24547 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24549         * config/riscv/vector.md (@pred_<optab><mode>): Rearrange.
24550         (@pred_<optab><mode>_scalar): Ditto.
24551         (*pred_<optab><mode>_scalar): Ditto.
24552         (*pred_<optab><mode>_extended_scalar): Ditto.
24554 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24556         * config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'.
24557         (init_builtins): Ditto.
24558         (mangle_builtin_type): Ditto.
24559         (verify_type_context): Ditto.
24560         (handle_pragma_vector):  Ditto.
24561         (builtin_decl): Ditto.
24562         (expand_builtin): Ditto.
24563         (const_vec_all_same_in_range_p): Ditto.
24564         (legitimize_move): Ditto.
24565         (emit_vlmax_op): Ditto.
24566         (emit_nonvlmax_op): Ditto.
24567         (get_vlmul): Ditto.
24568         (get_ratio): Ditto.
24569         (get_ta): Ditto.
24570         (get_ma): Ditto.
24571         (get_avl_type): Ditto.
24572         (calculate_ratio): Ditto.
24573         (enum vlmul_type): Ditto.
24574         (simm5_p): Ditto.
24575         (neg_simm5_p): Ditto.
24576         (has_vi_variant_p): Ditto.
24578 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24580         * config/riscv/riscv-protos.h (simm32_p): Remove.
24581         * config/riscv/riscv-v.cc (simm32_p): Ditto.
24582         * config/riscv/vector.md: Use immediate_operand
24583         instead of riscv_vector::simm32_p.
24585 2023-02-16  Gerald Pfeifer  <gerald@pfeifer.com>
24587         * doc/invoke.texi (Optimize Options): Reword the explanation
24588         getting minimal, maximal and default values of a parameter.
24590 2023-02-16  Patrick Palka  <ppalka@redhat.com>
24592         * addresses.h: Mechanically drop 'static' from 'static inline'
24593         functions via s/^static inline/inline/g.
24594         * asan.h: Likewise.
24595         * attribs.h: Likewise.
24596         * basic-block.h: Likewise.
24597         * bitmap.h: Likewise.
24598         * cfghooks.h: Likewise.
24599         * cfgloop.h: Likewise.
24600         * cgraph.h: Likewise.
24601         * cselib.h: Likewise.
24602         * data-streamer.h: Likewise.
24603         * debug.h: Likewise.
24604         * df.h: Likewise.
24605         * diagnostic.h: Likewise.
24606         * dominance.h: Likewise.
24607         * dumpfile.h: Likewise.
24608         * emit-rtl.h: Likewise.
24609         * except.h: Likewise.
24610         * expmed.h: Likewise.
24611         * expr.h: Likewise.
24612         * fixed-value.h: Likewise.
24613         * gengtype.h: Likewise.
24614         * gimple-expr.h: Likewise.
24615         * gimple-iterator.h: Likewise.
24616         * gimple-predict.h: Likewise.
24617         * gimple-range-fold.h: Likewise.
24618         * gimple-ssa.h: Likewise.
24619         * gimple.h: Likewise.
24620         * graphite.h: Likewise.
24621         * hard-reg-set.h: Likewise.
24622         * hash-map.h: Likewise.
24623         * hash-set.h: Likewise.
24624         * hash-table.h: Likewise.
24625         * hwint.h: Likewise.
24626         * input.h: Likewise.
24627         * insn-addr.h: Likewise.
24628         * internal-fn.h: Likewise.
24629         * ipa-fnsummary.h: Likewise.
24630         * ipa-icf-gimple.h: Likewise.
24631         * ipa-inline.h: Likewise.
24632         * ipa-modref.h: Likewise.
24633         * ipa-prop.h: Likewise.
24634         * ira-int.h: Likewise.
24635         * ira.h: Likewise.
24636         * lra-int.h: Likewise.
24637         * lra.h: Likewise.
24638         * lto-streamer.h: Likewise.
24639         * memmodel.h: Likewise.
24640         * omp-general.h: Likewise.
24641         * optabs-query.h: Likewise.
24642         * optabs.h: Likewise.
24643         * plugin.h: Likewise.
24644         * pretty-print.h: Likewise.
24645         * range.h: Likewise.
24646         * read-md.h: Likewise.
24647         * recog.h: Likewise.
24648         * regs.h: Likewise.
24649         * rtl-iter.h: Likewise.
24650         * rtl.h: Likewise.
24651         * sbitmap.h: Likewise.
24652         * sched-int.h: Likewise.
24653         * sel-sched-ir.h: Likewise.
24654         * sese.h: Likewise.
24655         * sparseset.h: Likewise.
24656         * ssa-iterators.h: Likewise.
24657         * system.h: Likewise.
24658         * target-globals.h: Likewise.
24659         * target.h: Likewise.
24660         * timevar.h: Likewise.
24661         * tree-chrec.h: Likewise.
24662         * tree-data-ref.h: Likewise.
24663         * tree-iterator.h: Likewise.
24664         * tree-outof-ssa.h: Likewise.
24665         * tree-phinodes.h: Likewise.
24666         * tree-scalar-evolution.h: Likewise.
24667         * tree-sra.h: Likewise.
24668         * tree-ssa-alias.h: Likewise.
24669         * tree-ssa-live.h: Likewise.
24670         * tree-ssa-loop-manip.h: Likewise.
24671         * tree-ssa-loop.h: Likewise.
24672         * tree-ssa-operands.h: Likewise.
24673         * tree-ssa-propagate.h: Likewise.
24674         * tree-ssa-sccvn.h: Likewise.
24675         * tree-ssa.h: Likewise.
24676         * tree-ssanames.h: Likewise.
24677         * tree-streamer.h: Likewise.
24678         * tree-switch-conversion.h: Likewise.
24679         * tree-vectorizer.h: Likewise.
24680         * tree.h: Likewise.
24681         * wide-int.h: Likewise.
24683 2023-02-16  Jakub Jelinek  <jakub@redhat.com>
24685         PR tree-optimization/108657
24686         * tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt
24687         exists and is not a SSA_NAME, call ao_ref_init even if the stmt
24688         is a call to internal or builtin function.
24690 2023-02-16  Jonathan Wakely  <jwakely@redhat.com>
24692         * doc/invoke.texi (C++ Dialect Options): Suggest adding a
24693         using-declaration to unhide functions.
24695 2023-02-16  Jakub Jelinek  <jakub@redhat.com>
24697         PR tree-optimization/108783
24698         * tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode
24699         is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set
24700         t to curr->op.  Otherwise, punt if either newop1 or newop2 are
24701         SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs.
24703 2023-02-16  Richard Biener  <rguenther@suse.de>
24705         PR tree-optimization/108791
24706         * tree-ssa-forwprop.cc (optimize_vector_load): Build
24707         the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful
24708         type.
24710 2023-02-15  Eric Botcazou  <ebotcazou@adacore.com>
24712         PR target/90458
24713         * config/i386/i386.cc (ix86_compute_frame_layout): Disable the
24714         effects of -fstack-clash-protection for TARGET_STACK_PROBE.
24715         (ix86_expand_prologue): Likewise.
24717 2023-02-15  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
24719         * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
24721 2023-02-15  Uroš Bizjak  <ubizjak@gmail.com>
24723         * config/i386/i386.md (*cmpqi_ext<mode>_1): Use
24724         int248_register_operand predicate in zero_extract sub-RTX.
24725         (*cmpqi_ext<mode>_2): Ditto.
24726         (*cmpqi_ext<mode>_3): Ditto.
24727         (*cmpqi_ext<mode>_4): Ditto.
24728         (*extzvqi_mem_rex64): Ditto.
24729         (*extzvqi): Ditto.
24730         (*insvqi_1_mem_rex64): Ditto.
24731         (@insv<mode>_1): Ditto.
24732         (*insvqi_1): Ditto.
24733         (*insvqi_2): Ditto.
24734         (*insvqi_3): Ditto.
24735         (*extendqi<SWI24:mode>_ext_1): Ditto.
24736         (*addqi_ext<mode>_1): Ditto.
24737         (*addqi_ext<mode>_2): Ditto.
24738         (*subqi_ext<mode>_2): Ditto.
24739         (*testqi_ext<mode>_1): Ditto.
24740         (*testqi_ext<mode>_2): Ditto.
24741         (*andqi_ext<mode>_1): Ditto.
24742         (*andqi_ext<mode>_1_cc): Ditto.
24743         (*andqi_ext<mode>_2): Ditto.
24744         (*<any_or:code>qi_ext<mode>_1): Ditto.
24745         (*<any_or:code>qi_ext<mode>_2): Ditto.
24746         (*xorqi_ext<mode>_1_cc): Ditto.
24747         (*negqi_ext<mode>_2): Ditto.
24748         (*ashlqi_ext<mode>_2): Ditto.
24749         (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
24751 2023-02-15  Uroš Bizjak  <ubizjak@gmail.com>
24753         * config/i386/predicates.md (int248_register_operand):
24754         Rename from extr_register_operand.
24755         * config/i386/i386.md (*extv<mode>): Update for renamed predicate.
24756         (*extzx<mode>): Ditto.
24757         (*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate.
24758         (*ashl<mode>3_mask): Ditto.
24759         (*<any_shiftrt:insn><mode>3_mask): Ditto.
24760         (*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto.
24761         (*<any_rotate:insn><mode>3_mask): Ditto.
24762         (*<btsc><mode>_mask): Ditto.
24763         (*btr<mode>_mask): Ditto.
24764         (*jcc_bt<mode>_mask_1): Ditto.
24766 2023-02-15  Richard Biener  <rguenther@suse.de>
24768         PR middle-end/26854
24769         * df-core.cc (df_worklist_propagate_forward): Put later
24770         blocks on worklist and only earlier blocks on pending.
24771         (df_worklist_propagate_backward): Likewise.
24772         (df_worklist_dataflow_doublequeue): Change the iteration
24773         to process new blocks in the same iteration if that
24774         maintains the iteration order.
24776 2023-02-15  Marek Polacek  <polacek@redhat.com>
24778         PR middle-end/106080
24779         * gimple-ssa-warn-access.cc (is_auto_decl): Remove.  Use auto_var_p
24780         instead.
24782 2023-02-15  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24784         * config/riscv/predicates.md: Refine codes.
24785         * config/riscv/riscv-protos.h (RVV_VUNDEF): New macro.
24786         * config/riscv/riscv-v.cc: Refine codes.
24787         * config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New
24788         enum.
24789         (class imac): New class.
24790         (enum widen_ternop_type): New enum.
24791         (class iwmac): New class.
24792         (BASE): New class.
24793         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24794         * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
24795         (vnmsac): Ditto.
24796         (vmadd): Ditto.
24797         (vnmsub): Ditto.
24798         (vwmacc): Ditto.
24799         (vwmaccu): Ditto.
24800         (vwmaccsu): Ditto.
24801         (vwmaccus): Ditto.
24802         * config/riscv/riscv-vector-builtins.cc
24803         (function_builder::apply_predication): Adjust for multiply-add support.
24804         (function_expander::add_vundef_operand): Refine codes.
24805         (function_expander::use_ternop_insn): New function.
24806         (function_expander::use_widen_ternop_insn): Ditto.
24807         * config/riscv/riscv-vector-builtins.h: New function.
24808         * config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern.
24809         (pred_mul_<optab><mode>_undef_merge): Ditto.
24810         (*pred_<madd_nmsub><mode>): Ditto.
24811         (*pred_<macc_nmsac><mode>): Ditto.
24812         (*pred_mul_<optab><mode>): Ditto.
24813         (@pred_mul_<optab><mode>_scalar): Ditto.
24814         (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
24815         (*pred_<madd_nmsub><mode>_scalar): Ditto.
24816         (*pred_<macc_nmsac><mode>_scalar): Ditto.
24817         (*pred_mul_<optab><mode>_scalar): Ditto.
24818         (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
24819         (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
24820         (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
24821         (*pred_mul_<optab><mode>_extended_scalar): Ditto.
24822         (@pred_widen_mul_plus<su><mode>): Ditto.
24823         (@pred_widen_mul_plus<su><mode>_scalar): Ditto.
24824         (@pred_widen_mul_plussu<mode>): Ditto.
24825         (@pred_widen_mul_plussu<mode>_scalar): Ditto.
24826         (@pred_widen_mul_plusus<mode>_scalar): Ditto.
24828 2023-02-15  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
24830         * config/riscv/predicates.md (vector_mask_operand): Refine the codes.
24831         (vector_all_trues_mask_operand): New predicate.
24832         (vector_undef_operand): New predicate.
24833         (ltge_operator): New predicate.
24834         (comparison_except_ltge_operator): New predicate.
24835         (comparison_except_eqge_operator): New predicate.
24836         (ge_operator): New predicate.
24837         * config/riscv/riscv-v.cc (has_vi_variant_p): Add compare support.
24838         * config/riscv/riscv-vector-builtins-bases.cc (class icmp): New class.
24839         (BASE): Ditto.
24840         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24841         * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
24842         (vmsne): Ditto.
24843         (vmslt): Ditto.
24844         (vmsgt): Ditto.
24845         (vmsle): Ditto.
24846         (vmsge): Ditto.
24847         (vmsltu): Ditto.
24848         (vmsgtu): Ditto.
24849         (vmsleu): Ditto.
24850         (vmsgeu): Ditto.
24851         * config/riscv/riscv-vector-builtins-shapes.cc
24852         (struct return_mask_def): Adjust for compare support.
24853         * config/riscv/riscv-vector-builtins.cc
24854         (function_expander::use_compare_insn): New function.
24855         * config/riscv/riscv-vector-builtins.h
24856         (function_expander::add_integer_operand): Ditto.
24857         * config/riscv/riscv.cc (riscv_print_operand): Add compare support.
24858         * config/riscv/riscv.md: Add vector min/max attributes.
24859         * config/riscv/vector-iterators.md (xnor): New iterator.
24860         * config/riscv/vector.md (@pred_cmp<mode>): New pattern.
24861         (*pred_cmp<mode>): Ditto.
24862         (*pred_cmp<mode>_narrow): Ditto.
24863         (@pred_ltge<mode>): Ditto.
24864         (*pred_ltge<mode>): Ditto.
24865         (*pred_ltge<mode>_narrow): Ditto.
24866         (@pred_cmp<mode>_scalar): Ditto.
24867         (*pred_cmp<mode>_scalar): Ditto.
24868         (*pred_cmp<mode>_scalar_narrow): Ditto.
24869         (@pred_eqne<mode>_scalar): Ditto.
24870         (*pred_eqne<mode>_scalar): Ditto.
24871         (*pred_eqne<mode>_scalar_narrow): Ditto.
24872         (*pred_cmp<mode>_extended_scalar): Ditto.
24873         (*pred_cmp<mode>_extended_scalar_narrow): Ditto.
24874         (*pred_eqne<mode>_extended_scalar): Ditto.
24875         (*pred_eqne<mode>_extended_scalar_narrow): Ditto.
24876         (@pred_ge<mode>_scalar): Ditto.
24877         (@pred_<optab><mode>): Ditto.
24878         (@pred_n<optab><mode>): Ditto.
24879         (@pred_<optab>n<mode>): Ditto.
24880         (@pred_not<mode>): Ditto.
24882 2023-02-15  Martin Jambor  <mjambor@suse.cz>
24884         PR ipa/108679
24885         * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
24886         creation of non-scalar replacements even if IPA-CP knows their
24887         contents.
24889 2023-02-15  Jakub Jelinek  <jakub@redhat.com>
24891         PR target/108787
24892         PR target/103109
24893         * config/rs6000/rs6000.md (<u>maddditi4): Change into umaddditi4 only
24894         expander, change operand 3 to be TImode, emit maddlddi4 and
24895         umadddi4_highpart{,_le} with its low half and finally add the high
24896         half to the result.
24898 2023-02-15  Martin Liska  <mliska@suse.cz>
24900         * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
24902 2023-02-15  Richard Biener  <rguenther@suse.de>
24904         * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
24905         for with_poison and alias worklist to it.
24906         (sanitize_asan_mark_poison): Likewise.
24908 2023-02-15  Richard Biener  <rguenther@suse.de>
24910         PR target/108738
24911         * config/i386/i386-features.cc (scalar_chain::add_to_queue):
24912         Combine bitmap test and set.
24913         (scalar_chain::add_insn): Likewise.
24914         (scalar_chain::analyze_register_chain): Remove redundant
24915         attempt to add to queue and instead strengthen assert.
24916         Sink common attempts to mark the def dual-mode.
24917         (scalar_chain::add_to_queue): Remove redundant insn bitmap
24918         check.
24920 2023-02-15  Richard Biener  <rguenther@suse.de>
24922         PR target/108738
24923         * config/i386/i386-features.cc (convert_scalars_to_vector):
24924         Switch candidates bitmaps to tree view before building the chains.
24926 2023-02-15  Hans-Peter Nilsson  <hp@axis.com>
24928         * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
24929         "failure trying to reload" call.
24931 2023-02-15  Hans-Peter Nilsson  <hp@axis.com>
24933         * gdbinit.in (phrs): New command.
24934         * sel-sched-dump.cc (debug_hard_reg_set): Remove debug-function.
24935         * ira-color.cc (debug_hard_reg_set): New, calling print_hard_reg_set.
24937 2023-02-14  David Faust  <david.faust@oracle.com>
24939         PR target/108790
24940         * config/bpf/constraints.md (q): New memory constraint.
24941         * config/bpf/bpf.md (zero_extendhidi2): Use it here.
24942         (zero_extendqidi2): Likewise.
24943         (zero_extendsidi2): Likewise.
24944         (*mov<MM:mode>): Likewise.
24946 2023-02-14  Andrew Pinski  <apinski@marvell.com>
24948         PR tree-optimization/108355
24949         PR tree-optimization/96921
24950         * match.pd: Add pattern for "1 - bool_val".
24952 2023-02-14  Richard Biener  <rguenther@suse.de>
24954         * tree-ssa-sccvn.cc (vn_phi_compute_hash): Key skipping
24955         basic block index hashing on the availability of ->cclhs.
24956         (vn_phi_eq): Avoid re-doing sanity checks for CSE but
24957         rely on ->cclhs availability.
24958         (vn_phi_lookup): Set ->cclhs only when we are eventually
24959         going to CSE the PHI.
24960         (vn_phi_insert): Likewise.
24962 2023-02-14  Eric Botcazou  <ebotcazou@adacore.com>
24964         * gimplify.cc (gimplify_save_expr): Add missing guard.
24966 2023-02-14  Richard Biener  <rguenther@suse.de>
24968         PR tree-optimization/108782
24969         * tree-vect-loop.cc (vect_phi_first_order_recurrence_p):
24970         Make sure we're not vectorizing an inner loop.
24972 2023-02-14  Jakub Jelinek  <jakub@redhat.com>
24974         PR sanitizer/108777
24975         * params.opt (-param=asan-kernel-mem-intrinsic-prefix=): New param.
24976         * asan.h (asan_memfn_rtl): Declare.
24977         * asan.cc (asan_memfn_rtls): New variable.
24978         (asan_memfn_rtl): New function.
24979         * builtins.cc (expand_builtin): If
24980         param_asan_kernel_mem_intrinsic_prefix and function is
24981         kernel-{,hw}address sanitized, emit calls to
24982         __{,hw}asan_{memcpy,memmove,memset} rather than
24983         {memcpy,memmove,memset}.  Use sanitize_flags_p (SANITIZE_ADDRESS)
24984         instead of flag_sanitize & SANITIZE_ADDRESS to check if
24985         asan_intercepted_p functions shouldn't be expanded inline.
24987 2023-02-14  Richard Sandiford  <richard.sandiford@arm.com>
24989         PR tree-optimization/96373
24990         * tree-vect-stmts.cc (vectorizable_operation): Predicate trapping
24991         operations on the loop mask.  Reject partial vectors if this isn't
24992         possible.
24994 2023-02-13  Richard Sandiford  <richard.sandiford@arm.com>
24996         PR rtl-optimization/108681
24997         * lra-spills.cc (lra_final_code_change): Extend subreg replacement
24998         code to handle bare uses and clobbers.
25000 2023-02-13  Vladimir N. Makarov  <vmakarov@redhat.com>
25002         * ira.cc (ira_update_equiv_info_by_shuffle_insn): Clear equiv
25003         caller_save_p flag when clearing defined_p flag.
25004         (setup_reg_equiv): Ditto.
25005         * lra-constraints.cc (lra_constraints): Ditto.
25007 2023-02-13  Uroš Bizjak  <ubizjak@gmail.com>
25009         PR target/108516
25010         * config/i386/predicates.md (extr_register_operand):
25011         New special predicate.
25012         * config/i386/i386.md (*extv<mode>): Use extr_register_operand
25013         as operand 1 predicate.
25014         (*exzv<mode>): Ditto.
25015         (*extendqi<SWI24:mode>_ext_1): New insn pattern.
25017 2023-02-13  Richard Biener  <rguenther@suse.de>
25019         PR tree-optimization/28614
25020         * tree-ssa-sccvn.cc (can_track_predicate_on_edge): Avoid
25021         walking all edges in most cases.
25022         (vn_nary_op_insert_pieces_predicated): Avoid repeated
25023         calls to can_track_predicate_on_edge unless checking is
25024         enabled.
25025         (process_bb): Instead call it once here for each edge
25026         we register possibly multiple predicates on.
25028 2023-02-13  Richard Biener  <rguenther@suse.de>
25030         PR tree-optimization/108691
25031         * tree-cfg.cc (notice_special_calls): When the CFG is built
25032         honor gimple_call_ctrl_altering_p.
25033         * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
25034         temporarily if the call is not control-altering.
25035         * calls.cc (emit_call_1): Do not add REG_SETJMP if
25036         cfun->calls_setjmp is not set.  Do not alter cfun->calls_setjmp.
25038 2023-02-13  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
25040         PR target/108102
25041         * config/s390/s390.cc (s390_bb_fallthru_entry_likely): Remove.
25042         (struct s390_sched_state): Initialise to zero.
25043         (s390_sched_variable_issue): For better debuggability also emit
25044         the current side.
25045         (s390_sched_init): Unconditionally reset scheduler state.
25047 2023-02-13  Richard Sandiford  <richard.sandiford@arm.com>
25049         * ifcvt.h (noce_if_info::cond_inverted): New field.
25050         * ifcvt.cc (cond_move_convert_if_block): Swap the then and else
25051         values when cond_inverted is true.
25052         (noce_find_if_block): Allow the condition to be inverted when
25053         handling conditional moves.
25055 2023-02-13  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
25057         * config/s390/predicates.md (execute_operation): Use
25058         constrain_operands instead of extract_constrain_insn in order to
25059         determine wheter there exists a valid alternative.
25061 2023-02-13  Claudiu Zissulescu  <claziss@gmail.com>
25063         * common/config/arc/arc-common.cc (arc_option_optimization_table):
25064         Remove millicode from list.
25066 2023-02-13  Martin Liska  <mliska@suse.cz>
25068         * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
25070 2023-02-13  Richard Biener  <rguenther@suse.de>
25072         PR tree-optimization/106722
25073         * tree-ssa-dce.cc (mark_last_stmt_necessary): Return
25074         whether we marked a stmt.
25075         (mark_control_dependent_edges_necessary): When
25076         mark_last_stmt_necessary didn't mark any stmt make sure
25077         to mark its control dependent edges.
25078         (propagate_necessity): Likewise.
25080 2023-02-13  Kito Cheng  <kito.cheng@sifive.com>
25082         * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
25083         (DWARF_FRAME_REGISTERS): New.
25084         (DWARF_REG_TO_UNWIND_COLUMN): New.
25086 2023-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
25088         * doc/sourcebuild.texi: Remove (broken) direct reference to
25089         "The GNU configure and build system".
25091 2023-02-12  Jin Ma  <jinma@linux.alibaba.com>
25093         * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Change
25094         gen_add3_insn to gen_rtx_SET.
25095         (riscv_adjust_libcall_cfi_epilogue): Likewise.
25097 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25099         * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
25100         (class vnclip): Ditto.
25101         (BASE): Ditto.
25102         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25103         * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
25104         (vasub): Ditto.
25105         (vaaddu): Ditto.
25106         (vasubu): Ditto.
25107         (vsmul): Ditto.
25108         (vssra): Ditto.
25109         (vssrl): Ditto.
25110         (vnclipu): Ditto.
25111         (vnclip): Ditto.
25112         * config/riscv/vector-iterators.md (su): Add instruction.
25113         (aadd): Ditto.
25114         (vaalu): Ditto.
25115         * config/riscv/vector.md (@pred_<sat_op><mode>): New pattern.
25116         (@pred_<sat_op><mode>_scalar): Ditto.
25117         (*pred_<sat_op><mode>_scalar): Ditto.
25118         (*pred_<sat_op><mode>_extended_scalar): Ditto.
25119         (@pred_narrow_clip<v_su><mode>): Ditto.
25120         (@pred_narrow_clip<v_su><mode>_scalar): Ditto.
25122 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25124         * config/riscv/constraints.md (Wbr): Remove unused constraint.
25125         * config/riscv/predicates.md: Fix move operand predicate.
25126         * config/riscv/riscv-vector-builtins-bases.cc (class vnshift): New class.
25127         (class vncvt_x): Ditto.
25128         (class vmerge): Ditto.
25129         (class vmv_v): Ditto.
25130         (BASE): Ditto.
25131         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25132         * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
25133         (vsrl): Ditto.
25134         (vnsrl): Ditto.
25135         (vnsra): Ditto.
25136         (vncvt_x): Ditto.
25137         (vmerge): Ditto.
25138         (vmv_v): Ditto.
25139         * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
25140         (struct move_def): Ditto.
25141         (SHAPE): Ditto.
25142         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
25143         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): New variable.
25144         (DEF_RVV_WEXTU_OPS): Ditto
25145         * config/riscv/riscv-vector-builtins.def (x_x_w): Fix type for suffix.
25146         (v_v): Ditto.
25147         (v_x): Ditto.
25148         (x_w): Ditto.
25149         (x): Ditto.
25150         * config/riscv/riscv.cc (riscv_print_operand): Refine ASM printting rule.
25151         * config/riscv/vector-iterators.md (nmsac):New iterator.
25152         (nmsub): New iterator.
25153         * config/riscv/vector.md (@pred_merge<mode>): New pattern.
25154         (@pred_merge<mode>_scalar): New pattern.
25155         (*pred_merge<mode>_scalar): New pattern.
25156         (*pred_merge<mode>_extended_scalar): New pattern.
25157         (@pred_narrow_<optab><mode>): New pattern.
25158         (@pred_narrow_<optab><mode>_scalar): New pattern.
25159         (@pred_trunc<mode>): New pattern.
25161 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25163         * config/riscv/riscv-vector-builtins-bases.cc (class vmadc): New class.
25164         (class vmsbc): Ditto.
25165         (BASE): Define new class.
25166         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25167         * config/riscv/riscv-vector-builtins-functions.def (vmadc): New define.
25168         (vmsbc): Ditto.
25169         * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
25170         New class.
25171         (SHAPE): Ditto.
25172         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
25173         * config/riscv/riscv-vector-builtins.cc
25174         (function_expander::use_exact_insn): Adjust for new support
25175         * config/riscv/riscv-vector-builtins.h
25176         (function_base::has_merge_operand_p): New function.
25177         * config/riscv/vector-iterators.md: New iterator.
25178         * config/riscv/vector.md (@pred_madc<mode>): New pattern.
25179         (@pred_msbc<mode>): Ditto.
25180         (@pred_madc<mode>_scalar): Ditto.
25181         (@pred_msbc<mode>_scalar): Ditto.
25182         (*pred_madc<mode>_scalar): Ditto.
25183         (*pred_madc<mode>_extended_scalar): Ditto.
25184         (*pred_msbc<mode>_scalar): Ditto.
25185         (*pred_msbc<mode>_extended_scalar): Ditto.
25186         (@pred_madc<mode>_overflow): Ditto.
25187         (@pred_msbc<mode>_overflow): Ditto.
25188         (@pred_madc<mode>_overflow_scalar): Ditto.
25189         (@pred_msbc<mode>_overflow_scalar): Ditto.
25190         (*pred_madc<mode>_overflow_scalar): Ditto.
25191         (*pred_madc<mode>_overflow_extended_scalar): Ditto.
25192         (*pred_msbc<mode>_overflow_scalar): Ditto.
25193         (*pred_msbc<mode>_overflow_extended_scalar): Ditto.
25195 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25197         * config/riscv/riscv-protos.h (simm5_p): Add vadc/vsbc support.
25198         * config/riscv/riscv-v.cc (simm32_p): Ditto.
25199         * config/riscv/riscv-vector-builtins-bases.cc (class vadc): New class.
25200         (class vsbc): Ditto.
25201         (BASE): Ditto.
25202         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25203         * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
25204         (vsbc): Ditto.
25205         * config/riscv/riscv-vector-builtins-shapes.cc
25206         (struct no_mask_policy_def): Ditto.
25207         (SHAPE): Ditto.
25208         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
25209         * config/riscv/riscv-vector-builtins.cc
25210         (rvv_arg_type_info::get_base_vector_type): Add vadc/vsbc support.
25211         (rvv_arg_type_info::get_tree_type): Ditto.
25212         (function_expander::use_exact_insn): Ditto.
25213         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
25214         (function_base::use_mask_predication_p): New function.
25215         * config/riscv/vector-iterators.md: New iterator.
25216         * config/riscv/vector.md (@pred_adc<mode>): New pattern.
25217         (@pred_sbc<mode>): Ditto.
25218         (@pred_adc<mode>_scalar): Ditto.
25219         (@pred_sbc<mode>_scalar): Ditto.
25220         (*pred_adc<mode>_scalar): Ditto.
25221         (*pred_adc<mode>_extended_scalar): Ditto.
25222         (*pred_sbc<mode>_scalar): Ditto.
25223         (*pred_sbc<mode>_extended_scalar): Ditto.
25225 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25227         * config/riscv/vector.md: use "zero" reg.
25229 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25231         * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
25232         class.
25233         (class vwmulsu): Ditto.
25234         (class vwcvt): Ditto.
25235         (BASE): Add integer widening support.
25236         * config/riscv/riscv-vector-builtins-bases.h: Ditto
25237         * config/riscv/riscv-vector-builtins-functions.def (vwadd): New class.
25238         (vwsub): New class.
25239         (vwmul): New class.
25240         (vwmulu): New class.
25241         (vwmulsu): New class.
25242         (vwaddu): New class.
25243         (vwsubu): New class.
25244         (vwcvt_x): New class.
25245         (vwcvtu_x): New class.
25246         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): New
25247         class.
25248         (struct widen_alu_def): New class.
25249         (SHAPE): New class.
25250         * config/riscv/riscv-vector-builtins-shapes.h: New class.
25251         * config/riscv/riscv-vector-builtins.cc
25252         (rvv_arg_type_info::get_base_vector_type): Add integer widening support.
25253         (rvv_arg_type_info::get_tree_type): Ditto.
25254         * config/riscv/riscv-vector-builtins.def (x_x_v): Change into "x_v"
25255         (x_v): Ditto.
25256         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
25257         widening support.
25258         * config/riscv/riscv-vsetvl.cc (change_insn): Fix reg_equal use bug.
25259         * config/riscv/riscv.h (X0_REGNUM): New constant.
25260         * config/riscv/vector-iterators.md: New iterators.
25261         * config/riscv/vector.md
25262         (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>): New
25263         pattern.
25264         (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
25265         Ditto.
25266         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
25267         (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
25268         Ditto.
25269         (@pred_widen_mulsu<mode>): Ditto.
25270         (@pred_widen_mulsu<mode>_scalar): Ditto.
25271         (@pred_<optab><mode>): Ditto.
25273 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25274             kito-cheng  <kito.cheng@sifive.com>
25276         * common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
25277         * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
25278         (BASE): Ditto.
25279         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25280         * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
25281         API support.
25282         (vmulhu): Ditto.
25283         (vmulhsu): Ditto.
25284         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
25285         New macro.
25286         (DEF_RVV_FULL_V_U_OPS): Ditto.
25287         (vint8mf8_t): Ditto.
25288         (vint8mf4_t): Ditto.
25289         (vint8mf2_t): Ditto.
25290         (vint8m1_t): Ditto.
25291         (vint8m2_t): Ditto.
25292         (vint8m4_t): Ditto.
25293         (vint8m8_t): Ditto.
25294         (vint16mf4_t): Ditto.
25295         (vint16mf2_t): Ditto.
25296         (vint16m1_t): Ditto.
25297         (vint16m2_t): Ditto.
25298         (vint16m4_t): Ditto.
25299         (vint16m8_t): Ditto.
25300         (vint32mf2_t): Ditto.
25301         (vint32m1_t): Ditto.
25302         (vint32m2_t): Ditto.
25303         (vint32m4_t): Ditto.
25304         (vint32m8_t): Ditto.
25305         (vint64m1_t): Ditto.
25306         (vint64m2_t): Ditto.
25307         (vint64m4_t): Ditto.
25308         (vint64m8_t): Ditto.
25309         (vuint8mf8_t): Ditto.
25310         (vuint8mf4_t): Ditto.
25311         (vuint8mf2_t): Ditto.
25312         (vuint8m1_t): Ditto.
25313         (vuint8m2_t): Ditto.
25314         (vuint8m4_t): Ditto.
25315         (vuint8m8_t): Ditto.
25316         (vuint16mf4_t): Ditto.
25317         (vuint16mf2_t): Ditto.
25318         (vuint16m1_t): Ditto.
25319         (vuint16m2_t): Ditto.
25320         (vuint16m4_t): Ditto.
25321         (vuint16m8_t): Ditto.
25322         (vuint32mf2_t): Ditto.
25323         (vuint32m1_t): Ditto.
25324         (vuint32m2_t): Ditto.
25325         (vuint32m4_t): Ditto.
25326         (vuint32m8_t): Ditto.
25327         (vuint64m1_t): Ditto.
25328         (vuint64m2_t): Ditto.
25329         (vuint64m4_t): Ditto.
25330         (vuint64m8_t): Ditto.
25331         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FULL_V_I_OPS): Ditto.
25332         (DEF_RVV_FULL_V_U_OPS): Ditto.
25333         (check_required_extensions): Add vmulh support.
25334         (rvv_arg_type_info::get_tree_type): Ditto.
25335         * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_FULL_V): Ditto.
25336         (enum rvv_base_type): Ditto.
25337         * config/riscv/riscv.opt: Add 'V' extension flag.
25338         * config/riscv/vector-iterators.md (su): New iterator.
25339         * config/riscv/vector.md (@pred_mulh<v_su><mode>): New pattern.
25340         (@pred_mulh<v_su><mode>_scalar): Ditto.
25341         (*pred_mulh<v_su><mode>_scalar): Ditto.
25342         (*pred_mulh<v_su><mode>_extended_scalar): Ditto.
25344 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25346         * config/riscv/iterators.md: Add sign_extend/zero_extend.
25347         * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
25348         (BASE): Ditto.
25349         * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
25350         * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
25351         define.
25352         (vzext): Ditto.
25353         * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Adjust
25354         for vsext/vzext support.
25355         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTI_OPS): New
25356         macro define.
25357         (DEF_RVV_QEXTI_OPS): Ditto.
25358         (DEF_RVV_OEXTI_OPS): Ditto.
25359         (DEF_RVV_WEXTU_OPS): Ditto.
25360         (DEF_RVV_QEXTU_OPS): Ditto.
25361         (DEF_RVV_OEXTU_OPS): Ditto.
25362         (vint16mf4_t): Ditto.
25363         (vint16mf2_t): Ditto.
25364         (vint16m1_t): Ditto.
25365         (vint16m2_t): Ditto.
25366         (vint16m4_t): Ditto.
25367         (vint16m8_t): Ditto.
25368         (vint32mf2_t): Ditto.
25369         (vint32m1_t): Ditto.
25370         (vint32m2_t): Ditto.
25371         (vint32m4_t): Ditto.
25372         (vint32m8_t): Ditto.
25373         (vint64m1_t): Ditto.
25374         (vint64m2_t): Ditto.
25375         (vint64m4_t): Ditto.
25376         (vint64m8_t): Ditto.
25377         (vuint16mf4_t): Ditto.
25378         (vuint16mf2_t): Ditto.
25379         (vuint16m1_t): Ditto.
25380         (vuint16m2_t): Ditto.
25381         (vuint16m4_t): Ditto.
25382         (vuint16m8_t): Ditto.
25383         (vuint32mf2_t): Ditto.
25384         (vuint32m1_t): Ditto.
25385         (vuint32m2_t): Ditto.
25386         (vuint32m4_t): Ditto.
25387         (vuint32m8_t): Ditto.
25388         (vuint64m1_t): Ditto.
25389         (vuint64m2_t): Ditto.
25390         (vuint64m4_t): Ditto.
25391         (vuint64m8_t): Ditto.
25392         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): Ditto.
25393         (DEF_RVV_QEXTI_OPS): Ditto.
25394         (DEF_RVV_OEXTI_OPS): Ditto.
25395         (DEF_RVV_WEXTU_OPS): Ditto.
25396         (DEF_RVV_QEXTU_OPS): Ditto.
25397         (DEF_RVV_OEXTU_OPS): Ditto.
25398         (rvv_arg_type_info::get_base_vector_type): Add sign_exted/zero_extend
25399         support.
25400         (rvv_arg_type_info::get_tree_type): Ditto.
25401         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
25402         * config/riscv/vector-iterators.md (z): New attribute.
25403         * config/riscv/vector.md (@pred_<optab><mode>_vf2): New pattern.
25404         (@pred_<optab><mode>_vf4): Ditto.
25405         (@pred_<optab><mode>_vf8): Ditto.
25407 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25409         * config/riscv/iterators.md: Add saturating Addition && Subtraction.
25410         * config/riscv/riscv-v.cc (has_vi_variant_p): Ditto.
25411         * config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto.
25412         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25413         * config/riscv/riscv-vector-builtins-functions.def (vsadd): New def.
25414         (vssub): Ditto.
25415         (vsaddu): Ditto.
25416         (vssubu): Ditto.
25417         * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
25418         support.
25419         (sll.vv): Ditto.
25420         (%3,%v4): Ditto.
25421         (%3,%4): Ditto.
25422         * config/riscv/vector.md (@pred_<optab><mode>): New pattern.
25423         (@pred_<optab><mode>_scalar): New pattern.
25424         (*pred_<optab><mode>_scalar): New pattern.
25425         (*pred_<optab><mode>_extended_scalar): New pattern.
25427 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25429         * config/riscv/iterators.md: Add neg and not.
25430         * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
25431         (BASE): Ditto.
25432         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25433         * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
25434         into alu.
25435         (vsub): Ditto.
25436         (vand): Ditto.
25437         (vor): Ditto.
25438         (vxor): Ditto.
25439         (vsll): Ditto.
25440         (vsra): Ditto.
25441         (vsrl): Ditto.
25442         (vmin): Ditto.
25443         (vmax): Ditto.
25444         (vminu): Ditto.
25445         (vmaxu): Ditto.
25446         (vmul): Ditto.
25447         (vdiv): Ditto.
25448         (vrem): Ditto.
25449         (vdivu): Ditto.
25450         (vremu): Ditto.
25451         (vrsub): Ditto.
25452         (vneg): Ditto.
25453         (vnot): Ditto.
25454         * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
25455         (struct alu_def): Ditto.
25456         (SHAPE): Ditto.
25457         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
25458         * config/riscv/riscv-vector-builtins.cc: Support unary C/C/++.
25459         * config/riscv/vector-iterators.md: New iterator.
25460         * config/riscv/vector.md (@pred_<optab><mode>): New pattern
25462 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25464         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
25466 2023-02-11  Jakub Jelinek  <jakub@redhat.com>
25468         PR ipa/108605
25469         * ipa-cp.cc (ipa_agg_value_from_jfunc): Return NULL_TREE also if
25470         item->offset bit position is too large to be representable as
25471         unsigned int byte position.
25473 2023-02-11  Gerald Pfeifer  <gerald@pfeifer.com>
25475         * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
25477 2023-02-10  Vladimir N. Makarov  <vmakarov@redhat.com>
25479         * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
25480         valid_combine only when ira_use_lra_p is true.
25482 2023-02-10  Vladimir N. Makarov  <vmakarov@redhat.com>
25484         * params.opt (ira-simple-lra-insn-threshold): Add new param.
25485         * ira.cc (ira): Use the param to switch on simple LRA.
25487 2023-02-10  Andrew MacLeod  <amacleod@redhat.com>
25489         PR tree-optimization/108687
25490         * gimple-range-cache.cc (ranger_cache::range_on_edge): Revert
25491         back to RFD_NONE mode for calculations.
25492         (ranger_cache::propagate_cache): Call the internal edge range API
25493         with RFD_READ_ONLY instead of changing the external routine.
25495 2023-02-10  Andrew MacLeod  <amacleod@redhat.com>
25497         PR tree-optimization/108520
25498         * gimple-range-infer.cc (check_assume_func): Invoke
25499         gimple_range_global directly instead using global_range_query.
25500         * value-query.cc (get_range_global): Add function context and
25501         avoid calling nonnull_arg_p if not cfun.
25502         (gimple_range_global): Add function context pointer.
25503         * value-query.h (imple_range_global): Add function context.
25505 2023-02-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25507         * config/riscv/constraints.md (Wdm): Adjust constraint.
25508         (Wbr): New constraint.
25509         * config/riscv/predicates.md (reg_or_int_operand): New predicate.
25510         * config/riscv/riscv-protos.h (emit_pred_op): Remove function.
25511         (emit_vlmax_op): New function.
25512         (emit_nonvlmax_op): Ditto.
25513         (simm32_p): Ditto.
25514         (neg_simm5_p): Ditto.
25515         (has_vi_variant_p): Ditto.
25516         * config/riscv/riscv-v.cc (emit_pred_op): Adjust function.
25517         (emit_vlmax_op): New function.
25518         (emit_nonvlmax_op): Ditto.
25519         (expand_const_vector): Adjust function.
25520         (legitimize_move): Ditto.
25521         (simm32_p): New function.
25522         (simm5_p): Ditto.
25523         (neg_simm5_p): Ditto.
25524         (has_vi_variant_p): Ditto.
25525         * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
25526         (BASE): Ditto.
25527         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25528         * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
25529         unsigned cases.
25530         (vmax): Ditto.
25531         (vminu): Remove signed cases.
25532         (vmaxu): Ditto.
25533         (vdiv): Remove unsigned cases.
25534         (vrem): Ditto.
25535         (vdivu): Remove signed cases.
25536         (vremu): Ditto.
25537         (vadd): Adjust.
25538         (vsub): Ditto.
25539         (vrsub): New class.
25540         (vand): Adjust.
25541         (vor): Ditto.
25542         (vxor): Ditto.
25543         (vmul): Ditto.
25544         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_U_OPS): New macro.
25545         * config/riscv/riscv.h: change VL/VTYPE as fixed reg.
25546         * config/riscv/vector-iterators.md: New iterators.
25547         * config/riscv/vector.md (@pred_broadcast<mode>): Adjust pattern for vx
25548         support.
25549         (@pred_<optab><mode>_scalar): New pattern.
25550         (@pred_sub<mode>_reverse_scalar): Ditto.
25551         (*pred_<optab><mode>_scalar): Ditto.
25552         (*pred_<optab><mode>_extended_scalar): Ditto.
25553         (*pred_sub<mode>_reverse_scalar): Ditto.
25554         (*pred_sub<mode>_extended_reverse_scalar): Ditto.
25556 2023-02-10  Richard Biener  <rguenther@suse.de>
25558         PR tree-optimization/108724
25559         * tree-vect-stmts.cc (vectorizable_operation): Avoid
25560         using word_mode vectors when vector lowering will
25561         decompose them to elementwise operations.
25563 2023-02-10  Jakub Jelinek  <jakub@redhat.com>
25565         Revert:
25566         2023-02-09  Martin Liska  <mliska@suse.cz>
25568         PR target/100758
25569         * doc/extend.texi: Document that the function
25570         does not work correctly for old VIA processors.
25572 2023-02-10  Andrew Pinski  <apinski@marvell.com>
25573             Andrew Macleod   <amacleod@redhat.com>
25575         PR tree-optimization/108684
25576         * tree-ssa-dce.cc (simple_dce_from_worklist):
25577         Check all ssa names and not just non-vdef ones
25578         before accepting the inline-asm.
25579         Call unlink_stmt_vdef on the statement before
25580         removing it.
25582 2023-02-09  Vladimir N. Makarov  <vmakarov@redhat.com>
25584         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
25585         * ira.cc (validate_equiv_mem): Check memref address variance.
25586         (no_equiv): Clear caller_save_p flag.
25587         (update_equiv_regs): Define caller save equivalence for
25588         valid_combine.
25589         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
25590         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
25591         call_save_p.  Use caller save equivalence depending on the arg.
25592         (split_reg): Adjust the call.
25594 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
25596         PR target/100758
25597         * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Formatting fixes.
25598         (cpu_indicator_init): Call get_available_features for all CPUs with
25599         max_level >= 1, rather than just Intel, AMD or Zhaoxin.  Formatting
25600         fixes.
25602 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
25604         PR tree-optimization/108688
25605         * match.pd (bit_field_ref [bit_insert]): Simplify BIT_FIELD_REF
25606         of BIT_INSERT_EXPR extracting exactly all inserted bits even
25607         when without mode precision.  Formatting fixes.
25609 2023-02-09  Andrew Pinski  <apinski@marvell.com>
25611         PR tree-optimization/108688
25612         * match.pd (bit_field_ref [bit_insert]): Avoid generating
25613         BIT_FIELD_REFs of non-mode-precision integral operands.
25615 2023-02-09  Martin Liska  <mliska@suse.cz>
25617         PR target/100758
25618         * doc/extend.texi: Document that the function
25619         does not work correctly for old VIA processors.
25621 2023-02-09  Andreas Schwab  <schwab@suse.de>
25623         * lto-wrapper.cc (merge_and_complain): Handle
25624         -funwind-tables and -fasynchronous-unwind-tables.
25625         (append_compiler_options): Likewise.
25627 2023-02-09  Richard Biener  <rguenther@suse.de>
25629         PR tree-optimization/26854
25630         * tree-into-ssa.cc (update_ssa): Turn blocks_to_update to tree
25631         view around insert_updated_phi_nodes_for.
25632         * tree-ssa-alias.cc (maybe_skip_until): Allocate visited bitmap
25633         in tree view.
25634         (walk_aliased_vdefs_1): Likewise.
25636 2023-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
25638         * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
25640 2023-02-08  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
25642         PR target/108505
25643         * config.gcc (tm_mlib_file): Define new variable.
25645 2023-02-08  Jakub Jelinek  <jakub@redhat.com>
25647         PR tree-optimization/108692
25648         * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is
25649         widened_code which is different from code, don't call
25650         vect_look_through_possible_promotion but instead just check op is
25651         SSA_NAME with integral type for which vect_is_simple_use is true
25652         and call set_op on this_unprom.
25654 2023-02-08  Andrea Corallo  <andrea.corallo@arm.com>
25656         * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
25657         declaration.
25658         * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
25659         definition.
25660         * config/aarch64/aarch64.opt (aarch64_ra_sign_key): Rename
25661         to 'aarch_ra_sign_key'.
25662         * config/arm/aarch-common.cc (aarch_ra_sign_key): Remove
25663         declaration.
25664         * config/arm/arm-protos.h (aarch_ra_sign_key): Likewise.
25665         * config/arm/arm.cc (enum aarch_key_type): Remove definition.
25666         * config/arm/arm.opt: Define.
25668 2023-02-08  Richard Sandiford  <richard.sandiford@arm.com>
25670         PR tree-optimization/108316
25671         * tree-vect-stmts.cc (get_load_store_type): When using
25672         internal functions for gather/scatter, make sure that the type
25673         of the offset argument is consistent with the offset vector type.
25675 2023-02-08  Vladimir N. Makarov  <vmakarov@redhat.com>
25677         Revert:
25678         2023-02-07  Vladimir N. Makarov  <vmakarov@redhat.com>
25680         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
25681         * ira.cc (validate_equiv_mem): Check memref address variance.
25682         (update_equiv_regs): Define caller save equivalence for
25683         valid_combine.
25684         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
25685         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
25686         call_save_p.  Use caller save equivalence depending on the arg.
25687         (split_reg): Adjust the call.
25689 2023-02-08  Jakub Jelinek  <jakub@redhat.com>
25691         * tree.def (SAD_EXPR): Remove outdated comment about missing
25692         WIDEN_MINUS_EXPR.
25694 2023-02-07  Marek Polacek  <polacek@redhat.com>
25696         * doc/invoke.texi: Update -fchar8_t documentation.
25698 2023-02-07  Vladimir N. Makarov  <vmakarov@redhat.com>
25700         * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
25701         * ira.cc (validate_equiv_mem): Check memref address variance.
25702         (update_equiv_regs): Define caller save equivalence for
25703         valid_combine.
25704         (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
25705         * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
25706         call_save_p.  Use caller save equivalence depending on the arg.
25707         (split_reg): Adjust the call.
25709 2023-02-07  Richard Biener  <rguenther@suse.de>
25711         PR tree-optimization/26854
25712         * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
25713         instead of immediate uses.
25715 2023-02-07  Jakub Jelinek  <jakub@redhat.com>
25717         PR tree-optimization/106923
25718         * ipa-split.cc (execute_split_functions): Don't split returns_twice
25719         functions.
25721 2023-02-07  Jakub Jelinek  <jakub@redhat.com>
25723         PR tree-optimization/106433
25724         * cgraph.cc (set_const_flag_1): Recurse on simd clones too.
25725         (cgraph_node::set_pure_flag): Call set_pure_flag_1 on simd clones too.
25727 2023-02-07  Jan Hubicka  <jh@suse.cz>
25729         * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
25730         for znver4.
25732 2023-02-06  Andrew Stubbs  <ams@codesourcery.com>
25734         * config/gcn/mkoffload.cc (gcn_stack_size): New global variable.
25735         (process_asm): Create a constructor for GCN_STACK_SIZE.
25736         (main): Parse the -mstack-size option.
25738 2023-02-06  Alex Coplan  <alex.coplan@arm.com>
25740         PR target/104921
25741         * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
25742         Use correct constraint for operand 3.
25744 2023-02-06  Martin Jambor  <mjambor@suse.cz>
25746         * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
25748 2023-02-06  Xi Ruoyao  <xry111@xry111.site>
25750         * config/loongarch/loongarch.md (bytepick_w_ashift_amount):
25751         New define_int_iterator.
25752         (bytepick_d_ashift_amount): Likewise.
25753         (bytepick_imm): New define_int_attr.
25754         (bytepick_w_lshiftrt_amount): Likewise.
25755         (bytepick_d_lshiftrt_amount): Likewise.
25756         (bytepick_w_<bytepick_imm>): New define_insn template.
25757         (bytepick_w_<bytepick_imm>_extend): Likewise.
25758         (bytepick_d_<bytepick_imm>): Likewise.
25759         (bytepick_w): Remove unused define_insn.
25760         (bytepick_d): Likewise.
25761         (UNSPEC_BYTEPICK_W): Remove unused unspec.
25762         (UNSPEC_BYTEPICK_D): Likewise.
25763         * config/loongarch/predicates.md (const_0_to_3_operand):
25764         Remove unused define_predicate.
25765         (const_0_to_7_operand): Likewise.
25767 2023-02-06  Jakub Jelinek  <jakub@redhat.com>
25769         PR tree-optimization/108655
25770         * ubsan.cc (sanitize_unreachable_fn): For -funreachable-traps
25771         or -fsanitize=unreachable -fsanitize-trap=unreachable return
25772         BUILT_IN_UNREACHABLE_TRAP decl rather than BUILT_IN_TRAP.
25774 2023-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
25776         * doc/install.texi (Specific): Remove PW32.
25778 2023-02-03  Jakub Jelinek  <jakub@redhat.com>
25780         PR tree-optimization/108647
25781         * range-op.cc (operator_equal::op1_range,
25782         operator_not_equal::op1_range): Don't test op2 bound
25783         equality if op2.undefined_p (), instead set_varying.
25784         (operator_lt::op1_range, operator_le::op1_range,
25785         operator_gt::op1_range, operator_ge::op1_range): Return false if
25786         op2.undefined_p ().
25787         (operator_lt::op2_range, operator_le::op2_range,
25788         operator_gt::op2_range, operator_ge::op2_range): Return false if
25789         op1.undefined_p ().
25791 2023-02-03  Aldy Hernandez  <aldyh@redhat.com>
25793         PR tree-optimization/108639
25794         * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
25795         widest_int.
25796         (irange::operator==): Same.
25798 2023-02-03  Aldy Hernandez  <aldyh@redhat.com>
25800         PR tree-optimization/108647
25801         * range-op-float.cc (foperator_lt::op1_range): Handle undefined ranges.
25802         (foperator_lt::op2_range): Same.
25803         (foperator_le::op1_range): Same.
25804         (foperator_le::op2_range): Same.
25805         (foperator_gt::op1_range): Same.
25806         (foperator_gt::op2_range): Same.
25807         (foperator_ge::op1_range): Same.
25808         (foperator_ge::op2_range): Same.
25809         (foperator_unordered_lt::op1_range): Same.
25810         (foperator_unordered_lt::op2_range): Same.
25811         (foperator_unordered_le::op1_range): Same.
25812         (foperator_unordered_le::op2_range): Same.
25813         (foperator_unordered_gt::op1_range): Same.
25814         (foperator_unordered_gt::op2_range): Same.
25815         (foperator_unordered_ge::op1_range): Same.
25816         (foperator_unordered_ge::op2_range): Same.
25818 2023-02-03  Andrew MacLeod  <amacleod@redhat.com>
25820         PR tree-optimization/107570
25821         * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
25823 2023-02-03  Gaius Mulley  <gaiusmod2@gmail.com>
25825         * doc/gm2.texi (Internals): Remove from menu.
25826         (Using): Comment out ifnohtml conditional.
25827         (Documentation): Use gcc url.
25828         (License): Node simplified.
25829         (Copying): New node.  Include gpl_v3_without_node.
25830         (Contributing): Node simplified.
25831         (Internals): Commented out.
25832         (Libraries): Node simplified.
25833         (Indices): Ditto.
25834         (Contents): Ditto.
25835         (Functions): Ditto.
25837 2023-02-03  Christophe Lyon  <christophe.lyon@arm.com>
25839         * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
25840         attribute.
25841         (mve_vqshluq_m_n_s<mode>): Likewise.
25842         (mve_vshlq_m_<supf><mode>): Likewise.
25843         (mve_vsriq_m_n_<supf><mode>): Likewise.
25844         (mve_vsubq_m_<supf><mode>): Likewise.
25846 2023-02-03  Martin Jambor  <mjambor@suse.cz>
25848         PR ipa/108384
25849         * ipa-sra.cc (push_param_adjustments_for_index): Remove a size check
25850         when comparing to an IPA-CP value.
25851         (dump_list_of_param_indices): New function.
25852         (adjust_parameter_descriptions): Check for mismatching IPA-CP values.
25853         Dump removed candidates using dump_list_of_param_indices.
25854         * ipa-param-manipulation.cc
25855         (ipa_param_body_adjustments::modify_expression): Add assert checking
25856         sizes of a VIEW_CONVERT_EXPR will match.
25857         (ipa_param_body_adjustments::modify_assignment): Likewise.
25859 2023-02-03  Monk Chiang  <monk.chiang@sifive.com>
25861         * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
25862         * config/riscv/riscv.cc: Ditto.
25864 2023-02-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25866         * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
25867         (sll.vv): Ditto.
25868         (%3,%4): Ditto.
25869         (%3,%v4): Ditto.
25870         * config/riscv/vector.md: Ditto.
25872 2023-02-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
25874         * config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate.
25875         * config/riscv/riscv-vector-builtins-bases.cc: New class.
25876         * config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto.
25877         (vsra): Ditto.
25878         (vsrl): Ditto.
25879         * config/riscv/riscv-vector-builtins.cc: Ditto.
25880         * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
25882 2023-02-02  Iain Sandoe  <iain@sandoe.co.uk>
25884         * toplev.cc (toplev::main): Only print the version information header
25885         from toplevel main().
25887 2023-02-02  Paul-Antoine Arras  <pa@codesourcery.com>
25889         * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
25890         cond_{ashl|ashr|lshr}
25892 2023-02-02  Richard Sandiford  <richard.sandiford@arm.com>
25894         PR rtl-optimization/108086
25895         * rtl-ssa/insns.h (insn_info): Make m_num_defs a full unsigned int.
25896         Adjust size-related commentary accordingly.
25898 2023-02-02  Richard Sandiford  <richard.sandiford@arm.com>
25900         PR rtl-optimization/108508
25901         * rtl-ssa/accesses.cc (function_info::split_clobber_group): When
25902         the splay tree search gives the first clobber in the second group,
25903         make sure that the root of the first clobber group is updated
25904         correctly.  Enter the new clobber group into the definition splay
25905         tree.
25907 2023-02-02  Jin Ma  <jinma@linux.alibaba.com>
25909         * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
25910         Fix finding best match score.
25912 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
25914         PR debug/106746
25915         PR rtl-optimization/108463
25916         PR target/108484
25917         * cselib.cc (cselib_current_insn): Move declaration earlier.
25918         (cselib_hasher::equal): For debug only locs, temporarily override
25919         cselib_current_insn to their l->setting_insn for the
25920         rtx_equal_for_cselib_1 call, so that unsuccessful comparisons don't
25921         promote some debug locs.
25922         * sched-deps.cc (sched_analyze_2) <case MEM>: For MEMs in DEBUG_INSNs
25923         when using cselib call cselib_lookup_from_insn on the address but
25924         don't substitute it.
25926 2023-02-02  Richard Biener  <rguenther@suse.de>
25928         PR middle-end/108625
25929         * genmatch.cc (expr::gen_transform): Also disallow resimplification
25930         from pushing to lseq with force_leaf.
25931         (dt_simplify::gen_1): Likewise.
25933 2023-02-02  Andrew Stubbs  <ams@codesourcery.com>
25935         * config/gcn/gcn-run.cc: Include libgomp-gcn.h.
25936         (struct kernargs): Replace the common content with kernargs_abi.
25937         (struct heap): Delete.
25938         (main): Read GCN_STACK_SIZE envvar.
25939         Allocate space for the device stacks.
25940         Write the new kernargs fields.
25941         * config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt.
25942         (default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and
25943         PRIVATE_SEGMENT_WAVE_OFFSET_ARG.
25944         (gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content.
25945         (gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top.
25946         Set up the stacks from the values in the kernargs, not private.
25947         (gcn_expand_builtin_1): Match the stack configuration in the prologue.
25948         (gcn_hsa_declare_function_name): Turn off the private segment.
25949         (gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed.
25950         * config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register.
25951         * config/gcn/gcn.opt (mstack-size): Change the description.
25953 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
25955         PR target/108443
25956         * config/arm/arm.h (VALID_MVE_PRED_MODE): Add V2QI.
25957         * config/arm/arm.cc (thumb2_legitimate_address_p): Use HImode for
25958         addressing MVE predicate modes.
25959         (mve_bool_vec_to_const): Change to represent correct MVE predicate
25960         format.
25961         (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
25962         modes.
25963         (arm_vector_mode_supported_p): Likewise.
25964         (arm_mode_to_pred_mode): Add V2QI.
25965         * config/arm/arm-builtins.cc (UNOP_PRED_UNONE_QUALIFIERS): New
25966         qualifier.
25967         (UNOP_PRED_PRED_QUALIFIERS): New qualifier
25968         (BINOP_PRED_UNONE_PRED_QUALIFIERS): New qualifier.
25969         (v2qi_UP): New macro.
25970         (v4bi_UP): New macro.
25971         (v8bi_UP): New macro.
25972         (v16bi_UP): New macro.
25973         (arm_expand_builtin_args): Make it able to expand the new predicate
25974         modes.
25975         * config/arm/arm-modes.def (V2QI): New mode.
25976         * config/arm/arm-simd-builtin-types.def (Pred1x16_t, Pred2x8_t
25977         Pred4x4_t): Remove unused predicate builtin types.
25978         * config/arm/arm_mve.h (__arm_vctp16q, __arm_vctp32q, __arm_vctp64q,
25979         __arm_vctp8q, __arm_vpnot, __arm_vctp8q_m, __arm_vctp64q_m,
25980         __arm_vctp32q_m, __arm_vctp16q_m): Use predicate modes.
25981         * config/arm/arm_mve_builtins.def (vctp16q, vctp32q, vctp64q, vctp8q,
25982         vpnot, vctp8q_m, vctp16q_m, vctp32q_m, vctp64q_m): Likewise.
25983         * config/arm/constraints.md (DB): Check for VALID_MVE_PRED_MODE instead
25984         of MODE_VECTOR_BOOL.
25985         * config/arm/iterators.md (MVE_7, MVE_7_HI): Add V2QI
25986         (MVE_VPRED): Likewise.
25987         (MVE_vpred): Add V2QI and map upper case predicate modes to lower case.
25988         (MVE_vctp): New mode attribute.
25989         (mode1): Remove.
25990         (VCTPQ): Remove.
25991         (VCTPQ_M): Remove.
25992         * config/arm/mve.md (mve_vctp<mode1>qhi): Rename this...
25993         (mve_vctp<MVE_vctp>q<MVE_vpred>): ... to this. And use new mode
25994         attributes.
25995         (mve_vpnothi): Rename this...
25996         (mve_vpnotv16bi): ... to this.
25997         (mve_vctp<mode1>q_mhi): Rename this...
25998         (mve_vctp<MVE_vctp>q_m<MVE_vpred>):... to this.
25999         (mve_vldrdq_gather_base_z_<supf>v2di,
26000         mve_vldrdq_gather_offset_z_<supf>v2di,
26001         mve_vldrdq_gather_shifted_offset_z_<supf>v2di,
26002         mve_vstrdq_scatter_base_p_<supf>v2di,
26003         mve_vstrdq_scatter_offset_p_<supf>v2di,
26004         mve_vstrdq_scatter_offset_p_<supf>v2di_insn,
26005         mve_vstrdq_scatter_shifted_offset_p_<supf>v2di,
26006         mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn,
26007         mve_vstrdq_scatter_base_wb_p_<supf>v2di,
26008         mve_vldrdq_gather_base_wb_z_<supf>v2di,
26009         mve_vldrdq_gather_base_nowb_z_<supf>v2di,
26010         mve_vldrdq_gather_base_wb_z_<supf>v2di_insn):  Use V2QI insead of HI for
26011         predicates.
26012         * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
26013         these...
26014         (VCTP): ... with this.
26015         (VCTP8Q_M, VCTP16Q_M, VCTP32Q_M, VCTP64Q_M): Replace these...
26016         (VCTP_M): ... with this.
26017         * config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Use
26018         VALID_MVE_PRED_MODE instead of checking for MODE_VECTOR_BOOL class.
26020 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
26022         PR target/107674
26023         * config/arm/arm.cc (arm_hard_regno_mode_ok): Use new MACRO.
26024         (arm_modes_tieable_p): Make MVE predicate modes tieable.
26025         * config/arm/arm.h (VALID_MVE_PRED_MODE):  New define.
26026         * simplify-rtx.cc (simplify_context::simplify_subreg): Teach
26027         simplify_subreg to simplify subregs where the outermode is not scalar.
26029 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
26031         PR target/107674
26032         * config/arm/arm-builtins.cc (arm_simd_builtin_type): Rewrite to use
26033         new qualifiers parameter and use unsigned short type for MVE predicate.
26034         (arm_init_builtin): Call arm_simd_builtin_type with qualifiers
26035         parameter.
26036         (arm_init_crypto_builtins): Likewise.
26038 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
26040         PR ipa/107300
26041         * builtins.def (BUILT_IN_UNREACHABLE_TRAP): New builtin.
26042         * internal-fn.def (TRAP): Remove.
26043         * internal-fn.cc (expand_TRAP): Remove.
26044         * tree.cc (build_common_builtin_nodes): Define
26045         BUILT_IN_UNREACHABLE_TRAP if not yet defined.
26046         (builtin_decl_unreachable): Use BUILT_IN_UNREACHABLE_TRAP
26047         instead of BUILT_IN_TRAP.
26048         * gimple.cc (gimple_build_builtin_unreachable): Remove
26049         emitting internal function for BUILT_IN_TRAP.
26050         * asan.cc (maybe_instrument_call): Handle BUILT_IN_UNREACHABLE_TRAP.
26051         * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Handle
26052         BUILT_IN_UNREACHABLE_TRAP instead of BUILT_IN_TRAP.
26053         * ipa-devirt.cc (possible_polymorphic_call_target_p): Handle
26054         BUILT_IN_UNREACHABLE_TRAP.
26055         * builtins.cc (expand_builtin, is_inexpensive_builtin): Likewise.
26056         * tree-cfg.cc (verify_gimple_call,
26057         pass_warn_function_return::execute): Likewise.
26058         * attribs.cc (decl_attributes): Don't report exclusions on
26059         BUILT_IN_UNREACHABLE_TRAP either.
26061 2023-02-02  liuhongt  <hongtao.liu@intel.com>
26063         PR tree-optimization/108601
26064         * tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Removed.
26065         * tree-vect-loop.cc
26066         (vectorizable_nonlinear_induction): Remove
26067         vect_can_peel_nonlinear_iv_p.
26068         (vect_can_peel_nonlinear_iv_p): Don't peel
26069         nonlinear iv(mult or shift) for epilog when vf is not
26070         constant and moved the defination to ..
26071         * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p):
26072         .. Here.
26074 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
26076         PR middle-end/108435
26077         * tree-nested.cc (convert_nonlocal_omp_clauses)
26078         <case OMP_CLAUSE_LASTPRIVATE>: If info->new_local_var_chain and *seq
26079         is not a GIMPLE_BIND, wrap the sequence into a new GIMPLE_BIND
26080         before calling declare_vars.
26081         (convert_nonlocal_omp_clauses) <case OMP_CLAUSE_LINEAR>: Merge
26082         with the OMP_CLAUSE_LASTPRIVATE handling except for whether
26083         seq is initialized to &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)
26084         or &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause).
26086 2023-02-01  Tamar Christina  <tamar.christina@arm.com>
26088         * common/config/aarch64/aarch64-common.cc
26089         (struct aarch64_option_extension): Add native_detect and document struct
26090         a bit more.
26091         (all_extensions): Set new field native_detect.
26092         * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
26093         unused struct.
26095 2023-02-01  Martin Liska  <mliska@suse.cz>
26097         * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
26098         value if set.
26100 2023-02-01  Andrew MacLeod  <amacleod@redhat.com>
26102         PR tree-optimization/108356
26103         * gimple-range-cache.cc (ranger_cache::range_on_edge): Always
26104         do a search of the DOM tree for a range.
26106 2023-02-01  Martin Liska  <mliska@suse.cz>
26108         PR ipa/108509
26109         * cgraphunit.cc (walk_polymorphic_call_targets): Insert
26110         ony non-null values.
26111         * ipa.cc (walk_polymorphic_call_targets): Likewise.
26113 2023-02-01  Martin Liska  <mliska@suse.cz>
26115         PR driver/108572
26116         * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
26117         -gz=zstd.
26119 2023-02-01  Jakub Jelinek  <jakub@redhat.com>
26121         PR debug/108573
26122         * ree.cc (combine_reaching_defs): Don't return false for paradoxical
26123         subregs in DEBUG_INSNs.
26125 2023-02-01  Richard Sandiford  <richard.sandiford@arm.com>
26127         * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
26129 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
26131         * config/s390/s390.cc (s390_restore_gpr_p): New function.
26132         (s390_preserve_gpr_arg_in_range_p): New function.
26133         (s390_preserve_gpr_arg_p): New function.
26134         (s390_preserve_fpr_arg_p): New function.
26135         (s390_register_info_stdarg_fpr): Rename to ...
26136         (s390_register_info_arg_fpr): ... this. Add -mpreserve-args handling.
26137         (s390_register_info_stdarg_gpr): Rename to ...
26138         (s390_register_info_arg_gpr): ... this. Add -mpreserve-args handling.
26139         (s390_register_info): Use the renamed functions above.
26140         (s390_optimize_register_info): Likewise.
26141         (save_fpr): Generate CFI for -mpreserve-args.
26142         (save_gprs): Generate CFI for -mpreserve-args. Drop return value.
26143         (s390_emit_prologue): Adjust to changed calling convention of save_gprs.
26144         (s390_optimize_prologue): Likewise.
26145         * config/s390/s390.opt: New option -mpreserve-args
26147 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
26149         * config/s390/s390.cc (save_gprs): Use gen_frame_mem.
26150         (restore_gprs): Likewise.
26151         (s390_emit_stack_tie): Make the stack_tie to be dependent on the
26152         frame pointer if a frame-pointer is used.
26153         (s390_emit_prologue): Emit stack_tie when frame-pointer is needed.
26154         * config/s390/s390.md (stack_tie): Add a register operand and
26155         rename to ...
26156         (@stack_tie<mode>): ... this.
26158 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
26160         * dwarf2cfi.cc (dwarf2out_frame_debug_cfa_restore): Add
26161         EMIT_CFI parameter.
26162         (dwarf2out_frame_debug): Add case for REG_CFA_NORESTORE.
26163         * reg-notes.def (REG_CFA_NOTE): New reg note definition.
26165 2023-02-01  Richard Biener  <rguenther@suse.de>
26167         PR middle-end/108500
26168         * dominance.cc (assign_dfs_numbers): Replace recursive DFS
26169         with tree traversal algorithm.
26171 2023-02-01  Jason Merrill  <jason@redhat.com>
26173         * doc/invoke.texi: Document -Wno-changes-meaning.
26175 2023-02-01  David Malcolm  <dmalcolm@redhat.com>
26177         * doc/invoke.texi (Static Analyzer Options): Add notes about
26178         limitations of -fanalyzer.
26180 2023-01-31  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26182         * config/riscv/constraints.md (vj): New.
26183         (vk): Ditto
26184         * config/riscv/iterators.md: Add more opcode.
26185         * config/riscv/predicates.md (vector_arith_operand): New.
26186         (vector_neg_arith_operand): New.
26187         (vector_shift_operand): New.
26188         * config/riscv/riscv-vector-builtins-bases.cc (class binop): New.
26189         * config/riscv/riscv-vector-builtins-bases.h: (vadd): New.
26190         (vsub): Ditto.
26191         (vand): Ditto.
26192         (vor): Ditto.
26193         (vxor): Ditto.
26194         (vsll): Ditto.
26195         (vsra): Ditto.
26196         (vsrl): Ditto.
26197         (vmin): Ditto.
26198         (vmax): Ditto.
26199         (vminu): Ditto.
26200         (vmaxu): Ditto.
26201         (vmul): Ditto.
26202         (vdiv): Ditto.
26203         (vrem): Ditto.
26204         (vdivu): Ditto.
26205         (vremu): Ditto.
26206         * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
26207         (vsub): Ditto.
26208         (vand): Ditto.
26209         (vor): Ditto.
26210         (vxor): Ditto.
26211         (vsll): Ditto.
26212         (vsra): Ditto.
26213         (vsrl): Ditto.
26214         (vmin): Ditto.
26215         (vmax): Ditto.
26216         (vminu): Ditto.
26217         (vmaxu): Ditto.
26218         (vmul): Ditto.
26219         (vdiv): Ditto.
26220         (vrem): Ditto.
26221         (vdivu): Ditto.
26222         (vremu): Ditto.
26223         * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): New.
26224         * config/riscv/riscv-vector-builtins-shapes.h (binop): New.
26225         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New.
26226         (DEF_RVV_U_OPS): New.
26227         (rvv_arg_type_info::get_base_vector_type): Handle
26228         RVV_BASE_shift_vector.
26229         (rvv_arg_type_info::get_tree_type): Ditto.
26230         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add
26231         RVV_BASE_shift_vector.
26232         * config/riscv/riscv.cc (riscv_print_operand): Handle 'V'.
26233         * config/riscv/vector-iterators.md: Handle more opcode.
26234         * config/riscv/vector.md (@pred_<optab><mode>): New.
26236 2023-01-31  Philipp Tomsich  <philipp.tomsich@vrull.eu>
26238         PR target/108589
26239         * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
26240         REG_P on SET_DEST.
26242 2023-01-31  Richard Sandiford  <richard.sandiford@arm.com>
26244         PR tree-optimization/108608
26245         * tree-vect-loop.cc (vect_transform_reduction): Handle single
26246         def-use cycles that involve function calls rather than tree codes.
26248 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
26250         PR tree-optimization/108385
26251         * gimple-range-gori.cc (gori_compute::compute_operand_range):
26252         Allow VARYING computations to continue if there is a relation.
26253         * range-op.cc (pointer_plus_operator::op2_range): New.
26255 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
26257         PR tree-optimization/108359
26258         * range-op.cc (range_operator::wi_fold_in_parts_equiv): New.
26259         (range_operator::fold_range): If op1 is equivalent to op2 then
26260         invoke new fold_in_parts_equiv to operate on sub-components.
26261         * range-op.h (wi_fold_in_parts_equiv): New prototype.
26263 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
26265         * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
26266         not abort calculations if there is a valid relation available.
26267         (gori_compute::refine_using_relation): Pass correct relation trio.
26268         (gori_compute::compute_operand1_range): Create trio and use it.
26269         (gori_compute::compute_operand2_range): Ditto.
26270         * range-op.cc (operator_plus::op1_range): Use correct trio member.
26271         (operator_minus::op1_range): Use correct trio member.
26272         * value-relation.cc (value_relation::create_trio): New.
26273         * value-relation.h (value_relation::create_trio): New prototype.
26275 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
26277         PR target/108599
26278         * config/i386/i386-expand.cc
26279         (ix86_convert_const_wide_int_to_broadcast): Return nullptr if
26280         CONST_WIDE_INT_NUNITS (op) times HOST_BITS_PER_WIDE_INT isn't
26281         equal to bitsize of mode.
26283 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
26285         PR rtl-optimization/108596
26286         * bb-reorder.cc (fix_up_fall_thru_edges): Handle the case where cur_bb
26287         ends with asm goto and has a crossing fallthrough edge to the same bb
26288         that contains at least one of its labels by restoring EDGE_CROSSING
26289         flag even on possible edge from cur_bb to new_bb successor.
26291 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
26293         PR c++/105593
26294         * config/i386/avx512erintrin.h (_mm512_exp2a23_round_pd,
26295         _mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps,
26296         _mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps): Use
26297         _mm512_undefined_pd () or _mm512_undefined_ps () instead of using
26298         uninitialized automatic variable __W.
26300 2023-01-31  Gerald Pfeifer  <gerald@pfeifer.com>
26302         * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
26304 2023-01-30  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26306         * config/riscv/riscv-protos.h (get_vector_mode): New function.
26307         * config/riscv/riscv-v.cc (get_vector_mode): Ditto.
26308         * config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum.
26309         (class loadstore): Adjust for indexed loads/stores support.
26310         (BASE): Ditto.
26311         * config/riscv/riscv-vector-builtins-bases.h: New function declare.
26312         * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
26313         (vluxei16): Ditto.
26314         (vluxei32): Ditto.
26315         (vluxei64): Ditto.
26316         (vloxei8): Ditto.
26317         (vloxei16): Ditto.
26318         (vloxei32): Ditto.
26319         (vloxei64): Ditto.
26320         (vsuxei8): Ditto.
26321         (vsuxei16): Ditto.
26322         (vsuxei32): Ditto.
26323         (vsuxei64): Ditto.
26324         (vsoxei8): Ditto.
26325         (vsoxei16): Ditto.
26326         (vsoxei32): Ditto.
26327         (vsoxei64): Ditto.
26328         * config/riscv/riscv-vector-builtins-shapes.cc
26329         (struct indexed_loadstore_def): New class.
26330         (SHAPE): Ditto.
26331         * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
26332         * config/riscv/riscv-vector-builtins.cc (required_extensions_p): Adjust
26333         for indexed loads/stores support.
26334         (check_required_extensions): Ditto.
26335         (rvv_arg_type_info::get_base_vector_type): New function.
26336         (rvv_arg_type_info::get_tree_type): Ditto.
26337         (function_builder::add_unique_function): Adjust for indexed loads/stores
26338         support.
26339         (function_expander::use_exact_insn): New function.
26340         * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Adjust for
26341         indexed loads/stores support.
26342         (struct rvv_arg_type_info): Ditto.
26343         (function_expander::index_mode): New function.
26344         (function_base::apply_tail_policy_p): Ditto.
26345         (function_base::apply_mask_policy_p): Ditto.
26346         * config/riscv/vector-iterators.md (unspec): New unspec.
26347         * config/riscv/vector.md (unspec): Ditto.
26348         (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New
26349         pattern.
26350         (@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
26351         (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
26352         (@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
26353         (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
26354         (@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
26355         (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
26356         (@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
26357         (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
26358         (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
26359         (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
26360         (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
26361         (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
26362         (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
26364 2023-01-30  Flavio Cruz  <flaviocruz@gmail.com>
26366         * config.gcc: Recognize x86_64-*-gnu* targets and include
26367         i386/gnu64.h.
26368         * config/i386/gnu64.h: Define configuration for new target
26369         including ld.so location.
26371 2023-01-30  Philipp Tomsich  <philipp.tomsich@vrull.eu>
26373         * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
26374         ampere1a to include SM4.
26376 2023-01-30  Andrew Pinski  <apinski@marvell.com>
26378         PR tree-optimization/108582
26379         * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
26380         for middlebb to have no phi nodes.
26382 2023-01-30  Richard Biener  <rguenther@suse.de>
26384         PR tree-optimization/108574
26385         * tree-ssa-sccvn.cc (visit_phi): Instead of swapping
26386         sameval and def, ignore the equivalence if there's the
26387         danger of oscillating between two values.
26389 2023-01-30  Andreas Schwab  <schwab@suse.de>
26391         * common/config/riscv/riscv-common.cc
26392         (riscv_option_optimization_table)
26393         [TARGET_DEFAULT_ASYNC_UNWIND_TABLES]: Enable
26394         -fasynchronous-unwind-tables and -funwind-tables.
26395         * config.gcc (riscv*-*-linux*): Define
26396         TARGET_DEFAULT_ASYNC_UNWIND_TABLES.
26398 2023-01-30  YunQiang Su  <yunqiang.su@cipunited.com>
26400         * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
26401         value of includedir.
26403 2023-01-30  Richard Biener  <rguenther@suse.de>
26405         PR ipa/108511
26406         * cgraph.cc (possibly_call_in_translation_unit_p): Relax
26407         assert.
26409 2023-01-30  liuhongt  <hongtao.liu@intel.com>
26411         * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
26412         * doc/invoke.texi: Ditto.
26414 2023-01-29  Jan Hubicka  <hubicka@ucw.cz>
26416         * ipa-utils.cc: Include calls.h, cfgloop.h and cfganal.h
26417         (stmt_may_terminate_function_p): If assuming return or EH
26418         volatile asm is safe.
26419         (find_always_executed_bbs): Fix handling of terminating BBS and
26420         infinite loops; add debug output.
26421         * tree-ssa-alias.cc (stmt_kills_ref_p): Fix debug output
26423 2023-01-28  Philipp Tomsich  <philipp.tomsich@vrull.eu>
26425         * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
26426         off-by-one in checking the permissible shift-amount.
26428 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
26430         * doc/extend.texi (Named Address Spaces): Update link to the
26431         AVR-Libc manual.
26433 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
26435         * doc/standards.texi (Standards): Fix markup.
26437 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
26439         * doc/standards.texi (Standards): Update link to Objective-C book.
26441 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
26443         * doc/invoke.texi (Instrumentation Options): Update reference to
26444         AddressSanitizer.
26446 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
26448         * doc/standards.texi: Update Go1 link.
26450 2023-01-28  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26452         * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
26453         * config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
26454         Support vlse/vsse.
26455         (BASE): Ditto.
26456         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
26457         * config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
26458         (vsse): New class.
26459         * config/riscv/riscv-vector-builtins.cc
26460         (function_expander::use_contiguous_load_insn): Support vlse/vsse.
26461         * config/riscv/vector.md (@pred_strided_load<mode>): New md pattern.
26462         (@pred_strided_store<mode>): Ditto.
26464 2023-01-28  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26466         * config/riscv/vector.md (tail_policy_op_idx): Remove.
26467         (mask_policy_op_idx): Remove.
26468         (avl_type_op_idx): Remove.
26470 2023-01-27  Richard Sandiford  <richard.sandiford@arm.com>
26472         PR tree-optimization/96373
26473         * tree.h (sign_mask_for): Declare.
26474         * tree.cc (sign_mask_for): New function.
26475         (signed_or_unsigned_type_for): For vector types, try to use the
26476         related_int_vector_mode.
26477         * genmatch.cc (commutative_op): Handle conditional internal functions.
26478         * match.pd: Fold an IFN_COND_MUL+copysign into an IFN_COND_XOR+and.
26480 2023-01-27  Richard Sandiford  <richard.sandiford@arm.com>
26482         * tree-vectorizer.cc (vector_costs::compare_inside_loop_cost):
26483         Use the likely minimum VF when bounding the denominators to
26484         the estimated number of iterations.
26486 2023-01-27  Richard Biener  <rguenther@suse.de>
26488         PR target/55522
26489         * doc/invoke.texi (-shared): Clarify effect on -ffast-math
26490         and -Ofast FP environment side-effects.
26492 2023-01-27  Richard Biener  <rguenther@suse.de>
26494         PR target/55522
26495         * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
26496         Don't add crtfastmath.o for -shared.
26498 2023-01-27  Richard Biener  <rguenther@suse.de>
26500         PR target/55522
26501         * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
26502         for -shared.
26504 2023-01-27  Richard Biener  <rguenther@suse.de>
26506         PR target/55522
26507         * config/alpha/linux.h (ENDFILE_SPEC): Don't add
26508         crtfastmath.o for -shared.
26510 2023-01-27  Andrew MacLeod  <amacleod@redhat.com>
26512         PR tree-optimization/108306
26513         * range-op.cc (operator_lshift::fold_range): Return [0, 0] not
26514         varying for shifts that are always out of void range.
26515         (operator_rshift::fold_range): Return [0, 0] not
26516         varying for shifts that are always out of void range.
26518 2023-01-27  Andrew MacLeod  <amacleod@redhat.com>
26520         PR tree-optimization/108447
26521         * gimple-range-fold.cc (old_using_range::relation_fold_and_or):
26522         Do not attempt to fold HONOR_NAN types.
26524 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26526         * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
26527         Remove _m suffix for "vop_m" C++ overloaded API name.
26529 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26531         * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add vlm/vsm support.
26532         * config/riscv/riscv-vector-builtins-bases.h: Ditto.
26533         * config/riscv/riscv-vector-builtins-functions.def (vlm): New define.
26534         (vsm): Ditto.
26535         * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): Add vlm/vsm support.
26536         * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_B_OPS): Ditto.
26537         (vbool64_t): Ditto.
26538         (vbool32_t): Ditto.
26539         (vbool16_t): Ditto.
26540         (vbool8_t): Ditto.
26541         (vbool4_t): Ditto.
26542         (vbool2_t): Ditto.
26543         (vbool1_t): Ditto.
26544         * config/riscv/riscv-vector-builtins.cc (DEF_RVV_B_OPS): Ditto.
26545         (rvv_arg_type_info::get_tree_type): Ditto.
26546         (function_expander::use_contiguous_load_insn): Ditto.
26547         * config/riscv/vector.md (@pred_store<mode>): Ditto.
26549 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26551         * config/riscv/riscv-vsetvl.cc (vsetvl_insn_p): Add condition to avoid ICE.
26552         (vsetvl_discard_result_insn_p): New function.
26553         (reg_killed_by_bb_p): rename to find_reg_killed_by.
26554         (find_reg_killed_by): New name.
26555         (get_vl): allow it to be called by more functions.
26556         (has_vsetvl_killed_avl_p): Add condition.
26557         (get_avl): allow it to be called by more functions.
26558         (insn_should_be_added_p): New function.
26559         (get_all_nonphi_defs): Refine function.
26560         (get_all_sets): Ditto.
26561         (get_same_bb_set): New function.
26562         (any_insn_in_bb_p): Ditto.
26563         (any_set_in_bb_p): Ditto.
26564         (get_vl_vtype_info): Add VLMAX forward optimization.
26565         (source_equal_p): Fix issues.
26566         (extract_single_source): Refine.
26567         (avl_info::multiple_source_equal_p): New function.
26568         (avl_info::operator==): Adjust for final version.
26569         (vl_vtype_info::operator==): Ditto.
26570         (vl_vtype_info::same_avl_p): Ditto.
26571         (vector_insn_info::parse_insn): Ditto.
26572         (vector_insn_info::available_p): New function.
26573         (vector_insn_info::merge): Adjust for final version.
26574         (vector_insn_info::dump): Add hard_empty.
26575         (pass_vsetvl::hard_empty_block_p): New function.
26576         (pass_vsetvl::backward_demand_fusion): Adjust for final version.
26577         (pass_vsetvl::forward_demand_fusion): Ditto.
26578         (pass_vsetvl::demand_fusion): Ditto.
26579         (pass_vsetvl::cleanup_illegal_dirty_blocks): New function.
26580         (pass_vsetvl::compute_local_properties): Adjust for final version.
26581         (pass_vsetvl::can_refine_vsetvl_p): Ditto.
26582         (pass_vsetvl::refine_vsetvls): Ditto.
26583         (pass_vsetvl::commit_vsetvls): Ditto.
26584         (pass_vsetvl::propagate_avl): New function.
26585         (pass_vsetvl::lazy_vsetvl): Adjust for new version.
26586         * config/riscv/riscv-vsetvl.h (enum def_type): New enum.
26588 2023-01-27  Jakub Jelinek  <jakub@redhat.com>
26590         PR other/108560
26591         * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
26592         from size_t to int.
26594 2023-01-27  Jakub Jelinek  <jakub@redhat.com>
26596         PR ipa/106061
26597         * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Allow
26598         redirection of calls to __builtin_trap in addition to redirection
26599         to __builtin_unreachable.
26601 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26603         * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
26605 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26607         * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
26608         (emit_vsetvl_insn): Ditto.
26610 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26612         * config/riscv/vector.md: Fix constraints.
26614 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26616         * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
26618 2023-01-27  Patrick Palka  <ppalka@redhat.com>
26619             Jakub Jelinek  <jakub@redhat.com>
26621         * tree-core.h (tree_code_type, tree_code_length): For
26622         C++17 and later, add inline keyword, otherwise don't define
26623         the arrays, but declare extern arrays.
26624         * tree.cc (tree_code_type, tree_code_length): Define these
26625         arrays for C++14 and older.
26627 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26629         * config/riscv/riscv-vsetvl.h: Change it into public.
26631 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26633         * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
26634         pass.
26636 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26638         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
26640 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26642         * config/riscv/vector.md: Fix incorrect attributes.
26644 2023-01-27  Richard Biener  <rguenther@suse.de>
26646         PR target/55522
26647         * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
26648         Don't add crtfastmath.o for -shared.
26650 2023-01-27  Alexandre Oliva  <oliva@gnu.org>
26652         * doc/options.texi (option, RejectNegative): Mention that
26653         -g-started options are also implicitly negatable.
26655 2023-01-26  Kito Cheng  <kito.cheng@sifive.com>
26657         * config/riscv/riscv-vector-builtins.cc (register_builtin_types):
26658         Use get_typenode_from_name to get fixed-width integer type
26659         nodes.
26660         * config/riscv/riscv-vector-builtins.def: Update define with
26661         fixed-width integer type nodes.
26663 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26665         * config/riscv/riscv-vsetvl.cc (same_bb_and_before_p): Remove it.
26666         (real_insn_and_same_bb_p): New function.
26667         (same_bb_and_after_or_equal_p): Remove it.
26668         (before_p): New function.
26669         (reg_killed_by_bb_p): Ditto.
26670         (has_vsetvl_killed_avl_p): Ditto.
26671         (get_vl): Move location so that we can call it.
26672         (anticipatable_occurrence_p): Fix issue of AVL=REG support.
26673         (available_occurrence_p): Ditto.
26674         (dominate_probability_p): Remove it.
26675         (can_backward_propagate_p): Remove it.
26676         (get_all_nonphi_defs): New function.
26677         (get_all_predecessors): Ditto.
26678         (any_insn_in_bb_p): Ditto.
26679         (insert_vsetvl): Adjust AVL REG.
26680         (source_equal_p): New function.
26681         (extract_single_source): Ditto.
26682         (avl_info::single_source_equal_p): Ditto.
26683         (avl_info::operator==): Adjust for AVL=REG.
26684         (vl_vtype_info::same_avl_p): Ditto.
26685         (vector_insn_info::set_demand_info): Remove it.
26686         (vector_insn_info::compatible_p): Adjust for AVL=REG.
26687         (vector_insn_info::compatible_avl_p): New function.
26688         (vector_insn_info::merge): Adjust AVL=REG.
26689         (vector_insn_info::dump): Ditto.
26690         (pass_vsetvl::merge_successors): Remove it.
26691         (enum fusion_type): New enum.
26692         (pass_vsetvl::get_backward_fusion_type): New function.
26693         (pass_vsetvl::backward_demand_fusion): Adjust for AVL=REG.
26694         (pass_vsetvl::forward_demand_fusion): Ditto.
26695         (pass_vsetvl::demand_fusion): Ditto.
26696         (pass_vsetvl::prune_expressions): Ditto.
26697         (pass_vsetvl::compute_local_properties): Ditto.
26698         (pass_vsetvl::cleanup_vsetvls): Ditto.
26699         (pass_vsetvl::commit_vsetvls): Ditto.
26700         (pass_vsetvl::init): Ditto.
26701         * config/riscv/riscv-vsetvl.h (enum fusion_type): New enum.
26702         (enum merge_type): New enum.
26704 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26706         * config/riscv/riscv-vsetvl.cc
26707         (vector_infos_manager::vector_infos_manager): Add probability.
26708         (vector_infos_manager::dump): Ditto.
26709         (pass_vsetvl::compute_probabilities): Ditto.
26710         * config/riscv/riscv-vsetvl.h (struct vector_block_info): Ditto.
26712 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26714         * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Remove dirty_pat.
26715         (vector_insn_info::merge): Ditto.
26716         (vector_insn_info::dump): Ditto.
26717         (pass_vsetvl::merge_successors): Ditto.
26718         (pass_vsetvl::backward_demand_fusion): Ditto.
26719         (pass_vsetvl::forward_demand_fusion): Ditto.
26720         (pass_vsetvl::commit_vsetvls): Ditto.
26721         * config/riscv/riscv-vsetvl.h: Ditto.
26723 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26725         * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
26726         rinsn.
26728 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26730         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
26732 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26734         * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
26735         Add pre-check for redundant flow.
26737 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26739         * config/riscv/riscv-vsetvl.cc (vector_infos_manager::create_bitmap_vectors): New function.
26740         (vector_infos_manager::free_bitmap_vectors): Ditto.
26741         (pass_vsetvl::pre_vsetvl): Adjust codes.
26742         * config/riscv/riscv-vsetvl.h: New function declaration.
26744 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26746         * config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb.
26747         (vector_insn_info::set_demand_info): New function.
26748         (pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3.
26749         (pass_vsetvl::merge_successors): Ditto.
26750         (pass_vsetvl::compute_global_backward_infos): Ditto.
26751         (pass_vsetvl::backward_demand_fusion): Ditto.
26752         (pass_vsetvl::forward_demand_fusion): Ditto.
26753         (pass_vsetvl::demand_fusion): New function.
26754         (pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3.
26755         * config/riscv/riscv-vsetvl.h: New function declaration.
26757 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26759         * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
26761 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26763         * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
26764         (pass_vsetvl::compute_global_backward_infos): Simplify codes.
26766 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26768         * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
26769         (backward_propagate_worthwhile_p): Fix non-worthwhile.
26771 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26773         * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
26775 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26777         * config/riscv/riscv-vsetvl.cc (vector_infos_manager::all_same_avl_p): New function.
26778         (pass_vsetvl::can_refine_vsetvl_p): Add AVL check.
26779         (pass_vsetvl::commit_vsetvls): Ditto.
26780         * config/riscv/riscv-vsetvl.h: New function declaration.
26782 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26784         * config/riscv/vector.md:
26786 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26788         * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): use
26789         pred_store for vse.
26790         * config/riscv/riscv-vector-builtins.cc
26791         (function_expander::add_mem_operand): Refine function.
26792         (function_expander::use_contiguous_load_insn): Adjust new
26793         implementation.
26794         (function_expander::use_contiguous_store_insn): Ditto.
26795         * config/riscv/riscv-vector-builtins.h: Refine function.
26796         * config/riscv/vector.md (@pred_store<mode>): New pattern.
26798 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
26800         * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
26802 2023-01-26  Marek Polacek  <polacek@redhat.com>
26804         PR middle-end/108543
26805         * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
26806         if it was previously set.
26808 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
26810         PR tree-optimization/108540
26811         * range-op-float.cc (foperator_equal::fold_range): If both op1 and op2
26812         are singletons, use range_true even if op1 != op2
26813         when one range is [-0.0, -0.0] and another [0.0, 0.0].  Similarly,
26814         even if intersection of the ranges is empty and one has
26815         zero low bound and another zero high bound, use range_true_and_false
26816         rather than range_false.
26817         (foperator_not_equal::fold_range): If both op1 and op2
26818         are singletons, use range_false even if op1 != op2
26819         when one range is [-0.0, -0.0] and another [0.0, 0.0].  Similarly,
26820         even if intersection of the ranges is empty and one has
26821         zero low bound and another zero high bound, use range_true_and_false
26822         rather than range_true.
26824 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
26826         * value-relation.cc (kind_string): Add const.
26827         (rr_negate_table, rr_swap_table, rr_intersect_table,
26828         rr_union_table, rr_transitive_table): Add static const, change
26829         element type from relation_kind to unsigned char.
26830         (relation_negate, relation_swap, relation_intersect, relation_union,
26831         relation_transitive): Cast rr_*_table element to relation_kind.
26832         (relation_to_code): Add static const.
26833         (relation_tests): Assert VREL_LAST is smaller than UCHAR_MAX.
26835 2023-01-26  Richard Biener  <rguenther@suse.de>
26837         PR tree-optimization/108547
26838         * gimple-predicate-analysis.cc (value_sat_pred_p):
26839         Use widest_int.
26841 2023-01-26  Siddhesh Poyarekar  <siddhesh@gotplt.org>
26843         PR tree-optimization/108522
26844         * tree-object-size.cc (compute_object_offset): Make EXPR
26845         argument non-const.  Call component_ref_field_offset.
26847 2023-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
26849         * config/aarch64/aarch64-option-extensions.def (cssc): Specify
26850         FEATURE_STRING field.
26852 2023-01-26  Gerald Pfeifer  <gerald@pfeifer.com>
26854         * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
26856 2023-01-25  Iain Sandoe  <iain@sandoe.co.uk>
26858         PR modula2/102343
26859         PR modula2/108182
26860         * gcc.cc: Provide default specs for Modula-2 so that when the
26861         language is not built-in better diagnostics are emitted for
26862         attempts to use .mod or .m2i file extensions.
26864 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
26866         * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
26868 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
26870         * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
26872 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
26874         * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
26875         Fix spacing.
26877 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
26879         * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
26881 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
26883         * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
26885 2023-01-25  Richard Biener  <rguenther@suse.de>
26887         PR tree-optimization/108523
26888         * tree-ssa-sccvn.cc (visit_phi): Avoid using the exclusive
26889         backedge value for the result when using predication to
26890         prove equivalence.
26892 2023-01-25  Richard Biener  <rguenther@suse.de>
26894         * doc/lto.texi (Command line options): Reword and update reference
26895         to removed lto_read_all_file_options.
26897 2023-01-25  Richard Sandiford  <richard.sandiford@arm.com>
26899         * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
26900         tests.
26902 2023-01-25  Gerald Pfeifer  <gerald@pfeifer.com>
26904         * doc/contrib.texi: Add Jose E. Marchesi.
26906 2023-01-25  Jakub Jelinek  <jakub@redhat.com>
26908         PR tree-optimization/108498
26909         * gimple-ssa-store-merging.cc (class store_operand_info):
26910         End coment with full stop rather than comma.
26911         (split_group): Likewise.
26912         (merged_store_group::apply_stores): Clear string_concatenation if
26913         start or end aren't on a byte boundary.
26915 2023-01-25  Siddhesh Poyarekar  <siddhesh@gotplt.org>
26916             Jakub Jelinek  <jakub@redhat.com>
26918         PR tree-optimization/108522
26919         * tree-object-size.cc (compute_object_offset): Use
26920         TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
26922 2023-01-24  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
26924         * config/xtensa/xtensa.md:
26925         Fix exit from loops detecting references before overwriting in the
26926         split pattern.
26928 2023-01-24  Vladimir N. Makarov  <vmakarov@redhat.com>
26930         * lra-constraints.cc (get_hard_regno): Remove final_p arg.  Always
26931         do elimination but only for hard register.
26932         (operands_match_p, uses_hard_regs_p, process_alt_operands): Adjust
26933         calls of get_hard_regno.
26935 2023-01-24  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
26937         * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
26938         of CPU version.
26940 2023-01-24  Andre Vieira  <andre.simoesdiasvieira@arm.com>
26942         PR target/108177
26943         * config/arm/mve.md (mve_vstrbq_p_<supf><mode>, mve_vstrhq_p_fv8hf,
26944         mve_vstrhq_p_<supf><mode>, mve_vstrwq_p_<supf>v4si): Add memory operand
26945         as input operand.
26947 2023-01-24  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
26949         * config.gcc(csky-*-linux*): Define CSKY_ENABLE_MULTILIB
26950         and only include 'csky/t-csky-linux' when enable multilib.
26951         * config/csky/csky-linux-elf.h(SYSROOT_SUFFIX_SPEC): Don't
26952         define it when disable multilib.
26954 2023-01-24  Richard Biener  <rguenther@suse.de>
26956         PR tree-optimization/108500
26957         * dominance.h (calculate_dominance_info): Add parameter
26958         to indicate fast-query compute, defaulted to true.
26959         * dominance.cc (calculate_dominance_info): Honor
26960         fast-query compute parameter.
26961         * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Do
26962         not compute the dominator fast-query DFS numbers.
26964 2023-01-24  Eric Biggers  <ebiggers@google.com>
26966         PR bootstrap/90543
26967         * optc-save-gen.awk: Fix copy-and-paste error.
26969 2023-01-24  Jakub Jelinek  <jakub@redhat.com>
26971         PR c++/108474
26972         * cgraphbuild.cc: Include gimplify.h.
26973         (record_reference): Replace VAR_DECLs with DECL_HAS_VALUE_EXPR_P with
26974         their corresponding DECL_VALUE_EXPR expressions after unsharing.
26976 2023-01-24  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
26978         PR target/108505
26979         * config.gcc (tm_file): Move the variable out of loop.
26981 2023-01-24  Lulu Cheng  <chenglulu@loongson.cn>
26982             Yang Yujie  <yangyujie@loongson.cn>
26984         PR target/107731
26985         * config/loongarch/loongarch.cc (loongarch_classify_address):
26986         Add precessint for CONST_INT.
26987         (loongarch_print_operand_reloc): Operand modifier 'c' is supported.
26988         (loongarch_print_operand): Increase the processing of '%c'.
26989         * doc/extend.texi: Adds documents for LoongArch operand modifiers.
26990         And port the public operand modifiers information to this document.
26992 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
26994         * doc/invoke.texi (-mbranch-protection): Update documentation.
26996 2023-01-23  Richard Biener  <rguenther@suse.de>
26998         PR target/55522
26999         * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
27000         for -shared.
27001         * config/sparc/linux.h (ENDFILE_SPEC): Likewise.
27002         * config/sparc/linux64.h (ENDFILE_SPEC): Likewise.
27003         * config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise.
27004         * config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise.
27006 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
27008         * config/arm/aout.h (ra_auth_code): Add entry in enum.
27009         * config/arm/arm.cc (emit_multi_reg_push): Add RA_AUTH_CODE register
27010         to dwarf frame expression.
27011         (arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register.
27012         (arm_expand_prologue): Update frame related information and reg notes
27013         for pac/pacbit insn.
27014         (arm_regno_class): Check for pac pseudo reigster.
27015         (arm_dbx_register_number): Assign ra_auth_code register number in dwarf.
27016         (arm_init_machine_status): Set pacspval_needed to zero.
27017         (arm_debugger_regno): Check for PAC register.
27018         (arm_unwind_emit_sequence): Print .save directive with ra_auth_code
27019         register.
27020         (arm_unwind_emit_set): Add entry for IP_REGNUM in switch case.
27021         (arm_unwind_emit): Update REG_CFA_REGISTER case._
27022         * config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify.
27023         (DWARF_PAC_REGNUM): Define.
27024         (IS_PAC_REGNUM): Likewise.
27025         (enum reg_class): Add PAC_REG entry.
27026         (machine_function): Add pacbti_needed state to structure.
27027         * config/arm/arm.md (RA_AUTH_CODE): Define.
27029 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
27031         * config.gcc ($tm_file): Update variable.
27032         * config/arm/arm-mlib.h: Create new header file.
27033         * config/arm/t-rmprofile (MULTI_ARCH_DIRS_RM): Rename mbranch-protection
27034         multilib arch directory.
27035         (MULTILIB_REUSE): Add multilib reuse rules.
27036         (MULTILIB_MATCHES): Add multilib match rules.
27038 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
27040         * config/arm/arm-cpus.in (cortex-m85): Define new CPU.
27041         * config/arm/arm-tables.opt: Regenerate.
27042         * config/arm/arm-tune.md: Likewise.
27043         * doc/invoke.texi (Arm Options): Document -mcpu=cortex-m85.
27044         * (-mfix-cmse-cve-2021-35465): Likewise.
27046 2023-01-23  Richard Biener  <rguenther@suse.de>
27048         PR tree-optimization/108482
27049         * tree-vect-generic.cc (expand_vector_operations): Fold remaining
27050         .LOOP_DIST_ALIAS calls.
27052 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
27054         * config.gcc (arm*-*-*): Add 'aarch-bti-insert.o' object.
27055         * config/arm/arm-protos.h: Update.
27056         * config/arm/aarch-common-protos.h: Declare
27057         'aarch_bti_arch_check'.
27058         * config/arm/arm.cc (aarch_bti_enabled) Update.
27059         (aarch_bti_j_insn_p, aarch_pac_insn_p, aarch_gen_bti_c)
27060         (aarch_gen_bti_j, aarch_bti_arch_check): New functions.
27061         * config/arm/arm.md (bti_nop): New insn.
27062         * config/arm/t-arm (PASSES_EXTRA): Add 'arm-passes.def'.
27063         (aarch-bti-insert.o): New target.
27064         * config/arm/unspecs.md (VUNSPEC_BTI_NOP): New unspec.
27065         * config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Verify arch
27066         compatibility.
27067         (gate): Make use of 'aarch_bti_arch_check'.
27068         * config/arm/arm-passes.def: New file.
27069         * config/aarch64/aarch64.cc (aarch_bti_arch_check): New function.
27071 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
27073         * config.gcc (aarch64*-*-*): Rename 'aarch64-bti-insert.o' into
27074         'aarch-bti-insert.o'.
27075         * config/aarch64/aarch64-protos.h: Remove 'aarch64_bti_enabled'
27076         proto.
27077         * config/aarch64/aarch64.cc (aarch_bti_enabled): Rename.
27078         (aarch_bti_j_insn_p, aarch_pac_insn_p): New functions.
27079         (aarch64_output_mi_thunk)
27080         (aarch64_print_patchable_function_entry)
27081         (aarch64_file_end_indicate_exec_stack): Update renamed function
27082         calls to renamed functions.
27083         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise.
27084         * config/aarch64/t-aarch64 (aarch-bti-insert.o): Update
27085         target.
27086         * config/aarch64/aarch64-bti-insert.cc: Delete.
27087         * config/arm/aarch-bti-insert.cc: New file including and
27088         generalizing code from aarch64-bti-insert.cc.
27089         * config/arm/aarch-common-protos.h: Update.
27091 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
27093         * config/arm/arm.h (arm_arch8m_main): Declare it.
27094         * config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
27095         Declare it.
27096         * config/arm/arm.cc (arm_arch8m_main): Define it.
27097         (arm_option_reconfigure_globals): Set arm_arch8m_main.
27098         (arm_compute_frame_layout, arm_expand_prologue)
27099         (thumb2_expand_return, arm_expand_epilogue)
27100         (arm_conditional_register_usage): Update for pac codegen.
27101         (arm_current_function_pac_enabled_p): New function.
27102         (aarch_bti_enabled) New function.
27103         (use_return_insn): Return zero when pac is enabled.
27104         * config/arm/arm.md (pac_ip_lr_sp, pacbti_ip_lr_sp, aut_ip_lr_sp):
27105         Add new patterns.
27106         * config/arm/unspecs.md (UNSPEC_PAC_NOP)
27107         (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
27109 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
27111         * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
27112         mbranch-protection.
27114 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
27115             Tejas Belagod   <tbelagod@arm.com>
27117         * config/arm/arm.cc (arm_file_start): Emit EABI attributes for
27118         Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use.
27120 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
27121             Tejas Belagod   <tbelagod@arm.com>
27122             Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
27124         * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
27125         new pseudo register class _UVRSC_PAC.
27127 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
27128             Tejas Belagod   <tbelagod@arm.com>
27130         * config/arm/arm-c.cc (arm_cpu_builtins): Define
27131         __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT,
27132         __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI.
27134 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
27135             Tejas Belagod   <tbelagod@arm.com>
27137         * doc/sourcebuild.texi: Document arm_pacbti_hw.
27139 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
27140             Tejas Belagod   <tbelagod@arm.com>
27141             Richard Earnshaw  <Richard.Earnshaw@arm.com>
27143         * config/arm/arm.cc (arm_configure_build_target): Parse and validate
27144         -mbranch-protection option and initialize appropriate data structures.
27145         * config/arm/arm.opt (-mbranch-protection): New option.
27146         * doc/invoke.texi (Arm Options): Document it.
27148 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
27149             Tejas Belagod   <tbelagod@arm.com>
27151         * config/arm/arm.h (TARGET_HAVE_PACBTI): New macro.
27152         * config/arm/arm-cpus.in (pacbti): New feature.
27153         * doc/invoke.texi (Arm Options): Document it.
27155 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
27156             Tejas Belagod   <tbelagod@arm.com>
27158         * common/config/aarch64/aarch64-common.cc: Include aarch-common.h.
27159         (all_architectures): Fix comment.
27160         (aarch64_parse_extension): Rename return type, enum value names.
27161         * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Rename
27162         factored out aarch_ra_sign_scope and aarch_ra_sign_key variables.
27163         Also rename corresponding enum values.
27164         * config/aarch64/aarch64-opts.h (aarch64_function_type): Factor
27165         out aarch64_function_type and move it to common code as
27166         aarch_function_type in aarch-common.h.
27167         * config/aarch64/aarch64-protos.h: Include common types header,
27168         move out types aarch64_parse_opt_result and aarch64_key_type to
27169         aarch-common.h
27170         * config/aarch64/aarch64.cc: Move mbranch-protection parsing types
27171         and functions out into aarch-common.h and aarch-common.cc.  Fix up
27172         all the name changes resulting from the move.
27173         * config/aarch64/aarch64.md: Fix up aarch64_ra_sign_key type name change
27174         and enum value.
27175         * config/aarch64/aarch64.opt: Include aarch-common.h to import
27176         type move.  Fix up name changes from factoring out common code and
27177         data.
27178         * config/arm/aarch-common-protos.h: Export factored out routines to both
27179         backends.
27180         * config/arm/aarch-common.cc: Include newly factored out types.
27181         Move all mbranch-protection code and data structures from
27182         aarch64.cc.
27183         * config/arm/aarch-common.h: New header that declares types shared
27184         between aarch32 and aarch64 backends.
27185         * config/arm/arm-protos.h: Declare types and variables that are
27186         made common to aarch64 and aarch32 backends - aarch_ra_sign_key,
27187         aarch_ra_sign_scope and aarch_enable_bti.
27188         * config/arm/arm.opt (config/arm/aarch-common.h): Include header.
27189         (aarch_ra_sign_scope, aarch_enable_bti): Declare variable.
27190         * config/arm/arm.cc: Add missing includes.
27192 2023-01-23  Tobias Burnus  <tobias@codesourcery.com>
27194         * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
27196 2023-01-23  Richard Biener  <rguenther@suse.de>
27198         PR tree-optimization/108449
27199         * cgraphunit.cc (check_global_declaration): Do not turn
27200         undefined statics into externs.
27202 2023-01-22  Dimitar Dimitrov  <dimitar@dinux.eu>
27204         * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix value for QI
27205         and HI input modes.
27206         * config/pru/pru.md (clz): Fix generated code for QI and HI
27207         input modes.
27209 2023-01-22  Cupertino Miranda  <cupertino.miranda@oracle.com>
27211         * config/v850/v850.cc (v850_select_section): Put const volatile
27212         objects into read-only sections.
27214 2023-01-20  Tejas Belagod  <tejas.belagod@arm.com>
27216         * config/aarch64/arm_neon.h (vmull_p64, vmull_high_p64, vaeseq_u8,
27217         vaesdq_u8, vaesmcq_u8, vaesimcq_u8): Gate under "nothing+aes".
27218         (vsha1*_u32, vsha256*_u32): Gate under "nothing+sha2".
27220 2023-01-20  Jakub Jelinek  <jakub@redhat.com>
27222         PR tree-optimization/108457
27223         * tree-ssa-loop-niter.cc (build_cltz_expr): Use
27224         SCALAR_INT_TYPE_MODE (utype) directly as C[LT]Z_DEFINED_VALUE_AT_ZERO
27225         argument instead of a temporary.  Formatting fixes.
27227 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
27229         PR tree-optimization/108447
27230         * value-relation.cc (rr_union_table): Fix VREL_UNDEFINED row order.
27231         (relation_tests): Add self-tests for relation_{intersect,union}
27232         commutativity.
27233         * selftest.h (relation_tests): Declare.
27234         * function-tests.cc (test_ranges): Call it.
27236 2023-01-19  H.J. Lu  <hjl.tools@gmail.com>
27238         PR target/108436
27239         * config/i386/i386-expand.cc (ix86_expand_builtin): Check
27240         invalid third argument to __builtin_ia32_prefetch.
27242 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
27244         PR middle-end/108459
27245         * omp-expand.cc (expand_omp_for_init_counts): Use fold_build1 rather
27246         than fold_unary for NEGATE_EXPR.
27248 2023-01-19  Christophe Lyon  <christophe.lyon@arm.com>
27250         PR target/108411
27251         * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
27252         comment. Move assert about alignment a bit later.
27254 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
27256         PR tree-optimization/108440
27257         * tree-ssa-forwprop.cc: Include gimple-range.h.
27258         (simplify_rotate): For the forms with T2 wider than T and shift counts of
27259         Y and B - Y add & (B - 1) masking for the rotate count if Y could be equal
27260         to B.  For the forms with T2 wider than T and shift counts of
27261         Y and (-Y) & (B - 1), don't punt if range could be [B, B2], but only if
27262         range doesn't guarantee Y < B or Y = N * B.  If range doesn't guarantee
27263         Y < B, also add & (B - 1) masking for the rotate count.  Use lazily created
27264         pass specific ranger instead of get_global_range_query.
27265         (pass_forwprop::execute): Disable that ranger at the end of pass if it has
27266         been created.
27268 2023-01-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
27270         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
27271         exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
27272         the pattern.
27273         (aarch64_simd_vec_copy_lane<mode>): Likewise.
27274         (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
27276 2023-01-19  Alexandre Oliva  <oliva@adacore.com>
27278         PR debug/106746
27279         * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
27280         within debug insns.
27282 2023-01-18  Martin Jambor  <mjambor@suse.cz>
27284         PR ipa/107944
27285         * cgraph.cc (cgraph_node::remove): Check whether nodes up the
27286         lcone_of chain also do not need the body.
27288 2023-01-18  Richard Biener  <rguenther@suse.de>
27290         Revert:
27291         2022-12-16  Richard Biener  <rguenther@suse.de>
27293         PR middle-end/108086
27294         * tree-inline.cc (remap_ssa_name): Do not unshare the
27295         result from the decl_map.
27297 2023-01-18  Murray Steele  <murray.steele@arm.com>
27299         PR target/108442
27300         * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
27301         function.
27302         (__arm_vst1q_p_s8): Likewise.
27303         (__arm_vld1q_z_u8): Likewise.
27304         (__arm_vld1q_z_s8): Likewise.
27305         (__arm_vst1q_p_u16): Likewise.
27306         (__arm_vst1q_p_s16): Likewise.
27307         (__arm_vld1q_z_u16): Likewise.
27308         (__arm_vld1q_z_s16): Likewise.
27309         (__arm_vst1q_p_u32): Likewise.
27310         (__arm_vst1q_p_s32): Likewise.
27311         (__arm_vld1q_z_u32): Likewise.
27312         (__arm_vld1q_z_s32): Likewise.
27313         (__arm_vld1q_z_f16): Likewise.
27314         (__arm_vst1q_p_f16): Likewise.
27315         (__arm_vld1q_z_f32): Likewise.
27316         (__arm_vst1q_p_f32): Likewise.
27318 2023-01-18  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
27320         * config/xtensa/xtensa.md (xorsi3_internal):
27321         Rename from the original of "xorsi3".
27322         (xorsi3): New expansion pattern that emits addition rather than
27323         bitwise-XOR when the second source is a constant of -2147483648
27324         if TARGET_DENSITY.
27326 2023-01-18  Kewen Lin  <linkw@linux.ibm.com>
27327             Andrew Pinski  <apinski@marvell.com>
27329         PR target/108396
27330         * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
27331         vec_vsubcuqP with vec_vsubcuq.
27333 2023-01-18  Kewen Lin  <linkw@linux.ibm.com>
27335         PR target/108348
27336         * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
27337         support for invalid uses of MMA opaque type in function arguments.
27339 2023-01-18  liuhongt  <hongtao.liu@intel.com>
27341         PR target/55522
27342         * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o
27343         whenever -mdaz-ftz is specified. Don't link crtfastmath.o when
27344         -share or -mno-daz-ftz is specified.
27345         * config/i386/darwin.h (ENDFILE_SPEC): Ditto.
27346         * config/i386/mingw32.h (ENDFILE_SPEC): Ditto.
27348 2023-01-17  Jose E. Marchesi  <jose.marchesi@oracle.com>
27350         * config/bpf/bpf.cc (bpf_option_override): Disable
27351         -fstack-protector.
27353 2023-01-17  Jakub Jelinek  <jakub@redhat.com>
27355         PR tree-optimization/106523
27356         * tree-ssa-forwprop.cc (simplify_rotate): For the
27357         patterns with (-Y) & (B - 1) in one operand's shift
27358         count and Y in another, if T2 has wider precision than T,
27359         punt if Y could have a value in [B, B2 - 1] range.
27361 2023-01-16  H.J. Lu  <hjl.tools@gmail.com>
27363         PR target/105980
27364         * config/i386/i386.cc (x86_output_mi_thunk): Disable
27365         -mforce-indirect-call for PIC in 32-bit mode.
27367 2023-01-16  Jan Hubicka  <hubicka@ucw.cz>
27369         PR ipa/106077
27370         * ipa-modref.cc (modref_access_analysis::analyze): Use
27371         find_always_executed_bbs.
27372         * ipa-sra.cc (process_scan_results): Likewise.
27373         * ipa-utils.cc (stmt_may_terminate_function_p): New function.
27374         (find_always_executed_bbs): New function.
27375         * ipa-utils.h (stmt_may_terminate_function_p): Declare.
27376         (find_always_executed_bbs): Declare.
27378 2023-01-16  Jan Hubicka  <jh@suse.cz>
27380         * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Guard scatter
27381         by TARGET_USE_SCATTER.
27382         * config/i386/i386.h (TARGET_USE_SCATTER_2PARTS,
27383         TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New macros.
27384         * config/i386/x86-tune.def (TARGET_USE_SCATTER_2PARTS,
27385         TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New tunes.
27386         (X86_TUNE_AVOID_256FMA_CHAINS, X86_TUNE_AVOID_512FMA_CHAINS): Disable
27387         for znver4.  (X86_TUNE_USE_GATHER): Disable for zen4.
27389 2023-01-16  Richard Biener  <rguenther@suse.de>
27391         PR target/55522
27392         * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
27394 2023-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
27396         PR target/96795
27397         PR target/107515
27398         * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
27399         (__ARM_mve_coerce3): Likewise.
27401 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
27403         * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
27405 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
27407         * tree-ssa-loop-niter.cc (number_of_iterations_cltz): New.
27408         (number_of_iterations_bitcount): Add call to the above.
27409         (number_of_iterations_exit_assumptions): Add EQ_EXPR case for
27410         c[lt]z idiom recognition.
27412 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
27414         * doc/sourcebuild.texi: Add missing target attributes.
27416 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
27418         PR tree-optimization/94793
27419         * tree-scalar-evolution.cc (expression_expensive_p): Add checks
27420         for c[lt]z optabs.
27421         * tree-ssa-loop-niter.cc (build_cltz_expr): New.
27422         (number_of_iterations_cltz_complement): New.
27423         (number_of_iterations_bitcount): Add call to the above.
27425 2023-01-16  Jonathan Wakely  <jwakely@redhat.com>
27427         * doc/extend.texi (Common Function Attributes): Fix grammar.
27429 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
27431         PR other/108413
27432         * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
27433         * config/riscv/riscv-vsetvl.cc: Likewise.
27435 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
27437         PR c++/105593
27438         * config/i386/xmmintrin.h (_mm_undefined_ps): Temporarily
27439         disable -Winit-self using pragma GCC diagnostic ignored.
27440         * config/i386/emmintrin.h (_mm_undefined_pd, _mm_undefined_si128):
27441         Likewise.
27442         * config/i386/avxintrin.h (_mm256_undefined_pd, _mm256_undefined_ps,
27443         _mm256_undefined_si256): Likewise.
27444         * config/i386/avx512fintrin.h (_mm512_undefined_pd,
27445         _mm512_undefined_ps, _mm512_undefined_epi32): Likewise.
27446         * config/i386/avx512fp16intrin.h (_mm_undefined_ph,
27447         _mm256_undefined_ph, _mm512_undefined_ph): Likewise.
27449 2023-01-16  Kewen Lin  <linkw@linux.ibm.com>
27451         PR target/108272
27452         * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
27453         support for invalid uses in inline asm, factor out the checking and
27454         erroring to lambda function check_and_error_invalid_use.
27456 2023-01-15  Aldy Hernandez  <aldyh@redhat.com>
27458         PR tree-optimization/107608
27459         * range-op-float.cc (range_operator_float::fold_range): Avoid
27460         folding into INF when flag_trapping_math.
27461         * value-range.h (frange::known_isinf): Return false for possible NANs.
27463 2023-01-15  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
27465         * config.gcc (csky-*-*): Support --with-float=softfp.
27467 2023-01-14  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
27469         * config/xtensa/xtensa-protos.h (order_regs_for_local_alloc):
27470         Rename to xtensa_adjust_reg_alloc_order.
27471         * config/xtensa/xtensa.cc (xtensa_adjust_reg_alloc_order):
27472         Ditto.  And also remove code to reorder register numbers for
27473         leaf functions, rename the tables, and adjust the allocation
27474         order for the call0 ABI to use register A0 more.
27475         (xtensa_leaf_regs): Remove.
27476         * config/xtensa/xtensa.h (REG_ALLOC_ORDER): Cosmetics.
27477         (order_regs_for_local_alloc): Rename as the above.
27478         (LEAF_REGISTERS, LEAF_REG_REMAP, leaf_function): Remove.
27480 2023-01-14  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
27482         * config/aarch64/aarch64-sve.md (aarch64_vec_duplicate_vq<mode>_le):
27483         Change to define_insn_and_split to fold ldr+dup to ld1rq.
27484         * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): New.
27486 2023-01-14  Alexandre Oliva  <oliva@adacore.com>
27488         * hash-table.h (is_deleted): Precheck !is_empty.
27489         (mark_deleted): Postcheck !is_empty.
27490         (copy constructor): Test is_empty before is_deleted.
27492 2023-01-14  Alexandre Oliva  <oliva@adacore.com>
27494         PR target/40457
27495         * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
27496         moves.
27498 2023-01-13  Eric Botcazou  <ebotcazou@adacore.com>
27500         PR rtl-optimization/108274
27501         * function.cc (thread_prologue_and_epilogue_insns): Also update the
27502         DF information for calls in a few more cases.
27504 2023-01-13  John David Anglin  <danglin@gcc.gnu.org>
27506         * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
27507         * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
27508         define.
27509         * config/pa/pa.h (TARGET_SYNC_LIBCALLS): Use flag_sync_libcalls.
27510         (MAX_SYNC_LIBFUNC_SIZE): Define.
27511         (TARGET_CPU_CPP_BUILTINS): Define __SOFTFP__ when soft float is
27512         enabled.
27513         * config/pa/pa.md (atomic_storeqi): Emit __atomic_exchange_1
27514         libcall when sync libcalls are disabled.
27515         (atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
27516         (atomic_loaddi): Emit __atomic_load_8 libcall when sync libcalls
27517         are disabled on 32-bit target.
27518         * config/pa/pa.opt (matomic-libcalls): New option.
27519         * doc/invoke.texi (HPPA Options): Update.
27521 2023-01-13  Alexander Monakov  <amonakov@ispras.ru>
27523         PR rtl-optimization/108117
27524         PR rtl-optimization/108132
27525         * sched-deps.cc (deps_analyze_insn): Do not schedule across
27526         calls before reload.
27528 2023-01-13  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
27530         * common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
27531         options for -mlibarch.
27532         * config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
27533         * doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
27535 2023-01-13  Qing Zhao  <qing.zhao@oracle.com>
27537         * attribs.cc (strict_flex_array_level_of): Move this function to ...
27538         * attribs.h (strict_flex_array_level_of): Remove the declaration.
27539         * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
27540         replace the referece to strict_flex_array_level_of with
27541         DECL_NOT_FLEXARRAY.
27542         * tree.cc (component_ref_size): Likewise.
27544 2023-01-13  Richard Biener  <rguenther@suse.de>
27546         PR target/55522
27547         * config/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
27548         crtfastmath.o for -shared.
27549         * config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.
27551 2023-01-13  Richard Biener  <rguenther@suse.de>
27553         PR target/55522
27554         * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
27555         crtfastmath.o for -shared.
27556         * config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
27557         Likewise.
27558         * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
27559         Likewise.
27561 2023-01-13  Richard Sandiford  <richard.sandiford@arm.com>
27563         * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
27564         function.
27565         (TARGET_DWARF_FRAME_REG_MODE): Define.
27567 2023-01-13  Richard Biener  <rguenther@suse.de>
27569         PR target/107209
27570         * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
27571         update EH info on the fly.
27573 2023-01-13  Richard Biener  <rguenther@suse.de>
27575         PR tree-optimization/108387
27576         * tree-ssa-sccvn.cc (visit_nary_op): Check for SSA_NAME
27577         value before inserting expression into the tables.
27579 2023-01-12  Andrew Pinski  <apinski@marvell.com>
27580             Roger Sayle  <roger@nextmovesoftware.com>
27582         PR tree-optimization/92342
27583         * match.pd ((m1 CMP m2) * d -> (m1 CMP m2) ? d : 0):
27584         Use tcc_comparison and :c for the multiply.
27585         (b & -(a CMP c) -> (a CMP c)?b:0): New pattern.
27587 2023-01-12  Christophe Lyon  <christophe.lyon@arm.com>
27588             Richard Sandiford  <richard.sandiford@arm.com>
27590         PR target/105549
27591         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment):
27592         Check DECL_PACKED for bitfield.
27593         (aarch64_layout_arg): Warn when parameter passing ABI changes.
27594         (aarch64_function_arg_boundary): Do not warn here.
27595         (aarch64_gimplify_va_arg_expr): Warn when parameter passing ABI
27596         changes.
27598 2023-01-12  Christophe Lyon  <christophe.lyon@arm.com>
27599             Richard Sandiford  <richard.sandiford@arm.com>
27601         * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
27602         comment.
27603         (aarch64_layout_arg): Factorize warning conditions.
27604         (aarch64_function_arg_boundary): Fix typo.
27605         * function.cc (currently_expanding_function_start): New variable.
27606         (expand_function_start): Handle
27607         currently_expanding_function_start.
27608         * function.h (currently_expanding_function_start): Declare.
27610 2023-01-12  Richard Biener  <rguenther@suse.de>
27612         PR tree-optimization/99412
27613         * tree-ssa-reassoc.cc (is_phi_for_stmt): Remove.
27614         (swap_ops_for_binary_stmt): Remove reduction handling.
27615         (rewrite_expr_tree_parallel): Adjust.
27616         (reassociate_bb): Likewise.
27617         * tree-parloops.cc (build_new_reduction): Handle MINUS_EXPR.
27619 2023-01-12  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
27621         * config/xtensa/xtensa.md (ctzsi2, ffssi2):
27622         Rearrange the emitting codes.
27624 2023-01-12  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
27626         * config/xtensa/xtensa.md (*btrue):
27627         Correct value of the attribute "length" that depends on
27628         TARGET_DENSITY and operands, and add '?' character to the register
27629         constraint of the compared operand.
27631 2023-01-12  Alexandre Oliva  <oliva@adacore.com>
27633         * hash-table.h (expand): Check elements and deleted counts.
27634         (verify): Likewise.
27636 2023-01-11  Roger Sayle  <roger@nextmovesoftware.com>
27638         PR tree-optimization/71343
27639         * tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make
27640         the value number of the expression X << C the same as the value
27641         number for the multiplication X * (1<<C).
27643 2023-01-11  David Faust  <david.faust@oracle.com>
27645         PR target/108293
27646         * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
27647         floating point modes.
27649 2023-01-11  Eric Botcazou  <ebotcazou@adacore.com>
27651         PR tree-optimization/108199
27652         * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
27653         for bit-field references.
27655 2023-01-11  Kewen Lin  <linkw@linux.ibm.com>
27657         * config/rs6000/rs6000.cc (rs6000_option_override_internal): Make
27658         OPTION_MASK_P10_FUSION implicit setting honour Power10 tuning setting.
27659         * config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER): Remove
27660         OPTION_MASK_P10_FUSION.
27662 2023-01-11  Richard Biener  <rguenther@suse.de>
27664         PR tree-optimization/107767
27665         * tree-cfgcleanup.cc (phi_alternatives_equal): Export.
27666         * tree-cfgcleanup.h (phi_alternatives_equal): Declare.
27667         * tree-switch-conversion.cc (switch_conversion::collect):
27668         Count unique non-default targets accounting for later
27669         merging opportunities.
27671 2023-01-11  Martin Liska  <mliska@suse.cz>
27673         PR middle-end/107976
27674         * params.opt: Limit JT params.
27675         * stmt.cc (emit_case_dispatch_table): Use auto_vec.
27677 2023-01-11  Richard Biener  <rguenther@suse.de>
27679         PR tree-optimization/108352
27680         * tree-ssa-threadbackward.cc
27681         (back_threader_profitability::profitable_path_p): Adjust
27682         heuristic that allows non-multi-way branch threads creating
27683         irreducible loops.
27684         * doc/invoke.texi (--param fsm-scale-path-blocks): Remove.
27685         (--param fsm-scale-path-stmts): Adjust.
27686         * params.opt (--param=fsm-scale-path-blocks=): Remove.
27687         (-param=fsm-scale-path-stmts=): Adjust description.
27689 2023-01-11  Richard Biener  <rguenther@suse.de>
27691         PR tree-optimization/108353
27692         * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
27693         Remove.
27694         (add_ssa_edge): Simplify.
27695         (add_control_edge): Likewise.
27696         (ssa_prop_init): Likewise.
27697         (ssa_prop_fini): Likewise.
27698         (ssa_propagation_engine::ssa_propagate): Likewise.
27700 2023-01-11  Andreas Krebbel  <krebbel@linux.ibm.com>
27702         * config/s390/s390.md (*not<mode>): New pattern.
27704 2023-01-11  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
27706         * config/xtensa/xtensa.cc (xtensa_insn_cost):
27707         Let insn cost for size be obtained by applying COSTS_N_INSNS()
27708         to instruction length and then dividing by 3.
27710 2023-01-10  Richard Biener  <rguenther@suse.de>
27712         PR tree-optimization/106293
27713         * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
27714         process degenerate PHI defs.
27716 2023-01-10  Roger Sayle  <roger@nextmovesoftware.com>
27718         PR rtl-optimization/106421
27719         * cprop.cc (bypass_block): Check that DEST is local to this
27720         function (non-NULL) before calling find_edge.
27722 2023-01-10  Martin Jambor  <mjambor@suse.cz>
27724         PR ipa/108110
27725         * ipa-param-manipulation.h (ipa_param_body_adjustments): New members
27726         sort_replacements, lookup_first_base_replacement and
27727         m_sorted_replacements_p.
27728         * ipa-param-manipulation.cc: Define INCLUDE_ALGORITHM.
27729         (ipa_param_body_adjustments::register_replacement): Set
27730         m_sorted_replacements_p to false.
27731         (compare_param_body_replacement): New function.
27732         (ipa_param_body_adjustments::sort_replacements): Likewise.
27733         (ipa_param_body_adjustments::common_initialization): Call
27734         sort_replacements.
27735         (ipa_param_body_adjustments::ipa_param_body_adjustments): Initialize
27736         m_sorted_replacements_p.
27737         (ipa_param_body_adjustments::lookup_replacement_1): Rework to use
27738         std::lower_bound.
27739         (ipa_param_body_adjustments::lookup_first_base_replacement): New
27740         function.
27741         (ipa_param_body_adjustments::modify_call_stmt): Use
27742         lookup_first_base_replacement.
27743         * omp-simd-clone.cc (ipa_simd_modify_function_body): Call
27744         adjustments->sort_replacements.
27746 2023-01-10  Richard Biener  <rguenther@suse.de>
27748         PR tree-optimization/108314
27749         * tree-vect-stmts.cc (vectorizable_condition): Do not
27750         perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
27752 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
27754         * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
27756 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
27758         * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
27760 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
27762         * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
27763         defines for soft float abi.
27765 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
27767         * config/csky/csky.md (smart_bseti): Change condition to CSKY_ISA_FEATURE (E1).
27768         (smart_bclri): Likewise.
27769         (fast_bseti): Change condition to CSKY_ISA_FEATURE (E2).
27770         (fast_bclri): Likewise.
27771         (fast_cmpnesi_i): Likewise.
27772         (*fast_cmpltsi_i): Likewise.
27773         (*fast_cmpgeusi_i): Likewise.
27775 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
27777         * config/csky/csky_insn_fpuv3.md (l<frm_pattern><fixsuop><mode>si2): Test
27778         flag_fp_int_builtin_inexact || !flag_trapping_math.
27779         (<frm_pattern><mode>2): Likewise.
27781 2023-01-10  Andreas Krebbel  <krebbel@linux.ibm.com>
27783         * config/s390/s390.cc (s390_register_info): Check call_used_regs
27784         instead of hard-coding the register numbers for call saved
27785         registers.
27786         (s390_optimize_register_info): Likewise.
27788 2023-01-09  Eric Botcazou  <ebotcazou@adacore.com>
27790         * doc/gm2.texi (Overview): Fix @node markers.
27791         (Using): Likewise.  Remove subsections that were moved to Overview
27792         from the menu and move others around.
27794 2023-01-09  Richard Biener  <rguenther@suse.de>
27796         PR middle-end/108209
27797         * genmatch.cc (commutative_op): Fix return value for
27798         user-id with non-commutative first replacement.
27800 2023-01-09  Jakub Jelinek  <jakub@redhat.com>
27802         PR target/107453
27803         * calls.cc (expand_call): For calls with
27804         TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
27805         Formatting fix.
27807 2023-01-09  Richard Biener  <rguenther@suse.de>
27809         PR middle-end/69482
27810         * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
27811         qualified accesses also force objects to memory.
27813 2023-01-09  Martin Liska  <mliska@suse.cz>
27815         PR lto/108330
27816         * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
27817         NULL (deleleted value) to a hash_set.
27819 2023-01-08  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
27821         * config/xtensa/xtensa.md (*splice_bits):
27822         New insn_and_split pattern.
27824 2023-01-07  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
27826         * config/xtensa/xtensa.cc
27827         (xtensa_split_imm_two_addends, xtensa_emit_add_imm):
27828         New helper functions.
27829         (xtensa_set_return_address, xtensa_output_mi_thunk):
27830         Change to use the helper function.
27831         (xtensa_emit_adjust_stack_ptr): Ditto.
27832         And also change to try reusing the content of scratch register
27833         A9 if the register is not modified in the function body.
27835 2023-01-07  LIU Hao  <lh_mouse@126.com>
27837         PR middle-end/108300
27838         * config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
27839         before <windows.h>.
27840         * diagnostic-color.cc: Likewise.
27841         * plugin.cc: Likewise.
27842         * prefix.cc: Likewise.
27844 2023-01-06  Joseph Myers  <joseph@codesourcery.com>
27846         * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
27847         for handling real integer types.
27849 2023-01-06  Tamar Christina  <tamar.christina@arm.com>
27851         Revert:
27852         2022-12-12  Tamar Christina  <tamar.christina@arm.com>
27854         * config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
27855         (mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
27856         aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
27857         @aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
27858         reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
27859         aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
27860         vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
27861         (aarch64_simd_dupv2hf): New.
27862         * config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
27863         Add E_V2HFmode.
27864         * config/aarch64/iterators.md (VHSDF_P): New.
27865         (V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
27866         Vel, q, vp): Add V2HF.
27867         * config/arm/types.md (neon_fp_reduc_add_h): New.
27869 2023-01-06  Martin Liska  <mliska@suse.cz>
27871         PR middle-end/107966
27872         * doc/options.texi: Fix Var documentation in internal manual.
27874 2023-01-05  Roger Sayle  <roger@nextmovesoftware.com>
27876         Revert:
27877         2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
27879         * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
27880         RTL expansion to allow condition (mask) to be shared/reused,
27881         by avoiding overwriting pseudos and adding REG_EQUAL notes.
27883 2023-01-05  Iain Sandoe  <iain@sandoe.co.uk>
27885         * common.opt: Add -static-libgm2.
27886         * config/darwin.h (LINK_SPEC): Handle static-libgm2.
27887         * doc/gm2.texi: Document static-libgm2.
27888         * gcc.cc (driver_handle_option): Allow static-libgm2.
27890 2023-01-05  Tejas Joshi  <TejasSanjay.Joshi@amd.com>
27892         * common/config/i386/i386-common.cc (processor_alias_table):
27893         Use CPU_ZNVER4 for znver4.
27894         * config/i386/i386.md: Add znver4.md.
27895         * config/i386/znver4.md: New.
27897 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
27899         PR tree-optimization/108253
27900         * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
27901         types.
27903 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
27905         PR middle-end/108237
27906         * generic-match-head.cc: Include tree-pass.h.
27907         (canonicalize_math_p, optimize_vectors_before_lowering_p): Define
27908         to false if cfun and cfun->curr_properties has PROP_gimple_opt_math
27909         resp. PROP_gimple_lvec property set.
27911 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
27913         PR sanitizer/108256
27914         * convert.cc (do_narrow): Punt for MULT_EXPR if original
27915         type doesn't wrap around and -fsanitize=signed-integer-overflow
27916         is on.
27917         * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
27919 2023-01-04  Hu, Lin1  <lin1.hu@intel.com>
27921         * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
27922         * common/config/i386/i386-common.cc: Add Emeraldrapids.
27924 2023-01-04  Hu, Lin1  <lin1.hu@intel.com>
27926         * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
27927         for meteorlake.
27929 2023-01-03  Sandra Loosemore  <sandra@codesourcery.com>
27931         * cgraph.h (struct cgraph_node): Add gc_candidate bit, modify
27932         default constructor to initialize it.
27933         * cgraphunit.cc (expand_all_functions): Save gc_candidate functions
27934         for last and iterate to handle recursive calls.  Delete leftover
27935         candidates at the end.
27936         * omp-simd-clone.cc (simd_clone_create): Set gc_candidate bit
27937         on local clones.
27938         * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
27939         gc_candidate bit when a clone is used.
27941 2023-01-03  Florian Weimer  <fweimer@redhat.com>
27943         Revert:
27944         2023-01-02  Florian Weimer  <fweimer@redhat.com>
27946         * dwarf2cfi.cc (init_return_column_size): Remove.
27947         (init_one_dwarf_reg_size): Adjust.
27948         (generate_dwarf_reg_sizes): New function.  Extracted
27949         from expand_builtin_init_dwarf_reg_sizes.
27950         (expand_builtin_init_dwarf_reg_sizes): Call
27951         generate_dwarf_reg_sizes.
27952         * target.def (init_dwarf_reg_sizes_extra): Adjust
27953         hook signature.
27954         * config/msp430/msp430.cc
27955         (msp430_init_dwarf_reg_sizes_extra): Adjust.
27956         * config/rs6000/rs6000.cc
27957         (rs6000_init_dwarf_reg_sizes_extra): Likewise.
27958         * doc/tm.texi: Update.
27960 2023-01-03  Florian Weimer  <fweimer@redhat.com>
27962         Revert:
27963         2023-01-02  Florian Weimer  <fweimer@redhat.com>
27965         * debug.h (dwarf_reg_sizes_constant): Declare.
27966         * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
27968 2023-01-03  Siddhesh Poyarekar  <siddhesh@gotplt.org>
27970         PR tree-optimization/105043
27971         * doc/extend.texi (Object Size Checking): Split out into two
27972         subsections and mention _FORTIFY_SOURCE.
27974 2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
27976         * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
27977         RTL expansion to allow condition (mask) to be shared/reused,
27978         by avoiding overwriting pseudos and adding REG_EQUAL notes.
27980 2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
27982         PR target/108229
27983         * config/i386/i386-features.cc
27984         (general_scalar_chain::compute_convert_gain) <case PLUS>: Consider
27985         the gain/cost of converting a MEM operand.
27987 2023-01-03  Jakub Jelinek  <jakub@redhat.com>
27989         PR middle-end/108264
27990         * expr.cc (store_expr): For stores into SUBREG_PROMOTED_* targets
27991         from source which doesn't have scalar integral mode first convert
27992         it to outer_mode.
27994 2023-01-03  Jakub Jelinek  <jakub@redhat.com>
27996         PR rtl-optimization/108263
27997         * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
27998         asm goto to EXIT.
28000 2023-01-02  Alexander Monakov  <amonakov@ispras.ru>
28002         PR target/87832
28003         * config/i386/lujiazui.md (lujiazui_div): New automaton.
28004         (lua_div): New unit.
28005         (lua_idiv_qi): Correct unit in the reservation.
28006         (lua_idiv_qi_load): Ditto.
28007         (lua_idiv_hi): Ditto.
28008         (lua_idiv_hi_load): Ditto.
28009         (lua_idiv_si): Ditto.
28010         (lua_idiv_si_load): Ditto.
28011         (lua_idiv_di): Ditto.
28012         (lua_idiv_di_load): Ditto.
28013         (lua_fdiv_SF): Ditto.
28014         (lua_fdiv_SF_load): Ditto.
28015         (lua_fdiv_DF): Ditto.
28016         (lua_fdiv_DF_load): Ditto.
28017         (lua_fdiv_XF): Ditto.
28018         (lua_fdiv_XF_load): Ditto.
28019         (lua_ssediv_SF): Ditto.
28020         (lua_ssediv_load_SF): Ditto.
28021         (lua_ssediv_V4SF): Ditto.
28022         (lua_ssediv_load_V4SF): Ditto.
28023         (lua_ssediv_V8SF): Ditto.
28024         (lua_ssediv_load_V8SF): Ditto.
28025         (lua_ssediv_SD): Ditto.
28026         (lua_ssediv_load_SD): Ditto.
28027         (lua_ssediv_V2DF): Ditto.
28028         (lua_ssediv_load_V2DF): Ditto.
28029         (lua_ssediv_V4DF): Ditto.
28030         (lua_ssediv_load_V4DF): Ditto.
28032 2023-01-02  Florian Weimer  <fweimer@redhat.com>
28034         * debug.h (dwarf_reg_sizes_constant): Declare.
28035         * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
28037 2023-01-02  Florian Weimer  <fweimer@redhat.com>
28039         * dwarf2cfi.cc (init_return_column_size): Remove.
28040         (init_one_dwarf_reg_size): Adjust.
28041         (generate_dwarf_reg_sizes): New function.  Extracted
28042         from expand_builtin_init_dwarf_reg_sizes.
28043         (expand_builtin_init_dwarf_reg_sizes): Call
28044         generate_dwarf_reg_sizes.
28045         * target.def (init_dwarf_reg_sizes_extra): Adjust
28046         hook signature.
28047         * config/msp430/msp430.cc
28048         (msp430_init_dwarf_reg_sizes_extra): Adjust.
28049         * config/rs6000/rs6000.cc
28050         (rs6000_init_dwarf_reg_sizes_extra): Likewise.
28051         * doc/tm.texi: Update.
28053 2023-01-02  Jakub Jelinek  <jakub@redhat.com>
28055         * gcc.cc (process_command): Update copyright notice dates.
28056         * gcov-dump.cc (print_version): Ditto.
28057         * gcov.cc (print_version): Ditto.
28058         * gcov-tool.cc (print_version): Ditto.
28059         * gengtype.cc (create_file): Ditto.
28060         * doc/cpp.texi: Bump @copying's copyright year.
28061         * doc/cppinternals.texi: Ditto.
28062         * doc/gcc.texi: Ditto.
28063         * doc/gccint.texi: Ditto.
28064         * doc/gcov.texi: Ditto.
28065         * doc/install.texi: Ditto.
28066         * doc/invoke.texi: Ditto.
28068 2023-01-01  Roger Sayle  <roger@nextmovesoftware.com>
28069             Uroš Bizjak  <ubizjak@gmail.com>
28071         * config/i386/i386.md (extendditi2): New define_insn.
28072         (define_split): Use DWIH mode iterator to treat new extendditi2
28073         identically to existing extendsidi2_1.
28074         (define_peephole2): Likewise.
28075         (define_peephole2): Likewise.
28076         (define_Split): Likewise.
28079 Copyright (C) 2023 Free Software Foundation, Inc.
28081 Copying and distribution of this file, with or without modification,
28082 are permitted in any medium without royalty provided the copyright
28083 notice and this notice are preserved.