1 2023-07-20 Uros Bizjak <ubizjak@gmail.com>
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
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
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>
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>
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
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.
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.
157 (TUPLE_ENTRY): 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.
173 (vuint8mf8_t): Ditto.
175 (vuint8mf4_t): Ditto.
177 (vuint8mf2_t): Ditto.
186 (vint16mf4_t): Ditto.
187 (vuint16mf4_t): Ditto.
188 (vint16mf2_t): Ditto.
189 (vuint16mf2_t): Ditto.
191 (vuint16m1_t): Ditto.
193 (vuint16m2_t): Ditto.
195 (vuint16m4_t): Ditto.
197 (vuint16m8_t): Ditto.
198 (vint32mf2_t): Ditto.
199 (vuint32mf2_t): Ditto.
201 (vuint32m1_t): Ditto.
203 (vuint32m2_t): Ditto.
205 (vuint32m4_t): Ditto.
207 (vuint32m8_t): Ditto.
209 (vuint64m1_t): Ditto.
211 (vuint64m2_t): Ditto.
213 (vuint64m4_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
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
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
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
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
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
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):
364 (ix86_expand_vector_extract): Use gen_vec_extract_lo /
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"
375 2023-07-19 liuhongt <hongtao.liu@intel.com>
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.
412 (same_dw_val_p): Change return type from int to bool and adjust
413 function body accordingly.
414 (same_attr_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
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
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
456 2023-07-18 Richard Biener <rguenther@suse.de>
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>
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>
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.
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
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"
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
566 (find_split_point): Change "unsignedp" variable to bool.
567 (simplify_if_then_else): Change "comparison_p" and "swapped"
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>
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
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>
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
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
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
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
695 * config/i386/i386-c.cc (ix86_target_macros_internal): Add
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
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):
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):
723 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
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
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):
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):
752 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
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
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):
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):
786 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
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
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.
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
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
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
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.
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>
843 * tree-vect-loop.cc (scale_profile_for_vect_loop): Rewrite.
844 (vect_transform_loop): Move scale_profile_for_vect_loop after
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>
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
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.
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,
946 (mve_rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_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
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.
968 (vcmulq_rot180_m): Delete.
969 (vcmulq_rot270_m): Delete.
970 (vcmulq_rot90_m): 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,
1046 (mve_rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_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,
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,
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,
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
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
1256 (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
1258 2023-07-14 Roger Sayle <roger@nextmovesoftware.com>
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>
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
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>
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
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):
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>
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>
1367 * config/pdp11/pdp11.cc (pdp11_expand_epilogue): Also
1368 deallocate alloca-only frame.
1370 2023-07-13 Iain Sandoe <iain@sandoe.co.uk>
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>
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.
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
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.
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.
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
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>):
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
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"
1639 (noce_emit_store_flag): Change return type from int to bool.
1640 Change "reversep" function arg to bool. Change "cond_complex"
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"
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.
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_*
1680 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
1683 * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): Typo.
1685 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
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>
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
1710 * gensupport.cc (find_optab): Shift optab by 20 and mode by
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):
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>
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
1806 (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
1808 (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
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):
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
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
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"
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>
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>
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
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"
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
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>
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
2107 2023-07-07 Roger Sayle <roger@nextmovesoftware.com>
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
2125 * tree-vect-loop-manip.cc (vect_do_peeling): Scale loop profile of the epilogue if bound
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
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
2151 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
2153 * value-range.cc (irange::intersect): Leave normalization to
2156 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
2158 * data-streamer-in.cc (streamer_read_value_range): Adjust for
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):
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
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
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>
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
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'.
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
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
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>
2373 * config/i386/i386.md (movdf_internal): Disparage slightly for
2374 2 alternatives (r,v) and (v,r) by adding constraint modifier
2377 2023-07-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
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
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
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.
2456 (find_conditional_protection): Ditto.
2457 (is_conditionally_protected): 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
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
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>
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>
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>
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
2558 2023-07-05 Jan Beulich <jbeulich@suse.com>
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>
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):
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.
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):
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
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
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):
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>
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>
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>
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
3048 * config/mips/mips.h(__mips_mips16e2): Defined a new
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):
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>
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
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
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
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
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):
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
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>
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>
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
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
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
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
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
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>
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
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>
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>
3459 * config/i386/i386-features.cc (compute_convert_gain): Provide
3460 more accurate gains for conversion of scalar comparisons to
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
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
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>
3486 * config/rs6000/altivec.md (*altivec_vupkhs<VU_char>_direct): Rename
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
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):
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
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
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):
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
3526 * flag-types.h (zero_regs_flags): Add LEAFY_MODE, as well as
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>):
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
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
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
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):
3576 * config/riscv/vector-iterators.md (copysign): Remove ncopysign.
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
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
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
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.
3623 (ipa_get_value_range): Same.
3624 * value-range.cc (gt_pch_nx): Move to ipa-prop.cc and adjust for
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
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):
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
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
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>
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
3687 2023-06-27 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3689 * config/riscv/riscv-v.cc (expand_const_vector): Fix stepped vector
3692 2023-06-26 Andrew Pinski <apinski@marvell.com>
3694 * doc/extend.texi (access attribute): Add
3696 (interrupt/interrupt_handler attribute):
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):
3709 (aarch64_rnd_imm_p): ... This.
3710 * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec):
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):
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
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
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
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
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
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
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
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
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
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>
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
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):
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
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>
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
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
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
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>
4158 * Makefile.in (ANALYZER_OBJS): Add analyzer/access-diagram.o.
4159 * doc/invoke.texi (Wanalyzer-out-of-bounds): Add description of
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>):
4289 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
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>):
4323 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
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>
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>):
4360 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
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>):
4423 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
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>
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
4463 * config/i386/sse.md (*<avx512>_vternlog<mode>_all): Convert to
4464 2-alternative form. Adjust "mode" attribute. Add "enabled"
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>
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>
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>
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
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"
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"
4525 2023-06-20 Martin Jambor <mjambor@suse.cz>
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
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
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>
4621 * dwarf2out.cc (process_scope_var): Continue processing
4622 the decl after setting a parent in case the existing DIE
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
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.
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
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
4721 2023-06-19 Pan Li <pan2.li@intel.com>
4724 * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
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>
4744 * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
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>
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
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.
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
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
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<>
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.
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
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>
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>
4987 * config/i386/sse.md (<sse2_avx2>_packsswb<mask_name>):
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>
5000 * config/i386/i386-expand.cc (ix86_split_mmx_pack): Use
5001 UNSPEC_US_TRUNCATE instead of original us_truncate for
5003 * config/i386/mmx.md (mmx_pack<s_trunsuffix>swb): Substitute
5005 (mmx_packsswb): .. this and ..
5006 (mmx_packuswb): .. this.
5007 (mmx_packusdw): Use UNSPEC_US_TRUNCATE instead of original
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.
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):
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>
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>
5193 * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Fix bug.
5195 2023-06-16 Jakub Jelinek <jakub@redhat.com>
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
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>
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):
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):
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>):
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...
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):
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
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
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
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
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
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>
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
5458 * config/loongarch/loongarch-def.h (loongarch_cpu_align): New
5460 * config/loongarch/loongarch-def.c (loongarch_cpu_align): Define
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>
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
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>):
5492 2023-06-15 Jakub Jelinek <jakub@redhat.com>
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>
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
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
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>
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>
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
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
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
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
5654 (reload_tp_hard): Likewise.
5655 * config/arm/arm.opt (tpidrurw, tpidruro, tpidrprw): New values for
5657 * doc/invoke.texi (Arm Options, mtp): Document new values.
5659 2023-06-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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>
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,
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
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
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
5797 * gimple-range-op.cc (get_code): Rename from get_code_and_type
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.
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
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>
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>
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>
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>
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]:
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
6105 (ipcp_vr_lattice::meet_with_1): Make argument a reference.
6106 (ipcp_vr_lattice::set_to_bottom): Set varying for an unsupported
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>
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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>
6440 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Check param
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>
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
6496 2023-06-09 liuhongt <hongtao.liu@intel.com>
6499 * config/i386/i386.cc (ix86_gimple_fold_builtin): Explicitly
6500 view_convert_expr mask to signed type when folding pblendvb
6503 2023-06-09 liuhongt <hongtao.liu@intel.com>
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
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.
6551 (cfn_sincos): Ditto.
6552 * range-op-float.cc (fold_range): Change class to range_operator.
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>
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
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>
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>
6704 * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin):
6706 (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE
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>
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
6723 2023-06-07 Alex Coplan <alex.coplan@arm.com>
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.
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>):
6744 (*aarch64_sqmovun<mode>_insn<vczle><vczbe>): ... This. Reimplement
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):
6756 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6758 * config/aarch64/aarch64-simd.md (aarch64_addp<mode><vczle><vczbe>):
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
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
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
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>
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
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
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
6919 (gen_ld_cmpi_p10): ... this.
6921 2023-06-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
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):
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.
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>
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):
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
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
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
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>
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
7192 * config/mips/mips.cc (speculation_barrier_libfunc): New static
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
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>
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
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>
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>
7289 * tree-eh.cc (lower_resx): Pass the exception pointer to the
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,
7314 2023-06-03 Fei Gao <gaofei@eswincomputing.com>
7316 * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
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>
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>
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>
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>
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"
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>
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
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>
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>
7439 * doc/install.texi: Document (optional) Perl usage for parallel
7442 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
7445 * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
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
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>
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
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>
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
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):
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):
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.
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>
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>):
7619 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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>
7750 * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
7753 2023-05-31 Richard Biener <rguenther@suse.de>
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):
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):
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
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>
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
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>
7893 * simplify-rtx.cc (simplify_const_relational_operation): Return
7894 early if we have a MODE_CC comparison that isn't a COMPARE against
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.
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
7936 (<u>avg<mode>3_ceil): Rename to...
7937 (<su_optab>avg<mode>3_ceil): ... This. Expand to RTL codes rather than
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>
7947 * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
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):
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.
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
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.
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.
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
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):
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>
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
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
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
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
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
8128 (get_repeating_sequence_dup_machine_mode): New function to get the dup
8130 (expand_vector_init_merge_repeating_sequence): New function to perform
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
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>
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.
8192 * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
8194 * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
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
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
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
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
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):
8268 * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
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>
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
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>
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>
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
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
8349 * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
8352 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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>
8386 * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
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>
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
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>
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
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
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>
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
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>
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>
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
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
8668 (temporal_cache::current_p): Check always_current method.
8669 (temporal_cache::set_always_current): Add param and set value
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_
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>
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
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>
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
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>
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>
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.
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>
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
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
8919 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
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>
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
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
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>
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
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
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*-*-*
9119 2023-05-20 Pan Li <pan2.li@intel.com>
9121 * mode-switching.cc (entity_map): Initialize the array to zero.
9124 2023-05-20 Triffid Hunter <triffid.hunter@gmail.com>
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
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
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
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>
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>
9195 * opts.h (handle_deferred_dump_options): Declare.
9196 * opts-global.cc (handle_common_deferred_options): Do not handle
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>
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.
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
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.
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):
9489 * config/i386/i386.cc (ix86_multiplication_cost): Handle
9490 V4QImode and V8QImode.
9491 * config/i386/mmx.md (mulv8qi3): New expander.
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>
9502 * config.gcc: Use = operator instead of ==.
9504 2023-05-18 Michael Bäuerle <micha@NetBSD.org>
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
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
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
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
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,
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
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>
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.
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
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>
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
9844 2023-05-17 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
9846 * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
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
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
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>
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
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
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.
9919 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
9921 * config/s390/s390-protos.h (s390_expand_cpymem): Change
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
9927 * config/s390/s390.md: Change expander into a version which
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
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.
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.
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
9970 * value-range.cc (irange::union_nonzero_bits): Return TRUE only
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>
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>
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
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>
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
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.
10093 (ix86_expand_vecop_qihi): Initialize interleave functions
10094 for MULT code only. Fix comments.
10096 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
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>
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
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))):
10131 (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
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.
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.
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
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,
10284 * config/arm/arm_mve.h (vfmaq): Remove.
10288 (vfmasq_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,
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
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.
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.
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,
10610 (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
10611 VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_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):
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,
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
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
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
10731 * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
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
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.
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,
10915 (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_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):
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
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):
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
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
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,
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
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
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>
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
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
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
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):
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.
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
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
11899 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11901 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): 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.
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):
11981 * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
11983 * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
11985 * config/arm/arm_mve.h (vrev16q): 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.
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.
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
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
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
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>
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
12584 2023-05-10 Jakub Jelinek <jakub@redhat.com>
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>
12600 * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
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>
12609 * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
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>
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
12646 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
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
12665 * config/arm/arm_mve.h (vminaq): 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):
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>):
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
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>):
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.
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>):
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)
12901 * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
12903 * config/arm/arm_mve.h (vminvq): 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.
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):
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
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.
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.
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>):
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.
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,
13242 (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_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.
13275 (vrndaq_m): Remove.
13276 (vrndmq_m): Remove.
13277 (vrndnq_m): Remove.
13278 (vrndpq_m): Remove.
13280 (vrndxq_m): 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.
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.
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.
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.
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.
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.
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 ...
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.
13626 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
13628 * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
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):
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
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
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
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
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
13751 Don't update the stat on removal statements.
13753 2023-05-07 Andrew Pinski <apinski@marvell.com>
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>
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
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
13853 2023-05-06 Xi Ruoyao <xry111@xry111.site>
13856 * Makefile.in (s-macro_list): Pass -nostdinc to
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>
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.
13958 (vrshrq_m): Remove.
13960 (vrshrq_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
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.
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):
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,
14155 * config/arm/arm_mve.h (vshrnbq): 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.
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>):
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):
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.
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.
14450 (vshlq_m_r): Remove.
14452 (vshlq_m_n): 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.
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.
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.
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
14779 (@mve_<mve_insn>q_r_<supf><mode>): ... this.
14780 (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
14782 (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
14783 (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
14785 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14786 * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
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
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.
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
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>
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>
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>
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>
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>
14992 * genmatch.cc (decision_tree::gen, write_predicate): Generate new
14994 (dt_simplify::gen_1): Use it.
14996 2023-05-05 Tamar Christina <tamar.christina@arm.com>
14999 * genmatch.cc (output_line_directive): Only emit commented directive
15002 2023-05-05 Tamar Christina <tamar.christina@arm.com>
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>
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,
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>
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
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):
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):
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>
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>
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):
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):
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>
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
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
15283 2023-05-03 Alexander Monakov <amonakov@ispras.ru>
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>
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
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>
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)
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.
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.
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.
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.
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.
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
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,
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.
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.
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.
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.
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
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):
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.
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.
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.
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):
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
16416 * config/arm/mve.md
16417 (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
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
16425 (mve_<mve_addsubmul>q<mode>): ... this.
16426 (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
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>):
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
16461 * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
16462 * config/arm/arm-mve-builtins-shapes.h (inherent): New
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
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
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
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
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.
16756 (all_unsigned): New.
16758 (integer_8_16): New.
16759 (integer_16_32): New.
16761 (signed_16_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.
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
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):
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>
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):
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):
16971 (optimize_spaceship): Take a gcond * argument, avoid
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):
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):
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.
16995 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16996 * config/riscv/riscv-vector-builtins-functions.def (vlseg):
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.
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
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
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.
17057 (floattype): Ditto.
17059 * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
17060 * config/riscv/riscv-vector-builtins-functions.def (vset): Add
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):
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
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):
17347 (register_tuple_type): New function
17348 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
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):
17553 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
17554 * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
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
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>
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>
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
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>
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
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>
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
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>
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
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
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
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.
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
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.
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.
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.
17947 (range_uint128): New.
17948 (range_uchar): 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.
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
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
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
18017 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
18019 * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
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
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
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
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>
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
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.
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)"
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
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>
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>
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
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
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
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
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
18493 2023-04-27 Richard Biener <rguenther@suse.de>
18496 * ipa-param-manipulation.h
18497 (ipa_param_body_adjustments::modify_expression): Add extra_stmts
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
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
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>
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.
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.
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
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
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
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
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.
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>
18872 (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
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):
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):
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.
18942 (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
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>
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
18977 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
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
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>
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):
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>
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>
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
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
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
19135 2023-04-24 Andrew Pinski <apinski@marvell.com>
19137 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
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.
19184 (Options specification, --with-gnu-as): as and gas always differ
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>
19203 * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
19205 * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
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
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
19258 * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
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):
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):
19286 (back_threader_profitability::possibly_profitable_path_p):
19288 * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
19290 * tree-switch-conversion.cc (pass_convert_switch::execute):
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>
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
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
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>
19417 * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
19418 * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
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>
19432 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
19433 (add_vec_concat_subst_be): 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
19455 2023-04-21 Jan Hubicka <jh@suse.cz>
19457 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
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
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
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
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 *,
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
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>
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>
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>
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
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>
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.
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>
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,
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>
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
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
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):
19738 * config/i386/i386.md (aes): New isa attribute.
19739 * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
19740 (aesenclast): 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
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
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
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,
19912 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
19914 * config/i386/sse.md: Modify insn vperm{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
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.
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>
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,
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):
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
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>
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
20174 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
20176 * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
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>
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>):
20201 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
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
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>
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.
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
20298 2023-04-18 Kito Cheng <kito.cheng@sifive.com>
20300 * doc/extend.texi (Target Builtins): Add RISC-V Vector
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):
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
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
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
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
20469 * config/loongarch/predicates.md (const_dual_imm12_operand): New
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
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
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
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
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
20524 2023-04-17 Aldy Hernandez <aldyh@redhat.com>
20526 * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
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>
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
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
20575 * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
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>
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>
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
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>
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>
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
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>
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>
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
20703 2023-04-12 Jakub Jelinek <jakub@redhat.com>
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>
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>
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>
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>
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
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
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
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
20859 2023-04-06 Richard Earnshaw <rearnsha@arm.com>
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>
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>
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
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
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
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>
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>
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>
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>
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
21043 2023-04-01 Jakub Jelinek <jakub@redhat.com>
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
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>
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>
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>):
21097 (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
21098 (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
21100 (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
21102 (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
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>):
21111 (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
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>):
21129 (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
21131 (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
21132 (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
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>
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):
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>
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>
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>
21233 * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
21234 (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
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>
21270 * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
21271 * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
21273 * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
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
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
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>
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
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>
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>
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
21356 * config/i386/sym-mingw32.cc: prevent name mangling of
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>
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.
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
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>
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>
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>
21432 * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
21434 (_mm_slli_si128): ... here. Change to call _mm_bslli_si128 directly.
21436 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
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>
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>
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>
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
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>
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
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>
21552 * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
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):
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):
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):
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.
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
21660 2023-03-23 Pan Li <pan2.li@intel.com>
21661 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
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>
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>
21694 * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
21695 __riscv_vlenb support.
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.
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.
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):
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
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
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
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
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
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
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>
21931 * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
21932 (init_float128_ieee): Delete code to switch complex multiply and divide
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>
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>:
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>
21958 * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
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
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>
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>
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
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
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
22026 (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
22027 * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
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
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
22071 (pass_waccess::check_pointer_uses): Process all PHIs.
22073 2023-03-15 David Malcolm <dmalcolm@redhat.com>
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
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"
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
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
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>
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
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):
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
22161 * config/riscv/riscv.cc (riscv_split_doubleword_move):
22162 Add split code for XTheadFmv.
22163 (riscv_secondary_memory_needed): XTheadFmv does not need
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):
22192 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
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
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>
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>
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>
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
22295 2023-03-14 Martin Jambor <mjambor@suse.cz>
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'
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>
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>
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>
22436 * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
22439 2023-03-12 Tamar Christina <tamar.christina@arm.com>
22440 Andrew MacLeod <amacleod@redhat.com>
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):
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>
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
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
22490 2023-03-11 Gerald Pfeifer <gerald@pfeifer.com>
22492 * doc/extend.texi (Named Address Spaces): Drop a redundant link
22495 2023-03-11 Jeff Law <jlaw@ventanamicro>
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
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>
22512 * optabs.cc (expand_fix): For conversions from BFmode to integral,
22513 use shifts to convert it to SFmode first and then convert SFmode
22516 2023-03-10 Andrew Pinski <apinski@marvell.com>
22518 * config/aarch64/aarch64.md: Add a new define_split
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>
22536 * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
22538 * config/i386/t-cygwin-w64: Remove.
22540 2023-03-10 Jakub Jelinek <jakub@redhat.com>
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
22552 * tree.cc (tree_code_type, tree_code_length): Remove.
22554 2023-03-10 Jakub Jelinek <jakub@redhat.com>
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
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>
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
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.
22601 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22602 * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
22604 * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
22605 (struct fault_load_def): 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>
22708 * doc/extend.texi (Type Traits):: Document __is_deducible.
22710 2023-03-09 Costas Argyris <costas.argyris@gmail.com>
22713 * config.host: add object for x86_64-*-mingw*.
22714 * config/i386/sym-mingw32.cc: dummy file to attach
22716 * config/i386/utf8-mingw32.rc: windres resource file.
22717 * config/i386/winnt-utf8.manifest: XML manifest to
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>
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>
22759 * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
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
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>
22791 * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
22793 (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
22794 (X86_TUNE_USE_SCATTER): Likewise.
22796 2023-03-06 Xi Ruoyao <xry111@xry111.site>
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
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.
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
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.
22885 2023-03-05 Vineet Gupta <vineetg@rivosinc.com>
22887 * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
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.
22905 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22906 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
22922 (vundefined): Add new intrinsic.
22923 (vreinterpret): Ditto.
22924 (vlmul_ext): Ditto.
22925 (vlmul_trunc): 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.
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.
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.
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.
23088 (unsigned_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.
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.
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.
23250 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23251 * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
23255 * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): 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
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
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>
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
23438 2023-03-03 Richard Biener <rguenther@suse.de>
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
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
23458 2023-03-03 Richard Biener <rguenther@suse.de>
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>
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
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
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
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>
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>
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
23573 2023-03-01 Jakub Jelinek <jakub@redhat.com>
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
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>
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
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>
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
23652 2023-02-27 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
23654 * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
23656 * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
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>
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>
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
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
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>
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)
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>
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>
23891 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
23894 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
23896 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
23897 (sibcall_value, sibcall_value_internal): Add 'use' expression
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.
23932 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23933 * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
23942 (vwredsumu): Ditto.
23943 (vfredusum): Ditto.
23944 (vfredosum): Ditto.
23947 (vfwredosum): Ditto.
23948 (vfwredusum): Ditto.
23949 * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): 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.
24056 * config/riscv/riscv-vector-builtins-bases.h:
24057 * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
24101 (vfcvt_rtz_x): Ditto.
24102 (vfcvt_rtz_xu): Ditto.
24105 (vfwcvt_xu): Ditto.
24106 (vfwcvt_rtz_x): Ditto.
24107 (vfwcvt_rtz_xu): Ditto.
24110 (vfncvt_xu): Ditto.
24111 (vfncvt_rtz_x): Ditto.
24112 (vfncvt_rtz_xu): 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.
24161 (xu_v): 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.
24172 (fixuns_trunc): 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>
24251 * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
24253 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
24256 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
24258 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
24259 (sibcall_value, sibcall_value_internal): Add 'use' expression
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>
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>
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
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
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
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>
24346 * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
24347 * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
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
24362 * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
24363 multiarch tuple for lp64d "loongarch64-linux-gnu" (without
24366 2023-02-18 Andrew Pinski <apinski@marvell.com>
24368 * match.pd: Remove #if GIMPLE around the
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
24381 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
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>
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
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.
24431 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24432 * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
24451 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
24452 (struct mask_alu_def): 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.
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.
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.
24571 (get_avl_type): Ditto.
24572 (calculate_ratio): Ditto.
24573 (enum vlmul_type): 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.
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.
24636 * lra-int.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.
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
24710 2023-02-15 Eric Botcazou <ebotcazou@adacore.com>
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.
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
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
24789 (class imac): New class.
24790 (enum widen_ternop_type): New enum.
24791 (class iwmac): New class.
24793 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24794 * config/riscv/riscv-vector-builtins-functions.def (vmacc): 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.
24840 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24841 * config/riscv/riscv-vector-builtins-functions.def (vmseq): 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>
24885 * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
24886 creation of non-scalar replacements even if IPA-CP knows their
24889 2023-02-15 Jakub Jelinek <jakub@redhat.com>
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>
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
24920 2023-02-15 Richard Biener <rguenther@suse.de>
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>
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
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>
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
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>
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
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.
25102 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25103 * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
25112 * config/riscv/vector-iterators.md (su): Add instruction.
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.
25131 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25132 * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
25139 * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
25140 (struct move_def): 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.
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.
25169 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
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.
25202 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25203 * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
25205 * config/riscv/riscv-vector-builtins-shapes.cc
25206 (struct no_mask_policy_def): 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
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
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"
25256 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
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
25264 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
25266 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
25267 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
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.
25279 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25280 * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
25284 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
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.
25349 * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
25350 * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
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
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
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.
25417 * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
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.
25432 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25433 * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
25454 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
25455 (struct alu_def): 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>
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.
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.
25523 (neg_simm5_p): Ditto.
25524 (has_vi_variant_p): Ditto.
25525 * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
25527 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25528 * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
25531 (vminu): Remove signed cases.
25533 (vdiv): Remove unsigned cases.
25535 (vdivu): Remove signed cases.
25539 (vrsub): New class.
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
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>
25566 2023-02-09 Martin Liska <mliska@suse.cz>
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
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
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>
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
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>
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
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>
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
25658 * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
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
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>
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
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
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
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
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
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>
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
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.
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
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>
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.
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.
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
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>
25915 PR rtl-optimization/108463
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>
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
25961 (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
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
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
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.
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
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
26012 * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
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>
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>
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
26036 (arm_init_crypto_builtins): Likewise.
26038 2023-02-02 Jakub Jelinek <jakub@redhat.com>
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):
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
26091 (all_extensions): Set new field native_detect.
26092 * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
26095 2023-02-01 Martin Liska <mliska@suse.cz>
26097 * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
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>
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>
26116 * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
26119 2023-02-01 Jakub Jelinek <jakub@redhat.com>
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
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.
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.
26206 * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
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>
26239 * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
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>
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>
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.
26311 * config/riscv/riscv-vector-builtins-bases.h: New function declare.
26312 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
26328 * config/riscv/riscv-vector-builtins-shapes.cc
26329 (struct indexed_loadstore_def): New class.
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
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
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
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>
26406 * cgraph.cc (possibly_call_in_translation_unit_p): Relax
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
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
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):
26456 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
26457 * config/riscv/riscv-vector-builtins-functions.def (vlse): 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>
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>
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>
26501 * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
26504 2023-01-27 Richard Biener <rguenther@suse.de>
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.
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.
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>
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>
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
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>
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
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
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
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):
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>
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>):
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
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
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
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
26940 2023-01-24 Andre Vieira <andre.simoesdiasvieira@arm.com>
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
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>
26967 * optc-save-gen.awk: Fix copy-and-paste error.
26969 2023-01-24 Jakub Jelinek <jakub@redhat.com>
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>
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>
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>
26999 * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
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
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
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'
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
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):
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):
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
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
27175 * config/aarch64/aarch64.opt: Include aarch-common.h to import
27176 type move. Fix up name changes from factoring out common code and
27178 * config/arm/aarch-common-protos.h: Export factored out routines to both
27180 * config/arm/aarch-common.cc: Include newly factored out types.
27181 Move all mbranch-protection code and data structures from
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
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}
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>
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>
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
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
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>
27279 * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
27280 within debug insns.
27282 2023-01-18 Martin Jambor <mjambor@suse.cz>
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>
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>
27300 * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
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
27326 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
27327 Andrew Pinski <apinski@marvell.com>
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>
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>
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
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>
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>
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>
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>
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
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>
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>
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):
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>
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>
27495 * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
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
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
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>
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>
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):
27558 * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
27561 2023-01-13 Richard Sandiford <richard.sandiford@arm.com>
27563 * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
27565 (TARGET_DWARF_FRAME_REG_MODE): Define.
27567 2023-01-13 Richard Biener <rguenther@suse.de>
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>
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
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
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>
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
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):
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>
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
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
27739 (ipa_param_body_adjustments::lookup_first_base_replacement): New
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
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>
27803 * calls.cc (expand_call): For calls with
27804 TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
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>
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>
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):
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>
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
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
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
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
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>
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
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>
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>
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
27994 2023-01-03 Jakub Jelinek <jakub@redhat.com>
27996 PR rtl-optimization/108263
27997 * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
28000 2023-01-02 Alexander Monakov <amonakov@ispras.ru>
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
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.