1 2023-07-10 Peter Bergner <bergner@linux.ibm.com>
3 * config/rs6000/predicates.md (quad_memory_operand): Remove redundant
5 (vsx_quad_dform_memory_operand): Likewise.
7 2023-07-10 Uros Bizjak <ubizjak@gmail.com>
9 * reorg.cc (stop_search_p): Change return type from int to bool
10 and adjust function body accordingly.
11 (resource_conflicts_p): Ditto.
12 (insn_references_resource_p): Change return type from int to bool.
13 (insn_sets_resource_p): Ditto.
14 (redirect_with_delay_slots_safe_p): Ditto.
15 (condition_dominates_p): Change return type from int to bool
16 and adjust function body accordingly.
17 (redirect_with_delay_list_safe_p): Ditto.
18 (check_annul_list_true_false): Ditto. Change "annul_true_p"
19 function argument to bool.
20 (steal_delay_list_from_target): Change "pannul_p" function
21 argument to bool pointer. Change "must_annul" and "used_annul"
22 variables from int to bool.
23 (steal_delay_list_from_fallthrough): Ditto.
24 (own_thread_p): Change return type from int to bool and adjust
25 function body accordingly. Change "allow_fallthrough" function
27 (reorg_redirect_jump): Change return type from int to bool.
28 (fill_simple_delay_slots): Change "non_jumps_p" function
29 argument from int to bool. Change "maybe_never" varible to bool.
30 (fill_slots_from_thread): Change "likely", "thread_if_true" and
31 "own_thread" function arguments to bool. Change "lose" and
32 "must_annul" variables to bool.
33 (delete_from_delay_slot): Change "had_barrier" variable to bool.
34 (try_merge_delay_insns): Change "annul_p" variable to bool.
35 (fill_eager_delay_slots): Change "own_target" and "own_fallthrouhg"
37 (rest_of_handle_delay_slots): Change return type from int to void
38 and adjust function body accordingly.
40 2023-07-10 Kito Cheng <kito.cheng@sifive.com>
42 * doc/extend.texi (RISC-V Operand Modifiers): New.
44 2023-07-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
46 * config/riscv/riscv-vsetvl.cc (add_label_notes): Remove it.
47 (insert_insn_end_basic_block): Ditto.
48 (pass_vsetvl::commit_vsetvls): Adapt for new helper function.
49 * gcse.cc (insert_insn_end_basic_block): Export as global function.
50 * gcse.h (insert_insn_end_basic_block): Ditto.
52 2023-07-10 Christophe Lyon <christophe.lyon@linaro.org>
55 * config/arm/arm-builtins.cc (arm_init_mve_builtins): Handle LTO.
56 (arm_builtin_decl): Hahndle MVE builtins.
57 * config/arm/arm-mve-builtins.cc (builtin_decl): New function.
58 (add_unique_function): Fix handling of
59 __ARM_MVE_PRESERVE_USER_NAMESPACE.
60 (add_overloaded_function): Likewise.
61 * config/arm/arm-protos.h (builtin_decl): New declaration.
63 2023-07-10 Christophe Lyon <christophe.lyon@linaro.org>
65 * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Document.
67 2023-07-10 Xi Ruoyao <xry111@xry111.site>
69 PR tree-optimization/110557
70 * tree-vect-patterns.cc (vect_recog_bitfield_ref_pattern):
71 Ensure the output sign-extended if necessary.
73 2023-07-10 Roger Sayle <roger@nextmovesoftware.com>
75 * config/i386/i386.md (peephole2): Transform xchg insn with a
76 REG_UNUSED note to a (simple) move.
77 (*insvti_lowpart_1): New define_insn_and_split.
78 (*insvdi_lowpart_1): Likewise.
80 2023-07-10 Roger Sayle <roger@nextmovesoftware.com>
82 * config/i386/i386-features.cc (compute_convert_gain): Tweak
83 gains/costs for ROTATE/ROTATERT by integer constant on AVX512VL.
84 (general_scalar_chain::convert_rotate): On TARGET_AVX512F generate
85 avx512vl_rolv2di or avx412vl_rolv4si when appropriate.
87 2023-07-10 liuhongt <hongtao.liu@intel.com>
90 * config/i386/i386.md (*ieee_max<mode>3_1): New pre_reload
91 splitter to detect fp max pattern.
92 (*ieee_min<mode>3_1): Ditto, but for fp min pattern.
94 2023-07-09 Jan Hubicka <jh@suse.cz>
96 * cfg.cc (check_bb_profile): Dump counts with relative frequency.
97 (dump_edge_info): Likewise.
98 (dump_bb_info): Likewise.
99 * profile-count.cc (profile_count::dump): Add comma between quality and
102 2023-07-08 Jan Hubicka <jh@suse.cz>
104 PR tree-optimization/110600
105 * cfgloopmanip.cc (scale_loop_profile): Add mising profile_dump check.
107 2023-07-08 Jan Hubicka <jh@suse.cz>
110 * cfgloopmanip.cc (scale_loop_profile): Avoid scaling exits within
111 inner loops and be more careful about inconsistent profiles.
112 (duplicate_loop_body_to_header_edge): Fix profile update when eliminated
113 exit is followed by other exit.
115 2023-07-08 Uros Bizjak <ubizjak@gmail.com>
117 * cprop.cc (reg_available_p): Change return type from int to bool.
118 (reg_not_set_p): Ditto.
119 (try_replace_reg): Ditto. Change "success" variable to bool.
120 (cprop_jump): Change return type from int to void
121 and adjust function body accordingly.
122 (constprop_register): Ditto.
123 (cprop_insn): Ditto. Change "changed" variable to bool.
124 (local_cprop_pass): Change return type from int to void
125 and adjust function body accordingly.
126 (bypass_block): Ditto. Change "change", "may_be_loop_header"
127 and "removed_p" variables to bool.
128 (bypass_conditional_jumps): Change return type from int to void
129 and adjust function body accordingly. Change "changed"
131 (one_cprop_pass): Ditto.
133 2023-07-08 Uros Bizjak <ubizjak@gmail.com>
135 * gcse.cc (expr_equiv_p): Change return type from int to bool.
136 (oprs_unchanged_p): Change return type from int to void
137 and adjust function body accordingly.
138 (oprs_anticipatable_p): Ditto.
139 (oprs_available_p): Ditto.
140 (insert_expr_in_table): Ditto. Change "antic_p" and "avail_p"
141 arguments to bool. Change "found" variable to bool.
142 (load_killed_in_block_p): Change return type from int to void and
143 adjust function body accordingly. Change "avail_p" argument to bool.
144 (pre_expr_reaches_here_p): Change return type from int to void
145 and adjust function body accordingly.
146 (pre_delete): Ditto. Change "changed" variable to bool.
147 (pre_gcse): Change return type from int to void
148 and adjust function body accordingly. Change "did_insert" and
149 "changed" variables to bool.
150 (one_pre_gcse_pass): Change return type from int to void
151 and adjust function body accordingly. Change "changed" variable
153 (should_hoist_expr_to_dom): Change return type from int to void
154 and adjust function body accordingly. Change
155 "visited_allocated_locally" variable to bool.
156 (hoist_code): Change return type from int to void and adjust
157 function body accordingly. Change "changed" variable to bool.
158 (one_code_hoisting_pass): Ditto.
159 (pre_edge_insert): Change return type from int to void and adjust
160 function body accordingly. Change "did_insert" variable to bool.
161 (pre_expr_reaches_here_p_work): Change return type from int to void
162 and adjust function body accordingly.
164 (want_to_gcse_p): Change return type from int to void
165 and adjust function body accordingly.
166 (can_assign_to_reg_without_clobbers_p): Update function body
167 for bool return type.
168 (hash_scan_set): Change "antic_p" and "avail_p" variables to bool.
169 (pre_insert_copies): Change "added_copy" variable to bool.
171 2023-07-08 Jonathan Wakely <jwakely@redhat.com>
175 * doc/invoke.texi (Warning Options): Fix typos.
177 2023-07-07 Jan Hubicka <jh@suse.cz>
179 * profile-count.cc (profile_count::dump): Add FUN
180 parameter; print relative frequency.
181 (profile_count::debug): Update.
182 * profile-count.h (profile_count::dump): Update
185 2023-07-07 Roger Sayle <roger@nextmovesoftware.com>
189 * config/i386/i386-expand.cc (ix86_expand_move): Convert SETs of
190 TImode destinations from paradoxical SUBREGs (setting the lowpart)
191 into explicit zero extensions. Use *insvti_highpart_1 instruction
192 to set the highpart of a TImode destination.
194 2023-07-07 Jan Hubicka <jh@suse.cz>
196 * predict.cc (force_edge_cold): Use
197 set_edge_probability_and_rescale_others; improve dumps.
199 2023-07-07 Jan Hubicka <jh@suse.cz>
201 * cfgloopmanip.cc (scale_loop_profile): Fix computation of count_in and scaling blocks
203 * tree-vect-loop-manip.cc (vect_do_peeling): Scale loop profile of the epilogue if bound
206 2023-07-07 Juergen Christ <jchrist@linux.ibm.com>
208 * config/s390/s390.cc (vec_init): Fix default case
210 2023-07-07 Vladimir N. Makarov <vmakarov@redhat.com>
212 * lra-assigns.cc (assign_by_spills): Add reload insns involving
213 reload pseudos with non-refined class to be processed on the next
215 * lra-constraints.cc (enough_allocatable_hard_regs_p): New func.
216 (in_class_p): Use it.
217 (print_curr_insn_alt): New func.
218 (process_alt_operands): Use it. Improve debug info.
219 (curr_insn_transform): Use print_curr_insn_alt. Refine reload
220 pseudo class if it is not refined yet.
222 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
224 * value-range.cc (irange::get_bitmask_from_range): Return all the
225 known bits for a singleton.
226 (irange::set_range_from_bitmask): Set a range of a singleton when
229 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
231 * value-range.cc (irange::intersect): Leave normalization to
234 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
236 * data-streamer-in.cc (streamer_read_value_range): Adjust for
238 * data-streamer-out.cc (streamer_write_vrange): Same.
239 * range-op.cc (operator_cast::fold_range): Same.
240 * value-range-pretty-print.cc
241 (vrange_printer::print_irange_bitmasks): Same.
242 * value-range-storage.cc (irange_storage::write_lengths_address):
244 (irange_storage::set_irange): Same.
245 (irange_storage::get_irange): Same.
246 (irange_storage::size): Same.
247 (irange_storage::dump): Same.
248 * value-range-storage.h: Same.
249 * value-range.cc (debug): New.
250 (irange_bitmask::dump): New.
251 (add_vrange): Adjust for value/mask.
252 (irange::operator=): Same.
254 (irange::verify_range): Same.
255 (irange::operator==): Same.
256 (irange::contains_p): Same.
257 (irange::irange_single_pair_union): Same.
258 (irange::union_): Same.
259 (irange::intersect): Same.
260 (irange::invert): Same.
261 (irange::get_nonzero_bits_from_range): Rename to...
262 (irange::get_bitmask_from_range): ...this.
263 (irange::set_range_from_nonzero_bits): Rename to...
264 (irange::set_range_from_bitmask): ...this.
265 (irange::set_nonzero_bits): Rename to...
266 (irange::update_bitmask): ...this.
267 (irange::get_nonzero_bits): Rename to...
268 (irange::get_bitmask): ...this.
269 (irange::intersect_nonzero_bits): Rename to...
270 (irange::intersect_bitmask): ...this.
271 (irange::union_nonzero_bits): Rename to...
272 (irange::union_bitmask): ...this.
273 (irange_bitmask::verify_mask): New.
274 * value-range.h (class irange_bitmask): New.
275 (irange_bitmask::set_unknown): New.
276 (irange_bitmask::unknown_p): New.
277 (irange_bitmask::irange_bitmask): New.
278 (irange_bitmask::get_precision): New.
279 (irange_bitmask::get_nonzero_bits): New.
280 (irange_bitmask::set_nonzero_bits): New.
281 (irange_bitmask::operator==): New.
282 (irange_bitmask::union_): New.
283 (irange_bitmask::intersect): New.
284 (class irange): Friend vrange_printer.
285 (irange::varying_compatible_p): Adjust for bitmask.
286 (irange::set_varying): Same.
287 (irange::set_nonzero): Same.
289 2023-07-07 Jan Beulich <jbeulich@suse.com>
291 * config/i386/sse.md (*vec_extractv2ti): Drop g modifiers.
293 2023-07-07 Jan Beulich <jbeulich@suse.com>
295 * config/i386/sse.md (@vec_extract_hi_<mode>): Drop last
296 alternative. Switch new last alternative's "isa" attribute to
298 (vec_extract_hi_v32qi): Likewise.
300 2023-07-07 Pan Li <pan2.li@intel.com>
301 Robin Dapp <rdapp@ventanamicro.com>
303 * config/riscv/riscv.cc (riscv_emit_mode_set): Avoid emit insn
305 (riscv_mode_entry): Take FRM_MODE_DYN as entry mode.
306 (riscv_mode_exit): Likewise for exit mode.
307 (riscv_mode_needed): Likewise for needed mode.
308 (riscv_mode_after): Likewise for after mode.
310 2023-07-07 Pan Li <pan2.li@intel.com>
312 * config/riscv/vector.md: Fix typo.
314 2023-07-06 Jan Hubicka <jh@suse.cz>
317 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Scale loop frequency to maximal number
318 of iterations determined.
319 * tree-ssa-loop-ivcanon.cc (try_unroll_loop_completely): Likewise.
321 2023-07-06 Jan Hubicka <jh@suse.cz>
323 * cfgloopmanip.cc (scale_loop_profile): Rewrite exit edge
324 probability update to be safe on loops with subloops.
325 Make bound parameter to be iteration bound.
326 * tree-ssa-loop-ivcanon.cc (try_peel_loop): Update call
327 of scale_loop_profile.
328 * tree-vect-loop-manip.cc (vect_do_peeling): Likewise.
330 2023-07-06 Hao Liu OS <hliu@os.amperecomputing.com>
332 PR tree-optimization/110449
333 * tree-vect-loop.cc (vectorizable_induction): use vec_n to replace
334 vec_loop for the unrolled loop.
336 2023-07-06 Jan Hubicka <jh@suse.cz>
338 * cfg.cc (set_edge_probability_and_rescale_others): New function.
339 (update_bb_profile_for_threading): Use it; simplify the rest.
340 * cfg.h (set_edge_probability_and_rescale_others): Declare.
341 * profile-count.h (profile_probability::apply_scale): New.
343 2023-07-06 Claudiu Zissulescu <claziss@gmail.com>
345 * doc/extend.texi (ARC Built-in Functions): Update documentation
346 with missing builtins.
348 2023-07-06 Richard Biener <rguenther@suse.de>
350 PR tree-optimization/110556
351 * tree-ssa-tail-merge.cc (gimple_equal_p): Check
352 assign code and all operands of non-stores.
354 2023-07-06 Richard Biener <rguenther@suse.de>
356 PR tree-optimization/110563
357 * tree-vectorizer.h (vect_determine_partial_vectors_and_peeling):
358 Remove second argument.
359 * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
360 Remove for_epilogue_p argument. Merge assert ...
361 (vect_analyze_loop_2): ... with check done before determining
362 partial vectors by moving it after.
363 * tree-vect-loop-manip.cc (vect_do_peeling): Adjust.
365 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
367 * ggc-common.cc (gt_pch_note_reorder, gt_pch_save): Tighten up a
368 few things re 'reorder' option and strings.
369 * stringpool.cc (gt_pch_p_S): This is now 'gcc_unreachable'.
371 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
373 * gengtype-parse.cc: Clean up obsolete parametrized structs
375 * gengtype.cc: Likewise.
376 * gengtype.h: Likewise.
378 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
380 * gengtype.cc (struct walk_type_data): Remove 'needs_cast_p'.
383 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
385 * gengtype-parse.cc (token_names): Add '"user"'.
386 * gengtype.h (gty_token): Add 'UNUSED_PARAM_IS' for use with
387 'FIRST_TOKEN_WITH_VALUE'.
389 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
391 * doc/gty.texi (GTY Options) <string_length>: Enhance.
393 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
395 * gengtype.cc (write_root, write_roots): Explicitly reject
396 'string_length' option.
397 * doc/gty.texi (GTY Options) <string_length>: Document.
399 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
401 * ggc-internal.h (ggc_pch_count_object, ggc_pch_alloc_object)
402 (ggc_pch_write_object): Remove 'bool is_string' argument.
403 * ggc-common.cc: Adjust.
404 * ggc-page.cc: Likewise.
406 2023-07-06 Roger Sayle <roger@nextmovesoftware.com>
408 * dwarf2out.cc (mem_loc_descriptor): Handle COPYSIGN.
410 2023-07-06 Hongyu Wang <hongyu.wang@intel.com>
412 * doc/extend.texi: Move x86 inlining rule to a new subsubsection
413 and add description for inling of function with arch and tune
416 2023-07-06 Richard Biener <rguenther@suse.de>
418 PR tree-optimization/110515
419 * tree-ssa-pre.cc (compute_avail): Make code dealing
420 with hoisting loads with different alias-sets more
423 2023-07-06 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
425 * tree-vect-stmts.cc (vect_get_strided_load_store_ops): Fix ICE.
427 2023-07-06 Hongyu Wang <hongyu.wang@intel.com>
429 * config/i386/i386.cc (ix86_can_inline_p): If callee has
430 default arch=x86-64 and tune=generic, do not block the
431 inlining to its caller. Also allow callee with different
432 arch= to be inlined if it has always_inline attribute and
433 it's ISA is subset of caller's.
435 2023-07-06 liuhongt <hongtao.liu@intel.com>
437 * config/i386/i386.cc (ix86_rtx_costs): Adjust rtx_cost for
438 DF/SFmode AND/IOR/XOR/ANDN operations.
440 2023-07-06 Andrew Pinski <apinski@marvell.com>
443 * tree-vect-generic.cc (expand_vector_condition): For comparisons,
444 just build using boolean_type_node instead of the cond_type.
445 For non-comparisons/non-scalar-bitmask, build a ` != 0` gimple
446 that will feed into the COND_EXPR.
448 2023-07-06 liuhongt <hongtao.liu@intel.com>
451 * config/i386/i386.md (movdf_internal): Disparage slightly for
452 2 alternatives (r,v) and (v,r) by adding constraint modifier
455 2023-07-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
458 * config/rs6000/rs6000.cc (rs6000_expand_vector_extract): Remove redundant
459 initialization of new_addr.
461 2023-07-06 Hao Liu <hliu@os.amperecomputing.com>
463 PR tree-optimization/110474
464 * tree-vect-loop.cc (vect_analyze_loop_2): unscale the VF by suggested
465 unroll factor while selecting the epilog vect loop VF.
467 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
469 * gimple-range-gori.cc (compute_operand_range): Convert to a tail
472 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
474 * gimple-range-gori.cc (compute_operand_range): After calling
475 compute_operand2_range, recursively call self if needed.
476 (compute_operand2_range): Turn into a leaf function.
477 (gori_compute::compute_operand1_and_operand2_range): Finish
478 operand2 calculation.
479 * gimple-range-gori.h (compute_operand2_range): Remove name param.
481 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
483 * gimple-range-gori.cc (compute_operand_range): After calling
484 compute_operand1_range, recursively call self if needed.
485 (compute_operand1_range): Turn into a leaf function.
486 (gori_compute::compute_operand1_and_operand2_range): Finish
487 operand1 calculation.
488 * gimple-range-gori.h (compute_operand1_range): Remove name param.
490 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
492 * gimple-range-gori.cc (compute_operand_range): Check for
493 operand interdependence when both op1 and op2 are computed.
494 (compute_operand1_and_operand2_range): No checks required now.
496 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
498 * gimple-range-gori.cc (compute_operand_range): Check for
499 a relation between op1 and op2 and use that instead.
500 (compute_operand1_range): Don't look for a relation override.
501 (compute_operand2_range): Ditto.
503 2023-07-05 Jonathan Wakely <jwakely@redhat.com>
505 * doc/contrib.texi (Contributors): Update my entry.
507 2023-07-05 Filip Kastl <filip.kastl@gmail.com>
509 * value-prof.cc (gimple_mod_subtract_transform): Correct edge
512 2023-07-05 Uros Bizjak <ubizjak@gmail.com>
514 * sched-int.h (struct haifa_sched_info): Change can_schedule_ready_p,
515 scehdule_more_p and contributes_to_priority indirect frunction
516 type from int to bool.
517 (no_real_insns_p): Change return type from int to bool.
518 (contributes_to_priority): Ditto.
519 * haifa-sched.cc (no_real_insns_p): Change return type from
520 int to bool and adjust function body accordingly.
521 * modulo-sched.cc (try_scheduling_node_in_cycle): Change "success"
522 variable type from int to bool.
523 (ps_insn_advance_column): Change return type from int to bool.
524 (ps_has_conflicts): Ditto. Change "has_conflicts"
525 variable type from int to bool.
526 * sched-deps.cc (deps_may_trap_p): Change return type from int to bool.
527 (conditions_mutex_p): Ditto.
528 * sched-ebb.cc (schedule_more_p): Ditto.
529 (ebb_contributes_to_priority): Change return type from
530 int to bool and adjust function body accordingly.
531 * sched-rgn.cc (is_cfg_nonregular): Ditto.
532 (check_live_1): Ditto.
534 (find_conditional_protection): Ditto.
535 (is_conditionally_protected): Ditto.
537 (is_exception_free): Ditto.
538 (haifa_find_rgns): Change "unreachable" and "too_large_failure"
539 variables from int to bool.
540 (extend_rgns): Change "rescan" variable from int to bool.
541 (check_live): Change return type from
542 int to bool and adjust function body accordingly.
543 (can_schedule_ready_p): Ditto.
544 (schedule_more_p): Ditto.
545 (contributes_to_priority): Ditto.
547 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
549 * doc/md.texi: Document that vec_set and vec_extract must not
551 * gimple-isel.cc (gimple_expand_vec_set_expr): Rename this...
552 (gimple_expand_vec_set_extract_expr): ...to this.
553 (gimple_expand_vec_exprs): Call renamed function.
554 * internal-fn.cc (vec_extract_direct): Add.
555 (expand_vec_extract_optab_fn): New function to expand
557 (direct_vec_extract_optab_supported_p): Add.
558 * internal-fn.def (VEC_EXTRACT): Add.
559 * optabs.cc (can_vec_extract_var_idx_p): New function.
560 * optabs.h (can_vec_extract_var_idx_p): Declare.
562 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
564 * config/riscv/autovec.md: Add gen_lowpart.
566 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
568 * config/riscv/autovec.md: Allow register index operand.
570 2023-07-05 Pan Li <pan2.li@intel.com>
572 * config/riscv/riscv-vector-builtins.cc
573 (function_expander::use_exact_insn): Use FRM_DYN instead of const0.
575 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
577 * config/riscv/autovec.md: Use float_truncate.
579 2023-07-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
581 * internal-fn.cc (internal_fn_len_index): Apply
582 LEN_MASK_GATHER_LOAD/SCATTER_STORE into vectorizer.
583 (internal_fn_mask_index): Ditto.
584 * optabs-query.cc (supports_vec_gather_load_p): Ditto.
585 (supports_vec_scatter_store_p): Ditto.
586 * tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Ditto.
587 * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Ditto.
588 * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
589 (vect_get_strided_load_store_ops): Ditto.
590 (vectorizable_store): Ditto.
591 (vectorizable_load): Ditto.
593 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
594 Juzhe-Zhong <juzhe.zhong@rivai.ai>
596 * simplify-rtx.cc (native_encode_rtx): Ditto.
597 (native_decode_vector_rtx): Ditto.
598 (simplify_const_vector_byte_offset): Ditto.
599 (simplify_const_vector_subreg): Ditto.
600 * tree.cc (build_truth_vector_type_for_mode): Ditto.
601 * varasm.cc (output_constant_pool_2): Ditto.
603 2023-07-05 YunQiang Su <yunqiang.su@cipunited.com>
605 * config/mips/mips.cc (mips_expand_block_move): don't expand for
606 r6 with -mno-unaligned-access option if one or both of src and
607 dest are unaligned. restruct: return directly if length is not const.
608 (mips_block_move_straight): emit_move if ISA_HAS_UNALIGNED_ACCESS.
610 2023-07-05 Jan Beulich <jbeulich@suse.com>
613 * config/i386/sse.md: New splitters to simplify
614 not;vec_duplicate as a singular vpternlog.
615 (one_cmpl<mode>2): Allow broadcast for operand 1.
616 (<mask_codefor>one_cmpl<mode>2<mask_name>): Likewise.
618 2023-07-05 Jan Beulich <jbeulich@suse.com>
621 * config/i386/sse.md: New splitters to simplify
622 not;vec_duplicate;{ior,xor} as vec_duplicate;{iornot,xnor}.
624 2023-07-05 Jan Beulich <jbeulich@suse.com>
627 * config/i386/sse.md: Permit non-immediate operand 1 in AVX2
628 form of splitter for PR target/100711.
630 2023-07-05 Richard Biener <rguenther@suse.de>
633 * tree.def (VEC_PERM_EXPR): Adjust documentation to reflect
636 2023-07-05 Jan Beulich <jbeulich@suse.com>
639 * config/i386/sse.md (*andnot<mode>3): Add new alternatives
640 for memory form operand 1.
642 2023-07-05 Jan Beulich <jbeulich@suse.com>
645 * config/i386/i386.cc (ix86_rtx_costs): Further special-case
646 bitwise vector operations.
647 * config/i386/sse.md (*iornot<mode>3): New insn.
648 (*xnor<mode>3): Likewise.
649 (*<nlogic><mode>3): Likewise.
650 (andor): New code iterator.
651 (nlogic): New code attribute.
652 (ternlog_nlogic): Likewise.
654 2023-07-05 Richard Biener <rguenther@suse.de>
656 * tree-vect-stmts.cc (vect_mark_relevant): Fix typo.
658 2023-07-05 yulong <shiyulong@iscas.ac.cn>
660 * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
662 2023-07-05 yulong <shiyulong@iscas.ac.cn>
664 * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
665 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
666 (ADJUST_ALIGNMENT): Ditto.
667 (RVV_TUPLE_PARTIAL_MODES): Ditto.
668 (ADJUST_NUNITS): Ditto.
669 * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
671 (vfloat16mf4x3_t): Ditto.
672 (vfloat16mf4x4_t): Ditto.
673 (vfloat16mf4x5_t): Ditto.
674 (vfloat16mf4x6_t): Ditto.
675 (vfloat16mf4x7_t): Ditto.
676 (vfloat16mf4x8_t): Ditto.
677 (vfloat16mf2x2_t): Ditto.
678 (vfloat16mf2x3_t): Ditto.
679 (vfloat16mf2x4_t): Ditto.
680 (vfloat16mf2x5_t): Ditto.
681 (vfloat16mf2x6_t): Ditto.
682 (vfloat16mf2x7_t): Ditto.
683 (vfloat16mf2x8_t): Ditto.
684 (vfloat16m1x2_t): Ditto.
685 (vfloat16m1x3_t): Ditto.
686 (vfloat16m1x4_t): Ditto.
687 (vfloat16m1x5_t): Ditto.
688 (vfloat16m1x6_t): Ditto.
689 (vfloat16m1x7_t): Ditto.
690 (vfloat16m1x8_t): Ditto.
691 (vfloat16m2x2_t): Ditto.
692 (vfloat16m2x3_t): Ditto.
693 (vfloat16m2x4_t): Ditto.
694 (vfloat16m4x2_t): Ditto.
695 * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
696 (vfloat16mf4x3_t): Ditto.
697 (vfloat16mf4x4_t): Ditto.
698 (vfloat16mf4x5_t): Ditto.
699 (vfloat16mf4x6_t): Ditto.
700 (vfloat16mf4x7_t): Ditto.
701 (vfloat16mf4x8_t): Ditto.
702 (vfloat16mf2x2_t): Ditto.
703 (vfloat16mf2x3_t): Ditto.
704 (vfloat16mf2x4_t): Ditto.
705 (vfloat16mf2x5_t): Ditto.
706 (vfloat16mf2x6_t): Ditto.
707 (vfloat16mf2x7_t): Ditto.
708 (vfloat16mf2x8_t): Ditto.
709 (vfloat16m1x2_t): Ditto.
710 (vfloat16m1x3_t): Ditto.
711 (vfloat16m1x4_t): Ditto.
712 (vfloat16m1x5_t): Ditto.
713 (vfloat16m1x6_t): Ditto.
714 (vfloat16m1x7_t): Ditto.
715 (vfloat16m1x8_t): Ditto.
716 (vfloat16m2x2_t): Ditto.
717 (vfloat16m2x3_t): Ditto.
718 (vfloat16m2x4_t): Ditto.
719 (vfloat16m4x2_t): Ditto.
720 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
721 * config/riscv/riscv.md: New.
722 * config/riscv/vector-iterators.md: New.
724 2023-07-04 Andrew Pinski <apinski@marvell.com>
726 PR tree-optimization/110487
727 * match.pd (a !=/== CST1 ? CST2 : CST3): Always
728 build a nonstandard integer and use that.
730 2023-07-04 Andrew Pinski <apinski@marvell.com>
732 * match.pd (a?-1:0): Cast type an integer type
733 rather the type before the negative.
736 2023-07-04 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
738 * config/xtensa/xtensa.cc (machine_function, xtensa_expand_prologue):
739 Change to use HARD_REG_BIT and its macros.
740 * config/xtensa/xtensa.md
741 (peephole2: regmove elimination during DFmode input reload):
744 2023-07-04 Richard Biener <rguenther@suse.de>
746 PR tree-optimization/110491
747 * tree-ssa-phiopt.cc (match_simplify_replacement): Check
748 whether the PHI args are possibly undefined before folding
751 2023-07-04 Pan Li <pan2.li@intel.com>
752 Thomas Schwinge <thomas@codesourcery.com>
754 * lto-streamer-in.cc (lto_input_mode_table): Stream in the mode
755 bits for machine mode table.
756 * lto-streamer-out.cc (lto_write_mode_table): Stream out the
757 HOST machine mode bits.
758 * lto-streamer.h (struct lto_file_decl_data): New fields mode_bits.
759 * tree-streamer.cc (streamer_mode_table): Take MAX_MACHINE_MODE
761 * tree-streamer.h (streamer_mode_table): Ditto.
762 (bp_pack_machine_mode): Take 1 << ceil_log2 (MAX_MACHINE_MODE)
763 as the packing limit.
764 (bp_unpack_machine_mode): Ditto with 'file_data->mode_bits'.
766 2023-07-04 Thomas Schwinge <thomas@codesourcery.com>
768 * lto-streamer.h (class lto_input_block): Capture
769 'lto_file_decl_data *file_data' instead of just
770 'unsigned char *mode_table'.
771 * ipa-devirt.cc (ipa_odr_read_section): Adjust.
772 * ipa-fnsummary.cc (inline_read_section): Likewise.
773 * ipa-icf.cc (sem_item_optimizer::read_section): Likewise.
774 * ipa-modref.cc (read_section): Likewise.
775 * ipa-prop.cc (ipa_prop_read_section, read_replacements_section):
777 * ipa-sra.cc (isra_read_summary_section): Likewise.
778 * lto-cgraph.cc (input_cgraph_opt_section): Likewise.
779 * lto-section-in.cc (lto_create_simple_input_block): Likewise.
780 * lto-streamer-in.cc (lto_read_body_or_constructor)
781 (lto_input_toplevel_asms): Likewise.
782 * tree-streamer.h (bp_unpack_machine_mode): Likewise.
784 2023-07-04 Richard Biener <rguenther@suse.de>
786 * tree-ssa-phiopt.cc (pass_phiopt::execute): Mark SSA undefs.
787 (empty_bb_or_one_feeding_into_p): Check for them.
788 * tree-ssa.h (gimple_uses_undefined_value_p): Remove.
789 * tree-ssa.cc (gimple_uses_undefined_value_p): Likewise.
791 2023-07-04 Richard Biener <rguenther@suse.de>
793 * tree-vect-loop.cc (vect_analyze_loop_costing): Remove
794 check guarding scalar_niter underflow.
796 2023-07-04 Hao Liu <hliu@os.amperecomputing.com>
798 PR tree-optimization/110531
799 * tree-vect-loop.cc (vect_analyze_loop_1): initialize
800 slp_done_for_suggested_uf to false.
802 2023-07-04 Richard Biener <rguenther@suse.de>
804 PR tree-optimization/110228
805 * tree-ssa-ifcombine.cc (pass_tree_ifcombine::execute):
807 (bb_no_side_effects_p): Check stmt uses for undefs.
809 2023-07-04 Richard Biener <rguenther@suse.de>
811 PR tree-optimization/110436
812 * tree-vect-stmts.cc (vect_mark_relevant): Expand dumping,
813 force live but not relevant pattern stmts relevant.
815 2023-07-04 Lili Cui <lili.cui@intel.com>
817 * config/i386/i386.h: Add PTA_ENQCMD and PTA_UINTR to PTA_SIERRAFOREST.
818 * doc/invoke.texi: Update new isa to march=sierraforest and grandridge.
820 2023-07-04 Richard Biener <rguenther@suse.de>
823 * tree.h (TREE_OVERFLOW): Do not mention VECTOR_CSTs
824 since we do not set TREE_OVERFLOW on those since the
825 introduction of VL vectors.
826 * match.pd (x +- CST +- CST): For VECTOR_CST do not look
827 at TREE_OVERFLOW to determine validity of association.
829 2023-07-04 Richard Biener <rguenther@suse.de>
831 PR tree-optimization/110310
832 * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
833 Move costing part ...
834 (vect_analyze_loop_costing): ... here. Integrate better
835 estimate for epilogues from ...
836 (vect_analyze_loop_2): Call vect_determine_partial_vectors_and_peeling
837 with actual epilogue status.
838 * tree-vect-loop-manip.cc (vect_do_peeling): ... here and
839 avoid cancelling epilogue vectorization.
840 (vect_update_epilogue_niters): Remove. No longer update
841 epilogue LOOP_VINFO_NITERS.
843 2023-07-04 Pan Li <pan2.li@intel.com>
846 2023-07-03 Pan Li <pan2.li@intel.com>
848 * config/riscv/vector.md: Fix typo.
850 2023-07-04 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
852 * doc/md.texi: Add len_mask_gather_load/len_mask_scatter_store.
853 * internal-fn.cc (expand_scatter_store_optab_fn): Ditto.
854 (expand_gather_load_optab_fn): Ditto.
855 (internal_load_fn_p): Ditto.
856 (internal_store_fn_p): Ditto.
857 (internal_gather_scatter_fn_p): Ditto.
858 (internal_fn_len_index): Ditto.
859 (internal_fn_mask_index): Ditto.
860 (internal_fn_stored_value_index): Ditto.
861 * internal-fn.def (LEN_MASK_GATHER_LOAD): Ditto.
862 (LEN_MASK_SCATTER_STORE): Ditto.
863 * optabs.def (OPTAB_CD): Ditto.
865 2023-07-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
867 * config/riscv/riscv-vsetvl.cc
868 (vector_insn_info::parse_insn): Add early break.
870 2023-07-04 Hans-Peter Nilsson <hp@axis.com>
872 * config/cris/cris.md (CRIS_UNSPEC_SWAP_BITS): Remove.
873 ("cris_swap_bits", "ctzsi2"): Use bitreverse instead.
875 2023-07-04 Hans-Peter Nilsson <hp@axis.com>
877 * dwarf2out.cc (mem_loc_descriptor): Handle BITREVERSE.
879 2023-07-03 Christoph Müllner <christoph.muellner@vrull.eu>
881 * common/config/riscv/riscv-common.cc: Add support for zvbb,
882 zvbc, zvkg, zvkned, zvknha, zvknhb, zvksed, zvksh, zvkn,
883 zvknc, zvkng, zvks, zvksc, zvksg, zvkt and the implied subsets.
884 * config/riscv/arch-canonicalize: Add canonicalization info for
885 zvkn, zvknc, zvkng, zvks, zvksc, zvksg.
886 * config/riscv/riscv-opts.h (MASK_ZVBB): New macro.
887 (MASK_ZVBC): Likewise.
888 (TARGET_ZVBB): Likewise.
889 (TARGET_ZVBC): Likewise.
890 (MASK_ZVKG): Likewise.
891 (MASK_ZVKNED): Likewise.
892 (MASK_ZVKNHA): Likewise.
893 (MASK_ZVKNHB): Likewise.
894 (MASK_ZVKSED): Likewise.
895 (MASK_ZVKSH): Likewise.
896 (MASK_ZVKN): Likewise.
897 (MASK_ZVKNC): Likewise.
898 (MASK_ZVKNG): Likewise.
899 (MASK_ZVKS): Likewise.
900 (MASK_ZVKSC): Likewise.
901 (MASK_ZVKSG): Likewise.
902 (MASK_ZVKT): Likewise.
903 (TARGET_ZVKG): Likewise.
904 (TARGET_ZVKNED): Likewise.
905 (TARGET_ZVKNHA): Likewise.
906 (TARGET_ZVKNHB): Likewise.
907 (TARGET_ZVKSED): Likewise.
908 (TARGET_ZVKSH): Likewise.
909 (TARGET_ZVKN): Likewise.
910 (TARGET_ZVKNC): Likewise.
911 (TARGET_ZVKNG): Likewise.
912 (TARGET_ZVKS): Likewise.
913 (TARGET_ZVKSC): Likewise.
914 (TARGET_ZVKSG): Likewise.
915 (TARGET_ZVKT): Likewise.
916 * config/riscv/riscv.opt: Introduction of riscv_zv{b,k}_subext.
918 2023-07-03 Andrew Pinski <apinski@marvell.com>
921 * except.h (struct eh_landing_pad_d): Add chain_next GTY.
923 2023-07-03 Iain Sandoe <iain@sandoe.co.uk>
925 * config/darwin.h: Avoid duplicate multiply_defined specs on
926 earlier Darwin versions with shared libgcc.
928 2023-07-03 Uros Bizjak <ubizjak@gmail.com>
930 * tree.h (tree_int_cst_equal): Change return type from int to bool.
931 (operand_equal_for_phi_arg_p): Ditto.
932 (tree_map_base_marked_p): Ditto.
933 * tree.cc (contains_placeholder_p): Update function body
934 for bool return type.
935 (type_cache_hasher::equal): Ditto.
936 (tree_map_base_hash): Change return type
937 from int to void and adjust function body accordingly.
938 (tree_int_cst_equal): Ditto.
939 (operand_equal_for_phi_arg_p): Ditto.
940 (get_narrower): Change "first" variable to bool.
941 (cl_option_hasher::equal): Update function body for bool return type.
942 * ggc.h (ggc_set_mark): Change return type from int to bool.
943 (ggc_marked_p): Ditto.
944 * ggc-page.cc (gt_ggc_mx): Change return type
945 from int to void and adjust function body accordingly.
946 (ggc_set_mark): Ditto.
948 2023-07-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
950 * config/riscv/autovec.md: Change order of
951 LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
952 * config/riscv/riscv-v.cc (expand_load_store): Ditto.
953 * doc/md.texi: Ditto.
954 * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Ditto.
955 * internal-fn.cc (len_maskload_direct): Ditto.
956 (len_maskstore_direct): Ditto.
957 (add_len_and_mask_args): New function.
958 (expand_partial_load_optab_fn): Change order of
959 LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
960 (expand_partial_store_optab_fn): Ditto.
961 (internal_fn_len_index): New function.
962 (internal_fn_mask_index): Change order of
963 LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
964 (internal_fn_stored_value_index): Ditto.
965 (internal_len_load_store_bias): Ditto.
966 * internal-fn.h (internal_fn_len_index): New function.
967 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Change order of
968 LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
969 * tree-vect-stmts.cc (vectorizable_store): Ditto.
970 (vectorizable_load): Ditto.
972 2023-07-03 Gaius Mulley <gaiusmod2@gmail.com>
975 * doc/gm2.texi (Semantic checking): Include examples using
976 -Wuninit-variable-checking.
978 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
980 * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
981 (*single_widen_fnma<mode>): Ditto.
982 (*double_widen_fms<mode>): Ditto.
983 (*single_widen_fms<mode>): Ditto.
984 (*double_widen_fnms<mode>): Ditto.
985 (*single_widen_fnms<mode>): Ditto.
987 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
989 * config/riscv/autovec-opt.md (@pred_single_widen_mul<any_extend:su><mode>): Change "@"
990 into "*" in pattern name which simplifies build files.
991 (*pred_single_widen_mul<any_extend:su><mode>): Ditto.
992 (*pred_single_widen_mul<mode>): New pattern.
994 2023-07-03 Richard Sandiford <richard.sandiford@arm.com>
996 * config/aarch64/aarch64-simd.md (vec_extract<mode><Vhalf>): Expect
997 the index to be 0 or 1.
999 2023-07-03 Lehua Ding <lehua.ding@rivai.ai>
1002 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1004 * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
1005 (*single_widen_fnma<mode>): Ditto.
1006 (*double_widen_fms<mode>): Ditto.
1007 (*single_widen_fms<mode>): Ditto.
1008 (*double_widen_fnms<mode>): Ditto.
1009 (*single_widen_fnms<mode>): Ditto.
1011 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1013 * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
1014 (*single_widen_fnma<mode>): Ditto.
1015 (*double_widen_fms<mode>): Ditto.
1016 (*single_widen_fms<mode>): Ditto.
1017 (*double_widen_fnms<mode>): Ditto.
1018 (*single_widen_fnms<mode>): Ditto.
1020 2023-07-03 Pan Li <pan2.li@intel.com>
1022 * config/riscv/vector.md: Fix typo.
1024 2023-07-03 Richard Biener <rguenther@suse.de>
1026 PR tree-optimization/110506
1027 * tree-vect-patterns.cc (vect_recog_rotate_pattern): Re-order
1028 TYPE_PRECISION access with INTEGRAL_TYPE_P check.
1030 2023-07-03 Richard Biener <rguenther@suse.de>
1032 PR tree-optimization/110506
1033 * tree-ssa-ccp.cc (get_value_for_expr): Check for integral
1034 type before relying on TYPE_PRECISION to produce a nonzero mask.
1036 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
1038 * config/mips/mips.md(*and<mode>3_mips16): Generates
1039 ZEB/ZEH instructions.
1041 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
1043 * config/mips/mips.cc(mips_9bit_offset_address_p): Restrict the
1044 address register to M16_REGS for MIPS16.
1045 (BUILTIN_AVAIL_MIPS16E2): Defined a new macro.
1046 (AVAIL_MIPS16E2_OR_NON_MIPS16): Same as above.
1047 (AVAIL_NON_MIPS16 (cache..)): Update to
1048 AVAIL_MIPS16E2_OR_NON_MIPS16.
1049 * config/mips/mips.h (ISA_HAS_CACHE): Add clause for ISA_HAS_MIPS16E2.
1050 * config/mips/mips.md (mips_cache): Mark as extended MIPS16.
1052 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
1054 * config/mips/mips.h(ISA_HAS_9BIT_DISPLACEMENT): Add clause
1055 for ISA_HAS_MIPS16E2.
1056 (ISA_HAS_SYNC): Same as above.
1057 (ISA_HAS_LL_SC): Same as above.
1059 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
1061 * config/mips/mips.cc(mips_expand_ins_as_unaligned_store):
1062 Add logics for generating instruction.
1063 * config/mips/mips.h(ISA_HAS_LWL_LWR): Add clause for ISA_HAS_MIPS16E2.
1064 * config/mips/mips.md(mov_<load>l): Generates instructions.
1065 (mov_<load>r): Same as above.
1066 (mov_<store>l): Adjusted for the conditions above.
1067 (mov_<store>r): Same as above.
1068 (mov_<store>l_mips16e2): Add machine description for `define_insn mov_<store>l_mips16e2`.
1069 (mov_<store>r_mips16e2): Add machine description for `define_insn mov_<store>r_mips16e2`.
1071 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
1073 * config/mips/mips.cc(mips_symbol_insns_1): Generates LUI instruction.
1074 (mips_const_insns): Same as above.
1075 (mips_output_move): Same as above.
1076 (mips_output_function_prologue): Same as above.
1077 * config/mips/mips.md: Same as above
1079 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
1081 * config/mips/constraints.md(Yz): New constraints for mips16e2.
1082 * config/mips/mips-protos.h(mips_bit_clear_p): Declared new function.
1083 (mips_bit_clear_info): Same as above.
1084 * config/mips/mips.cc(mips_bit_clear_info): New function for
1085 generating instructions.
1086 (mips_bit_clear_p): Same as above.
1087 * config/mips/mips.h(ISA_HAS_EXT_INS): Add clause for ISA_HAS_MIPS16E2.
1088 * config/mips/mips.md(extended_mips16): Generates EXT and INS instructions.
1089 (*and<mode>3): Generates INS instruction.
1090 (*and<mode>3_mips16): Generates EXT, INS and ANDI instructions.
1091 (ior<mode>3): Add logics for ORI instruction.
1092 (*ior<mode>3_mips16_asmacro): Generates ORI instrucion.
1093 (*ior<mode>3_mips16): Add logics for XORI instruction.
1094 (*xor<mode>3_mips16): Generates XORI instrucion.
1095 (*extzv<mode>): Add logics for EXT instruction.
1096 (*insv<mode>): Add logics for INS instruction.
1097 * config/mips/predicates.md(bit_clear_operand): New predicate for
1098 generating bitwise instructions.
1099 (and_reg_operand): Add logics for generating bitwise instructions.
1101 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
1103 * config/mips/mips.cc(mips_regno_mode_ok_for_base_p): Generate instructions
1104 that uses global pointer register.
1105 (mips16_unextended_reference_p): Same as above.
1106 (mips_pic_base_register): Same as above.
1107 (mips_init_relocs): Same as above.
1108 * config/mips/mips.h(MIPS16_GP_LOADS): Defined a new macro.
1109 (GLOBAL_POINTER_REGNUM): Moved to machine description `mips.md`.
1110 * config/mips/mips.md(GLOBAL_POINTER_REGNUM): Moved to here from above.
1111 (*lowsi_mips16_gp):New `define_insn *low<mode>_mips16`.
1113 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
1115 * config/mips/mips.h(ISA_HAS_CONDMOVE): Add condition for ISA_HAS_MIPS16E2.
1116 * config/mips/mips.md(*mov<GPR:mode>_on_<MOVECC:mode>): Add logics for MOVx insts.
1117 (*mov<GPR:mode>_on_<MOVECC:mode>_mips16e2): Generate MOVx instruction.
1118 (*mov<GPR:mode>_on_<GPR2:mode>_ne): Add logics for MOVx insts.
1119 (*mov<GPR:mode>_on_<GPR2:mode>_ne_mips16e2): Generate MOVx instruction.
1120 * config/mips/predicates.md(reg_or_0_operand_mips16e2): New predicate for MOVx insts.
1122 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
1124 * config/mips/mips.cc(mips_file_start): Add mips16e2 info
1126 * config/mips/mips.h(__mips_mips16e2): Defined a new
1128 (ISA_HAS_MIPS16E2): Defined a new macro.
1129 (ASM_SPEC): Pass mmips16e2 to the assembler.
1130 * config/mips/mips.opt: Add -m(no-)mips16e2 option.
1131 * config/mips/predicates.md: Add clause for TARGET_MIPS16E2.
1132 * doc/invoke.texi: Add -m(no-)mips16e2 option..
1134 2023-07-02 Jakub Jelinek <jakub@redhat.com>
1136 PR tree-optimization/110508
1137 * tree-ssa-math-opts.cc (match_uaddc_usubc): Only replace re2 with
1138 REALPART_EXPR opf nlhs if re2 is non-NULL.
1140 2023-07-02 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
1142 * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
1144 * config/xtensa/xtensa.md (*xtensa_clamps):
1145 Add TARGET_MINMAX to the condition.
1147 2023-07-02 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
1149 * config/xtensa/xtensa.md (*eqne_INT_MIN):
1150 Add missing ":SI" to the match_operator.
1152 2023-07-02 Iain Sandoe <iain@sandoe.co.uk>
1155 * config/darwin.opt: Add fconstant-cfstrings alias to
1156 mconstant-cfstrings.
1157 * doc/invoke.texi: Amend invocation descriptions to reflect
1158 that the fconstant-cfstrings is a target-option alias and to
1159 add the missing mconstant-cfstrings option description to the
1162 2023-07-01 Jan Hubicka <jh@suse.cz>
1164 * tree-cfg.cc (gimple_duplicate_sese_region): Add elliminated_edge
1165 parmaeter; update profile.
1166 * tree-cfg.h (gimple_duplicate_sese_region): Update prototype.
1167 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Rename to ...
1168 (static_loop_exit): ... this; return the edge to be elliminated.
1169 (ch_base::copy_headers): Handle profile updating for eliminated exits.
1171 2023-07-01 Roger Sayle <roger@nextmovesoftware.com>
1173 * config/i386/i386-features.cc (compute_convert_gain): Provide
1174 gains/costs for ROTATE and ROTATERT (by an integer constant).
1175 (general_scalar_chain::convert_rotate): New helper function to
1176 convert a DImode or SImode rotation by an integer constant into
1178 (general_scalar_chain::convert_insn): Call the new convert_rotate
1179 for ROTATE and ROTATERT.
1180 (general_scalar_to_vector_candidate_p): Consider ROTATE and
1181 ROTATERT to be candidates if the second operand is an integer
1182 constant, valid for a rotation (or shift) in the given mode.
1183 * config/i386/i386-features.h (general_scalar_chain): Add new
1184 helper method convert_rotate.
1186 2023-07-01 Jan Hubicka <jh@suse.cz>
1188 PR tree-optimization/103680
1189 * cfg.cc (update_bb_profile_for_threading): Fix profile update;
1190 make message clearer.
1192 2023-06-30 Qing Zhao <qing.zhao@oracle.com>
1194 PR tree-optimization/101832
1195 * tree-object-size.cc (addr_object_size): Handle structure/union type
1196 when it has flexible size.
1198 2023-06-30 Eric Botcazou <ebotcazou@adacore.com>
1200 * gimple-fold.cc (fold_array_ctor_reference): Fix head comment.
1201 (fold_nonarray_ctor_reference): Likewise. Specifically deal
1202 with integral bit-fields.
1203 (fold_ctor_reference): Make sure that the constructor uses the
1204 native storage order.
1206 2023-06-30 Jan Hubicka <jh@suse.cz>
1208 PR middle-end/109849
1209 * predict.cc (estimate_bb_frequencies): Turn to static function.
1210 (expr_expected_value_1): Fix handling of binary expressions with
1212 * predict.def (PRED_MALLOC_NONNULL): Move later in the priority queue.
1213 (PRED_BUILTIN_EXPECT_WITH_PROBABILITY): Move to almost top of the priority
1215 * predict.h (estimate_bb_frequencies): No longer declare it.
1217 2023-06-30 Uros Bizjak <ubizjak@gmail.com>
1219 * fold-const.h (multiple_of_p): Change return type from int to bool.
1220 * fold-const.cc (split_tree): Change negl_p, neg_litp_p,
1221 neg_conp_p and neg_var_p variables to bool.
1222 (const_binop): Change sat_p variable to bool.
1223 (merge_ranges): Change no_overlap variable to bool.
1224 (extract_muldiv_1): Change same_p variable to bool.
1225 (tree_swap_operands_p): Update function body for bool return type.
1226 (fold_truth_andor): Change commutative variable to bool.
1227 (multiple_of_p): Change return type
1228 from int to void and adjust function body accordingly.
1229 * optabs.h (expand_twoval_unop): Change return type from int to bool.
1230 (expand_twoval_binop): Ditto.
1231 (can_compare_p): Ditto.
1232 (have_add2_insn): Ditto.
1233 (have_addptr3_insn): Ditto.
1234 (have_sub2_insn): Ditto.
1235 (have_insn_for): Ditto.
1236 * optabs.cc (add_equal_note): Ditto.
1237 (widen_operand): Change no_extend argument from int to bool.
1238 (expand_binop): Ditto.
1239 (expand_twoval_unop): Change return type
1240 from int to void and adjust function body accordingly.
1241 (expand_twoval_binop): Ditto.
1242 (can_compare_p): Ditto.
1243 (have_add2_insn): Ditto.
1244 (have_addptr3_insn): Ditto.
1245 (have_sub2_insn): Ditto.
1246 (have_insn_for): Ditto.
1248 2023-06-30 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
1250 * config/aarch64/aarch64-simd.md
1251 (vec_widen_<su>abdl_lo_<mode>, vec_widen_<su>abdl_hi_<mode>):
1252 Expansions for abd vec widen optabs.
1253 (aarch64_<su>abdl<mode>_insn): VQW based abdl RTL.
1254 * config/aarch64/iterators.md (USMAX_EXT): Code attributes
1255 that give the appropriate extend RTL for the max RTL.
1257 2023-06-30 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
1259 * internal-fn.def (VEC_WIDEN_ABD): New internal hilo optab.
1260 * optabs.def (vec_widen_sabd_optab,
1261 vec_widen_sabd_hi_optab, vec_widen_sabd_lo_optab,
1262 vec_widen_sabd_odd_even, vec_widen_sabd_even_optab,
1263 vec_widen_uabd_optab,
1264 vec_widen_uabd_hi_optab, vec_widen_uabd_lo_optab,
1265 vec_widen_uabd_odd_even, vec_widen_uabd_even_optab):
1267 * doc/md.texi: Document them.
1268 * tree-vect-patterns.cc (vect_recog_abd_pattern): Update to
1269 to build a VEC_WIDEN_ABD call if the input precision is smaller
1270 than the precision of the output.
1271 (vect_recog_widen_abd_pattern): Should an ABD expression be
1272 found preceeding an extension, replace the two with a
1275 2023-06-30 Pan Li <pan2.li@intel.com>
1277 * config/riscv/vector.md: Refactor the common condition.
1279 2023-06-30 Richard Biener <rguenther@suse.de>
1281 PR tree-optimization/110496
1282 * gimple-ssa-store-merging.cc (find_bswap_or_nop_1): Re-order
1283 verifying and TYPE_PRECISION query for the BIT_FIELD_REF case.
1285 2023-06-30 Richard Biener <rguenther@suse.de>
1287 PR middle-end/110489
1288 * statistics.cc (curr_statistics_hash): Add argument
1289 indicating whether we should allocate the hash.
1290 (statistics_fini_pass): If the hash isn't allocated
1291 only print the summary header.
1293 2023-06-30 Segher Boessenkool <segher@kernel.crashing.org>
1294 Thomas Schwinge <thomas@codesourcery.com>
1296 * config/nvptx/nvptx.cc (TARGET_LRA_P): Remove.
1298 2023-06-30 Jovan Dmitrović <jovan.dmitrovic@syrmia.com>
1301 * config/mips/mips.cc (mips_function_arg_alignment): Returns
1302 the alignment of function argument. In case of typedef type,
1303 it returns the aligment of the aliased type.
1304 (mips_function_arg_boundary): Relocated calculation of the
1305 aligment of function arguments.
1307 2023-06-29 Jan Hubicka <jh@suse.cz>
1309 PR tree-optimization/109849
1310 * ipa-fnsummary.cc (decompose_param_expr): Skip
1311 functions returning its parameter.
1312 (set_cond_stmt_execution_predicate): Return early
1313 if predicate was constructed.
1315 2023-06-29 Qing Zhao <qing.zhao@oracle.com>
1318 * doc/extend.texi: Document GCC extension on a structure containing
1319 a flexible array member to be a member of another structure.
1321 2023-06-29 Qing Zhao <qing.zhao@oracle.com>
1323 * print-tree.cc (print_node): Print new bit type_include_flexarray.
1324 * tree-core.h (struct tree_type_common): Use bit no_named_args_stdarg_p
1325 as type_include_flexarray for RECORD_TYPE or UNION_TYPE.
1326 * tree-streamer-in.cc (unpack_ts_type_common_value_fields): Stream
1327 in bit no_named_args_stdarg_p properly for its corresponding type.
1328 * tree-streamer-out.cc (pack_ts_type_common_value_fields): Stream
1329 out bit no_named_args_stdarg_p properly for its corresponding type.
1330 * tree.h (TYPE_INCLUDES_FLEXARRAY): New macro TYPE_INCLUDES_FLEXARRAY.
1332 2023-06-29 Aldy Hernandez <aldyh@redhat.com>
1334 * tree-vrp.cc (maybe_set_nonzero_bits): Move from here...
1335 * tree-ssa-dom.cc (maybe_set_nonzero_bits): ...to here.
1336 * tree-vrp.h (maybe_set_nonzero_bits): Remove.
1338 2023-06-29 Aldy Hernandez <aldyh@redhat.com>
1340 * value-range.cc (frange::set): Do not call verify_range.
1341 (frange::normalize_kind): Verify range.
1342 (frange::union_nans): Do not call verify_range.
1343 (frange::union_): Same.
1344 (frange::intersect): Same.
1345 (irange::irange_single_pair_union): Call normalize_kind if
1347 (irange::union_): Same.
1348 (irange::intersect): Same.
1349 (irange::set_range_from_nonzero_bits): Verify range.
1350 (irange::set_nonzero_bits): Call normalize_kind if necessary.
1351 (irange::get_nonzero_bits): Tweak comment.
1352 (irange::intersect_nonzero_bits): Call normalize_kind if
1354 (irange::union_nonzero_bits): Same.
1355 * value-range.h (irange::normalize_kind): Verify range.
1357 2023-06-29 Uros Bizjak <ubizjak@gmail.com>
1359 * cselib.h (rtx_equal_for_cselib_1):
1360 Change return type from int to bool.
1361 (references_value_p): Ditto.
1362 (rtx_equal_for_cselib_p): Ditto.
1363 * expr.h (can_store_by_pieces): Ditto.
1364 (try_casesi): Ditto.
1365 (try_tablejump): Ditto.
1366 (safe_from_p): Ditto.
1367 * sbitmap.h (bitmap_equal_p): Ditto.
1368 * cselib.cc (references_value_p): Change return type
1369 from int to void and adjust function body accordingly.
1370 (rtx_equal_for_cselib_1): Ditto.
1371 * expr.cc (is_aligning_offset): Ditto.
1372 (can_store_by_pieces): Ditto.
1373 (mostly_zeros_p): Ditto.
1374 (all_zeros_p): Ditto.
1375 (safe_from_p): Ditto.
1376 (is_aligning_offset): Ditto.
1377 (try_casesi): Ditto.
1378 (try_tablejump): Ditto.
1379 (store_constructor): Change "need_to_clear" and
1380 "const_bounds_p" variables to bool.
1381 * sbitmap.cc (bitmap_equal_p): Change return type from int to bool.
1383 2023-06-29 Robin Dapp <rdapp@ventanamicro.com>
1385 * tree-ssa-math-opts.cc (divmod_candidate_p): Use
1388 2023-06-29 Richard Biener <rguenther@suse.de>
1390 PR tree-optimization/110460
1391 * tree-vect-stmts.cc (get_related_vectype_for_scalar_type):
1392 Only allow integral, pointer and scalar float type scalar_type.
1394 2023-06-29 Lili Cui <lili.cui@intel.com>
1396 PR tree-optimization/110148
1397 * tree-ssa-reassoc.cc (rewrite_expr_tree_parallel): Handle loop-carried
1398 ops in this function.
1400 2023-06-29 Richard Biener <rguenther@suse.de>
1402 PR middle-end/110452
1403 * expr.cc (store_constructor): Handle uniform boolean
1404 vectors with integer mode specially.
1406 2023-06-29 Richard Biener <rguenther@suse.de>
1408 PR middle-end/110461
1409 * match.pd (bitop (convert@2 @0) (convert?@3 @1)): Disable
1412 2023-06-29 Richard Sandiford <richard.sandiford@arm.com>
1414 * vec.h (gt_pch_nx): Add overloads for va_gc_atomic.
1415 (array_slice): Relax va_gc constructor to handle all vectors
1416 with a vl_embed layout.
1418 2023-06-29 Pan Li <pan2.li@intel.com>
1420 * config/riscv/riscv.cc (riscv_emit_mode_set): Add emit for FRM.
1421 (riscv_mode_needed): Likewise.
1422 (riscv_entity_mode_after): Likewise.
1423 (riscv_mode_after): Likewise.
1424 (riscv_mode_entry): Likewise.
1425 (riscv_mode_exit): Likewise.
1426 * config/riscv/riscv.h (NUM_MODES_FOR_MODE_SWITCHING): Add number
1428 * config/riscv/riscv.md: Add FRM register.
1429 * config/riscv/vector-iterators.md: Add FRM type.
1430 * config/riscv/vector.md (frm_mode): Define new attr for FRM mode.
1431 (fsrm): Define new insn for fsrm instruction.
1433 2023-06-29 Pan Li <pan2.li@intel.com>
1435 * config/riscv/riscv-protos.h (enum floating_point_rounding_mode):
1436 Add macro for static frm min and max.
1437 * config/riscv/riscv-vector-builtins-bases.cc
1438 (class binop_frm): New class for floating-point with frm.
1439 (BASE): Add vfadd for frm.
1440 * config/riscv/riscv-vector-builtins-bases.h: Likewise.
1441 * config/riscv/riscv-vector-builtins-functions.def
1442 (vfadd_frm): Likewise.
1443 * config/riscv/riscv-vector-builtins-shapes.cc
1444 (struct alu_frm_def): New struct for alu with frm.
1445 (SHAPE): Add alu with frm.
1446 * config/riscv/riscv-vector-builtins-shapes.h: Likewise.
1447 * config/riscv/riscv-vector-builtins.cc
1448 (function_checker::report_out_of_range_and_not): New function
1449 for report out of range and not val.
1450 (function_checker::require_immediate_range_or): New function
1451 for checking in range or one val.
1452 * config/riscv/riscv-vector-builtins.h: Add function decl.
1454 2023-06-29 Cui, Lili <lili.cui@intel.com>
1456 * common/config/i386/cpuinfo.h (get_intel_cpu): Remove model value 0xa8
1457 from Rocketlake, move model value 0xbf from Alderlake to Raptorlake.
1459 2023-06-28 Hans-Peter Nilsson <hp@axis.com>
1462 * config/cris/cris.cc (cris_postdbr_cmpelim): Don't apply PATTERN
1463 to insn before validating it.
1465 2023-06-28 Jan Hubicka <jh@suse.cz>
1467 PR middle-end/110334
1468 * ipa-fnsummary.h (ipa_fn_summary): Add
1469 safe_to_inline_to_always_inline.
1470 * ipa-inline.cc (can_early_inline_edge_p): ICE
1471 if SSA is not built; do cycle checking for
1472 always_inline functions.
1473 (inline_always_inline_functions): Be recrusive;
1474 watch for cycles; do not updat overall summary.
1475 (early_inliner): Do not give up on always_inlines.
1476 * ipa-utils.cc (ipa_reverse_postorder): Do not skip
1479 2023-06-28 Uros Bizjak <ubizjak@gmail.com>
1481 * output.h (leaf_function_p): Change return type from int to bool.
1482 (final_forward_branch_p): Ditto.
1483 (only_leaf_regs_used): Ditto.
1484 (maybe_assemble_visibility): Ditto.
1485 * varasm.h (supports_one_only): Ditto.
1486 * rtl.h (compute_alignments): Change return type from int to void.
1487 * final.cc (app_on): Change return type from int to bool.
1488 (compute_alignments): Change return type from int to void
1489 and adjust function body accordingly.
1490 (shorten_branches): Change "something_changed" variable
1491 type from int to bool.
1492 (leaf_function_p): Change return type from int to bool
1493 and adjust function body accordingly.
1494 (final_forward_branch_p): Ditto.
1495 (only_leaf_regs_used): Ditto.
1496 * varasm.cc (contains_pointers_p): Change return type from
1497 int to bool and adjust function body accordingly.
1498 (compare_constant): Ditto.
1499 (maybe_assemble_visibility): Ditto.
1500 (supports_one_only): Ditto.
1502 2023-06-28 Manolis Tsamis <manolis.tsamis@vrull.eu>
1505 * regcprop.cc (maybe_mode_change): Check stack_pointer_rtx mode.
1506 (maybe_copy_reg_attrs): New function.
1507 (find_oldest_value_reg): Use maybe_copy_reg_attrs.
1508 (copyprop_hardreg_forward_1): Ditto.
1510 2023-06-28 Richard Biener <rguenther@suse.de>
1512 PR tree-optimization/110434
1513 * tree-nrv.cc (pass_nrv::execute): Remove CLOBBERs of
1514 VAR we replace with <retval>.
1516 2023-06-28 Richard Biener <rguenther@suse.de>
1518 PR tree-optimization/110451
1519 * tree-ssa-loop-im.cc (stmt_cost): [VEC_]COND_EXPR and
1520 tcc_comparison are expensive.
1522 2023-06-28 Roger Sayle <roger@nextmovesoftware.com>
1524 * config/i386/i386-expand.cc (ix86_expand_branch): Also use ptest
1525 for TImode comparisons on 32-bit architectures.
1526 * config/i386/i386.md (cbranch<mode>4): Change from SDWIM to
1527 SWIM1248x to exclude/avoid TImode being conditional on -m64.
1528 (cbranchti4): New define_expand for TImode on both TARGET_64BIT
1529 and/or with TARGET_SSE4_1.
1530 * config/i386/predicates.md (ix86_timode_comparison_operator):
1531 New predicate that depends upon TARGET_64BIT.
1532 (ix86_timode_comparison_operand): Likewise.
1534 2023-06-28 Roger Sayle <roger@nextmovesoftware.com>
1537 * config/i386/i386-features.cc (compute_convert_gain): Provide
1538 more accurate gains for conversion of scalar comparisons to
1541 2023-06-28 Richard Biener <rguenther@suse.de>
1543 PR tree-optimization/110443
1544 * tree-vect-slp.cc (vect_build_slp_tree_1): Reject non-grouped
1547 2023-06-28 Haochen Gui <guihaoc@gcc.gnu.org>
1549 * config/rs6000/rs6000.md (peephole2 for compare_and_move): New.
1550 (peephole2 for move_and_compare): New.
1551 (mode_iterator WORD): New. Set the mode to SI/DImode by
1553 (*mov<mode>_internal2): Change the mode iterator from P to WORD.
1554 (split pattern for compare_and_move): Likewise.
1556 2023-06-28 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1558 * config/riscv/autovec-opt.md (*double_widen_fma<mode>): New pattern.
1559 (*single_widen_fma<mode>): Ditto.
1561 2023-06-28 Haochen Gui <guihaoc@gcc.gnu.org>
1564 * config/rs6000/altivec.md (*altivec_vupkhs<VU_char>_direct): Rename
1566 (altivec_vupkhs<VU_char>_direct): ...this.
1567 * config/rs6000/predicates.md (vspltisw_vupkhsw_constant_split): New
1568 predicate to test if a constant can be loaded with vspltisw and
1570 (easy_vector_constant): Call vspltisw_vupkhsw_constant_p to Check if
1571 a vector constant can be synthesized with a vspltisw and a vupkhsw.
1572 * config/rs6000/rs6000-protos.h (vspltisw_vupkhsw_constant_p):
1574 * config/rs6000/rs6000.cc (vspltisw_vupkhsw_constant_p): New
1575 function to return true if OP mode is V2DI and can be synthesized
1576 with vupkhsw and vspltisw.
1577 * config/rs6000/vsx.md (*vspltisw_v2di_split): New insn to load up
1578 constants with vspltisw and vupkhsw.
1580 2023-06-28 Jan Hubicka <jh@suse.cz>
1582 PR tree-optimization/110377
1583 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Pass statement to
1585 (ipa_analyze_node): Enable ranger.
1587 2023-06-28 Richard Biener <rguenther@suse.de>
1589 * tree.h (TYPE_PRECISION): Check for non-VECTOR_TYPE.
1590 (TYPE_PRECISION_RAW): Provide raw access to the precision
1592 * tree.cc (verify_type_variant): Compare TYPE_PRECISION_RAW.
1593 (gimple_canonical_types_compatible_p): Likewise.
1594 * tree-streamer-out.cc (pack_ts_type_common_value_fields):
1595 Stream TYPE_PRECISION_RAW.
1596 * tree-streamer-in.cc (unpack_ts_type_common_value_fields):
1598 * lto-streamer-out.cc (hash_tree): Hash TYPE_PRECISION_RAW.
1600 2023-06-28 Alexandre Oliva <oliva@adacore.com>
1602 * doc/extend.texi (zero-call-used-regs): Document leafy and
1604 * flag-types.h (zero_regs_flags): Add LEAFY_MODE, as well as
1606 * function.cc (gen_call_ued_regs_seq): Set only_used for leaf
1607 functions in leafy mode.
1608 * opts.cc (zero_call_used_regs_opts): Add leafy and variants.
1610 2023-06-28 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1612 * config/riscv/riscv-vector-builtins-bases.cc: Adapt expand.
1613 * config/riscv/vector.md (@pred_single_widen_<plus_minus:optab><mode>):
1615 (@pred_single_widen_add<mode>): New pattern.
1616 (@pred_single_widen_sub<mode>): New pattern.
1618 2023-06-28 liuhongt <hongtao.liu@intel.com>
1620 * config/i386/i386.cc (ix86_invalid_conversion): New function.
1621 (TARGET_INVALID_CONVERSION): Define as
1622 ix86_invalid_conversion.
1624 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
1626 * config/riscv/autovec.md (<optab><vnconvert><mode>2): New
1628 (<float_cvt><vnconvert><mode>2): Ditto.
1629 (<optab><mode><vnconvert>2): Ditto.
1630 (<float_cvt><mode><vnconvert>2): Ditto.
1631 * config/riscv/vector-iterators.md: Add vnconvert.
1633 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
1635 * config/riscv/autovec.md (extend<v_double_trunc><mode>2): New
1637 (extend<v_quad_trunc><mode>2): Ditto.
1638 (trunc<mode><v_double_trunc>2): Ditto.
1639 (trunc<mode><v_quad_trunc>2): Ditto.
1640 * config/riscv/vector-iterators.md: Add VQEXTF and HF to
1641 V_QUAD_TRUNC and v_quad_trunc.
1643 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
1645 * config/riscv/autovec.md (<float_cvt><vconvert><mode>2): New
1648 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
1650 * config/riscv/autovec.md (copysign<mode>3): Add expander.
1651 (xorsign<mode>3): Ditto.
1652 * config/riscv/riscv-vector-builtins-bases.cc (class vfsgnjn):
1654 * config/riscv/vector-iterators.md (copysign): Remove ncopysign.
1658 * config/riscv/vector.md (@pred_ncopysign<mode>): Split off.
1659 (@pred_ncopysign<mode>_scalar): Ditto.
1661 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
1663 * config/riscv/autovec.md: VF_AUTO -> VF.
1664 * config/riscv/vector-iterators.md: Introduce VF_ZVFHMIN,
1665 VWEXTF_ZVFHMIN and use TARGET_ZVFH in VWCONVERTI, VHF and
1667 * config/riscv/vector.md: Use new iterators.
1669 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
1671 * match.pd: Use element_mode and check if target supports
1672 operation with new type.
1674 2023-06-27 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
1676 * config/aarch64/aarch64-sve-builtins-base.cc
1677 (svdupq_impl::fold_nonconst_dupq): New method.
1678 (svdupq_impl::fold): Call fold_nonconst_dupq.
1680 2023-06-27 Andrew Pinski <apinski@marvell.com>
1682 PR middle-end/110420
1683 PR middle-end/103979
1685 * gimplify.cc (gimplify_asm_expr): Mark asm with labels as volatile.
1687 2023-06-27 Aldy Hernandez <aldyh@redhat.com>
1689 * ipa-cp.cc (decide_whether_version_node): Adjust comment.
1690 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Adjust
1692 (set_switch_stmt_execution_predicate): Same.
1693 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
1695 2023-06-27 Aldy Hernandez <aldyh@redhat.com>
1697 * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Adjust for use with
1698 ipa_vr instead of value_range.
1701 (ipa_get_value_range): Same.
1702 * value-range.cc (gt_pch_nx): Move to ipa-prop.cc and adjust for
1706 2023-06-27 Aldy Hernandez <aldyh@redhat.com>
1708 * ipa-cp.cc (ipa_vr_operation_and_type_effects): New.
1709 * ipa-prop.cc (ipa_get_value_range): Adjust for ipa_vr.
1710 (ipa_set_jfunc_vr): Take a range.
1711 (ipa_compute_jump_functions_for_edge): Pass range to
1713 (ipa_write_jump_function): Call streamer write helper.
1714 (ipa_read_jump_function): Call streamer read helper.
1715 * ipa-prop.h (class ipa_vr): Change m_vr to an ipa_vr.
1717 2023-06-27 Richard Sandiford <richard.sandiford@arm.com>
1719 * gengtype-parse.cc (consume_until_comma_or_eos): Parse "= { ... }"
1720 as a probable initializer rather than a probable complete statement.
1722 2023-06-27 Richard Biener <rguenther@suse.de>
1724 PR tree-optimization/96208
1725 * tree-vect-slp.cc (vect_build_slp_tree_1): Allow
1726 a non-grouped load if it is the same for all lanes.
1727 (vect_build_slp_tree_2): Handle not grouped loads.
1728 (vect_optimize_slp_pass::remove_redundant_permutations):
1730 (vect_transform_slp_perm_load_1): Likewise.
1731 * tree-vect-stmts.cc (vect_model_load_cost): Likewise.
1732 (get_group_load_store_type): Likewise. Handle
1734 (vectorizable_load): Likewise.
1736 2023-06-27 liuhongt <hongtao.liu@intel.com>
1738 PR rtl-optimization/110237
1739 * config/i386/sse.md (<avx512>_store<mode>_mask): Refine with
1741 (maskstore<mode><avx512fmaskmodelower): Ditto.
1742 (*<avx512>_store<mode>_mask): New define_insn, it's renamed
1743 from original <avx512>_store<mode>_mask.
1745 2023-06-27 liuhongt <hongtao.liu@intel.com>
1747 * config/i386/i386-features.cc (pass_insert_vzeroupper:gate):
1748 Move flag_expensive_optimizations && !optimize_size to ..
1749 * config/i386/i386-options.cc (ix86_option_override_internal):
1750 .. this, it makes -mvzeroupper independent of optimization
1751 level, but still keeps the behavior of architecture
1752 tuning(emit_vzeroupper) unchanged.
1754 2023-06-27 liuhongt <hongtao.liu@intel.com>
1757 * config/i386/i386.cc (ix86_avx_u127_mode_needed): Don't emit
1758 vzeroupper for vzeroupper call_insn.
1760 2023-06-27 Andrew Pinski <apinski@marvell.com>
1762 * doc/extend.texi (__builtin_alloca_with_align_and_max): Fix
1765 2023-06-27 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1767 * config/riscv/riscv-v.cc (expand_const_vector): Fix stepped vector
1770 2023-06-26 Andrew Pinski <apinski@marvell.com>
1772 * doc/extend.texi (access attribute): Add
1774 (interrupt/interrupt_handler attribute):
1777 2023-06-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1779 * config/aarch64/aarch64-simd.md (aarch64_sqrshrun_n<mode>_insn):
1780 Use <DWI> instead of <V2XWIDE>.
1781 (aarch64_sqrshrun_n<mode>): Likewise.
1783 2023-06-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1785 * config/aarch64/aarch64-protos.h (aarch64_const_vec_rsra_rnd_imm_p):
1787 (aarch64_rnd_imm_p): ... This.
1788 * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec):
1790 (aarch64_int_rnd_operand): ... This.
1791 (aarch64_simd_rshrn_imm_vec): Delete.
1792 * config/aarch64/aarch64-simd.md (aarch64_<sra_op>rsra_n<mode>_insn):
1793 Adjust for the above.
1794 (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): Likewise.
1795 (*aarch64_<shrn_op>rshrn_n<mode>_insn): Likewise.
1796 (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
1797 (aarch64_sqrshrun_n<mode>_insn): Likewise.
1798 (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): Likewise.
1799 (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): Likewise.
1800 (aarch64_sqrshrun2_n<mode>_insn_le): Likewise.
1801 (aarch64_sqrshrun2_n<mode>_insn_be): Likewise.
1802 * config/aarch64/aarch64.cc (aarch64_const_vec_rsra_rnd_imm_p):
1804 (aarch64_rnd_imm_p): ... This.
1806 2023-06-26 Andreas Krebbel <krebbel@linux.ibm.com>
1808 * config/s390/s390.cc (s390_encode_section_info): Set
1809 SYMBOL_FLAG_SET_NOTALIGN2 only if the symbol has explicitely been
1812 2023-06-26 Jan Hubicka <jh@suse.cz>
1814 PR tree-optimization/109849
1815 * tree-ssa-dce.cc (make_forwarders_with_degenerate_phis): Fix profile
1816 count of newly constructed forwarder block.
1818 2023-06-26 Andrew Carlotti <andrew.carlotti@arm.com>
1820 * doc/optinfo.texi: Fix "steam" -> "stream".
1822 2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1824 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Add LEN_MASK_STORE and
1826 (dse_optimize_stmt): Add LEN_MASK_STORE.
1828 2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1830 * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Fix gimple
1831 fold of LOAD/STORE with length.
1833 2023-06-26 Andrew MacLeod <amacleod@redhat.com>
1835 * gimple-range-gori.cc (compute_operand1_and_operand2_range):
1836 Check for interdependence between operands 1 and 2.
1838 2023-06-26 Richard Sandiford <richard.sandiford@arm.com>
1840 * tree-vect-stmts.cc (vectorizable_conversion): Take multi_step_cvt
1841 into account when costing non-widening/truncating conversions.
1843 2023-06-26 Richard Biener <rguenther@suse.de>
1845 PR tree-optimization/110381
1846 * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
1847 Materialize permutes before fold-left reductions.
1849 2023-06-26 Pan Li <pan2.li@intel.com>
1851 * config/riscv/riscv-vector-builtins-bases.h: Remove duplicated decl.
1853 2023-06-26 Richard Biener <rguenther@suse.de>
1855 * varasm.cc (initializer_constant_valid_p_1): Also
1856 constrain the type of value to be scalar integral
1857 before dispatching to narrowing_initializer_constant_valid_p.
1859 2023-06-26 Richard Biener <rguenther@suse.de>
1861 * tree-ssa-scopedtables.cc (hashable_expr_equal_p):
1862 Use element_precision.
1864 2023-06-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1866 * config/riscv/autovec.md (vcond<V:mode><VI:mode>): Remove redundant
1868 (vcondu<V:mode><VI:mode>): Ditto.
1869 * config/riscv/riscv-protos.h (expand_vcond): Ditto.
1870 * config/riscv/riscv-v.cc (expand_vcond): Ditto.
1872 2023-06-26 Richard Biener <rguenther@suse.de>
1874 PR tree-optimization/110392
1875 * gimple-predicate-analysis.cc (uninit_analysis::is_use_guarded):
1876 Do early exits on true/false predicate only after normalization.
1878 2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1880 * tree-ssa-sccvn.cc (vn_reference_lookup_3): Change name "len" into
1883 2023-06-26 Roger Sayle <roger@nextmovesoftware.com>
1885 * config/i386/i386.md (peephole2): Simplify zeroing a register
1886 followed by an IOR, XOR or PLUS operation on it, into a move.
1887 (*ashl<dwi>3_doubleword_highpart): New define_insn_and_split to
1888 eliminate (and hide from reload) unnecessary word to doubleword
1889 extensions that are followed by left shifts by sufficiently large,
1890 but valid, bit counts.
1892 2023-06-26 liuhongt <hongtao.liu@intel.com>
1894 PR tree-optimization/110371
1895 PR tree-optimization/110018
1896 * tree-vect-stmts.cc (vectorizable_conversion): Use cvt_op to
1897 save intermediate type operand instead of "subtle" vec_dest
1900 2023-06-26 liuhongt <hongtao.liu@intel.com>
1902 PR tree-optimization/110371
1903 PR tree-optimization/110018
1904 * tree-vect-stmts.cc (vectorizable_conversion): Don't use
1905 intermiediate type for FIX_TRUNC_EXPR when ftrapping-math.
1907 2023-06-26 Hongyu Wang <hongyu.wang@intel.com>
1909 * config/i386/i386-options.cc (ix86_valid_target_attribute_tree):
1910 Override tune_string with arch_string if tune_string is not
1911 explicitly specified.
1913 2023-06-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1915 * config/riscv/riscv-vsetvl.cc (vector_insn_info::parse_insn): Ehance
1917 * config/riscv/riscv-vsetvl.h: New function.
1919 2023-06-25 Li Xu <xuli1@eswincomputing.com>
1921 * config/riscv/riscv-vector-builtins-bases.cc: change emit_insn to
1924 2023-06-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1926 * config/riscv/autovec.md (len_load_<mode>): Remove.
1927 (len_maskload<mode><vm>): Remove.
1928 (len_store_<mode>): New pattern.
1929 (len_maskstore<mode><vm>): New pattern.
1930 * config/riscv/predicates.md (autovec_length_operand): New predicate.
1931 * config/riscv/riscv-protos.h (enum insn_type): New enum.
1932 (expand_load_store): New function.
1933 * config/riscv/riscv-v.cc (emit_vlmax_masked_insn): Ditto.
1934 (emit_nonvlmax_masked_insn): Ditto.
1935 (expand_load_store): Ditto.
1936 * config/riscv/riscv-vector-builtins.cc
1937 (function_expander::use_contiguous_store_insn): Add avl_type operand
1939 * config/riscv/vector.md: Ditto.
1941 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1943 * internal-fn.cc (expand_partial_store_optab_fn): Fix bug of BIAS
1946 2023-06-25 Pan Li <pan2.li@intel.com>
1948 * config/riscv/vector.md: Revert.
1950 2023-06-25 Pan Li <pan2.li@intel.com>
1952 * config/riscv/genrvv-type-indexer.cc (valid_type): Revert changes.
1953 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): Ditto.
1954 (ADJUST_ALIGNMENT): Ditto.
1955 (RVV_TUPLE_PARTIAL_MODES): Ditto.
1956 (ADJUST_NUNITS): Ditto.
1957 * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t): Ditto.
1958 (vfloat16mf4x3_t): Ditto.
1959 (vfloat16mf4x4_t): Ditto.
1960 (vfloat16mf4x5_t): Ditto.
1961 (vfloat16mf4x6_t): Ditto.
1962 (vfloat16mf4x7_t): Ditto.
1963 (vfloat16mf4x8_t): Ditto.
1964 (vfloat16mf2x2_t): Ditto.
1965 (vfloat16mf2x3_t): Ditto.
1966 (vfloat16mf2x4_t): Ditto.
1967 (vfloat16mf2x5_t): Ditto.
1968 (vfloat16mf2x6_t): Ditto.
1969 (vfloat16mf2x7_t): Ditto.
1970 (vfloat16mf2x8_t): Ditto.
1971 (vfloat16m1x2_t): Ditto.
1972 (vfloat16m1x3_t): Ditto.
1973 (vfloat16m1x4_t): Ditto.
1974 (vfloat16m1x5_t): Ditto.
1975 (vfloat16m1x6_t): Ditto.
1976 (vfloat16m1x7_t): Ditto.
1977 (vfloat16m1x8_t): Ditto.
1978 (vfloat16m2x2_t): Ditto.
1979 (vfloat16m2x3_t): Diito.
1980 (vfloat16m2x4_t): Diito.
1981 (vfloat16m4x2_t): Diito.
1982 * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): Ditto.
1983 (vfloat16mf4x3_t): Ditto.
1984 (vfloat16mf4x4_t): Ditto.
1985 (vfloat16mf4x5_t): Ditto.
1986 (vfloat16mf4x6_t): Ditto.
1987 (vfloat16mf4x7_t): Ditto.
1988 (vfloat16mf4x8_t): Ditto.
1989 (vfloat16mf2x2_t): Ditto.
1990 (vfloat16mf2x3_t): Ditto.
1991 (vfloat16mf2x4_t): Ditto.
1992 (vfloat16mf2x5_t): Ditto.
1993 (vfloat16mf2x6_t): Ditto.
1994 (vfloat16mf2x7_t): Ditto.
1995 (vfloat16mf2x8_t): Ditto.
1996 (vfloat16m1x2_t): Ditto.
1997 (vfloat16m1x3_t): Ditto.
1998 (vfloat16m1x4_t): Ditto.
1999 (vfloat16m1x5_t): Ditto.
2000 (vfloat16m1x6_t): Ditto.
2001 (vfloat16m1x7_t): Ditto.
2002 (vfloat16m1x8_t): Ditto.
2003 (vfloat16m2x2_t): Ditto.
2004 (vfloat16m2x3_t): Ditto.
2005 (vfloat16m2x4_t): Ditto.
2006 (vfloat16m4x2_t): Ditto.
2007 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
2008 * config/riscv/riscv.md: Ditto.
2009 * config/riscv/vector-iterators.md: Ditto.
2011 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2013 * gimple-fold.cc (arith_overflowed_p): Apply LEN_MASK_{LOAD,STORE}.
2014 (gimple_fold_partial_load_store_mem_ref): Ditto.
2015 (gimple_fold_partial_store): Ditto.
2016 (gimple_fold_call): Ditto.
2018 2023-06-25 liuhongt <hongtao.liu@intel.com>
2021 * config/i386/sse.md (maskload<mode><avx512fmaskmodelower>):
2022 Refine pattern with UNSPEC_MASKLOAD.
2023 (maskload<mode><avx512fmaskmodelower>): Ditto.
2024 (*<avx512>_load<mode>_mask): Extend mode iterator to
2026 (*<avx512>_load<mode>): Ditto.
2028 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2030 * tree-ssa-alias.cc (call_may_clobber_ref_p_1): Add LEN_MASK_STORE.
2032 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2034 * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Apply
2035 LEN_MASK_{LOAD,STORE}
2037 2023-06-25 yulong <shiyulong@iscas.ac.cn>
2039 * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
2041 2023-06-24 Roger Sayle <roger@nextmovesoftware.com>
2043 * config/i386/i386.md (*<code>qi_ext<mode>_3): New define_insn.
2045 2023-06-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2047 * config/riscv/autovec.md (*fma<mode>): set clobber to Pmode in expand stage.
2048 (*fma<VI:mode><P:mode>): Ditto.
2049 (*fnma<mode>): Ditto.
2050 (*fnma<VI:mode><P:mode>): Ditto.
2052 2023-06-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2054 * config/riscv/autovec.md (fma<mode>4): New pattern.
2055 (*fma<mode>): Ditto.
2056 (fnma<mode>4): Ditto.
2057 (*fnma<mode>): Ditto.
2058 (fms<mode>4): Ditto.
2059 (*fms<mode>): Ditto.
2060 (fnms<mode>4): Ditto.
2061 (*fnms<mode>): Ditto.
2062 * config/riscv/riscv-protos.h (emit_vlmax_fp_ternary_insn):
2064 * config/riscv/riscv-v.cc (emit_vlmax_fp_ternary_insn): Ditto.
2065 * config/riscv/vector.md: Fix attribute bug.
2067 2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2069 * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn):
2070 Apply LEN_MASK_{LOAD,STORE}.
2072 2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2074 * tree-ssa-loop-ivopts.cc (get_alias_ptr_type_for_ptr_address):
2075 Add LEN_MASK_{LOAD,STORE}.
2077 2023-06-24 David Malcolm <dmalcolm@redhat.com>
2079 * diagnostic-format-sarif.cc: Add #define INCLUDE_VECTOR.
2080 * diagnostic.cc: Likewise.
2081 * text-art/box-drawing.cc: Likewise.
2082 * text-art/canvas.cc: Likewise.
2083 * text-art/ruler.cc: Likewise.
2084 * text-art/selftests.cc: Likewise.
2085 * text-art/selftests.h (text_art::canvas): New forward decl.
2086 * text-art/style.cc: Add #define INCLUDE_VECTOR.
2087 * text-art/styled-string.cc: Likewise.
2088 * text-art/table.cc: Likewise.
2089 * text-art/table.h: Remove #include <vector>.
2090 * text-art/theme.cc: Add #define INCLUDE_VECTOR.
2091 * text-art/types.h: Check that INCLUDE_VECTOR is defined.
2092 Remove #include of <vector> and <string>.
2093 * text-art/widget.cc: Add #define INCLUDE_VECTOR.
2094 * text-art/widget.h: Remove #include <vector>.
2096 2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2098 * internal-fn.cc (expand_partial_store_optab_fn): Adapt for LEN_MASK_STORE.
2099 (internal_load_fn_p): Add LEN_MASK_LOAD.
2100 (internal_store_fn_p): Add LEN_MASK_STORE.
2101 (internal_fn_mask_index): Add LEN_MASK_{LOAD,STORE}.
2102 (internal_fn_stored_value_index): Add LEN_MASK_STORE.
2103 (internal_len_load_store_bias): Add LEN_MASK_{LOAD,STORE}.
2104 * optabs-tree.cc (can_vec_mask_load_store_p): Adapt for LEN_MASK_{LOAD,STORE}.
2105 (get_len_load_store_mode): Ditto.
2106 * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
2107 (get_len_load_store_mode): Ditto.
2108 * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
2109 (get_all_ones_mask): New function.
2110 (vectorizable_store): Apply LEN_MASK_{LOAD,STORE} into vectorizer.
2111 (vectorizable_load): Ditto.
2113 2023-06-23 Marek Polacek <polacek@redhat.com>
2115 * doc/cpp.texi (__cplusplus): Document value for -std=c++26 and
2116 -std=gnu++26. Document that for C++23, its value is 202302L.
2117 * doc/invoke.texi: Document -std=c++26 and -std=gnu++26.
2118 * dwarf2out.cc (highest_c_language): Handle GNU C++26.
2119 (gen_compile_unit_die): Likewise.
2121 2023-06-23 Jan Hubicka <jh@suse.cz>
2123 * tree-ssa-phiprop.cc (propagate_with_phi): Compute post dominators on
2125 (pass_phiprop::execute): Do not compute it here; return
2126 update_ssa_only_virtuals if something changed.
2127 (pass_data_phiprop): Remove TODO_update_ssa from todos.
2129 2023-06-23 Michael Meissner <meissner@linux.ibm.com>
2130 Aaron Sawdey <acsawdey@linux.ibm.com>
2133 * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): Fix problems that
2134 allowed prefixed lwa to be generated.
2135 * config/rs6000/fusion.md: Regenerate.
2136 * config/rs6000/predicates.md (ds_form_mem_operand): Delete.
2137 * config/rs6000/rs6000.md (prefixed attribute): Add support for load
2138 plus compare immediate fused insns.
2139 (maybe_prefixed): Likewise.
2141 2023-06-23 Roger Sayle <roger@nextmovesoftware.com>
2143 * simplify-rtx.cc (simplify_subreg): Optimize lowpart SUBREGs
2144 of ASHIFT to const0_rtx with sufficiently large shift count.
2145 Optimize highpart SUBREGs of ASHIFT as the shift operand when
2146 the shift count is the correct offset. Optimize SUBREGs of
2147 multi-word logic operations if the SUBREGs of both operands
2150 2023-06-23 Richard Biener <rguenther@suse.de>
2152 * varasm.cc (initializer_constant_valid_p_1): Only
2153 allow conversions between scalar floating point types.
2155 2023-06-23 Richard Biener <rguenther@suse.de>
2157 * tree-vect-stmts.cc (vectorizable_assignment):
2158 Properly handle non-integral operands when analyzing
2161 2023-06-23 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
2163 PR tree-optimization/110280
2164 * match.pd (vec_perm_expr(v, v, mask) -> v): Explicitly build vector
2165 using build_vector_from_val with the element of input operand, and
2166 mask's type if operand and mask's types don't match.
2168 2023-06-23 Richard Biener <rguenther@suse.de>
2170 * fold-const.cc (tree_simple_nonnegative_warnv_p): Guard
2171 the truth_value_p case with !VECTOR_TYPE_P.
2173 2023-06-23 Richard Biener <rguenther@suse.de>
2175 * tree-vect-patterns.cc (vect_look_through_possible_promotion):
2176 Exit early when the type isn't scalar integral.
2178 2023-06-23 Richard Biener <rguenther@suse.de>
2180 * match.pd ((outertype)((innertype0)a+(innertype1)b)
2181 -> ((newtype)a+(newtype)b)): Use element_precision
2184 2023-06-23 Richard Biener <rguenther@suse.de>
2186 * fold-const.cc (fold_binary_loc): Use element_precision
2187 when trying (double)float1 CMP (double)float2 to
2188 float1 CMP float2 simplification.
2189 * match.pd: Likewise.
2191 2023-06-23 Richard Biener <rguenther@suse.de>
2193 * tree-vect-stmts.cc (vectorizable_load): Avoid useless
2194 copies of VMAT_INVARIANT vectorized stmts, fix SLP support.
2196 2023-06-23 Richard Biener <rguenther@suse.de>
2198 * tree-vect-stmts.cc (vector_vector_composition_type):
2199 Handle composition of a vector from a number of elements that
2200 happens to match its number of lanes.
2202 2023-06-22 Marek Polacek <polacek@redhat.com>
2204 * configure.ac (--enable-host-bind-now): New check. Add
2205 -Wl,-z,now to LD_PICFLAG if --enable-host-bind-now.
2206 * configure: Regenerate.
2207 * doc/install.texi: Document --enable-host-bind-now.
2209 2023-06-22 Di Zhao OS <dizhao@os.amperecomputing.com>
2211 * config/aarch64/aarch64.cc: Change fma_reassoc_width for ampere1.
2213 2023-06-22 Richard Biener <rguenther@suse.de>
2215 PR tree-optimization/110332
2216 * tree-ssa-phiprop.cc (propagate_with_phi): Always
2217 check aliasing with edge inserted loads.
2219 2023-06-22 Roger Sayle <roger@nextmovesoftware.com>
2220 Uros Bizjak <ubizjak@gmail.com>
2222 * config/i386/i386-expand.cc (ix86_expand_sse_ptest): Recognize
2223 expansion of ptestc with equal operands as producing const1_rtx.
2224 * config/i386/i386.cc (ix86_rtx_costs): Provide accurate cost
2225 estimates of UNSPEC_PTEST, where the ptest performs the PAND
2226 or PAND of its operands.
2227 * config/i386/sse.md (define_split): Transform CCCmode UNSPEC_PTEST
2228 of reg_equal_p operands into an x86_stc instruction.
2229 (define_split): Split pandn/ptestz/set{n?}e into ptestc/set{n?}c.
2230 (define_split): Similar to above for strict_low_part destinations.
2231 (define_split): Split pandn/ptestz/j{n?}e into ptestc/j{n?}c.
2233 2023-06-22 David Malcolm <dmalcolm@redhat.com>
2236 * Makefile.in (ANALYZER_OBJS): Add analyzer/access-diagram.o.
2237 * doc/invoke.texi (Wanalyzer-out-of-bounds): Add description of
2239 (fanalyzer-debug-text-art): New.
2241 2023-06-22 David Malcolm <dmalcolm@redhat.com>
2243 * Makefile.in (OBJS-libcommon): Add text-art/box-drawing.o,
2244 text-art/canvas.o, text-art/ruler.o, text-art/selftests.o,
2245 text-art/style.o, text-art/styled-string.o, text-art/table.o,
2246 text-art/theme.o, and text-art/widget.o.
2247 * color-macros.h (COLOR_FG_BRIGHT_BLACK): New.
2248 (COLOR_FG_BRIGHT_RED): New.
2249 (COLOR_FG_BRIGHT_GREEN): New.
2250 (COLOR_FG_BRIGHT_YELLOW): New.
2251 (COLOR_FG_BRIGHT_BLUE): New.
2252 (COLOR_FG_BRIGHT_MAGENTA): New.
2253 (COLOR_FG_BRIGHT_CYAN): New.
2254 (COLOR_FG_BRIGHT_WHITE): New.
2255 (COLOR_BG_BRIGHT_BLACK): New.
2256 (COLOR_BG_BRIGHT_RED): New.
2257 (COLOR_BG_BRIGHT_GREEN): New.
2258 (COLOR_BG_BRIGHT_YELLOW): New.
2259 (COLOR_BG_BRIGHT_BLUE): New.
2260 (COLOR_BG_BRIGHT_MAGENTA): New.
2261 (COLOR_BG_BRIGHT_CYAN): New.
2262 (COLOR_BG_BRIGHT_WHITE): New.
2263 * common.opt (fdiagnostics-text-art-charset=): New option.
2264 (diagnostic-text-art.h): New SourceInclude.
2265 (diagnostic_text_art_charset) New Enum and EnumValues.
2266 * configure: Regenerate.
2267 * configure.ac (gccdepdir): Add text-art to loop.
2268 * diagnostic-diagram.h: New file.
2269 * diagnostic-format-json.cc (json_emit_diagram): New.
2270 (diagnostic_output_format_init_json): Wire it up to
2271 context->m_diagrams.m_emission_cb.
2272 * diagnostic-format-sarif.cc: Include "diagnostic-diagram.h" and
2273 "text-art/canvas.h".
2274 (sarif_result::on_nested_diagnostic): Move code to...
2275 (sarif_result::add_related_location): ...this new function.
2276 (sarif_result::on_diagram): New.
2277 (sarif_builder::emit_diagram): New.
2278 (sarif_builder::make_message_object_for_diagram): New.
2279 (sarif_emit_diagram): New.
2280 (diagnostic_output_format_init_sarif): Set
2281 context->m_diagrams.m_emission_cb to sarif_emit_diagram.
2282 * diagnostic-text-art.h: New file.
2283 * diagnostic.cc: Include "diagnostic-text-art.h",
2284 "diagnostic-diagram.h", and "text-art/theme.h".
2285 (diagnostic_initialize): Initialize context->m_diagrams and
2286 call diagnostics_text_art_charset_init.
2287 (diagnostic_finish): Clean up context->m_diagrams.m_theme.
2288 (diagnostic_emit_diagram): New.
2289 (diagnostics_text_art_charset_init): New.
2290 * diagnostic.h (text_art::theme): New forward decl.
2291 (class diagnostic_diagram): Likewise.
2292 (diagnostic_context::m_diagrams): New field.
2293 (diagnostic_emit_diagram): New decl.
2294 * doc/invoke.texi (Diagnostic Message Formatting Options): Add
2295 -fdiagnostics-text-art-charset=.
2296 (-fdiagnostics-plain-output): Add
2297 -fdiagnostics-text-art-charset=none.
2298 * gcc.cc: Include "diagnostic-text-art.h".
2299 (driver_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
2300 * opts-common.cc (decode_cmdline_options_to_array): Add
2301 "-fdiagnostics-text-art-charset=none" to expanded_args for
2302 -fdiagnostics-plain-output.
2303 * opts.cc: Include "diagnostic-text-art.h".
2304 (common_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
2305 * pretty-print.cc (pp_unicode_character): New.
2306 * pretty-print.h (pp_unicode_character): New decl.
2307 * selftest-run-tests.cc: Include "text-art/selftests.h".
2308 (selftest::run_tests): Call text_art_tests.
2309 * text-art/box-drawing-chars.inc: New file, generated by
2310 contrib/unicode/gen-box-drawing-chars.py.
2311 * text-art/box-drawing.cc: New file.
2312 * text-art/box-drawing.h: New file.
2313 * text-art/canvas.cc: New file.
2314 * text-art/canvas.h: New file.
2315 * text-art/ruler.cc: New file.
2316 * text-art/ruler.h: New file.
2317 * text-art/selftests.cc: New file.
2318 * text-art/selftests.h: New file.
2319 * text-art/style.cc: New file.
2320 * text-art/styled-string.cc: New file.
2321 * text-art/table.cc: New file.
2322 * text-art/table.h: New file.
2323 * text-art/theme.cc: New file.
2324 * text-art/theme.h: New file.
2325 * text-art/types.h: New file.
2326 * text-art/widget.cc: New file.
2327 * text-art/widget.h: New file.
2329 2023-06-21 Uros Bizjak <ubizjak@gmail.com>
2331 * function.h (emit_initial_value_sets):
2332 Change return type from int to void.
2333 (aggregate_value_p): Change return type from int to bool.
2334 (prologue_contains): Ditto.
2335 (epilogue_contains): Ditto.
2336 (prologue_epilogue_contains): Ditto.
2337 * function.cc (temp_slot): Make "in_use" variable bool.
2338 (make_slot_available): Update for changed "in_use" variable.
2339 (assign_stack_temp_for_type): Ditto.
2340 (emit_initial_value_sets): Change return type from int to void
2341 and update function body accordingly.
2342 (instantiate_virtual_regs): Ditto.
2343 (rest_of_handle_thread_prologue_and_epilogue): Ditto.
2344 (safe_insn_predicate): Change return type from int to bool.
2345 (aggregate_value_p): Change return type from int to bool
2346 and update function body accordingly.
2347 (prologue_contains): Change return type from int to bool.
2348 (prologue_epilogue_contains): Ditto.
2350 2023-06-21 Alexander Monakov <amonakov@ispras.ru>
2352 * common.opt (fp_contract_mode) [on]: Remove fallback.
2353 * config/sh/sh.md (*fmasf4): Correct flag_fp_contract_mode test.
2354 * doc/invoke.texi (-ffp-contract): Update.
2355 * trans-mem.cc (diagnose_tm_1): Skip internal function calls.
2357 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2359 * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
2360 Add alternatives to prefer to avoid same input and output Z register.
2361 (mask_gather_load<mode><v_int_container>): Likewise.
2362 (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
2363 (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
2364 (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
2365 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
2367 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
2369 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2370 <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
2371 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2372 <SVE_2BHSI:mode>_sxtw): Likewise.
2373 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2374 <SVE_2BHSI:mode>_uxtw): Likewise.
2375 (@aarch64_ldff1_gather<mode>): Likewise.
2376 (@aarch64_ldff1_gather<mode>): Likewise.
2377 (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
2378 (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
2379 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
2380 <VNx4_NARROW:mode>): Likewise.
2381 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2382 <VNx2_NARROW:mode>): Likewise.
2383 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2384 <VNx2_NARROW:mode>_sxtw): Likewise.
2385 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2386 <VNx2_NARROW:mode>_uxtw): Likewise.
2387 * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
2388 (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
2389 <SVE_PARTIAL_I:mode>): Likewise.
2391 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2393 * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
2394 Convert to compact alternatives syntax.
2395 (mask_gather_load<mode><v_int_container>): Likewise.
2396 (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
2397 (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
2398 (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
2399 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
2401 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
2403 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2404 <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
2405 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2406 <SVE_2BHSI:mode>_sxtw): Likewise.
2407 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2408 <SVE_2BHSI:mode>_uxtw): Likewise.
2409 (@aarch64_ldff1_gather<mode>): Likewise.
2410 (@aarch64_ldff1_gather<mode>): Likewise.
2411 (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
2412 (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
2413 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
2414 <VNx4_NARROW:mode>): Likewise.
2415 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2416 <VNx2_NARROW:mode>): Likewise.
2417 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2418 <VNx2_NARROW:mode>_sxtw): Likewise.
2419 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2420 <VNx2_NARROW:mode>_uxtw): Likewise.
2421 * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
2422 (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
2423 <SVE_PARTIAL_I:mode>): Likewise.
2425 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2428 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2430 * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
2431 Convert to compact alternatives syntax.
2432 (mask_gather_load<mode><v_int_container>): Likewise.
2433 (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
2434 (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
2435 (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
2436 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
2438 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
2440 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2441 <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
2442 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2443 <SVE_2BHSI:mode>_sxtw): Likewise.
2444 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2445 <SVE_2BHSI:mode>_uxtw): Likewise.
2446 (@aarch64_ldff1_gather<mode>): Likewise.
2447 (@aarch64_ldff1_gather<mode>): Likewise.
2448 (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
2449 (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
2450 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
2451 <VNx4_NARROW:mode>): Likewise.
2452 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2453 <VNx2_NARROW:mode>): Likewise.
2454 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2455 <VNx2_NARROW:mode>_sxtw): Likewise.
2456 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2457 <VNx2_NARROW:mode>_uxtw): Likewise.
2458 * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
2459 (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
2460 <SVE_PARTIAL_I:mode>): Likewise.
2462 2023-06-21 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2464 * optabs-query.cc (can_vec_mask_load_store_p): Move to optabs-tree.cc.
2465 (get_len_load_store_mode): Ditto.
2466 * optabs-query.h (can_vec_mask_load_store_p): Move to optabs-tree.h.
2467 (get_len_load_store_mode): Ditto.
2468 * optabs-tree.cc (can_vec_mask_load_store_p): New function.
2469 (get_len_load_store_mode): Ditto.
2470 * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
2471 (get_len_load_store_mode): Ditto.
2472 * tree-if-conv.cc: include optabs-tree instead of optabs-query
2474 2023-06-21 Richard Biener <rguenther@suse.de>
2476 * tree-ssa-loop-ivopts.cc (add_iv_candidate_for_use): Use
2477 split_constant_offset for the POINTER_PLUS_EXPR case.
2479 2023-06-21 Richard Biener <rguenther@suse.de>
2481 * tree-ssa-loop-ivopts.cc (record_group_use): Use
2482 split_constant_offset.
2484 2023-06-21 Richard Biener <rguenther@suse.de>
2486 * tree-loop-distribution.cc (classify_builtin_st): Use
2487 split_constant_offset.
2488 * tree-ssa-loop-ivopts.h (strip_offset): Remove.
2489 * tree-ssa-loop-ivopts.cc (strip_offset): Make static.
2491 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2493 * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
2494 Convert to compact alternatives syntax.
2495 (mask_gather_load<mode><v_int_container>): Likewise.
2496 (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
2497 (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
2498 (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
2499 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
2501 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
2503 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2504 <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
2505 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2506 <SVE_2BHSI:mode>_sxtw): Likewise.
2507 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
2508 <SVE_2BHSI:mode>_uxtw): Likewise.
2509 (@aarch64_ldff1_gather<mode>): Likewise.
2510 (@aarch64_ldff1_gather<mode>): Likewise.
2511 (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
2512 (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
2513 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
2514 <VNx4_NARROW:mode>): Likewise.
2515 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2516 <VNx2_NARROW:mode>): Likewise.
2517 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2518 <VNx2_NARROW:mode>_sxtw): Likewise.
2519 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
2520 <VNx2_NARROW:mode>_uxtw): Likewise.
2521 * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
2522 (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
2523 <SVE_PARTIAL_I:mode>): Likewise.
2525 2023-06-21 Tamar Christina <tamar.christina@arm.com>
2528 * doc/md.texi: Replace backslashchar.
2530 2023-06-21 Richard Biener <rguenther@suse.de>
2532 * config/i386/i386.cc (ix86_vector_costs::finish_cost):
2533 Overload. For masked main loops make sure the vectorization
2534 factor isn't more than double the number of iterations.
2536 2023-06-21 Jan Beulich <jbeulich@suse.com>
2538 * config/i386/i386-expand.cc (ix86_expand_copysign): Request
2539 value duplication by ix86_build_signbit_mask() when AVX512F and
2541 * config/i386/sse.md (*<avx512>_vternlog<mode>_all): Convert to
2542 2-alternative form. Adjust "mode" attribute. Add "enabled"
2544 (*<avx512>_vpternlog<mode>_1): Also permit when TARGET_AVX512F
2545 && !TARGET_PREFER_AVX256.
2546 (*<avx512>_vpternlog<mode>_2): Likewise.
2547 (*<avx512>_vpternlog<mode>_3): Likewise.
2549 2023-06-21 liuhongt <hongtao.liu@intel.com>
2552 * tree-vect-stmts.cc (vectorizable_conversion): Use
2553 intermiediate integer type for float_expr/fix_trunc_expr when
2554 direct optab is not existed.
2556 2023-06-20 Tamar Christina <tamar.christina@arm.com>
2559 * gensupport.cc (convert_syntax): Explicitly check for RTX code.
2561 2023-06-20 Richard Sandiford <richard.sandiford@arm.com>
2563 * config/aarch64/aarch64.md (stack_tie): Hard-code the first
2564 register operand to the stack pointer. Require the second register
2565 operand to have the number specified in a separate const_int operand.
2566 * config/aarch64/aarch64.cc (aarch64_emit_stack_tie): New function.
2567 (aarch64_allocate_and_probe_stack_space): Use it.
2568 (aarch64_expand_prologue, aarch64_expand_epilogue): Likewise.
2569 (aarch64_expand_epilogue): Likewise.
2571 2023-06-20 Jakub Jelinek <jakub@redhat.com>
2574 * tree-ssa-math-opts.cc (match_uaddc_usubc): Remember lhs of
2575 IMAGPART_EXPR of arg2/arg3 and use that as arg3 if it has the right
2578 2023-06-20 Uros Bizjak <ubizjak@gmail.com>
2580 * calls.h (setjmp_call_p): Change return type from int to bool.
2581 * calls.cc (struct arg_data): Change "pass_on_stack" to bool.
2582 (store_one_arg): Change return type from int to bool
2583 and adjust function body accordingly. Change "sibcall_failure"
2585 (finalize_must_preallocate): Ditto. Change *must_preallocate pointer
2586 argument to bool. Change "partial_seen" variable to bool.
2587 (load_register_parameters): Change *sibcall_failure
2588 pointer argument to bool.
2589 (check_sibcall_argument_overlap_1): Change return type from int to bool
2590 and adjust function body accordingly.
2591 (check_sibcall_argument_overlap): Ditto. Change
2592 "mark_stored_args_map" argument to bool.
2593 (emit_call_1): Change "already_popped" variable to bool.
2594 (setjmp_call_p): Change return type from int to bool
2595 and adjust function body accordingly.
2596 (initialize_argument_information): Change *must_preallocate
2597 pointer argument to bool.
2598 (expand_call): Change "pcc_struct_value", "must_preallocate"
2599 and "sibcall_failure" variables to bool.
2600 (emit_library_call_value_1): Change "pcc_struct_value"
2603 2023-06-20 Martin Jambor <mjambor@suse.cz>
2606 * ipa-sra.cc (struct caller_issues): New field there_is_one.
2607 (check_for_caller_issues): Set it.
2608 (check_all_callers_for_issues): Check it.
2610 2023-06-20 Martin Jambor <mjambor@suse.cz>
2612 * ipa-prop.h (ipa_uid_to_idx_map_elt): New type.
2613 (struct ipcp_transformation): Rearrange members according to
2614 C++ class coding convention, add m_uid_to_idx,
2615 get_param_index and maybe_create_parm_idx_map.
2616 * ipa-cp.cc (ipcp_transformation::get_param_index): New function.
2617 (compare_uids): Likewise.
2618 (ipcp_transformation::maype_create_parm_idx_map): Likewise.
2619 * ipa-prop.cc (ipcp_get_parm_bits): Use get_param_index.
2620 (ipcp_update_bits): Accept TS as a parameter, assume it is not NULL.
2621 (ipcp_update_vr): Likewise.
2622 (ipcp_transform_function): Call, maybe_create_parm_idx_map of TS, bail
2623 out quickly if empty, pass it to ipcp_update_bits and ipcp_update_vr.
2625 2023-06-20 Carl Love <cel@us.ibm.com>
2627 * config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin):
2628 Rename CODE_FOR_xsxsigqp_tf to CODE_FOR_xsxsigqp_tf_ti.
2629 Rename CODE_FOR_xsxsigqp_kf to CODE_FOR_xsxsigqp_kf_ti.
2630 Rename CCDE_FOR_xsxexpqp_tf to CODE_FOR_xsxexpqp_tf_di.
2631 Rename CODE_FOR_xsxexpqp_kf to CODE_FOR_xsxexpqp_kf_di.
2632 (CODE_FOR_xsxexpqp_kf_v2di, CODE_FOR_xsxsigqp_kf_v1ti,
2633 CODE_FOR_xsiexpqp_kf_v2di): Add case statements.
2634 * config/rs6000/rs6000-builtins.def
2635 (__builtin_vsx_scalar_extract_exp_to_vec,
2636 __builtin_vsx_scalar_extract_sig_to_vec,
2637 __builtin_vsx_scalar_insert_exp_vqp): Add new builtin definitions.
2638 Rename xsxexpqp_kf, xsxsigqp_kf, xsiexpqp_kf to xsexpqp_kf_di,
2639 xsxsigqp_kf_ti, xsiexpqp_kf_di respectively.
2640 * config/rs6000/rs6000-c.cc (altivec_resolve_overloaded_builtin):
2641 Update case RS6000_OVLD_VEC_VSIE to handle MODE_VECTOR_INT for new
2642 overloaded instance. Update comments.
2643 * config/rs6000/rs6000-overload.def
2644 (__builtin_vec_scalar_insert_exp): Add new overload definition with
2646 (scalar_extract_exp_to_vec, scalar_extract_sig_to_vec): New
2647 overloaded definitions.
2648 * config/rs6000/vsx.md (V2DI_DI): New mode iterator.
2649 (DI_to_TI): New mode attribute.
2650 Rename xsxexpqp_<mode> to sxexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
2651 Rename xsxsigqp_<mode> to xsxsigqp_<IEEE128:mode>_<VEC_TI:mode>.
2652 Rename xsiexpqp_<mode> to xsiexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
2653 * doc/extend.texi (scalar_extract_exp_to_vec,
2654 scalar_extract_sig_to_vec): Add documentation for new builtins.
2655 (scalar_insert_exp): Add new overloaded builtin definition.
2657 2023-06-20 Li Xu <xuli1@eswincomputing.com>
2659 * config/riscv/riscv.cc (riscv_regmode_natural_size): set the natural
2660 size of vector mask mode to one rvv register.
2662 2023-06-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2664 * config/riscv/riscv-v.cc (expand_const_vector): Optimize codegen.
2666 2023-06-20 Lehua Ding <lehua.ding@rivai.ai>
2668 * config/riscv/riscv.cc (riscv_arg_has_vector): Add default
2671 2023-06-20 Richard Biener <rguenther@suse.de>
2673 * tree-ssa-dse.cc (dse_classify_store): When we found
2674 no defs and the basic-block with the original definition
2675 ends in __builtin_unreachable[_trap] the store is dead.
2677 2023-06-20 Richard Biener <rguenther@suse.de>
2679 * tree-ssa-phiprop.cc (phiprop_insert_phi): For simple loads
2680 keep the virtual SSA form up-to-date.
2682 2023-06-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2684 * config/aarch64/aarch64-simd.md (*aarch64_addp_same_reg<mode>):
2685 New define_insn_and_split.
2687 2023-06-20 Tamar Christina <tamar.christina@arm.com>
2689 * config/aarch64/aarch64.md (*mov<mode>_aarch64): Drop test comment.
2691 2023-06-20 Jan Beulich <jbeulich@suse.com>
2693 * config/i386/sse.md (vec_dupv2di): Correct %vmovddup input
2694 constraint. Add new AVX512F alternative.
2696 2023-06-20 Richard Biener <rguenther@suse.de>
2699 * dwarf2out.cc (process_scope_var): Continue processing
2700 the decl after setting a parent in case the existing DIE
2703 2023-06-20 Lehua Ding <lehua.ding@rivai.ai>
2705 * config/riscv/riscv.cc (riscv_scalable_vector_type_p): Delete.
2706 (riscv_arg_has_vector): Simplify.
2707 (riscv_pass_in_vector_p): Adjust warning message.
2709 2023-06-19 Jin Ma <jinma@linux.alibaba.com>
2711 * config/riscv/riscv.cc (riscv_compute_frame_info): Allocate frame for FCSR.
2712 (riscv_for_each_saved_reg): Save and restore FCSR in interrupt functions.
2713 * config/riscv/riscv.md (riscv_frcsr): New patterns.
2714 (riscv_fscsr): Likewise.
2716 2023-06-19 Toru Kisuki <tkisuki@tachyum.com>
2718 PR rtl-optimization/110305
2719 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
2720 Handle HONOR_SNANS for x + 0.0.
2722 2023-06-19 Jan Hubicka <jh@suse.cz>
2724 PR tree-optimization/109811
2725 PR tree-optimization/109849
2726 * passes.def: Add phiprop to early optimization passes.
2727 * tree-ssa-phiprop.cc: Allow clonning.
2729 2023-06-19 Tamar Christina <tamar.christina@arm.com>
2731 * config/aarch64/aarch64.md (arches): Add nosimd.
2732 (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Rewrite to
2735 2023-06-19 Tamar Christina <tamar.christina@arm.com>
2736 Omar Tahir <Omar.Tahir2@arm.com>
2738 * gensupport.cc (class conlist, add_constraints, add_attributes,
2739 skip_spaces, expect_char, preprocess_compact_syntax,
2740 parse_section_layout, parse_section, convert_syntax): New.
2741 (process_rtx): Check for conversion.
2742 * genoutput.cc (process_template): Check for unresolved iterators.
2743 (class data): Add compact_syntax_p.
2745 * gensupport.h (compact_syntax): New.
2746 (hash-set.h): Include.
2747 * doc/md.texi: Document it.
2749 2023-06-19 Uros Bizjak <ubizjak@gmail.com>
2751 * recog.h (check_asm_operands): Change return type from int to bool.
2752 (insn_invalid_p): Ditto.
2753 (verify_changes): Ditto.
2754 (apply_change_group): Ditto.
2755 (constrain_operands): Ditto.
2756 (constrain_operands_cached): Ditto.
2757 (validate_replace_rtx_subexp): Ditto.
2758 (validate_replace_rtx): Ditto.
2759 (validate_replace_rtx_part): Ditto.
2760 (validate_replace_rtx_part_nosimplify): Ditto.
2761 (added_clobbers_hard_reg_p): Ditto.
2762 (peep2_regno_dead_p): Ditto.
2763 (peep2_reg_dead_p): Ditto.
2764 (store_data_bypass_p): Ditto.
2765 (if_test_bypass_p): Ditto.
2766 * rtl.h (split_all_insns_noflow): Change
2767 return type from unsigned int to void.
2768 * genemit.cc (output_added_clobbers_hard_reg_p): Change return type
2769 of generated added_clobbers_hard_reg_p from int to bool and adjust
2770 function body accordingly. Change "used" variable type from
2772 * recog.cc (check_asm_operands): Change return type
2773 from int to bool and adjust function body accordingly.
2774 (insn_invalid_p): Ditto. Change "is_asm" variable to bool.
2775 (verify_changes): Change return type from int to bool.
2776 (apply_change_group): Change return type from int to bool
2777 and adjust function body accordingly.
2778 (validate_replace_rtx_subexp): Change return type from int to bool.
2779 (validate_replace_rtx): Ditto.
2780 (validate_replace_rtx_part): Ditto.
2781 (validate_replace_rtx_part_nosimplify): Ditto.
2782 (constrain_operands_cached): Ditto.
2783 (constrain_operands): Ditto. Change "lose" and "win"
2784 variables type from int to bool.
2785 (split_all_insns_noflow): Change return type from unsigned int
2786 to void and adjust function body accordingly.
2787 (peep2_regno_dead_p): Change return type from int to bool.
2788 (peep2_reg_dead_p): Ditto.
2789 (peep2_find_free_register): Change "success"
2790 variable type from int to bool
2791 (store_data_bypass_p_1): Change return type from int to bool.
2792 (store_data_bypass_p): Ditto.
2794 2023-06-19 Li Xu <xuli1@eswincomputing.com>
2796 * config/riscv/vector-iterators.md: zvfh/zvfhmin depends on the
2799 2023-06-19 Pan Li <pan2.li@intel.com>
2802 * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
2804 * config/riscv/vector-iterators.md: Remove VWLMUL1, VWLMUL1_ZVE64,
2805 VWLMUL1_ZVE32, VI_ZVE64, VI_ZVE32, VWI, VWI_ZVE64, VWI_ZVE32,
2806 VF_ZVE63 and VF_ZVE32.
2807 * config/riscv/vector.md
2808 (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Removed.
2809 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
2810 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>): Ditto.
2811 (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
2812 (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
2813 (@pred_widen_reduc_plus<v_su><VQI:mode><VHI_LMUL1:mode>): New pattern.
2814 (@pred_widen_reduc_plus<v_su><VHI:mode><VSI_LMUL1:mode>): Ditto.
2815 (@pred_widen_reduc_plus<v_su><VSI:mode><VDI_LMUL1:mode>): Ditto.
2816 (@pred_widen_reduc_plus<order><VHF:mode><VSF_LMUL1:mode>): Ditto.
2817 (@pred_widen_reduc_plus<order><VSF:mode><VDF_LMUL1:mode>): Ditto.
2819 2023-06-19 Pan Li <pan2.li@intel.com>
2822 * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
2824 * config/riscv/vector-iterators.md: Add VHF, VSF, VDF,
2825 VHF_LMUL1, VSF_LMUL1, VDF_LMUL1, and remove unused attr.
2826 * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): Removed.
2827 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
2828 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
2829 (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
2830 (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
2831 (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
2832 (@pred_reduc_<reduc><VHF:mode><VHF_LMUL1:mode>): New pattern.
2833 (@pred_reduc_<reduc><VSF:mode><VSF_LMUL1:mode>): Ditto.
2834 (@pred_reduc_<reduc><VDF:mode><VDF_LMUL1:mode>): Ditto.
2835 (@pred_reduc_plus<order><VHF:mode><VHF_LMUL1:mode>): Ditto.
2836 (@pred_reduc_plus<order><VSF:mode><VSF_LMUL1:mode>): Ditto.
2837 (@pred_reduc_plus<order><VDF:mode><VDF_LMUL1:mode>): Ditto.
2839 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
2841 * config/gcn/gcn.cc (gcn_expand_divmod_libfunc): New function.
2842 (gcn_init_libfuncs): Add div and mod functions for all modes.
2843 Add placeholders for divmod functions.
2844 (TARGET_EXPAND_DIVMOD_LIBFUNC): Define.
2846 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
2848 * tree-vect-generic.cc: Include optabs-libfuncs.h.
2849 (get_compute_type): Check optab_libfunc.
2850 * tree-vect-stmts.cc: Include optabs-libfuncs.h.
2851 (vectorizable_operation): Check optab_libfunc.
2853 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
2855 * config/gcn/gcn-protos.h (vgpr_4reg_mode_p): New function.
2856 * config/gcn/gcn-valu.md (V_4REG, V_4REG_ALT): New iterators.
2857 (V_MOV, V_MOV_ALT): Likewise.
2858 (scalar_mode, SCALAR_MODE): Add TImode.
2859 (vnsi, VnSI, vndi, VnDI): Likewise.
2860 (vec_merge, vec_merge_with_clobber, vec_merge_with_vcc): Use V_MOV.
2861 (mov<mode>, mov<mode>_unspec): Use V_MOV.
2862 (*mov<mode>_4reg): New insn.
2863 (mov<mode>_exec): New 4reg variant.
2864 (mov<mode>_sgprbase): Likewise.
2865 (reload_in<mode>, reload_out<mode>): Use V_MOV.
2866 (vec_set<mode>): Likewise.
2867 (vec_duplicate<mode><exec>): New 4reg variant.
2868 (vec_extract<mode><scalar_mode>): Likewise.
2869 (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
2870 (vec_extract<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
2871 (vec_extract<V_4REG:mode><V_4REG_ALT:mode>_nop): New 4reg variant.
2872 (fold_extract_last_<mode>): Use V_MOV.
2873 (vec_init<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
2874 (vec_init<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
2875 (gather_load<mode><vnsi>, gather<mode>_expr<exec>,
2876 gather<mode>_insn_1offset<exec>, gather<mode>_insn_1offset_ds<exec>,
2877 gather<mode>_insn_2offsets<exec>): Use V_MOV.
2878 (scatter_store<mode><vnsi>, scatter<mode>_expr<exec_scatter>,
2879 scatter<mode>_insn_1offset<exec_scatter>,
2880 scatter<mode>_insn_1offset_ds<exec_scatter>,
2881 scatter<mode>_insn_2offsets<exec_scatter>): Likewise.
2882 (maskload<mode>di, maskstore<mode>di, mask_gather_load<mode><vnsi>,
2883 mask_scatter_store<mode><vnsi>): Likewise.
2884 * config/gcn/gcn.cc (gcn_class_max_nregs): Use vgpr_4reg_mode_p.
2885 (gcn_hard_regno_mode_ok): Likewise.
2886 (GEN_VNM): Add TImode support.
2887 (USE_TI): New macro. Separate TImode operations from non-TImode ones.
2888 (gcn_vector_mode_supported_p): Add V64TImode, V32TImode, V16TImode,
2889 V8TImode, and V2TImode.
2890 (print_operand): Add 'J' and 'K' print codes.
2892 2023-06-19 Richard Biener <rguenther@suse.de>
2894 PR tree-optimization/110298
2895 * tree-ssa-loop-ivcanon.cc (tree_unroll_loops_completely):
2896 Clear number of iterations info before cleaning up the CFG.
2898 2023-06-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2900 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
2901 Simplify vec_concat of lowpart subreg and high part vec_select.
2903 2023-06-19 Tobias Burnus <tobias@codesourcery.com>
2905 * doc/invoke.texi (-foffload-options): Remove '-O3' from the examples.
2907 2023-06-19 Richard Sandiford <richard.sandiford@arm.com>
2909 * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
2910 Handle null niters_skip.
2912 2023-06-19 Richard Biener <rguenther@suse.de>
2914 * config/aarch64/aarch64.cc
2915 (aarch64_vector_costs::analyze_loop_vinfo): Fix reference
2916 to LOOP_VINFO_MASKS.
2918 2023-06-19 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
2921 * common/config/avr/avr-common.cc: Remove setting
2922 of OPT_fdelete_null_pointer_checks.
2923 * config/avr/avr.cc (avr_option_override): Clear
2924 flag_delete_null_pointer_checks if zero_address_valid.
2925 (avr_addr_space_zero_address_valid): New function.
2926 (TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): Provide target
2929 2023-06-19 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2930 Robin Dapp <rdapp.gcc@gmail.com>
2932 * doc/md.texi: Add len_mask{load,store}.
2933 * genopinit.cc (main): Ditto.
2935 * internal-fn.cc (len_maskload_direct): Ditto.
2936 (len_maskstore_direct): Ditto.
2937 (expand_call_mem_ref): Ditto.
2938 (expand_partial_load_optab_fn): Ditto.
2939 (expand_len_maskload_optab_fn): Ditto.
2940 (expand_partial_store_optab_fn): Ditto.
2941 (expand_len_maskstore_optab_fn): Ditto.
2942 (direct_len_maskload_optab_supported_p): Ditto.
2943 (direct_len_maskstore_optab_supported_p): Ditto.
2944 * internal-fn.def (LEN_MASK_LOAD): Ditto.
2945 (LEN_MASK_STORE): Ditto.
2946 * optabs.def (OPTAB_CD): Ditto.
2948 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
2950 * config/riscv/autovec.md (<optab><mode>2): Add unop expanders.
2952 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
2954 * config/riscv/autovec.md (<optab><mode>3): Implement binop
2956 * config/riscv/riscv-protos.h (emit_vlmax_fp_insn): Declare.
2957 (enum vxrm_field_enum): Rename this...
2958 (enum fixed_point_rounding_mode): ...to this.
2959 (enum frm_field_enum): Rename this...
2960 (enum floating_point_rounding_mode): ...to this.
2961 * config/riscv/riscv-v.cc (emit_vlmax_fp_insn): New function
2962 * config/riscv/riscv.cc (riscv_const_insns): Clarify const
2964 (riscv_libgcc_floating_mode_supported_p): Adjust comment.
2965 (riscv_excess_precision): Do not convert to float for ZVFH.
2966 * config/riscv/vector-iterators.md: Add VF_AUTO iterator.
2968 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
2970 * config/riscv/vector-iterators.md: Add VI_QH iterator.
2971 * config/riscv/autovec-opt.md
2972 (@pred_extract_first_sextdi<mode>): New vmv.x.s pattern
2973 that includes sign extension.
2974 (@pred_extract_first_sextsi<mode>): Dito for SImode.
2976 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
2978 * config/riscv/autovec.md (vec_set<mode>): Implement.
2979 (vec_extract<mode><vel>): Implement.
2980 * config/riscv/riscv-protos.h (enum insn_type): Add slide insn.
2981 (emit_vlmax_slide_insn): Declare.
2982 (emit_nonvlmax_slide_tu_insn): Declare.
2983 (emit_scalar_move_insn): Export.
2984 (emit_nonvlmax_integer_move_insn): Export.
2985 * config/riscv/riscv-v.cc (emit_vlmax_slide_insn): New function.
2986 (emit_nonvlmax_slide_tu_insn): New function.
2987 (emit_vlmax_masked_mu_insn): No change.
2988 (emit_vlmax_integer_move_insn): Export.
2990 2023-06-19 Richard Biener <rguenther@suse.de>
2992 * tree-vectorizer.h (enum vect_partial_vector_style): New.
2993 (_loop_vec_info::partial_vector_style): Likewise.
2994 (LOOP_VINFO_PARTIAL_VECTORS_STYLE): Likewise.
2995 (rgroup_controls::compare_type): Add.
2996 (vec_loop_masks): Change from a typedef to auto_vec<>
2998 * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
2999 Adjust. Convert niters_skip to compare_type.
3000 (vect_set_loop_condition_partial_vectors_avx512): New function
3001 implementing the AVX512 partial vector codegen.
3002 (vect_set_loop_condition): Dispatch to the correct
3003 vect_set_loop_condition_partial_vectors_* function based on
3004 LOOP_VINFO_PARTIAL_VECTORS_STYLE.
3005 (vect_prepare_for_masked_peels): Compute LOOP_VINFO_MASK_SKIP_NITERS
3006 in the original niter type.
3007 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Initialize
3008 partial_vector_style.
3009 (can_produce_all_loop_masks_p): Adjust.
3010 (vect_verify_full_masking): Produce the rgroup_controls vector
3011 here. Set LOOP_VINFO_PARTIAL_VECTORS_STYLE on success.
3012 (vect_verify_full_masking_avx512): New function implementing
3013 verification of AVX512 style masking.
3014 (vect_verify_loop_lens): Set LOOP_VINFO_PARTIAL_VECTORS_STYLE.
3015 (vect_analyze_loop_2): Also try AVX512 style masking.
3017 (vect_estimate_min_profitable_iters): Implement AVX512 style
3018 mask producing cost.
3019 (vect_record_loop_mask): Do not build the rgroup_controls
3020 vector here but record masks in a hash-set.
3021 (vect_get_loop_mask): Implement AVX512 style mask query,
3022 complementing the existing while_ult style.
3024 2023-06-19 Richard Biener <rguenther@suse.de>
3026 * tree-vectorizer.h (vect_get_loop_mask): Add loop_vec_info
3028 * tree-vect-loop.cc (vect_get_loop_mask): Likewise.
3029 (vectorize_fold_left_reduction): Adjust.
3030 (vect_transform_reduction): Likewise.
3031 (vectorizable_live_operation): Likewise.
3032 * tree-vect-stmts.cc (vectorizable_call): Likewise.
3033 (vectorizable_operation): Likewise.
3034 (vectorizable_store): Likewise.
3035 (vectorizable_load): Likewise.
3036 (vectorizable_condition): Likewise.
3038 2023-06-19 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
3041 * config/avr/avr.opt (mgas-isr-prologues, mmain-is-OS_task):
3042 Add Optimization option property.
3044 2023-06-19 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
3046 * config/xtensa/xtensa.cc (xtensa_constantsynth_2insn):
3047 Add new pattern for the abovementioned case.
3049 2023-06-19 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
3051 * config/xtensa/xtensa.cc
3052 (TARGET_MEMORY_MOVE_COST, xtensa_memory_move_cost): Remove.
3054 2023-06-19 Jiufu Guo <guojiufu@linux.ibm.com>
3056 * config/rs6000/rs6000.cc (TARGET_CONST_ANCHOR): New define.
3058 2023-06-19 Jiufu Guo <guojiufu@linux.ibm.com>
3060 * cse.cc (try_const_anchors): Check SCALAR_INT_MODE.
3062 2023-06-19 liuhongt <hongtao.liu@intel.com>
3065 * config/i386/sse.md (<sse2_avx2>_packsswb<mask_name>):
3067 (sse2_packsswb<mask_name>): .. this, ..
3068 (avx2_packsswb<mask_name>): .. this and ..
3069 (avx512bw_packsswb<mask_name>): .. this.
3070 (<sse2_avx2>_packssdw<mask_name>): Substitute with ..
3071 (sse2_packssdw<mask_name>): .. this, ..
3072 (avx2_packssdw<mask_name>): .. this and ..
3073 (avx512bw_packssdw<mask_name>): .. this.
3075 2023-06-19 liuhongt <hongtao.liu@intel.com>
3078 * config/i386/i386-expand.cc (ix86_split_mmx_pack): Use
3079 UNSPEC_US_TRUNCATE instead of original us_truncate for
3081 * config/i386/mmx.md (mmx_pack<s_trunsuffix>swb): Substitute
3083 (mmx_packsswb): .. this and ..
3084 (mmx_packuswb): .. this.
3085 (mmx_packusdw): Use UNSPEC_US_TRUNCATE instead of original
3087 (s_trunsuffix): Removed code iterator.
3088 (any_s_truncate): Ditto.
3089 * config/i386/sse.md (<sse2_avx2>_packuswb<mask_name>): Use
3090 UNSPEC_US_TRUNCATE instead of original us_truncate.
3091 (<sse4_1_avx2>_packusdw<mask_name>): Ditto.
3092 * config/i386/i386.md (UNSPEC_US_TRUNCATE): New unspec_c_enum.
3094 2023-06-18 Pan Li <pan2.li@intel.com>
3096 * config/riscv/riscv-vector-builtins-bases.cc: Fix one typo.
3098 2023-06-18 Uros Bizjak <ubizjak@gmail.com>
3100 * rtl.h (*rtx_equal_p_callback_function):
3101 Change return type from int to bool.
3102 (rtx_equal_p): Ditto.
3103 (*hash_rtx_callback_function): Ditto.
3104 * rtl.cc (rtx_equal_p): Change return type from int to bool
3105 and adjust function body accordingly.
3106 * early-remat.cc (scratch_equal): Ditto.
3107 * sel-sched-ir.cc (skip_unspecs_callback): Ditto.
3108 (hash_with_unspec_callback): Ditto.
3110 2023-06-18 Jeff Law <jlaw@ventanamicro.com>
3112 * config/arc/arc.md (movqi_insn): Allow certain constants to
3113 be stored into memory in the pattern's condition.
3114 (movsf_insn): Similarly.
3116 2023-06-18 Honza <jh@ryzen3.suse.cz>
3118 PR tree-optimization/109849
3119 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Add new parameter
3120 ES; handle ipa_predicate::not_sra_candidate.
3121 (evaluate_properties_for_edge): Pass es to
3122 evaluate_conditions_for_known_args.
3123 (ipa_fn_summary_t::duplicate): Handle sra candidates.
3124 (dump_ipa_call_summary): Dump points_to_possible_sra_candidate.
3125 (load_or_store_of_ptr_parameter): New function.
3126 (points_to_possible_sra_candidate_p): New function.
3127 (analyze_function_body): Initialize points_to_possible_sra_candidate;
3128 determine sra predicates.
3129 (estimate_ipcp_clone_size_and_time): Update call of
3130 evaluate_conditions_for_known_args.
3131 (remap_edge_params): Update points_to_possible_sra_candidate.
3132 (read_ipa_call_summary): Stream points_to_possible_sra_candidate
3133 (write_ipa_call_summary): Likewise.
3134 * ipa-predicate.cc (ipa_predicate::add_clause): Handle not_sra_candidate.
3135 (dump_condition): Dump it.
3136 * ipa-predicate.h (struct inline_param_summary): Add
3137 points_to_possible_sra_candidate.
3139 2023-06-18 Roger Sayle <roger@nextmovesoftware.com>
3141 * config/i386/i386-expand.cc (ix86_expand_carry): New helper
3142 function for setting the carry flag.
3143 (ix86_expand_builtin) <handlecarry>: Use it here.
3144 * config/i386/i386-protos.h (ix86_expand_carry): Prototype here.
3145 * config/i386/i386.md (uaddc<mode>5): Use ix86_expand_carry.
3146 (usubc<mode>5): Likewise.
3148 2023-06-18 Roger Sayle <roger@nextmovesoftware.com>
3150 * config/i386/i386.md (*concat<mode><dwi>3_1): Use QImode
3151 for the immediate constant shift count.
3152 (*concat<mode><dwi>3_2): Likewise.
3153 (*concat<mode><dwi>3_3): Likewise.
3154 (*concat<mode><dwi>3_4): Likewise.
3155 (*concat<mode><dwi>3_5): Likewise.
3156 (*concat<mode><dwi>3_6): Likewise.
3158 2023-06-18 Uros Bizjak <ubizjak@gmail.com>
3160 * cse.cc (hash_rtx_cb): Rename to hash_rtx.
3162 * early-remat.cc (remat_candidate_hasher::equal): Update
3163 to call rtx_equal_p with rtx_equal_p_callback_function argument.
3164 * rtl.cc (rtx_equal_p_cb): Rename to rtx_equal_p.
3165 (rtx_equal_p): Remove.
3166 * rtl.h (rtx_equal_p): Add rtx_equal_p_callback_function
3167 argument with NULL default value.
3168 (rtx_equal_p_cb): Remove function declaration.
3169 (hash_rtx_cb): Ditto.
3170 (hash_rtx): Add hash_rtx_callback_function argument
3171 with NULL default value.
3172 * sel-sched-ir.cc (free_nop_pool): Update function comment.
3173 (skip_unspecs_callback): Ditto.
3174 (vinsn_init): Update to call hash_rtx with
3175 hash_rtx_callback_function argument.
3176 (vinsn_equal_p): Ditto.
3178 2023-06-18 yulong <shiyulong@iscas.ac.cn>
3180 * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
3181 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
3182 (ADJUST_ALIGNMENT): Ditto.
3183 (RVV_TUPLE_PARTIAL_MODES): Ditto.
3184 (ADJUST_NUNITS): Ditto.
3185 * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
3187 (vfloat16mf4x3_t): Ditto.
3188 (vfloat16mf4x4_t): Ditto.
3189 (vfloat16mf4x5_t): Ditto.
3190 (vfloat16mf4x6_t): Ditto.
3191 (vfloat16mf4x7_t): Ditto.
3192 (vfloat16mf4x8_t): Ditto.
3193 (vfloat16mf2x2_t): Ditto.
3194 (vfloat16mf2x3_t): Ditto.
3195 (vfloat16mf2x4_t): Ditto.
3196 (vfloat16mf2x5_t): Ditto.
3197 (vfloat16mf2x6_t): Ditto.
3198 (vfloat16mf2x7_t): Ditto.
3199 (vfloat16mf2x8_t): Ditto.
3200 (vfloat16m1x2_t): Ditto.
3201 (vfloat16m1x3_t): Ditto.
3202 (vfloat16m1x4_t): Ditto.
3203 (vfloat16m1x5_t): Ditto.
3204 (vfloat16m1x6_t): Ditto.
3205 (vfloat16m1x7_t): Ditto.
3206 (vfloat16m1x8_t): Ditto.
3207 (vfloat16m2x2_t): Ditto.
3208 (vfloat16m2x3_t): Ditto.
3209 (vfloat16m2x4_t): Ditto.
3210 (vfloat16m4x2_t): Ditto.
3211 * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
3212 (vfloat16mf4x3_t): Ditto.
3213 (vfloat16mf4x4_t): Ditto.
3214 (vfloat16mf4x5_t): Ditto.
3215 (vfloat16mf4x6_t): Ditto.
3216 (vfloat16mf4x7_t): Ditto.
3217 (vfloat16mf4x8_t): Ditto.
3218 (vfloat16mf2x2_t): Ditto.
3219 (vfloat16mf2x3_t): Ditto.
3220 (vfloat16mf2x4_t): Ditto.
3221 (vfloat16mf2x5_t): Ditto.
3222 (vfloat16mf2x6_t): Ditto.
3223 (vfloat16mf2x7_t): Ditto.
3224 (vfloat16mf2x8_t): Ditto.
3225 (vfloat16m1x2_t): Ditto.
3226 (vfloat16m1x3_t): Ditto.
3227 (vfloat16m1x4_t): Ditto.
3228 (vfloat16m1x5_t): Ditto.
3229 (vfloat16m1x6_t): Ditto.
3230 (vfloat16m1x7_t): Ditto.
3231 (vfloat16m1x8_t): Ditto.
3232 (vfloat16m2x2_t): Ditto.
3233 (vfloat16m2x3_t): Ditto.
3234 (vfloat16m2x4_t): Ditto.
3235 (vfloat16m4x2_t): Ditto.
3236 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
3237 * config/riscv/riscv.md: New.
3238 * config/riscv/vector-iterators.md: New.
3240 2023-06-17 Roger Sayle <roger@nextmovesoftware.com>
3242 * config/i386/i386-expand.cc (ix86_expand_move): Check that OP1 is
3243 CONST_WIDE_INT_P before calling ix86_convert_wide_int_to_broadcast.
3244 Generalize special case for converting TImode to V1TImode to handle
3245 all 128-bit vector conversions.
3247 2023-06-17 Costas Argyris <costas.argyris@gmail.com>
3249 * gcc-ar.cc (main): Refactor to slightly reduce code
3250 duplication. Avoid unnecessary elements in nargv.
3252 2023-06-16 Pan Li <pan2.li@intel.com>
3255 * config/riscv/riscv-vector-builtins-bases.cc: Add ret_mode for
3256 integer reduction expand.
3257 * config/riscv/vector-iterators.md: Add VQI, VHI, VSI and VDI,
3258 and the LMUL1 attr respectively.
3259 * config/riscv/vector.md
3260 (@pred_reduc_<reduc><mode><vlmul1>): Removed.
3261 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Likewise.
3262 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Likewise.
3263 (@pred_reduc_<reduc><VQI:mode><VQI_LMUL1:mode>): New pattern.
3264 (@pred_reduc_<reduc><VHI:mode><VHI_LMUL1:mode>): Likewise.
3265 (@pred_reduc_<reduc><VSI:mode><VSI_LMUL1:mode>): Likewise.
3266 (@pred_reduc_<reduc><VDI:mode><VDI_LMUL1:mode>): Likewise.
3268 2023-06-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3271 * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Fix bug.
3273 2023-06-16 Jakub Jelinek <jakub@redhat.com>
3276 * builtin-types.def (BT_FN_UINT_UINT_UINT_UINT_UINTPTR,
3277 BT_FN_ULONG_ULONG_ULONG_ULONG_ULONGPTR,
3278 BT_FN_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONGPTR): New
3280 * builtins.def (BUILT_IN_ADDC, BUILT_IN_ADDCL, BUILT_IN_ADDCLL,
3281 BUILT_IN_SUBC, BUILT_IN_SUBCL, BUILT_IN_SUBCLL): New builtins.
3282 * builtins.cc (fold_builtin_addc_subc): New function.
3283 (fold_builtin_varargs): Handle BUILT_IN_{ADD,SUB}C{,L,LL}.
3284 * doc/extend.texi (__builtin_addc, __builtin_subc): Document.
3286 2023-06-16 Jakub Jelinek <jakub@redhat.com>
3288 PR tree-optimization/110271
3289 * tree-ssa-math-opts.cc (math_opts_dom_walker::after_dom_children)
3290 <case PLUS_EXPR>: Ignore return value from match_arith_overflow,
3291 instead call match_uaddc_usubc only if gsi_stmt (gsi) is still stmt.
3293 2023-06-16 Martin Jambor <mjambor@suse.cz>
3295 * configure: Regenerate.
3297 2023-06-16 Roger Sayle <roger@nextmovesoftware.com>
3298 Uros Bizjak <ubizjak@gmail.com>
3301 * config/i386/i386.md (*add<dwi>3_doubleword_concat): New
3302 define_insn_and_split combine *add<dwi>3_doubleword with
3303 a *concat<mode><dwi>3 for more efficient lowering after reload.
3305 2023-06-16 Vladimir N. Makarov <vmakarov@redhat.com>
3307 * ira-lives.cc: Include except.h.
3308 (process_bb_node_lives): Ignore conflicts from cleanup exceptions
3309 when the pseudo does not live at the exception landing pad.
3311 2023-06-16 Alex Coplan <alex.coplan@arm.com>
3313 * doc/invoke.texi: Document -Welaborated-enum-base.
3315 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3317 * config/aarch64/aarch64-simd-builtins.def (shrn2_n): Rename builtins to...
3318 (ushrn2_n): ... This.
3319 (sqshrn2_n): Rename builtins to...
3320 (ssqshrn2_n): ... This.
3321 (uqshrn2_n): Rename builtins to...
3322 (uqushrn2_n): ... This.
3323 * config/aarch64/arm_neon.h (vqshrn_high_n_s16): Adjust for the above.
3324 (vqshrn_high_n_s32): Likewise.
3325 (vqshrn_high_n_s64): Likewise.
3326 (vqshrn_high_n_u16): Likewise.
3327 (vqshrn_high_n_u32): Likewise.
3328 (vqshrn_high_n_u64): Likewise.
3329 (vshrn_high_n_s16): Likewise.
3330 (vshrn_high_n_s32): Likewise.
3331 (vshrn_high_n_s64): Likewise.
3332 (vshrn_high_n_u16): Likewise.
3333 (vshrn_high_n_u32): Likewise.
3334 (vshrn_high_n_u64): Likewise.
3335 * config/aarch64/aarch64-simd.md (aarch64_<shrn_op>shrn2_n<mode>_insn_le):
3337 (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_le): ... This.
3338 Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
3339 (aarch64_<shrn_op>shrn2_n<mode>_insn_be): Rename to...
3340 (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_be): ... This.
3341 Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
3342 (aarch64_<shrn_op>shrn2_n<mode>): Rename to...
3343 (aarch64_<shrn_op><sra_op>shrn2_n<mode>): ... This.
3344 Update expander for the above.
3346 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3348 * config/aarch64/aarch64-simd-builtins.def (shrn2): Rename builtins to...
3349 (shrn2_n): ... This.
3350 (rshrn2): Rename builtins to...
3351 (rshrn2_n): ... This.
3352 * config/aarch64/arm_neon.h (vrshrn_high_n_s16): Adjust for the above.
3353 (vrshrn_high_n_s32): Likewise.
3354 (vrshrn_high_n_s64): Likewise.
3355 (vrshrn_high_n_u16): Likewise.
3356 (vrshrn_high_n_u32): Likewise.
3357 (vrshrn_high_n_u64): Likewise.
3358 (vshrn_high_n_s16): Likewise.
3359 (vshrn_high_n_s32): Likewise.
3360 (vshrn_high_n_s64): Likewise.
3361 (vshrn_high_n_u16): Likewise.
3362 (vshrn_high_n_u32): Likewise.
3363 (vshrn_high_n_u64): Likewise.
3364 * config/aarch64/aarch64-simd.md (*aarch64_<srn_op>shrn<mode>2_vect_le):
3366 (*aarch64_<srn_op>shrn<mode>2_vect_be): Likewise.
3367 (aarch64_shrn2<mode>_insn_le): Likewise.
3368 (aarch64_shrn2<mode>_insn_be): Likewise.
3369 (aarch64_shrn2<mode>): Likewise.
3370 (aarch64_rshrn2<mode>_insn_le): Likewise.
3371 (aarch64_rshrn2<mode>_insn_be): Likewise.
3372 (aarch64_rshrn2<mode>): Likewise.
3373 (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_le): Likewise.
3374 (aarch64_<shrn_op>shrn2_n<mode>_insn_le): New define_insn.
3375 (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_be): Delete.
3376 (aarch64_<shrn_op>shrn2_n<mode>_insn_be): New define_insn.
3377 (aarch64_<sur>q<r>shr<u>n2_n<mode>): Delete.
3378 (aarch64_<shrn_op>shrn2_n<mode>): New define_expand.
3379 (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): New define_insn.
3380 (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): New define_insn.
3381 (aarch64_<shrn_op>rshrn2_n<mode>): New define_expand.
3382 (aarch64_sqshrun2_n<mode>_insn_le): New define_insn.
3383 (aarch64_sqshrun2_n<mode>_insn_be): New define_insn.
3384 (aarch64_sqshrun2_n<mode>): New define_expand.
3385 (aarch64_sqrshrun2_n<mode>_insn_le): New define_insn.
3386 (aarch64_sqrshrun2_n<mode>_insn_be): New define_insn.
3387 (aarch64_sqrshrun2_n<mode>): New define_expand.
3388 * config/aarch64/iterators.md (UNSPEC_SQSHRUN, UNSPEC_SQRSHRUN,
3389 UNSPEC_SQSHRN, UNSPEC_UQSHRN, UNSPEC_SQRSHRN, UNSPEC_UQRSHRN):
3390 Delete unspec values.
3391 (VQSHRN_N): Delete int iterator.
3393 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3395 * config/aarch64/aarch64.h (AARCH64_VALID_SHRN_OP): Define.
3396 * config/aarch64/aarch64-simd.md
3397 (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): Rename to...
3398 (*aarch64_<shrn_op><shrn_s>shrn_n<mode>_insn<vczle><vczbe>): ... This.
3399 Use SHIFTRT iterator and add AARCH64_VALID_SHRN_OP to condition.
3400 * config/aarch64/iterators.md (shrn_s): New code attribute.
3402 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3404 * config/aarch64/aarch64-simd.md (aarch64_<sur>q<r>shr<u>n_n<mode>):
3406 (aarch64_<shrn_op>shrn_n<mode>): ... This. Reimplement with RTL codes.
3407 (*aarch64_<shrn_op>rshrn_n<mode>_insn): New define_insn.
3408 (aarch64_sqrshrun_n<mode>_insn): Likewise.
3409 (aarch64_sqshrun_n<mode>_insn): Likewise.
3410 (aarch64_<shrn_op>rshrn_n<mode>): New define_expand.
3411 (aarch64_sqshrun_n<mode>): Likewise.
3412 (aarch64_sqrshrun_n<mode>): Likewise.
3413 * config/aarch64/iterators.md (V2XWIDE): Add HI and SI modes.
3415 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3417 * config/aarch64/aarch64-simd-builtins.def (shrn): Rename builtins to...
3419 (rshrn): Rename builtins to...
3420 (rshrn_n): ... This.
3421 * config/aarch64/arm_neon.h (vshrn_n_s16): Adjust for the above.
3422 (vshrn_n_s32): Likewise.
3423 (vshrn_n_s64): Likewise.
3424 (vshrn_n_u16): Likewise.
3425 (vshrn_n_u32): Likewise.
3426 (vshrn_n_u64): Likewise.
3427 (vrshrn_n_s16): Likewise.
3428 (vrshrn_n_s32): Likewise.
3429 (vrshrn_n_s64): Likewise.
3430 (vrshrn_n_u16): Likewise.
3431 (vrshrn_n_u32): Likewise.
3432 (vrshrn_n_u64): Likewise.
3433 * config/aarch64/aarch64-simd.md
3434 (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): Delete.
3435 (aarch64_shrn<mode>): Likewise.
3436 (aarch64_rshrn<mode><vczle><vczbe>_insn): Likewise.
3437 (aarch64_rshrn<mode>): Likewise.
3438 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): Likewise.
3439 (aarch64_<sur>q<r>shr<u>n_n<mode>): Likewise.
3440 (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): New define_insn.
3441 (*aarch64_<shrn_op>rshrn_n<mode>_insn<vczle><vczbe>): Likewise.
3442 (*aarch64_sqshrun_n<mode>_insn<vczle><vczbe>): Likewise.
3443 (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
3444 (aarch64_<shrn_op>shrn_n<mode>): New define_expand.
3445 (aarch64_<shrn_op>rshrn_n<mode>): Likewise.
3446 (aarch64_sqshrun_n<mode>): Likewise.
3447 (aarch64_sqrshrun_n<mode>): Likewise.
3448 * config/aarch64/iterators.md (ALL_TRUNC): New code iterator.
3449 (TRUNCEXTEND): New code attribute.
3450 (TRUNC_SHIFT): Likewise.
3451 (shrn_op): Likewise.
3452 * config/aarch64/predicates.md (aarch64_simd_umax_quarter_mode):
3455 2023-06-16 Pan Li <pan2.li@intel.com>
3457 * config/riscv/riscv-vsetvl.cc
3458 (pass_vsetvl::global_eliminate_vsetvl_insn): Initialize var by NULL.
3460 2023-06-16 Richard Biener <rguenther@suse.de>
3462 PR tree-optimization/110278
3463 * match.pd (uns < (typeof uns)(uns != 0) -> false): New.
3464 (x != (typeof x)(x == 0) -> true): Likewise.
3466 2023-06-16 Pali Rohár <pali@kernel.org>
3468 * config/i386/mingw-w64.h (CPP_SPEC): Adjust for -mcrtdll=.
3469 (REAL_LIBGCC_SPEC): New define.
3470 * config/i386/mingw.opt: Add mcrtdll=
3471 * config/i386/mingw32.h (CPP_SPEC): Adjust for -mcrtdll=.
3472 (REAL_LIBGCC_SPEC): Adjust for -mcrtdll=.
3473 (STARTFILE_SPEC): Adjust for -mcrtdll=.
3474 * doc/invoke.texi: Add mcrtdll= documentation.
3476 2023-06-16 Simon Dardis <simon.dardis@imgtec.com>
3478 * config/mips/mips.cc (enum mips_code_readable_setting):New enmu.
3479 (mips_handle_code_readable_attr):New static function.
3480 (mips_get_code_readable_attr):New static enum function.
3481 (mips_set_current_function):Set the code_readable mode.
3482 (mips_option_override):Same as above.
3483 * doc/extend.texi:Document code_readable.
3485 2023-06-16 Richard Biener <rguenther@suse.de>
3487 PR tree-optimization/110269
3488 * fold-const.cc (fold_binary_loc): Merge x != 0 folding
3489 with tree_expr_nonzero_p ...
3490 * match.pd (cmp (convert? addr@0) integer_zerop): With this
3493 2023-06-15 Marek Polacek <polacek@redhat.com>
3495 * Makefile.in: Set LD_PICFLAG. Use it. Set enable_host_pie.
3496 Remove NO_PIE_CFLAGS and NO_PIE_FLAG. Pass LD_PICFLAG to
3497 ALL_LINKERFLAGS. Use the "pic" build of libiberty if --enable-host-pie.
3498 * configure.ac (--enable-host-shared): Don't set PICFLAG here.
3499 (--enable-host-pie): New check. Set PICFLAG and LD_PICFLAG after this
3501 * configure: Regenerate.
3502 * doc/install.texi: Document --enable-host-pie.
3504 2023-06-15 Manolis Tsamis <manolis.tsamis@vrull.eu>
3506 * regcprop.cc (maybe_mode_change): Enable stack pointer
3509 2023-06-15 Andrew MacLeod <amacleod@redhat.com>
3511 PR tree-optimization/110266
3512 * gimple-range-fold.cc (adjust_imagpart_expr): Check for integer
3514 (adjust_realpart_expr): Ditto.
3516 2023-06-15 Jan Beulich <jbeulich@suse.com>
3518 * config/i386/sse.md (<avx512>_vec_dup<mode><mask_name>): Use
3521 2023-06-15 Jan Beulich <jbeulich@suse.com>
3523 * config/i386/constraints.md: Mention k and r for B.
3525 2023-06-15 Lulu Cheng <chenglulu@loongson.cn>
3526 Andrew Pinski <apinski@marvell.com>
3529 * config/loongarch/loongarch.md: Modify the register constraints for template
3530 "jumptable" and "indirect_jump" from "r" to "e".
3532 2023-06-15 Xi Ruoyao <xry111@xry111.site>
3534 * config/loongarch/loongarch-tune.h (loongarch_align): New
3536 * config/loongarch/loongarch-def.h (loongarch_cpu_align): New
3538 * config/loongarch/loongarch-def.c (loongarch_cpu_align): Define
3540 * config/loongarch/loongarch.cc
3541 (loongarch_option_override_internal): Set the value of
3542 -falign-functions= if -falign-functions is enabled but no value
3543 is given. Likewise for -falign-labels=.
3545 2023-06-15 Jakub Jelinek <jakub@redhat.com>
3548 * internal-fn.def (UADDC, USUBC): New internal functions.
3549 * internal-fn.cc (expand_UADDC, expand_USUBC): New functions.
3550 (commutative_ternary_fn_p): Return true also for IFN_UADDC.
3551 * optabs.def (uaddc5_optab, usubc5_optab): New optabs.
3552 * tree-ssa-math-opts.cc (uaddc_cast, uaddc_ne0, uaddc_is_cplxpart,
3553 match_uaddc_usubc): New functions.
3554 (math_opts_dom_walker::after_dom_children): Call match_uaddc_usubc
3555 for PLUS_EXPR, MINUS_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR unless
3556 other optimizations have been successful for those.
3557 * gimple-fold.cc (gimple_fold_call): Handle IFN_UADDC and IFN_USUBC.
3558 * fold-const-call.cc (fold_const_call): Likewise.
3559 * gimple-range-fold.cc (adjust_imagpart_expr): Likewise.
3560 * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Likewise.
3561 * doc/md.texi (uaddc<mode>5, usubc<mode>5): Document new named
3563 * config/i386/i386.md (uaddc<mode>5, usubc<mode>5): New
3564 define_expand patterns.
3565 (*setcc_qi_addqi3_cconly_overflow_1_<mode>, *setccc): Split
3566 into NOTE_INSN_DELETED note rather than nop instruction.
3567 (*setcc_qi_negqi_ccc_1_<mode>, *setcc_qi_negqi_ccc_2_<mode>):
3570 2023-06-15 Jakub Jelinek <jakub@redhat.com>
3573 * config/i386/i386.md (subborrow<mode>): Add alternative with
3574 memory destination and add for it define_peephole2
3575 TARGET_READ_MODIFY_WRITE/-Os patterns to prefer using memory
3576 destination in these patterns.
3578 2023-06-15 Jakub Jelinek <jakub@redhat.com>
3581 * config/i386/i386.md (*sub<mode>_3, @add<mode>3_carry,
3582 addcarry<mode>, @sub<mode>3_carry, *add<mode>3_cc_overflow_1): Add
3583 define_peephole2 TARGET_READ_MODIFY_WRITE/-Os patterns to prefer
3584 using memory destination in these patterns.
3586 2023-06-15 Jakub Jelinek <jakub@redhat.com>
3588 * gimple-fold.cc (gimple_fold_call): Move handling of arg0
3589 as well as arg1 INTEGER_CSTs for .UBSAN_CHECK_{ADD,SUB,MUL}
3590 and .{ADD,SUB,MUL}_OVERFLOW calls from here...
3591 * fold-const-call.cc (fold_const_call): ... here.
3593 2023-06-15 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
3595 * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>):
3596 Rename to <su>abd<mode>3.
3597 * config/aarch64/aarch64-sve.md (<su>abd<mode>_3): Rename
3600 2023-06-15 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
3602 * doc/md.texi (sabd, uabd): Document them.
3603 * internal-fn.def (ABD): Use new optab.
3604 * optabs.def (sabd_optab, uabd_optab): New optabs,
3605 * tree-vect-patterns.cc (vect_recog_absolute_difference):
3606 Recognize the following idiom abs (a - b).
3607 (vect_recog_sad_pattern): Refactor to use
3608 vect_recog_absolute_difference.
3609 (vect_recog_abd_pattern): Use patterns found by
3610 vect_recog_absolute_difference to build a new ABD
3613 2023-06-15 chenxiaolong <chenxl04200420@163.com>
3615 * config/loongarch/loongarch.h (LARCH_CALL_RATIO): Modify the value
3616 of macro LARCH_CALL_RATIO on LoongArch to make it perform optimally.
3618 2023-06-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3620 * config/riscv/riscv-v.cc (shuffle_merge_patterns): New pattern.
3621 (expand_vec_perm_const_1): Add merge optmization.
3623 2023-06-15 Lehua Ding <lehua.ding@rivai.ai>
3626 * config/riscv/riscv.cc (riscv_get_arg_info): Return NULL_RTX for vector mode
3627 (riscv_pass_by_reference): Return true for vector mode
3629 2023-06-15 Pan Li <pan2.li@intel.com>
3631 * config/riscv/autovec-opt.md: Align the predictor sytle.
3632 * config/riscv/autovec.md: Ditto.
3634 2023-06-15 Pan Li <pan2.li@intel.com>
3636 * config/riscv/riscv-v.cc (rvv_builder::get_merge_scalar_mask):
3637 Take elen instead of scalar BITS_PER_WORD.
3638 (expand_vector_init_merge_repeating_sequence): Use inner_bits_size
3639 instead of scaler BITS_PER_WORD.
3641 2023-06-14 Jivan Hakobyan <jivanhakobyan9@gmail.com>
3643 * config/moxie/uclinux.h (MFWRAP_SPEC): Remove
3645 2023-06-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3647 * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold):
3648 Fix signed comparison warning in loop from npats to enelts.
3650 2023-06-14 Thomas Schwinge <thomas@codesourcery.com>
3652 * gcc.cc (driver_handle_option): Forward host '-lgfortran', '-lm'
3653 to offloading compilation.
3654 * config/gcn/mkoffload.cc (main): Adjust.
3655 * config/nvptx/mkoffload.cc (main): Likewise.
3656 * doc/invoke.texi (foffload-options): Update example.
3658 2023-06-14 liuhongt <hongtao.liu@intel.com>
3661 * config/i386/sse.md (mov<mode>_internal>): Use x instead of v
3662 for alternative 2 since there's no evex version for vpcmpeqd
3665 2023-06-13 Jeff Law <jlaw@ventanamicro.com>
3667 * gcc.cc (LINK_COMMAND_SPEC): Remove mudflap spec handling.
3669 2023-06-13 Jeff Law <jlaw@ventanamicro.com>
3671 * config/sh/divtab.cc: Remove.
3673 2023-06-13 Jakub Jelinek <jakub@redhat.com>
3675 * config/i386/i386.cc (standard_sse_constant_opcode): Remove
3676 superfluous spaces around \t for vpcmpeqd.
3678 2023-06-13 Roger Sayle <roger@nextmovesoftware.com>
3680 * expr.cc (store_constructor) <case VECTOR_TYPE>: Don't bother
3681 clearing vectors with only a single element. Set CLEARED if the
3682 vector was initialized to zero.
3684 2023-06-13 Lehua Ding <lehua.ding@rivai.ai>
3686 * config/riscv/riscv-v.cc (struct mode_vtype_group): Remove duplicate
3689 (TUPLE_ENTRY): Undef.
3691 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3693 * config/riscv/riscv-v.cc (rvv_builder::single_step_npatterns_p): Add comment.
3694 (shuffle_generic_patterns): Ditto.
3695 (expand_vec_perm_const_1): Ditto.
3697 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3699 * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): Fix bug.
3700 (shuffle_decompress_patterns): Ditto.
3702 2023-06-13 Richard Biener <rguenther@suse.de>
3704 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Free loop BBs.
3706 2023-06-13 Yanzhang Wang <yanzhang.wang@intel.com>
3707 Kito Cheng <kito.cheng@sifive.com>
3709 * config/riscv/riscv-protos.h (riscv_init_cumulative_args): Set
3710 warning flag if func is not builtin
3711 * config/riscv/riscv.cc
3712 (riscv_scalable_vector_type_p): Determine whether the type is scalable vector.
3713 (riscv_arg_has_vector): Determine whether the arg is vector type.
3714 (riscv_pass_in_vector_p): Check the vector type param is passed by value.
3715 (riscv_init_cumulative_args): The same as header.
3716 (riscv_get_arg_info): Add the checking.
3717 (riscv_function_value): Check the func return and set warning flag
3718 * config/riscv/riscv.h (INIT_CUMULATIVE_ARGS): Add a flag to
3719 determine whether warning psabi or not.
3721 2023-06-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3723 * config/arm/arm-opts.h (enum arm_tp_type): Remove TP_CP15.
3724 Add TP_TPIDRURW, TP_TPIDRURO, TP_TPIDRPRW values.
3725 * config/arm/arm-protos.h (arm_output_load_tpidr): Declare prototype.
3726 * config/arm/arm.cc (arm_option_reconfigure_globals): Replace TP_CP15
3728 (arm_output_load_tpidr): Define.
3729 * config/arm/arm.h (TARGET_HARD_TP): Define in terms of TARGET_SOFT_TP.
3730 * config/arm/arm.md (load_tp_hard): Call arm_output_load_tpidr to output
3732 (reload_tp_hard): Likewise.
3733 * config/arm/arm.opt (tpidrurw, tpidruro, tpidrprw): New values for
3735 * doc/invoke.texi (Arm Options, mtp): Document new values.
3737 2023-06-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3740 * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Add
3741 AARCH64_TPIDRRO_EL0 value.
3742 * config/aarch64/aarch64.cc (aarch64_output_load_tp): Define.
3743 * config/aarch64/aarch64.opt (tpidr_el0, tpidr_el1, tpidr_el2,
3744 tpidr_el3, tpidrro_el3): New accepted values to -mtp=.
3745 * doc/invoke.texi (AArch64 Options): Document new -mtp= options.
3747 2023-06-13 Alexandre Oliva <oliva@adacore.com>
3749 * range-op-float.cc (frange_nextafter): Drop inline.
3750 (frelop_early_resolve): Add static.
3751 (frange_float): Likewise.
3753 2023-06-13 Richard Biener <rguenther@suse.de>
3755 PR middle-end/110232
3756 * fold-const.cc (native_interpret_vector): Use TYPE_SIZE_UNIT
3757 to check whether the buffer covers the whole vector.
3759 2023-06-13 Richard Biener <rguenther@suse.de>
3761 * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): For
3762 .MASK_LOAD and friends set the size of the access to unknown.
3764 2023-06-13 Tejas Belagod <tbelagod@arm.com>
3767 * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold): Fold sve
3768 calls that have a constant input predicate vector.
3769 (svlast_impl::is_lasta): Query to check if intrinsic is svlasta.
3770 (svlast_impl::is_lastb): Query to check if intrinsic is svlastb.
3771 (svlast_impl::vect_all_same): Check if all vector elements are equal.
3773 2023-06-13 Andi Kleen <ak@linux.intel.com>
3775 * config/i386/gcc-auto-profile: Regenerate.
3777 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3779 * config/riscv/vector-iterators.md: Fix requirement.
3781 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3783 * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): New function.
3784 (shuffle_decompress_patterns): New function.
3785 (expand_vec_perm_const_1): Add decompress optimization.
3787 2023-06-12 Jeff Law <jlaw@ventanamicro.com>
3789 PR rtl-optimization/101188
3790 * postreload.cc (reload_cse_move2add_invalidate): New function,
3792 (reload_cse_move2add): Call reload_cse_move2add_invalidate.
3794 2023-06-12 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
3796 * config/aarch64/aarch64.cc (aarch64_expand_vector_init): Tweak condition
3797 if (n_var == n_elts && n_elts <= 16) to allow a single constant,
3798 and if maxv == 1, use constant element for duplicating into register.
3800 2023-06-12 Tobias Burnus <tobias@codesourcery.com>
3802 * gimplify.cc (gimplify_adjust_omp_clauses_1): Use
3803 GOMP_MAP_FORCE_PRESENT for 'present alloc' implicit mapping.
3804 (gimplify_adjust_omp_clauses): Change
3805 GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC} to the equivalent
3806 GOMP_MAP_FORCE_PRESENT.
3807 * omp-low.cc (lower_omp_target): Remove handling of no-longer valid
3808 GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC}; update map kinds used for
3809 to/from clauses with present modifier.
3811 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
3813 PR tree-optimization/110205
3814 * range-op-float.cc (range_operator::fold_range): Add default FII
3816 * range-op-mixed.h (class operator_gt): Add missing final overrides.
3817 * range-op.cc (range_op_handler::fold_range): Add RO_FII case.
3818 (operator_lshift ::update_bitmask): Add final override.
3819 (operator_rshift ::update_bitmask): Add final override.
3820 * range-op.h (range_operator::fold_range): Add FII prototype.
3822 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
3824 * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
3825 Use range_op_handler directly.
3826 * range-op.cc (range_op_handler::range_op_handler): Unsigned
3827 param instead of tree-code.
3828 (ptr_op_widen_plus_signed): Delete.
3829 (ptr_op_widen_plus_unsigned): Delete.
3830 (ptr_op_widen_mult_signed): Delete.
3831 (ptr_op_widen_mult_unsigned): Delete.
3832 (range_op_table::initialize_integral_ops): Add new opcodes.
3833 * range-op.h (range_op_handler): Use unsigned.
3834 (OP_WIDEN_MULT_SIGNED): New.
3835 (OP_WIDEN_MULT_UNSIGNED): New.
3836 (OP_WIDEN_PLUS_SIGNED): New.
3837 (OP_WIDEN_PLUS_UNSIGNED): New.
3838 (RANGE_OP_TABLE_SIZE): New.
3839 (range_op_table::operator []): Use unsigned.
3840 (range_op_table::set): Use unsigned.
3841 (m_range_tree): Make unsigned.
3842 (ptr_op_widen_mult_signed): Remove.
3843 (ptr_op_widen_mult_unsigned): Remove.
3844 (ptr_op_widen_plus_signed): Remove.
3845 (ptr_op_widen_plus_unsigned): Remove.
3847 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
3849 * gimple-range-op.cc (gimple_range_op_handler): Set m_operator
3850 manually as there is no access to the default operator.
3851 (cfn_copysign::fold_range): Don't check for validity.
3852 (cfn_ubsan::fold_range): Ditto.
3853 (gimple_range_op_handler::maybe_builtin_call): Don't set to NULL.
3854 * range-op.cc (default_operator): New.
3855 (range_op_handler::range_op_handler): Use default_operator
3857 (range_op_handler::operator bool): Move from header, compare
3858 against default operator.
3859 (range_op_handler::range_op): New.
3860 * range-op.h (range_op_handler::operator bool): Move.
3862 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
3864 * range-op.cc (unified_table): Delete.
3865 (range_op_table operator_table): Instantiate.
3866 (range_op_table::range_op_table): Rename from unified_table.
3867 (range_op_handler::range_op_handler): Use range_op_table.
3868 * range-op.h (range_op_table::operator []): Inline.
3869 (range_op_table::set): Inline.
3871 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
3873 * gimple-range-gori.cc (gori_compute::condexpr_adjust): Do not
3875 * gimple-range-op.cc (get_code): Rename from get_code_and_type
3877 (gimple_range_op_handler::supported_p): No need for type.
3878 (gimple_range_op_handler::gimple_range_op_handler): Ditto.
3879 (cfn_copysign::fold_range): Ditto.
3880 (cfn_ubsan::fold_range): Ditto.
3881 * ipa-cp.cc (ipa_vr_operation_and_type_effects): Ditto.
3882 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Ditto.
3883 * range-op-float.cc (operator_plus::op1_range): Ditto.
3884 (operator_mult::op1_range): Ditto.
3885 (range_op_float_tests): Ditto.
3886 * range-op.cc (get_op_handler): Remove.
3887 (range_op_handler::set_op_handler): Remove.
3888 (operator_plus::op1_range): No need for type.
3889 (operator_minus::op1_range): Ditto.
3890 (operator_mult::op1_range): Ditto.
3891 (operator_exact_divide::op1_range): Ditto.
3892 (operator_cast::op1_range): Ditto.
3893 (perator_bitwise_not::fold_range): Ditto.
3894 (operator_negate::fold_range): Ditto.
3895 * range-op.h (range_op_handler::range_op_handler): Remove type param.
3896 (range_cast): No need for type.
3897 (range_op_table::operator[]): Check for enum_code >= 0.
3898 * tree-data-ref.cc (compute_distributive_range): No need for type.
3899 * tree-ssa-loop-unswitch.cc (unswitch_predicate): Ditto.
3900 * value-query.cc (range_query::get_tree_range): Ditto.
3901 * value-relation.cc (relation_oracle::validate_relation): Ditto.
3902 * vr-values.cc (range_of_var_in_loop): Ditto.
3903 (simplify_using_ranges::fold_cond_with_ops): Ditto.
3905 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
3907 * range-op-mixed.h (operator_max): Remove final.
3908 * range-op-ptr.cc (pointer_table::pointer_table): Remove MAX_EXPR.
3909 (pointer_table::pointer_table): Remove.
3910 (class hybrid_max_operator): New.
3911 (range_op_table::initialize_pointer_ops): Add hybrid_max_operator.
3912 * range-op.cc (pointer_tree_table): Remove.
3913 (unified_table::unified_table): Comment out MAX_EXPR.
3914 (get_op_handler): Remove check of pointer table.
3915 * range-op.h (class pointer_table): Remove.
3917 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
3919 * range-op-mixed.h (operator_min): Remove final.
3920 * range-op-ptr.cc (pointer_table::pointer_table): Remove MIN_EXPR.
3921 (class hybrid_min_operator): New.
3922 (range_op_table::initialize_pointer_ops): Add hybrid_min_operator.
3923 * range-op.cc (unified_table::unified_table): Comment out MIN_EXPR.
3925 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
3927 * range-op-mixed.h (operator_bitwise_or): Remove final.
3928 * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_IOR_EXPR.
3929 (class hybrid_or_operator): New.
3930 (range_op_table::initialize_pointer_ops): Add hybrid_or_operator.
3931 * range-op.cc (unified_table::unified_table): Comment out BIT_IOR_EXPR.
3933 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
3935 * range-op-mixed.h (operator_bitwise_and): Remove final.
3936 * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_AND_EXPR.
3937 (class hybrid_and_operator): New.
3938 (range_op_table::initialize_pointer_ops): Add hybrid_and_operator.
3939 * range-op.cc (unified_table::unified_table): Comment out BIT_AND_EXPR.
3941 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
3943 * Makefile.in (OBJS): Add range-op-ptr.o.
3944 * range-op-mixed.h (update_known_bitmask): Move prototype here.
3945 (minus_op1_op2_relation_effect): Move prototype here.
3946 (wi_includes_zero_p): Move function to here.
3948 * range-op.cc (update_known_bitmask): Remove static.
3949 (wi_includes_zero_p): Move to header.
3950 (wi_zero_p): Move to header.
3951 (minus_op1_op2_relation_effect): Remove static.
3952 (operator_pointer_diff): Move class and routines to range-op-ptr.cc.
3953 (pointer_plus_operator): Ditto.
3954 (pointer_min_max_operator): Ditto.
3955 (pointer_and_operator): Ditto.
3956 (pointer_or_operator): Ditto.
3957 (pointer_table): Ditto.
3958 (range_op_table::initialize_pointer_ops): Ditto.
3959 * range-op-ptr.cc: New.
3961 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
3963 * range-op-mixed.h (class operator_max): Move from...
3964 * range-op.cc (unified_table::unified_table): Add MAX_EXPR.
3965 (get_op_handler): Remove the integral table.
3966 (class operator_max): Move from here.
3967 (integral_table::integral_table): Delete.
3968 * range-op.h (class integral_table): Delete.
3970 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
3972 * range-op-mixed.h (class operator_min): Move from...
3973 * range-op.cc (unified_table::unified_table): Add MIN_EXPR.
3974 (class operator_min): Move from here.
3975 (integral_table::integral_table): Remove MIN_EXPR.
3977 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
3979 * range-op-mixed.h (class operator_bitwise_or): Move from...
3980 * range-op.cc (unified_table::unified_table): Add BIT_IOR_EXPR.
3981 (class operator_bitwise_or): Move from here.
3982 (integral_table::integral_table): Remove BIT_IOR_EXPR.
3984 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
3986 * range-op-mixed.h (class operator_bitwise_and): Move from...
3987 * range-op.cc (unified_table::unified_table): Add BIT_AND_EXPR.
3988 (get_op_handler): Check for a pointer table entry first.
3989 (class operator_bitwise_and): Move from here.
3990 (integral_table::integral_table): Remove BIT_AND_EXPR.
3992 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
3994 * range-op-mixed.h (class operator_bitwise_xor): Move from...
3995 * range-op.cc (unified_table::unified_table): Add BIT_XOR_EXPR.
3996 (class operator_bitwise_xor): Move from here.
3997 (integral_table::integral_table): Remove BIT_XOR_EXPR.
3998 (pointer_table::pointer_table): Remove BIT_XOR_EXPR.
4000 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
4002 * range-op-mixed.h (class operator_bitwise_not): Move from...
4003 * range-op.cc (unified_table::unified_table): Add BIT_NOT_EXPR.
4004 (class operator_bitwise_not): Move from here.
4005 (integral_table::integral_table): Remove BIT_NOT_EXPR.
4006 (pointer_table::pointer_table): Remove BIT_NOT_EXPR.
4008 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
4010 * range-op-mixed.h (class operator_addr_expr): Move from...
4011 * range-op.cc (unified_table::unified_table): Add ADDR_EXPR.
4012 (class operator_addr_expr): Move from here.
4013 (integral_table::integral_table): Remove ADDR_EXPR.
4014 (pointer_table::pointer_table): Remove ADDR_EXPR.
4016 2023-06-12 Pan Li <pan2.li@intel.com>
4018 * config/riscv/riscv-vector-builtins-types.def
4019 (vfloat16m1_t): Add type to lmul1 ops.
4020 (vfloat16m2_t): Likewise.
4021 (vfloat16m4_t): Likewise.
4023 2023-06-12 Richard Biener <rguenther@suse.de>
4025 * tree-ssa-alias.cc (call_may_clobber_ref_p_1): For
4026 .MASK_STORE and friend set the size of the access to
4029 2023-06-12 Tamar Christina <tamar.christina@arm.com>
4031 * config.in: Regenerate.
4032 * configure: Regenerate.
4033 * configure.ac: Remove DEFAULT_MATCHPD_PARTITIONS.
4035 2023-06-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4037 * config/riscv/autovec-opt.md
4038 (*v<any_shiftrt:optab><any_extend:optab>trunc<mode>): New pattern.
4039 (*<any_shiftrt:optab>trunc<mode>): Ditto.
4040 * config/riscv/autovec.md (<optab><mode>3): Change to
4041 define_insn_and_split.
4042 (v<optab><mode>3): Ditto.
4043 (trunc<mode><v_double_trunc>2): Ditto.
4045 2023-06-12 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4047 * simplify-rtx.cc (simplify_const_unary_operation):
4048 Handle US_TRUNCATE, SS_TRUNCATE.
4050 2023-06-12 Eric Botcazou <ebotcazou@adacore.com>
4053 * doc/gm2.texi (Standard procedures): Fix Next link.
4055 2023-06-12 Tamar Christina <tamar.christina@arm.com>
4057 * config.in: Regenerate.
4059 2023-06-12 Andre Vieira <andre.simoesdiasvieira@arm.com>
4061 PR middle-end/110142
4062 * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Don't pass
4063 subtype to vect_widened_op_tree and remove subtype parameter, also
4064 remove superfluous overloaded function definition.
4065 (vect_recog_widen_plus_pattern): Remove subtype parameter and dont pass
4066 to call to vect_recog_widen_op_pattern.
4067 (vect_recog_widen_minus_pattern): Likewise.
4069 2023-06-12 liuhongt <hongtao.liu@intel.com>
4071 * config/i386/sse.md (vec_pack<floatprefix>_float_<mode>): New expander.
4072 (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
4073 (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
4074 (vec_unpacks_lo_<mode>): Ditto.
4075 (vec_unpacks_hi_<mode>): Ditto.
4076 (sse_movlhps_<mode>): New define_insn.
4077 (ssse3_palignr<mode>_perm): Extend to V_128H.
4078 (V_128H): New mode iterator.
4079 (ssepackPHmode): New mode attribute.
4080 (vunpck_extract_mode): Ditto.
4081 (vpckfloat_concat_mode): Extend to VxSI/VxSF for _Float16.
4082 (vpckfloat_temp_mode): Ditto.
4083 (vpckfloat_op_mode): Ditto.
4084 (vunpckfixt_mode): Extend to VxHF.
4085 (vunpckfixt_model): Ditto.
4086 (vunpckfixt_extract_mode): Ditto.
4088 2023-06-12 Richard Biener <rguenther@suse.de>
4090 PR middle-end/110200
4091 * genmatch.cc (expr::gen_transform): Put braces around
4092 the if arm for the (convert ...) short-cut.
4094 2023-06-12 Kewen Lin <linkw@linux.ibm.com>
4097 * config/rs6000/rs6000-builtins.def (__builtin_pack_vector_int128,
4098 __builtin_unpack_vector_int128): Move from stanza power7 to vsx.
4100 2023-06-12 Kewen Lin <linkw@linux.ibm.com>
4103 * config/rs6000/rs6000.cc (output_toc): Use the mode of the 128-bit
4104 floating constant itself for real_to_target call.
4106 2023-06-12 Pan Li <pan2.li@intel.com>
4108 * config/riscv/riscv-vector-builtins-types.def
4109 (vfloat16mf4_t): Add type to X2/X4/X8/X16/X32 vlmul ext ops.
4110 (vfloat16mf2_t): Ditto.
4111 (vfloat16m1_t): Ditto.
4112 (vfloat16m2_t): Ditto.
4113 (vfloat16m4_t): Ditto.
4115 2023-06-12 David Edelsohn <dje.gcc@gmail.com>
4117 * config/rs6000/rs6000-logue.cc (rs6000_stack_info):
4118 Do not require a stack frame when debugging is enabled for AIX.
4120 2023-06-11 Georg-Johann Lay <avr@gjlay.de>
4122 * config/avr/avr.md (adjust_len) [insv_notbit_0, insv_notbit_7]:
4123 Remove attribute values.
4124 (insv_notbit): New post-reload insn.
4125 (*insv.not-shiftrt_split, *insv.xor1-bit.0_split)
4126 (*insv.not-bit.0_split, *insv.not-bit.7_split)
4127 (*insv.xor-extract_split): Split to insv_notbit.
4128 (*insv.not-shiftrt, *insv.xor1-bit.0, *insv.not-bit.0, *insv.not-bit.7)
4129 (*insv.xor-extract): Remove post-reload insns.
4130 * config/avr/avr.cc (avr_out_insert_notbit) [bitno]: Remove parameter.
4131 (avr_adjust_insn_length): Adjust call of avr_out_insert_notbit.
4132 [ADJUST_LEN_INSV_NOTBIT_0, ADJUST_LEN_INSV_NOTBIT_7]: Remove cases.
4133 * config/avr/avr-protos.h (avr_out_insert_notbit): Adjust prototype.
4135 2023-06-11 Georg-Johann Lay <avr@gjlay.de>
4138 * config/avr/avr.md (adjust_len) [extr, extr_not]: New elements.
4139 (MSB, SIZE): New mode attributes.
4140 (any_shift): New code iterator.
4141 (*lshr<mode>3_split, *lshr<mode>3, lshr<mode>3)
4142 (*lshr<mode>3_const_split): Add constraint alternative for
4143 the case of shift-offset = MSB. Ditch "length" attribute.
4144 (extzv<mode): New. replaces extzv. Adjust following patterns.
4145 Use avr_out_extr, avr_out_extr_not to print asm.
4146 (*extzv.subreg.<mode>, *extzv.<mode>.subreg, *extzv.xor)
4147 (*extzv<mode>.ge, *neg.ashiftrt<mode>.msb, *extzv.io.lsr7): New.
4148 * config/avr/constraints.md (C15, C23, C31, Yil): New
4149 * config/avr/predicates.md (reg_or_low_io_operand)
4150 (const7_operand, reg_or_low_io_operand)
4151 (const15_operand, const_0_to_15_operand)
4152 (const23_operand, const_0_to_23_operand)
4153 (const31_operand, const_0_to_31_operand): New.
4154 * config/avr/avr-protos.h (avr_out_extr, avr_out_extr_not): New.
4155 * config/avr/avr.cc (avr_out_extr, avr_out_extr_not): New funcs.
4156 (lshrqi3_out, lshrhi3_out, lshrpsi3_out, lshrsi3_out): Adjust
4157 MSB case to new insn constraint "r" for operands[1].
4158 (avr_adjust_insn_length) [ADJUST_LEN_EXTR_NOT, ADJUST_LEN_EXTR]:
4160 (avr_rtx_costs_1): Adjust cost for a new pattern.
4162 2023-06-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4164 * config/riscv/riscv-vsetvl.cc (available_occurrence_p): Enhance user vsetvl optimization.
4165 (vector_insn_info::parse_insn): Add rtx_insn parse.
4166 (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance user vsetvl optimization.
4167 (get_first_vsetvl): New function.
4168 (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
4169 (pass_vsetvl::cleanup_insns): Remove it.
4170 (pass_vsetvl::ssa_post_optimization): New function.
4171 (has_no_uses): Ditto.
4172 (pass_vsetvl::propagate_avl): Remove it.
4173 (pass_vsetvl::df_post_optimization): New function.
4174 (pass_vsetvl::lazy_vsetvl): Rework Phase 5 && Phase 6.
4175 * config/riscv/riscv-vsetvl.h: Adapt declaration.
4177 2023-06-10 Aldy Hernandez <aldyh@redhat.com>
4179 * ipa-cp.cc (ipcp_vr_lattice::init): Take type argument.
4180 (ipcp_vr_lattice::print): Call dump method.
4181 (ipcp_vr_lattice::meet_with): Adjust for m_vr being a
4183 (ipcp_vr_lattice::meet_with_1): Make argument a reference.
4184 (ipcp_vr_lattice::set_to_bottom): Set varying for an unsupported
4186 (initialize_node_lattices): Pass type when appropriate.
4187 (ipa_vr_operation_and_type_effects): Make type agnostic.
4188 (ipa_value_range_from_jfunc): Same.
4189 (propagate_vr_across_jump_function): Same.
4190 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
4191 (evaluate_properties_for_edge): Same.
4192 * ipa-prop.cc (ipa_vr::get_vrange): Same.
4193 (ipcp_update_vr): Same.
4194 * ipa-prop.h (ipa_value_range_from_jfunc): Same.
4195 (ipa_range_set_and_normalize): Same.
4197 2023-06-10 Georg-Johann Lay <avr@gjlay.de>
4201 * config/avr/avr-passes.def (avr_pass_ifelse): Insert new pass.
4202 * config/avr/avr.cc (avr_pass_ifelse): New RTL pass.
4203 (avr_pass_data_ifelse): New pass_data for it.
4204 (make_avr_pass_ifelse, avr_redundant_compare, avr_cbranch_cost)
4205 (avr_canonicalize_comparison, avr_out_plus_set_ZN)
4206 (avr_out_cmp_ext): New functions.
4207 (compare_condtition): Make sure REG_CC dies in the branch insn.
4208 (avr_rtx_costs_1): Add computation of cbranch costs.
4209 (avr_adjust_insn_length) [ADJUST_LEN_ADD_SET_ZN, ADJUST_LEN_CMP_ZEXT]:
4210 [ADJUST_LEN_CMP_SEXT]Handle them.
4211 (TARGET_CANONICALIZE_COMPARISON): New define.
4212 (avr_simplify_comparison_p, compare_diff_p, avr_compare_pattern)
4213 (avr_reorg_remove_redundant_compare, avr_reorg): Remove functions.
4214 (TARGET_MACHINE_DEPENDENT_REORG): Remove define.
4215 * config/avr/avr-protos.h (avr_simplify_comparison_p): Remove proto.
4216 (make_avr_pass_ifelse, avr_out_plus_set_ZN, cc_reg_rtx)
4217 (avr_out_cmp_zext): New Protos
4218 * config/avr/avr.md (branch, difficult_branch): Don't split insns.
4219 (*cbranchhi.zero-extend.0", *cbranchhi.zero-extend.1")
4220 (*swapped_tst<mode>, *add.for.eqne.<mode>): New insns.
4221 (*cbranch<mode>4): Rename to cbranch<mode>4_insn.
4222 (define_peephole): Add dead_or_set_regno_p(insn,REG_CC) as needed.
4223 (define_deephole2): Add peep2_regno_dead_p(*,REG_CC) as needed.
4224 Add new RTL peepholes for decrement-and-branch and *swapped_tst<mode>.
4225 Rework signtest-and-branch peepholes for *sbrx_branch<mode>.
4226 (adjust_len) [add_set_ZN, cmp_zext]: New.
4227 (QIPSI): New mode iterator.
4228 (ALLs1, ALLs2, ALLs4, ALLs234): New mode iterators.
4229 (gelt): New code iterator.
4230 (gelt_eqne): New code attribute.
4231 (rvbranch, *rvbranch, difficult_rvbranch, *difficult_rvbranch)
4232 (branch_unspec, *negated_tst<mode>, *reversed_tst<mode>)
4233 (*cmpqi_sign_extend): Remove insns.
4234 (define_c_enum "unspec") [UNSPEC_IDENTITY]: Remove.
4235 * config/avr/avr-dimode.md (cbranch<mode>4): Canonicalize comparisons.
4236 * config/avr/predicates.md (scratch_or_d_register_operand): New.
4237 * config/avr/constraints.md (Yxx): New constraint.
4239 2023-06-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4241 * config/riscv/autovec.md (select_vl<mode>): New pattern.
4242 * config/riscv/riscv-protos.h (expand_select_vl): New function.
4243 * config/riscv/riscv-v.cc (expand_select_vl): Ditto.
4245 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
4247 * range-op-float.cc (foperator_mult_div_base): Delete.
4248 (foperator_mult_div_base::find_range): Make static local function.
4249 (foperator_mult): Remove. Move prototypes to range-op-mixed.h
4250 (operator_mult::op1_range): Rename from foperator_mult.
4251 (operator_mult::op2_range): Ditto.
4252 (operator_mult::rv_fold): Ditto.
4253 (float_table::float_table): Remove MULT_EXPR.
4254 (class foperator_div): Inherit from range_operator.
4255 (float_table::float_table): Delete.
4256 * range-op-mixed.h (class operator_mult): Combined from integer
4258 * range-op.cc (float_tree_table): Delete.
4259 (op_mult): New object.
4260 (unified_table::unified_table): Add MULT_EXPR.
4261 (get_op_handler): Do not check float table any longer.
4262 (class cross_product_operator): Move to range-op-mixed.h.
4263 (class operator_mult): Move to range-op-mixed.h.
4264 (integral_table::integral_table): Remove MULT_EXPR.
4265 (pointer_table::pointer_table): Remove MULT_EXPR.
4266 * range-op.h (float_table): Remove.
4268 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
4270 * range-op-float.cc (foperator_negate): Remove. Move prototypes
4272 (operator_negate::fold_range): Rename from foperator_negate.
4273 (operator_negate::op1_range): Ditto.
4274 (float_table::float_table): Remove NEGATE_EXPR.
4275 * range-op-mixed.h (class operator_negate): Combined from integer
4277 * range-op.cc (op_negate): New object.
4278 (unified_table::unified_table): Add NEGATE_EXPR.
4279 (class operator_negate): Move to range-op-mixed.h.
4280 (integral_table::integral_table): Remove NEGATE_EXPR.
4281 (pointer_table::pointer_table): Remove NEGATE_EXPR.
4283 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
4285 * range-op-float.cc (foperator_minus): Remove. Move prototypes
4287 (operator_minus::fold_range): Rename from foperator_minus.
4288 (operator_minus::op1_range): Ditto.
4289 (operator_minus::op2_range): Ditto.
4290 (operator_minus::rv_fold): Ditto.
4291 (float_table::float_table): Remove MINUS_EXPR.
4292 * range-op-mixed.h (class operator_minus): Combined from integer
4294 * range-op.cc (op_minus): New object.
4295 (unified_table::unified_table): Add MINUS_EXPR.
4296 (class operator_minus): Move to range-op-mixed.h.
4297 (integral_table::integral_table): Remove MINUS_EXPR.
4298 (pointer_table::pointer_table): Remove MINUS_EXPR.
4300 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
4302 * range-op-float.cc (foperator_abs): Remove. Move prototypes
4304 (operator_abs::fold_range): Rename from foperator_abs.
4305 (operator_abs::op1_range): Ditto.
4306 (float_table::float_table): Remove ABS_EXPR.
4307 * range-op-mixed.h (class operator_abs): Combined from integer
4309 * range-op.cc (op_abs): New object.
4310 (unified_table::unified_table): Add ABS_EXPR.
4311 (class operator_abs): Move to range-op-mixed.h.
4312 (integral_table::integral_table): Remove ABS_EXPR.
4313 (pointer_table::pointer_table): Remove ABS_EXPR.
4315 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
4317 * range-op-float.cc (foperator_plus): Remove. Move prototypes
4319 (operator_plus::fold_range): Rename from foperator_plus.
4320 (operator_plus::op1_range): Ditto.
4321 (operator_plus::op2_range): Ditto.
4322 (operator_plus::rv_fold): Ditto.
4323 (float_table::float_table): Remove PLUS_EXPR.
4324 * range-op-mixed.h (class operator_plus): Combined from integer
4326 * range-op.cc (op_plus): New object.
4327 (unified_table::unified_table): Add PLUS_EXPR.
4328 (class operator_plus): Move to range-op-mixed.h.
4329 (integral_table::integral_table): Remove PLUS_EXPR.
4330 (pointer_table::pointer_table): Remove PLUS_EXPR.
4332 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
4334 * range-op-mixed.h (class operator_cast): Combined from integer
4336 * range-op.cc (op_cast): New object.
4337 (unified_table::unified_table): Add op_cast
4338 (class operator_cast): Move to range-op-mixed.h.
4339 (integral_table::integral_table): Remove op_cast
4340 (pointer_table::pointer_table): Remove op_cast.
4342 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
4344 * range-op-float.cc (operator_cst::fold_range): New.
4345 * range-op-mixed.h (class operator_cst): Move from integer file.
4346 * range-op.cc (op_cst): New object.
4347 (unified_table::unified_table): Add op_cst. Also use for REAL_CST.
4348 (class operator_cst): Move to range-op-mixed.h.
4349 (integral_table::integral_table): Remove op_cst.
4350 (pointer_table::pointer_table): Remove op_cst.
4352 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
4354 * range-op-float.cc (foperator_identity): Remove. Move prototypes
4356 (operator_identity::fold_range): Rename from foperator_identity.
4357 (operator_identity::op1_range): Ditto.
4358 (float_table::float_table): Remove fop_identity.
4359 * range-op-mixed.h (class operator_identity): Combined from integer
4361 * range-op.cc (op_identity): New object.
4362 (unified_table::unified_table): Add op_identity.
4363 (class operator_identity): Move to range-op-mixed.h.
4364 (integral_table::integral_table): Remove identity.
4365 (pointer_table::pointer_table): Remove identity.
4367 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
4369 * range-op-float.cc (foperator_ge): Remove. Move prototypes
4371 (operator_ge::fold_range): Rename from foperator_ge.
4372 (operator_ge::op1_range): Ditto.
4373 (float_table::float_table): Remove GE_EXPR.
4374 * range-op-mixed.h (class operator_ge): Combined from integer
4376 * range-op.cc (op_ge): New object.
4377 (unified_table::unified_table): Add GE_EXPR.
4378 (class operator_ge): Move to range-op-mixed.h.
4379 (ge_op1_op2_relation): Fold into
4380 operator_ge::op1_op2_relation.
4381 (integral_table::integral_table): Remove GE_EXPR.
4382 (pointer_table::pointer_table): Remove GE_EXPR.
4383 * range-op.h (ge_op1_op2_relation): Delete.
4385 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
4387 * range-op-float.cc (foperator_gt): Remove. Move prototypes
4389 (operator_gt::fold_range): Rename from foperator_gt.
4390 (operator_gt::op1_range): Ditto.
4391 (float_table::float_table): Remove GT_EXPR.
4392 * range-op-mixed.h (class operator_gt): Combined from integer
4394 * range-op.cc (op_gt): New object.
4395 (unified_table::unified_table): Add GT_EXPR.
4396 (class operator_gt): Move to range-op-mixed.h.
4397 (gt_op1_op2_relation): Fold into
4398 operator_gt::op1_op2_relation.
4399 (integral_table::integral_table): Remove GT_EXPR.
4400 (pointer_table::pointer_table): Remove GT_EXPR.
4401 * range-op.h (gt_op1_op2_relation): Delete.
4403 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
4405 * range-op-float.cc (foperator_le): Remove. Move prototypes
4407 (operator_le::fold_range): Rename from foperator_le.
4408 (operator_le::op1_range): Ditto.
4409 (float_table::float_table): Remove LE_EXPR.
4410 * range-op-mixed.h (class operator_le): Combined from integer
4412 * range-op.cc (op_le): New object.
4413 (unified_table::unified_table): Add LE_EXPR.
4414 (class operator_le): Move to range-op-mixed.h.
4415 (le_op1_op2_relation): Fold into
4416 operator_le::op1_op2_relation.
4417 (integral_table::integral_table): Remove LE_EXPR.
4418 (pointer_table::pointer_table): Remove LE_EXPR.
4419 * range-op.h (le_op1_op2_relation): Delete.
4421 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
4423 * range-op-float.cc (foperator_lt): Remove. Move prototypes
4425 (operator_lt::fold_range): Rename from foperator_lt.
4426 (operator_lt::op1_range): Ditto.
4427 (float_table::float_table): Remove LT_EXPR.
4428 * range-op-mixed.h (class operator_lt): Combined from integer
4430 * range-op.cc (op_lt): New object.
4431 (unified_table::unified_table): Add LT_EXPR.
4432 (class operator_lt): Move to range-op-mixed.h.
4433 (lt_op1_op2_relation): Fold into
4434 operator_lt::op1_op2_relation.
4435 (integral_table::integral_table): Remove LT_EXPR.
4436 (pointer_table::pointer_table): Remove LT_EXPR.
4437 * range-op.h (lt_op1_op2_relation): Delete.
4439 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
4441 * range-op-float.cc (foperator_not_equal): Remove. Move prototypes
4443 (operator_equal::fold_range): Rename from foperator_not_equal.
4444 (operator_equal::op1_range): Ditto.
4445 (float_table::float_table): Remove NE_EXPR.
4446 * range-op-mixed.h (class operator_not_equal): Combined from integer
4448 * range-op.cc (op_equal): New object.
4449 (unified_table::unified_table): Add NE_EXPR.
4450 (class operator_not_equal): Move to range-op-mixed.h.
4451 (not_equal_op1_op2_relation): Fold into
4452 operator_not_equal::op1_op2_relation.
4453 (integral_table::integral_table): Remove NE_EXPR.
4454 (pointer_table::pointer_table): Remove NE_EXPR.
4455 * range-op.h (not_equal_op1_op2_relation): Delete.
4457 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
4459 * range-op-float.cc (foperator_equal): Remove. Move prototypes
4461 (operator_equal::fold_range): Rename from foperator_equal.
4462 (operator_equal::op1_range): Ditto.
4463 (float_table::float_table): Remove EQ_EXPR.
4464 * range-op-mixed.h (class operator_equal): Combined from integer
4466 * range-op.cc (op_equal): New object.
4467 (unified_table::unified_table): Add EQ_EXPR.
4468 (class operator_equal): Move to range-op-mixed.h.
4469 (equal_op1_op2_relation): Fold into
4470 operator_equal::op1_op2_relation.
4471 (integral_table::integral_table): Remove EQ_EXPR.
4472 (pointer_table::pointer_table): Remove EQ_EXPR.
4473 * range-op.h (equal_op1_op2_relation): Delete.
4475 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
4477 * range-op-float.cc (class float_table): Move to header.
4478 (float_table::float_table): Move float only operators to...
4479 (range_op_table::initialize_float_ops): Here.
4480 * range-op-mixed.h: New.
4481 * range-op.cc (integral_tree_table, pointer_tree_table): Moved
4483 (float_tree_table): Moved from range-op-float.cc.
4484 (unified_tree_table): New.
4485 (unified_table::unified_table): New. Call initialize routines.
4486 (get_op_handler): Check unified table first.
4487 (range_op_handler::range_op_handler): Handle no type constructor.
4488 (integral_table::integral_table): Move integral only operators to...
4489 (range_op_table::initialize_integral_ops): Here.
4490 (pointer_table::pointer_table): Move pointer only operators to...
4491 (range_op_table::initialize_pointer_ops): Here.
4492 * range-op.h (enum bool_range_state): Move to range-op-mixed.h.
4493 (get_bool_state): Ditto.
4494 (empty_range_varying): Ditto.
4495 (relop_early_resolve): Ditto.
4496 (class range_op_table): Add new init methods for range types.
4497 (class integral_table): Move declaration to here.
4498 (class pointer_table): Move declaration to here.
4499 (class float_table): Move declaration to here.
4501 2023-06-09 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
4502 Richard Sandiford <richard.sandiford@arm.com>
4503 Richard Biener <rguenther@suse.de>
4505 * doc/md.texi: Add SELECT_VL support.
4506 * internal-fn.def (SELECT_VL): Ditto.
4507 * optabs.def (OPTAB_D): Ditto.
4508 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Ditto.
4509 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Ditto.
4510 * tree-vect-stmts.cc (get_select_vl_data_ref_ptr): Ditto.
4511 (vectorizable_store): Ditto.
4512 (vectorizable_load): Ditto.
4513 * tree-vectorizer.h (LOOP_VINFO_USING_SELECT_VL_P): Ditto.
4515 2023-06-09 Andrew MacLeod <amacleod@redhat.com>
4518 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Check param
4521 2023-06-09 Andrew MacLeod <amacleod@redhat.com>
4523 * range-op.cc (range_cast): Move to...
4524 * range-op.h (range_cast): Here and add generic a version.
4526 2023-06-09 Marek Polacek <polacek@redhat.com>
4530 * doc/invoke.texi: Clarify that -Wmissing-field-initializers doesn't
4531 warn about designated initializers in C only.
4533 2023-06-09 Andrew Pinski <apinski@marvell.com>
4535 PR tree-optimization/97711
4536 PR tree-optimization/110155
4537 * match.pd ((zero_one == 0) ? y : z <op> y): Add plus to the op.
4538 ((zero_one != 0) ? z <op> y : y): Likewise.
4540 2023-06-09 Andrew Pinski <apinski@marvell.com>
4542 * match.pd ((zero_one ==/!= 0) ? y : z <op> y): Use
4543 multiply rather than negation/bit_and.
4545 2023-06-09 Andrew Pinski <apinski@marvell.com>
4547 * match.pd (`X & -Y -> X * Y`): Allow for truncation
4548 and the same type for unsigned types.
4550 2023-06-09 Andrew Pinski <apinski@marvell.com>
4552 PR tree-optimization/110165
4553 PR tree-optimization/110166
4554 * match.pd (zero_one_valued_p): Don't accept
4555 signed 1-bit integers.
4557 2023-06-09 Richard Biener <rguenther@suse.de>
4559 * match.pd (two conversions in a row): Use element_precision
4560 to DTRT for VECTOR_TYPE.
4562 2023-06-09 Pan Li <pan2.li@intel.com>
4564 * config/riscv/riscv.md (enabled): Move to another place, and
4565 add fp_vector_disabled to the cond.
4566 (fp_vector_disabled): New attr defined for disabling fp.
4567 * config/riscv/vector-iterators.md: Fix V_WHOLE and V_FRACT.
4569 2023-06-09 Pan Li <pan2.li@intel.com>
4571 * config/riscv/riscv-protos.h (enum frm_field_enum): Adjust
4574 2023-06-09 liuhongt <hongtao.liu@intel.com>
4577 * config/i386/i386.cc (ix86_gimple_fold_builtin): Explicitly
4578 view_convert_expr mask to signed type when folding pblendvb
4581 2023-06-09 liuhongt <hongtao.liu@intel.com>
4584 * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
4585 _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} into gimple
4586 ABSU_EXPR + VCE, don't fold _mm_abs_{pi8,pi16,pi32} w/o
4588 * config/i386/i386-builtin.def: Replace CODE_FOR_nothing with
4589 real codename for __builtin_ia32_pabs{b,w,d}.
4591 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
4593 * gimple-range-op.cc
4594 (gimple_range_op_handler::gimple_range_op_handler): Adjust.
4595 (gimple_range_op_handler::maybe_builtin_call): Adjust.
4596 * gimple-range-op.h (operand1, operand2): Use m_operator.
4597 * range-op.cc (integral_table, pointer_table): Relocate.
4598 (get_op_handler): Rename from get_handler and handle all types.
4599 (range_op_handler::range_op_handler): Relocate.
4600 (range_op_handler::set_op_handler): Relocate and adjust.
4601 (range_op_handler::range_op_handler): Relocate.
4602 (dispatch_trio): New.
4603 (RO_III, RO_IFI, RO_IFF, RO_FFF, RO_FIF, RO_FII): New consts.
4604 (range_op_handler::dispatch_kind): New.
4605 (range_op_handler::fold_range): Relocate and Use new dispatch value.
4606 (range_op_handler::op1_range): Ditto.
4607 (range_op_handler::op2_range): Ditto.
4608 (range_op_handler::lhs_op1_relation): Ditto.
4609 (range_op_handler::lhs_op2_relation): Ditto.
4610 (range_op_handler::op1_op2_relation): Ditto.
4611 (range_op_handler::set_op_handler): Use m_operator member.
4612 * range-op.h (range_op_handler::operator bool): Use m_operator.
4613 (range_op_handler::dispatch_kind): New.
4614 (range_op_handler::m_valid): Delete.
4615 (range_op_handler::m_int): Delete
4616 (range_op_handler::m_float): Delete
4617 (range_op_handler::m_operator): New.
4618 (range_op_table::operator[]): Relocate from .cc file.
4619 (range_op_table::set): Ditto.
4620 * value-range.h (class vrange): Make range_op_handler a friend.
4622 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
4624 * gimple-range-op.cc (cfn_constant_float_p): Change base class.
4625 (cfn_pass_through_arg1): Adjust using statemenmt.
4626 (cfn_signbit): Change base class, adjust using statement.
4627 (cfn_copysign): Ditto.
4629 (cfn_sincos): Ditto.
4630 * range-op-float.cc (fold_range): Change class to range_operator.
4634 (lhs_op1_relation): Ditto.
4635 (lhs_op2_relation): Ditto.
4636 (op1_op2_relation): Ditto.
4637 (foperator_*): Ditto.
4638 (class float_table): New. Inherit from range_op_table.
4639 (floating_tree_table) Change to range_op_table pointer.
4640 (class floating_op_table): Delete.
4641 * range-op.cc (operator_equal): Adjust using statement.
4642 (operator_not_equal): Ditto.
4643 (operator_lt, operator_le, operator_gt, operator_ge): Ditto.
4644 (operator_minus, operator_cast): Ditto.
4645 (operator_bitwise_and, pointer_plus_operator): Ditto.
4646 (get_float_handle): Change return type.
4647 * range-op.h (range_operator_float): Delete. Relocate all methods
4648 into class range_operator.
4649 (range_op_handler::m_float): Change type to range_operator.
4650 (floating_op_table): Delete.
4651 (floating_tree_table): Change type.
4653 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
4655 * range-op.cc (range_operator::fold_range): Call virtual routine.
4656 (range_operator::update_bitmask): New.
4657 (operator_equal::update_bitmask): New.
4658 (operator_not_equal::update_bitmask): New.
4659 (operator_lt::update_bitmask): New.
4660 (operator_le::update_bitmask): New.
4661 (operator_gt::update_bitmask): New.
4662 (operator_ge::update_bitmask): New.
4663 (operator_ge::update_bitmask): New.
4664 (operator_plus::update_bitmask): New.
4665 (operator_minus::update_bitmask): New.
4666 (operator_pointer_diff::update_bitmask): New.
4667 (operator_min::update_bitmask): New.
4668 (operator_max::update_bitmask): New.
4669 (operator_mult::update_bitmask): New.
4670 (operator_div:operator_div):New.
4671 (operator_div::update_bitmask): New.
4672 (operator_div::m_code): New member.
4673 (operator_exact_divide::operator_exact_divide): New constructor.
4674 (operator_lshift::update_bitmask): New.
4675 (operator_rshift::update_bitmask): New.
4676 (operator_bitwise_and::update_bitmask): New.
4677 (operator_bitwise_or::update_bitmask): New.
4678 (operator_bitwise_xor::update_bitmask): New.
4679 (operator_trunc_mod::update_bitmask): New.
4680 (op_ident, op_unknown, op_ptr_min_max): New.
4681 (op_nop, op_convert): Delete.
4682 (op_ssa, op_paren, op_obj_type): Delete.
4683 (op_realpart, op_imagpart): Delete.
4684 (op_ptr_min, op_ptr_max): Delete.
4685 (pointer_plus_operator:update_bitmask): New.
4686 (range_op_table::set): Do not use m_code.
4687 (integral_table::integral_table): Adjust to single instances.
4688 * range-op.h (range_operator::range_operator): Delete.
4689 (range_operator::m_code): Delete.
4690 (range_operator::update_bitmask): New.
4692 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
4694 * range-op-float.cc (range_operator_float::fold_range): Return
4695 NAN of the result type.
4697 2023-06-08 Jakub Jelinek <jakub@redhat.com>
4699 * optabs.cc (expand_ffs): Add forward declaration.
4700 (expand_doubleword_clz): Rename to ...
4701 (expand_doubleword_clz_ctz_ffs): ... this. Add UNOPTAB argument,
4702 handle also doubleword CTZ and FFS in addition to CLZ.
4703 (expand_unop): Adjust caller. Also call it for doubleword
4704 ctz_optab and ffs_optab.
4706 2023-06-08 Jakub Jelinek <jakub@redhat.com>
4709 * config/i386/i386-expand.cc (ix86_expand_vector_init_general): For
4710 n_words == 2 recurse with mmx_ok as first argument rather than false.
4712 2023-06-07 Roger Sayle <roger@nextmovesoftware.com>
4714 * wide-int.cc (wi::bitreverse_large): Use HOST_WIDE_INT_1U to
4715 avoid sign extension/undefined behaviour when setting each bit.
4717 2023-06-07 Roger Sayle <roger@nextmovesoftware.com>
4718 Uros Bizjak <ubizjak@gmail.com>
4720 * config/i386/i386-expand.cc (ix86_expand_builtin) <handlecarry>:
4721 Use new x86_stc instruction when the carry flag must be set.
4722 * config/i386/i386.cc (ix86_cc_mode): Use CCCmode for *x86_cmc.
4723 (ix86_rtx_costs): Provide accurate rtx_costs for *x86_cmc.
4724 * config/i386/i386.h (TARGET_SLOW_STC): New define.
4725 * config/i386/i386.md (UNSPEC_STC): New UNSPEC for stc.
4726 (x86_stc): New define_insn.
4727 (define_peephole2): Convert x86_stc into alternate implementation
4728 on pentium4 without -Os when a QImode register is available.
4729 (*x86_cmc): New define_insn.
4730 (define_peephole2): Convert *x86_cmc into alternate implementation
4731 on pentium4 without -Os when a QImode register is available.
4732 (*setccc): New define_insn_and_split for a no-op CCCmode move.
4733 (*setcc_qi_negqi_ccc_1_<mode>): New define_insn_and_split to
4734 recognize (and eliminate) the carry flag being copied to itself.
4735 (*setcc_qi_negqi_ccc_2_<mode>): Likewise.
4736 * config/i386/x86-tune.def (X86_TUNE_SLOW_STC): New tuning flag.
4738 2023-06-07 Andrew Pinski <apinski@marvell.com>
4740 * match.pd: Fix comment for the
4741 `(zero_one ==/!= 0) ? y : z <op> y` patterns.
4743 2023-06-07 Jeff Law <jlaw@ventanamicro.com>
4744 Jeff Law <jlaw@ventanamicro.com>
4746 * config/riscv/bitmanip.md (rotrdi3, rotrsi3, rotlsi3): New expanders.
4747 (rotrsi3_sext): Expose generator.
4748 (rotlsi3 pattern): Hide generator.
4749 * config/riscv/riscv-protos.h (riscv_emit_binary): New function
4751 * config/riscv/riscv.cc (riscv_emit_binary): Removed static
4752 * config/riscv/riscv.md (addsi3, subsi3, negsi2): Hide generator.
4753 (mulsi3, <optab>si3): Likewise.
4754 (addsi3, subsi3, negsi2, mulsi3, <optab>si3): New expanders.
4755 (addv<mode>4, subv<mode>4, mulv<mode>4): Use riscv_emit_binary.
4756 (<u>mulsidi3): Likewise.
4757 (addsi3_extended, subsi3_extended, negsi2_extended): Expose generator.
4758 (mulsi3_extended, <optab>si3_extended): Likewise.
4759 (splitter for shadd feeding divison): Update RTL pattern to account
4760 for changes in how 32 bit ops are expanded for TARGET_64BIT.
4761 * loop-iv.cc (get_biv_step_1): Process src of extension when it PLUS.
4763 2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu>
4766 * config/riscv/riscv.cc (riscv_print_operand): Calculate
4767 memmodel only when it is valid.
4769 2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu>
4771 * config/riscv/riscv.cc (riscv_const_insns): Recursively call
4772 for constant element of a vector.
4774 2023-06-07 Jakub Jelinek <jakub@redhat.com>
4776 * match.pd (zero_one_valued_p): Don't handle integer_zerop specially,
4777 instead compare tree_nonzero_bits <= 1U rather than just == 1.
4779 2023-06-07 Alex Coplan <alex.coplan@arm.com>
4782 * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin):
4784 (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE
4786 (aarch64_general_init_builtins): Ensure we invoke the arm_acle.h
4787 setup if in_lto_p, just like we do for SVE.
4788 * config/aarch64/arm_acle.h: (__arm_ld64b): Delete.
4789 (__arm_st64b): Delete.
4790 (__arm_st64bv): Delete.
4791 (__arm_st64bv0): Delete.
4793 2023-06-07 Alex Coplan <alex.coplan@arm.com>
4796 * config/aarch64/aarch64-builtins.cc (aarch64_expand_builtin_ls64):
4797 Use input operand for the destination address.
4798 * config/aarch64/aarch64.md (st64b): Fix constraint on address
4801 2023-06-07 Alex Coplan <alex.coplan@arm.com>
4804 * config/aarch64/aarch64-builtins.cc (aarch64_init_ls64_builtins_types):
4805 Replace eight consecutive spaces with tabs.
4806 (aarch64_init_ls64_builtins): Likewise.
4807 (aarch64_expand_builtin_ls64): Likewise.
4808 * config/aarch64/aarch64.md (ld64b): Likewise.
4811 (st64bv0): Likewise.
4813 2023-06-07 Vladimir N. Makarov <vmakarov@redhat.com>
4815 * ira-costs.cc: (find_costs_and_classes): Constrain classes of pic
4816 offset table pseudo to a general reg subset.
4818 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4820 * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode><vczle><vczbe>):
4822 (*aarch64_sqmovun<mode>_insn<vczle><vczbe>): ... This. Reimplement
4824 (aarch64_sqmovun<mode> [SD_HSDI]): Reimplement with RTL codes.
4825 (aarch64_sqxtun2<mode>_le): Likewise.
4826 (aarch64_sqxtun2<mode>_be): Likewise.
4827 (aarch64_sqxtun2<mode>): Adjust for the above.
4828 (aarch64_sqmovun<mode>): New define_expand.
4829 * config/aarch64/iterators.md (UNSPEC_SQXTUN): Delete.
4830 (half_mask): New mode attribute.
4831 * config/aarch64/predicates.md (aarch64_simd_umax_half_mode):
4834 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4836 * config/aarch64/aarch64-simd.md (aarch64_addp<mode><vczle><vczbe>):
4838 (aarch64_addp<mode>_insn): ... This...
4839 (aarch64_addp<mode><vczle><vczbe>_insn): ... And this.
4840 (aarch64_addp<mode>): New define_expand.
4842 2023-06-07 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4844 * config/riscv/riscv-protos.h (expand_vec_perm_const): New function.
4845 * config/riscv/riscv-v.cc
4846 (rvv_builder::can_duplicate_repeating_sequence_p): Support POLY
4848 (rvv_builder::single_step_npatterns_p): New function.
4849 (rvv_builder::npatterns_all_equal_p): Ditto.
4850 (const_vec_all_in_range_p): Support POLY handling.
4851 (gen_const_vector_dup): Ditto.
4852 (emit_vlmax_gather_insn): Add vrgatherei16.
4853 (emit_vlmax_masked_gather_mu_insn): Ditto.
4854 (expand_const_vector): Add VLA SLP const vector support.
4855 (expand_vec_perm): Support POLY.
4856 (struct expand_vec_perm_d): New struct.
4857 (shuffle_generic_patterns): New function.
4858 (expand_vec_perm_const_1): Ditto.
4859 (expand_vec_perm_const): Ditto.
4860 * config/riscv/riscv.cc (riscv_vectorize_vec_perm_const): Ditto.
4861 (TARGET_VECTORIZE_VEC_PERM_CONST): New targethook.
4863 2023-06-07 Andrew Pinski <apinski@marvell.com>
4865 PR middle-end/110117
4866 * expr.cc (expand_single_bit_test): Handle
4867 const_int from expand_expr.
4869 2023-06-07 Andrew Pinski <apinski@marvell.com>
4871 * expr.cc (do_store_flag): Rearrange the
4872 TER code so that it overrides the nonzero bits
4873 info if we had `a & POW2`.
4875 2023-06-07 Andrew Pinski <apinski@marvell.com>
4877 PR tree-optimization/110134
4878 * match.pd (-A CMP -B -> B CMP A): Allow EQ/NE for all integer
4880 (-A CMP CST -> B CMP (-CST)): Likewise.
4882 2023-06-07 Andrew Pinski <apinski@marvell.com>
4884 PR tree-optimization/89263
4885 PR tree-optimization/99069
4886 PR tree-optimization/20083
4887 PR tree-optimization/94898
4888 * match.pd: Add patterns to optimize `a ? onezero : onezero` with
4889 one of the operands are constant.
4891 2023-06-07 Andrew Pinski <apinski@marvell.com>
4893 * match.pd (zero_one_valued_p): Match 0 integer constant
4896 2023-06-07 Pan Li <pan2.li@intel.com>
4898 * config/riscv/riscv-vector-builtins-types.def
4899 (vfloat32mf2_t): Take RVV_REQUIRE_ELEN_FP_16 as requirement.
4900 (vfloat32m1_t): Ditto.
4901 (vfloat32m2_t): Ditto.
4902 (vfloat32m4_t): Ditto.
4903 (vfloat32m8_t): Ditto.
4904 (vint16mf4_t): Ditto.
4905 (vint16mf2_t): Ditto.
4906 (vint16m1_t): Ditto.
4907 (vint16m2_t): Ditto.
4908 (vint16m4_t): Ditto.
4909 (vint16m8_t): Ditto.
4910 (vuint16mf4_t): Ditto.
4911 (vuint16mf2_t): Ditto.
4912 (vuint16m1_t): Ditto.
4913 (vuint16m2_t): Ditto.
4914 (vuint16m4_t): Ditto.
4915 (vuint16m8_t): Ditto.
4916 (vint32mf2_t): Ditto.
4917 (vint32m1_t): Ditto.
4918 (vint32m2_t): Ditto.
4919 (vint32m4_t): Ditto.
4920 (vint32m8_t): Ditto.
4921 (vuint32mf2_t): Ditto.
4922 (vuint32m1_t): Ditto.
4923 (vuint32m2_t): Ditto.
4924 (vuint32m4_t): Ditto.
4925 (vuint32m8_t): Ditto.
4927 2023-06-07 Jason Merrill <jason@redhat.com>
4930 * doc/invoke.texi: Document it.
4932 2023-06-06 Roger Sayle <roger@nextmovesoftware.com>
4934 * doc/rtl.texi (bitreverse, copysign): Document new RTX codes.
4935 * rtl.def (BITREVERSE, COPYSIGN): Define new RTX codes.
4936 * simplify-rtx.cc (simplify_unary_operation_1): Optimize
4937 NOT (BITREVERSE x) as BITREVERSE (NOT x).
4938 Optimize POPCOUNT (BITREVERSE x) as POPCOUNT x.
4939 Optimize PARITY (BITREVERSE x) as PARITY x.
4940 Optimize BITREVERSE (BITREVERSE x) as x.
4941 (simplify_const_unary_operation) <case BITREVERSE>: Evaluate
4942 BITREVERSE of a constant integer at compile-time.
4943 (simplify_binary_operation_1) <case COPYSIGN>: Optimize
4944 COPY_SIGN (x, x) as x. Optimize COPYSIGN (x, C) as ABS x
4945 or NEG (ABS x) for constant C. Optimize COPYSIGN (ABS x, y)
4946 and COPYSIGN (NEG x, y) as COPYSIGN (x, y).
4947 Optimize COPYSIGN (x, ABS y) as ABS x.
4948 Optimize COPYSIGN (COPYSIGN (x, y), z) as COPYSIGN (x, z).
4949 Optimize COPYSIGN (x, COPYSIGN (y, z)) as COPYSIGN (x, z).
4950 (simplify_const_binary_operation): Evaluate COPYSIGN of constant
4951 arguments at compile-time.
4953 2023-06-06 Uros Bizjak <ubizjak@gmail.com>
4955 * rtl.h (function_invariant_p): Change return type from int to bool.
4956 * reload1.cc (function_invariant_p): Change return type from
4957 int to bool and adjust function body accordingly.
4959 2023-06-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4961 * config/riscv/autovec-opt.md (*<optab>_fma<mode>): New pattern.
4962 (*single_<optab>mult_plus<mode>): Ditto.
4963 (*double_<optab>mult_plus<mode>): Ditto.
4964 (*sign_zero_extend_fma): Ditto.
4965 (*zero_sign_extend_fma): Ditto.
4966 * config/riscv/riscv-protos.h (enum insn_type): New enum.
4968 2023-06-06 Kwok Cheung Yeung <kcy@codesourcery.com>
4969 Tobias Burnus <tobias@codesourcery.com>
4971 * gimplify.cc (omp_notice_variable): Apply GOVD_MAP_ALLOC_ONLY flag
4972 and defaultmap flags if the defaultmap has GOVD_MAP_FORCE_PRESENT flag
4974 (omp_get_attachment): Handle map clauses with 'present' modifier.
4975 (omp_group_base): Likewise.
4976 (gimplify_scan_omp_clauses): Reorder present maps to come first.
4977 Set GOVD flags for present defaultmaps.
4978 (gimplify_adjust_omp_clauses_1): Set map kind for present defaultmaps.
4979 * omp-low.cc (scan_sharing_clauses): Handle 'always, present' map
4981 (lower_omp_target): Handle map clauses with 'present' modifier.
4982 Handle 'to' and 'from' clauses with 'present'.
4983 * tree-core.h (enum omp_clause_defaultmap_kind): Add
4984 OMP_CLAUSE_DEFAULTMAP_PRESENT defaultmap kind.
4985 * tree-pretty-print.cc (dump_omp_clause): Handle 'map', 'to' and
4986 'from' clauses with 'present' modifier. Handle present defaultmap.
4987 * tree.h (OMP_CLAUSE_MOTION_PRESENT): New #define.
4989 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
4991 * config/rs6000/genfusion.pl: Delete some dead code.
4993 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
4995 * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and
4997 (gen_ld_cmpi_p10): ... this.
4999 2023-06-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
5002 * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove
5003 duplicate expression.
5005 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5007 * config/aarch64/aarch64-builtins.cc (aarch64_general_gimple_fold_builtin):
5008 Handle unsigned reduc_plus_scal_ builtins.
5009 * config/aarch64/aarch64-simd-builtins.def (addp): Delete DImode instances.
5010 * config/aarch64/aarch64-simd.md (aarch64_addpdi): Delete.
5011 * config/aarch64/arm_neon.h (vpaddd_s64): Reimplement with
5012 __builtin_aarch64_reduc_plus_scal_v2di.
5013 (vpaddd_u64): Reimplement with __builtin_aarch64_reduc_plus_scal_v2di_uu.
5015 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5017 * config/aarch64/aarch64-simd.md (aarch64_<sur>shr_n<mode>): Delete.
5018 (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): New define_insn.
5019 (aarch64_<sra_op>rshr_n<mode>): New define_expand.
5021 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5023 * config/aarch64/aarch64-simd.md (aarch64_shrn<mode>_insn_le): Delete.
5024 (aarch64_shrn<mode>_insn_be): Delete.
5025 (*aarch64_<srn_op>shrn<mode>_vect): Rename to...
5026 (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): ... This.
5027 (aarch64_shrn<mode>): Remove reference to the above deleted patterns.
5028 (aarch64_rshrn<mode>_insn_le): Delete.
5029 (aarch64_rshrn<mode>_insn_be): Delete.
5030 (aarch64_rshrn<mode><vczle><vczbe>_insn): New define_insn.
5031 (aarch64_rshrn<mode>): Remove references to the above deleted patterns.
5033 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5035 * config/aarch64/aarch64-protos.h (aarch64_parallel_select_half_p):
5037 (aarch64_pars_overlap_p): Likewise.
5038 * config/aarch64/aarch64-simd.md (aarch64_<su>addlv<mode>):
5039 Express in terms of UNSPEC_ADDV.
5040 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): Likewise.
5041 (*aarch64_<su>addlv<mode>_reduction): Define.
5042 (*aarch64_uaddlv<mode>_reduction_2): Likewise.
5043 * config/aarch64/aarch64.cc (aarch64_parallel_select_half_p): Define.
5044 (aarch64_pars_overlap_p): Likewise.
5045 * config/aarch64/iterators.md (UNSPEC_SADDLV, UNSPEC_UADDLV): Delete.
5046 (VQUADW): New mode attribute.
5047 (VWIDE2X_S): Likewise.
5049 (su): Delete handling of UNSPEC_SADDLV, UNSPEC_UADDLV.
5050 * config/aarch64/predicates.md (vect_par_cnst_select_half): Define.
5052 2023-06-06 Richard Biener <rguenther@suse.de>
5054 PR middle-end/110055
5055 * gimplify.cc (gimplify_target_expr): Do not emit
5056 CLOBBERs for variables which have static storage duration
5057 after gimplifying their initializers.
5059 2023-06-06 Richard Biener <rguenther@suse.de>
5061 PR tree-optimization/109143
5062 * tree-ssa-structalias.cc (solution_set_expand): Avoid
5063 one bitmap iteration and optimize bit range setting.
5065 2023-06-06 Hans-Peter Nilsson <hp@axis.com>
5068 * postreload.cc (reload_cse_move2add, move2add_use_add2_insn): Use
5069 XVECEXP, not XEXP, to access first item of a PARALLEL.
5071 2023-06-06 Pan Li <pan2.li@intel.com>
5073 * config/riscv/riscv-vector-builtins-types.def
5074 (vfloat16mf4_t): Add vfloat16mf4_t to WF operations.
5075 (vfloat16mf2_t): Likewise.
5076 (vfloat16m1_t): Likewise.
5077 (vfloat16m2_t): Likewise.
5078 (vfloat16m4_t): Likewise.
5079 (vfloat16m8_t): Likewise.
5080 * config/riscv/vector-iterators.md: Add FP=16 to VWF, VWF_ZVE64,
5081 VWLMUL1, VWLMUL1_ZVE64, vwlmul1 and vwlmul1_zve64.
5083 2023-06-06 Fei Gao <gaofei@eswincomputing.com>
5085 * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Use Pmode
5086 for cfi reg/mem machmode
5087 (riscv_adjust_libcall_cfi_epilogue): Use Pmode for cfi reg machmode
5089 2023-06-06 Li Xu <xuli1@eswincomputing.com>
5091 * config/riscv/vector-iterators.md:
5092 Fix 'REQUIREMENT' for machine_mode 'MODE'.
5093 * config/riscv/vector.md (@pred_indexed_<order>store<VNX16_QHS:mode>
5094 <VNX16_QHSI:mode>): change VNX16_QHSI to VNX16_QHSDI.
5095 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>): Ditto.
5097 2023-06-06 Pan Li <pan2.li@intel.com>
5099 * config/riscv/vector-iterators.md: Fix typo in mode attr.
5101 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
5102 Joel Hutton <joel.hutton@arm.com>
5104 * doc/generic.texi: Remove old tree codes.
5105 * expr.cc (expand_expr_real_2): Remove old tree code cases.
5106 * gimple-pretty-print.cc (dump_binary_rhs): Likewise.
5107 * optabs-tree.cc (optab_for_tree_code): Likewise.
5108 (supportable_half_widening_operation): Likewise.
5109 * tree-cfg.cc (verify_gimple_assign_binary): Likewise.
5110 * tree-inline.cc (estimate_operator_cost): Likewise.
5111 (op_symbol_code): Likewise.
5112 * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Likewise.
5113 (vect_analyze_data_ref_accesses): Likewise.
5114 * tree-vect-generic.cc (expand_vector_operations_1): Likewise.
5115 * cfgexpand.cc (expand_debug_expr): Likewise.
5116 * tree-vect-stmts.cc (vectorizable_conversion): Likewise.
5117 (supportable_widening_operation): Likewise.
5118 * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
5120 * optabs.def (vec_widen_ssubl_hi_optab, vec_widen_ssubl_lo_optab,
5121 vec_widen_saddl_hi_optab, vec_widen_saddl_lo_optab,
5122 vec_widen_usubl_hi_optab, vec_widen_usubl_lo_optab,
5123 vec_widen_uaddl_hi_optab, vec_widen_uaddl_lo_optab): Remove optabs.
5124 * tree-pretty-print.cc (dump_generic_node): Remove tree code definition.
5125 * tree.def (WIDEN_PLUS_EXPR, WIDEN_MINUS_EXPR, VEC_WIDEN_PLUS_HI_EXPR,
5126 VEC_WIDEN_PLUS_LO_EXPR, VEC_WIDEN_MINUS_HI_EXPR,
5127 VEC_WIDEN_MINUS_LO_EXPR): Likewise.
5129 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
5130 Joel Hutton <joel.hutton@arm.com>
5131 Tamar Christina <tamar.christina@arm.com>
5133 * config/aarch64/aarch64-simd.md (vec_widen_<su>addl_lo_<mode>): Rename
5135 (vec_widen_<su>add_lo_<mode>): ... to this.
5136 (vec_widen_<su>addl_hi_<mode>): Rename this ...
5137 (vec_widen_<su>add_hi_<mode>): ... to this.
5138 (vec_widen_<su>subl_lo_<mode>): Rename this ...
5139 (vec_widen_<su>sub_lo_<mode>): ... to this.
5140 (vec_widen_<su>subl_hi_<mode>): Rename this ...
5141 (vec_widen_<su>sub_hi_<mode>): ...to this.
5142 * doc/generic.texi: Document new IFN codes.
5143 * internal-fn.cc (lookup_hilo_internal_fn): Add lookup function.
5144 (commutative_binary_fn_p): Add widen_plus fn's.
5145 (widening_fn_p): New function.
5146 (narrowing_fn_p): New function.
5147 (direct_internal_fn_optab): Change visibility.
5148 * internal-fn.def (DEF_INTERNAL_WIDENING_OPTAB_FN): Macro to define an
5149 internal_fn that expands into multiple internal_fns for widening.
5150 (IFN_VEC_WIDEN_PLUS, IFN_VEC_WIDEN_PLUS_HI, IFN_VEC_WIDEN_PLUS_LO,
5151 IFN_VEC_WIDEN_PLUS_EVEN, IFN_VEC_WIDEN_PLUS_ODD,
5152 IFN_VEC_WIDEN_MINUS, IFN_VEC_WIDEN_MINUS_HI,
5153 IFN_VEC_WIDEN_MINUS_LO, IFN_VEC_WIDEN_MINUS_ODD,
5154 IFN_VEC_WIDEN_MINUS_EVEN): Define widening plus,minus functions.
5155 * internal-fn.h (direct_internal_fn_optab): Declare new prototype.
5156 (lookup_hilo_internal_fn): Likewise.
5157 (widening_fn_p): Likewise.
5158 (Narrowing_fn_p): Likewise.
5159 * optabs.cc (commutative_optab_p): Add widening plus optabs.
5160 * optabs.def (OPTAB_D): Define widen add, sub optabs.
5161 * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Support
5162 patterns with a hi/lo or even/odd split.
5163 (vect_recog_sad_pattern): Refactor to use new IFN codes.
5164 (vect_recog_widen_plus_pattern): Likewise.
5165 (vect_recog_widen_minus_pattern): Likewise.
5166 (vect_recog_average_pattern): Likewise.
5167 * tree-vect-stmts.cc (vectorizable_conversion): Add support for
5169 (supportable_widening_operation): Likewise.
5170 * tree.def (WIDEN_SUM_EXPR): Update example to use new IFNs.
5172 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
5173 Joel Hutton <joel.hutton@arm.com>
5175 * tree-vect-patterns.cc: Add include for gimple-iterator.
5176 (vect_recog_widen_op_pattern): Refactor to use code_helper.
5177 (vect_gimple_build): New function.
5178 * tree-vect-stmts.cc (simple_integer_narrowing): Refactor to use
5180 (vectorizable_call): Likewise.
5181 (vect_gen_widened_results_half): Likewise.
5182 (vect_create_vectorized_demotion_stmts): Likewise.
5183 (vect_create_vectorized_promotion_stmts): Likewise.
5184 (vect_create_half_widening_stmts): Likewise.
5185 (vectorizable_conversion): Likewise.
5186 (supportable_widening_operation): Likewise.
5187 (supportable_narrowing_operation): Likewise.
5188 * tree-vectorizer.h (supportable_widening_operation): Change
5189 prototype to use code_helper.
5190 (supportable_narrowing_operation): Likewise.
5191 (vect_gimple_build): New function prototype.
5192 * tree.h (code_helper::safe_as_tree_code): New function.
5193 (code_helper::safe_as_fn_code): New function.
5195 2023-06-05 Roger Sayle <roger@nextmovesoftware.com>
5197 * wide-int.cc (wi::bitreverse_large): New function implementing
5198 bit reversal of an integer.
5199 * wide-int.h (wi::bitreverse): New (template) function prototype.
5200 (bitreverse_large): Prototype helper function/implementation.
5201 (wi::bitreverse): New template wrapper around bitreverse_large.
5203 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
5205 * rtl.h (print_rtl_single): Change return type from int to void.
5206 (print_rtl_single_with_indent): Ditto.
5207 * print-rtl.h (class rtx_writer): Ditto. Change m_sawclose to bool.
5208 * print-rtl.cc (rtx_writer::rtx_writer): Update for m_sawclose change.
5209 (rtx_writer::print_rtx_operand_code_0): Ditto.
5210 (rtx_writer::print_rtx_operand_codes_E_and_V): Ditto.
5211 (rtx_writer::print_rtx_operand_code_i): Ditto.
5212 (rtx_writer::print_rtx_operand_code_u): Ditto.
5213 (rtx_writer::print_rtx_operand): Ditto.
5214 (rtx_writer::print_rtx): Ditto.
5215 (rtx_writer::finish_directive): Ditto.
5216 (print_rtl_single): Change return type from int to void
5217 and adjust function body accordingly.
5218 (rtx_writer::print_rtl_single_with_indent): Ditto.
5220 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
5222 * rtl.h (reg_classes_intersect_p): Change return type from int to bool.
5223 (reg_class_subset_p): Ditto.
5224 * reginfo.cc (reg_classes_intersect_p): Ditto.
5225 (reg_class_subset_p): Ditto.
5227 2023-06-05 Pan Li <pan2.li@intel.com>
5229 * config/riscv/riscv-vector-builtins-types.def
5230 (vfloat32mf2_t): New type for DEF_RVV_WEXTF_OPS.
5231 (vfloat32m1_t): Ditto.
5232 (vfloat32m2_t): Ditto.
5233 (vfloat32m4_t): Ditto.
5234 (vfloat32m8_t): Ditto.
5235 (vint16mf4_t): New type for DEF_RVV_CONVERT_I_OPS.
5236 (vint16mf2_t): Ditto.
5237 (vint16m1_t): Ditto.
5238 (vint16m2_t): Ditto.
5239 (vint16m4_t): Ditto.
5240 (vint16m8_t): Ditto.
5241 (vuint16mf4_t): New type for DEF_RVV_CONVERT_U_OPS.
5242 (vuint16mf2_t): Ditto.
5243 (vuint16m1_t): Ditto.
5244 (vuint16m2_t): Ditto.
5245 (vuint16m4_t): Ditto.
5246 (vuint16m8_t): Ditto.
5247 (vint32mf2_t): New type for DEF_RVV_WCONVERT_I_OPS.
5248 (vint32m1_t): Ditto.
5249 (vint32m2_t): Ditto.
5250 (vint32m4_t): Ditto.
5251 (vint32m8_t): Ditto.
5252 (vuint32mf2_t): New type for DEF_RVV_WCONVERT_U_OPS.
5253 (vuint32m1_t): Ditto.
5254 (vuint32m2_t): Ditto.
5255 (vuint32m4_t): Ditto.
5256 (vuint32m8_t): Ditto.
5257 * config/riscv/vector-iterators.md: Add FP=16 support for V,
5258 VWCONVERTI, VCONVERT, VNCONVERT, VMUL1 and vlmul1.
5260 2023-06-05 Andrew Pinski <apinski@marvell.com>
5263 * Makefile.in (clean): Remove the removing of
5264 MULTILIB_DIR/MULTILIB_OPTIONS directories.
5266 2023-06-05 YunQiang Su <yunqiang.su@cipunited.com>
5268 * config/mips/mips-protos.h (mips_emit_speculation_barrier): New
5270 * config/mips/mips.cc (speculation_barrier_libfunc): New static
5272 (mips_init_libfuncs): Initialize it.
5273 (mips_emit_speculation_barrier): New function.
5274 * config/mips/mips.md (speculation_barrier): Call
5275 mips_emit_speculation_barrier.
5277 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5279 * config/riscv/riscv-v.cc (class rvv_builder): Reorganize functions.
5280 (rvv_builder::can_duplicate_repeating_sequence_p): Ditto.
5281 (rvv_builder::repeating_sequence_use_merge_profitable_p): Ditto.
5282 (rvv_builder::get_merged_repeating_sequence): Ditto.
5283 (rvv_builder::get_merge_scalar_mask): Ditto.
5284 (emit_scalar_move_insn): Ditto.
5285 (emit_vlmax_integer_move_insn): Ditto.
5286 (emit_nonvlmax_integer_move_insn): Ditto.
5287 (emit_vlmax_gather_insn): Ditto.
5288 (emit_vlmax_masked_gather_mu_insn): Ditto.
5289 (get_repeating_sequence_dup_machine_mode): Ditto.
5291 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5293 * config/riscv/autovec.md: Split arguments.
5294 * config/riscv/riscv-protos.h (expand_vec_perm): Ditto.
5295 * config/riscv/riscv-v.cc (expand_vec_perm): Ditto.
5297 2023-06-04 Andrew Pinski <apinski@marvell.com>
5299 * expr.cc (do_store_flag): Improve for single bit testing
5300 not against zero but against that single bit.
5302 2023-06-04 Andrew Pinski <apinski@marvell.com>
5304 * expr.cc (do_store_flag): Extend the one bit checking case
5305 to handle the case where we don't have an and but rather still
5306 one bit is known to be non-zero.
5308 2023-06-04 Jeff Law <jlaw@ventanamicro.com>
5310 * config/h8300/constraints.md (Zz): Make this a normal
5312 * config/h8300/h8300.cc (TARGET_LRA_P): Remove.
5313 * config/h8300/logical.md (H8/SX bit patterns): Remove.
5315 2023-06-04 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
5317 * config/xtensa/xtensa.md (*btrue_INT_MIN, *eqne_INT_MIN):
5318 New insn_and_split patterns.
5320 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5323 * config/riscv/riscv-vector-builtins-bases.cc: Change expand approach.
5324 * config/riscv/vector.md (@vlmul_extx2<mode>): Remove it.
5325 (@vlmul_extx4<mode>): Ditto.
5326 (@vlmul_extx8<mode>): Ditto.
5327 (@vlmul_extx16<mode>): Ditto.
5328 (@vlmul_extx32<mode>): Ditto.
5329 (@vlmul_extx64<mode>): Ditto.
5330 (*vlmul_extx2<mode>): Ditto.
5331 (*vlmul_extx4<mode>): Ditto.
5332 (*vlmul_extx8<mode>): Ditto.
5333 (*vlmul_extx16<mode>): Ditto.
5334 (*vlmul_extx32<mode>): Ditto.
5335 (*vlmul_extx64<mode>): Ditto.
5337 2023-06-04 Pan Li <pan2.li@intel.com>
5339 * config/riscv/riscv-vector-builtins-types.def
5340 (vfloat32mf2_t): Add vfloat32mf2_t type to vfncvt.f.f.w operations.
5341 (vfloat32m1_t): Likewise.
5342 (vfloat32m2_t): Likewise.
5343 (vfloat32m4_t): Likewise.
5344 (vfloat32m8_t): Likewise.
5345 * config/riscv/riscv-vector-builtins.def: Fix typo in comments.
5346 * config/riscv/vector-iterators.md: Add single to half machine
5349 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5351 * config/riscv/autovec-opt.md (*<optab>not<mode>): Move to autovec-opt.md.
5352 (*n<optab><mode>): Ditto.
5353 * config/riscv/autovec.md (*<optab>not<mode>): Ditto.
5354 (*n<optab><mode>): Ditto.
5355 * config/riscv/vector.md: Ditto.
5357 2023-06-04 Roger Sayle <roger@nextmovesoftware.com>
5360 * config/i386/i386-features.cc (scalar_chain::convert_compare):
5361 Update or delete REG_EQUAL notes, converting CONST_INT and
5362 CONST_WIDE_INT immediate operands to a suitable CONST_VECTOR.
5364 2023-06-04 Jason Merrill <jason@redhat.com>
5367 * tree-eh.cc (lower_resx): Pass the exception pointer to the
5369 * except.h: Tweak comment.
5371 2023-06-04 Hans-Peter Nilsson <hp@axis.com>
5373 * postreload.cc (move2add_use_add2_insn): Handle
5374 trivial single_sets. Rename variable PAT to SET.
5375 (move2add_use_add3_insn, reload_cse_move2add): Similar.
5377 2023-06-04 Pan Li <pan2.li@intel.com>
5379 * config/riscv/riscv-vector-builtins-types.def
5380 (vfloat16mf4_t): Add the float16 type to DEF_RVV_F_OPS.
5381 (vfloat16mf2_t): Likewise.
5382 (vfloat16m1_t): Likewise.
5383 (vfloat16m2_t): Likewise.
5384 (vfloat16m4_t): Likewise.
5385 (vfloat16m8_t): Likewise.
5386 * config/riscv/riscv.md: Add vfloat16*_t to attr mode.
5387 * config/riscv/vector-iterators.md: Add vfloat16*_t machine mode
5388 to V, V_WHOLE, V_FRACT, VINDEX, VM, VEL and sew.
5389 * config/riscv/vector.md: Add vfloat16*_t machine mode to sew,
5392 2023-06-03 Fei Gao <gaofei@eswincomputing.com>
5394 * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
5397 2023-06-03 Die Li <lidie@eswincomputing.com>
5399 * config/riscv/thead.md (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Delete.
5401 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5403 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
5405 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5407 * config/riscv/vector.md: Add vector-opt.md.
5408 * config/riscv/autovec-opt.md: New file.
5410 2023-06-03 liuhongt <hongtao.liu@intel.com>
5412 PR tree-optimization/110067
5413 * gimple-ssa-store-merging.cc (find_bswap_or_nop): Don't try
5414 bswap + rotate when TYPE_PRECISION(n->type) > n->range.
5416 2023-06-03 liuhongt <hongtao.liu@intel.com>
5419 * config/i386/mmx.md (truncv2hiv2qi2): New define_insn.
5420 (truncv2si<mode>2): Ditto.
5422 2023-06-02 Andrew Pinski <apinski@marvell.com>
5424 PR rtl-optimization/102733
5425 * dse.cc (store_info): Add addrspace field.
5426 (record_store): Record the address space
5427 and check to make sure they are the same.
5429 2023-06-02 Andrew Pinski <apinski@marvell.com>
5431 PR rtl-optimization/110042
5432 * ifcvt.cc (bbs_ok_for_cmove_arith): Allow paradoxical subregs.
5433 (bb_valid_for_noce_process_p): Strip the subreg for the SET_DEST.
5435 2023-06-02 Iain Sandoe <iain@sandoe.co.uk>
5438 * config/rs6000/rs6000.cc (darwin_rs6000_special_round_type_align):
5439 Make sure that we do not have a cap on field alignment before altering
5440 the struct layout based on the type alignment of the first entry.
5442 2023-06-02 David Faust <david.faust@oracle.com>
5445 * btfout.cc (btf_absolute_func_id): New function.
5446 (btf_asm_func_type): Call it here. Change index parameter from
5447 size_t to ctf_id_t. Use PRIu64 formatter.
5449 2023-06-02 Alex Coplan <alex.coplan@arm.com>
5451 * btfout.cc (btf_asm_type): Use PRIu64 instead of %lu for uint64_t.
5452 (btf_asm_datasec_type): Likewise.
5454 2023-06-02 Carl Love <cel@us.ibm.com>
5456 * config/rs6000/rs6000-builtins.def (__builtin_altivec_tr_stxvrhx,
5457 __builtin_altivec_tr_stxvrwx): Fix type of third argument.
5459 2023-06-02 Jason Merrill <jason@redhat.com>
5463 * tree.h (DECL_MERGEABLE): New.
5464 * tree-core.h (struct tree_decl_common): Mention it.
5465 * gimplify.cc (gimplify_init_constructor): Check it.
5466 * cgraph.cc (symtab_node::address_can_be_compared_p): Likewise.
5467 * varasm.cc (categorize_decl_for_section): Likewise.
5469 2023-06-02 Uros Bizjak <ubizjak@gmail.com>
5471 * rtl.h (stack_regs_mentioned): Change return type from int to bool.
5472 * reg-stack.cc (struct_block_info_def): Change "done" to bool.
5473 (stack_regs_mentioned_p): Change return type from int to bool
5474 and adjust function body accordingly.
5475 (stack_regs_mentioned): Ditto.
5476 (check_asm_stack_operands): Ditto. Change "malformed_asm"
5478 (move_for_stack_reg): Recode handling of control_flow_insn_deleted.
5479 (swap_rtx_condition_1): Change return type from int to bool
5480 and adjust function body accordingly. Change "r" variable to bool.
5481 (swap_rtx_condition): Change return type from int to bool
5482 and adjust function body accordingly.
5483 (subst_stack_regs_pat): Recode handling of control_flow_insn_deleted.
5484 (subst_stack_regs): Ditto.
5485 (convert_regs_entry): Change return type from int to bool and adjust
5486 function body accordingly. Change "inserted" variable to bool.
5487 (convert_regs_1): Recode handling of control_flow_insn_deleted.
5488 (convert_regs_2): Recode handling of cfg_altered.
5489 (convert_regs): Ditto. Change "inserted" variable to bool.
5491 2023-06-02 Jason Merrill <jason@redhat.com>
5494 * varasm.cc (output_constant) [REAL_TYPE]: Check that sizes match.
5495 (initializer_constant_valid_p_1): Compare float precision.
5497 2023-06-02 Alexander Monakov <amonakov@ispras.ru>
5499 * doc/extend.texi (Vector Extensions): Clarify bitwise shift
5502 2023-06-02 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
5504 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Change decrement IV flow.
5505 (vect_set_loop_condition_partial_vectors): Ditto.
5507 2023-06-02 Georg-Johann Lay <avr@gjlay.de>
5510 * config/avr/avr.md: Add an RTL peephole to optimize operations on
5511 non-LD_REGS after a move from LD_REGS.
5512 (piaop): New code iterator.
5514 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
5517 * doc/install.texi: Document (optional) Perl usage for parallel
5520 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
5523 * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
5526 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5527 KuanLin Chen <best124612@gmail.com>
5529 * config/riscv/riscv-vector-builtins-bases.cc: Add _mu overloaded intrinsics.
5530 * config/riscv/riscv-vector-builtins-shapes.cc (struct fault_load_def): Ditto.
5532 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5534 * config/riscv/riscv-v.cc (expand_vec_series): Optimize reverse series index vector.
5536 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5538 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
5540 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5542 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_VXRM_ENUM): Add
5544 (DEF_RVV_FRM_ENUM): Ditto.
5546 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5548 * config/riscv/riscv-vector-builtins-bases.cc: Change vwadd.wv/vwsub.wv
5549 intrinsic API expander
5550 * config/riscv/vector.md
5551 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Remove it.
5552 (@pred_single_widen_sub<any_extend:su><mode>): New pattern.
5553 (@pred_single_widen_add<any_extend:su><mode>): New pattern.
5555 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5557 * config/riscv/autovec.md (vec_perm<mode>): New pattern.
5558 * config/riscv/predicates.md (vector_perm_operand): New predicate.
5559 * config/riscv/riscv-protos.h (enum insn_type): New enum.
5560 (expand_vec_perm): New function.
5561 * config/riscv/riscv-v.cc (const_vec_all_in_range_p): Ditto.
5562 (gen_const_vector_dup): Ditto.
5563 (emit_vlmax_gather_insn): Ditto.
5564 (emit_vlmax_masked_gather_mu_insn): Ditto.
5565 (expand_vec_perm): Ditto.
5567 2023-06-01 Jason Merrill <jason@redhat.com>
5569 * doc/invoke.texi (-Wpedantic): Improve clarity.
5571 2023-06-01 Uros Bizjak <ubizjak@gmail.com>
5573 * rtl.h (exp_equiv_p): Change return type from int to bool.
5574 * cse.cc (mention_regs): Change return type from int to bool
5575 and adjust function body accordingly.
5576 (exp_equiv_p): Ditto.
5577 (insert_regs): Ditto. Change "modified" function argument to bool
5578 and update usage accordingly.
5579 (record_jump_cond): Remove always zero "reversed_nonequality"
5580 function argument and update usage accordingly.
5581 (fold_rtx): Change "changed" variable to bool.
5582 (record_jump_equiv): Remove unneeded "reversed_nonequality" variable.
5583 (is_dead_reg): Change return type from int to bool.
5585 2023-06-01 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
5587 * config/xtensa/xtensa.md (adddi3, subdi3):
5588 New RTL generation patterns implemented according to the instruc-
5589 tion idioms described in the Xtensa ISA reference manual (p. 600).
5591 2023-06-01 Roger Sayle <roger@nextmovesoftware.com>
5592 Uros Bizjak <ubizjak@gmail.com>
5595 * config/i386/i386-builtin.def (__builtin_ia32_ptestz128): Use new
5596 CODE_for_sse4_1_ptestzv2di.
5597 (__builtin_ia32_ptestc128): Use new CODE_for_sse4_1_ptestcv2di.
5598 (__builtin_ia32_ptestz256): Use new CODE_for_avx_ptestzv4di.
5599 (__builtin_ia32_ptestc256): Use new CODE_for_avx_ptestcv4di.
5600 * config/i386/i386-expand.cc (ix86_expand_branch): Use CCZmode
5601 when expanding UNSPEC_PTEST to compare against zero.
5602 * config/i386/i386-features.cc (scalar_chain::convert_compare):
5603 Likewise generate CCZmode UNSPEC_PTESTs when converting comparisons.
5604 (general_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
5605 (timode_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
5606 * config/i386/i386-protos.h (ix86_match_ptest_ccmode): Prototype.
5607 * config/i386/i386.cc (ix86_match_ptest_ccmode): New predicate to
5608 check for suitable matching modes for the UNSPEC_PTEST pattern.
5609 * config/i386/sse.md (define_split): When splitting UNSPEC_MOVMSK
5610 to UNSPEC_PTEST, preserve the FLAG_REG mode as CCZ.
5611 (*<sse4_1>_ptest<mode>): Add asterisk to hide define_insn. Remove
5612 ":CC" mode of FLAGS_REG, instead use ix86_match_ptest_ccmode.
5613 (<sse4_1>_ptestz<mode>): New define_expand to specify CCZ.
5614 (<sse4_1>_ptestc<mode>): New define_expand to specify CCC.
5615 (<sse4_1>_ptest<mode>): A define_expand using CC to preserve the
5617 (*ptest<mode>_and): Specify CCZ to only perform this optimization
5618 when only the Z flag is required.
5620 2023-06-01 Jonathan Wakely <jwakely@redhat.com>
5623 * doc/invoke.texi (x86 Options): Fix description of -m32 option.
5625 2023-06-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5627 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
5628 Add =r,m and =r,m alternatives.
5629 (load_pair<DREG:mode><DREG2:mode>): Likewise.
5630 (vec_store_pair<DREG:mode><DREG2:mode>): Likewise.
5632 2023-06-01 Pan Li <pan2.li@intel.com>
5634 * common/config/riscv/riscv-common.cc: Add FP_16 mask to zvfhmin
5636 * config/riscv/genrvv-type-indexer.cc (valid_type): Allow FP16.
5637 (main): Disable FP16 tuple.
5638 * config/riscv/riscv-opts.h (MASK_VECTOR_ELEN_FP_16): New macro.
5639 (TARGET_VECTOR_ELEN_FP_16): Ditto.
5640 * config/riscv/riscv-vector-builtins.cc (check_required_extensions):
5642 * config/riscv/riscv-vector-builtins.def (vfloat16mf4_t): New type.
5643 (vfloat16mf2_t): Ditto.
5644 (vfloat16m1_t): Ditto.
5645 (vfloat16m2_t): Ditto.
5646 (vfloat16m4_t): Ditto.
5647 (vfloat16m8_t): Ditto.
5648 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ELEN_FP_16):
5650 * config/riscv/riscv-vector-switch.def (ENTRY): Allow FP16
5651 machine mode based on TARGET_VECTOR_ELEN_FP_16.
5653 2023-06-01 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5655 * config/riscv/riscv-vector-builtins.cc (register_frm): New function.
5656 (DEF_RVV_FRM_ENUM): New macro.
5657 (handle_pragma_vector): Add FRM enum
5658 * config/riscv/riscv-vector-builtins.def (DEF_RVV_FRM_ENUM): New macro.
5665 2023-05-31 Roger Sayle <roger@nextmovesoftware.com>
5666 Richard Sandiford <richard.sandiford@arm.com>
5668 * fold-const-call.cc (fold_const_call_ss) <CFN_BUILT_IN_BSWAP*>:
5669 Update call to wi::bswap.
5670 * simplify-rtx.cc (simplify_const_unary_operation) <case BSWAP>:
5671 Update call to wi::bswap.
5672 * tree-ssa-ccp.cc (evaluate_stmt) <case BUILT_IN_BSWAP*>:
5673 Update calls to wi::bswap.
5674 * wide-int.cc (wide_int_storage::bswap): Remove/rename to...
5675 (wi::bswap_large): New function, with revised API.
5676 * wide-int.h (wi::bswap): New (template) function prototype.
5677 (wide_int_storage::bswap): Remove method.
5678 (sext_large, zext_large): Consistent indentation/line wrapping.
5679 (bswap_large): Prototype helper function containing implementation.
5680 (wi::bswap): New template wrapper around bswap_large.
5682 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5685 * config/aarch64/aarch64-simd.md (<sur>dot_prod<vsi2qi>): Rename to...
5686 (<sur>dot_prod<vsi2qi><vczle><vczbe>): ... This.
5687 (usdot_prod<vsi2qi>): Rename to...
5688 (usdot_prod<vsi2qi><vczle><vczbe>): ... This.
5689 (aarch64_<sur>dot_lane<vsi2qi>): Rename to...
5690 (aarch64_<sur>dot_lane<vsi2qi><vczle><vczbe>): ... This.
5691 (aarch64_<sur>dot_laneq<vsi2qi>): Rename to...
5692 (aarch64_<sur>dot_laneq<vsi2qi><vczle><vczbe>): ... This.
5693 (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi>): Rename to...
5694 (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi><vczle><vczbe>):
5697 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5700 * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh<mode>): Rename to...
5701 (aarch64_sq<r>dmulh<mode><vczle><vczbe>): ... This.
5702 (aarch64_sq<r>dmulh_n<mode>): Rename to...
5703 (aarch64_sq<r>dmulh_n<mode><vczle><vczbe>): ... This.
5704 (aarch64_sq<r>dmulh_lane<mode>): Rename to...
5705 (aarch64_sq<r>dmulh_lane<mode><vczle><vczbe>): ... This.
5706 (aarch64_sq<r>dmulh_laneq<mode>): Rename to...
5707 (aarch64_sq<r>dmulh_laneq<mode><vczle><vczbe>): ... This.
5708 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>): Rename to...
5709 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode><vczle><vczbe>): ... This.
5710 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Rename to...
5711 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode><vczle><vczbe>): ... This.
5712 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Rename to...
5713 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode><vczle><vczbe>): ... This.
5715 2023-05-31 David Faust <david.faust@oracle.com>
5717 * btfout.cc (btf_kind_names): New.
5718 (btf_kind_name): New.
5719 (btf_absolute_var_id): New utility function.
5720 (btf_relative_var_id): Likewise.
5721 (btf_relative_func_id): Likewise.
5722 (btf_absolute_datasec_id): Likewise.
5723 (btf_asm_type_ref): New.
5724 (btf_asm_type): Update asm comments and use btf_asm_type_ref ().
5725 (btf_asm_array): Likewise. Accept ctf_container_ref parameter.
5726 (btf_asm_varent): Likewise.
5727 (btf_asm_func_arg): Likewise.
5728 (btf_asm_datasec_entry): Likewise.
5729 (btf_asm_datasec_type): Likewise.
5730 (btf_asm_func_type): Likewise. Add index parameter.
5731 (btf_asm_enum_const): Likewise.
5732 (btf_asm_sou_member): Likewise.
5733 (output_btf_vars): Update btf_asm_* call accordingly.
5734 (output_asm_btf_sou_fields): Likewise.
5735 (output_asm_btf_enum_list): Likewise.
5736 (output_asm_btf_func_args_list): Likewise.
5737 (output_asm_btf_vlen_bytes): Likewise.
5738 (output_btf_func_types): Add ctf_container_ref parameter.
5739 Pass it to btf_asm_func_type.
5740 (output_btf_datasec_types): Update btf_asm_datsec_type call similarly.
5741 (btf_output): Update output_btf_func_types call similarly.
5743 2023-05-31 David Faust <david.faust@oracle.com>
5745 * btfout.cc (btf_asm_type): Add dedicated cases for BTF_KIND_ARRAY
5746 and BTF_KIND_FWD which do not use the size/type field at all.
5748 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
5750 * rtl.h (subreg_lowpart_p): Change return type from int to bool.
5751 (active_insn_p): Ditto.
5752 (in_sequence_p): Ditto.
5753 (unshare_all_rtl): Change return type from int to void.
5754 * emit-rtl.h (mem_expr_equal_p): Change return type from int to bool.
5755 * emit-rtl.cc (subreg_lowpart_p): Change return type from int to bool
5756 and adjust function body accordingly.
5757 (mem_expr_equal_p): Ditto.
5758 (unshare_all_rtl): Change return type from int to void
5759 and adjust function body accordingly.
5760 (verify_rtx_sharing): Remove unneeded return.
5761 (active_insn_p): Change return type from int to bool
5762 and adjust function body accordingly.
5763 (in_sequence_p): Ditto.
5765 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
5767 * rtl.h (true_dependence): Change return type from int to bool.
5768 (canon_true_dependence): Ditto.
5769 (read_dependence): Ditto.
5770 (anti_dependence): Ditto.
5771 (canon_anti_dependence): Ditto.
5772 (output_dependence): Ditto.
5773 (canon_output_dependence): Ditto.
5774 (may_alias_p): Ditto.
5775 * alias.h (alias_sets_conflict_p): Ditto.
5776 (alias_sets_must_conflict_p): Ditto.
5777 (objects_must_conflict_p): Ditto.
5778 (nonoverlapping_memrefs_p): Ditto.
5779 * alias.cc (rtx_equal_for_memref_p): Remove forward declaration.
5780 (record_set): Ditto.
5781 (base_alias_check): Ditto.
5782 (find_base_value): Ditto.
5783 (mems_in_disjoint_alias_sets_p): Ditto.
5784 (get_alias_set_entry): Ditto.
5785 (decl_for_component_ref): Ditto.
5786 (write_dependence_p): Ditto.
5787 (memory_modified_1): Ditto.
5788 (mems_in_disjoint_alias_set_p): Change return type from int to bool
5789 and adjust function body accordingly.
5790 (alias_sets_conflict_p): Ditto.
5791 (alias_sets_must_conflict_p): Ditto.
5792 (objects_must_conflict_p): Ditto.
5793 (rtx_equal_for_memref_p): Ditto.
5794 (base_alias_check): Ditto.
5795 (read_dependence): Ditto.
5796 (nonoverlapping_memrefs_p): Ditto.
5797 (true_dependence_1): Ditto.
5798 (true_dependence): Ditto.
5799 (canon_true_dependence): Ditto.
5800 (write_dependence_p): Ditto.
5801 (anti_dependence): Ditto.
5802 (canon_anti_dependence): Ditto.
5803 (output_dependence): Ditto.
5804 (canon_output_dependence): Ditto.
5805 (may_alias_p): Ditto.
5806 (init_alias_analysis): Change "changed" variable to bool.
5808 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5810 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): Change
5811 expand into define_insn_and_split.
5813 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5815 * config/riscv/vector.md: Remove FRM.
5817 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5819 * config/riscv/vector.md: Remove FRM.
5821 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5823 * config/riscv/vector.md: Remove FRM.
5825 2023-05-31 Christophe Lyon <christophe.lyon@linaro.org>
5828 * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
5831 2023-05-31 Richard Biener <rguenther@suse.de>
5834 PR tree-optimization/109143
5835 * tree-ssa-structalias.cc (struct topo_info): Remove.
5836 (init_topo_info): Likewise.
5837 (free_topo_info): Likewise.
5838 (compute_topo_order): Simplify API, put the component
5839 with ESCAPED last so it's processed first.
5840 (topo_visit): Adjust.
5841 (solve_graph): Likewise.
5843 2023-05-31 Richard Biener <rguenther@suse.de>
5845 * tree-ssa-structalias.cc (constraint_stats::num_avoided_edges):
5847 (add_graph_edge): Count redundant edges we avoid to create.
5848 (dump_sa_stats): Dump them.
5849 (ipa_pta_execute): Do not dump generating constraints when
5850 we are not dumping them.
5852 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5854 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>): Rewrite
5855 output template to avoid explicit switch on which_alternative.
5856 (*aarch64_simd_mov<VQMOV:mode>): Likewise.
5857 (and<mode>3): Likewise.
5858 (ior<mode>3): Likewise.
5859 * config/aarch64/aarch64.md (*mov<mode>_aarch64): Likewise.
5861 2023-05-31 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
5863 * config/xtensa/predicates.md (xtensa_bit_join_operator):
5865 * config/xtensa/xtensa.md (ior_op): Remove.
5866 (*shlrd_reg): Rename from "*shlrd_reg_<code>", and add the
5867 insn_and_split pattern of the same name to express and capture
5868 the bit-combining operation with both sides swapped.
5869 In addition, replace use of code iterator with new operator
5871 (*shlrd_const, *shlrd_per_byte):
5872 Likewise regarding the code iterator.
5874 2023-05-31 Cui, Lili <lili.cui@intel.com>
5876 PR tree-optimization/110038
5877 * params.opt: Add a limit on tree-reassoc-width.
5878 * tree-ssa-reassoc.cc
5879 (rewrite_expr_tree_parallel): Add width limit.
5881 2023-05-31 Pan Li <pan2.li@intel.com>
5883 * common/config/riscv/riscv-common.cc:
5884 (riscv_implied_info): Add zvfh item.
5885 (riscv_ext_version_table): Ditto.
5886 (riscv_ext_flag_table): Ditto.
5887 * config/riscv/riscv-opts.h (MASK_ZVFH): New macro.
5888 (TARGET_ZVFH): Ditto.
5890 2023-05-30 liuhongt <hongtao.liu@intel.com>
5892 PR tree-optimization/108804
5893 * tree-vect-patterns.cc (vect_get_range_info): Remove static.
5894 * tree-vect-stmts.cc (vect_create_vectorized_demotion_stmts):
5895 Add new parameter narrow_src_p.
5896 (vectorizable_conversion): Enhance NARROW FLOAT_EXPR
5897 vectorization by truncating to lower precision.
5898 * tree-vectorizer.h (vect_get_range_info): New declare.
5900 2023-05-30 Vladimir N. Makarov <vmakarov@redhat.com>
5902 * lra-int.h (lra_update_sp_offset): Add the prototype.
5903 * lra.cc (setup_sp_offset): Change the return type. Use
5904 lra_update_sp_offset.
5905 * lra-eliminations.cc (lra_update_sp_offset): New function.
5906 (lra_process_new_insns): Push the current insn to reprocess if the
5907 input reload changes sp offset.
5909 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
5912 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
5913 Fix misleading identation.
5915 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
5917 * rtl.h (comparison_dominates_p): Change return type from int to bool.
5918 (condjump_p): Ditto.
5919 (any_condjump_p): Ditto.
5920 (any_uncondjump_p): Ditto.
5921 (simplejump_p): Ditto.
5922 (returnjump_p): Ditto.
5923 (eh_returnjump_p): Ditto.
5924 (onlyjump_p): Ditto.
5925 (invert_jump_1): Ditto.
5926 (invert_jump): Ditto.
5927 (rtx_renumbered_equal_p): Ditto.
5928 (redirect_jump_1): Ditto.
5929 (redirect_jump): Ditto.
5930 (condjump_in_parallel_p): Ditto.
5931 * jump.cc (invert_exp_1): Adjust forward declaration.
5932 (comparison_dominates_p): Change return type from int to bool
5933 and adjust function body accordingly.
5934 (simplejump_p): Ditto.
5935 (condjump_p): Ditto.
5936 (condjump_in_parallel_p): Ditto.
5937 (any_uncondjump_p): Ditto.
5938 (any_condjump_p): Ditto.
5939 (returnjump_p): Ditto.
5940 (eh_returnjump_p): Ditto.
5941 (onlyjump_p): Ditto.
5942 (redirect_jump_1): Ditto.
5943 (redirect_jump): Ditto.
5944 (invert_exp_1): Ditto.
5945 (invert_jump_1): Ditto.
5946 (invert_jump): Ditto.
5947 (rtx_renumbered_equal_p): Ditto.
5949 2023-05-30 Andrew Pinski <apinski@marvell.com>
5951 * fold-const.cc (minmax_from_comparison): Add support for NE_EXPR.
5952 * match.pd ((cond (cmp (convert1? x) c1) (convert2? x) c2) pattern):
5953 Add ne as a possible cmp.
5954 ((a CMP b) ? minmax<a, c> : minmax<b, c> pattern): Likewise.
5956 2023-05-30 Andrew Pinski <apinski@marvell.com>
5958 * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): New
5961 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
5963 * simplify-rtx.cc (simplify_binary_operation_1) <AND>: Use wide-int
5964 instead of HWI_COMPUTABLE_MODE_P and UINTVAL in transformation of
5965 (and (extend X) C) as (zero_extend (and X C)), to also optimize
5966 modes wider than HOST_WIDE_INT.
5968 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
5971 * simplify-rtx.cc (simplify_const_relational_operation): Return
5972 early if we have a MODE_CC comparison that isn't a COMPARE against
5975 2023-05-30 Robin Dapp <rdapp@ventanamicro.com>
5977 * config/riscv/riscv.cc (riscv_const_insns): Allow
5978 const_vec_duplicates.
5980 2023-05-30 liuhongt <hongtao.liu@intel.com>
5982 PR middle-end/108938
5983 * gimple-ssa-store-merging.cc (is_bswap_or_nop_p): New
5984 function, cut from original find_bswap_or_nop function.
5985 (find_bswap_or_nop): Add a new parameter, detect bswap +
5986 rotate and save rotate result in the new parameter.
5987 (bswap_replace): Add a new parameter to indicate rotate and
5988 generate rotate stmt if needed.
5989 (maybe_optimize_vector_constructor): Adjust for new rotate
5990 parameter in the upper 2 functions.
5991 (pass_optimize_bswap::execute): Ditto.
5992 (imm_store_chain_info::output_merged_store): Ditto.
5994 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5996 * config/aarch64/aarch64-simd.md (aarch64_<sur>adalp<mode>): Delete.
5997 (aarch64_<su>adalp<mode>): New define_expand.
5998 (*aarch64_<su>adalp<mode><vczle><vczbe>_insn): New define_insn.
5999 (aarch64_<su>addlp<mode>): Convert to define_expand.
6000 (*aarch64_<su>addlp<mode><vczle><vczbe>_insn): New define_insn.
6001 * config/aarch64/iterators.md (UNSPEC_SADDLP, UNSPEC_UADDLP): Delete.
6003 (USADDLP): Likewise.
6004 * config/aarch64/predicates.md (vect_par_cnst_even_or_odd_half): Define.
6006 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6008 * config/aarch64/aarch64-builtins.cc (VAR1): Move to after inclusion of
6009 aarch64-builtin-iterators.h. Add definition to remap shadd, uhadd,
6010 srhadd, urhadd builtin codes for standard optab ones.
6011 * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor): Rename to...
6012 (<su_optab>avg<mode>3_floor): ... This. Expand to RTL codes rather than
6014 (<u>avg<mode>3_ceil): Rename to...
6015 (<su_optab>avg<mode>3_ceil): ... This. Expand to RTL codes rather than
6017 (aarch64_<su>hsub<mode>): New define_expand.
6018 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): Split into...
6019 (*aarch64_<su>h<ADDSUB:optab><mode><vczle><vczbe>_insn): ... This...
6020 (*aarch64_<su>rhadd<mode><vczle><vczbe>_insn): ... And this.
6022 2023-05-30 Andreas Schwab <schwab@suse.de>
6025 * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
6028 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6030 * config/aarch64/aarch64-modes.def (V16HI, V8SI, V4DI, V2TI): New modes.
6031 * config/aarch64/aarch64-protos.h (aarch64_const_vec_rnd_cst_p):
6033 (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
6034 * config/aarch64/aarch64-simd.md (*aarch64_simd_sra<mode>): Rename to...
6035 (aarch64_<sra_op>sra_n<mode>_insn): ... This.
6036 (aarch64_<sra_op>rsra_n<mode>_insn): New define_insn.
6037 (aarch64_<sra_op>sra_n<mode>): New define_expand.
6038 (aarch64_<sra_op>rsra_n<mode>): Likewise.
6039 (aarch64_<sur>sra_n<mode>): Rename to...
6040 (aarch64_<sur>sra_ndi): ... This.
6041 * config/aarch64/aarch64.cc (aarch64_classify_vector_mode): Add
6042 any_target_p argument.
6043 (aarch64_extract_vec_duplicate_wide_int): Define.
6044 (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
6045 (aarch64_const_vec_rnd_cst_p): Likewise.
6046 (aarch64_vector_mode_supported_any_target_p): Likewise.
6047 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Likewise.
6048 * config/aarch64/iterators.md (UNSPEC_SRSRA, UNSPEC_URSRA): Delete.
6049 (VSRA): Adjust for the above.
6051 (V2XWIDE): New mode_attr.
6052 (vec_or_offset): Likewise.
6053 (SHIFTEXTEND): Likewise.
6054 * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec): New
6056 * doc/tm.texi (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
6057 clarify that it applies to current target options.
6058 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Document.
6059 * doc/tm.texi.in: Regenerate.
6060 * stor-layout.cc (mode_for_vector): Check
6061 vector_mode_supported_any_target_p when iterating through vector modes.
6062 * target.def (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
6063 clarify that it applies to current target options.
6064 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Define.
6066 2023-05-30 Lili Cui <lili.cui@intel.com>
6068 PR tree-optimization/98350
6069 * tree-ssa-reassoc.cc
6070 (rewrite_expr_tree_parallel): Rewrite this function.
6071 (rank_ops_for_fma): New.
6072 (reassociate_bb): Handle new function.
6074 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
6076 * rtl.h (rtx_addr_can_trap_p): Change return type from int to bool.
6077 (rtx_unstable_p): Ditto.
6078 (reg_mentioned_p): Ditto.
6079 (reg_referenced_p): Ditto.
6080 (reg_used_between_p): Ditto.
6081 (reg_set_between_p): Ditto.
6082 (modified_between_p): Ditto.
6083 (no_labels_between_p): Ditto.
6084 (modified_in_p): Ditto.
6086 (multiple_sets): Ditto.
6087 (set_noop_p): Ditto.
6088 (noop_move_p): Ditto.
6089 (reg_overlap_mentioned_p): Ditto.
6090 (dead_or_set_p): Ditto.
6091 (dead_or_set_regno_p): Ditto.
6092 (find_reg_fusage): Ditto.
6093 (find_regno_fusage): Ditto.
6094 (side_effects_p): Ditto.
6095 (volatile_refs_p): Ditto.
6096 (volatile_insn_p): Ditto.
6097 (may_trap_p_1): Ditto.
6098 (may_trap_p): Ditto.
6099 (may_trap_or_fault_p): Ditto.
6100 (computed_jump_p): Ditto.
6101 (auto_inc_p): Ditto.
6102 (loc_mentioned_in_p): Ditto.
6103 * rtlanal.cc (computed_jump_p_1): Adjust forward declaration.
6104 (rtx_unstable_p): Change return type from int to bool
6105 and adjust function body accordingly.
6106 (rtx_addr_can_trap_p): Ditto.
6107 (reg_mentioned_p): Ditto.
6108 (no_labels_between_p): Ditto.
6109 (reg_used_between_p): Ditto.
6110 (reg_referenced_p): Ditto.
6111 (reg_set_between_p): Ditto.
6113 (modified_between_p): Ditto.
6114 (modified_in_p): Ditto.
6115 (multiple_sets): Ditto.
6116 (set_noop_p): Ditto.
6117 (noop_move_p): Ditto.
6118 (reg_overlap_mentioned_p): Ditto.
6119 (dead_or_set_p): Ditto.
6120 (dead_or_set_regno_p): Ditto.
6121 (find_reg_fusage): Ditto.
6122 (find_regno_fusage): Ditto.
6123 (remove_node_from_insn_list): Ditto.
6124 (volatile_insn_p): Ditto.
6125 (volatile_refs_p): Ditto.
6126 (side_effects_p): Ditto.
6127 (may_trap_p_1): Ditto.
6128 (may_trap_p): Ditto.
6129 (may_trap_or_fault_p): Ditto.
6130 (computed_jump_p): Ditto.
6131 (auto_inc_p): Ditto.
6132 (loc_mentioned_in_p): Ditto.
6133 * combine.cc (can_combine_p): Update indirect function.
6135 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6137 * config/riscv/autovec.md (<optab><mode><vconvert>2): New pattern.
6138 * config/riscv/iterators.md: New attribute.
6139 * config/riscv/vector-iterators.md: New attribute.
6141 2023-05-30 From: Juzhe-Zhong <juzhe.zhong@rivai.ai>
6143 * config/riscv/riscv.md: Fix signed and unsigned comparison
6146 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6148 * config/riscv/autovec.md (fnma<mode>4): New pattern.
6149 (*fnma<mode>): Ditto.
6151 2023-05-29 Die Li <lidie@eswincomputing.com>
6153 * config/riscv/riscv.cc (riscv_expand_conditional_move_onesided):
6155 (riscv_expand_conditional_move): Reuse the TARGET_SFB_ALU expand
6156 process for TARGET_XTHEADCONDMOV
6158 2023-05-29 Uros Bizjak <ubizjak@gmail.com>
6161 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also require
6162 TARGET_AVX512BW to generate truncv16hiv16qi2.
6164 2023-05-29 Jivan Hakobyan <jivanhakobyan9@gmail.com>
6166 * config/riscv/riscv.md (and<mode>3): New expander.
6167 (*and<mode>3) New pattern.
6168 * config/riscv/predicates.md (arith_operand_or_mode_mask): New
6171 2023-05-29 Pan Li <pan2.li@intel.com>
6173 * config/riscv/riscv-v.cc (emit_vlmax_insn): Remove unnecessary
6174 comments and rename local variables.
6175 (emit_nonvlmax_insn): Diito.
6176 (emit_vlmax_merge_insn): Ditto.
6177 (emit_vlmax_cmp_insn): Ditto.
6178 (emit_vlmax_cmp_mu_insn): Ditto.
6179 (emit_scalar_move_insn): Ditto.
6181 2023-05-29 Pan Li <pan2.li@intel.com>
6183 * config/riscv/riscv-v.cc (emit_vlmax_insn): Eliminate the
6185 (emit_nonvlmax_insn): Ditto.
6186 (emit_vlmax_merge_insn): Ditto.
6187 (emit_vlmax_cmp_insn): Ditto.
6188 (emit_vlmax_cmp_mu_insn): Ditto.
6189 (expand_vec_series): Ditto.
6191 2023-05-29 Pan Li <pan2.li@intel.com>
6193 * config/riscv/riscv-protos.h (enum insn_type): New type.
6194 * config/riscv/riscv-v.cc (RVV_INSN_OPERANDS_MAX): New macro.
6195 (rvv_builder::can_duplicate_repeating_sequence_p): Align the referenced
6197 (rvv_builder::get_merged_repeating_sequence): Ditto.
6198 (rvv_builder::repeating_sequence_use_merge_profitable_p): New function
6199 to evaluate the optimization cost.
6200 (rvv_builder::get_merge_scalar_mask): New function to get the merge
6202 (emit_scalar_move_insn): New function to emit vmv.s.x.
6203 (emit_vlmax_integer_move_insn): New function to emit vlmax vmv.v.x.
6204 (emit_nonvlmax_integer_move_insn): New function to emit nonvlmax
6206 (get_repeating_sequence_dup_machine_mode): New function to get the dup
6208 (expand_vector_init_merge_repeating_sequence): New function to perform
6210 (expand_vec_init): Add this vector init optimization.
6211 * config/riscv/riscv.h (BITS_PER_WORD): New macro.
6213 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
6215 * tree-ssa-loop-manip.cc (create_iv): Try harder to find a SLOC to
6216 put onto the increment when it is inserted after the position.
6218 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
6220 * match.pd ((T)P - (T)(P + A) -> -(T) A): Avoid artificial overflow
6223 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6225 * config/riscv/riscv-vsetvl.cc (source_equal_p): Fix ICE.
6227 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6229 * config/riscv/autovec.md (fma<mode>4): New pattern.
6230 (*fma<mode>): Ditto.
6231 * config/riscv/riscv-protos.h (enum insn_type): New enum.
6232 (emit_vlmax_ternary_insn): New function.
6233 * config/riscv/riscv-v.cc (emit_vlmax_ternary_insn): Ditto.
6235 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6237 * config/riscv/vector.md: Fix vimuladd instruction bug.
6239 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6241 * config/riscv/riscv.cc (global_state_unknown_p): New function.
6242 (riscv_mode_after): Fix incorrect VXM.
6244 2023-05-29 Pan Li <pan2.li@intel.com>
6246 * common/config/riscv/riscv-common.cc:
6247 (riscv_implied_info): Add zvfhmin item.
6248 (riscv_ext_version_table): Ditto.
6249 (riscv_ext_flag_table): Ditto.
6250 * config/riscv/riscv-opts.h (MASK_ZVFHMIN): New macro.
6251 (TARGET_ZFHMIN): Align indent.
6252 (TARGET_ZFH): Ditto.
6253 (TARGET_ZVFHMIN): New macro.
6255 2023-05-27 liuhongt <hongtao.liu@intel.com>
6258 * config/i386/sse.md (*andnot<mode>3): Extend below splitter
6259 to VI_AVX2 to cover more modes.
6261 2023-05-27 liuhongt <hongtao.liu@intel.com>
6263 * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
6264 Remove ATOM and ICELAKE(and later) core processors.
6266 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
6268 * config/riscv/autovec.md (<optab><mode>2): Add vneg/vnot.
6270 * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
6272 * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
6275 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
6276 Juzhe Zhong <juzhe.zhong@rivai.ai>
6278 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): New
6280 (<optab><v_quad_trunc><mode>2): Dito.
6281 (<optab><v_oct_trunc><mode>2): Dito.
6282 (trunc<mode><v_double_trunc>2): Dito.
6283 (trunc<mode><v_quad_trunc>2): Dito.
6284 (trunc<mode><v_oct_trunc>2): Dito.
6285 * config/riscv/riscv-protos.h (vectorize_related_mode): Define.
6286 (autovectorize_vector_modes): Define.
6287 * config/riscv/riscv-v.cc (vectorize_related_mode): Implement
6289 (autovectorize_vector_modes): Implement hook.
6290 * config/riscv/riscv.cc (riscv_autovectorize_vector_modes):
6291 Implement target hook.
6292 (riscv_vectorize_related_mode): Implement target hook.
6293 (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
6294 (TARGET_VECTORIZE_RELATED_MODE): Define.
6295 * config/riscv/vector-iterators.md: Add lowercase versions of
6296 mode_attr iterators.
6298 2023-05-26 Andrew Stubbs <ams@codesourcery.com>
6299 Tobias Burnus <tobias@codesourcery.com>
6301 * config/gcn/gcn-hsa.h (XNACKOPT): New macro.
6302 (ASM_SPEC): Use XNACKOPT.
6303 * config/gcn/gcn-opts.h (enum sram_ecc_type): Rename to ...
6304 (enum hsaco_attr_type): ... this, and generalize the names.
6305 (TARGET_XNACK): New macro.
6306 * config/gcn/gcn.cc (gcn_option_override): Update to sorry for all
6308 (output_file_start): Update xnack handling.
6309 (gcn_hsa_declare_function_name): Use TARGET_XNACK.
6310 * config/gcn/gcn.opt (-mxnack): Add the "on/off/any" syntax.
6311 (sram_ecc_type): Rename to ...
6312 (hsaco_attr_type: ... this.)
6313 * config/gcn/mkoffload.cc (SET_XNACK_ANY): New macro.
6314 (TEST_XNACK): Delete.
6315 (TEST_XNACK_ANY): New macro.
6316 (TEST_XNACK_ON): New macro.
6317 (main): Support the new -mxnack=on/off/any syntax.
6318 * doc/invoke.texi (-mxnack): Update for new syntax.
6320 2023-05-26 Andrew Pinski <apinski@marvell.com>
6322 * genmatch.cc (emit_debug_printf): New function.
6323 (dt_simplify::gen_1): Emit printf into the code
6324 before the `return true` or returning the folded result
6325 instead of emitting it always.
6327 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
6329 * config/xtensa/xtensa-protos.h
6330 (xtensa_expand_block_set_unrolled_loop,
6331 xtensa_expand_block_set_small_loop): Remove.
6332 (xtensa_expand_block_set): New prototype.
6333 * config/xtensa/xtensa.cc
6334 (xtensa_expand_block_set_libcall): New subfunction.
6335 (xtensa_expand_block_set_unrolled_loop,
6336 xtensa_expand_block_set_small_loop): Rewrite as subfunctions.
6337 (xtensa_expand_block_set): New function that calls the above
6339 * config/xtensa/xtensa.md (memsetsi): Change to invoke only
6340 xtensa_expand_block_set().
6342 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
6344 * config/xtensa/xtensa-protos.h (xtensa_m1_or_1_thru_15):
6346 * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
6348 * config/xtensa/constraints.md (O):
6349 Change to use the above function.
6350 * config/xtensa/xtensa.md (*subsi3_from_const):
6351 New insn_and_split pattern.
6353 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
6355 * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3):
6356 Retract excessive line folding, and correct the value of
6357 the "length" insn attribute related to TARGET_DENSITY.
6358 (*extzvsi-1bit_addsubx): Ditto.
6360 2023-05-26 Uros Bizjak <ubizjak@gmail.com>
6362 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi):
6363 Do not disable call to ix86_expand_vecop_qihi2.
6365 2023-05-26 liuhongt <hongtao.liu@intel.com>
6369 * ira-costs.cc (scan_one_insn): Only use NO_REGS in cost
6370 calculation when !hard_regno_mode_ok for GENERAL_REGS and
6371 mode, otherwise still use GENERAL_REGS.
6373 2023-05-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6375 * config/riscv/riscv.cc (vector_zero_call_used_regs): Add
6376 explict VL and drop VL in ops.
6378 2023-05-25 Jin Ma <jinma@linux.alibaba.com>
6380 * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion
6381 in different BB blocks.
6383 2023-05-25 Uros Bizjak <ubizjak@gmail.com>
6385 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
6386 Rewrite to expand to 2x-wider (e.g. V16QI -> V16HImode)
6387 instructions when available. Emulate truncation via
6388 ix86_expand_vec_perm_const_1 when native truncate insn
6390 (ix86_expand_vecop_qihi_partial) <case MULT>: Use pmovzx
6391 when available. Trivially rename some variables.
6392 (ix86_expand_vecop_qihi): Unconditionally call ix86_expand_vecop_qihi2.
6393 * config/i386/i386.cc (ix86_multiplication_cost): Rewrite cost
6394 calculation of V*QImode emulations to account for generation of
6395 2x-wider mode instructions.
6396 (ix86_shift_rotate_cost): Update cost calculation of V*QImode
6397 emulations to account for generation of 2x-wider mode instructions.
6399 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
6402 * config/avr/avr.cc (avr_can_inline_p): New static function.
6403 (TARGET_CAN_INLINE_P): Define to that function.
6405 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
6408 * config/avr/avr.md (*movbitqi.0): Rename to *movbit<mode>.0-6.
6409 Handle any bit position and use mode QISI.
6410 * config/avr/avr.cc (avr_rtx_costs_1) [IOR]: Return a cost
6411 of 2 insns for bit-transfer of respective style.
6413 2023-05-25 Christophe Lyon <christophe.lyon@linaro.org>
6415 * config/arm/iterators.md (MVE_6): Remove.
6416 * config/arm/mve.md: Replace MVE_6 with MVE_5.
6418 2023-05-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6419 Richard Sandiford <richard.sandiford@arm.com>
6421 * tree-vect-loop-manip.cc (vect_adjust_loop_lens_control): New
6423 (vect_set_loop_controls_directly): Add decrement IV support.
6424 (vect_set_loop_condition_partial_vectors): Ditto.
6425 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): New
6427 * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
6430 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6433 * config/aarch64/aarch64-simd.md (aarch64_fcadd<rot><mode>): Rename to...
6434 (aarch64_fcadd<rot><mode><vczle><vczbe>): ... This.
6435 Fix canonicalization of PLUS operands.
6436 (aarch64_fcmla<rot><mode>): Rename to...
6437 (aarch64_fcmla<rot><mode><vczle><vczbe>): ... This.
6438 Fix canonicalization of PLUS operands.
6439 (aarch64_fcmla_lane<rot><mode>): Rename to...
6440 (aarch64_fcmla_lane<rot><mode><vczle><vczbe>): ... This.
6441 Fix canonicalization of PLUS operands.
6442 (aarch64_fcmla_laneq<rot>v4hf): Rename to...
6443 (aarch64_fcmla_laneq<rot>v4hf<vczle><vczbe>): ... This.
6444 Fix canonicalization of PLUS operands.
6445 (aarch64_fcmlaq_lane<rot><mode>): Fix canonicalization of PLUS operands.
6447 2023-05-25 Chris Sidebottom <chris.sidebottom@arm.com>
6449 * config/arm/arm.md (rbitsi2): Rename to...
6450 (arm_rbit): ... This.
6451 (ctzsi2): Adjust for the above.
6452 (arm_rev16si2): Convert to define_expand.
6453 (arm_rev16si2_alt1): New pattern.
6454 (arm_rev16si2_alt): Rename to...
6455 (*arm_rev16si2_alt2): ... This.
6456 * config/arm/arm_acle.h (__ror, __rorl, __rorll, __clz, __clzl, __clzll,
6457 __cls, __clsl, __clsll, __revsh, __rev, __revl, __revll, __rev16,
6458 __rev16l, __rev16ll, __rbit, __rbitl, __rbitll): Define intrinsics.
6459 * config/arm/arm_acle_builtins.def (rbit, rev16si2): Define builtins.
6461 2023-05-25 Alex Coplan <alex.coplan@arm.com>
6464 * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
6466 * config/arm/vfp.md (no_literal_pool_df_immediate): Rather than punning an
6467 lvalue DFmode pseudo into DImode, use a DImode pseudo and pun it into
6468 DFmode as an rvalue.
6470 2023-05-25 Richard Biener <rguenther@suse.de>
6473 * tree-vect-stmts.cc (vectorizable_condition): For
6474 embedded comparisons also handle the case when the target
6475 only provides vec_cmp and vcond_mask.
6477 2023-05-25 Claudiu Zissulescu <claziss@gmail.com>
6479 * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using
6482 2023-05-25 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
6484 * config/aarch64/aarch64.cc (scalar_move_insn_p): New function.
6485 (seq_cost_ignoring_scalar_moves): Likewise.
6486 (aarch64_expand_vector_init): Call seq_cost_ignoring_scalar_moves.
6488 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6490 * config/aarch64/arm_neon.h (vcage_f64): Reimplement with builtins.
6491 (vcage_f32): Likewise.
6492 (vcages_f32): Likewise.
6493 (vcageq_f32): Likewise.
6494 (vcaged_f64): Likewise.
6495 (vcageq_f64): Likewise.
6496 (vcagts_f32): Likewise.
6497 (vcagt_f32): Likewise.
6498 (vcagt_f64): Likewise.
6499 (vcagtq_f32): Likewise.
6500 (vcagtd_f64): Likewise.
6501 (vcagtq_f64): Likewise.
6502 (vcale_f32): Likewise.
6503 (vcale_f64): Likewise.
6504 (vcaled_f64): Likewise.
6505 (vcales_f32): Likewise.
6506 (vcaleq_f32): Likewise.
6507 (vcaleq_f64): Likewise.
6508 (vcalt_f32): Likewise.
6509 (vcalt_f64): Likewise.
6510 (vcaltd_f64): Likewise.
6511 (vcaltq_f32): Likewise.
6512 (vcaltq_f64): Likewise.
6513 (vcalts_f32): Likewise.
6515 2023-05-25 Hu, Lin1 <lin1.hu@intel.com>
6519 * config/i386/avx512bwintrin.h (_mm512_srli_epi16): Change type from
6520 int to const int or const int to const unsigned int.
6521 (_mm512_mask_srli_epi16): Ditto.
6522 (_mm512_slli_epi16): Ditto.
6523 (_mm512_mask_slli_epi16): Ditto.
6524 (_mm512_maskz_slli_epi16): Ditto.
6525 (_mm512_srai_epi16): Ditto.
6526 (_mm512_mask_srai_epi16): Ditto.
6527 (_mm512_maskz_srai_epi16): Ditto.
6528 * config/i386/avx512fintrin.h (_mm512_slli_epi64): Ditto.
6529 (_mm512_mask_slli_epi64): Ditto.
6530 (_mm512_maskz_slli_epi64): Ditto.
6531 (_mm512_srli_epi64): Ditto.
6532 (_mm512_mask_srli_epi64): Ditto.
6533 (_mm512_maskz_srli_epi64): Ditto.
6534 (_mm512_srai_epi64): Ditto.
6535 (_mm512_mask_srai_epi64): Ditto.
6536 (_mm512_maskz_srai_epi64): Ditto.
6537 (_mm512_slli_epi32): Ditto.
6538 (_mm512_mask_slli_epi32): Ditto.
6539 (_mm512_maskz_slli_epi32): Ditto.
6540 (_mm512_srli_epi32): Ditto.
6541 (_mm512_mask_srli_epi32): Ditto.
6542 (_mm512_maskz_srli_epi32): Ditto.
6543 (_mm512_srai_epi32): Ditto.
6544 (_mm512_mask_srai_epi32): Ditto.
6545 (_mm512_maskz_srai_epi32): Ditto.
6546 * config/i386/avx512vlbwintrin.h (_mm256_mask_srai_epi16): Ditto.
6547 (_mm256_maskz_srai_epi16): Ditto.
6548 (_mm_mask_srai_epi16): Ditto.
6549 (_mm_maskz_srai_epi16): Ditto.
6550 (_mm256_mask_slli_epi16): Ditto.
6551 (_mm256_maskz_slli_epi16): Ditto.
6552 (_mm_mask_slli_epi16): Ditto.
6553 (_mm_maskz_slli_epi16): Ditto.
6554 (_mm_maskz_srli_epi16): Ditto.
6555 * config/i386/avx512vlintrin.h (_mm256_mask_srli_epi32): Ditto.
6556 (_mm256_maskz_srli_epi32): Ditto.
6557 (_mm_mask_srli_epi32): Ditto.
6558 (_mm_maskz_srli_epi32): Ditto.
6559 (_mm256_mask_srli_epi64): Ditto.
6560 (_mm256_maskz_srli_epi64): Ditto.
6561 (_mm_mask_srli_epi64): Ditto.
6562 (_mm_maskz_srli_epi64): Ditto.
6563 (_mm256_mask_srai_epi32): Ditto.
6564 (_mm256_maskz_srai_epi32): Ditto.
6565 (_mm_mask_srai_epi32): Ditto.
6566 (_mm_maskz_srai_epi32): Ditto.
6567 (_mm256_srai_epi64): Ditto.
6568 (_mm256_mask_srai_epi64): Ditto.
6569 (_mm256_maskz_srai_epi64): Ditto.
6570 (_mm_srai_epi64): Ditto.
6571 (_mm_mask_srai_epi64): Ditto.
6572 (_mm_maskz_srai_epi64): Ditto.
6573 (_mm_mask_slli_epi32): Ditto.
6574 (_mm_maskz_slli_epi32): Ditto.
6575 (_mm_mask_slli_epi64): Ditto.
6576 (_mm_maskz_slli_epi64): Ditto.
6577 (_mm256_mask_slli_epi32): Ditto.
6578 (_mm256_maskz_slli_epi32): Ditto.
6579 (_mm256_mask_slli_epi64): Ditto.
6580 (_mm256_maskz_slli_epi64): Ditto.
6582 2023-05-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6584 * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz
6587 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
6589 * data-streamer-in.cc (streamer_read_value_range): Handle NANs.
6590 * data-streamer-out.cc (streamer_write_vrange): Same.
6591 * value-range.h (class vrange): Make streamer_write_vrange a friend.
6593 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
6595 * value-query.cc (range_query::get_tree_range): Set NAN directly
6597 * value-range.cc (frange::set): Assert that bounds are not NAN.
6599 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
6601 * value-range.cc (add_vrange): Handle known NANs.
6603 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
6605 * value-range.h (frange::set_nan): New.
6607 2023-05-25 Alexandre Oliva <oliva@adacore.com>
6610 * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that
6611 requires stricter alignment than MEM's.
6613 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
6615 PR tree-optimization/107822
6616 PR tree-optimization/107986
6617 * Makefile.in (OBJS): Add gimple-range-phi.o.
6618 * gimple-range-cache.h (ranger_cache::m_estimate): New
6619 phi_analyzer pointer member.
6620 * gimple-range-fold.cc (fold_using_range::range_of_phi): Use
6621 phi_analyzer if no loop info is available.
6622 * gimple-range-phi.cc: New file.
6623 * gimple-range-phi.h: New file.
6624 * tree-vrp.cc (execute_ranger_vrp): Utililze a phi_analyzer.
6626 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
6628 * gimple-range-fold.cc (fur_list::fur_list): Add range_query param
6630 (fold_range): Add range_query parameter.
6631 (fur_relation::fur_relation): New.
6632 (fur_relation::trio): New.
6633 (fur_relation::register_relation): New.
6634 (fold_relations): New.
6635 * gimple-range-fold.h (fold_range): Adjust prototypes.
6636 (fold_relations): New.
6638 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
6640 * gimple-range-cache.cc (ssa_cache::range_of_expr): New.
6641 * gimple-range-cache.h (class ssa_cache): Inherit from range_query.
6642 (ranger_cache::const_query): New.
6643 * gimple-range.cc (gimple_ranger::const_query): New.
6644 * gimple-range.h (gimple_ranger::const_query): New prototype.
6646 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
6648 * gimple-range-cache.cc (ssa_cache::dump): Use get_range.
6649 (ssa_cache::dump_range_query): Delete.
6650 (ssa_lazy_cache::dump_range_query): Delete.
6651 (ssa_lazy_cache::get_range): Move from header file.
6652 (ssa_lazy_cache::clear_range): ditto.
6653 (ssa_lazy_cache::clear): Ditto.
6654 * gimple-range-cache.h (class ssa_cache): Virtualize.
6655 (class ssa_lazy_cache): Inherit and virtualize.
6657 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
6659 * value-range.h (vrange::kind): Remove.
6661 2023-05-24 Roger Sayle <roger@nextmovesoftware.com>
6663 PR middle-end/109840
6664 * match.pd <popcount optimizations>: Preserve zero-extension when
6665 optimizing popcount((T)bswap(x)) and popcount((T)rotate(x,y)) as
6666 popcount((T)x), so the popcount's argument keeps the same type.
6667 <parity optimizations>: Likewise preserve extensions when
6668 simplifying parity((T)bswap(x)) and parity((T)rotate(x,y)) as
6669 parity((T)x), so that the parity's argument type is the same.
6671 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
6673 * ipa-cp.cc (ipa_value_range_from_jfunc): Use new ipa_vr API.
6674 (ipcp_store_vr_results): Same.
6675 * ipa-prop.cc (ipa_vr::ipa_vr): New.
6676 (ipa_vr::get_vrange): New.
6677 (ipa_vr::set_unknown): New.
6678 (ipa_vr::streamer_read): New.
6679 (ipa_vr::streamer_write): New.
6680 (write_ipcp_transformation_info): Use new ipa_vr API.
6681 (read_ipcp_transformation_info): Same.
6682 (ipa_vr::nonzero_p): Delete.
6683 (ipcp_update_vr): Use new ipa_vr API.
6684 * ipa-prop.h (class ipa_vr): Provide an API and hide internals.
6685 * ipa-sra.cc (zap_useless_ipcp_results): Use new ipa_vr API.
6687 2023-05-24 Jan-Benedict Glaw <jbglaw@lug-owl.de>
6689 * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to
6690 silence overflow warnings later on.
6692 2023-05-24 Uros Bizjak <ubizjak@gmail.com>
6694 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
6695 Remove handling of V8QImode.
6696 * config/i386/mmx.md (v<insn>v8qi3): Move from sse.md.
6697 Call ix86_expand_vecop_qihi_partial. Enable for TARGET_MMX_WITH_SSE.
6698 (v<insn>v4qi3): Ditto.
6699 * config/i386/sse.md (v<insn>v8qi3): Remove.
6701 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6704 * config/aarch64/aarch64-simd.md (aarch64_simd_lshr<mode>): Rename to...
6705 (aarch64_simd_lshr<mode><vczle><vczbe>): ... This.
6706 (aarch64_simd_ashr<mode>): Rename to...
6707 (aarch64_simd_ashr<mode><vczle><vczbe>): ... This.
6708 (aarch64_simd_imm_shl<mode>): Rename to...
6709 (aarch64_simd_imm_shl<mode><vczle><vczbe>): ... This.
6710 (aarch64_simd_reg_sshl<mode>): Rename to...
6711 (aarch64_simd_reg_sshl<mode><vczle><vczbe>): ... This.
6712 (aarch64_simd_reg_shl<mode>_unsigned): Rename to...
6713 (aarch64_simd_reg_shl<mode>_unsigned<vczle><vczbe>): ... This.
6714 (aarch64_simd_reg_shl<mode>_signed): Rename to...
6715 (aarch64_simd_reg_shl<mode>_signed<vczle><vczbe>): ... This.
6716 (vec_shr_<mode>): Rename to...
6717 (vec_shr_<mode><vczle><vczbe>): ... This.
6718 (aarch64_<sur>shl<mode>): Rename to...
6719 (aarch64_<sur>shl<mode><vczle><vczbe>): ... This.
6720 (aarch64_<sur>q<r>shl<mode>): Rename to...
6721 (aarch64_<sur>q<r>shl<mode><vczle><vczbe>): ... This.
6723 2023-05-24 Richard Biener <rguenther@suse.de>
6726 * config/i386/i386-expand.cc (ix86_expand_vector_init_general):
6727 Perform final vector composition using
6728 ix86_expand_vector_init_general instead of setting
6729 the highpart and lowpart which causes spilling.
6731 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
6733 PR tree-optimization/109695
6734 * gimple-range-cache.cc (ranger_cache::get_global_range): Add
6736 * gimple-range-cache.h (ranger_cache::get_global_range): Ditto.
6737 * gimple-range.cc (gimple_ranger::range_of_stmt): Pass changed
6738 flag to set_global_range.
6739 (gimple_ranger::prefill_stmt_dependencies): Ditto.
6741 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
6743 PR tree-optimization/109695
6744 * gimple-range-cache.cc (temporal_cache::temporal_value): Return
6746 (temporal_cache::current_p): Check always_current method.
6747 (temporal_cache::set_always_current): Add param and set value
6749 (temporal_cache::always_current_p): New.
6750 (ranger_cache::get_global_range): Adjust.
6751 (ranger_cache::set_global_range): set always current first.
6753 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
6755 PR tree-optimization/109695
6756 * gimple-range-cache.cc (ranger_cache::get_global_range): Call
6757 fold_range with global query to choose an initial value.
6759 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6761 * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_
6764 2023-05-24 Richard Biener <rguenther@suse.de>
6766 PR tree-optimization/109849
6767 * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect
6768 expressions but take the first sets.
6770 2023-05-24 Gaius Mulley <gaiusmod2@gmail.com>
6773 * doc/gm2.texi (High procedure function): New node.
6774 (Using): New menu entry for High procedure function.
6776 2023-05-24 Richard Sandiford <richard.sandiford@arm.com>
6778 PR rtl-optimization/109940
6779 * early-remat.cc (postorder_index): Rename to...
6780 (rpo_index): ...this.
6781 (compare_candidates): Sort by decreasing rpo_index rather than
6782 increasing postorder_index.
6783 (early_remat::sort_candidates): Calculate the forward RPO from
6785 (early_remat::local_phase): Follow forward RPO using DF_FORWARD,
6786 rather than DF_BACKWARD in reverse.
6788 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6791 * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use
6792 qualifier_none for the return operand.
6794 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6796 * config/riscv/autovec.md (<optab><mode>3): New pattern.
6797 (one_cmpl<mode>2): Ditto.
6798 (*<optab>not<mode>): Ditto.
6799 (*n<optab><mode>): Ditto.
6800 * config/riscv/riscv-v.cc (expand_vec_cmp_float): Change to
6803 2023-05-24 Kewen Lin <linkw@linux.ibm.com>
6805 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the
6806 calculation on n_perms by considering nvectors_per_build.
6808 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6809 Richard Sandiford <richard.sandiford@arm.com>
6811 * config/riscv/autovec.md (@vcond_mask_<mode><vm>): New pattern.
6812 (vec_cmp<mode><vm>): New pattern.
6813 (vec_cmpu<mode><vm>): New pattern.
6814 (vcond<V:mode><VI:mode>): New pattern.
6815 (vcondu<V:mode><VI:mode>): New pattern.
6816 * config/riscv/riscv-protos.h (enum insn_type): Add new enum.
6817 (emit_vlmax_merge_insn): New function.
6818 (emit_vlmax_cmp_insn): Ditto.
6819 (emit_vlmax_cmp_mu_insn): Ditto.
6820 (expand_vec_cmp): Ditto.
6821 (expand_vec_cmp_float): Ditto.
6822 (expand_vcond): Ditto.
6823 * config/riscv/riscv-v.cc (emit_vlmax_merge_insn): Ditto.
6824 (emit_vlmax_cmp_insn): Ditto.
6825 (emit_vlmax_cmp_mu_insn): Ditto.
6826 (get_cmp_insn_code): Ditto.
6827 (expand_vec_cmp): Ditto.
6828 (expand_vec_cmp_float): Ditto.
6829 (expand_vcond): Ditto.
6831 2023-05-24 Pan Li <pan2.li@intel.com>
6833 * config/riscv/genrvv-type-indexer.cc (main): Add
6834 unsigned_eew*_lmul1_interpret for indexer.
6835 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
6836 Register vuint*m1_t interpret function.
6837 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
6838 New macro for vuint8m1_t.
6839 (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
6840 (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
6841 (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
6842 (vbool1_t): Add to unsigned_eew*_interpret_ops.
6843 (vbool2_t): Likewise.
6844 (vbool4_t): Likewise.
6845 (vbool8_t): Likewise.
6846 (vbool16_t): Likewise.
6847 (vbool32_t): Likewise.
6848 (vbool64_t): Likewise.
6849 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
6850 New macro for vuint*m1_t.
6851 (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
6852 (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
6853 (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
6854 (required_extensions_p): Add vuint*m1_t interpret case.
6855 * config/riscv/riscv-vector-builtins.def (unsigned_eew8_lmul1_interpret):
6856 Add vuint*m1_t interpret to base type.
6857 (unsigned_eew16_lmul1_interpret): Likewise.
6858 (unsigned_eew32_lmul1_interpret): Likewise.
6859 (unsigned_eew64_lmul1_interpret): Likewise.
6861 2023-05-24 Pan Li <pan2.li@intel.com>
6863 * config/riscv/genrvv-type-indexer.cc (EEW_SIZE_LIST): New macro
6864 for the eew size list.
6865 (LMUL1_LOG2): New macro for the log2 value of lmul=1.
6866 (main): Add signed_eew*_lmul1_interpret for indexer.
6867 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
6868 Register vint*m1_t interpret function.
6869 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
6870 New macro for vint8m1_t.
6871 (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
6872 (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
6873 (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
6874 (vbool1_t): Add to signed_eew*_interpret_ops.
6875 (vbool2_t): Likewise.
6876 (vbool4_t): Likewise.
6877 (vbool8_t): Likewise.
6878 (vbool16_t): Likewise.
6879 (vbool32_t): Likewise.
6880 (vbool64_t): Likewise.
6881 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
6882 New macro for vint*m1_t.
6883 (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
6884 (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
6885 (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
6886 (required_extensions_p): Add vint8m1_t interpret case.
6887 * config/riscv/riscv-vector-builtins.def (signed_eew8_lmul1_interpret):
6888 Add vint*m1_t interpret to base type.
6889 (signed_eew16_lmul1_interpret): Likewise.
6890 (signed_eew32_lmul1_interpret): Likewise.
6891 (signed_eew64_lmul1_interpret): Likewise.
6893 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6895 * config/riscv/autovec.md: Adjust for new interface.
6896 * config/riscv/riscv-protos.h (emit_vlmax_insn): Add VL operand.
6897 (emit_nonvlmax_insn): Add AVL operand.
6898 * config/riscv/riscv-v.cc (emit_vlmax_insn): Add VL operand.
6899 (emit_nonvlmax_insn): Add AVL operand.
6900 (sew64_scalar_helper): Adjust for new interface.
6901 (expand_tuple_move): Ditto.
6902 * config/riscv/vector.md: Ditto.
6904 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6906 * config/riscv/riscv-v.cc (expand_vec_series): Remove magic number.
6907 (expand_const_vector): Ditto.
6908 (legitimize_move): Ditto.
6909 (sew64_scalar_helper): Ditto.
6910 (expand_tuple_move): Ditto.
6911 (expand_vector_init_insert_elems): Ditto.
6912 * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
6914 2023-05-24 liuhongt <hongtao.liu@intel.com>
6917 * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
6918 _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} and
6919 _mm_abs_{pi8,pi16,pi32} into gimple ABS_EXPR.
6920 (ix86_masked_all_ones): Handle 64-bit mask.
6921 * config/i386/i386-builtin.def: Replace icode of related
6922 non-mask simd abs builtins with CODE_FOR_nothing.
6924 2023-05-23 Martin Uecker <uecker@tugraz.at>
6927 * function.cc (gimplify_parm_type): Remove function.
6928 (gimplify_parameters): Call gimplify_type_sizes.
6930 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
6932 * config/xtensa/xtensa.md (*addsubx): Rename from '*addx',
6933 and change to also accept '*subx' pattern.
6936 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
6938 * config/xtensa/predicates.md (addsub_operator): New.
6939 * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3,
6940 *extzvsi-1bit_addsubx): New insn_and_split patterns.
6941 * config/xtensa/xtensa.cc (xtensa_rtx_costs):
6942 Add a special case about ifcvt 'noce_try_cmove()' to handle
6943 constant loads that do not fit into signed 12 bits in the
6944 patterns added above.
6946 2023-05-23 Richard Biener <rguenther@suse.de>
6948 PR tree-optimization/109747
6949 * tree-vect-slp.cc (vect_prologue_cost_for_slp): Pass down
6950 the SLP node only once to the cost hook.
6952 2023-05-23 Georg-Johann Lay <avr@gjlay.de>
6954 * config/avr/avr.cc (avr_insn_cost): New static function.
6955 (TARGET_INSN_COST): Define to that function.
6957 2023-05-23 Richard Biener <rguenther@suse.de>
6960 * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
6961 For vector construction or splats apply GPR->XMM move
6962 costing. QImode memory can be handled directly only
6965 2023-05-23 Richard Biener <rguenther@suse.de>
6967 PR tree-optimization/108752
6968 * tree-vect-stmts.cc (vectorizable_operation): For bit
6969 operations with generic word_mode vectors do not cost
6970 an extra stmt. For plus, minus and negate also cost the
6971 constant materialization.
6973 2023-05-23 Uros Bizjak <ubizjak@gmail.com>
6975 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial):
6976 Call ix86_expand_vec_shift_qihi_constant for shifts
6977 with constant count operand.
6978 * config/i386/i386.cc (ix86_shift_rotate_cost):
6979 Handle V4QImode and V8QImode.
6980 * config/i386/mmx.md (<insn>v8qi3): New insn pattern.
6981 (<insn>v4qi3): Ditto.
6983 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6985 * config/riscv/vector.md: Add mode.
6987 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
6989 PR tree-optimization/109934
6990 * value-range.cc (irange::invert): Remove buggy special case.
6992 2023-05-23 Richard Biener <rguenther@suse.de>
6994 * tree-ssa-pre.cc (compute_antic_aux): Dump the correct
6997 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
7000 * config/aarch64/aarch64.cc (aarch64_modes_tieable_p): Allow
7001 subregs between any scalars that are 64 bits or smaller.
7002 * config/aarch64/iterators.md (SUBDI_BITS): New int iterator.
7003 (bits_etype): New int attribute.
7004 * config/aarch64/aarch64.md (*insv_reg<mode>_<SUBDI_BITS>)
7005 (*aarch64_bfi<GPI:mode><ALLX:mode>_<SUBDI_BITS>): New patterns.
7006 (*aarch64_bfidi<ALLX:mode>_subreg_<SUBDI_BITS>): Likewise.
7008 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
7010 * doc/md.texi: Document that <FOO> can be used to refer to the
7011 numerical value of an int iterator FOO. Tweak other parts of
7012 the int iterator documentation.
7013 * read-rtl.cc (iterator_group::has_self_attr): New field.
7014 (map_attr_string): When has_self_attr is true, make <FOO>
7015 expand to the current value of iterator FOO.
7016 (initialize_iterators): Set has_self_attr for int iterators.
7018 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7020 * config/riscv/autovec.md: Refactor the framework of RVV auto-vectorization.
7021 * config/riscv/riscv-protos.h (RVV_MISC_OP_NUM): Ditto.
7022 (RVV_UNOP_NUM): New macro.
7023 (RVV_BINOP_NUM): Ditto.
7024 (legitimize_move): Refactor the framework of RVV auto-vectorization.
7025 (emit_vlmax_op): Ditto.
7026 (emit_vlmax_reg_op): Ditto.
7027 (emit_len_op): Ditto.
7028 (emit_len_binop): Ditto.
7029 (emit_vlmax_tany_many): Ditto.
7030 (emit_nonvlmax_tany_many): Ditto.
7031 (sew64_scalar_helper): Ditto.
7032 (expand_tuple_move): Ditto.
7033 * config/riscv/riscv-v.cc (emit_pred_op): Ditto.
7034 (emit_pred_binop): Ditto.
7035 (emit_vlmax_op): Ditto.
7036 (emit_vlmax_tany_many): New function.
7037 (emit_len_op): Remove.
7038 (emit_nonvlmax_tany_many): New function.
7039 (emit_vlmax_reg_op): Remove.
7040 (emit_len_binop): Ditto.
7041 (emit_index_op): Ditto.
7042 (expand_vec_series): Refactor the framework of RVV auto-vectorization.
7043 (expand_const_vector): Ditto.
7044 (legitimize_move): Ditto.
7045 (sew64_scalar_helper): Ditto.
7046 (expand_tuple_move): Ditto.
7047 (expand_vector_init_insert_elems): Ditto.
7048 * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
7049 * config/riscv/vector.md: Ditto.
7051 2023-05-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7054 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Add predicate
7055 and constraint for operand 0.
7056 (add_vec_concat_subst_be): Likewise.
7058 2023-05-23 Richard Biener <rguenther@suse.de>
7060 PR tree-optimization/109849
7061 * tree-ssa-pre.cc (do_hoist_insertion): Compute ANTIC_OUT
7062 and use that to determine what to hoist.
7064 2023-05-23 Eric Botcazou <ebotcazou@adacore.com>
7066 * fold-const.cc (native_encode_initializer) <CONSTRUCTOR>: Apply the
7067 specific treatment for bit-fields only if they have an integral type
7068 and filter out non-integral bit-fields that do not start and end on
7071 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
7073 PR tree-optimization/109920
7074 * value-range.h (RESIZABLE>::~int_range): Use delete[].
7076 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
7078 * config/i386/i386.cc (ix86_shift_rotate_cost): Correct
7079 calcuation of integer vector mode costs to reflect generated
7080 instruction sequences of different integer vector modes and
7081 different target ABIs. Remove "speed" function argument.
7082 (ix86_rtx_costs): Update call for removed function argument.
7083 (ix86_vector_costs::add_stmt_cost): Ditto.
7085 2023-05-22 Aldy Hernandez <aldyh@redhat.com>
7087 * value-range.h (class Value_Range): Implement set_zero,
7088 set_nonzero, and nonzero_p.
7090 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
7092 * config/i386/i386.cc (ix86_multiplication_cost): Add
7093 the cost of a memory read to the cost of V?QImode sequences.
7095 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7097 * config/riscv/riscv-v.cc: Add "m_" prefix.
7099 2023-05-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
7101 * tree-vect-loop.cc (vect_get_loop_len): Fix issue for
7102 multiple-rgroup of length.
7103 * tree-vect-stmts.cc (vectorizable_store): Ditto.
7104 (vectorizable_load): Ditto.
7105 * tree-vectorizer.h (vect_get_loop_len): Ditto.
7107 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7109 * config/riscv/riscv.cc (riscv_const_insns): Reorganize the
7112 2023-05-22 Kewen Lin <linkw@linux.ibm.com>
7114 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the
7115 handling for the case index == count.
7117 2023-05-21 Georg-Johann Lay <avr@gjlay.de>
7120 * config/avr/avr.cc (avr_fold_builtin) [AVR_BUILTIN_INSERT_BITS]:
7121 Don't fold to XOR / AND / XOR if just one bit is copied to the
7124 2023-05-21 Roger Sayle <roger@nextmovesoftware.com>
7126 * config/nvptx/nvptx.cc (nvptx_expand_brev): Expand target
7127 builtin for bit reversal using brev instruction.
7128 (enum nvptx_builtins): Add NVPTX_BUILTIN_BREV and
7129 NVPTX_BUILTIN_BREVLL.
7130 (nvptx_init_builtins): Define "brev" and "brevll".
7131 (nvptx_expand_builtin): Expand NVPTX_BUILTIN_BREV and
7132 NVPTX_BUILTIN_BREVLL via nvptx_expand_brev function.
7133 * doc/extend.texi (Nvidia PTX Builtin-in Functions): New
7134 section, document __builtin_nvptx_brev{,ll}.
7136 2023-05-21 Jakub Jelinek <jakub@redhat.com>
7138 PR tree-optimization/109505
7139 * match.pd ((x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2),
7140 Combine successive equal operations with constants,
7141 (A +- CST1) +- CST2 -> A + CST3, (CST1 - A) +- CST2 -> CST3 - A,
7142 CST1 - (CST2 - A) -> CST3 + A): Use ! on ops with 2 CONSTANT_CLASS_P
7145 2023-05-21 Andrew Pinski <apinski@marvell.com>
7147 * expr.cc (expand_single_bit_test): Correct bitpos for big-endian.
7149 2023-05-21 Pan Li <pan2.li@intel.com>
7151 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): Add the
7152 rest bool size, aka 2, 4, 8, 16, 32, 64.
7153 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
7154 Register vbool[2|4|8|16|32|64] interpret function.
7155 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_BOOL2_INTERPRET_OPS):
7156 New macro for vbool2_t.
7157 (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
7158 (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
7159 (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
7160 (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
7161 (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
7162 (vint8m1_t): Add the type to bool[2|4|8|16|32|64]_interpret_ops.
7163 (vint16m1_t): Likewise.
7164 (vint32m1_t): Likewise.
7165 (vint64m1_t): Likewise.
7166 (vuint8m1_t): Likewise.
7167 (vuint16m1_t): Likewise.
7168 (vuint32m1_t): Likewise.
7169 (vuint64m1_t): Likewise.
7170 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_BOOL2_INTERPRET_OPS):
7171 New macro for vbool2_t.
7172 (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
7173 (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
7174 (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
7175 (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
7176 (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
7177 (required_extensions_p): Add vbool[2|4|8|16|32|64] interpret case.
7178 * config/riscv/riscv-vector-builtins.def (bool2_interpret): Add
7179 vbool2_t interprect to base type.
7180 (bool4_interpret): Likewise.
7181 (bool8_interpret): Likewise.
7182 (bool16_interpret): Likewise.
7183 (bool32_interpret): Likewise.
7184 (bool64_interpret): Likewise.
7186 2023-05-21 Andrew Pinski <apinski@marvell.com>
7188 PR middle-end/109919
7189 * expr.cc (expand_single_bit_test): Don't use the
7190 target for expand_expr.
7192 2023-05-20 Gerald Pfeifer <gerald@pfeifer.com>
7194 * doc/install.texi (Specific): Remove de facto empty alpha*-*-*
7197 2023-05-20 Pan Li <pan2.li@intel.com>
7199 * mode-switching.cc (entity_map): Initialize the array to zero.
7202 2023-05-20 Triffid Hunter <triffid.hunter@gmail.com>
7205 * config/avr/avr.md (divmodpsi, udivmodpsi, divmodsi, udivmodsi):
7206 Remove superfluous "parallel" in insn pattern.
7207 ([u]divmod<mode>4): Tidy code. Use gcc_unreachable() instead of
7208 printing error text to assembly.
7210 2023-05-20 Andrew Pinski <apinski@marvell.com>
7212 * expr.cc (fold_single_bit_test): Rename to ...
7213 (expand_single_bit_test): This and expand directly.
7214 (do_store_flag): Update for the rename function.
7216 2023-05-20 Andrew Pinski <apinski@marvell.com>
7218 * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF
7219 instead of shift/and.
7221 2023-05-20 Andrew Pinski <apinski@marvell.com>
7223 * expr.cc (fold_single_bit_test): Add an assert
7224 and simplify based on code being NE_EXPR or EQ_EXPR.
7226 2023-05-20 Andrew Pinski <apinski@marvell.com>
7228 * expr.cc (fold_single_bit_test): Take inner and bitnum
7229 instead of arg0 and arg1. Update the code.
7230 (do_store_flag): Don't create a tree when calling
7231 fold_single_bit_test instead just call it with the bitnum
7234 2023-05-20 Andrew Pinski <apinski@marvell.com>
7236 * expr.cc (fold_single_bit_test): Use get_def_for_expr
7237 instead of checking the inner's code.
7239 2023-05-20 Andrew Pinski <apinski@marvell.com>
7241 * expr.cc (fold_single_bit_test_into_sign_test): Inline into ...
7242 (fold_single_bit_test): This and simplify.
7244 2023-05-20 Andrew Pinski <apinski@marvell.com>
7246 * fold-const.cc (fold_single_bit_test_into_sign_test): Move to
7248 (fold_single_bit_test): Likewise.
7249 * expr.cc (fold_single_bit_test_into_sign_test): Move from fold-const.cc
7250 (fold_single_bit_test): Likewise and make static.
7251 * fold-const.h (fold_single_bit_test): Remove declaration.
7253 2023-05-20 Die Li <lidie@eswincomputing.com>
7255 * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode
7258 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
7260 * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern.
7262 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
7265 * config/riscv/bitmanip.md
7266 (<bitmanip_optab>disi2): Match with any_extend.
7267 (<bitmanip_optab>disi2_sext): New pattern to match
7268 with sign extend using an ANDI instruction.
7270 2023-05-19 Nathan Sidwell <nathan@acm.org>
7273 * opts.h (handle_deferred_dump_options): Declare.
7274 * opts-global.cc (handle_common_deferred_options): Do not handle
7276 (handle_deferred_dump_options): New.
7277 * toplev.cc (toplev::main): Call it after plugin init.
7279 2023-05-19 Joern Rennecke <joern.rennecke@embecosm.com>
7281 * config/riscv/constraints.md (DsS, DsD): Restore agreement
7282 with shiftm1 mode attribute.
7284 2023-05-19 Andrew Pinski <apinski@marvell.com>
7287 * gcc.cc (default_compilers["@c-header"]): Add %w
7288 after the --output-pch.
7290 2023-05-19 Vineet Gupta <vineetg@rivosinc.com>
7292 * config/riscv/riscv.cc (riscv_split_integer): if loval is equal
7293 to hival, ASHIFT the corresponding regs.
7295 2023-05-19 Robin Dapp <rdapp@ventanamicro.com>
7297 * config/riscv/riscv.cc (riscv_const_insns): Remove else.
7299 2023-05-19 Jakub Jelinek <jakub@redhat.com>
7301 PR tree-optimization/105776
7302 * tree-ssa-math-opts.cc (arith_overflow_check_p): If cast_stmt is
7303 non-NULL, allow division statement to have a cast as single imm use
7304 rather than comparison/condition.
7305 (match_arith_overflow): In that case remove the cast stmt in addition
7306 to the division statement.
7308 2023-05-19 Jakub Jelinek <jakub@redhat.com>
7310 PR tree-optimization/101856
7311 * tree-ssa-math-opts.cc (match_arith_overflow): Pattern detect
7312 unsigned __builtin_mul_overflow_p even when umulv4_optab doesn't
7313 support it but umul_highpart_optab does.
7315 2023-05-19 Eric Botcazou <ebotcazou@adacore.com>
7317 * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead
7318 of tree_to_shwi on array indices. Minor tweaks.
7320 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
7322 * alias.cc (ref_all_alias_ptr_type_p): Use _P() defines from tree.h.
7323 * attribs.cc (diag_attr_exclusions): Ditto.
7324 (decl_attributes): Ditto.
7325 (build_type_attribute_qual_variant): Ditto.
7326 * builtins.cc (fold_builtin_carg): Ditto.
7327 (fold_builtin_next_arg): Ditto.
7328 (do_mpc_arg2): Ditto.
7329 * cfgexpand.cc (expand_return): Ditto.
7330 * cgraph.h (decl_in_symtab_p): Ditto.
7331 (symtab_node::get_create): Ditto.
7332 * dwarf2out.cc (base_type_die): Ditto.
7333 (implicit_ptr_descriptor): Ditto.
7334 (gen_array_type_die): Ditto.
7335 (gen_type_die_with_usage): Ditto.
7336 (optimize_location_into_implicit_ptr): Ditto.
7337 * expr.cc (do_store_flag): Ditto.
7338 * fold-const.cc (negate_expr_p): Ditto.
7339 (fold_negate_expr_1): Ditto.
7340 (fold_convert_const): Ditto.
7341 (fold_convert_loc): Ditto.
7342 (constant_boolean_node): Ditto.
7343 (fold_binary_op_with_conditional_arg): Ditto.
7344 (build_fold_addr_expr_with_type_loc): Ditto.
7345 (fold_comparison): Ditto.
7346 (fold_checksum_tree): Ditto.
7347 (tree_unary_nonnegative_warnv_p): Ditto.
7348 (integer_valued_real_unary_p): Ditto.
7349 (fold_read_from_constant_string): Ditto.
7350 * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text): Ditto.
7351 * gimple-expr.cc (useless_type_conversion_p): Ditto.
7352 (is_gimple_reg): Ditto.
7353 (is_gimple_asm_val): Ditto.
7354 (mark_addressable): Ditto.
7355 * gimple-expr.h (is_gimple_variable): Ditto.
7356 (virtual_operand_p): Ditto.
7357 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): Ditto.
7358 * gimplify.cc (gimplify_bind_expr): Ditto.
7359 (gimplify_return_expr): Ditto.
7360 (gimple_add_padding_init_for_auto_var): Ditto.
7361 (gimplify_addr_expr): Ditto.
7362 (omp_add_variable): Ditto.
7363 (omp_notice_variable): Ditto.
7364 (omp_get_base_pointer): Ditto.
7365 (omp_strip_components_and_deref): Ditto.
7366 (omp_strip_indirections): Ditto.
7367 (omp_accumulate_sibling_list): Ditto.
7368 (omp_build_struct_sibling_lists): Ditto.
7369 (gimplify_adjust_omp_clauses_1): Ditto.
7370 (gimplify_adjust_omp_clauses): Ditto.
7371 (gimplify_omp_for): Ditto.
7372 (goa_lhs_expr_p): Ditto.
7373 (gimplify_one_sizepos): Ditto.
7374 * graphite-scop-detection.cc (scop_detection::graphite_can_represent_scev): Ditto.
7375 * ipa-devirt.cc (odr_types_equivalent_p): Ditto.
7376 * ipa-prop.cc (ipa_set_jf_constant): Ditto.
7377 (propagate_controlled_uses): Ditto.
7378 * ipa-sra.cc (type_prevails_p): Ditto.
7379 (scan_expr_access): Ditto.
7380 * optabs-tree.cc (optab_for_tree_code): Ditto.
7381 * toplev.cc (wrapup_global_declaration_1): Ditto.
7382 * trans-mem.cc (transaction_invariant_address_p): Ditto.
7383 * tree-cfg.cc (verify_types_in_gimple_reference): Ditto.
7384 (verify_gimple_comparison): Ditto.
7385 (verify_gimple_assign_binary): Ditto.
7386 (verify_gimple_assign_single): Ditto.
7387 * tree-complex.cc (get_component_ssa_name): Ditto.
7388 * tree-emutls.cc (lower_emutls_2): Ditto.
7389 * tree-inline.cc (copy_tree_body_r): Ditto.
7390 (estimate_move_cost): Ditto.
7391 (copy_decl_for_dup_finish): Ditto.
7392 * tree-nested.cc (convert_nonlocal_omp_clauses): Ditto.
7393 (note_nonlocal_vla_type): Ditto.
7394 (convert_local_omp_clauses): Ditto.
7395 (remap_vla_decls): Ditto.
7396 (fixup_vla_decls): Ditto.
7397 * tree-parloops.cc (loop_has_vector_phi_nodes): Ditto.
7398 * tree-pretty-print.cc (print_declaration): Ditto.
7399 (print_call_name): Ditto.
7400 * tree-sra.cc (compare_access_positions): Ditto.
7401 * tree-ssa-alias.cc (compare_type_sizes): Ditto.
7402 * tree-ssa-ccp.cc (get_default_value): Ditto.
7403 * tree-ssa-coalesce.cc (populate_coalesce_list_for_outofssa): Ditto.
7404 * tree-ssa-dom.cc (reduce_vector_comparison_to_scalar_comparison): Ditto.
7405 * tree-ssa-forwprop.cc (can_propagate_from): Ditto.
7406 * tree-ssa-propagate.cc (may_propagate_copy): Ditto.
7407 * tree-ssa-sccvn.cc (fully_constant_vn_reference_p): Ditto.
7408 * tree-ssa-sink.cc (statement_sink_location): Ditto.
7409 * tree-ssa-structalias.cc (type_must_have_pointers): Ditto.
7410 * tree-ssa-ter.cc (find_replaceable_in_bb): Ditto.
7411 * tree-ssa-uninit.cc (warn_uninit): Ditto.
7412 * tree-ssa.cc (maybe_rewrite_mem_ref_base): Ditto.
7413 (non_rewritable_mem_ref_base): Ditto.
7414 * tree-streamer-in.cc (lto_input_ts_type_non_common_tree_pointers): Ditto.
7415 * tree-streamer-out.cc (write_ts_type_non_common_tree_pointers): Ditto.
7416 * tree-vect-generic.cc (do_binop): Ditto.
7418 * tree-vect-stmts.cc (vect_init_vector): Ditto.
7419 * tree-vector-builder.h (tree_vector_builder::note_representative): Ditto.
7420 * tree.cc (sign_mask_for): Ditto.
7421 (verify_type_variant): Ditto.
7422 (gimple_canonical_types_compatible_p): Ditto.
7423 (verify_type): Ditto.
7424 * ubsan.cc (get_ubsan_type_info_for_type): Ditto.
7425 * var-tracking.cc (prepare_call_arguments): Ditto.
7426 (vt_add_function_parameters): Ditto.
7427 * varasm.cc (decode_addr_const): Ditto.
7429 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
7431 * omp-low.cc (scan_sharing_clauses): Use _P() defines from tree.h.
7432 (lower_reduction_clauses): Ditto.
7433 (lower_send_clauses): Ditto.
7434 (lower_omp_task_reductions): Ditto.
7435 * omp-oacc-neuter-broadcast.cc (install_var_field): Ditto.
7436 (worker_single_copy): Ditto.
7437 * omp-offload.cc (oacc_rewrite_var_decl): Ditto.
7438 * omp-simd-clone.cc (plausible_type_for_simd_clone): Ditto.
7440 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
7442 * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from
7444 (lto_read_body_or_constructor): Ditto.
7445 * lto-streamer-out.cc (tree_is_indexable): Ditto.
7446 (lto_output_var_decl_ref): Ditto.
7447 (DFS::DFS_write_tree_body): Ditto.
7449 (write_symbol_extension_info): Ditto.
7451 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
7453 * config/aarch64/aarch64.cc (aarch64_short_vector_p): Use _P
7454 defines from tree.h.
7455 (aarch64_mangle_type): Ditto.
7456 * config/alpha/alpha.cc (alpha_in_small_data_p): Ditto.
7457 (alpha_gimplify_va_arg_1): Ditto.
7458 * config/arc/arc.cc (arc_encode_section_info): Ditto.
7459 (arc_is_aux_reg_p): Ditto.
7460 (arc_is_uncached_mem_p): Ditto.
7461 (arc_handle_aux_attribute): Ditto.
7462 * config/arm/arm.cc (arm_handle_isr_attribute): Ditto.
7463 (arm_handle_cmse_nonsecure_call): Ditto.
7464 (arm_set_default_type_attributes): Ditto.
7465 (arm_is_segment_info_known): Ditto.
7466 (arm_mangle_type): Ditto.
7467 * config/arm/unknown-elf.h (IN_NAMED_SECTION_P): Ditto.
7468 * config/avr/avr.cc (avr_lookup_function_attribute1): Ditto.
7469 (avr_decl_absdata_p): Ditto.
7470 (avr_insert_attributes): Ditto.
7471 (avr_section_type_flags): Ditto.
7472 (avr_encode_section_info): Ditto.
7473 * config/bfin/bfin.cc (bfin_handle_l2_attribute): Ditto.
7474 * config/bpf/bpf.cc (bpf_core_compute): Ditto.
7475 * config/c6x/c6x.cc (c6x_in_small_data_p): Ditto.
7476 * config/csky/csky.cc (csky_handle_isr_attribute): Ditto.
7477 (csky_mangle_type): Ditto.
7478 * config/darwin-c.cc (darwin_pragma_unused): Ditto.
7479 * config/darwin.cc (is_objc_metadata): Ditto.
7480 * config/epiphany/epiphany.cc (epiphany_function_ok_for_sibcall): Ditto.
7481 * config/epiphany/epiphany.h (ROUND_TYPE_ALIGN): Ditto.
7482 * config/frv/frv.cc (frv_emit_movsi): Ditto.
7483 * config/gcn/gcn-tree.cc (gcn_lockless_update): Ditto.
7484 * config/gcn/gcn.cc (gcn_asm_output_symbol_ref): Ditto.
7485 * config/h8300/h8300.cc (h8300_encode_section_info): Ditto.
7486 * config/i386/i386-expand.cc: Ditto.
7487 * config/i386/i386.cc (type_natural_mode): Ditto.
7488 (ix86_function_arg): Ditto.
7489 (ix86_data_alignment): Ditto.
7490 (ix86_local_alignment): Ditto.
7491 (ix86_simd_clone_compute_vecsize_and_simdlen): Ditto.
7492 * config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Ditto.
7493 (i386_pe_type_dllexport_p): Ditto.
7494 (i386_pe_adjust_class_at_definition): Ditto.
7495 * config/i386/winnt.cc (i386_pe_determine_dllimport_p): Ditto.
7496 (i386_pe_binds_local_p): Ditto.
7497 (i386_pe_section_type_flags): Ditto.
7498 * config/ia64/ia64.cc (ia64_encode_section_info): Ditto.
7499 (ia64_gimplify_va_arg): Ditto.
7500 (ia64_in_small_data_p): Ditto.
7501 * config/iq2000/iq2000.cc (iq2000_function_arg): Ditto.
7502 * config/lm32/lm32.cc (lm32_in_small_data_p): Ditto.
7503 * config/loongarch/loongarch.cc (loongarch_handle_model_attribute): Ditto.
7504 * config/m32c/m32c.cc (m32c_insert_attributes): Ditto.
7505 * config/mcore/mcore.cc (mcore_mark_dllimport): Ditto.
7506 (mcore_encode_section_info): Ditto.
7507 * config/microblaze/microblaze.cc (microblaze_elf_in_small_data_p): Ditto.
7508 * config/mips/mips.cc (mips_output_aligned_decl_common): Ditto.
7509 * config/mmix/mmix.cc (mmix_encode_section_info): Ditto.
7510 * config/nvptx/nvptx.cc (nvptx_encode_section_info): Ditto.
7511 (pass_in_memory): Ditto.
7512 (nvptx_generate_vector_shuffle): Ditto.
7513 (nvptx_lockless_update): Ditto.
7514 * config/pa/pa.cc (pa_function_arg_padding): Ditto.
7515 (pa_function_value): Ditto.
7516 (pa_function_arg): Ditto.
7517 * config/pa/pa.h (IN_NAMED_SECTION_P): Ditto.
7518 (TEXT_SPACE_P): Ditto.
7519 * config/pa/som.h (MAKE_DECL_ONE_ONLY): Ditto.
7520 * config/pdp11/pdp11.cc (pdp11_return_in_memory): Ditto.
7521 * config/riscv/riscv.cc (riscv_in_small_data_p): Ditto.
7522 (riscv_mangle_type): Ditto.
7523 * config/rl78/rl78.cc (rl78_insert_attributes): Ditto.
7524 (rl78_addsi3_internal): Ditto.
7525 * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Ditto.
7526 * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Ditto.
7527 * config/rs6000/freebsd64.h (ROUND_TYPE_ALIGN): Ditto.
7528 * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Ditto.
7529 * config/rs6000/rs6000-call.cc (rs6000_function_arg_boundary): Ditto.
7530 (rs6000_function_arg_advance_1): Ditto.
7531 (rs6000_function_arg): Ditto.
7532 (rs6000_pass_by_reference): Ditto.
7533 * config/rs6000/rs6000-logue.cc (rs6000_function_ok_for_sibcall): Ditto.
7534 * config/rs6000/rs6000.cc (rs6000_data_alignment): Ditto.
7535 (rs6000_set_default_type_attributes): Ditto.
7536 (rs6000_elf_in_small_data_p): Ditto.
7537 (IN_NAMED_SECTION): Ditto.
7538 (rs6000_xcoff_encode_section_info): Ditto.
7539 (rs6000_function_value): Ditto.
7540 (invalid_arg_for_unprototyped_fn): Ditto.
7541 * config/s390/s390-c.cc (s390_fn_types_compatible): Ditto.
7542 (s390_vec_n_elem): Ditto.
7543 * config/s390/s390.cc (s390_check_type_for_vector_abi): Ditto.
7544 (s390_function_arg_integer): Ditto.
7545 (s390_return_in_memory): Ditto.
7546 (s390_encode_section_info): Ditto.
7547 * config/sh/sh.cc (sh_gimplify_va_arg_expr): Ditto.
7548 (sh_function_value): Ditto.
7549 * config/sol2.cc (solaris_insert_attributes): Ditto.
7550 * config/sparc/sparc.cc (function_arg_slotno): Ditto.
7551 * config/sparc/sparc.h (ROUND_TYPE_ALIGN): Ditto.
7552 * config/stormy16/stormy16.cc (xstormy16_encode_section_info): Ditto.
7553 (xstormy16_handle_below100_attribute): Ditto.
7554 * config/v850/v850.cc (v850_encode_section_info): Ditto.
7555 (v850_insert_attributes): Ditto.
7556 * config/visium/visium.cc (visium_pass_by_reference): Ditto.
7557 (visium_return_in_memory): Ditto.
7558 * config/xtensa/xtensa.cc (xtensa_multibss_section_type_flags): Ditto.
7560 2023-05-18 Uros Bizjak <ubizjak@gmail.com>
7562 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial): New.
7563 (ix86_expand_vecop_qihi): Add op2vec bool variable.
7564 Do not set REG_EQUAL note.
7565 * config/i386/i386-protos.h (ix86_expand_vecop_qihi_partial):
7567 * config/i386/i386.cc (ix86_multiplication_cost): Handle
7568 V4QImode and V8QImode.
7569 * config/i386/mmx.md (mulv8qi3): New expander.
7571 * config/i386/sse.md (mulv8qi3): Remove.
7573 2023-05-18 Georg-Johann Lay <avr@gjlay.de>
7575 * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
7577 2023-05-18 Jonathan Wakely <jwakely@redhat.com>
7580 * config.gcc: Use = operator instead of ==.
7582 2023-05-18 Michael Bäuerle <micha@NetBSD.org>
7585 * config/nvptx/gen-opt.sh: Use = operator instead of ==.
7586 * configure.ac: Likewise.
7587 * configure: Regenerate.
7589 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
7591 * config/arm/arm_mve.h: (__ARM_mve_typeid): Add more pointer types.
7592 (__ARM_mve_coerce1): Remove.
7593 (__ARM_mve_coerce2): Remove.
7594 (__ARM_mve_coerce3): Remove.
7595 (__ARM_mve_coerce_i_scalar): New.
7596 (__ARM_mve_coerce_s8_ptr): New.
7597 (__ARM_mve_coerce_u8_ptr): New.
7598 (__ARM_mve_coerce_s16_ptr): New.
7599 (__ARM_mve_coerce_u16_ptr): New.
7600 (__ARM_mve_coerce_s32_ptr): New.
7601 (__ARM_mve_coerce_u32_ptr): New.
7602 (__ARM_mve_coerce_s64_ptr): New.
7603 (__ARM_mve_coerce_u64_ptr): New.
7604 (__ARM_mve_coerce_f_scalar): New.
7605 (__ARM_mve_coerce_f16_ptr): New.
7606 (__ARM_mve_coerce_f32_ptr): New.
7607 (__arm_vst4q): Change _coerce_ overloads.
7608 (__arm_vbicq): Change _coerce_ overloads.
7609 (__arm_vld1q): Change _coerce_ overloads.
7610 (__arm_vld1q_z): Change _coerce_ overloads.
7611 (__arm_vld2q): Change _coerce_ overloads.
7612 (__arm_vld4q): Change _coerce_ overloads.
7613 (__arm_vldrhq_gather_offset): Change _coerce_ overloads.
7614 (__arm_vldrhq_gather_offset_z): Change _coerce_ overloads.
7615 (__arm_vldrhq_gather_shifted_offset): Change _coerce_ overloads.
7616 (__arm_vldrhq_gather_shifted_offset_z): Change _coerce_ overloads.
7617 (__arm_vldrwq_gather_offset): Change _coerce_ overloads.
7618 (__arm_vldrwq_gather_offset_z): Change _coerce_ overloads.
7619 (__arm_vldrwq_gather_shifted_offset): Change _coerce_ overloads.
7620 (__arm_vldrwq_gather_shifted_offset_z): Change _coerce_ overloads.
7621 (__arm_vst1q_p): Change _coerce_ overloads.
7622 (__arm_vst2q): Change _coerce_ overloads.
7623 (__arm_vst1q): Change _coerce_ overloads.
7624 (__arm_vstrhq): Change _coerce_ overloads.
7625 (__arm_vstrhq_p): Change _coerce_ overloads.
7626 (__arm_vstrhq_scatter_offset_p): Change _coerce_ overloads.
7627 (__arm_vstrhq_scatter_offset): Change _coerce_ overloads.
7628 (__arm_vstrhq_scatter_shifted_offset_p): Change _coerce_ overloads.
7629 (__arm_vstrhq_scatter_shifted_offset): Change _coerce_ overloads.
7630 (__arm_vstrwq_p): Change _coerce_ overloads.
7631 (__arm_vstrwq): Change _coerce_ overloads.
7632 (__arm_vstrwq_scatter_offset): Change _coerce_ overloads.
7633 (__arm_vstrwq_scatter_offset_p): Change _coerce_ overloads.
7634 (__arm_vstrwq_scatter_shifted_offset): Change _coerce_ overloads.
7635 (__arm_vstrwq_scatter_shifted_offset_p): Change _coerce_ overloads.
7636 (__arm_vsetq_lane): Change _coerce_ overloads.
7637 (__arm_vldrbq_gather_offset): Change _coerce_ overloads.
7638 (__arm_vdwdupq_x_u8): Change _coerce_ overloads.
7639 (__arm_vdwdupq_x_u16): Change _coerce_ overloads.
7640 (__arm_vdwdupq_x_u32): Change _coerce_ overloads.
7641 (__arm_viwdupq_x_u8): Change _coerce_ overloads.
7642 (__arm_viwdupq_x_u16): Change _coerce_ overloads.
7643 (__arm_viwdupq_x_u32): Change _coerce_ overloads.
7644 (__arm_vidupq_x_u8): Change _coerce_ overloads.
7645 (__arm_vddupq_x_u8): Change _coerce_ overloads.
7646 (__arm_vidupq_x_u16): Change _coerce_ overloads.
7647 (__arm_vddupq_x_u16): Change _coerce_ overloads.
7648 (__arm_vidupq_x_u32): Change _coerce_ overloads.
7649 (__arm_vddupq_x_u32): Change _coerce_ overloads.
7650 (__arm_vldrdq_gather_offset): Change _coerce_ overloads.
7651 (__arm_vldrdq_gather_offset_z): Change _coerce_ overloads.
7652 (__arm_vldrdq_gather_shifted_offset): Change _coerce_ overloads.
7653 (__arm_vldrdq_gather_shifted_offset_z): Change _coerce_ overloads.
7654 (__arm_vldrbq_gather_offset_z): Change _coerce_ overloads.
7655 (__arm_vidupq_u16): Change _coerce_ overloads.
7656 (__arm_vidupq_u32): Change _coerce_ overloads.
7657 (__arm_vidupq_u8): Change _coerce_ overloads.
7658 (__arm_vddupq_u16): Change _coerce_ overloads.
7659 (__arm_vddupq_u32): Change _coerce_ overloads.
7660 (__arm_vddupq_u8): Change _coerce_ overloads.
7661 (__arm_viwdupq_m): Change _coerce_ overloads.
7662 (__arm_viwdupq_u16): Change _coerce_ overloads.
7663 (__arm_viwdupq_u32): Change _coerce_ overloads.
7664 (__arm_viwdupq_u8): Change _coerce_ overloads.
7665 (__arm_vdwdupq_m): Change _coerce_ overloads.
7666 (__arm_vdwdupq_u16): Change _coerce_ overloads.
7667 (__arm_vdwdupq_u32): Change _coerce_ overloads.
7668 (__arm_vdwdupq_u8): Change _coerce_ overloads.
7669 (__arm_vstrbq): Change _coerce_ overloads.
7670 (__arm_vstrbq_p): Change _coerce_ overloads.
7671 (__arm_vstrbq_scatter_offset_p): Change _coerce_ overloads.
7672 (__arm_vstrdq_scatter_offset_p): Change _coerce_ overloads.
7673 (__arm_vstrdq_scatter_offset): Change _coerce_ overloads.
7674 (__arm_vstrdq_scatter_shifted_offset_p): Change _coerce_ overloads.
7675 (__arm_vstrdq_scatter_shifted_offset): Change _coerce_ overloads.
7677 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
7679 * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
7682 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
7684 * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic.
7685 (__arm_vadcq_u32): Likewise.
7686 (__arm_vadcq_m_s32): Likewise.
7687 (__arm_vadcq_m_u32): Likewise.
7688 (__arm_vsbcq_s32): Likewise.
7689 (__arm_vsbcq_u32): Likewise.
7690 (__arm_vsbcq_m_s32): Likewise.
7691 (__arm_vsbcq_m_u32): Likewise.
7692 * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile.
7694 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
7696 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrev64q_f<mode>)
7697 (mve_vrev32q_fv8hf, mve_vcvttq_f32_f16v4sf)
7698 (mve_vcvtbq_f32_f16v4sf, mve_vcvtq_to_f_<supf><mode>)
7699 (mve_vrev64q_<supf><mode>, mve_vcvtq_from_f_<supf><mode>)
7700 (mve_vmovltq_<supf><mode>, mve_vmovlbq_<supf><mode>)
7701 (mve_vcvtpq_<supf><mode>, mve_vcvtnq_<supf><mode>)
7702 (mve_vcvtmq_<supf><mode>, mve_vcvtaq_<supf><mode>)
7703 (mve_vmvnq_n_<supf><mode>, mve_vrev16q_<supf>v16qi)
7704 (mve_vctp<MVE_vctp>q<MVE_vpred>, mve_vbrsrq_n_f<mode>)
7705 (mve_vbrsrq_n_<supf><mode>, mve_vandq_f<mode>, mve_vbicq_f<mode>)
7706 (mve_vctp<MVE_vctp>q_m<MVE_vpred>, mve_vcvtbq_f16_f32v8hf)
7707 (mve_vcvttq_f16_f32v8hf, mve_veorq_f<mode>)
7708 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
7709 (mve_vmlsldavxq_s<mode>, mve_vornq_f<mode>, mve_vorrq_f<mode>)
7710 (mve_vrmlaldavhxq_sv4si, mve_vcvtq_m_to_f_<supf><mode>)
7711 (mve_vshlcq_<supf><mode>, mve_vmvnq_m_<supf><mode>)
7712 (mve_vpselq_<supf><mode>, mve_vcvtbq_m_f16_f32v8hf)
7713 (mve_vcvtbq_m_f32_f16v4sf, mve_vcvttq_m_f16_f32v8hf)
7714 (mve_vcvttq_m_f32_f16v4sf, mve_vmlaldavq_p_<supf><mode>)
7715 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
7716 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>)
7717 (mve_vmvnq_m_n_<supf><mode>, mve_vorrq_m_n_<supf><mode>)
7718 (mve_vpselq_f<mode>, mve_vrev32q_m_fv8hf)
7719 (mve_vrev32q_m_<supf><mode>, mve_vrev64q_m_f<mode>)
7720 (mve_vrmlaldavhaxq_sv4si, mve_vrmlaldavhxq_p_sv4si)
7721 (mve_vrmlsldavhaxq_sv4si, mve_vrmlsldavhq_p_sv4si)
7722 (mve_vrmlsldavhxq_p_sv4si, mve_vrev16q_m_<supf>v16qi)
7723 (mve_vrmlaldavhq_p_<supf>v4si, mve_vrmlsldavhaq_sv4si)
7724 (mve_vandq_m_<supf><mode>, mve_vbicq_m_<supf><mode>)
7725 (mve_veorq_m_<supf><mode>, mve_vornq_m_<supf><mode>)
7726 (mve_vorrq_m_<supf><mode>, mve_vandq_m_f<mode>)
7727 (mve_vbicq_m_f<mode>, mve_veorq_m_f<mode>, mve_vornq_m_f<mode>)
7728 (mve_vorrq_m_f<mode>)
7729 (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn)
7730 (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn)
7731 (mve_vstrdq_scatter_base_wb_p_<supf>v2di) : Fix spacing and
7732 capitalization in the emitted asm.
7734 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
7736 * config/arm/constraints.md (mve_vldrd_immediate): Move it to
7738 (Ri): Move constraint definition from predicates.md.
7739 (Rl): Define new constraint.
7740 * config/arm/mve.md (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Add
7742 (mve_vstrwq_scatter_base_wb_p_fv4sf): Add missing Up constraint
7743 for op 1, use mve_vstrw_immediate predicate and Rl constraint for
7744 op 2. Fix asm output spacing.
7745 (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Add missing constraint.
7746 * config/arm/predicates.md (Ri) Move constraint to constraints.md
7747 (mve_vldrd_immediate): Move it from
7749 (mve_vstrw_immediate): New predicate.
7751 2023-05-18 Pan Li <pan2.li@intel.com>
7752 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
7753 Kito Cheng <kito.cheng@sifive.com>
7754 Richard Biener <rguenther@suse.de>
7755 Richard Sandiford <richard.sandiford@arm.com>
7757 * combine.cc (struct reg_stat_type): Extend machine_mode to 16 bits.
7758 * cse.cc (struct qty_table_elem): Extend machine_mode to 16 bits
7759 (struct table_elt): Extend machine_mode to 16 bits.
7760 (struct set): Ditto.
7761 * genmodes.cc (emit_mode_wider): Extend type from char to short.
7762 (emit_mode_complex): Ditto.
7763 (emit_mode_inner): Ditto.
7764 (emit_class_narrowest_mode): Ditto.
7765 * genopinit.cc (main): Extend the machine_mode limit.
7766 * ira-int.h (struct ira_allocno): Extend machine_mode to 16 bits and
7767 re-ordered the struct fields for padding.
7768 * machmode.h (MACHINE_MODE_BITSIZE): New macro.
7769 (GET_MODE_2XWIDER_MODE): Extend type from char to short.
7770 (get_mode_alignment): Extend type from char to short.
7771 * ree.cc (struct ext_modified): Extend machine_mode to 16 bits and
7772 removed the ATTRIBUTE_PACKED.
7773 * rtl-ssa/accesses.h: Extend machine_mode to 16 bits, narrow
7774 * rtl-ssa/internals.inl (rtl_ssa::access_info): Adjust the assignment.
7775 m_kind to 2 bits and remove m_spare.
7776 * rtl.h (RTX_CODE_BITSIZE): New macro.
7777 (struct rtx_def): Swap both the bit size and location between the
7778 rtx_code and the machine_mode.
7779 (subreg_shape::unique_id): Extend the machine_mode limit.
7780 * rtlanal.h: Extend machine_mode to 16 bits.
7781 * tree-core.h (struct tree_type_common): Extend machine_mode to 16
7782 bits and re-ordered the struct fields for padding.
7783 (struct tree_decl_common): Extend machine_mode to 16 bits.
7785 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
7787 * genrecog.cc (print_nonbool_test): Fix type error of
7788 switch (SUBREG_BYTE (op))'.
7790 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
7792 * common/config/riscv/riscv-common.cc: Remove
7793 trailing spaces on lines.
7794 * config/riscv/riscv.cc (riscv_legitimize_move): Likewise.
7795 * config/riscv/riscv.h (enum reg_class): Likewise.
7796 * config/riscv/riscv.md: Likewise.
7798 2023-05-17 John David Anglin <danglin@gcc.gnu.org>
7800 * config/pa/pa.md (clear_cache): New.
7802 2023-05-17 Arsen Arsenović <arsen@aarsen.me>
7804 * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
7805 parenthesis. Fix misnamed index entry.
7806 <concept>: Fix misnamed index entry.
7808 2023-05-17 Jivan Hakobyan <jivanhakobyan9@gmail.com>
7810 * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern,
7812 (*<optab>si3_mask, *<optab>di3_mask): Here.
7813 (*<optab>si3_mask_1, *<optab>di3_mask_1): And here.
7814 * config/riscv/bitmanip.md (*<bitmanip_optab><GPR:mode>3_mask): New
7816 (*<bitmanip_optab>si3_sext_mask): Likewise.
7817 * config/riscv/iterators.md (shiftm1): Use const_si_mask_operand
7818 and const_di_mask_operand.
7819 (bitmanip_rotate): New iterator.
7820 (bitmanip_optab): Add rotates.
7821 * config/riscv/predicates.md (const_si_mask_operand): Renamed
7822 from const31_operand. Generalize to handle more mask constants.
7823 (const_di_mask_operand): Similarly.
7825 2023-05-17 Jakub Jelinek <jakub@redhat.com>
7828 * config/i386/i386-builtin-types.def (FLOAT128): Use
7829 float128t_type_node rather than float128_type_node.
7831 2023-05-17 Alexander Monakov <amonakov@ispras.ru>
7833 * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
7834 FP_CONTRACT_FAST (no functional change).
7836 2023-05-17 Uros Bizjak <ubizjak@gmail.com>
7838 * config/i386/i386.cc (ix86_multiplication_cost): Correct
7839 calcuation of integer vector mode costs to reflect generated
7840 instruction sequences of different integer vector modes and
7841 different target ABIs.
7843 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7845 * config/riscv/riscv-opts.h (enum riscv_entity): New enum.
7846 * config/riscv/riscv.cc (riscv_emit_mode_set): New function.
7847 (riscv_mode_needed): Ditto.
7848 (riscv_mode_after): Ditto.
7849 (riscv_mode_entry): Ditto.
7850 (riscv_mode_exit): Ditto.
7851 (riscv_mode_priority): Ditto.
7852 (TARGET_MODE_EMIT): New target hook.
7853 (TARGET_MODE_NEEDED): Ditto.
7854 (TARGET_MODE_AFTER): Ditto.
7855 (TARGET_MODE_ENTRY): Ditto.
7856 (TARGET_MODE_EXIT): Ditto.
7857 (TARGET_MODE_PRIORITY): Ditto.
7858 * config/riscv/riscv.h (OPTIMIZE_MODE_SWITCHING): Ditto.
7859 (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
7860 * config/riscv/riscv.md: Add csrwvxrm.
7861 * config/riscv/vector.md (rnu,rne,rdn,rod,none): New attribute.
7862 (vxrmsi): New pattern.
7864 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7866 * config/riscv/riscv-vector-builtins-bases.cc: Introduce rounding mode.
7867 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
7868 (struct narrow_alu_def): Ditto.
7869 * config/riscv/riscv-vector-builtins.cc (function_builder::apply_predication): Ditto.
7870 (function_expander::use_exact_insn): Ditto.
7871 * config/riscv/riscv-vector-builtins.h (function_checker::arg_num): New function.
7872 (function_base::has_rounding_mode_operand_p): New function.
7874 2023-05-17 Andrew Pinski <apinski@marvell.com>
7876 * tree-ssa-forwprop.cc (simplify_builtin_call): Check
7877 against 0 instead of calling integer_zerop.
7879 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7881 * config/riscv/riscv-vector-builtins.cc (register_vxrm): New function.
7882 (DEF_RVV_VXRM_ENUM): New macro.
7883 (handle_pragma_vector): Add vxrm enum register.
7884 * config/riscv/riscv-vector-builtins.def (DEF_RVV_VXRM_ENUM): New macro.
7890 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
7892 * value-range.h (Value_Range::operator=): New.
7894 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
7896 * value-range.cc (vrange::operator=): Add a stub to copy
7898 * value-range.h (is_a <unsupported_range>): New.
7899 (Value_Range::operator=): Support copying unsupported ranges.
7901 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
7903 * data-streamer-in.cc (streamer_read_real_value): New.
7904 (streamer_read_value_range): New.
7905 * data-streamer-out.cc (streamer_write_real_value): New.
7906 (streamer_write_vrange): New.
7907 * data-streamer.h (streamer_write_vrange): New.
7908 (streamer_read_value_range): New.
7910 2023-05-17 Jonathan Wakely <jwakely@redhat.com>
7913 * doc/invoke.texi (Code Gen Options): Note that -fshort-enums
7914 is ignored for a fixed underlying type.
7915 (C++ Dialect Options): Likewise for -fstrict-enums.
7917 2023-05-17 Tobias Burnus <tobias@codesourcery.com>
7919 * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
7922 2023-05-17 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
7924 * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
7926 (s390_atomic_align_for_mode): New.
7928 2023-05-17 Jakub Jelinek <jakub@redhat.com>
7930 * wide-int.cc (wi::from_array): Add missing closing paren in function
7933 2023-05-17 Kewen Lin <linkw@linux.ibm.com>
7935 * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
7936 suggested unroll factor once the previous analysis fails.
7938 2023-05-17 Pan Li <pan2.li@intel.com>
7940 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New
7942 (main): Add bool1 to the type indexer.
7943 * config/riscv/riscv-vector-builtins-functions.def
7944 (vreinterpret): Register vbool1 interpret function.
7945 * config/riscv/riscv-vector-builtins-types.def
7946 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
7947 (vint8m1_t): Add the type to bool1_interpret_ops.
7948 (vint16m1_t): Ditto.
7949 (vint32m1_t): Ditto.
7950 (vint64m1_t): Ditto.
7951 (vuint8m1_t): Ditto.
7952 (vuint16m1_t): Ditto.
7953 (vuint32m1_t): Ditto.
7954 (vuint64m1_t): Ditto.
7955 * config/riscv/riscv-vector-builtins.cc
7956 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
7957 (required_extensions_p): Add bool1 interpret case.
7958 * config/riscv/riscv-vector-builtins.def
7959 (bool1_interpret): Add bool1 interpret to base type.
7960 * config/riscv/vector.md (@vreinterpret<mode>): Add new expand
7961 with VB dest for vreinterpret.
7963 2023-05-17 Jiufu Guo <guojiufu@linux.ibm.com>
7966 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
7967 constants through "lis; xoris".
7969 2023-05-16 Ajit Kumar Agarwal <aagarwa1@linux.ibm.com>
7971 * common/config/rs6000/rs6000-common.cc: Add REE pass as a
7972 default rs6000 target pass for O2 and above.
7973 * doc/invoke.texi: Document -free
7975 2023-05-16 Kito Cheng <kito.cheng@sifive.com>
7977 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
7978 Fix wrong select_kind...
7980 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
7982 * config/s390/s390-protos.h (s390_expand_setmem): Change
7984 * config/s390/s390.cc (s390_expand_setmem): For memset's less
7985 than or equal to 256 byte do not perform a libc call.
7986 * config/s390/s390.md: Change expander into a version which
7989 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
7991 * config/s390/s390-protos.h (s390_expand_movmem): New.
7992 * config/s390/s390.cc (s390_expand_movmem): New.
7993 * config/s390/s390.md (movmem<mode>): New.
7997 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
7999 * config/s390/s390-protos.h (s390_expand_cpymem): Change
8001 * config/s390/s390.cc (s390_expand_cpymem): For memcpy's less
8002 than or equal to 256 byte do not perform a libc call.
8003 (s390_expand_insv): Adapt new function signature of
8005 * config/s390/s390.md: Change expander into a version which
8008 2023-05-16 Andrew Pinski <apinski@marvell.com>
8010 PR tree-optimization/109424
8011 * match.pd: Add patterns for min/max of zero_one_valued
8014 2023-05-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8016 * config/riscv/riscv-protos.h (enum frm_field_enum): New enum.
8017 * config/riscv/riscv-vector-builtins.cc
8018 (function_expander::use_ternop_insn): Add default rounding mode.
8019 (function_expander::use_widen_ternop_insn): Ditto.
8020 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add FRM REGNUM.
8021 (riscv_hard_regno_mode_ok): Ditto.
8022 (riscv_conditional_register_usage): Ditto.
8023 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
8025 (RISCV_DWARF_FRM): Ditto.
8026 * config/riscv/riscv.md: Ditto.
8027 * config/riscv/vector-iterators.md: split no frm and has frm operations.
8028 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
8029 (@pred_<optab><mode>): Ditto.
8031 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
8033 PR tree-optimization/109695
8034 * value-range.cc (irange::operator=): Resize range.
8035 (irange::union_): Same.
8036 (irange::intersect): Same.
8037 (irange::invert): Same.
8038 (int_range_max): Default to 3 sub-ranges and resize as needed.
8039 * value-range.h (irange::maybe_resize): New.
8041 (int_range::int_range): Adjust for resizing.
8042 (int_range::operator=): Same.
8044 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
8046 * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary
8048 * value-range.cc (irange::union_nonzero_bits): Return TRUE only
8051 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8053 * config/riscv/riscv-protos.h (enum vxrm_field_enum): New enum.
8054 * config/riscv/riscv-vector-builtins.cc
8055 (function_expander::use_exact_insn): Add default rounding mode operand.
8056 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add VXRM_REGNUM.
8057 (riscv_hard_regno_mode_ok): Ditto.
8058 (riscv_conditional_register_usage): Ditto.
8059 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
8060 (VXRM_REG_P): Ditto.
8061 (RISCV_DWARF_VXRM): Ditto.
8062 * config/riscv/riscv.md: Ditto.
8063 * config/riscv/vector.md: Ditto
8065 2023-05-15 Pan Li <pan2.li@intel.com>
8067 * optabs.cc (maybe_gen_insn): Add case to generate instruction
8068 that has 11 operands.
8070 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8072 * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
8073 logic for vector modes.
8075 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8078 * config/aarch64/aarch64-simd.md (aarch64_cm<optab><mode>): Rename to...
8079 (aarch64_cm<optab><mode><vczle><vczbe>): ... This.
8080 (aarch64_cmtst<mode>): Rename to...
8081 (aarch64_cmtst<mode><vczle><vczbe>): ... This.
8082 (*aarch64_cmtst_same_<mode>): Rename to...
8083 (*aarch64_cmtst_same_<mode><vczle><vczbe>): ... This.
8084 (*aarch64_cmtstdi): Rename to...
8085 (*aarch64_cmtstdi<vczle><vczbe>): ... This.
8086 (aarch64_fac<optab><mode>): Rename to...
8087 (aarch64_fac<optab><mode><vczle><vczbe>): ... This.
8089 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8092 * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
8093 (aarch64_s<optab><mode><vczle><vczbe>): ... This.
8095 2023-05-15 Pan Li <pan2.li@intel.com>
8096 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8097 kito-cheng <kito.cheng@sifive.com>
8099 * config/riscv/riscv-v.cc (const_vlmax_p): New function for
8100 deciding the mode is constant or not.
8101 (set_len_and_policy): Optimize VLS-VLMAX code gen to vsetivli.
8103 2023-05-15 Richard Biener <rguenther@suse.de>
8105 PR tree-optimization/109848
8106 * tree-ssa-forwprop.cc (pass_forwprop::execute): Put the
8107 TARGET_MEM_REF address preparation before the store, not
8110 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8112 * config/riscv/riscv.cc
8113 (riscv_vectorize_preferred_vector_alignment): New function.
8114 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
8116 2023-05-14 Andrew Pinski <apinski@marvell.com>
8118 PR tree-optimization/109829
8119 * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
8121 2023-05-14 Uros Bizjak <ubizjak@gmail.com>
8124 * config/i386/i386.cc: Revert the 2023-05-11 change.
8125 (ix86_widen_mult_cost): Return high value instead of
8126 ICEing for unsupported modes.
8128 2023-05-14 Ard Biesheuvel <ardb@kernel.org>
8130 * config/i386/i386.cc (x86_function_profiler): Take
8131 ix86_direct_extern_access into account when generating calls
8134 2023-05-14 Pan Li <pan2.li@intel.com>
8136 * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
8137 Refactor the or pattern to switch cases.
8139 2023-05-13 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
8141 * config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Rename
8142 aarch64_expand_vector_init to this, and remove interleaving case.
8143 Recursively call aarch64_expand_vector_init_fallback, instead of
8144 aarch64_expand_vector_init.
8145 (aarch64_unzip_vector_init): New function.
8146 (aarch64_expand_vector_init): Likewise.
8148 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
8150 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
8151 Pull out function call from the gcc_assert.
8153 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
8155 * config/riscv/riscv-vsetvl.cc (vlmul_to_str): New.
8156 (policy_to_str): New.
8157 (vector_insn_info::dump): Use vlmul_to_str and policy_to_str.
8159 2023-05-13 Andrew Pinski <apinski@marvell.com>
8161 PR tree-optimization/109834
8162 * match.pd (popcount(bswap(x))->popcount(x)): Fix up unsigned type checking.
8163 (popcount(rotate(x,y))->popcount(x)): Likewise.
8165 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
8167 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also
8168 reject ymm instructions for TARGET_PREFER_AVX128. Use generic
8169 gen_extend_insn to generate zero/sign extension instructions.
8171 (ix86_expand_vecop_qihi): Initialize interleave functions
8172 for MULT code only. Fix comments.
8174 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
8177 * config/i386/mmx.md (mulv2si3): Remove expander.
8178 (mulv2si3): Rename insn pattern from *mulv2si.
8180 2023-05-12 Tobias Burnus <tobias@codesourcery.com>
8183 * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
8184 '!lto_stream_offload_p'.
8186 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
8187 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8190 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vsetvl_at_end): New.
8191 (local_avl_compatible_p): New.
8192 (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance local optimizations
8193 for LCM, rewrite as a backward algorithm.
8194 (pass_vsetvl::cleanup_insns): Use new local_eliminate_vsetvl_insn
8195 interface, handle a BB at once.
8197 2023-05-12 Richard Biener <rguenther@suse.de>
8199 PR tree-optimization/64731
8200 * tree-ssa-forwprop.cc (pass_forwprop::execute): Also
8201 handle TARGET_MEM_REF destinations of stores from vector
8204 2023-05-12 Richard Biener <rguenther@suse.de>
8206 PR tree-optimization/109791
8207 * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))):
8209 (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
8212 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8214 * config/arm/arm-mve-builtins-base.cc (vsriq): New.
8215 * config/arm/arm-mve-builtins-base.def (vsriq): New.
8216 * config/arm/arm-mve-builtins-base.h (vsriq): New.
8217 * config/arm/arm-mve-builtins.cc
8218 (function_instance::has_inactive_argument): Handle vsriq.
8219 * config/arm/arm_mve.h (vsriq): Remove.
8221 (vsriq_n_u8): Remove.
8222 (vsriq_n_s8): Remove.
8223 (vsriq_n_u16): Remove.
8224 (vsriq_n_s16): Remove.
8225 (vsriq_n_u32): Remove.
8226 (vsriq_n_s32): Remove.
8227 (vsriq_m_n_s8): Remove.
8228 (vsriq_m_n_u8): Remove.
8229 (vsriq_m_n_s16): Remove.
8230 (vsriq_m_n_u16): Remove.
8231 (vsriq_m_n_s32): Remove.
8232 (vsriq_m_n_u32): Remove.
8233 (__arm_vsriq_n_u8): Remove.
8234 (__arm_vsriq_n_s8): Remove.
8235 (__arm_vsriq_n_u16): Remove.
8236 (__arm_vsriq_n_s16): Remove.
8237 (__arm_vsriq_n_u32): Remove.
8238 (__arm_vsriq_n_s32): Remove.
8239 (__arm_vsriq_m_n_s8): Remove.
8240 (__arm_vsriq_m_n_u8): Remove.
8241 (__arm_vsriq_m_n_s16): Remove.
8242 (__arm_vsriq_m_n_u16): Remove.
8243 (__arm_vsriq_m_n_s32): Remove.
8244 (__arm_vsriq_m_n_u32): Remove.
8245 (__arm_vsriq): Remove.
8246 (__arm_vsriq_m): Remove.
8248 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8250 * config/arm/iterators.md (mve_insn): Add vsri.
8251 * config/arm/mve.md (mve_vsriq_n_<supf><mode>): Rename into ...
8252 (@mve_<mve_insn>q_n_<supf><mode>): .,. this.
8253 (mve_vsriq_m_n_<supf><mode>): Rename into ...
8254 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8256 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8258 * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
8259 * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
8261 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8263 * config/arm/arm-mve-builtins-base.cc (vsliq): New.
8264 * config/arm/arm-mve-builtins-base.def (vsliq): New.
8265 * config/arm/arm-mve-builtins-base.h (vsliq): New.
8266 * config/arm/arm-mve-builtins.cc
8267 (function_instance::has_inactive_argument): Handle vsliq.
8268 * config/arm/arm_mve.h (vsliq): Remove.
8270 (vsliq_n_u8): Remove.
8271 (vsliq_n_s8): Remove.
8272 (vsliq_n_u16): Remove.
8273 (vsliq_n_s16): Remove.
8274 (vsliq_n_u32): Remove.
8275 (vsliq_n_s32): Remove.
8276 (vsliq_m_n_s8): Remove.
8277 (vsliq_m_n_s32): Remove.
8278 (vsliq_m_n_s16): Remove.
8279 (vsliq_m_n_u8): Remove.
8280 (vsliq_m_n_u32): Remove.
8281 (vsliq_m_n_u16): Remove.
8282 (__arm_vsliq_n_u8): Remove.
8283 (__arm_vsliq_n_s8): Remove.
8284 (__arm_vsliq_n_u16): Remove.
8285 (__arm_vsliq_n_s16): Remove.
8286 (__arm_vsliq_n_u32): Remove.
8287 (__arm_vsliq_n_s32): Remove.
8288 (__arm_vsliq_m_n_s8): Remove.
8289 (__arm_vsliq_m_n_s32): Remove.
8290 (__arm_vsliq_m_n_s16): Remove.
8291 (__arm_vsliq_m_n_u8): Remove.
8292 (__arm_vsliq_m_n_u32): Remove.
8293 (__arm_vsliq_m_n_u16): Remove.
8294 (__arm_vsliq): Remove.
8295 (__arm_vsliq_m): Remove.
8297 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8299 * config/arm/iterators.md (mve_insn>): Add vsli.
8300 * config/arm/mve.md (mve_vsliq_n_<supf><mode>): Rename into ...
8301 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
8302 (mve_vsliq_m_n_<supf><mode>): Rename into ...
8303 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8305 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8307 * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
8308 * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
8310 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8312 * config/arm/arm-mve-builtins-base.cc (vpselq): New.
8313 * config/arm/arm-mve-builtins-base.def (vpselq): New.
8314 * config/arm/arm-mve-builtins-base.h (vpselq): New.
8315 * config/arm/arm_mve.h (vpselq): Remove.
8316 (vpselq_u8): Remove.
8317 (vpselq_s8): Remove.
8318 (vpselq_u16): Remove.
8319 (vpselq_s16): Remove.
8320 (vpselq_u32): Remove.
8321 (vpselq_s32): Remove.
8322 (vpselq_u64): Remove.
8323 (vpselq_s64): Remove.
8324 (vpselq_f16): Remove.
8325 (vpselq_f32): Remove.
8326 (__arm_vpselq_u8): Remove.
8327 (__arm_vpselq_s8): Remove.
8328 (__arm_vpselq_u16): Remove.
8329 (__arm_vpselq_s16): Remove.
8330 (__arm_vpselq_u32): Remove.
8331 (__arm_vpselq_s32): Remove.
8332 (__arm_vpselq_u64): Remove.
8333 (__arm_vpselq_s64): Remove.
8334 (__arm_vpselq_f16): Remove.
8335 (__arm_vpselq_f32): Remove.
8336 (__arm_vpselq): Remove.
8338 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8340 * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
8341 * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
8343 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8345 * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of
8347 * config/arm/iterators.md (MVE_VPSELQ_F): New.
8348 (mve_insn): Add vpsel.
8349 * config/arm/mve.md (@mve_vpselq_<supf><mode>): Rename into ...
8350 (@mve_<mve_insn>q_<supf><mode>): ... this.
8351 (@mve_vpselq_f<mode>): Rename into ...
8352 (@mve_<mve_insn>q_f<mode>): ... this.
8354 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8356 * config/arm/arm-mve-builtins-base.cc (vfmaq, vfmasq, vfmsq): New.
8357 * config/arm/arm-mve-builtins-base.def (vfmaq, vfmasq, vfmsq): New.
8358 * config/arm/arm-mve-builtins-base.h (vfmaq, vfmasq, vfmsq): New.
8359 * config/arm/arm-mve-builtins.cc
8360 (function_instance::has_inactive_argument): Handle vfmaq, vfmasq,
8362 * config/arm/arm_mve.h (vfmaq): Remove.
8368 (vfmaq_f16): Remove.
8369 (vfmaq_n_f16): Remove.
8370 (vfmasq_n_f16): Remove.
8371 (vfmsq_f16): Remove.
8372 (vfmaq_f32): Remove.
8373 (vfmaq_n_f32): Remove.
8374 (vfmasq_n_f32): Remove.
8375 (vfmsq_f32): Remove.
8376 (vfmaq_m_f32): Remove.
8377 (vfmaq_m_f16): Remove.
8378 (vfmaq_m_n_f32): Remove.
8379 (vfmaq_m_n_f16): Remove.
8380 (vfmasq_m_n_f32): Remove.
8381 (vfmasq_m_n_f16): Remove.
8382 (vfmsq_m_f32): Remove.
8383 (vfmsq_m_f16): Remove.
8384 (__arm_vfmaq_f16): Remove.
8385 (__arm_vfmaq_n_f16): Remove.
8386 (__arm_vfmasq_n_f16): Remove.
8387 (__arm_vfmsq_f16): Remove.
8388 (__arm_vfmaq_f32): Remove.
8389 (__arm_vfmaq_n_f32): Remove.
8390 (__arm_vfmasq_n_f32): Remove.
8391 (__arm_vfmsq_f32): Remove.
8392 (__arm_vfmaq_m_f32): Remove.
8393 (__arm_vfmaq_m_f16): Remove.
8394 (__arm_vfmaq_m_n_f32): Remove.
8395 (__arm_vfmaq_m_n_f16): Remove.
8396 (__arm_vfmasq_m_n_f32): Remove.
8397 (__arm_vfmasq_m_n_f16): Remove.
8398 (__arm_vfmsq_m_f32): Remove.
8399 (__arm_vfmsq_m_f16): Remove.
8400 (__arm_vfmaq): Remove.
8401 (__arm_vfmasq): Remove.
8402 (__arm_vfmsq): Remove.
8403 (__arm_vfmaq_m): Remove.
8404 (__arm_vfmasq_m): Remove.
8405 (__arm_vfmsq_m): Remove.
8407 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8409 * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_M_F,
8411 (MVE_FP_M_N_BINARY): Add VFMAQ_M_N_F, VFMASQ_M_N_F.
8412 (MVE_VFMxQ_F, MVE_VFMAxQ_N_F): New.
8413 (mve_insn): Add vfma, vfmas, vfms.
8414 * config/arm/mve.md (mve_vfmaq_f<mode>, mve_vfmsq_f<mode>): Merge
8416 (@mve_<mve_insn>q_f<mode>): ... this.
8417 (mve_vfmaq_n_f<mode>, mve_vfmasq_n_f<mode>): Merge into ...
8418 (@mve_<mve_insn>q_n_f<mode>): ... this.
8419 (mve_vfmaq_m_f<mode>, mve_vfmsq_m_f<mode>): Merge into
8420 @mve_<mve_insn>q_m_f<mode>.
8421 (mve_vfmaq_m_n_f<mode>, mve_vfmasq_m_n_f<mode>): Merge into
8422 @mve_<mve_insn>q_m_n_f<mode>.
8424 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8426 * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
8427 * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
8429 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8431 * config/arm/arm-mve-builtins-base.cc
8432 (FUNCTION_WITH_RTX_M_N_NO_F): New.
8434 * config/arm/arm-mve-builtins-base.def (vmvnq): New.
8435 * config/arm/arm-mve-builtins-base.h (vmvnq): New.
8436 * config/arm/arm_mve.h (vmvnq): Remove.
8440 (vmvnq_s16): Remove.
8441 (vmvnq_s32): Remove.
8442 (vmvnq_n_s16): Remove.
8443 (vmvnq_n_s32): Remove.
8445 (vmvnq_u16): Remove.
8446 (vmvnq_u32): Remove.
8447 (vmvnq_n_u16): Remove.
8448 (vmvnq_n_u32): Remove.
8449 (vmvnq_m_u8): Remove.
8450 (vmvnq_m_s8): Remove.
8451 (vmvnq_m_u16): Remove.
8452 (vmvnq_m_s16): Remove.
8453 (vmvnq_m_u32): Remove.
8454 (vmvnq_m_s32): Remove.
8455 (vmvnq_m_n_s16): Remove.
8456 (vmvnq_m_n_u16): Remove.
8457 (vmvnq_m_n_s32): Remove.
8458 (vmvnq_m_n_u32): Remove.
8459 (vmvnq_x_s8): Remove.
8460 (vmvnq_x_s16): Remove.
8461 (vmvnq_x_s32): Remove.
8462 (vmvnq_x_u8): Remove.
8463 (vmvnq_x_u16): Remove.
8464 (vmvnq_x_u32): Remove.
8465 (vmvnq_x_n_s16): Remove.
8466 (vmvnq_x_n_s32): Remove.
8467 (vmvnq_x_n_u16): Remove.
8468 (vmvnq_x_n_u32): Remove.
8469 (__arm_vmvnq_s8): Remove.
8470 (__arm_vmvnq_s16): Remove.
8471 (__arm_vmvnq_s32): Remove.
8472 (__arm_vmvnq_n_s16): Remove.
8473 (__arm_vmvnq_n_s32): Remove.
8474 (__arm_vmvnq_u8): Remove.
8475 (__arm_vmvnq_u16): Remove.
8476 (__arm_vmvnq_u32): Remove.
8477 (__arm_vmvnq_n_u16): Remove.
8478 (__arm_vmvnq_n_u32): Remove.
8479 (__arm_vmvnq_m_u8): Remove.
8480 (__arm_vmvnq_m_s8): Remove.
8481 (__arm_vmvnq_m_u16): Remove.
8482 (__arm_vmvnq_m_s16): Remove.
8483 (__arm_vmvnq_m_u32): Remove.
8484 (__arm_vmvnq_m_s32): Remove.
8485 (__arm_vmvnq_m_n_s16): Remove.
8486 (__arm_vmvnq_m_n_u16): Remove.
8487 (__arm_vmvnq_m_n_s32): Remove.
8488 (__arm_vmvnq_m_n_u32): Remove.
8489 (__arm_vmvnq_x_s8): Remove.
8490 (__arm_vmvnq_x_s16): Remove.
8491 (__arm_vmvnq_x_s32): Remove.
8492 (__arm_vmvnq_x_u8): Remove.
8493 (__arm_vmvnq_x_u16): Remove.
8494 (__arm_vmvnq_x_u32): Remove.
8495 (__arm_vmvnq_x_n_s16): Remove.
8496 (__arm_vmvnq_x_n_s32): Remove.
8497 (__arm_vmvnq_x_n_u16): Remove.
8498 (__arm_vmvnq_x_n_u32): Remove.
8499 (__arm_vmvnq): Remove.
8500 (__arm_vmvnq_m): Remove.
8501 (__arm_vmvnq_x): Remove.
8503 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8505 * config/arm/iterators.md (mve_insn): Add vmvn.
8506 * config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Rename into ...
8507 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
8508 (mve_vmvnq_m_<supf><mode>): Rename into ...
8509 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
8510 (mve_vmvnq_m_n_<supf><mode>): Rename into ...
8511 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8513 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8515 * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
8516 * config/arm/arm-mve-builtins-shapes.h (mvn): New.
8518 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8520 * config/arm/arm-mve-builtins-base.cc (vbrsrq): New.
8521 * config/arm/arm-mve-builtins-base.def (vbrsrq): New.
8522 * config/arm/arm-mve-builtins-base.h (vbrsrq): New.
8523 * config/arm/arm_mve.h (vbrsrq): Remove.
8526 (vbrsrq_n_f16): Remove.
8527 (vbrsrq_n_f32): Remove.
8528 (vbrsrq_n_u8): Remove.
8529 (vbrsrq_n_s8): Remove.
8530 (vbrsrq_n_u16): Remove.
8531 (vbrsrq_n_s16): Remove.
8532 (vbrsrq_n_u32): Remove.
8533 (vbrsrq_n_s32): Remove.
8534 (vbrsrq_m_n_s8): Remove.
8535 (vbrsrq_m_n_s32): Remove.
8536 (vbrsrq_m_n_s16): Remove.
8537 (vbrsrq_m_n_u8): Remove.
8538 (vbrsrq_m_n_u32): Remove.
8539 (vbrsrq_m_n_u16): Remove.
8540 (vbrsrq_m_n_f32): Remove.
8541 (vbrsrq_m_n_f16): Remove.
8542 (vbrsrq_x_n_s8): Remove.
8543 (vbrsrq_x_n_s16): Remove.
8544 (vbrsrq_x_n_s32): Remove.
8545 (vbrsrq_x_n_u8): Remove.
8546 (vbrsrq_x_n_u16): Remove.
8547 (vbrsrq_x_n_u32): Remove.
8548 (vbrsrq_x_n_f16): Remove.
8549 (vbrsrq_x_n_f32): Remove.
8550 (__arm_vbrsrq_n_u8): Remove.
8551 (__arm_vbrsrq_n_s8): Remove.
8552 (__arm_vbrsrq_n_u16): Remove.
8553 (__arm_vbrsrq_n_s16): Remove.
8554 (__arm_vbrsrq_n_u32): Remove.
8555 (__arm_vbrsrq_n_s32): Remove.
8556 (__arm_vbrsrq_m_n_s8): Remove.
8557 (__arm_vbrsrq_m_n_s32): Remove.
8558 (__arm_vbrsrq_m_n_s16): Remove.
8559 (__arm_vbrsrq_m_n_u8): Remove.
8560 (__arm_vbrsrq_m_n_u32): Remove.
8561 (__arm_vbrsrq_m_n_u16): Remove.
8562 (__arm_vbrsrq_x_n_s8): Remove.
8563 (__arm_vbrsrq_x_n_s16): Remove.
8564 (__arm_vbrsrq_x_n_s32): Remove.
8565 (__arm_vbrsrq_x_n_u8): Remove.
8566 (__arm_vbrsrq_x_n_u16): Remove.
8567 (__arm_vbrsrq_x_n_u32): Remove.
8568 (__arm_vbrsrq_n_f16): Remove.
8569 (__arm_vbrsrq_n_f32): Remove.
8570 (__arm_vbrsrq_m_n_f32): Remove.
8571 (__arm_vbrsrq_m_n_f16): Remove.
8572 (__arm_vbrsrq_x_n_f16): Remove.
8573 (__arm_vbrsrq_x_n_f32): Remove.
8574 (__arm_vbrsrq): Remove.
8575 (__arm_vbrsrq_m): Remove.
8576 (__arm_vbrsrq_x): Remove.
8578 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8580 * config/arm/iterators.md (MVE_VBRSR_M_N_FP, MVE_VBRSR_N_FP): New.
8581 (mve_insn): Add vbrsr.
8582 * config/arm/mve.md (mve_vbrsrq_n_f<mode>): Rename into ...
8583 (@mve_<mve_insn>q_n_f<mode>): ... this.
8584 (mve_vbrsrq_n_<supf><mode>): Rename into ...
8585 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
8586 (mve_vbrsrq_m_n_<supf><mode>): Rename into ...
8587 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8588 (mve_vbrsrq_m_n_f<mode>): Rename into ...
8589 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
8591 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8593 * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
8594 * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
8596 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8598 * config/arm/arm-mve-builtins-base.cc (vqshluq): New.
8599 * config/arm/arm-mve-builtins-base.def (vqshluq): New.
8600 * config/arm/arm-mve-builtins-base.h (vqshluq): New.
8601 * config/arm/arm_mve.h (vqshluq): Remove.
8602 (vqshluq_m): Remove.
8603 (vqshluq_n_s8): Remove.
8604 (vqshluq_n_s16): Remove.
8605 (vqshluq_n_s32): Remove.
8606 (vqshluq_m_n_s8): Remove.
8607 (vqshluq_m_n_s16): Remove.
8608 (vqshluq_m_n_s32): Remove.
8609 (__arm_vqshluq_n_s8): Remove.
8610 (__arm_vqshluq_n_s16): Remove.
8611 (__arm_vqshluq_n_s32): Remove.
8612 (__arm_vqshluq_m_n_s8): Remove.
8613 (__arm_vqshluq_m_n_s16): Remove.
8614 (__arm_vqshluq_m_n_s32): Remove.
8615 (__arm_vqshluq): Remove.
8616 (__arm_vqshluq_m): Remove.
8618 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8620 * config/arm/iterators.md (mve_insn): Add vqshlu.
8621 (supf): Add VQSHLUQ_M_N_S, VQSHLUQ_N_S.
8622 (VQSHLUQ_M_N, VQSHLUQ_N): New.
8623 * config/arm/mve.md (mve_vqshluq_n_s<mode>): Change name into ...
8624 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
8625 (mve_vqshluq_m_n_s<mode>): Change name into ...
8626 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8628 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8630 * config/arm/arm-mve-builtins-shapes.cc
8631 (binary_lshift_unsigned): New.
8632 * config/arm/arm-mve-builtins-shapes.h
8633 (binary_lshift_unsigned): New.
8635 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8637 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhaq)
8638 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
8639 * config/arm/arm-mve-builtins-base.def (vrmlaldavhaq)
8640 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
8641 * config/arm/arm-mve-builtins-base.h (vrmlaldavhaq)
8642 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
8643 * config/arm/arm-mve-builtins-functions.h: Handle vrmlaldavhaq,
8644 vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq.
8645 * config/arm/arm_mve.h (vrmlaldavhaq): Remove.
8646 (vrmlaldavhaxq): Remove.
8647 (vrmlsldavhaq): Remove.
8648 (vrmlsldavhaxq): Remove.
8649 (vrmlaldavhaq_p): Remove.
8650 (vrmlaldavhaxq_p): Remove.
8651 (vrmlsldavhaq_p): Remove.
8652 (vrmlsldavhaxq_p): Remove.
8653 (vrmlaldavhaq_s32): Remove.
8654 (vrmlaldavhaq_u32): Remove.
8655 (vrmlaldavhaxq_s32): Remove.
8656 (vrmlsldavhaq_s32): Remove.
8657 (vrmlsldavhaxq_s32): Remove.
8658 (vrmlaldavhaq_p_s32): Remove.
8659 (vrmlaldavhaq_p_u32): Remove.
8660 (vrmlaldavhaxq_p_s32): Remove.
8661 (vrmlsldavhaq_p_s32): Remove.
8662 (vrmlsldavhaxq_p_s32): Remove.
8663 (__arm_vrmlaldavhaq_s32): Remove.
8664 (__arm_vrmlaldavhaq_u32): Remove.
8665 (__arm_vrmlaldavhaxq_s32): Remove.
8666 (__arm_vrmlsldavhaq_s32): Remove.
8667 (__arm_vrmlsldavhaxq_s32): Remove.
8668 (__arm_vrmlaldavhaq_p_s32): Remove.
8669 (__arm_vrmlaldavhaq_p_u32): Remove.
8670 (__arm_vrmlaldavhaxq_p_s32): Remove.
8671 (__arm_vrmlsldavhaq_p_s32): Remove.
8672 (__arm_vrmlsldavhaxq_p_s32): Remove.
8673 (__arm_vrmlaldavhaq): Remove.
8674 (__arm_vrmlaldavhaxq): Remove.
8675 (__arm_vrmlsldavhaq): Remove.
8676 (__arm_vrmlsldavhaxq): Remove.
8677 (__arm_vrmlaldavhaq_p): Remove.
8678 (__arm_vrmlaldavhaxq_p): Remove.
8679 (__arm_vrmlsldavhaq_p): Remove.
8680 (__arm_vrmlsldavhaxq_p): Remove.
8682 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8684 * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ)
8685 (MVE_VRMLxLDAVHAxQ_P): New.
8686 (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha,
8688 (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
8689 VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S,
8691 * config/arm/mve.md (mve_vrmlaldavhaq_<supf>v4si)
8692 (mve_vrmlaldavhaxq_sv4si, mve_vrmlsldavhaxq_sv4si)
8693 (mve_vrmlsldavhaq_sv4si): Merge into ...
8694 (@mve_<mve_insn>q_<supf>v4si): ... this.
8695 (mve_vrmlaldavhaq_p_sv4si, mve_vrmlaldavhaq_p_uv4si)
8696 (mve_vrmlaldavhaxq_p_sv4si, mve_vrmlsldavhaq_p_sv4si)
8697 (mve_vrmlsldavhaxq_p_sv4si): Merge into ...
8698 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
8700 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8702 * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New.
8703 * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq):
8705 * config/arm/arm-mve-builtins-base.h (vqdmullbq, vqdmulltq): New.
8706 * config/arm/arm_mve.h (vqdmulltq): Remove.
8707 (vqdmullbq): Remove.
8708 (vqdmullbq_m): Remove.
8709 (vqdmulltq_m): Remove.
8710 (vqdmulltq_s16): Remove.
8711 (vqdmulltq_n_s16): Remove.
8712 (vqdmullbq_s16): Remove.
8713 (vqdmullbq_n_s16): Remove.
8714 (vqdmulltq_s32): Remove.
8715 (vqdmulltq_n_s32): Remove.
8716 (vqdmullbq_s32): Remove.
8717 (vqdmullbq_n_s32): Remove.
8718 (vqdmullbq_m_n_s32): Remove.
8719 (vqdmullbq_m_n_s16): Remove.
8720 (vqdmullbq_m_s32): Remove.
8721 (vqdmullbq_m_s16): Remove.
8722 (vqdmulltq_m_n_s32): Remove.
8723 (vqdmulltq_m_n_s16): Remove.
8724 (vqdmulltq_m_s32): Remove.
8725 (vqdmulltq_m_s16): Remove.
8726 (__arm_vqdmulltq_s16): Remove.
8727 (__arm_vqdmulltq_n_s16): Remove.
8728 (__arm_vqdmullbq_s16): Remove.
8729 (__arm_vqdmullbq_n_s16): Remove.
8730 (__arm_vqdmulltq_s32): Remove.
8731 (__arm_vqdmulltq_n_s32): Remove.
8732 (__arm_vqdmullbq_s32): Remove.
8733 (__arm_vqdmullbq_n_s32): Remove.
8734 (__arm_vqdmullbq_m_n_s32): Remove.
8735 (__arm_vqdmullbq_m_n_s16): Remove.
8736 (__arm_vqdmullbq_m_s32): Remove.
8737 (__arm_vqdmullbq_m_s16): Remove.
8738 (__arm_vqdmulltq_m_n_s32): Remove.
8739 (__arm_vqdmulltq_m_n_s16): Remove.
8740 (__arm_vqdmulltq_m_s32): Remove.
8741 (__arm_vqdmulltq_m_s16): Remove.
8742 (__arm_vqdmulltq): Remove.
8743 (__arm_vqdmullbq): Remove.
8744 (__arm_vqdmullbq_m): Remove.
8745 (__arm_vqdmulltq_m): Remove.
8747 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8749 * config/arm/iterators.md (MVE_VQDMULLxQ, MVE_VQDMULLxQ_M)
8750 (MVE_VQDMULLxQ_M_N, MVE_VQDMULLxQ_N): New.
8751 (mve_insn): Add vqdmullb, vqdmullt.
8752 (supf): Add VQDMULLBQ_S, VQDMULLBQ_M_S, VQDMULLBQ_M_N_S,
8753 VQDMULLBQ_N_S, VQDMULLTQ_S, VQDMULLTQ_M_S, VQDMULLTQ_M_N_S,
8755 * config/arm/mve.md (mve_vqdmullbq_n_s<mode>)
8756 (mve_vqdmulltq_n_s<mode>): Merge into ...
8757 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
8758 (mve_vqdmullbq_s<mode>, mve_vqdmulltq_s<mode>): Merge into ...
8759 (@mve_<mve_insn>q_<supf><mode>): ... this.
8760 (mve_vqdmullbq_m_n_s<mode>, mve_vqdmulltq_m_n_s<mode>): Merge into
8762 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
8763 (mve_vqdmullbq_m_s<mode>, mve_vqdmulltq_m_s<mode>): Merge into ...
8764 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
8766 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
8768 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_opt_n): New.
8769 * config/arm/arm-mve-builtins-shapes.h (binary_widen_opt_n): New.
8771 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
8773 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi):
8774 Drop unused parameter.
8775 (riscv_select_multilib): Ditto.
8776 (riscv_compute_multilib): Update call site of
8777 riscv_select_multilib_by_abi and riscv_select_multilib_by_abi.
8779 2023-05-12 Juzhe Zhong <juzhe.zhong@rivai.ai>
8781 * config/riscv/autovec.md (vec_init<mode><vel>): New pattern.
8782 * config/riscv/riscv-protos.h (expand_vec_init): New function.
8783 * config/riscv/riscv-v.cc (class rvv_builder): New class.
8784 (rvv_builder::can_duplicate_repeating_sequence_p): New function.
8785 (rvv_builder::get_merged_repeating_sequence): Ditto.
8786 (expand_vector_init_insert_elems): Ditto.
8787 (expand_vec_init): Ditto.
8788 * config/riscv/vector-iterators.md: New attribute.
8790 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
8792 * config/rs6000/rs6000-builtins.def
8793 (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp
8795 (__builtin_vsx_scalar_insert_exp_dp): Replace bif-pattern from
8796 xsiexpdpf to xsiexpdpf_di.
8797 * config/rs6000/vsx.md (xsiexpdp): Rename to...
8798 (xsiexpdp_<mode>): ..., set the mode of second operand to GPR and
8799 replace TARGET_64BIT with TARGET_POWERPC64.
8800 (xsiexpdpf): Rename to...
8801 (xsiexpdpf_<mode>): ..., set the mode of second operand to GPR and
8802 replace TARGET_64BIT with TARGET_POWERPC64.
8804 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
8806 * config/rs6000/rs6000-builtins.def
8807 (__builtin_vsx_scalar_extract_sig): Set return type to const signed
8809 * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
8812 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
8814 * config/rs6000/rs6000-builtins.def
8815 (__builtin_vsx_scalar_extract_exp): Set return type to const signed
8816 int and set its bif-pattern to xsxexpdp_si, move it from power9-64
8818 * config/rs6000/vsx.md (xsxexpdp): Rename to ...
8819 (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
8821 * doc/extend.texi (scalar_extract_exp): Remove 64-bit environment
8822 requirement when it has a 64-bit argument.
8824 2023-05-12 Pan Li <pan2.li@intel.com>
8825 Richard Sandiford <richard.sandiford@arm.com>
8826 Richard Biener <rguenther@suse.de>
8827 Jakub Jelinek <jakub@redhat.com>
8829 * mux-utils.h: Add overload operator == and != for pointer_mux.
8830 * var-tracking.cc: Included mux-utils.h for pointer_tmux.
8831 (decl_or_value): Changed from void * to pointer_mux<tree_node, rtx_def>.
8832 (dv_is_decl_p): Reconciled to the new type, aka pointer_mux.
8833 (dv_as_decl): Ditto.
8834 (dv_as_opaque): Removed due to unnecessary.
8835 (struct variable_hasher): Take decl_or_value as compare_type.
8836 (variable_hasher::equal): Diito.
8837 (dv_from_decl): Reconciled to the new type, aka pointer_mux.
8838 (dv_from_value): Ditto.
8839 (attrs_list_member): Ditto.
8841 (var_reg_decl_set): Ditto.
8842 (var_reg_delete_and_set): Ditto.
8843 (find_loc_in_1pdv): Ditto.
8844 (canonicalize_values_star): Ditto.
8845 (variable_post_merge_new_vals): Ditto.
8846 (dump_onepart_variable_differences): Ditto.
8847 (variable_different_p): Ditto.
8848 (set_slot_part): Ditto.
8849 (clobber_slot_part): Ditto.
8850 (clobber_variable_part): Ditto.
8852 2023-05-11 mtsamis <manolis.tsamis@vrull.eu>
8854 * match.pd: simplify vector shift + bit_and + multiply.
8856 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
8858 * config/arm/arm-mve-builtins-base.cc (vmlaq, vmlasq, vqdmlahq)
8859 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
8860 * config/arm/arm-mve-builtins-base.def (vmlaq, vmlasq, vqdmlahq)
8861 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
8862 * config/arm/arm-mve-builtins-base.h (vmlaq, vmlasq, vqdmlahq)
8863 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
8864 * config/arm/arm-mve-builtins.cc
8865 (function_instance::has_inactive_argument): Handle vmlaq, vmlasq,
8866 vqdmlahq, vqdmlashq, vqrdmlahq, vqrdmlashq.
8867 * config/arm/arm_mve.h (vqrdmlashq): Remove.
8868 (vqrdmlahq): Remove.
8869 (vqdmlashq): Remove.
8875 (vqdmlashq_m): Remove.
8876 (vqdmlahq_m): Remove.
8877 (vqrdmlahq_m): Remove.
8878 (vqrdmlashq_m): Remove.
8879 (vmlasq_n_u8): Remove.
8880 (vmlaq_n_u8): Remove.
8881 (vqrdmlashq_n_s8): Remove.
8882 (vqrdmlahq_n_s8): Remove.
8883 (vqdmlahq_n_s8): Remove.
8884 (vqdmlashq_n_s8): Remove.
8885 (vmlasq_n_s8): Remove.
8886 (vmlaq_n_s8): Remove.
8887 (vmlasq_n_u16): Remove.
8888 (vmlaq_n_u16): Remove.
8889 (vqrdmlashq_n_s16): Remove.
8890 (vqrdmlahq_n_s16): Remove.
8891 (vqdmlashq_n_s16): Remove.
8892 (vqdmlahq_n_s16): Remove.
8893 (vmlasq_n_s16): Remove.
8894 (vmlaq_n_s16): Remove.
8895 (vmlasq_n_u32): Remove.
8896 (vmlaq_n_u32): Remove.
8897 (vqrdmlashq_n_s32): Remove.
8898 (vqrdmlahq_n_s32): Remove.
8899 (vqdmlashq_n_s32): Remove.
8900 (vqdmlahq_n_s32): Remove.
8901 (vmlasq_n_s32): Remove.
8902 (vmlaq_n_s32): Remove.
8903 (vmlaq_m_n_s8): Remove.
8904 (vmlaq_m_n_s32): Remove.
8905 (vmlaq_m_n_s16): Remove.
8906 (vmlaq_m_n_u8): Remove.
8907 (vmlaq_m_n_u32): Remove.
8908 (vmlaq_m_n_u16): Remove.
8909 (vmlasq_m_n_s8): Remove.
8910 (vmlasq_m_n_s32): Remove.
8911 (vmlasq_m_n_s16): Remove.
8912 (vmlasq_m_n_u8): Remove.
8913 (vmlasq_m_n_u32): Remove.
8914 (vmlasq_m_n_u16): Remove.
8915 (vqdmlashq_m_n_s8): Remove.
8916 (vqdmlashq_m_n_s32): Remove.
8917 (vqdmlashq_m_n_s16): Remove.
8918 (vqdmlahq_m_n_s8): Remove.
8919 (vqdmlahq_m_n_s32): Remove.
8920 (vqdmlahq_m_n_s16): Remove.
8921 (vqrdmlahq_m_n_s8): Remove.
8922 (vqrdmlahq_m_n_s32): Remove.
8923 (vqrdmlahq_m_n_s16): Remove.
8924 (vqrdmlashq_m_n_s8): Remove.
8925 (vqrdmlashq_m_n_s32): Remove.
8926 (vqrdmlashq_m_n_s16): Remove.
8927 (__arm_vmlasq_n_u8): Remove.
8928 (__arm_vmlaq_n_u8): Remove.
8929 (__arm_vqrdmlashq_n_s8): Remove.
8930 (__arm_vqdmlashq_n_s8): Remove.
8931 (__arm_vqrdmlahq_n_s8): Remove.
8932 (__arm_vqdmlahq_n_s8): Remove.
8933 (__arm_vmlasq_n_s8): Remove.
8934 (__arm_vmlaq_n_s8): Remove.
8935 (__arm_vmlasq_n_u16): Remove.
8936 (__arm_vmlaq_n_u16): Remove.
8937 (__arm_vqrdmlashq_n_s16): Remove.
8938 (__arm_vqdmlashq_n_s16): Remove.
8939 (__arm_vqrdmlahq_n_s16): Remove.
8940 (__arm_vqdmlahq_n_s16): Remove.
8941 (__arm_vmlasq_n_s16): Remove.
8942 (__arm_vmlaq_n_s16): Remove.
8943 (__arm_vmlasq_n_u32): Remove.
8944 (__arm_vmlaq_n_u32): Remove.
8945 (__arm_vqrdmlashq_n_s32): Remove.
8946 (__arm_vqdmlashq_n_s32): Remove.
8947 (__arm_vqrdmlahq_n_s32): Remove.
8948 (__arm_vqdmlahq_n_s32): Remove.
8949 (__arm_vmlasq_n_s32): Remove.
8950 (__arm_vmlaq_n_s32): Remove.
8951 (__arm_vmlaq_m_n_s8): Remove.
8952 (__arm_vmlaq_m_n_s32): Remove.
8953 (__arm_vmlaq_m_n_s16): Remove.
8954 (__arm_vmlaq_m_n_u8): Remove.
8955 (__arm_vmlaq_m_n_u32): Remove.
8956 (__arm_vmlaq_m_n_u16): Remove.
8957 (__arm_vmlasq_m_n_s8): Remove.
8958 (__arm_vmlasq_m_n_s32): Remove.
8959 (__arm_vmlasq_m_n_s16): Remove.
8960 (__arm_vmlasq_m_n_u8): Remove.
8961 (__arm_vmlasq_m_n_u32): Remove.
8962 (__arm_vmlasq_m_n_u16): Remove.
8963 (__arm_vqdmlahq_m_n_s8): Remove.
8964 (__arm_vqdmlahq_m_n_s32): Remove.
8965 (__arm_vqdmlahq_m_n_s16): Remove.
8966 (__arm_vqrdmlahq_m_n_s8): Remove.
8967 (__arm_vqrdmlahq_m_n_s32): Remove.
8968 (__arm_vqrdmlahq_m_n_s16): Remove.
8969 (__arm_vqrdmlashq_m_n_s8): Remove.
8970 (__arm_vqrdmlashq_m_n_s32): Remove.
8971 (__arm_vqrdmlashq_m_n_s16): Remove.
8972 (__arm_vqdmlashq_m_n_s8): Remove.
8973 (__arm_vqdmlashq_m_n_s16): Remove.
8974 (__arm_vqdmlashq_m_n_s32): Remove.
8975 (__arm_vmlasq): Remove.
8976 (__arm_vmlaq): Remove.
8977 (__arm_vqrdmlashq): Remove.
8978 (__arm_vqdmlashq): Remove.
8979 (__arm_vqrdmlahq): Remove.
8980 (__arm_vqdmlahq): Remove.
8981 (__arm_vmlaq_m): Remove.
8982 (__arm_vmlasq_m): Remove.
8983 (__arm_vqdmlahq_m): Remove.
8984 (__arm_vqrdmlahq_m): Remove.
8985 (__arm_vqrdmlashq_m): Remove.
8986 (__arm_vqdmlashq_m): Remove.
8988 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
8990 * config/arm/iterators.md (MVE_VMLxQ_N): New.
8991 (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah,
8993 (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S,
8995 * config/arm/mve.md (mve_vmlaq_n_<supf><mode>)
8996 (mve_vmlasq_n_<supf><mode>, mve_vqdmlahq_n_<supf><mode>)
8997 (mve_vqdmlashq_n_<supf><mode>, mve_vqrdmlahq_n_<supf><mode>)
8998 (mve_vqrdmlashq_n_<supf><mode>): Merge into ...
8999 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
9001 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9003 * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
9004 * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
9006 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9008 * config/arm/arm-mve-builtins-base.cc (vqdmladhq, vqdmladhxq)
9009 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
9011 * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
9012 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
9014 * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
9015 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
9017 * config/arm/arm-mve-builtins.cc
9018 (function_instance::has_inactive_argument): Handle vqrdmladhq,
9019 vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq vqdmladhq, vqdmladhxq,
9020 vqdmlsdhq, vqdmlsdhxq.
9021 * config/arm/arm_mve.h (vqrdmlsdhxq): Remove.
9022 (vqrdmlsdhq): Remove.
9023 (vqrdmladhxq): Remove.
9024 (vqrdmladhq): Remove.
9025 (vqdmlsdhxq): Remove.
9026 (vqdmlsdhq): Remove.
9027 (vqdmladhxq): Remove.
9028 (vqdmladhq): Remove.
9029 (vqdmladhq_m): Remove.
9030 (vqdmladhxq_m): Remove.
9031 (vqdmlsdhq_m): Remove.
9032 (vqdmlsdhxq_m): Remove.
9033 (vqrdmladhq_m): Remove.
9034 (vqrdmladhxq_m): Remove.
9035 (vqrdmlsdhq_m): Remove.
9036 (vqrdmlsdhxq_m): Remove.
9037 (vqrdmlsdhxq_s8): Remove.
9038 (vqrdmlsdhq_s8): Remove.
9039 (vqrdmladhxq_s8): Remove.
9040 (vqrdmladhq_s8): Remove.
9041 (vqdmlsdhxq_s8): Remove.
9042 (vqdmlsdhq_s8): Remove.
9043 (vqdmladhxq_s8): Remove.
9044 (vqdmladhq_s8): Remove.
9045 (vqrdmlsdhxq_s16): Remove.
9046 (vqrdmlsdhq_s16): Remove.
9047 (vqrdmladhxq_s16): Remove.
9048 (vqrdmladhq_s16): Remove.
9049 (vqdmlsdhxq_s16): Remove.
9050 (vqdmlsdhq_s16): Remove.
9051 (vqdmladhxq_s16): Remove.
9052 (vqdmladhq_s16): Remove.
9053 (vqrdmlsdhxq_s32): Remove.
9054 (vqrdmlsdhq_s32): Remove.
9055 (vqrdmladhxq_s32): Remove.
9056 (vqrdmladhq_s32): Remove.
9057 (vqdmlsdhxq_s32): Remove.
9058 (vqdmlsdhq_s32): Remove.
9059 (vqdmladhxq_s32): Remove.
9060 (vqdmladhq_s32): Remove.
9061 (vqdmladhq_m_s8): Remove.
9062 (vqdmladhq_m_s32): Remove.
9063 (vqdmladhq_m_s16): Remove.
9064 (vqdmladhxq_m_s8): Remove.
9065 (vqdmladhxq_m_s32): Remove.
9066 (vqdmladhxq_m_s16): Remove.
9067 (vqdmlsdhq_m_s8): Remove.
9068 (vqdmlsdhq_m_s32): Remove.
9069 (vqdmlsdhq_m_s16): Remove.
9070 (vqdmlsdhxq_m_s8): Remove.
9071 (vqdmlsdhxq_m_s32): Remove.
9072 (vqdmlsdhxq_m_s16): Remove.
9073 (vqrdmladhq_m_s8): Remove.
9074 (vqrdmladhq_m_s32): Remove.
9075 (vqrdmladhq_m_s16): Remove.
9076 (vqrdmladhxq_m_s8): Remove.
9077 (vqrdmladhxq_m_s32): Remove.
9078 (vqrdmladhxq_m_s16): Remove.
9079 (vqrdmlsdhq_m_s8): Remove.
9080 (vqrdmlsdhq_m_s32): Remove.
9081 (vqrdmlsdhq_m_s16): Remove.
9082 (vqrdmlsdhxq_m_s8): Remove.
9083 (vqrdmlsdhxq_m_s32): Remove.
9084 (vqrdmlsdhxq_m_s16): Remove.
9085 (__arm_vqrdmlsdhxq_s8): Remove.
9086 (__arm_vqrdmlsdhq_s8): Remove.
9087 (__arm_vqrdmladhxq_s8): Remove.
9088 (__arm_vqrdmladhq_s8): Remove.
9089 (__arm_vqdmlsdhxq_s8): Remove.
9090 (__arm_vqdmlsdhq_s8): Remove.
9091 (__arm_vqdmladhxq_s8): Remove.
9092 (__arm_vqdmladhq_s8): Remove.
9093 (__arm_vqrdmlsdhxq_s16): Remove.
9094 (__arm_vqrdmlsdhq_s16): Remove.
9095 (__arm_vqrdmladhxq_s16): Remove.
9096 (__arm_vqrdmladhq_s16): Remove.
9097 (__arm_vqdmlsdhxq_s16): Remove.
9098 (__arm_vqdmlsdhq_s16): Remove.
9099 (__arm_vqdmladhxq_s16): Remove.
9100 (__arm_vqdmladhq_s16): Remove.
9101 (__arm_vqrdmlsdhxq_s32): Remove.
9102 (__arm_vqrdmlsdhq_s32): Remove.
9103 (__arm_vqrdmladhxq_s32): Remove.
9104 (__arm_vqrdmladhq_s32): Remove.
9105 (__arm_vqdmlsdhxq_s32): Remove.
9106 (__arm_vqdmlsdhq_s32): Remove.
9107 (__arm_vqdmladhxq_s32): Remove.
9108 (__arm_vqdmladhq_s32): Remove.
9109 (__arm_vqdmladhq_m_s8): Remove.
9110 (__arm_vqdmladhq_m_s32): Remove.
9111 (__arm_vqdmladhq_m_s16): Remove.
9112 (__arm_vqdmladhxq_m_s8): Remove.
9113 (__arm_vqdmladhxq_m_s32): Remove.
9114 (__arm_vqdmladhxq_m_s16): Remove.
9115 (__arm_vqdmlsdhq_m_s8): Remove.
9116 (__arm_vqdmlsdhq_m_s32): Remove.
9117 (__arm_vqdmlsdhq_m_s16): Remove.
9118 (__arm_vqdmlsdhxq_m_s8): Remove.
9119 (__arm_vqdmlsdhxq_m_s32): Remove.
9120 (__arm_vqdmlsdhxq_m_s16): Remove.
9121 (__arm_vqrdmladhq_m_s8): Remove.
9122 (__arm_vqrdmladhq_m_s32): Remove.
9123 (__arm_vqrdmladhq_m_s16): Remove.
9124 (__arm_vqrdmladhxq_m_s8): Remove.
9125 (__arm_vqrdmladhxq_m_s32): Remove.
9126 (__arm_vqrdmladhxq_m_s16): Remove.
9127 (__arm_vqrdmlsdhq_m_s8): Remove.
9128 (__arm_vqrdmlsdhq_m_s32): Remove.
9129 (__arm_vqrdmlsdhq_m_s16): Remove.
9130 (__arm_vqrdmlsdhxq_m_s8): Remove.
9131 (__arm_vqrdmlsdhxq_m_s32): Remove.
9132 (__arm_vqrdmlsdhxq_m_s16): Remove.
9133 (__arm_vqrdmlsdhxq): Remove.
9134 (__arm_vqrdmlsdhq): Remove.
9135 (__arm_vqrdmladhxq): Remove.
9136 (__arm_vqrdmladhq): Remove.
9137 (__arm_vqdmlsdhxq): Remove.
9138 (__arm_vqdmlsdhq): Remove.
9139 (__arm_vqdmladhxq): Remove.
9140 (__arm_vqdmladhq): Remove.
9141 (__arm_vqdmladhq_m): Remove.
9142 (__arm_vqdmladhxq_m): Remove.
9143 (__arm_vqdmlsdhq_m): Remove.
9144 (__arm_vqdmlsdhxq_m): Remove.
9145 (__arm_vqrdmladhq_m): Remove.
9146 (__arm_vqrdmladhxq_m): Remove.
9147 (__arm_vqrdmlsdhq_m): Remove.
9148 (__arm_vqrdmlsdhxq_m): Remove.
9150 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9152 * config/arm/iterators.md (MVE_VQxDMLxDHxQ_S): New.
9153 (mve_insn): Add vqdmladh, vqdmladhx, vqdmlsdh, vqdmlsdhx,
9154 vqrdmladh, vqrdmladhx, vqrdmlsdh, vqrdmlsdhx.
9155 (supf): Add VQDMLADHQ_S, VQDMLADHXQ_S, VQDMLSDHQ_S, VQDMLSDHXQ_S,
9156 VQRDMLADHQ_S,VQRDMLADHXQ_S, VQRDMLSDHQ_S, VQRDMLSDHXQ_S.
9157 * config/arm/mve.md (mve_vqrdmladhq_s<mode>)
9158 (mve_vqrdmladhxq_s<mode>, mve_vqrdmlsdhq_s<mode>)
9159 (mve_vqrdmlsdhxq_s<mode>, mve_vqdmlsdhxq_s<mode>)
9160 (mve_vqdmlsdhq_s<mode>, mve_vqdmladhxq_s<mode>)
9161 (mve_vqdmladhq_s<mode>): Merge into ...
9162 (@mve_<mve_insn>q_<supf><mode>): ... this.
9164 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9166 * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
9167 * config/arm/arm-mve-builtins-shapes.h (ternary): New.
9169 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9171 * config/arm/arm-mve-builtins-base.cc (vmlaldavaq, vmlaldavaxq)
9172 (vmlsldavaq, vmlsldavaxq): New.
9173 * config/arm/arm-mve-builtins-base.def (vmlaldavaq, vmlaldavaxq)
9174 (vmlsldavaq, vmlsldavaxq): New.
9175 * config/arm/arm-mve-builtins-base.h (vmlaldavaq, vmlaldavaxq)
9176 (vmlsldavaq, vmlsldavaxq): New.
9177 * config/arm/arm_mve.h (vmlaldavaq): Remove.
9178 (vmlaldavaxq): Remove.
9179 (vmlsldavaq): Remove.
9180 (vmlsldavaxq): Remove.
9181 (vmlaldavaq_p): Remove.
9182 (vmlaldavaxq_p): Remove.
9183 (vmlsldavaq_p): Remove.
9184 (vmlsldavaxq_p): Remove.
9185 (vmlaldavaq_s16): Remove.
9186 (vmlaldavaxq_s16): Remove.
9187 (vmlsldavaq_s16): Remove.
9188 (vmlsldavaxq_s16): Remove.
9189 (vmlaldavaq_u16): Remove.
9190 (vmlaldavaq_s32): Remove.
9191 (vmlaldavaxq_s32): Remove.
9192 (vmlsldavaq_s32): Remove.
9193 (vmlsldavaxq_s32): Remove.
9194 (vmlaldavaq_u32): Remove.
9195 (vmlaldavaq_p_s32): Remove.
9196 (vmlaldavaq_p_s16): Remove.
9197 (vmlaldavaq_p_u32): Remove.
9198 (vmlaldavaq_p_u16): Remove.
9199 (vmlaldavaxq_p_s32): Remove.
9200 (vmlaldavaxq_p_s16): Remove.
9201 (vmlsldavaq_p_s32): Remove.
9202 (vmlsldavaq_p_s16): Remove.
9203 (vmlsldavaxq_p_s32): Remove.
9204 (vmlsldavaxq_p_s16): Remove.
9205 (__arm_vmlaldavaq_s16): Remove.
9206 (__arm_vmlaldavaxq_s16): Remove.
9207 (__arm_vmlsldavaq_s16): Remove.
9208 (__arm_vmlsldavaxq_s16): Remove.
9209 (__arm_vmlaldavaq_u16): Remove.
9210 (__arm_vmlaldavaq_s32): Remove.
9211 (__arm_vmlaldavaxq_s32): Remove.
9212 (__arm_vmlsldavaq_s32): Remove.
9213 (__arm_vmlsldavaxq_s32): Remove.
9214 (__arm_vmlaldavaq_u32): Remove.
9215 (__arm_vmlaldavaq_p_s32): Remove.
9216 (__arm_vmlaldavaq_p_s16): Remove.
9217 (__arm_vmlaldavaq_p_u32): Remove.
9218 (__arm_vmlaldavaq_p_u16): Remove.
9219 (__arm_vmlaldavaxq_p_s32): Remove.
9220 (__arm_vmlaldavaxq_p_s16): Remove.
9221 (__arm_vmlsldavaq_p_s32): Remove.
9222 (__arm_vmlsldavaq_p_s16): Remove.
9223 (__arm_vmlsldavaxq_p_s32): Remove.
9224 (__arm_vmlsldavaxq_p_s16): Remove.
9225 (__arm_vmlaldavaq): Remove.
9226 (__arm_vmlaldavaxq): Remove.
9227 (__arm_vmlsldavaq): Remove.
9228 (__arm_vmlsldavaxq): Remove.
9229 (__arm_vmlaldavaq_p): Remove.
9230 (__arm_vmlaldavaxq_p): Remove.
9231 (__arm_vmlsldavaq_p): Remove.
9232 (__arm_vmlsldavaxq_p): Remove.
9234 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9236 * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P):
9238 (mve_insn): Add vmlaldava, vmlaldavax, vmlsldava, vmlsldavax.
9239 (supf): Add VMLALDAVAXQ_P_S, VMLALDAVAXQ_S, VMLSLDAVAQ_P_S,
9240 VMLSLDAVAQ_S, VMLSLDAVAXQ_P_S, VMLSLDAVAXQ_S.
9241 * config/arm/mve.md (mve_vmlaldavaq_<supf><mode>)
9242 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
9243 (mve_vmlaldavaxq_s<mode>): Merge into ...
9244 (@mve_<mve_insn>q_<supf><mode>): ... this.
9245 (mve_vmlaldavaq_p_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>)
9246 (mve_vmlsldavaq_p_s<mode>, mve_vmlsldavaxq_p_s<mode>): Merge into
9248 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
9250 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9252 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
9253 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
9255 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9257 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhq, vrmlaldavhxq)
9258 (vrmlsldavhq, vrmlsldavhxq): New.
9259 * config/arm/arm-mve-builtins-base.def (vrmlaldavhq, vrmlaldavhxq)
9260 (vrmlsldavhq, vrmlsldavhxq): New.
9261 * config/arm/arm-mve-builtins-base.h (vrmlaldavhq, vrmlaldavhxq)
9262 (vrmlsldavhq, vrmlsldavhxq): New.
9263 * config/arm/arm-mve-builtins-functions.h
9264 (unspec_mve_function_exact_insn_pred_p): Handle vrmlaldavhq,
9265 vrmlaldavhxq, vrmlsldavhq, vrmlsldavhxq.
9266 * config/arm/arm_mve.h (vrmlaldavhq): Remove.
9267 (vrmlsldavhxq): Remove.
9268 (vrmlsldavhq): Remove.
9269 (vrmlaldavhxq): Remove.
9270 (vrmlaldavhq_p): Remove.
9271 (vrmlaldavhxq_p): Remove.
9272 (vrmlsldavhq_p): Remove.
9273 (vrmlsldavhxq_p): Remove.
9274 (vrmlaldavhq_u32): Remove.
9275 (vrmlsldavhxq_s32): Remove.
9276 (vrmlsldavhq_s32): Remove.
9277 (vrmlaldavhxq_s32): Remove.
9278 (vrmlaldavhq_s32): Remove.
9279 (vrmlaldavhq_p_s32): Remove.
9280 (vrmlaldavhxq_p_s32): Remove.
9281 (vrmlsldavhq_p_s32): Remove.
9282 (vrmlsldavhxq_p_s32): Remove.
9283 (vrmlaldavhq_p_u32): Remove.
9284 (__arm_vrmlaldavhq_u32): Remove.
9285 (__arm_vrmlsldavhxq_s32): Remove.
9286 (__arm_vrmlsldavhq_s32): Remove.
9287 (__arm_vrmlaldavhxq_s32): Remove.
9288 (__arm_vrmlaldavhq_s32): Remove.
9289 (__arm_vrmlaldavhq_p_s32): Remove.
9290 (__arm_vrmlaldavhxq_p_s32): Remove.
9291 (__arm_vrmlsldavhq_p_s32): Remove.
9292 (__arm_vrmlsldavhxq_p_s32): Remove.
9293 (__arm_vrmlaldavhq_p_u32): Remove.
9294 (__arm_vrmlaldavhq): Remove.
9295 (__arm_vrmlsldavhxq): Remove.
9296 (__arm_vrmlsldavhq): Remove.
9297 (__arm_vrmlaldavhxq): Remove.
9298 (__arm_vrmlaldavhq_p): Remove.
9299 (__arm_vrmlaldavhxq_p): Remove.
9300 (__arm_vrmlsldavhq_p): Remove.
9301 (__arm_vrmlsldavhxq_p): Remove.
9303 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9305 * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P):
9307 (mve_insn): Add vrmlaldavh, vrmlaldavhx, vrmlsldavh, vrmlsldavhx.
9308 (supf): Add VRMLALDAVHXQ_P_S, VRMLALDAVHXQ_S, VRMLSLDAVHQ_P_S,
9309 VRMLSLDAVHQ_S, VRMLSLDAVHXQ_P_S, VRMLSLDAVHXQ_S.
9310 * config/arm/mve.md (mve_vrmlaldavhxq_sv4si)
9311 (mve_vrmlsldavhq_sv4si, mve_vrmlsldavhxq_sv4si)
9312 (mve_vrmlaldavhq_<supf>v4si): Merge into ...
9313 (@mve_<mve_insn>q_<supf>v4si): ... this.
9314 (mve_vrmlaldavhxq_p_sv4si, mve_vrmlsldavhq_p_sv4si)
9315 (mve_vrmlsldavhxq_p_sv4si, mve_vrmlaldavhq_p_<supf>v4si): Merge
9317 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
9319 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9321 * config/arm/arm-mve-builtins-base.cc (vmlaldavq, vmlaldavxq)
9322 (vmlsldavq, vmlsldavxq): New.
9323 * config/arm/arm-mve-builtins-base.def (vmlaldavq, vmlaldavxq)
9324 (vmlsldavq, vmlsldavxq): New.
9325 * config/arm/arm-mve-builtins-base.h (vmlaldavq, vmlaldavxq)
9326 (vmlsldavq, vmlsldavxq): New.
9327 * config/arm/arm_mve.h (vmlaldavq): Remove.
9328 (vmlsldavxq): Remove.
9329 (vmlsldavq): Remove.
9330 (vmlaldavxq): Remove.
9331 (vmlaldavq_p): Remove.
9332 (vmlaldavxq_p): Remove.
9333 (vmlsldavq_p): Remove.
9334 (vmlsldavxq_p): Remove.
9335 (vmlaldavq_u16): Remove.
9336 (vmlsldavxq_s16): Remove.
9337 (vmlsldavq_s16): Remove.
9338 (vmlaldavxq_s16): Remove.
9339 (vmlaldavq_s16): Remove.
9340 (vmlaldavq_u32): Remove.
9341 (vmlsldavxq_s32): Remove.
9342 (vmlsldavq_s32): Remove.
9343 (vmlaldavxq_s32): Remove.
9344 (vmlaldavq_s32): Remove.
9345 (vmlaldavq_p_s16): Remove.
9346 (vmlaldavxq_p_s16): Remove.
9347 (vmlsldavq_p_s16): Remove.
9348 (vmlsldavxq_p_s16): Remove.
9349 (vmlaldavq_p_u16): Remove.
9350 (vmlaldavq_p_s32): Remove.
9351 (vmlaldavxq_p_s32): Remove.
9352 (vmlsldavq_p_s32): Remove.
9353 (vmlsldavxq_p_s32): Remove.
9354 (vmlaldavq_p_u32): Remove.
9355 (__arm_vmlaldavq_u16): Remove.
9356 (__arm_vmlsldavxq_s16): Remove.
9357 (__arm_vmlsldavq_s16): Remove.
9358 (__arm_vmlaldavxq_s16): Remove.
9359 (__arm_vmlaldavq_s16): Remove.
9360 (__arm_vmlaldavq_u32): Remove.
9361 (__arm_vmlsldavxq_s32): Remove.
9362 (__arm_vmlsldavq_s32): Remove.
9363 (__arm_vmlaldavxq_s32): Remove.
9364 (__arm_vmlaldavq_s32): Remove.
9365 (__arm_vmlaldavq_p_s16): Remove.
9366 (__arm_vmlaldavxq_p_s16): Remove.
9367 (__arm_vmlsldavq_p_s16): Remove.
9368 (__arm_vmlsldavxq_p_s16): Remove.
9369 (__arm_vmlaldavq_p_u16): Remove.
9370 (__arm_vmlaldavq_p_s32): Remove.
9371 (__arm_vmlaldavxq_p_s32): Remove.
9372 (__arm_vmlsldavq_p_s32): Remove.
9373 (__arm_vmlsldavxq_p_s32): Remove.
9374 (__arm_vmlaldavq_p_u32): Remove.
9375 (__arm_vmlaldavq): Remove.
9376 (__arm_vmlsldavxq): Remove.
9377 (__arm_vmlsldavq): Remove.
9378 (__arm_vmlaldavxq): Remove.
9379 (__arm_vmlaldavq_p): Remove.
9380 (__arm_vmlaldavxq_p): Remove.
9381 (__arm_vmlsldavq_p): Remove.
9382 (__arm_vmlsldavxq_p): Remove.
9384 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9386 * config/arm/iterators.md (MVE_VMLxLDAVxQ, MVE_VMLxLDAVxQ_P): New.
9387 (mve_insn): Add vmlaldav, vmlaldavx, vmlsldav, vmlsldavx.
9388 (supf): Add VMLALDAVXQ_S, VMLSLDAVQ_S, VMLSLDAVXQ_S,
9389 VMLALDAVXQ_P_S, VMLSLDAVQ_P_S, VMLSLDAVXQ_P_S.
9390 * config/arm/mve.md (mve_vmlaldavq_<supf><mode>)
9391 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
9392 (mve_vmlsldavxq_s<mode>): Merge into ...
9393 (@mve_<mve_insn>q_<supf><mode>): ... this.
9394 (mve_vmlaldavq_p_<supf><mode>, mve_vmlaldavxq_p_s<mode>)
9395 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>): Merge into
9397 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
9399 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9401 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
9402 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
9404 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9406 * config/arm/arm-mve-builtins-base.cc (vabavq): New.
9407 * config/arm/arm-mve-builtins-base.def (vabavq): New.
9408 * config/arm/arm-mve-builtins-base.h (vabavq): New.
9409 * config/arm/arm_mve.h (vabavq): Remove.
9411 (vabavq_s8): Remove.
9412 (vabavq_s16): Remove.
9413 (vabavq_s32): Remove.
9414 (vabavq_u8): Remove.
9415 (vabavq_u16): Remove.
9416 (vabavq_u32): Remove.
9417 (vabavq_p_s8): Remove.
9418 (vabavq_p_u8): Remove.
9419 (vabavq_p_s16): Remove.
9420 (vabavq_p_u16): Remove.
9421 (vabavq_p_s32): Remove.
9422 (vabavq_p_u32): Remove.
9423 (__arm_vabavq_s8): Remove.
9424 (__arm_vabavq_s16): Remove.
9425 (__arm_vabavq_s32): Remove.
9426 (__arm_vabavq_u8): Remove.
9427 (__arm_vabavq_u16): Remove.
9428 (__arm_vabavq_u32): Remove.
9429 (__arm_vabavq_p_s8): Remove.
9430 (__arm_vabavq_p_u8): Remove.
9431 (__arm_vabavq_p_s16): Remove.
9432 (__arm_vabavq_p_u16): Remove.
9433 (__arm_vabavq_p_s32): Remove.
9434 (__arm_vabavq_p_u32): Remove.
9435 (__arm_vabavq): Remove.
9436 (__arm_vabavq_p): Remove.
9438 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9440 * config/arm/iterators.md (mve_insn): Add vabav.
9441 * config/arm/mve.md (mve_vabavq_<supf><mode>): Rename into ...
9442 (@mve_<mve_insn>q_<supf><mode>): ... this,.
9443 (mve_vabavq_p_<supf><mode>): Rename into ...
9444 (@mve_<mve_insn>q_p_<supf><mode>): ... this,.
9446 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9448 * config/arm/arm-mve-builtins-base.cc (vmladavaxq, vmladavaq)
9449 (vmlsdavaq, vmlsdavaxq): New.
9450 * config/arm/arm-mve-builtins-base.def (vmladavaxq, vmladavaq)
9451 (vmlsdavaq, vmlsdavaxq): New.
9452 * config/arm/arm-mve-builtins-base.h (vmladavaxq, vmladavaq)
9453 (vmlsdavaq, vmlsdavaxq): New.
9454 * config/arm/arm_mve.h (vmladavaq): Remove.
9455 (vmlsdavaxq): Remove.
9456 (vmlsdavaq): Remove.
9457 (vmladavaxq): Remove.
9458 (vmladavaq_p): Remove.
9459 (vmladavaxq_p): Remove.
9460 (vmlsdavaq_p): Remove.
9461 (vmlsdavaxq_p): Remove.
9462 (vmladavaq_u8): Remove.
9463 (vmlsdavaxq_s8): Remove.
9464 (vmlsdavaq_s8): Remove.
9465 (vmladavaxq_s8): Remove.
9466 (vmladavaq_s8): Remove.
9467 (vmladavaq_u16): Remove.
9468 (vmlsdavaxq_s16): Remove.
9469 (vmlsdavaq_s16): Remove.
9470 (vmladavaxq_s16): Remove.
9471 (vmladavaq_s16): Remove.
9472 (vmladavaq_u32): Remove.
9473 (vmlsdavaxq_s32): Remove.
9474 (vmlsdavaq_s32): Remove.
9475 (vmladavaxq_s32): Remove.
9476 (vmladavaq_s32): Remove.
9477 (vmladavaq_p_s8): Remove.
9478 (vmladavaq_p_s32): Remove.
9479 (vmladavaq_p_s16): Remove.
9480 (vmladavaq_p_u8): Remove.
9481 (vmladavaq_p_u32): Remove.
9482 (vmladavaq_p_u16): Remove.
9483 (vmladavaxq_p_s8): Remove.
9484 (vmladavaxq_p_s32): Remove.
9485 (vmladavaxq_p_s16): Remove.
9486 (vmlsdavaq_p_s8): Remove.
9487 (vmlsdavaq_p_s32): Remove.
9488 (vmlsdavaq_p_s16): Remove.
9489 (vmlsdavaxq_p_s8): Remove.
9490 (vmlsdavaxq_p_s32): Remove.
9491 (vmlsdavaxq_p_s16): Remove.
9492 (__arm_vmladavaq_u8): Remove.
9493 (__arm_vmlsdavaxq_s8): Remove.
9494 (__arm_vmlsdavaq_s8): Remove.
9495 (__arm_vmladavaxq_s8): Remove.
9496 (__arm_vmladavaq_s8): Remove.
9497 (__arm_vmladavaq_u16): Remove.
9498 (__arm_vmlsdavaxq_s16): Remove.
9499 (__arm_vmlsdavaq_s16): Remove.
9500 (__arm_vmladavaxq_s16): Remove.
9501 (__arm_vmladavaq_s16): Remove.
9502 (__arm_vmladavaq_u32): Remove.
9503 (__arm_vmlsdavaxq_s32): Remove.
9504 (__arm_vmlsdavaq_s32): Remove.
9505 (__arm_vmladavaxq_s32): Remove.
9506 (__arm_vmladavaq_s32): Remove.
9507 (__arm_vmladavaq_p_s8): Remove.
9508 (__arm_vmladavaq_p_s32): Remove.
9509 (__arm_vmladavaq_p_s16): Remove.
9510 (__arm_vmladavaq_p_u8): Remove.
9511 (__arm_vmladavaq_p_u32): Remove.
9512 (__arm_vmladavaq_p_u16): Remove.
9513 (__arm_vmladavaxq_p_s8): Remove.
9514 (__arm_vmladavaxq_p_s32): Remove.
9515 (__arm_vmladavaxq_p_s16): Remove.
9516 (__arm_vmlsdavaq_p_s8): Remove.
9517 (__arm_vmlsdavaq_p_s32): Remove.
9518 (__arm_vmlsdavaq_p_s16): Remove.
9519 (__arm_vmlsdavaxq_p_s8): Remove.
9520 (__arm_vmlsdavaxq_p_s32): Remove.
9521 (__arm_vmlsdavaxq_p_s16): Remove.
9522 (__arm_vmladavaq): Remove.
9523 (__arm_vmlsdavaxq): Remove.
9524 (__arm_vmlsdavaq): Remove.
9525 (__arm_vmladavaxq): Remove.
9526 (__arm_vmladavaq_p): Remove.
9527 (__arm_vmladavaxq_p): Remove.
9528 (__arm_vmlsdavaq_p): Remove.
9529 (__arm_vmlsdavaxq_p): Remove.
9531 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9533 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
9534 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int32): New.
9536 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9538 * config/arm/arm-mve-builtins-base.cc (vmladavq, vmladavxq)
9539 (vmlsdavq, vmlsdavxq): New.
9540 * config/arm/arm-mve-builtins-base.def (vmladavq, vmladavxq)
9541 (vmlsdavq, vmlsdavxq): New.
9542 * config/arm/arm-mve-builtins-base.h (vmladavq, vmladavxq)
9543 (vmlsdavq, vmlsdavxq): New.
9544 * config/arm/arm_mve.h (vmladavq): Remove.
9545 (vmlsdavxq): Remove.
9547 (vmladavxq): Remove.
9548 (vmladavq_p): Remove.
9549 (vmlsdavxq_p): Remove.
9550 (vmlsdavq_p): Remove.
9551 (vmladavxq_p): Remove.
9552 (vmladavq_u8): Remove.
9553 (vmlsdavxq_s8): Remove.
9554 (vmlsdavq_s8): Remove.
9555 (vmladavxq_s8): Remove.
9556 (vmladavq_s8): Remove.
9557 (vmladavq_u16): Remove.
9558 (vmlsdavxq_s16): Remove.
9559 (vmlsdavq_s16): Remove.
9560 (vmladavxq_s16): Remove.
9561 (vmladavq_s16): Remove.
9562 (vmladavq_u32): Remove.
9563 (vmlsdavxq_s32): Remove.
9564 (vmlsdavq_s32): Remove.
9565 (vmladavxq_s32): Remove.
9566 (vmladavq_s32): Remove.
9567 (vmladavq_p_u8): Remove.
9568 (vmlsdavxq_p_s8): Remove.
9569 (vmlsdavq_p_s8): Remove.
9570 (vmladavxq_p_s8): Remove.
9571 (vmladavq_p_s8): Remove.
9572 (vmladavq_p_u16): Remove.
9573 (vmlsdavxq_p_s16): Remove.
9574 (vmlsdavq_p_s16): Remove.
9575 (vmladavxq_p_s16): Remove.
9576 (vmladavq_p_s16): Remove.
9577 (vmladavq_p_u32): Remove.
9578 (vmlsdavxq_p_s32): Remove.
9579 (vmlsdavq_p_s32): Remove.
9580 (vmladavxq_p_s32): Remove.
9581 (vmladavq_p_s32): Remove.
9582 (__arm_vmladavq_u8): Remove.
9583 (__arm_vmlsdavxq_s8): Remove.
9584 (__arm_vmlsdavq_s8): Remove.
9585 (__arm_vmladavxq_s8): Remove.
9586 (__arm_vmladavq_s8): Remove.
9587 (__arm_vmladavq_u16): Remove.
9588 (__arm_vmlsdavxq_s16): Remove.
9589 (__arm_vmlsdavq_s16): Remove.
9590 (__arm_vmladavxq_s16): Remove.
9591 (__arm_vmladavq_s16): Remove.
9592 (__arm_vmladavq_u32): Remove.
9593 (__arm_vmlsdavxq_s32): Remove.
9594 (__arm_vmlsdavq_s32): Remove.
9595 (__arm_vmladavxq_s32): Remove.
9596 (__arm_vmladavq_s32): Remove.
9597 (__arm_vmladavq_p_u8): Remove.
9598 (__arm_vmlsdavxq_p_s8): Remove.
9599 (__arm_vmlsdavq_p_s8): Remove.
9600 (__arm_vmladavxq_p_s8): Remove.
9601 (__arm_vmladavq_p_s8): Remove.
9602 (__arm_vmladavq_p_u16): Remove.
9603 (__arm_vmlsdavxq_p_s16): Remove.
9604 (__arm_vmlsdavq_p_s16): Remove.
9605 (__arm_vmladavxq_p_s16): Remove.
9606 (__arm_vmladavq_p_s16): Remove.
9607 (__arm_vmladavq_p_u32): Remove.
9608 (__arm_vmlsdavxq_p_s32): Remove.
9609 (__arm_vmlsdavq_p_s32): Remove.
9610 (__arm_vmladavxq_p_s32): Remove.
9611 (__arm_vmladavq_p_s32): Remove.
9612 (__arm_vmladavq): Remove.
9613 (__arm_vmlsdavxq): Remove.
9614 (__arm_vmlsdavq): Remove.
9615 (__arm_vmladavxq): Remove.
9616 (__arm_vmladavq_p): Remove.
9617 (__arm_vmlsdavxq_p): Remove.
9618 (__arm_vmlsdavq_p): Remove.
9619 (__arm_vmladavxq_p): Remove.
9621 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9623 * config/arm/iterators.md (MVE_VMLxDAVQ, MVE_VMLxDAVQ_P)
9624 (MVE_VMLxDAVAQ, MVE_VMLxDAVAQ_P): New.
9625 (mve_insn): Add vmladava, vmladavax, vmladav, vmladavx, vmlsdava,
9626 vmlsdavax, vmlsdav, vmlsdavx.
9627 (supf): Add VMLADAVAXQ_P_S, VMLADAVAXQ_S, VMLADAVXQ_P_S,
9628 VMLADAVXQ_S, VMLSDAVAQ_P_S, VMLSDAVAQ_S, VMLSDAVAXQ_P_S,
9629 VMLSDAVAXQ_S, VMLSDAVQ_P_S, VMLSDAVQ_S, VMLSDAVXQ_P_S,
9631 * config/arm/mve.md (mve_vmladavq_<supf><mode>)
9632 (mve_vmladavxq_s<mode>, mve_vmlsdavq_s<mode>)
9633 (mve_vmlsdavxq_s<mode>): Merge into ...
9634 (@mve_<mve_insn>q_<supf><mode>): ... this.
9635 (mve_vmlsdavaq_s<mode>, mve_vmladavaxq_s<mode>)
9636 (mve_vmlsdavaxq_s<mode>, mve_vmladavaq_<supf><mode>): Merge into
9638 (@mve_<mve_insn>q_<supf><mode>): ... this.
9639 (mve_vmladavq_p_<supf><mode>, mve_vmladavxq_p_s<mode>)
9640 (mve_vmlsdavq_p_s<mode>, mve_vmlsdavxq_p_s<mode>): Merge into ...
9641 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
9642 (mve_vmladavaq_p_<supf><mode>, mve_vmladavaxq_p_s<mode>)
9643 (mve_vmlsdavaq_p_s<mode>, mve_vmlsdavaxq_p_s<mode>): Merge into
9645 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
9647 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9649 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
9650 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
9652 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9654 * config/arm/arm-mve-builtins-base.cc (vaddlvaq): New.
9655 * config/arm/arm-mve-builtins-base.def (vaddlvaq): New.
9656 * config/arm/arm-mve-builtins-base.h (vaddlvaq): New.
9657 * config/arm/arm_mve.h (vaddlvaq): Remove.
9658 (vaddlvaq_p): Remove.
9659 (vaddlvaq_u32): Remove.
9660 (vaddlvaq_s32): Remove.
9661 (vaddlvaq_p_s32): Remove.
9662 (vaddlvaq_p_u32): Remove.
9663 (__arm_vaddlvaq_u32): Remove.
9664 (__arm_vaddlvaq_s32): Remove.
9665 (__arm_vaddlvaq_p_s32): Remove.
9666 (__arm_vaddlvaq_p_u32): Remove.
9667 (__arm_vaddlvaq): Remove.
9668 (__arm_vaddlvaq_p): Remove.
9670 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9672 * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
9673 * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
9675 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9677 * config/arm/iterators.md (mve_insn): Add vaddlva.
9678 * config/arm/mve.md (mve_vaddlvaq_<supf>v4si): Rename into ...
9679 (@mve_<mve_insn>q_<supf>v4si): ... this.
9680 (mve_vaddlvaq_p_<supf>v4si): Rename into ...
9681 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
9683 2023-05-11 Uros Bizjak <ubizjak@gmail.com>
9686 * config/i386/i386.cc (ix86_widen_mult_cost):
9687 Handle V4HImode and V2SImode.
9689 2023-05-11 Andrew Pinski <apinski@marvell.com>
9691 * tree-ssa-dce.cc (simple_dce_from_worklist): For ssa names
9692 defined by a phi node with more than one uses, allow for the
9693 only uses are in that same defining statement.
9695 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
9697 * config/riscv/riscv.cc (riscv_const_insns): Add permissible
9700 2023-05-11 Pan Li <pan2.li@intel.com>
9702 * config/riscv/vector.md: Add comments for simplifying to vmset.
9704 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
9706 * config/riscv/autovec.md (<optab><mode>3): Add scalar shift
9708 (v<optab><mode>3): Add vector shift pattern.
9709 * config/riscv/vector-iterators.md: New iterator.
9711 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
9713 * config/riscv/autovec.md: Use renamed functions.
9714 * config/riscv/riscv-protos.h (emit_vlmax_op): Rename.
9715 (emit_vlmax_reg_op): To this.
9716 (emit_nonvlmax_op): Rename.
9717 (emit_len_op): To this.
9718 (emit_nonvlmax_binop): Rename.
9719 (emit_len_binop): To this.
9720 * config/riscv/riscv-v.cc (emit_pred_op): Add default parameter.
9721 (emit_pred_binop): Remove vlmax_p.
9722 (emit_vlmax_op): Rename.
9723 (emit_vlmax_reg_op): To this.
9724 (emit_nonvlmax_op): Rename.
9725 (emit_len_op): To this.
9726 (emit_nonvlmax_binop): Rename.
9727 (emit_len_binop): To this.
9728 (sew64_scalar_helper): Use renamed functions.
9729 (expand_tuple_move): Use renamed functions.
9730 * config/riscv/riscv.cc (vector_zero_call_used_regs): Use
9732 * config/riscv/vector.md: Use renamed functions.
9734 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
9735 Michael Collison <collison@rivosinc.com>
9737 * config/riscv/autovec.md (<optab><mode>3): Add integer binops.
9738 * config/riscv/riscv-protos.h (emit_nonvlmax_binop): Declare.
9739 * config/riscv/riscv-v.cc (emit_pred_op): New function.
9740 (set_expander_dest_and_mask): New function.
9741 (emit_pred_binop): New function.
9742 (emit_nonvlmax_binop): New function.
9744 2023-05-11 Pan Li <pan2.li@intel.com>
9746 * cfgloopmanip.cc (create_empty_loop_on_edge): Add PLUS_EXPR.
9747 * gimple-loop-interchange.cc
9748 (tree_loop_interchange::map_inductions_to_loop): Ditto.
9749 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Ditto.
9750 * tree-ssa-loop-ivopts.cc (create_new_iv): Ditto.
9751 * tree-ssa-loop-manip.cc (create_iv): Ditto.
9752 (tree_transform_and_unroll_loop): Ditto.
9753 (canonicalize_loop_ivs): Ditto.
9754 * tree-ssa-loop-manip.h (create_iv): Ditto.
9755 * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Ditto.
9756 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly):
9758 (vect_set_loop_condition_normal): Ditto.
9759 * tree-vect-loop.cc (vect_create_epilog_for_reduction): Ditto.
9760 * tree-vect-stmts.cc (vectorizable_store): Ditto.
9761 (vectorizable_load): Ditto.
9763 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9765 * config/arm/arm-mve-builtins-base.cc (vmovlbq, vmovltq): New.
9766 * config/arm/arm-mve-builtins-base.def (vmovlbq, vmovltq): New.
9767 * config/arm/arm-mve-builtins-base.h (vmovlbq, vmovltq): New.
9768 * config/arm/arm_mve.h (vmovlbq): Remove.
9770 (vmovlbq_m): Remove.
9771 (vmovltq_m): Remove.
9772 (vmovlbq_x): Remove.
9773 (vmovltq_x): Remove.
9774 (vmovlbq_s8): Remove.
9775 (vmovlbq_s16): Remove.
9776 (vmovltq_s8): Remove.
9777 (vmovltq_s16): Remove.
9778 (vmovltq_u8): Remove.
9779 (vmovltq_u16): Remove.
9780 (vmovlbq_u8): Remove.
9781 (vmovlbq_u16): Remove.
9782 (vmovlbq_m_s8): Remove.
9783 (vmovltq_m_s8): Remove.
9784 (vmovlbq_m_u8): Remove.
9785 (vmovltq_m_u8): Remove.
9786 (vmovlbq_m_s16): Remove.
9787 (vmovltq_m_s16): Remove.
9788 (vmovlbq_m_u16): Remove.
9789 (vmovltq_m_u16): Remove.
9790 (vmovlbq_x_s8): Remove.
9791 (vmovlbq_x_s16): Remove.
9792 (vmovlbq_x_u8): Remove.
9793 (vmovlbq_x_u16): Remove.
9794 (vmovltq_x_s8): Remove.
9795 (vmovltq_x_s16): Remove.
9796 (vmovltq_x_u8): Remove.
9797 (vmovltq_x_u16): Remove.
9798 (__arm_vmovlbq_s8): Remove.
9799 (__arm_vmovlbq_s16): Remove.
9800 (__arm_vmovltq_s8): Remove.
9801 (__arm_vmovltq_s16): Remove.
9802 (__arm_vmovltq_u8): Remove.
9803 (__arm_vmovltq_u16): Remove.
9804 (__arm_vmovlbq_u8): Remove.
9805 (__arm_vmovlbq_u16): Remove.
9806 (__arm_vmovlbq_m_s8): Remove.
9807 (__arm_vmovltq_m_s8): Remove.
9808 (__arm_vmovlbq_m_u8): Remove.
9809 (__arm_vmovltq_m_u8): Remove.
9810 (__arm_vmovlbq_m_s16): Remove.
9811 (__arm_vmovltq_m_s16): Remove.
9812 (__arm_vmovlbq_m_u16): Remove.
9813 (__arm_vmovltq_m_u16): Remove.
9814 (__arm_vmovlbq_x_s8): Remove.
9815 (__arm_vmovlbq_x_s16): Remove.
9816 (__arm_vmovlbq_x_u8): Remove.
9817 (__arm_vmovlbq_x_u16): Remove.
9818 (__arm_vmovltq_x_s8): Remove.
9819 (__arm_vmovltq_x_s16): Remove.
9820 (__arm_vmovltq_x_u8): Remove.
9821 (__arm_vmovltq_x_u16): Remove.
9822 (__arm_vmovlbq): Remove.
9823 (__arm_vmovltq): Remove.
9824 (__arm_vmovlbq_m): Remove.
9825 (__arm_vmovltq_m): Remove.
9826 (__arm_vmovlbq_x): Remove.
9827 (__arm_vmovltq_x): Remove.
9829 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9831 * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
9832 * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
9834 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9836 * config/arm/iterators.md (mve_insn): Add vmovlb, vmovlt.
9837 (VMOVLBQ, VMOVLTQ): Merge into ...
9838 (VMOVLxQ): ... this.
9839 (VMOVLTQ_M, VMOVLBQ_M): Merge into ...
9840 (VMOVLxQ_M): ... this.
9841 * config/arm/mve.md (mve_vmovltq_<supf><mode>)
9842 (mve_vmovlbq_<supf><mode>): Merge into ...
9843 (@mve_<mve_insn>q_<supf><mode>): ... this.
9844 (mve_vmovlbq_m_<supf><mode>, mve_vmovltq_m_<supf><mode>): Merge
9846 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
9848 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9850 * config/arm/arm-mve-builtins-base.cc (vaddlvq): New.
9851 * config/arm/arm-mve-builtins-base.def (vaddlvq): New.
9852 * config/arm/arm-mve-builtins-base.h (vaddlvq): New.
9853 * config/arm/arm-mve-builtins-functions.h
9854 (unspec_mve_function_exact_insn_pred_p): Handle vaddlvq.
9855 * config/arm/arm_mve.h (vaddlvq): Remove.
9856 (vaddlvq_p): Remove.
9857 (vaddlvq_s32): Remove.
9858 (vaddlvq_u32): Remove.
9859 (vaddlvq_p_s32): Remove.
9860 (vaddlvq_p_u32): Remove.
9861 (__arm_vaddlvq_s32): Remove.
9862 (__arm_vaddlvq_u32): Remove.
9863 (__arm_vaddlvq_p_s32): Remove.
9864 (__arm_vaddlvq_p_u32): Remove.
9865 (__arm_vaddlvq): Remove.
9866 (__arm_vaddlvq_p): Remove.
9868 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9870 * config/arm/iterators.md (mve_insn): Add vaddlv.
9871 * config/arm/mve.md (mve_vaddlvq_<supf>v4si): Rename into ...
9872 (@mve_<mve_insn>q_<supf>v4si): ... this.
9873 (mve_vaddlvq_p_<supf>v4si): Rename into ...
9874 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
9876 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9878 * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
9879 * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
9881 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9883 * config/arm/arm-mve-builtins-base.cc (vaddvaq): New.
9884 * config/arm/arm-mve-builtins-base.def (vaddvaq): New.
9885 * config/arm/arm-mve-builtins-base.h (vaddvaq): New.
9886 * config/arm/arm_mve.h (vaddvaq): Remove.
9887 (vaddvaq_p): Remove.
9888 (vaddvaq_u8): Remove.
9889 (vaddvaq_s8): Remove.
9890 (vaddvaq_u16): Remove.
9891 (vaddvaq_s16): Remove.
9892 (vaddvaq_u32): Remove.
9893 (vaddvaq_s32): Remove.
9894 (vaddvaq_p_u8): Remove.
9895 (vaddvaq_p_s8): Remove.
9896 (vaddvaq_p_u16): Remove.
9897 (vaddvaq_p_s16): Remove.
9898 (vaddvaq_p_u32): Remove.
9899 (vaddvaq_p_s32): Remove.
9900 (__arm_vaddvaq_u8): Remove.
9901 (__arm_vaddvaq_s8): Remove.
9902 (__arm_vaddvaq_u16): Remove.
9903 (__arm_vaddvaq_s16): Remove.
9904 (__arm_vaddvaq_u32): Remove.
9905 (__arm_vaddvaq_s32): Remove.
9906 (__arm_vaddvaq_p_u8): Remove.
9907 (__arm_vaddvaq_p_s8): Remove.
9908 (__arm_vaddvaq_p_u16): Remove.
9909 (__arm_vaddvaq_p_s16): Remove.
9910 (__arm_vaddvaq_p_u32): Remove.
9911 (__arm_vaddvaq_p_s32): Remove.
9912 (__arm_vaddvaq): Remove.
9913 (__arm_vaddvaq_p): Remove.
9915 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9917 * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
9918 * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
9920 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9922 * config/arm/iterators.md (mve_insn): Add vaddva.
9923 * config/arm/mve.md (mve_vaddvaq_<supf><mode>): Rename into ...
9924 (@mve_<mve_insn>q_<supf><mode>): ... this.
9925 (mve_vaddvaq_p_<supf><mode>): Rename into ...
9926 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
9928 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9930 * config/arm/arm-mve-builtins-base.cc (vaddvq): New.
9931 * config/arm/arm-mve-builtins-base.def (vaddvq): New.
9932 * config/arm/arm-mve-builtins-base.h (vaddvq): New.
9933 * config/arm/arm_mve.h (vaddvq): Remove.
9935 (vaddvq_s8): Remove.
9936 (vaddvq_s16): Remove.
9937 (vaddvq_s32): Remove.
9938 (vaddvq_u8): Remove.
9939 (vaddvq_u16): Remove.
9940 (vaddvq_u32): Remove.
9941 (vaddvq_p_u8): Remove.
9942 (vaddvq_p_s8): Remove.
9943 (vaddvq_p_u16): Remove.
9944 (vaddvq_p_s16): Remove.
9945 (vaddvq_p_u32): Remove.
9946 (vaddvq_p_s32): Remove.
9947 (__arm_vaddvq_s8): Remove.
9948 (__arm_vaddvq_s16): Remove.
9949 (__arm_vaddvq_s32): Remove.
9950 (__arm_vaddvq_u8): Remove.
9951 (__arm_vaddvq_u16): Remove.
9952 (__arm_vaddvq_u32): Remove.
9953 (__arm_vaddvq_p_u8): Remove.
9954 (__arm_vaddvq_p_s8): Remove.
9955 (__arm_vaddvq_p_u16): Remove.
9956 (__arm_vaddvq_p_s16): Remove.
9957 (__arm_vaddvq_p_u32): Remove.
9958 (__arm_vaddvq_p_s32): Remove.
9959 (__arm_vaddvq): Remove.
9960 (__arm_vaddvq_p): Remove.
9962 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9964 * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
9965 * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
9967 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9969 * config/arm/iterators.md (mve_insn): Add vaddv.
9970 * config/arm/mve.md (@mve_vaddvq_<supf><mode>): Rename into ...
9971 (@mve_<mve_insn>q_<supf><mode>): ... this.
9972 (mve_vaddvq_p_<supf><mode>): Rename into ...
9973 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
9974 * config/arm/vec-common.md: Use gen_mve_q instead of
9977 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
9979 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New.
9981 * config/arm/arm-mve-builtins-base.def (vdupq): New.
9982 * config/arm/arm-mve-builtins-base.h: (vdupq): New.
9983 * config/arm/arm_mve.h (vdupq_n): Remove.
9985 (vdupq_n_f16): Remove.
9986 (vdupq_n_f32): Remove.
9987 (vdupq_n_s8): Remove.
9988 (vdupq_n_s16): Remove.
9989 (vdupq_n_s32): Remove.
9990 (vdupq_n_u8): Remove.
9991 (vdupq_n_u16): Remove.
9992 (vdupq_n_u32): Remove.
9993 (vdupq_m_n_u8): Remove.
9994 (vdupq_m_n_s8): Remove.
9995 (vdupq_m_n_u16): Remove.
9996 (vdupq_m_n_s16): Remove.
9997 (vdupq_m_n_u32): Remove.
9998 (vdupq_m_n_s32): Remove.
9999 (vdupq_m_n_f16): Remove.
10000 (vdupq_m_n_f32): Remove.
10001 (vdupq_x_n_s8): Remove.
10002 (vdupq_x_n_s16): Remove.
10003 (vdupq_x_n_s32): Remove.
10004 (vdupq_x_n_u8): Remove.
10005 (vdupq_x_n_u16): Remove.
10006 (vdupq_x_n_u32): Remove.
10007 (vdupq_x_n_f16): Remove.
10008 (vdupq_x_n_f32): Remove.
10009 (__arm_vdupq_n_s8): Remove.
10010 (__arm_vdupq_n_s16): Remove.
10011 (__arm_vdupq_n_s32): Remove.
10012 (__arm_vdupq_n_u8): Remove.
10013 (__arm_vdupq_n_u16): Remove.
10014 (__arm_vdupq_n_u32): Remove.
10015 (__arm_vdupq_m_n_u8): Remove.
10016 (__arm_vdupq_m_n_s8): Remove.
10017 (__arm_vdupq_m_n_u16): Remove.
10018 (__arm_vdupq_m_n_s16): Remove.
10019 (__arm_vdupq_m_n_u32): Remove.
10020 (__arm_vdupq_m_n_s32): Remove.
10021 (__arm_vdupq_x_n_s8): Remove.
10022 (__arm_vdupq_x_n_s16): Remove.
10023 (__arm_vdupq_x_n_s32): Remove.
10024 (__arm_vdupq_x_n_u8): Remove.
10025 (__arm_vdupq_x_n_u16): Remove.
10026 (__arm_vdupq_x_n_u32): Remove.
10027 (__arm_vdupq_n_f16): Remove.
10028 (__arm_vdupq_n_f32): Remove.
10029 (__arm_vdupq_m_n_f16): Remove.
10030 (__arm_vdupq_m_n_f32): Remove.
10031 (__arm_vdupq_x_n_f16): Remove.
10032 (__arm_vdupq_x_n_f32): Remove.
10033 (__arm_vdupq_n): Remove.
10034 (__arm_vdupq_m): Remove.
10036 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10038 * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
10039 * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
10041 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10043 * config/arm/iterators.md (MVE_FP_M_N_VDUPQ_ONLY)
10044 (MVE_FP_N_VDUPQ_ONLY): New.
10045 (mve_insn): Add vdupq.
10046 * config/arm/mve.md (mve_vdupq_n_f<mode>): Rename into ...
10047 (@mve_<mve_insn>q_n_f<mode>): ... this.
10048 (mve_vdupq_n_<supf><mode>): Rename into ...
10049 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10050 (mve_vdupq_m_n_<supf><mode>): Rename into ...
10051 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10052 (mve_vdupq_m_n_f<mode>): Rename into ...
10053 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
10055 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10057 * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q):
10059 * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
10061 * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
10063 * config/arm/arm_mve.h (vrev16q): Remove.
10066 (vrev64q_m): Remove.
10067 (vrev16q_m): Remove.
10068 (vrev32q_m): Remove.
10069 (vrev16q_x): Remove.
10070 (vrev32q_x): Remove.
10071 (vrev64q_x): Remove.
10072 (vrev64q_f16): Remove.
10073 (vrev64q_f32): Remove.
10074 (vrev32q_f16): Remove.
10075 (vrev16q_s8): Remove.
10076 (vrev32q_s8): Remove.
10077 (vrev32q_s16): Remove.
10078 (vrev64q_s8): Remove.
10079 (vrev64q_s16): Remove.
10080 (vrev64q_s32): Remove.
10081 (vrev64q_u8): Remove.
10082 (vrev64q_u16): Remove.
10083 (vrev64q_u32): Remove.
10084 (vrev32q_u8): Remove.
10085 (vrev32q_u16): Remove.
10086 (vrev16q_u8): Remove.
10087 (vrev64q_m_u8): Remove.
10088 (vrev64q_m_s8): Remove.
10089 (vrev64q_m_u16): Remove.
10090 (vrev64q_m_s16): Remove.
10091 (vrev64q_m_u32): Remove.
10092 (vrev64q_m_s32): Remove.
10093 (vrev16q_m_s8): Remove.
10094 (vrev32q_m_f16): Remove.
10095 (vrev16q_m_u8): Remove.
10096 (vrev32q_m_s8): Remove.
10097 (vrev64q_m_f16): Remove.
10098 (vrev32q_m_u8): Remove.
10099 (vrev32q_m_s16): Remove.
10100 (vrev64q_m_f32): Remove.
10101 (vrev32q_m_u16): Remove.
10102 (vrev16q_x_s8): Remove.
10103 (vrev16q_x_u8): Remove.
10104 (vrev32q_x_s8): Remove.
10105 (vrev32q_x_s16): Remove.
10106 (vrev32q_x_u8): Remove.
10107 (vrev32q_x_u16): Remove.
10108 (vrev64q_x_s8): Remove.
10109 (vrev64q_x_s16): Remove.
10110 (vrev64q_x_s32): Remove.
10111 (vrev64q_x_u8): Remove.
10112 (vrev64q_x_u16): Remove.
10113 (vrev64q_x_u32): Remove.
10114 (vrev32q_x_f16): Remove.
10115 (vrev64q_x_f16): Remove.
10116 (vrev64q_x_f32): Remove.
10117 (__arm_vrev16q_s8): Remove.
10118 (__arm_vrev32q_s8): Remove.
10119 (__arm_vrev32q_s16): Remove.
10120 (__arm_vrev64q_s8): Remove.
10121 (__arm_vrev64q_s16): Remove.
10122 (__arm_vrev64q_s32): Remove.
10123 (__arm_vrev64q_u8): Remove.
10124 (__arm_vrev64q_u16): Remove.
10125 (__arm_vrev64q_u32): Remove.
10126 (__arm_vrev32q_u8): Remove.
10127 (__arm_vrev32q_u16): Remove.
10128 (__arm_vrev16q_u8): Remove.
10129 (__arm_vrev64q_m_u8): Remove.
10130 (__arm_vrev64q_m_s8): Remove.
10131 (__arm_vrev64q_m_u16): Remove.
10132 (__arm_vrev64q_m_s16): Remove.
10133 (__arm_vrev64q_m_u32): Remove.
10134 (__arm_vrev64q_m_s32): Remove.
10135 (__arm_vrev16q_m_s8): Remove.
10136 (__arm_vrev16q_m_u8): Remove.
10137 (__arm_vrev32q_m_s8): Remove.
10138 (__arm_vrev32q_m_u8): Remove.
10139 (__arm_vrev32q_m_s16): Remove.
10140 (__arm_vrev32q_m_u16): Remove.
10141 (__arm_vrev16q_x_s8): Remove.
10142 (__arm_vrev16q_x_u8): Remove.
10143 (__arm_vrev32q_x_s8): Remove.
10144 (__arm_vrev32q_x_s16): Remove.
10145 (__arm_vrev32q_x_u8): Remove.
10146 (__arm_vrev32q_x_u16): Remove.
10147 (__arm_vrev64q_x_s8): Remove.
10148 (__arm_vrev64q_x_s16): Remove.
10149 (__arm_vrev64q_x_s32): Remove.
10150 (__arm_vrev64q_x_u8): Remove.
10151 (__arm_vrev64q_x_u16): Remove.
10152 (__arm_vrev64q_x_u32): Remove.
10153 (__arm_vrev64q_f16): Remove.
10154 (__arm_vrev64q_f32): Remove.
10155 (__arm_vrev32q_f16): Remove.
10156 (__arm_vrev32q_m_f16): Remove.
10157 (__arm_vrev64q_m_f16): Remove.
10158 (__arm_vrev64q_m_f32): Remove.
10159 (__arm_vrev32q_x_f16): Remove.
10160 (__arm_vrev64q_x_f16): Remove.
10161 (__arm_vrev64q_x_f32): Remove.
10162 (__arm_vrev16q): Remove.
10163 (__arm_vrev32q): Remove.
10164 (__arm_vrev64q): Remove.
10165 (__arm_vrev64q_m): Remove.
10166 (__arm_vrev16q_m): Remove.
10167 (__arm_vrev32q_m): Remove.
10168 (__arm_vrev16q_x): Remove.
10169 (__arm_vrev32q_x): Remove.
10170 (__arm_vrev64q_x): Remove.
10172 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10174 * config/arm/iterators.md (MVE_V8HF, MVE_V16QI)
10175 (MVE_FP_VREV64Q_ONLY, MVE_FP_M_VREV64Q_ONLY, MVE_FP_VREV32Q_ONLY)
10176 (MVE_FP_M_VREV32Q_ONLY): New iterators.
10177 (mve_insn): Add vrev16q, vrev32q, vrev64q.
10178 * config/arm/mve.md (mve_vrev64q_f<mode>): Rename into ...
10179 (@mve_<mve_insn>q_f<mode>): ... this
10180 (mve_vrev32q_fv8hf): Rename into @mve_<mve_insn>q_f<mode>.
10181 (mve_vrev64q_<supf><mode>): Rename into ...
10182 (@mve_<mve_insn>q_<supf><mode>): ... this.
10183 (mve_vrev32q_<supf><mode>): Rename into
10184 @mve_<mve_insn>q_<supf><mode>.
10185 (mve_vrev16q_<supf>v16qi): Rename into
10186 @mve_<mve_insn>q_<supf><mode>.
10187 (mve_vrev64q_m_<supf><mode>): Rename into
10188 @mve_<mve_insn>q_m_<supf><mode>.
10189 (mve_vrev32q_m_fv8hf): Rename into @mve_<mve_insn>q_m_f<mode>.
10190 (mve_vrev32q_m_<supf><mode>): Rename into
10191 @mve_<mve_insn>q_m_<supf><mode>.
10192 (mve_vrev64q_m_f<mode>): Rename into @mve_<mve_insn>q_m_f<mode>.
10193 (mve_vrev16q_m_<supf>v16qi): Rename into
10194 @mve_<mve_insn>q_m_<supf><mode>.
10196 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10198 * config/arm/arm-mve-builtins-base.cc (vcmpeqq, vcmpneq, vcmpgeq)
10199 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
10200 * config/arm/arm-mve-builtins-base.def (vcmpeqq, vcmpneq, vcmpgeq)
10201 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
10202 * config/arm/arm-mve-builtins-base.h (vcmpeqq, vcmpneq, vcmpgeq)
10203 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
10204 * config/arm/arm-mve-builtins-functions.h (class
10205 unspec_based_mve_function_exact_insn_vcmp): New.
10206 * config/arm/arm-mve-builtins.cc
10207 (function_instance::has_inactive_argument): Handle vcmp.
10208 * config/arm/arm_mve.h (vcmpneq): Remove.
10216 (vcmpneq_m): Remove.
10217 (vcmphiq_m): Remove.
10218 (vcmpeqq_m): Remove.
10219 (vcmpcsq_m): Remove.
10220 (vcmpcsq_m_n): Remove.
10221 (vcmpltq_m): Remove.
10222 (vcmpleq_m): Remove.
10223 (vcmpgtq_m): Remove.
10224 (vcmpgeq_m): Remove.
10225 (vcmpneq_s8): Remove.
10226 (vcmpneq_s16): Remove.
10227 (vcmpneq_s32): Remove.
10228 (vcmpneq_u8): Remove.
10229 (vcmpneq_u16): Remove.
10230 (vcmpneq_u32): Remove.
10231 (vcmpneq_n_u8): Remove.
10232 (vcmphiq_u8): Remove.
10233 (vcmphiq_n_u8): Remove.
10234 (vcmpeqq_u8): Remove.
10235 (vcmpeqq_n_u8): Remove.
10236 (vcmpcsq_u8): Remove.
10237 (vcmpcsq_n_u8): Remove.
10238 (vcmpneq_n_s8): Remove.
10239 (vcmpltq_s8): Remove.
10240 (vcmpltq_n_s8): Remove.
10241 (vcmpleq_s8): Remove.
10242 (vcmpleq_n_s8): Remove.
10243 (vcmpgtq_s8): Remove.
10244 (vcmpgtq_n_s8): Remove.
10245 (vcmpgeq_s8): Remove.
10246 (vcmpgeq_n_s8): Remove.
10247 (vcmpeqq_s8): Remove.
10248 (vcmpeqq_n_s8): Remove.
10249 (vcmpneq_n_u16): Remove.
10250 (vcmphiq_u16): Remove.
10251 (vcmphiq_n_u16): Remove.
10252 (vcmpeqq_u16): Remove.
10253 (vcmpeqq_n_u16): Remove.
10254 (vcmpcsq_u16): Remove.
10255 (vcmpcsq_n_u16): Remove.
10256 (vcmpneq_n_s16): Remove.
10257 (vcmpltq_s16): Remove.
10258 (vcmpltq_n_s16): Remove.
10259 (vcmpleq_s16): Remove.
10260 (vcmpleq_n_s16): Remove.
10261 (vcmpgtq_s16): Remove.
10262 (vcmpgtq_n_s16): Remove.
10263 (vcmpgeq_s16): Remove.
10264 (vcmpgeq_n_s16): Remove.
10265 (vcmpeqq_s16): Remove.
10266 (vcmpeqq_n_s16): Remove.
10267 (vcmpneq_n_u32): Remove.
10268 (vcmphiq_u32): Remove.
10269 (vcmphiq_n_u32): Remove.
10270 (vcmpeqq_u32): Remove.
10271 (vcmpeqq_n_u32): Remove.
10272 (vcmpcsq_u32): Remove.
10273 (vcmpcsq_n_u32): Remove.
10274 (vcmpneq_n_s32): Remove.
10275 (vcmpltq_s32): Remove.
10276 (vcmpltq_n_s32): Remove.
10277 (vcmpleq_s32): Remove.
10278 (vcmpleq_n_s32): Remove.
10279 (vcmpgtq_s32): Remove.
10280 (vcmpgtq_n_s32): Remove.
10281 (vcmpgeq_s32): Remove.
10282 (vcmpgeq_n_s32): Remove.
10283 (vcmpeqq_s32): Remove.
10284 (vcmpeqq_n_s32): Remove.
10285 (vcmpneq_n_f16): Remove.
10286 (vcmpneq_f16): Remove.
10287 (vcmpltq_n_f16): Remove.
10288 (vcmpltq_f16): Remove.
10289 (vcmpleq_n_f16): Remove.
10290 (vcmpleq_f16): Remove.
10291 (vcmpgtq_n_f16): Remove.
10292 (vcmpgtq_f16): Remove.
10293 (vcmpgeq_n_f16): Remove.
10294 (vcmpgeq_f16): Remove.
10295 (vcmpeqq_n_f16): Remove.
10296 (vcmpeqq_f16): Remove.
10297 (vcmpneq_n_f32): Remove.
10298 (vcmpneq_f32): Remove.
10299 (vcmpltq_n_f32): Remove.
10300 (vcmpltq_f32): Remove.
10301 (vcmpleq_n_f32): Remove.
10302 (vcmpleq_f32): Remove.
10303 (vcmpgtq_n_f32): Remove.
10304 (vcmpgtq_f32): Remove.
10305 (vcmpgeq_n_f32): Remove.
10306 (vcmpgeq_f32): Remove.
10307 (vcmpeqq_n_f32): Remove.
10308 (vcmpeqq_f32): Remove.
10309 (vcmpeqq_m_f16): Remove.
10310 (vcmpeqq_m_f32): Remove.
10311 (vcmpneq_m_u8): Remove.
10312 (vcmpneq_m_n_u8): Remove.
10313 (vcmphiq_m_u8): Remove.
10314 (vcmphiq_m_n_u8): Remove.
10315 (vcmpeqq_m_u8): Remove.
10316 (vcmpeqq_m_n_u8): Remove.
10317 (vcmpcsq_m_u8): Remove.
10318 (vcmpcsq_m_n_u8): Remove.
10319 (vcmpneq_m_s8): Remove.
10320 (vcmpneq_m_n_s8): Remove.
10321 (vcmpltq_m_s8): Remove.
10322 (vcmpltq_m_n_s8): Remove.
10323 (vcmpleq_m_s8): Remove.
10324 (vcmpleq_m_n_s8): Remove.
10325 (vcmpgtq_m_s8): Remove.
10326 (vcmpgtq_m_n_s8): Remove.
10327 (vcmpgeq_m_s8): Remove.
10328 (vcmpgeq_m_n_s8): Remove.
10329 (vcmpeqq_m_s8): Remove.
10330 (vcmpeqq_m_n_s8): Remove.
10331 (vcmpneq_m_u16): Remove.
10332 (vcmpneq_m_n_u16): Remove.
10333 (vcmphiq_m_u16): Remove.
10334 (vcmphiq_m_n_u16): Remove.
10335 (vcmpeqq_m_u16): Remove.
10336 (vcmpeqq_m_n_u16): Remove.
10337 (vcmpcsq_m_u16): Remove.
10338 (vcmpcsq_m_n_u16): Remove.
10339 (vcmpneq_m_s16): Remove.
10340 (vcmpneq_m_n_s16): Remove.
10341 (vcmpltq_m_s16): Remove.
10342 (vcmpltq_m_n_s16): Remove.
10343 (vcmpleq_m_s16): Remove.
10344 (vcmpleq_m_n_s16): Remove.
10345 (vcmpgtq_m_s16): Remove.
10346 (vcmpgtq_m_n_s16): Remove.
10347 (vcmpgeq_m_s16): Remove.
10348 (vcmpgeq_m_n_s16): Remove.
10349 (vcmpeqq_m_s16): Remove.
10350 (vcmpeqq_m_n_s16): Remove.
10351 (vcmpneq_m_u32): Remove.
10352 (vcmpneq_m_n_u32): Remove.
10353 (vcmphiq_m_u32): Remove.
10354 (vcmphiq_m_n_u32): Remove.
10355 (vcmpeqq_m_u32): Remove.
10356 (vcmpeqq_m_n_u32): Remove.
10357 (vcmpcsq_m_u32): Remove.
10358 (vcmpcsq_m_n_u32): Remove.
10359 (vcmpneq_m_s32): Remove.
10360 (vcmpneq_m_n_s32): Remove.
10361 (vcmpltq_m_s32): Remove.
10362 (vcmpltq_m_n_s32): Remove.
10363 (vcmpleq_m_s32): Remove.
10364 (vcmpleq_m_n_s32): Remove.
10365 (vcmpgtq_m_s32): Remove.
10366 (vcmpgtq_m_n_s32): Remove.
10367 (vcmpgeq_m_s32): Remove.
10368 (vcmpgeq_m_n_s32): Remove.
10369 (vcmpeqq_m_s32): Remove.
10370 (vcmpeqq_m_n_s32): Remove.
10371 (vcmpeqq_m_n_f16): Remove.
10372 (vcmpgeq_m_f16): Remove.
10373 (vcmpgeq_m_n_f16): Remove.
10374 (vcmpgtq_m_f16): Remove.
10375 (vcmpgtq_m_n_f16): Remove.
10376 (vcmpleq_m_f16): Remove.
10377 (vcmpleq_m_n_f16): Remove.
10378 (vcmpltq_m_f16): Remove.
10379 (vcmpltq_m_n_f16): Remove.
10380 (vcmpneq_m_f16): Remove.
10381 (vcmpneq_m_n_f16): Remove.
10382 (vcmpeqq_m_n_f32): Remove.
10383 (vcmpgeq_m_f32): Remove.
10384 (vcmpgeq_m_n_f32): Remove.
10385 (vcmpgtq_m_f32): Remove.
10386 (vcmpgtq_m_n_f32): Remove.
10387 (vcmpleq_m_f32): Remove.
10388 (vcmpleq_m_n_f32): Remove.
10389 (vcmpltq_m_f32): Remove.
10390 (vcmpltq_m_n_f32): Remove.
10391 (vcmpneq_m_f32): Remove.
10392 (vcmpneq_m_n_f32): Remove.
10393 (__arm_vcmpneq_s8): Remove.
10394 (__arm_vcmpneq_s16): Remove.
10395 (__arm_vcmpneq_s32): Remove.
10396 (__arm_vcmpneq_u8): Remove.
10397 (__arm_vcmpneq_u16): Remove.
10398 (__arm_vcmpneq_u32): Remove.
10399 (__arm_vcmpneq_n_u8): Remove.
10400 (__arm_vcmphiq_u8): Remove.
10401 (__arm_vcmphiq_n_u8): Remove.
10402 (__arm_vcmpeqq_u8): Remove.
10403 (__arm_vcmpeqq_n_u8): Remove.
10404 (__arm_vcmpcsq_u8): Remove.
10405 (__arm_vcmpcsq_n_u8): Remove.
10406 (__arm_vcmpneq_n_s8): Remove.
10407 (__arm_vcmpltq_s8): Remove.
10408 (__arm_vcmpltq_n_s8): Remove.
10409 (__arm_vcmpleq_s8): Remove.
10410 (__arm_vcmpleq_n_s8): Remove.
10411 (__arm_vcmpgtq_s8): Remove.
10412 (__arm_vcmpgtq_n_s8): Remove.
10413 (__arm_vcmpgeq_s8): Remove.
10414 (__arm_vcmpgeq_n_s8): Remove.
10415 (__arm_vcmpeqq_s8): Remove.
10416 (__arm_vcmpeqq_n_s8): Remove.
10417 (__arm_vcmpneq_n_u16): Remove.
10418 (__arm_vcmphiq_u16): Remove.
10419 (__arm_vcmphiq_n_u16): Remove.
10420 (__arm_vcmpeqq_u16): Remove.
10421 (__arm_vcmpeqq_n_u16): Remove.
10422 (__arm_vcmpcsq_u16): Remove.
10423 (__arm_vcmpcsq_n_u16): Remove.
10424 (__arm_vcmpneq_n_s16): Remove.
10425 (__arm_vcmpltq_s16): Remove.
10426 (__arm_vcmpltq_n_s16): Remove.
10427 (__arm_vcmpleq_s16): Remove.
10428 (__arm_vcmpleq_n_s16): Remove.
10429 (__arm_vcmpgtq_s16): Remove.
10430 (__arm_vcmpgtq_n_s16): Remove.
10431 (__arm_vcmpgeq_s16): Remove.
10432 (__arm_vcmpgeq_n_s16): Remove.
10433 (__arm_vcmpeqq_s16): Remove.
10434 (__arm_vcmpeqq_n_s16): Remove.
10435 (__arm_vcmpneq_n_u32): Remove.
10436 (__arm_vcmphiq_u32): Remove.
10437 (__arm_vcmphiq_n_u32): Remove.
10438 (__arm_vcmpeqq_u32): Remove.
10439 (__arm_vcmpeqq_n_u32): Remove.
10440 (__arm_vcmpcsq_u32): Remove.
10441 (__arm_vcmpcsq_n_u32): Remove.
10442 (__arm_vcmpneq_n_s32): Remove.
10443 (__arm_vcmpltq_s32): Remove.
10444 (__arm_vcmpltq_n_s32): Remove.
10445 (__arm_vcmpleq_s32): Remove.
10446 (__arm_vcmpleq_n_s32): Remove.
10447 (__arm_vcmpgtq_s32): Remove.
10448 (__arm_vcmpgtq_n_s32): Remove.
10449 (__arm_vcmpgeq_s32): Remove.
10450 (__arm_vcmpgeq_n_s32): Remove.
10451 (__arm_vcmpeqq_s32): Remove.
10452 (__arm_vcmpeqq_n_s32): Remove.
10453 (__arm_vcmpneq_m_u8): Remove.
10454 (__arm_vcmpneq_m_n_u8): Remove.
10455 (__arm_vcmphiq_m_u8): Remove.
10456 (__arm_vcmphiq_m_n_u8): Remove.
10457 (__arm_vcmpeqq_m_u8): Remove.
10458 (__arm_vcmpeqq_m_n_u8): Remove.
10459 (__arm_vcmpcsq_m_u8): Remove.
10460 (__arm_vcmpcsq_m_n_u8): Remove.
10461 (__arm_vcmpneq_m_s8): Remove.
10462 (__arm_vcmpneq_m_n_s8): Remove.
10463 (__arm_vcmpltq_m_s8): Remove.
10464 (__arm_vcmpltq_m_n_s8): Remove.
10465 (__arm_vcmpleq_m_s8): Remove.
10466 (__arm_vcmpleq_m_n_s8): Remove.
10467 (__arm_vcmpgtq_m_s8): Remove.
10468 (__arm_vcmpgtq_m_n_s8): Remove.
10469 (__arm_vcmpgeq_m_s8): Remove.
10470 (__arm_vcmpgeq_m_n_s8): Remove.
10471 (__arm_vcmpeqq_m_s8): Remove.
10472 (__arm_vcmpeqq_m_n_s8): Remove.
10473 (__arm_vcmpneq_m_u16): Remove.
10474 (__arm_vcmpneq_m_n_u16): Remove.
10475 (__arm_vcmphiq_m_u16): Remove.
10476 (__arm_vcmphiq_m_n_u16): Remove.
10477 (__arm_vcmpeqq_m_u16): Remove.
10478 (__arm_vcmpeqq_m_n_u16): Remove.
10479 (__arm_vcmpcsq_m_u16): Remove.
10480 (__arm_vcmpcsq_m_n_u16): Remove.
10481 (__arm_vcmpneq_m_s16): Remove.
10482 (__arm_vcmpneq_m_n_s16): Remove.
10483 (__arm_vcmpltq_m_s16): Remove.
10484 (__arm_vcmpltq_m_n_s16): Remove.
10485 (__arm_vcmpleq_m_s16): Remove.
10486 (__arm_vcmpleq_m_n_s16): Remove.
10487 (__arm_vcmpgtq_m_s16): Remove.
10488 (__arm_vcmpgtq_m_n_s16): Remove.
10489 (__arm_vcmpgeq_m_s16): Remove.
10490 (__arm_vcmpgeq_m_n_s16): Remove.
10491 (__arm_vcmpeqq_m_s16): Remove.
10492 (__arm_vcmpeqq_m_n_s16): Remove.
10493 (__arm_vcmpneq_m_u32): Remove.
10494 (__arm_vcmpneq_m_n_u32): Remove.
10495 (__arm_vcmphiq_m_u32): Remove.
10496 (__arm_vcmphiq_m_n_u32): Remove.
10497 (__arm_vcmpeqq_m_u32): Remove.
10498 (__arm_vcmpeqq_m_n_u32): Remove.
10499 (__arm_vcmpcsq_m_u32): Remove.
10500 (__arm_vcmpcsq_m_n_u32): Remove.
10501 (__arm_vcmpneq_m_s32): Remove.
10502 (__arm_vcmpneq_m_n_s32): Remove.
10503 (__arm_vcmpltq_m_s32): Remove.
10504 (__arm_vcmpltq_m_n_s32): Remove.
10505 (__arm_vcmpleq_m_s32): Remove.
10506 (__arm_vcmpleq_m_n_s32): Remove.
10507 (__arm_vcmpgtq_m_s32): Remove.
10508 (__arm_vcmpgtq_m_n_s32): Remove.
10509 (__arm_vcmpgeq_m_s32): Remove.
10510 (__arm_vcmpgeq_m_n_s32): Remove.
10511 (__arm_vcmpeqq_m_s32): Remove.
10512 (__arm_vcmpeqq_m_n_s32): Remove.
10513 (__arm_vcmpneq_n_f16): Remove.
10514 (__arm_vcmpneq_f16): Remove.
10515 (__arm_vcmpltq_n_f16): Remove.
10516 (__arm_vcmpltq_f16): Remove.
10517 (__arm_vcmpleq_n_f16): Remove.
10518 (__arm_vcmpleq_f16): Remove.
10519 (__arm_vcmpgtq_n_f16): Remove.
10520 (__arm_vcmpgtq_f16): Remove.
10521 (__arm_vcmpgeq_n_f16): Remove.
10522 (__arm_vcmpgeq_f16): Remove.
10523 (__arm_vcmpeqq_n_f16): Remove.
10524 (__arm_vcmpeqq_f16): Remove.
10525 (__arm_vcmpneq_n_f32): Remove.
10526 (__arm_vcmpneq_f32): Remove.
10527 (__arm_vcmpltq_n_f32): Remove.
10528 (__arm_vcmpltq_f32): Remove.
10529 (__arm_vcmpleq_n_f32): Remove.
10530 (__arm_vcmpleq_f32): Remove.
10531 (__arm_vcmpgtq_n_f32): Remove.
10532 (__arm_vcmpgtq_f32): Remove.
10533 (__arm_vcmpgeq_n_f32): Remove.
10534 (__arm_vcmpgeq_f32): Remove.
10535 (__arm_vcmpeqq_n_f32): Remove.
10536 (__arm_vcmpeqq_f32): Remove.
10537 (__arm_vcmpeqq_m_f16): Remove.
10538 (__arm_vcmpeqq_m_f32): Remove.
10539 (__arm_vcmpeqq_m_n_f16): Remove.
10540 (__arm_vcmpgeq_m_f16): Remove.
10541 (__arm_vcmpgeq_m_n_f16): Remove.
10542 (__arm_vcmpgtq_m_f16): Remove.
10543 (__arm_vcmpgtq_m_n_f16): Remove.
10544 (__arm_vcmpleq_m_f16): Remove.
10545 (__arm_vcmpleq_m_n_f16): Remove.
10546 (__arm_vcmpltq_m_f16): Remove.
10547 (__arm_vcmpltq_m_n_f16): Remove.
10548 (__arm_vcmpneq_m_f16): Remove.
10549 (__arm_vcmpneq_m_n_f16): Remove.
10550 (__arm_vcmpeqq_m_n_f32): Remove.
10551 (__arm_vcmpgeq_m_f32): Remove.
10552 (__arm_vcmpgeq_m_n_f32): Remove.
10553 (__arm_vcmpgtq_m_f32): Remove.
10554 (__arm_vcmpgtq_m_n_f32): Remove.
10555 (__arm_vcmpleq_m_f32): Remove.
10556 (__arm_vcmpleq_m_n_f32): Remove.
10557 (__arm_vcmpltq_m_f32): Remove.
10558 (__arm_vcmpltq_m_n_f32): Remove.
10559 (__arm_vcmpneq_m_f32): Remove.
10560 (__arm_vcmpneq_m_n_f32): Remove.
10561 (__arm_vcmpneq): Remove.
10562 (__arm_vcmphiq): Remove.
10563 (__arm_vcmpeqq): Remove.
10564 (__arm_vcmpcsq): Remove.
10565 (__arm_vcmpltq): Remove.
10566 (__arm_vcmpleq): Remove.
10567 (__arm_vcmpgtq): Remove.
10568 (__arm_vcmpgeq): Remove.
10569 (__arm_vcmpneq_m): Remove.
10570 (__arm_vcmphiq_m): Remove.
10571 (__arm_vcmpeqq_m): Remove.
10572 (__arm_vcmpcsq_m): Remove.
10573 (__arm_vcmpltq_m): Remove.
10574 (__arm_vcmpleq_m): Remove.
10575 (__arm_vcmpgtq_m): Remove.
10576 (__arm_vcmpgeq_m): Remove.
10578 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10580 * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
10581 * config/arm/arm-mve-builtins-shapes.h (cmp): New.
10583 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10585 * config/arm/iterators.md (MVE_CMP_M, MVE_CMP_M_F, MVE_CMP_M_N)
10586 (MVE_CMP_M_N_F, mve_cmp_op1): New.
10589 * config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>): Rename into ...
10590 (@mve_vcmp<mve_cmp_op>q_n_<mode>): ... this.
10591 (mve_vcmpeqq_m_f<mode>, mve_vcmpgeq_m_f<mode>)
10592 (mve_vcmpgtq_m_f<mode>, mve_vcmpleq_m_f<mode>)
10593 (mve_vcmpltq_m_f<mode>, mve_vcmpneq_m_f<mode>): Merge into ...
10594 (@mve_vcmp<mve_cmp_op1>q_m_f<mode>): ... this.
10595 (mve_vcmpcsq_m_u<mode>, mve_vcmpeqq_m_<supf><mode>)
10596 (mve_vcmpgeq_m_s<mode>, mve_vcmpgtq_m_s<mode>)
10597 (mve_vcmphiq_m_u<mode>, mve_vcmpleq_m_s<mode>)
10598 (mve_vcmpltq_m_s<mode>, mve_vcmpneq_m_<supf><mode>): Merge into
10600 (@mve_vcmp<mve_cmp_op1>q_m_<supf><mode>): ... this.
10601 (mve_vcmpcsq_m_n_u<mode>, mve_vcmpeqq_m_n_<supf><mode>)
10602 (mve_vcmpgeq_m_n_s<mode>, mve_vcmpgtq_m_n_s<mode>)
10603 (mve_vcmphiq_m_n_u<mode>, mve_vcmpleq_m_n_s<mode>)
10604 (mve_vcmpltq_m_n_s<mode>, mve_vcmpneq_m_n_<supf><mode>): Merge
10606 (@mve_vcmp<mve_cmp_op1>q_m_n_<supf><mode>): ... this.
10607 (mve_vcmpeqq_m_n_f<mode>, mve_vcmpgeq_m_n_f<mode>)
10608 (mve_vcmpgtq_m_n_f<mode>, mve_vcmpleq_m_n_f<mode>)
10609 (mve_vcmpltq_m_n_f<mode>, mve_vcmpneq_m_n_f<mode>): Merge into ...
10610 (@mve_vcmp<mve_cmp_op1>q_m_n_f<mode>): ... this.
10612 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
10614 * match.pd <popcount optimizations>: Simplify popcount(X|Y) +
10615 popcount(X&Y) as popcount(X)+popcount(Y). Likewise, simplify
10616 popcount(X)+popcount(Y)-popcount(X&Y) as popcount(X|Y), and
10619 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
10621 * match.pd <popcount optimizations>: Simplify popcount(bswap(x))
10622 as popcount(x). Simplify popcount(rotate(x,y)) as popcount(x).
10623 <parity optimizations>: Simplify parity(bswap(x)) as parity(x).
10624 Simplify parity(rotate(x,y)) as parity(x).
10626 2023-05-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10628 * config/riscv/autovec.md (@vec_series<mode>): New pattern
10629 * config/riscv/riscv-protos.h (expand_vec_series): New function.
10630 * config/riscv/riscv-v.cc (emit_binop): Ditto.
10631 (emit_index_op): Ditto.
10632 (expand_vec_series): Ditto.
10633 (expand_const_vector): Add series vector handling.
10634 * config/riscv/riscv.cc (riscv_const_insns): Enable series vector for testing.
10636 2023-05-10 Roger Sayle <roger@nextmovesoftware.com>
10638 * config/i386/i386.md (*concat<mode><dwi>3_1): Use preferred
10639 [(const_int 0)] idiom, instead of [(clobber (const_int 0))].
10640 (*concat<mode><dwi>3_2): Likewise.
10641 (*concat<mode><dwi>3_3): Likewise.
10642 (*concat<mode><dwi>3_4): Likewise.
10643 (*concat<mode><dwi>3_5): Likewise.
10644 (*concat<mode><dwi>3_6): Likewise.
10645 (*concat<mode><dwi>3_7): Likewise.
10647 2023-05-10 Uros Bizjak <ubizjak@gmail.com>
10650 * config/i386/mmx.md (sse4_1_<code>v2qiv2si2): New insn pattern.
10651 (<insn>v4qiv4hi2): New expander.
10652 (<insn>v2hiv2si2): Ditto.
10653 (<insn>v2qiv2si2): Ditto.
10654 (<insn>v2qiv2hi2): Ditto.
10656 2023-05-10 Jeff Law <jlaw@ventanamicro>
10658 * config/h8300/constraints.md (Q): Make this a special memory
10662 2023-05-10 Jakub Jelinek <jakub@redhat.com>
10665 * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t)
10666 if t is void_list_node.
10668 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10670 * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode>_insn_le): Delete.
10671 (aarch64_sqmovun<mode>_insn_be): Delete.
10672 (aarch64_sqmovun<mode><vczle><vczbe>): New define_insn.
10673 (aarch64_sqmovun<mode>): Delete expander.
10675 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10678 * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
10680 (aarch64_<PERMUTE:perm_insn><mode><vczle><vczbe>): ... This.
10681 (aarch64_rev<REVERSE:rev_op><mode>): Rename to...
10682 (aarch64_rev<REVERSE:rev_op><mode><vczle><vczbe>): ... This.
10684 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10687 * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
10689 (aarch64_<su_optab>q<addsub><mode><vczle><vczbe>): ... This.
10690 (aarch64_<sur>qadd<mode>): Rename to...
10691 (aarch64_<sur>qadd<mode><vczle><vczbe>): ... This.
10693 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10695 * config/aarch64/aarch64-simd.md
10696 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): Delete.
10697 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): Delete.
10698 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): New define_insn.
10699 (aarch64_<sur>q<r>shr<u>n_n<mode>): Simplify expander.
10701 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
10704 * config/aarch64/aarch64-simd.md (aarch64_xtn<mode>_insn_le): Delete.
10705 (aarch64_xtn<mode>_insn_be): Likewise.
10706 (trunc<mode><Vnarrowq>2): Rename to...
10707 (trunc<mode><Vnarrowq>2<vczle><vczbe>): ... This.
10708 (aarch64_xtn<mode>): Move under the above. Just emit the truncate RTL.
10709 (aarch64_<su>qmovn<mode>): Likewise.
10710 (aarch64_<su>qmovn<mode><vczle><vczbe>): New define_insn.
10711 (aarch64_<su>qmovn<mode>_insn_le): Delete.
10712 (aarch64_<su>qmovn<mode>_insn_be): Likewise.
10714 2023-05-10 Li Xu <xuli1@eswincomputing.com>
10716 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): For vfmv.f.s/vmv.x.s
10717 intruction replace null avl with (const_int 0).
10719 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10721 * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
10724 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
10727 * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function.
10728 (source_equal_p): Fix dead loop in vsetvl avl checking.
10730 2023-05-10 Hans-Peter Nilsson <hp@axis.com>
10732 * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
10733 of modeadjusted_dccr.
10735 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
10737 * config/arm/arm-mve-builtins-base.cc (vmaxaq, vminaq): New.
10738 * config/arm/arm-mve-builtins-base.def (vmaxaq, vminaq): New.
10739 * config/arm/arm-mve-builtins-base.h (vmaxaq, vminaq): New.
10740 * config/arm/arm-mve-builtins.cc
10741 (function_instance::has_inactive_argument): Handle vmaxaq and
10743 * config/arm/arm_mve.h (vminaq): Remove.
10745 (vminaq_m): Remove.
10746 (vmaxaq_m): Remove.
10747 (vminaq_s8): Remove.
10748 (vmaxaq_s8): Remove.
10749 (vminaq_s16): Remove.
10750 (vmaxaq_s16): Remove.
10751 (vminaq_s32): Remove.
10752 (vmaxaq_s32): Remove.
10753 (vminaq_m_s8): Remove.
10754 (vmaxaq_m_s8): Remove.
10755 (vminaq_m_s16): Remove.
10756 (vmaxaq_m_s16): Remove.
10757 (vminaq_m_s32): Remove.
10758 (vmaxaq_m_s32): Remove.
10759 (__arm_vminaq_s8): Remove.
10760 (__arm_vmaxaq_s8): Remove.
10761 (__arm_vminaq_s16): Remove.
10762 (__arm_vmaxaq_s16): Remove.
10763 (__arm_vminaq_s32): Remove.
10764 (__arm_vmaxaq_s32): Remove.
10765 (__arm_vminaq_m_s8): Remove.
10766 (__arm_vmaxaq_m_s8): Remove.
10767 (__arm_vminaq_m_s16): Remove.
10768 (__arm_vmaxaq_m_s16): Remove.
10769 (__arm_vminaq_m_s32): Remove.
10770 (__arm_vmaxaq_m_s32): Remove.
10771 (__arm_vminaq): Remove.
10772 (__arm_vmaxaq): Remove.
10773 (__arm_vminaq_m): Remove.
10774 (__arm_vmaxaq_m): Remove.
10776 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
10778 * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M):
10780 (mve_insn): Add vmaxa, vmina.
10781 (supf): Add VMAXAQ_S, VMAXAQ_M_S, VMINAQ_S, VMINAQ_M_S.
10782 * config/arm/mve.md (mve_vmaxaq_s<mode>, mve_vminaq_s<mode>):
10784 (@mve_<mve_insn>q_<supf><mode>): ... this.
10785 (mve_vmaxaq_m_s<mode>, mve_vminaq_m_s<mode>): Merge into ...
10786 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
10788 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
10790 * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
10791 * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
10793 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
10795 * config/arm/arm-mve-builtins-base.cc (vmaxnmaq, vminnmaq): New.
10796 * config/arm/arm-mve-builtins-base.def (vmaxnmaq, vminnmaq): New.
10797 * config/arm/arm-mve-builtins-base.h (vmaxnmaq, vminnmaq): New.
10798 * config/arm/arm-mve-builtins.cc
10799 (function_instance::has_inactive_argument): Handle vmaxnmaq and
10801 * config/arm/arm_mve.h (vminnmaq): Remove.
10802 (vmaxnmaq): Remove.
10803 (vmaxnmaq_m): Remove.
10804 (vminnmaq_m): Remove.
10805 (vminnmaq_f16): Remove.
10806 (vmaxnmaq_f16): Remove.
10807 (vminnmaq_f32): Remove.
10808 (vmaxnmaq_f32): Remove.
10809 (vmaxnmaq_m_f16): Remove.
10810 (vminnmaq_m_f16): Remove.
10811 (vmaxnmaq_m_f32): Remove.
10812 (vminnmaq_m_f32): Remove.
10813 (__arm_vminnmaq_f16): Remove.
10814 (__arm_vmaxnmaq_f16): Remove.
10815 (__arm_vminnmaq_f32): Remove.
10816 (__arm_vmaxnmaq_f32): Remove.
10817 (__arm_vmaxnmaq_m_f16): Remove.
10818 (__arm_vminnmaq_m_f16): Remove.
10819 (__arm_vmaxnmaq_m_f32): Remove.
10820 (__arm_vminnmaq_m_f32): Remove.
10821 (__arm_vminnmaq): Remove.
10822 (__arm_vmaxnmaq): Remove.
10823 (__arm_vmaxnmaq_m): Remove.
10824 (__arm_vminnmaq_m): Remove.
10826 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
10828 * config/arm/iterators.md (MVE_VMAXNMA_VMINNMAQ)
10829 (MVE_VMAXNMA_VMINNMAQ_M): New.
10830 (mve_insn): Add vmaxnma, vminnma.
10831 * config/arm/mve.md (mve_vmaxnmaq_f<mode>, mve_vminnmaq_f<mode>):
10833 (@mve_<mve_insn>q_f<mode>): ... this.
10834 (mve_vmaxnmaq_m_f<mode>, mve_vminnmaq_m_f<mode>): Merge into ...
10835 (@mve_<mve_insn>q_m_f<mode>): ... this.
10837 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
10839 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_F): New.
10840 (vmaxnmavq, vmaxnmvq, vminnmavq, vminnmvq): New.
10841 * config/arm/arm-mve-builtins-base.def (vmaxnmavq, vmaxnmvq)
10842 (vminnmavq, vminnmvq): New.
10843 * config/arm/arm-mve-builtins-base.h (vmaxnmavq, vmaxnmvq)
10844 (vminnmavq, vminnmvq): New.
10845 * config/arm/arm_mve.h (vminnmvq): Remove.
10846 (vminnmavq): Remove.
10847 (vmaxnmvq): Remove.
10848 (vmaxnmavq): Remove.
10849 (vmaxnmavq_p): Remove.
10850 (vmaxnmvq_p): Remove.
10851 (vminnmavq_p): Remove.
10852 (vminnmvq_p): Remove.
10853 (vminnmvq_f16): Remove.
10854 (vminnmavq_f16): Remove.
10855 (vmaxnmvq_f16): Remove.
10856 (vmaxnmavq_f16): Remove.
10857 (vminnmvq_f32): Remove.
10858 (vminnmavq_f32): Remove.
10859 (vmaxnmvq_f32): Remove.
10860 (vmaxnmavq_f32): Remove.
10861 (vmaxnmavq_p_f16): Remove.
10862 (vmaxnmvq_p_f16): Remove.
10863 (vminnmavq_p_f16): Remove.
10864 (vminnmvq_p_f16): Remove.
10865 (vmaxnmavq_p_f32): Remove.
10866 (vmaxnmvq_p_f32): Remove.
10867 (vminnmavq_p_f32): Remove.
10868 (vminnmvq_p_f32): Remove.
10869 (__arm_vminnmvq_f16): Remove.
10870 (__arm_vminnmavq_f16): Remove.
10871 (__arm_vmaxnmvq_f16): Remove.
10872 (__arm_vmaxnmavq_f16): Remove.
10873 (__arm_vminnmvq_f32): Remove.
10874 (__arm_vminnmavq_f32): Remove.
10875 (__arm_vmaxnmvq_f32): Remove.
10876 (__arm_vmaxnmavq_f32): Remove.
10877 (__arm_vmaxnmavq_p_f16): Remove.
10878 (__arm_vmaxnmvq_p_f16): Remove.
10879 (__arm_vminnmavq_p_f16): Remove.
10880 (__arm_vminnmvq_p_f16): Remove.
10881 (__arm_vmaxnmavq_p_f32): Remove.
10882 (__arm_vmaxnmvq_p_f32): Remove.
10883 (__arm_vminnmavq_p_f32): Remove.
10884 (__arm_vminnmvq_p_f32): Remove.
10885 (__arm_vminnmvq): Remove.
10886 (__arm_vminnmavq): Remove.
10887 (__arm_vmaxnmvq): Remove.
10888 (__arm_vmaxnmavq): Remove.
10889 (__arm_vmaxnmavq_p): Remove.
10890 (__arm_vmaxnmvq_p): Remove.
10891 (__arm_vminnmavq_p): Remove.
10892 (__arm_vminnmvq_p): Remove.
10893 (__arm_vmaxnmavq_m): Remove.
10894 (__arm_vmaxnmvq_m): Remove.
10896 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
10898 * config/arm/arm-mve-builtins-functions.h
10899 (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
10901 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
10903 * config/arm/iterators.md (MVE_VMAXNMxV_MINNMxVQ)
10904 (MVE_VMAXNMxV_MINNMxVQ_P): New.
10905 (mve_insn): Add vmaxnmav, vmaxnmv, vminnmav, vminnmv.
10906 * config/arm/mve.md (mve_vmaxnmavq_f<mode>, mve_vmaxnmvq_f<mode>)
10907 (mve_vminnmavq_f<mode>, mve_vminnmvq_f<mode>): Merge into ...
10908 (@mve_<mve_insn>q_f<mode>): ... this.
10909 (mve_vmaxnmavq_p_f<mode>, mve_vmaxnmvq_p_f<mode>)
10910 (mve_vminnmavq_p_f<mode>, mve_vminnmvq_p_f<mode>): Merge into ...
10911 (@mve_<mve_insn>q_p_f<mode>): ... this.
10913 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
10915 * config/arm/arm-mve-builtins-base.cc (vmaxnmq, vminnmq): New.
10916 * config/arm/arm-mve-builtins-base.def (vmaxnmq, vminnmq): New.
10917 * config/arm/arm-mve-builtins-base.h (vmaxnmq, vminnmq): New.
10918 * config/arm/arm_mve.h (vminnmq): Remove.
10920 (vmaxnmq_m): Remove.
10921 (vminnmq_m): Remove.
10922 (vminnmq_x): Remove.
10923 (vmaxnmq_x): Remove.
10924 (vminnmq_f16): Remove.
10925 (vmaxnmq_f16): Remove.
10926 (vminnmq_f32): Remove.
10927 (vmaxnmq_f32): Remove.
10928 (vmaxnmq_m_f32): Remove.
10929 (vmaxnmq_m_f16): Remove.
10930 (vminnmq_m_f32): Remove.
10931 (vminnmq_m_f16): Remove.
10932 (vminnmq_x_f16): Remove.
10933 (vminnmq_x_f32): Remove.
10934 (vmaxnmq_x_f16): Remove.
10935 (vmaxnmq_x_f32): Remove.
10936 (__arm_vminnmq_f16): Remove.
10937 (__arm_vmaxnmq_f16): Remove.
10938 (__arm_vminnmq_f32): Remove.
10939 (__arm_vmaxnmq_f32): Remove.
10940 (__arm_vmaxnmq_m_f32): Remove.
10941 (__arm_vmaxnmq_m_f16): Remove.
10942 (__arm_vminnmq_m_f32): Remove.
10943 (__arm_vminnmq_m_f16): Remove.
10944 (__arm_vminnmq_x_f16): Remove.
10945 (__arm_vminnmq_x_f32): Remove.
10946 (__arm_vmaxnmq_x_f16): Remove.
10947 (__arm_vmaxnmq_x_f32): Remove.
10948 (__arm_vminnmq): Remove.
10949 (__arm_vmaxnmq): Remove.
10950 (__arm_vmaxnmq_m): Remove.
10951 (__arm_vminnmq_m): Remove.
10952 (__arm_vminnmq_x): Remove.
10953 (__arm_vmaxnmq_x): Remove.
10955 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
10957 * config/arm/iterators.md (MAX_MIN_F): New.
10958 (MVE_FP_M_BINARY): Add VMAXNMQ_M_F, VMINNMQ_M_F.
10959 (mve_insn): Add vmaxnm, vminnm.
10960 (max_min_f_str): New.
10961 * config/arm/mve.md (mve_vmaxnmq_f<mode>, mve_vminnmq_f<mode>):
10963 (@mve_<max_min_f_str>q_f<mode>): ... this.
10964 (mve_vmaxnmq_m_f<mode>, mve_vminnmq_m_f<mode>): Merge into ...
10965 (@mve_<mve_insn>q_m_f<mode>): ... this.
10967 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
10969 * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
10970 (smax<mode>3): Likewise.
10972 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
10974 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_S_U)
10975 (FUNCTION_PRED_P_S): New.
10976 (vmaxavq, vminavq, vmaxvq, vminvq): New.
10977 * config/arm/arm-mve-builtins-base.def (vmaxavq, vminavq, vmaxvq)
10979 * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
10981 * config/arm/arm_mve.h (vminvq): Remove.
10983 (vminvq_p): Remove.
10984 (vmaxvq_p): Remove.
10985 (vminvq_u8): Remove.
10986 (vmaxvq_u8): Remove.
10987 (vminvq_s8): Remove.
10988 (vmaxvq_s8): Remove.
10989 (vminvq_u16): Remove.
10990 (vmaxvq_u16): Remove.
10991 (vminvq_s16): Remove.
10992 (vmaxvq_s16): Remove.
10993 (vminvq_u32): Remove.
10994 (vmaxvq_u32): Remove.
10995 (vminvq_s32): Remove.
10996 (vmaxvq_s32): Remove.
10997 (vminvq_p_u8): Remove.
10998 (vmaxvq_p_u8): Remove.
10999 (vminvq_p_s8): Remove.
11000 (vmaxvq_p_s8): Remove.
11001 (vminvq_p_u16): Remove.
11002 (vmaxvq_p_u16): Remove.
11003 (vminvq_p_s16): Remove.
11004 (vmaxvq_p_s16): Remove.
11005 (vminvq_p_u32): Remove.
11006 (vmaxvq_p_u32): Remove.
11007 (vminvq_p_s32): Remove.
11008 (vmaxvq_p_s32): Remove.
11009 (__arm_vminvq_u8): Remove.
11010 (__arm_vmaxvq_u8): Remove.
11011 (__arm_vminvq_s8): Remove.
11012 (__arm_vmaxvq_s8): Remove.
11013 (__arm_vminvq_u16): Remove.
11014 (__arm_vmaxvq_u16): Remove.
11015 (__arm_vminvq_s16): Remove.
11016 (__arm_vmaxvq_s16): Remove.
11017 (__arm_vminvq_u32): Remove.
11018 (__arm_vmaxvq_u32): Remove.
11019 (__arm_vminvq_s32): Remove.
11020 (__arm_vmaxvq_s32): Remove.
11021 (__arm_vminvq_p_u8): Remove.
11022 (__arm_vmaxvq_p_u8): Remove.
11023 (__arm_vminvq_p_s8): Remove.
11024 (__arm_vmaxvq_p_s8): Remove.
11025 (__arm_vminvq_p_u16): Remove.
11026 (__arm_vmaxvq_p_u16): Remove.
11027 (__arm_vminvq_p_s16): Remove.
11028 (__arm_vmaxvq_p_s16): Remove.
11029 (__arm_vminvq_p_u32): Remove.
11030 (__arm_vmaxvq_p_u32): Remove.
11031 (__arm_vminvq_p_s32): Remove.
11032 (__arm_vmaxvq_p_s32): Remove.
11033 (__arm_vminvq): Remove.
11034 (__arm_vmaxvq): Remove.
11035 (__arm_vminvq_p): Remove.
11036 (__arm_vmaxvq_p): Remove.
11039 (vminavq_p): Remove.
11040 (vmaxavq_p): Remove.
11041 (vminavq_s8): Remove.
11042 (vmaxavq_s8): Remove.
11043 (vminavq_s16): Remove.
11044 (vmaxavq_s16): Remove.
11045 (vminavq_s32): Remove.
11046 (vmaxavq_s32): Remove.
11047 (vminavq_p_s8): Remove.
11048 (vmaxavq_p_s8): Remove.
11049 (vminavq_p_s16): Remove.
11050 (vmaxavq_p_s16): Remove.
11051 (vminavq_p_s32): Remove.
11052 (vmaxavq_p_s32): Remove.
11053 (__arm_vminavq_s8): Remove.
11054 (__arm_vmaxavq_s8): Remove.
11055 (__arm_vminavq_s16): Remove.
11056 (__arm_vmaxavq_s16): Remove.
11057 (__arm_vminavq_s32): Remove.
11058 (__arm_vmaxavq_s32): Remove.
11059 (__arm_vminavq_p_s8): Remove.
11060 (__arm_vmaxavq_p_s8): Remove.
11061 (__arm_vminavq_p_s16): Remove.
11062 (__arm_vmaxavq_p_s16): Remove.
11063 (__arm_vminavq_p_s32): Remove.
11064 (__arm_vmaxavq_p_s32): Remove.
11065 (__arm_vminavq): Remove.
11066 (__arm_vmaxavq): Remove.
11067 (__arm_vminavq_p): Remove.
11068 (__arm_vmaxavq_p): Remove.
11070 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
11072 * config/arm/iterators.md (MVE_VMAXVQ_VMINVQ, MVE_VMAXVQ_VMINVQ_P): New.
11073 (mve_insn): Add vmaxav, vmaxv, vminav, vminv.
11074 (supf): Add VMAXAVQ_S, VMAXAVQ_P_S, VMINAVQ_S, VMINAVQ_P_S.
11075 * config/arm/mve.md (mve_vmaxavq_s<mode>, mve_vmaxvq_<supf><mode>)
11076 (mve_vminavq_s<mode>, mve_vminvq_<supf><mode>): Merge into ...
11077 (@mve_<mve_insn>q_<supf><mode>): ... this.
11078 (mve_vmaxavq_p_s<mode>, mve_vmaxvq_p_<supf><mode>)
11079 (mve_vminavq_p_s<mode>, mve_vminvq_p_<supf><mode>): Merge into ...
11080 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
11082 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
11084 * config/arm/arm-mve-builtins-functions.h (class
11085 unspec_mve_function_exact_insn_pred_p): New.
11087 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
11089 * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
11090 * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
11092 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
11094 * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
11095 * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
11097 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
11099 * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order):
11101 * config/aarch64/aarch64.h (REG_ALLOC_ORDER): Define.
11102 (ADJUST_REG_ALLOC_ORDER): Likewise.
11103 * config/aarch64/aarch64.cc (aarch64_adjust_reg_alloc_order): New
11105 * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use
11106 Upa rather than Upl for unpredicated movprfx alternatives.
11108 2023-05-09 Jeff Law <jlaw@ventanamicro>
11110 * config/h8300/testcompare.md: Add peephole2 which uses a memory
11111 load to set flags, thus eliminating a compare against zero.
11113 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
11115 * config/arm/arm-mve-builtins-base.cc (vshllbq, vshlltq): New.
11116 * config/arm/arm-mve-builtins-base.def (vshllbq, vshlltq): New.
11117 * config/arm/arm-mve-builtins-base.h (vshllbq, vshlltq): New.
11118 * config/arm/arm_mve.h (vshlltq): Remove.
11120 (vshllbq_m): Remove.
11121 (vshlltq_m): Remove.
11122 (vshllbq_x): Remove.
11123 (vshlltq_x): Remove.
11124 (vshlltq_n_u8): Remove.
11125 (vshllbq_n_u8): Remove.
11126 (vshlltq_n_s8): Remove.
11127 (vshllbq_n_s8): Remove.
11128 (vshlltq_n_u16): Remove.
11129 (vshllbq_n_u16): Remove.
11130 (vshlltq_n_s16): Remove.
11131 (vshllbq_n_s16): Remove.
11132 (vshllbq_m_n_s8): Remove.
11133 (vshllbq_m_n_s16): Remove.
11134 (vshllbq_m_n_u8): Remove.
11135 (vshllbq_m_n_u16): Remove.
11136 (vshlltq_m_n_s8): Remove.
11137 (vshlltq_m_n_s16): Remove.
11138 (vshlltq_m_n_u8): Remove.
11139 (vshlltq_m_n_u16): Remove.
11140 (vshllbq_x_n_s8): Remove.
11141 (vshllbq_x_n_s16): Remove.
11142 (vshllbq_x_n_u8): Remove.
11143 (vshllbq_x_n_u16): Remove.
11144 (vshlltq_x_n_s8): Remove.
11145 (vshlltq_x_n_s16): Remove.
11146 (vshlltq_x_n_u8): Remove.
11147 (vshlltq_x_n_u16): Remove.
11148 (__arm_vshlltq_n_u8): Remove.
11149 (__arm_vshllbq_n_u8): Remove.
11150 (__arm_vshlltq_n_s8): Remove.
11151 (__arm_vshllbq_n_s8): Remove.
11152 (__arm_vshlltq_n_u16): Remove.
11153 (__arm_vshllbq_n_u16): Remove.
11154 (__arm_vshlltq_n_s16): Remove.
11155 (__arm_vshllbq_n_s16): Remove.
11156 (__arm_vshllbq_m_n_s8): Remove.
11157 (__arm_vshllbq_m_n_s16): Remove.
11158 (__arm_vshllbq_m_n_u8): Remove.
11159 (__arm_vshllbq_m_n_u16): Remove.
11160 (__arm_vshlltq_m_n_s8): Remove.
11161 (__arm_vshlltq_m_n_s16): Remove.
11162 (__arm_vshlltq_m_n_u8): Remove.
11163 (__arm_vshlltq_m_n_u16): Remove.
11164 (__arm_vshllbq_x_n_s8): Remove.
11165 (__arm_vshllbq_x_n_s16): Remove.
11166 (__arm_vshllbq_x_n_u8): Remove.
11167 (__arm_vshllbq_x_n_u16): Remove.
11168 (__arm_vshlltq_x_n_s8): Remove.
11169 (__arm_vshlltq_x_n_s16): Remove.
11170 (__arm_vshlltq_x_n_u8): Remove.
11171 (__arm_vshlltq_x_n_u16): Remove.
11172 (__arm_vshlltq): Remove.
11173 (__arm_vshllbq): Remove.
11174 (__arm_vshllbq_m): Remove.
11175 (__arm_vshlltq_m): Remove.
11176 (__arm_vshllbq_x): Remove.
11177 (__arm_vshlltq_x): Remove.
11179 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
11181 * config/arm/iterators.md (mve_insn): Add vshllb, vshllt.
11182 (VSHLLBQ_N, VSHLLTQ_N): Remove.
11184 (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
11185 (VSHLLxQ_M_N): New.
11186 * config/arm/mve.md (mve_vshllbq_n_<supf><mode>)
11187 (mve_vshlltq_n_<supf><mode>): Merge into ...
11188 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
11189 (mve_vshllbq_m_n_<supf><mode>, mve_vshlltq_m_n_<supf><mode>):
11191 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
11193 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
11195 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
11196 * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
11198 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
11200 * config/arm/arm-mve-builtins-base.cc (vmovnbq, vmovntq, vqmovnbq)
11201 (vqmovntq, vqmovunbq, vqmovuntq): New.
11202 * config/arm/arm-mve-builtins-base.def (vmovnbq, vmovntq)
11203 (vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq): New.
11204 * config/arm/arm-mve-builtins-base.h (vmovnbq, vmovntq, vqmovnbq)
11205 (vqmovntq, vqmovunbq, vqmovuntq): New.
11206 * config/arm/arm-mve-builtins.cc
11207 (function_instance::has_inactive_argument): Handle vmovnbq,
11208 vmovntq, vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq.
11209 * config/arm/arm_mve.h (vqmovntq): Remove.
11210 (vqmovnbq): Remove.
11211 (vqmovnbq_m): Remove.
11212 (vqmovntq_m): Remove.
11213 (vqmovntq_u16): Remove.
11214 (vqmovnbq_u16): Remove.
11215 (vqmovntq_s16): Remove.
11216 (vqmovnbq_s16): Remove.
11217 (vqmovntq_u32): Remove.
11218 (vqmovnbq_u32): Remove.
11219 (vqmovntq_s32): Remove.
11220 (vqmovnbq_s32): Remove.
11221 (vqmovnbq_m_s16): Remove.
11222 (vqmovntq_m_s16): Remove.
11223 (vqmovnbq_m_u16): Remove.
11224 (vqmovntq_m_u16): Remove.
11225 (vqmovnbq_m_s32): Remove.
11226 (vqmovntq_m_s32): Remove.
11227 (vqmovnbq_m_u32): Remove.
11228 (vqmovntq_m_u32): Remove.
11229 (__arm_vqmovntq_u16): Remove.
11230 (__arm_vqmovnbq_u16): Remove.
11231 (__arm_vqmovntq_s16): Remove.
11232 (__arm_vqmovnbq_s16): Remove.
11233 (__arm_vqmovntq_u32): Remove.
11234 (__arm_vqmovnbq_u32): Remove.
11235 (__arm_vqmovntq_s32): Remove.
11236 (__arm_vqmovnbq_s32): Remove.
11237 (__arm_vqmovnbq_m_s16): Remove.
11238 (__arm_vqmovntq_m_s16): Remove.
11239 (__arm_vqmovnbq_m_u16): Remove.
11240 (__arm_vqmovntq_m_u16): Remove.
11241 (__arm_vqmovnbq_m_s32): Remove.
11242 (__arm_vqmovntq_m_s32): Remove.
11243 (__arm_vqmovnbq_m_u32): Remove.
11244 (__arm_vqmovntq_m_u32): Remove.
11245 (__arm_vqmovntq): Remove.
11246 (__arm_vqmovnbq): Remove.
11247 (__arm_vqmovnbq_m): Remove.
11248 (__arm_vqmovntq_m): Remove.
11251 (vmovnbq_m): Remove.
11252 (vmovntq_m): Remove.
11253 (vmovntq_u16): Remove.
11254 (vmovnbq_u16): Remove.
11255 (vmovntq_s16): Remove.
11256 (vmovnbq_s16): Remove.
11257 (vmovntq_u32): Remove.
11258 (vmovnbq_u32): Remove.
11259 (vmovntq_s32): Remove.
11260 (vmovnbq_s32): Remove.
11261 (vmovnbq_m_s16): Remove.
11262 (vmovntq_m_s16): Remove.
11263 (vmovnbq_m_u16): Remove.
11264 (vmovntq_m_u16): Remove.
11265 (vmovnbq_m_s32): Remove.
11266 (vmovntq_m_s32): Remove.
11267 (vmovnbq_m_u32): Remove.
11268 (vmovntq_m_u32): Remove.
11269 (__arm_vmovntq_u16): Remove.
11270 (__arm_vmovnbq_u16): Remove.
11271 (__arm_vmovntq_s16): Remove.
11272 (__arm_vmovnbq_s16): Remove.
11273 (__arm_vmovntq_u32): Remove.
11274 (__arm_vmovnbq_u32): Remove.
11275 (__arm_vmovntq_s32): Remove.
11276 (__arm_vmovnbq_s32): Remove.
11277 (__arm_vmovnbq_m_s16): Remove.
11278 (__arm_vmovntq_m_s16): Remove.
11279 (__arm_vmovnbq_m_u16): Remove.
11280 (__arm_vmovntq_m_u16): Remove.
11281 (__arm_vmovnbq_m_s32): Remove.
11282 (__arm_vmovntq_m_s32): Remove.
11283 (__arm_vmovnbq_m_u32): Remove.
11284 (__arm_vmovntq_m_u32): Remove.
11285 (__arm_vmovntq): Remove.
11286 (__arm_vmovnbq): Remove.
11287 (__arm_vmovnbq_m): Remove.
11288 (__arm_vmovntq_m): Remove.
11289 (vqmovuntq): Remove.
11290 (vqmovunbq): Remove.
11291 (vqmovunbq_m): Remove.
11292 (vqmovuntq_m): Remove.
11293 (vqmovuntq_s16): Remove.
11294 (vqmovunbq_s16): Remove.
11295 (vqmovuntq_s32): Remove.
11296 (vqmovunbq_s32): Remove.
11297 (vqmovunbq_m_s16): Remove.
11298 (vqmovuntq_m_s16): Remove.
11299 (vqmovunbq_m_s32): Remove.
11300 (vqmovuntq_m_s32): Remove.
11301 (__arm_vqmovuntq_s16): Remove.
11302 (__arm_vqmovunbq_s16): Remove.
11303 (__arm_vqmovuntq_s32): Remove.
11304 (__arm_vqmovunbq_s32): Remove.
11305 (__arm_vqmovunbq_m_s16): Remove.
11306 (__arm_vqmovuntq_m_s16): Remove.
11307 (__arm_vqmovunbq_m_s32): Remove.
11308 (__arm_vqmovuntq_m_s32): Remove.
11309 (__arm_vqmovuntq): Remove.
11310 (__arm_vqmovunbq): Remove.
11311 (__arm_vqmovunbq_m): Remove.
11312 (__arm_vqmovuntq_m): Remove.
11314 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
11316 * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New.
11317 (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb,
11320 (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S,
11322 * config/arm/mve.md (mve_vmovnbq_<supf><mode>)
11323 (mve_vmovntq_<supf><mode>, mve_vqmovnbq_<supf><mode>)
11324 (mve_vqmovntq_<supf><mode>, mve_vqmovunbq_s<mode>)
11325 (mve_vqmovuntq_s<mode>): Merge into ...
11326 (@mve_<mve_insn>q_<supf><mode>): ... this.
11327 (mve_vmovnbq_m_<supf><mode>, mve_vmovntq_m_<supf><mode>)
11328 (mve_vqmovnbq_m_<supf><mode>, mve_vqmovntq_m_<supf><mode>)
11329 (mve_vqmovunbq_m_s<mode>, mve_vqmovuntq_m_s<mode>): Merge into ...
11330 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
11332 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
11334 * config/arm/arm-mve-builtins-shapes.cc (binary_move_narrow): New.
11335 (binary_move_narrow_unsigned): New.
11336 * config/arm/arm-mve-builtins-shapes.h (binary_move_narrow): New.
11337 (binary_move_narrow_unsigned): New.
11339 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
11341 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_F): New.
11342 (vrndaq, vrndmq, vrndnq, vrndpq, vrndq, vrndxq): New.
11343 * config/arm/arm-mve-builtins-base.def (vrndaq, vrndmq, vrndnq)
11344 (vrndpq, vrndq, vrndxq): New.
11345 * config/arm/arm-mve-builtins-base.h (vrndaq, vrndmq, vrndnq)
11346 (vrndpq, vrndq, vrndxq): New.
11347 * config/arm/arm_mve.h (vrndxq): Remove.
11353 (vrndaq_m): Remove.
11354 (vrndmq_m): Remove.
11355 (vrndnq_m): Remove.
11356 (vrndpq_m): Remove.
11358 (vrndxq_m): Remove.
11360 (vrndnq_x): Remove.
11361 (vrndmq_x): Remove.
11362 (vrndpq_x): Remove.
11363 (vrndaq_x): Remove.
11364 (vrndxq_x): Remove.
11365 (vrndxq_f16): Remove.
11366 (vrndxq_f32): Remove.
11367 (vrndq_f16): Remove.
11368 (vrndq_f32): Remove.
11369 (vrndpq_f16): Remove.
11370 (vrndpq_f32): Remove.
11371 (vrndnq_f16): Remove.
11372 (vrndnq_f32): Remove.
11373 (vrndmq_f16): Remove.
11374 (vrndmq_f32): Remove.
11375 (vrndaq_f16): Remove.
11376 (vrndaq_f32): Remove.
11377 (vrndaq_m_f16): Remove.
11378 (vrndmq_m_f16): Remove.
11379 (vrndnq_m_f16): Remove.
11380 (vrndpq_m_f16): Remove.
11381 (vrndq_m_f16): Remove.
11382 (vrndxq_m_f16): Remove.
11383 (vrndaq_m_f32): Remove.
11384 (vrndmq_m_f32): Remove.
11385 (vrndnq_m_f32): Remove.
11386 (vrndpq_m_f32): Remove.
11387 (vrndq_m_f32): Remove.
11388 (vrndxq_m_f32): Remove.
11389 (vrndq_x_f16): Remove.
11390 (vrndq_x_f32): Remove.
11391 (vrndnq_x_f16): Remove.
11392 (vrndnq_x_f32): Remove.
11393 (vrndmq_x_f16): Remove.
11394 (vrndmq_x_f32): Remove.
11395 (vrndpq_x_f16): Remove.
11396 (vrndpq_x_f32): Remove.
11397 (vrndaq_x_f16): Remove.
11398 (vrndaq_x_f32): Remove.
11399 (vrndxq_x_f16): Remove.
11400 (vrndxq_x_f32): Remove.
11401 (__arm_vrndxq_f16): Remove.
11402 (__arm_vrndxq_f32): Remove.
11403 (__arm_vrndq_f16): Remove.
11404 (__arm_vrndq_f32): Remove.
11405 (__arm_vrndpq_f16): Remove.
11406 (__arm_vrndpq_f32): Remove.
11407 (__arm_vrndnq_f16): Remove.
11408 (__arm_vrndnq_f32): Remove.
11409 (__arm_vrndmq_f16): Remove.
11410 (__arm_vrndmq_f32): Remove.
11411 (__arm_vrndaq_f16): Remove.
11412 (__arm_vrndaq_f32): Remove.
11413 (__arm_vrndaq_m_f16): Remove.
11414 (__arm_vrndmq_m_f16): Remove.
11415 (__arm_vrndnq_m_f16): Remove.
11416 (__arm_vrndpq_m_f16): Remove.
11417 (__arm_vrndq_m_f16): Remove.
11418 (__arm_vrndxq_m_f16): Remove.
11419 (__arm_vrndaq_m_f32): Remove.
11420 (__arm_vrndmq_m_f32): Remove.
11421 (__arm_vrndnq_m_f32): Remove.
11422 (__arm_vrndpq_m_f32): Remove.
11423 (__arm_vrndq_m_f32): Remove.
11424 (__arm_vrndxq_m_f32): Remove.
11425 (__arm_vrndq_x_f16): Remove.
11426 (__arm_vrndq_x_f32): Remove.
11427 (__arm_vrndnq_x_f16): Remove.
11428 (__arm_vrndnq_x_f32): Remove.
11429 (__arm_vrndmq_x_f16): Remove.
11430 (__arm_vrndmq_x_f32): Remove.
11431 (__arm_vrndpq_x_f16): Remove.
11432 (__arm_vrndpq_x_f32): Remove.
11433 (__arm_vrndaq_x_f16): Remove.
11434 (__arm_vrndaq_x_f32): Remove.
11435 (__arm_vrndxq_x_f16): Remove.
11436 (__arm_vrndxq_x_f32): Remove.
11437 (__arm_vrndxq): Remove.
11438 (__arm_vrndq): Remove.
11439 (__arm_vrndpq): Remove.
11440 (__arm_vrndnq): Remove.
11441 (__arm_vrndmq): Remove.
11442 (__arm_vrndaq): Remove.
11443 (__arm_vrndaq_m): Remove.
11444 (__arm_vrndmq_m): Remove.
11445 (__arm_vrndnq_m): Remove.
11446 (__arm_vrndpq_m): Remove.
11447 (__arm_vrndq_m): Remove.
11448 (__arm_vrndxq_m): Remove.
11449 (__arm_vrndq_x): Remove.
11450 (__arm_vrndnq_x): Remove.
11451 (__arm_vrndmq_x): Remove.
11452 (__arm_vrndpq_x): Remove.
11453 (__arm_vrndaq_x): Remove.
11454 (__arm_vrndxq_x): Remove.
11456 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
11458 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N_NO_U_F): New.
11459 (vabsq, vnegq, vclsq, vclzq, vqabsq, vqnegq): New.
11460 * config/arm/arm-mve-builtins-base.def (vabsq, vnegq, vclsq)
11461 (vclzq, vqabsq, vqnegq): New.
11462 * config/arm/arm-mve-builtins-base.h (vabsq, vnegq, vclsq, vclzq)
11463 (vqabsq, vqnegq): New.
11464 * config/arm/arm_mve.h (vabsq): Remove.
11467 (vabsq_f16): Remove.
11468 (vabsq_f32): Remove.
11469 (vabsq_s8): Remove.
11470 (vabsq_s16): Remove.
11471 (vabsq_s32): Remove.
11472 (vabsq_m_s8): Remove.
11473 (vabsq_m_s16): Remove.
11474 (vabsq_m_s32): Remove.
11475 (vabsq_m_f16): Remove.
11476 (vabsq_m_f32): Remove.
11477 (vabsq_x_s8): Remove.
11478 (vabsq_x_s16): Remove.
11479 (vabsq_x_s32): Remove.
11480 (vabsq_x_f16): Remove.
11481 (vabsq_x_f32): Remove.
11482 (__arm_vabsq_s8): Remove.
11483 (__arm_vabsq_s16): Remove.
11484 (__arm_vabsq_s32): Remove.
11485 (__arm_vabsq_m_s8): Remove.
11486 (__arm_vabsq_m_s16): Remove.
11487 (__arm_vabsq_m_s32): Remove.
11488 (__arm_vabsq_x_s8): Remove.
11489 (__arm_vabsq_x_s16): Remove.
11490 (__arm_vabsq_x_s32): Remove.
11491 (__arm_vabsq_f16): Remove.
11492 (__arm_vabsq_f32): Remove.
11493 (__arm_vabsq_m_f16): Remove.
11494 (__arm_vabsq_m_f32): Remove.
11495 (__arm_vabsq_x_f16): Remove.
11496 (__arm_vabsq_x_f32): Remove.
11497 (__arm_vabsq): Remove.
11498 (__arm_vabsq_m): Remove.
11499 (__arm_vabsq_x): Remove.
11503 (vnegq_f16): Remove.
11504 (vnegq_f32): Remove.
11505 (vnegq_s8): Remove.
11506 (vnegq_s16): Remove.
11507 (vnegq_s32): Remove.
11508 (vnegq_m_s8): Remove.
11509 (vnegq_m_s16): Remove.
11510 (vnegq_m_s32): Remove.
11511 (vnegq_m_f16): Remove.
11512 (vnegq_m_f32): Remove.
11513 (vnegq_x_s8): Remove.
11514 (vnegq_x_s16): Remove.
11515 (vnegq_x_s32): Remove.
11516 (vnegq_x_f16): Remove.
11517 (vnegq_x_f32): Remove.
11518 (__arm_vnegq_s8): Remove.
11519 (__arm_vnegq_s16): Remove.
11520 (__arm_vnegq_s32): Remove.
11521 (__arm_vnegq_m_s8): Remove.
11522 (__arm_vnegq_m_s16): Remove.
11523 (__arm_vnegq_m_s32): Remove.
11524 (__arm_vnegq_x_s8): Remove.
11525 (__arm_vnegq_x_s16): Remove.
11526 (__arm_vnegq_x_s32): Remove.
11527 (__arm_vnegq_f16): Remove.
11528 (__arm_vnegq_f32): Remove.
11529 (__arm_vnegq_m_f16): Remove.
11530 (__arm_vnegq_m_f32): Remove.
11531 (__arm_vnegq_x_f16): Remove.
11532 (__arm_vnegq_x_f32): Remove.
11533 (__arm_vnegq): Remove.
11534 (__arm_vnegq_m): Remove.
11535 (__arm_vnegq_x): Remove.
11539 (vclsq_s8): Remove.
11540 (vclsq_s16): Remove.
11541 (vclsq_s32): Remove.
11542 (vclsq_m_s8): Remove.
11543 (vclsq_m_s16): Remove.
11544 (vclsq_m_s32): Remove.
11545 (vclsq_x_s8): Remove.
11546 (vclsq_x_s16): Remove.
11547 (vclsq_x_s32): Remove.
11548 (__arm_vclsq_s8): Remove.
11549 (__arm_vclsq_s16): Remove.
11550 (__arm_vclsq_s32): Remove.
11551 (__arm_vclsq_m_s8): Remove.
11552 (__arm_vclsq_m_s16): Remove.
11553 (__arm_vclsq_m_s32): Remove.
11554 (__arm_vclsq_x_s8): Remove.
11555 (__arm_vclsq_x_s16): Remove.
11556 (__arm_vclsq_x_s32): Remove.
11557 (__arm_vclsq): Remove.
11558 (__arm_vclsq_m): Remove.
11559 (__arm_vclsq_x): Remove.
11563 (vclzq_s8): Remove.
11564 (vclzq_s16): Remove.
11565 (vclzq_s32): Remove.
11566 (vclzq_u8): Remove.
11567 (vclzq_u16): Remove.
11568 (vclzq_u32): Remove.
11569 (vclzq_m_u8): Remove.
11570 (vclzq_m_s8): Remove.
11571 (vclzq_m_u16): Remove.
11572 (vclzq_m_s16): Remove.
11573 (vclzq_m_u32): Remove.
11574 (vclzq_m_s32): Remove.
11575 (vclzq_x_s8): Remove.
11576 (vclzq_x_s16): Remove.
11577 (vclzq_x_s32): Remove.
11578 (vclzq_x_u8): Remove.
11579 (vclzq_x_u16): Remove.
11580 (vclzq_x_u32): Remove.
11581 (__arm_vclzq_s8): Remove.
11582 (__arm_vclzq_s16): Remove.
11583 (__arm_vclzq_s32): Remove.
11584 (__arm_vclzq_u8): Remove.
11585 (__arm_vclzq_u16): Remove.
11586 (__arm_vclzq_u32): Remove.
11587 (__arm_vclzq_m_u8): Remove.
11588 (__arm_vclzq_m_s8): Remove.
11589 (__arm_vclzq_m_u16): Remove.
11590 (__arm_vclzq_m_s16): Remove.
11591 (__arm_vclzq_m_u32): Remove.
11592 (__arm_vclzq_m_s32): Remove.
11593 (__arm_vclzq_x_s8): Remove.
11594 (__arm_vclzq_x_s16): Remove.
11595 (__arm_vclzq_x_s32): Remove.
11596 (__arm_vclzq_x_u8): Remove.
11597 (__arm_vclzq_x_u16): Remove.
11598 (__arm_vclzq_x_u32): Remove.
11599 (__arm_vclzq): Remove.
11600 (__arm_vclzq_m): Remove.
11601 (__arm_vclzq_x): Remove.
11604 (vqnegq_m): Remove.
11605 (vqabsq_m): Remove.
11606 (vqabsq_s8): Remove.
11607 (vqabsq_s16): Remove.
11608 (vqabsq_s32): Remove.
11609 (vqnegq_s8): Remove.
11610 (vqnegq_s16): Remove.
11611 (vqnegq_s32): Remove.
11612 (vqnegq_m_s8): Remove.
11613 (vqabsq_m_s8): Remove.
11614 (vqnegq_m_s16): Remove.
11615 (vqabsq_m_s16): Remove.
11616 (vqnegq_m_s32): Remove.
11617 (vqabsq_m_s32): Remove.
11618 (__arm_vqabsq_s8): Remove.
11619 (__arm_vqabsq_s16): Remove.
11620 (__arm_vqabsq_s32): Remove.
11621 (__arm_vqnegq_s8): Remove.
11622 (__arm_vqnegq_s16): Remove.
11623 (__arm_vqnegq_s32): Remove.
11624 (__arm_vqnegq_m_s8): Remove.
11625 (__arm_vqabsq_m_s8): Remove.
11626 (__arm_vqnegq_m_s16): Remove.
11627 (__arm_vqabsq_m_s16): Remove.
11628 (__arm_vqnegq_m_s32): Remove.
11629 (__arm_vqabsq_m_s32): Remove.
11630 (__arm_vqabsq): Remove.
11631 (__arm_vqnegq): Remove.
11632 (__arm_vqnegq_m): Remove.
11633 (__arm_vqabsq_m): Remove.
11635 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
11637 * config/arm/iterators.md (MVE_INT_M_UNARY, MVE_INT_UNARY)
11638 (MVE_FP_UNARY, MVE_FP_M_UNARY): New.
11639 (mve_insn): Add vabs, vcls, vclz, vneg, vqabs, vqneg, vrnda,
11640 vrndm, vrndn, vrndp, vrnd, vrndx.
11641 (isu): Add VABSQ_M_S, VCLSQ_M_S, VCLZQ_M_S, VCLZQ_M_U, VNEGQ_M_S,
11642 VQABSQ_M_S, VQNEGQ_M_S.
11644 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrndxq_f<mode>)
11645 (mve_vrndq_f<mode>, mve_vrndpq_f<mode>, mve_vrndnq_f<mode>)
11646 (mve_vrndmq_f<mode>, mve_vrndaq_f<mode>): Merge into ...
11647 (@mve_<mve_insn>q_f<mode>): ... this.
11648 (mve_vnegq_f<mode>, mve_vabsq_f<mode>): Merge into ...
11649 (mve_v<absneg_str>q_f<mode>): ... this.
11650 (mve_vnegq_s<mode>, mve_vabsq_s<mode>): Merge into ...
11651 (mve_v<absneg_str>q_s<mode>): ... this.
11652 (mve_vclsq_s<mode>, mve_vqnegq_s<mode>, mve_vqabsq_s<mode>): Merge into ...
11653 (@mve_<mve_insn>q_<supf><mode>): ... this.
11654 (mve_vabsq_m_s<mode>, mve_vclsq_m_s<mode>)
11655 (mve_vclzq_m_<supf><mode>, mve_vnegq_m_s<mode>)
11656 (mve_vqabsq_m_s<mode>, mve_vqnegq_m_s<mode>): Merge into ...
11657 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
11658 (mve_vabsq_m_f<mode>, mve_vnegq_m_f<mode>, mve_vrndaq_m_f<mode>)
11659 (mve_vrndmq_m_f<mode>, mve_vrndnq_m_f<mode>, mve_vrndpq_m_f<mode>)
11660 (mve_vrndxq_m_f<mode>): Merge into ...
11661 (@mve_<mve_insn>q_m_f<mode>): ... this.
11663 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
11665 * config/arm/arm-mve-builtins-shapes.cc (unary): New.
11666 * config/arm/arm-mve-builtins-shapes.h (unary): New.
11668 2023-05-09 Jakub Jelinek <jakub@redhat.com>
11670 * mux-utils.h: Fix comment typo, avoides -> avoids.
11672 2023-05-09 Jakub Jelinek <jakub@redhat.com>
11674 PR tree-optimization/109778
11675 * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on
11676 wi::zext (x, width) rather than x if width != precision, rather
11677 than using wi::zext (right, width) after the shift.
11678 * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results
11679 of wi::lrotate or wi::rrotate.
11681 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
11683 * genmatch.cc (get_out_file): Make static and rename to ...
11684 (choose_output): ... this. Reimplement. Update all uses ...
11685 (decision_tree::gen): ... here and ...
11688 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
11690 * genmatch.cc (showUsage): Reimplement as ...
11691 (usage): ...this. Adjust all uses.
11692 (main): Print usage when no arguments. Add missing 'return 1'.
11694 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
11696 * genmatch.cc (header_file): Make static.
11697 (emit_func): Rename to...
11698 (fp_decl): ... this. Adjust all uses.
11699 (fp_decl_done): New function. Use it...
11700 (decision_tree::gen): ... here and...
11701 (write_predicate): ... here.
11704 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
11706 * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
11709 2023-05-08 Roger Sayle <roger@nextmovesoftware.com>
11710 Uros Bizjak <ubizjak@gmail.com>
11712 * config/i386/i386.md (any_or_plus): Move definition earlier.
11713 (*insvti_highpart_1): New define_insn_and_split to overwrite
11714 (insv) the highpart of a TImode register/memory.
11716 2023-05-08 Eugene Rozenfeld <erozen@microsoft.com>
11718 * auto-profile.cc (auto_profile): Check todo from early_inline
11719 to see if cleanup_tree_vfg needs to be called.
11720 (early_inline): Return todo from early_inliner.
11722 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
11724 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info):
11726 (pass_vsetvl::get_block_info): New.
11727 (pass_vsetvl::update_vector_info): New.
11728 (pass_vsetvl::simple_vsetvl): Use get_vector_info.
11729 (pass_vsetvl::compute_local_backward_infos): Ditto.
11730 (pass_vsetvl::transfer_before): Ditto.
11731 (pass_vsetvl::transfer_after): Ditto.
11732 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
11733 (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
11734 (pass_vsetvl::cleanup_insns): Ditto.
11735 (pass_vsetvl::compute_local_backward_infos): Use
11736 update_vector_info.
11738 2023-05-08 Jeff Law <jlaw@ventanamicro>
11740 * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
11742 2023-05-08 Richard Biener <rguenther@suse.de>
11743 Michael Meissner <meissner@linux.ibm.com>
11745 PR middle-end/108623
11746 * tree-core.h (tree_type_common): Bump up precision field to 16 bits.
11747 Align bit fields > 1 bit to at least an 8-bit boundary.
11749 2023-05-08 Andrew Pinski <apinski@marvell.com>
11751 PR tree-optimization/109424
11752 PR tree-optimization/59424
11753 * tree-ssa-phiopt.cc (factor_out_conditional_conversion): Rename to ...
11754 (factor_out_conditional_operation): This and add support for all unary
11756 (pass_phiopt::execute): Update call to factor_out_conditional_conversion
11757 to call factor_out_conditional_operation instead.
11759 2023-05-08 Andrew Pinski <apinski@marvell.com>
11761 * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
11762 over factor_out_conditional_conversion.
11764 2023-05-08 Andrew Pinski <apinski@marvell.com>
11766 PR tree-optimization/49959
11767 PR tree-optimization/103771
11768 * tree-ssa-phiopt.cc (pass_phiopt::execute): Support
11769 Diamond shapped bb form for factor_out_conditional_conversion.
11771 2023-05-08 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11773 * config/riscv/autovec.md (movmisalign<mode>): New pattern.
11774 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): Delete.
11775 (riscv_vector_get_mask_mode): Ditto.
11776 (get_mask_policy_no_pred): Ditto.
11777 (get_tail_policy_no_pred): Ditto.
11778 (get_mask_mode): New function.
11779 * config/riscv/riscv-v.cc (get_mask_policy_no_pred): Delete.
11780 (get_tail_policy_no_pred): Ditto.
11781 (riscv_vector_mask_mode_p): Ditto.
11782 (riscv_vector_get_mask_mode): Ditto.
11783 (get_mask_mode): New function.
11784 * config/riscv/riscv-vector-builtins.cc (use_real_merge_p): Remove
11786 (get_tail_policy_for_pred): Ditto.
11787 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred): Ditto.
11788 (get_mask_policy_for_pred): Ditto
11789 * config/riscv/riscv.cc (riscv_get_mask_mode): Refine codes.
11791 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
11793 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi): New.
11794 (riscv_select_multilib): New.
11795 (riscv_compute_multilib): Extract logic to riscv_select_multilib and
11796 also handle select_by_abi.
11797 * config/riscv/elf.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Change it
11798 to select_by_abi_arch_cmodel from 1.
11799 * config/riscv/linux.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Define.
11800 * config/riscv/riscv-opts.h (enum riscv_multilib_select_kind): New.
11802 2023-05-08 Alexander Monakov <amonakov@ispras.ru>
11804 * Makefile.in: (gimple-match-head.o-warn): Remove.
11805 (GIMPLE_MATCH_PD_SEQ_SRC): Do not depend on
11806 gimple-match-exports.cc.
11807 (gimple-match-auto.h): Only depend on s-gimple-match.
11808 (generic-match-auto.h): Likewise.
11810 2023-05-08 Andrew Pinski <apinski@marvell.com>
11812 PR tree-optimization/109691
11813 * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
11815 If the removed statement can throw, have need_eh_cleanup
11816 include the bb of that statement.
11817 * tree-ssa-dce.h (simple_dce_from_worklist): Update declaration.
11818 * tree-ssa-propagate.cc (struct prop_stats_d): Remove
11820 (substitute_and_fold_dom_walker::substitute_and_fold_dom_walker):
11821 Initialize dceworklist instead of stmts_to_remove.
11822 (substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker):
11823 Destore dceworklist instead of stmts_to_remove.
11824 (substitute_and_fold_dom_walker::before_dom_children):
11825 Set dceworklist instead of adding to stmts_to_remove.
11826 (substitute_and_fold_engine::substitute_and_fold):
11827 Call simple_dce_from_worklist instead of poping
11829 Don't update the stat on removal statements.
11831 2023-05-07 Andrew Pinski <apinski@marvell.com>
11834 * config/aarch64/aarch64-builtins.cc (aarch64_simd_switcher::aarch64_simd_switcher):
11835 Change argument type to aarch64_feature_flags.
11836 * config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Change
11837 constructor argument type to aarch64_feature_flags.
11838 Change m_old_asm_isa_flags to be aarch64_feature_flags.
11840 2023-05-07 Jiufu Guo <guojiufu@linux.ibm.com>
11842 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
11843 more parallel code if can_create_pseudo_p.
11845 2023-05-07 Roger Sayle <roger@nextmovesoftware.com>
11848 * lower-subreg.cc (resolve_simple_move): Don't emit a clobber
11849 immediately before moving a multi-word register by parts.
11851 2023-05-06 Jeff Law <jlaw@ventanamicro>
11853 * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
11855 2023-05-06 Michael Collison <collison@rivosinc.com>
11857 * tree-vect-slp.cc (can_duplicate_and_interleave_p):
11858 Check that GET_MODE_NUNITS is a multiple of 2.
11860 2023-05-06 Michael Collison <collison@rivosinc.com>
11862 * config/riscv/riscv.cc
11863 (riscv_estimated_poly_value): Implement
11864 TARGET_ESTIMATED_POLY_VALUE.
11865 (riscv_preferred_simd_mode): Implement
11866 TARGET_VECTORIZE_PREFERRED_SIMD_MODE.
11867 (riscv_get_mask_mode): Implement TARGET_VECTORIZE_GET_MASK_MODE.
11868 (riscv_empty_mask_is_expensive): Implement
11869 TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE.
11870 (riscv_vectorize_create_costs): Implement
11871 TARGET_VECTORIZE_CREATE_COSTS.
11872 (riscv_support_vector_misalignment): Implement
11873 TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT.
11874 (TARGET_ESTIMATED_POLY_VALUE): Register target macro.
11875 (TARGET_VECTORIZE_GET_MASK_MODE): Ditto.
11876 (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Ditto.
11877 (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
11879 2023-05-06 Jeff Law <jlaw@ventanamicro>
11881 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
11882 duplicate definition.
11884 2023-05-06 Michael Collison <collison@rivosinc.com>
11886 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): New function.
11887 (riscv_vector_preferred_simd_mode): Ditto.
11888 (get_mask_policy_no_pred): Ditto.
11889 (get_tail_policy_no_pred): Ditto.
11890 (riscv_vector_mask_mode_p): Ditto.
11891 (riscv_vector_get_mask_mode): Ditto.
11893 2023-05-06 Michael Collison <collison@rivosinc.com>
11895 * config/riscv/riscv-vector-builtins.cc (get_tail_policy_for_pred):
11896 Remove static declaration to to make externally visible.
11897 (get_mask_policy_for_pred): Ditto.
11898 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred):
11899 New external declaration.
11900 (get_mask_policy_for_pred): Ditto.
11902 2023-05-06 Michael Collison <collison@rivosinc.com>
11904 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): New.
11905 (riscv_vector_get_mask_mode): Ditto.
11906 (get_mask_policy_no_pred): Ditto.
11907 (get_tail_policy_no_pred): Ditto.
11909 2023-05-06 Xi Ruoyao <xry111@xry111.site>
11911 * config/loongarch/loongarch.h (struct machine_function): Add
11912 reg_is_wrapped_separately array for register wrapping
11914 * config/loongarch/loongarch.cc
11915 (loongarch_get_separate_components): New function.
11916 (loongarch_components_for_bb): Likewise.
11917 (loongarch_disqualify_components): Likewise.
11918 (loongarch_process_components): Likewise.
11919 (loongarch_emit_prologue_components): Likewise.
11920 (loongarch_emit_epilogue_components): Likewise.
11921 (loongarch_set_handled_components): Likewise.
11922 (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define.
11923 (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise.
11924 (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise.
11925 (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise.
11926 (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise.
11927 (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise.
11928 (loongarch_for_each_saved_reg): Skip registers that are wrapped
11931 2023-05-06 Xi Ruoyao <xry111@xry111.site>
11934 * Makefile.in (s-macro_list): Pass -nostdinc to
11937 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11939 * config/riscv/riscv-protos.h (preferred_simd_mode): New function.
11940 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto.
11941 (preferred_simd_mode): Ditto.
11942 * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function arg.
11943 (riscv_convert_vector_bits): Adjust for RVV auto-vectorization.
11944 (riscv_preferred_simd_mode): New function.
11945 (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): New target hook support.
11946 * config/riscv/vector.md: Add autovec.md.
11947 * config/riscv/autovec.md: New file.
11949 2023-05-06 Jakub Jelinek <jakub@redhat.com>
11951 * real.h (dconst_pi): Define.
11952 (dconst_e_ptr): Formatting fix.
11953 (dconst_pi_ptr): Declare.
11954 * real.cc (dconst_pi_ptr): New function.
11955 * gimple-range-op.cc (cfn_sincos::fold_range): Intersect the generic
11956 boundaries range with range computed from sin/cos of the particular
11957 bounds if the argument range is shorter than 2*pi.
11958 (cfn_sincos::op1_range): Take bulps into account when determining
11959 which result ranges are always invalid or behave like known NAN.
11961 2023-05-06 Aldy Hernandez <aldyh@redhat.com>
11963 * gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not
11964 pass type to vrange_storage::equal_p.
11965 * value-range-storage.cc (vrange_storage::equal_p): Remove type.
11966 (irange_storage::equal_p): Same.
11967 (frange_storage::equal_p): Same.
11968 * value-range-storage.h (class frange_storage): Same.
11970 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
11973 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it.
11974 (pass_vsetvl::local_eliminate_vsetvl_insn): New function.
11976 2023-05-06 liuhongt <hongtao.liu@intel.com>
11978 * combine.cc (maybe_swap_commutative_operands): Canonicalize
11979 vec_merge when mask is constant.
11980 * doc/md.texi: Document vec_merge canonicalization.
11982 2023-05-06 Jakub Jelinek <jakub@redhat.com>
11984 * value-range.h (frange_arithmetic): Declare.
11985 * range-op-float.cc (frange_arithmetic): No longer static.
11986 * gimple-range-op.cc (frange_mpfr_arg1): New function.
11987 (cfn_sqrt::fold_range): Intersect the generic boundaries range
11988 with range computed from sqrt of the particular bounds.
11989 (cfn_sqrt::op1_range): Intersect the generic boundaries range
11990 with range computed from squared particular bounds.
11992 2023-05-06 Jakub Jelinek <jakub@redhat.com>
11994 * Makefile.in (check_p_numbers): Rename to one_to_9999, move
11995 earlier with helper variables also renamed.
11996 (MATCH_SPLUT_SEQ): Use $(wordlist 1,$(NUM_MATCH_SPLITS),$(one_to_9999))
11997 instead of $(shell seq 1 $(NUM_MATCH_SPLITS)).
11998 (check_p_subdirs): Use $(one_to_9999) instead of $(check_p_numbers).
12000 2023-05-06 Hans-Peter Nilsson <hp@axis.com>
12002 * config/cris/cris.md (splitop): Add PLUS.
12003 * config/cris/cris.cc (cris_split_constant): Also handle
12004 PLUS when a split into two insns may be useful.
12006 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
12008 * config/cris/cris.md (movandsplit1): New define_peephole2.
12010 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
12012 * config/cris/cris.md (lsrandsplit1): New define_peephole2.
12014 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
12016 * doc/md.texi (define_peephole2): Document order of scanning.
12018 2023-05-05 Pan Li <pan2.li@intel.com>
12019 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
12021 * config/riscv/vector.md: Allow const as the operand of RVV
12022 indexed load/store.
12024 2023-05-05 Pan Li <pan2.li@intel.com>
12026 * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
12027 consumed by simplify_rtx.
12029 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
12031 * config/arm/arm-mve-builtins-base.cc (vrshrq, vshrq): New.
12032 * config/arm/arm-mve-builtins-base.def (vrshrq, vshrq): New.
12033 * config/arm/arm-mve-builtins-base.h (vrshrq, vshrq): New.
12034 * config/arm/arm_mve.h (vshrq): Remove.
12036 (vrshrq_m): Remove.
12038 (vrshrq_x): Remove.
12040 (vshrq_n_s8): Remove.
12041 (vshrq_n_s16): Remove.
12042 (vshrq_n_s32): Remove.
12043 (vshrq_n_u8): Remove.
12044 (vshrq_n_u16): Remove.
12045 (vshrq_n_u32): Remove.
12046 (vrshrq_n_u8): Remove.
12047 (vrshrq_n_s8): Remove.
12048 (vrshrq_n_u16): Remove.
12049 (vrshrq_n_s16): Remove.
12050 (vrshrq_n_u32): Remove.
12051 (vrshrq_n_s32): Remove.
12052 (vrshrq_m_n_s8): Remove.
12053 (vrshrq_m_n_s32): Remove.
12054 (vrshrq_m_n_s16): Remove.
12055 (vrshrq_m_n_u8): Remove.
12056 (vrshrq_m_n_u32): Remove.
12057 (vrshrq_m_n_u16): Remove.
12058 (vshrq_m_n_s8): Remove.
12059 (vshrq_m_n_s32): Remove.
12060 (vshrq_m_n_s16): Remove.
12061 (vshrq_m_n_u8): Remove.
12062 (vshrq_m_n_u32): Remove.
12063 (vshrq_m_n_u16): Remove.
12064 (vrshrq_x_n_s8): Remove.
12065 (vrshrq_x_n_s16): Remove.
12066 (vrshrq_x_n_s32): Remove.
12067 (vrshrq_x_n_u8): Remove.
12068 (vrshrq_x_n_u16): Remove.
12069 (vrshrq_x_n_u32): Remove.
12070 (vshrq_x_n_s8): Remove.
12071 (vshrq_x_n_s16): Remove.
12072 (vshrq_x_n_s32): Remove.
12073 (vshrq_x_n_u8): Remove.
12074 (vshrq_x_n_u16): Remove.
12075 (vshrq_x_n_u32): Remove.
12076 (__arm_vshrq_n_s8): Remove.
12077 (__arm_vshrq_n_s16): Remove.
12078 (__arm_vshrq_n_s32): Remove.
12079 (__arm_vshrq_n_u8): Remove.
12080 (__arm_vshrq_n_u16): Remove.
12081 (__arm_vshrq_n_u32): Remove.
12082 (__arm_vrshrq_n_u8): Remove.
12083 (__arm_vrshrq_n_s8): Remove.
12084 (__arm_vrshrq_n_u16): Remove.
12085 (__arm_vrshrq_n_s16): Remove.
12086 (__arm_vrshrq_n_u32): Remove.
12087 (__arm_vrshrq_n_s32): Remove.
12088 (__arm_vrshrq_m_n_s8): Remove.
12089 (__arm_vrshrq_m_n_s32): Remove.
12090 (__arm_vrshrq_m_n_s16): Remove.
12091 (__arm_vrshrq_m_n_u8): Remove.
12092 (__arm_vrshrq_m_n_u32): Remove.
12093 (__arm_vrshrq_m_n_u16): Remove.
12094 (__arm_vshrq_m_n_s8): Remove.
12095 (__arm_vshrq_m_n_s32): Remove.
12096 (__arm_vshrq_m_n_s16): Remove.
12097 (__arm_vshrq_m_n_u8): Remove.
12098 (__arm_vshrq_m_n_u32): Remove.
12099 (__arm_vshrq_m_n_u16): Remove.
12100 (__arm_vrshrq_x_n_s8): Remove.
12101 (__arm_vrshrq_x_n_s16): Remove.
12102 (__arm_vrshrq_x_n_s32): Remove.
12103 (__arm_vrshrq_x_n_u8): Remove.
12104 (__arm_vrshrq_x_n_u16): Remove.
12105 (__arm_vrshrq_x_n_u32): Remove.
12106 (__arm_vshrq_x_n_s8): Remove.
12107 (__arm_vshrq_x_n_s16): Remove.
12108 (__arm_vshrq_x_n_s32): Remove.
12109 (__arm_vshrq_x_n_u8): Remove.
12110 (__arm_vshrq_x_n_u16): Remove.
12111 (__arm_vshrq_x_n_u32): Remove.
12112 (__arm_vshrq): Remove.
12113 (__arm_vrshrq): Remove.
12114 (__arm_vrshrq_m): Remove.
12115 (__arm_vshrq_m): Remove.
12116 (__arm_vrshrq_x): Remove.
12117 (__arm_vshrq_x): Remove.
12119 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
12121 * config/arm/iterators.md (MVE_VSHRQ_M_N, MVE_VSHRQ_N): New.
12122 (mve_insn): Add vrshr, vshr.
12123 * config/arm/mve.md (mve_vshrq_n_<supf><mode>)
12124 (mve_vrshrq_n_<supf><mode>): Merge into ...
12125 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
12126 (mve_vrshrq_m_n_<supf><mode>, mve_vshrq_m_n_<supf><mode>): Merge
12128 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
12130 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
12132 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
12133 * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
12135 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
12137 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_U_F): New.
12138 (vqshrunbq, vqshruntq, vqrshrunbq, vqrshruntq): New.
12139 * config/arm/arm-mve-builtins-base.def (vqshrunbq, vqshruntq)
12140 (vqrshrunbq, vqrshruntq): New.
12141 * config/arm/arm-mve-builtins-base.h (vqshrunbq, vqshruntq)
12142 (vqrshrunbq, vqrshruntq): New.
12143 * config/arm/arm-mve-builtins.cc
12144 (function_instance::has_inactive_argument): Handle vqshrunbq,
12145 vqshruntq, vqrshrunbq, vqrshruntq.
12146 * config/arm/arm_mve.h (vqrshrunbq): Remove.
12147 (vqrshruntq): Remove.
12148 (vqrshrunbq_m): Remove.
12149 (vqrshruntq_m): Remove.
12150 (vqrshrunbq_n_s16): Remove.
12151 (vqrshrunbq_n_s32): Remove.
12152 (vqrshruntq_n_s16): Remove.
12153 (vqrshruntq_n_s32): Remove.
12154 (vqrshrunbq_m_n_s32): Remove.
12155 (vqrshrunbq_m_n_s16): Remove.
12156 (vqrshruntq_m_n_s32): Remove.
12157 (vqrshruntq_m_n_s16): Remove.
12158 (__arm_vqrshrunbq_n_s16): Remove.
12159 (__arm_vqrshrunbq_n_s32): Remove.
12160 (__arm_vqrshruntq_n_s16): Remove.
12161 (__arm_vqrshruntq_n_s32): Remove.
12162 (__arm_vqrshrunbq_m_n_s32): Remove.
12163 (__arm_vqrshrunbq_m_n_s16): Remove.
12164 (__arm_vqrshruntq_m_n_s32): Remove.
12165 (__arm_vqrshruntq_m_n_s16): Remove.
12166 (__arm_vqrshrunbq): Remove.
12167 (__arm_vqrshruntq): Remove.
12168 (__arm_vqrshrunbq_m): Remove.
12169 (__arm_vqrshruntq_m): Remove.
12170 (vqshrunbq): Remove.
12171 (vqshruntq): Remove.
12172 (vqshrunbq_m): Remove.
12173 (vqshruntq_m): Remove.
12174 (vqshrunbq_n_s16): Remove.
12175 (vqshruntq_n_s16): Remove.
12176 (vqshrunbq_n_s32): Remove.
12177 (vqshruntq_n_s32): Remove.
12178 (vqshrunbq_m_n_s32): Remove.
12179 (vqshrunbq_m_n_s16): Remove.
12180 (vqshruntq_m_n_s32): Remove.
12181 (vqshruntq_m_n_s16): Remove.
12182 (__arm_vqshrunbq_n_s16): Remove.
12183 (__arm_vqshruntq_n_s16): Remove.
12184 (__arm_vqshrunbq_n_s32): Remove.
12185 (__arm_vqshruntq_n_s32): Remove.
12186 (__arm_vqshrunbq_m_n_s32): Remove.
12187 (__arm_vqshrunbq_m_n_s16): Remove.
12188 (__arm_vqshruntq_m_n_s32): Remove.
12189 (__arm_vqshruntq_m_n_s16): Remove.
12190 (__arm_vqshrunbq): Remove.
12191 (__arm_vqshruntq): Remove.
12192 (__arm_vqshrunbq_m): Remove.
12193 (__arm_vqshruntq_m): Remove.
12195 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
12197 * config/arm/iterators.md (MVE_SHRN_N): Add VQRSHRUNBQ,
12198 VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
12199 (MVE_SHRN_M_N): Likewise.
12200 (mve_insn): Add vqrshrunb, vqrshrunt, vqshrunb, vqshrunt.
12201 (isu): Add VQRSHRUNBQ, VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
12203 * config/arm/mve.md (mve_vqrshrunbq_n_s<mode>): Remove.
12204 (mve_vqrshruntq_n_s<mode>): Remove.
12205 (mve_vqshrunbq_n_s<mode>): Remove.
12206 (mve_vqshruntq_n_s<mode>): Remove.
12207 (mve_vqrshrunbq_m_n_s<mode>): Remove.
12208 (mve_vqrshruntq_m_n_s<mode>): Remove.
12209 (mve_vqshrunbq_m_n_s<mode>): Remove.
12210 (mve_vqshruntq_m_n_s<mode>): Remove.
12212 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
12214 * config/arm/arm-mve-builtins-shapes.cc
12215 (binary_rshift_narrow_unsigned): New.
12216 * config/arm/arm-mve-builtins-shapes.h
12217 (binary_rshift_narrow_unsigned): New.
12219 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
12221 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_F): New.
12222 (vshrnbq, vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq)
12223 (vqrshrnbq, vqrshrntq): New.
12224 * config/arm/arm-mve-builtins-base.def (vshrnbq, vshrntq)
12225 (vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq):
12227 * config/arm/arm-mve-builtins-base.h (vshrnbq, vshrntq, vrshrnbq)
12228 (vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq): New.
12229 * config/arm/arm-mve-builtins.cc
12230 (function_instance::has_inactive_argument): Handle vshrnbq,
12231 vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq,
12233 * config/arm/arm_mve.h (vshrnbq): Remove.
12235 (vshrnbq_m): Remove.
12236 (vshrntq_m): Remove.
12237 (vshrnbq_n_s16): Remove.
12238 (vshrntq_n_s16): Remove.
12239 (vshrnbq_n_u16): Remove.
12240 (vshrntq_n_u16): Remove.
12241 (vshrnbq_n_s32): Remove.
12242 (vshrntq_n_s32): Remove.
12243 (vshrnbq_n_u32): Remove.
12244 (vshrntq_n_u32): Remove.
12245 (vshrnbq_m_n_s32): Remove.
12246 (vshrnbq_m_n_s16): Remove.
12247 (vshrnbq_m_n_u32): Remove.
12248 (vshrnbq_m_n_u16): Remove.
12249 (vshrntq_m_n_s32): Remove.
12250 (vshrntq_m_n_s16): Remove.
12251 (vshrntq_m_n_u32): Remove.
12252 (vshrntq_m_n_u16): Remove.
12253 (__arm_vshrnbq_n_s16): Remove.
12254 (__arm_vshrntq_n_s16): Remove.
12255 (__arm_vshrnbq_n_u16): Remove.
12256 (__arm_vshrntq_n_u16): Remove.
12257 (__arm_vshrnbq_n_s32): Remove.
12258 (__arm_vshrntq_n_s32): Remove.
12259 (__arm_vshrnbq_n_u32): Remove.
12260 (__arm_vshrntq_n_u32): Remove.
12261 (__arm_vshrnbq_m_n_s32): Remove.
12262 (__arm_vshrnbq_m_n_s16): Remove.
12263 (__arm_vshrnbq_m_n_u32): Remove.
12264 (__arm_vshrnbq_m_n_u16): Remove.
12265 (__arm_vshrntq_m_n_s32): Remove.
12266 (__arm_vshrntq_m_n_s16): Remove.
12267 (__arm_vshrntq_m_n_u32): Remove.
12268 (__arm_vshrntq_m_n_u16): Remove.
12269 (__arm_vshrnbq): Remove.
12270 (__arm_vshrntq): Remove.
12271 (__arm_vshrnbq_m): Remove.
12272 (__arm_vshrntq_m): Remove.
12273 (vrshrnbq): Remove.
12274 (vrshrntq): Remove.
12275 (vrshrnbq_m): Remove.
12276 (vrshrntq_m): Remove.
12277 (vrshrnbq_n_s16): Remove.
12278 (vrshrntq_n_s16): Remove.
12279 (vrshrnbq_n_u16): Remove.
12280 (vrshrntq_n_u16): Remove.
12281 (vrshrnbq_n_s32): Remove.
12282 (vrshrntq_n_s32): Remove.
12283 (vrshrnbq_n_u32): Remove.
12284 (vrshrntq_n_u32): Remove.
12285 (vrshrnbq_m_n_s32): Remove.
12286 (vrshrnbq_m_n_s16): Remove.
12287 (vrshrnbq_m_n_u32): Remove.
12288 (vrshrnbq_m_n_u16): Remove.
12289 (vrshrntq_m_n_s32): Remove.
12290 (vrshrntq_m_n_s16): Remove.
12291 (vrshrntq_m_n_u32): Remove.
12292 (vrshrntq_m_n_u16): Remove.
12293 (__arm_vrshrnbq_n_s16): Remove.
12294 (__arm_vrshrntq_n_s16): Remove.
12295 (__arm_vrshrnbq_n_u16): Remove.
12296 (__arm_vrshrntq_n_u16): Remove.
12297 (__arm_vrshrnbq_n_s32): Remove.
12298 (__arm_vrshrntq_n_s32): Remove.
12299 (__arm_vrshrnbq_n_u32): Remove.
12300 (__arm_vrshrntq_n_u32): Remove.
12301 (__arm_vrshrnbq_m_n_s32): Remove.
12302 (__arm_vrshrnbq_m_n_s16): Remove.
12303 (__arm_vrshrnbq_m_n_u32): Remove.
12304 (__arm_vrshrnbq_m_n_u16): Remove.
12305 (__arm_vrshrntq_m_n_s32): Remove.
12306 (__arm_vrshrntq_m_n_s16): Remove.
12307 (__arm_vrshrntq_m_n_u32): Remove.
12308 (__arm_vrshrntq_m_n_u16): Remove.
12309 (__arm_vrshrnbq): Remove.
12310 (__arm_vrshrntq): Remove.
12311 (__arm_vrshrnbq_m): Remove.
12312 (__arm_vrshrntq_m): Remove.
12313 (vqshrnbq): Remove.
12314 (vqshrntq): Remove.
12315 (vqshrnbq_m): Remove.
12316 (vqshrntq_m): Remove.
12317 (vqshrnbq_n_s16): Remove.
12318 (vqshrntq_n_s16): Remove.
12319 (vqshrnbq_n_u16): Remove.
12320 (vqshrntq_n_u16): Remove.
12321 (vqshrnbq_n_s32): Remove.
12322 (vqshrntq_n_s32): Remove.
12323 (vqshrnbq_n_u32): Remove.
12324 (vqshrntq_n_u32): Remove.
12325 (vqshrnbq_m_n_s32): Remove.
12326 (vqshrnbq_m_n_s16): Remove.
12327 (vqshrnbq_m_n_u32): Remove.
12328 (vqshrnbq_m_n_u16): Remove.
12329 (vqshrntq_m_n_s32): Remove.
12330 (vqshrntq_m_n_s16): Remove.
12331 (vqshrntq_m_n_u32): Remove.
12332 (vqshrntq_m_n_u16): Remove.
12333 (__arm_vqshrnbq_n_s16): Remove.
12334 (__arm_vqshrntq_n_s16): Remove.
12335 (__arm_vqshrnbq_n_u16): Remove.
12336 (__arm_vqshrntq_n_u16): Remove.
12337 (__arm_vqshrnbq_n_s32): Remove.
12338 (__arm_vqshrntq_n_s32): Remove.
12339 (__arm_vqshrnbq_n_u32): Remove.
12340 (__arm_vqshrntq_n_u32): Remove.
12341 (__arm_vqshrnbq_m_n_s32): Remove.
12342 (__arm_vqshrnbq_m_n_s16): Remove.
12343 (__arm_vqshrnbq_m_n_u32): Remove.
12344 (__arm_vqshrnbq_m_n_u16): Remove.
12345 (__arm_vqshrntq_m_n_s32): Remove.
12346 (__arm_vqshrntq_m_n_s16): Remove.
12347 (__arm_vqshrntq_m_n_u32): Remove.
12348 (__arm_vqshrntq_m_n_u16): Remove.
12349 (__arm_vqshrnbq): Remove.
12350 (__arm_vqshrntq): Remove.
12351 (__arm_vqshrnbq_m): Remove.
12352 (__arm_vqshrntq_m): Remove.
12353 (vqrshrnbq): Remove.
12354 (vqrshrntq): Remove.
12355 (vqrshrnbq_m): Remove.
12356 (vqrshrntq_m): Remove.
12357 (vqrshrnbq_n_s16): Remove.
12358 (vqrshrnbq_n_u16): Remove.
12359 (vqrshrnbq_n_s32): Remove.
12360 (vqrshrnbq_n_u32): Remove.
12361 (vqrshrntq_n_s16): Remove.
12362 (vqrshrntq_n_u16): Remove.
12363 (vqrshrntq_n_s32): Remove.
12364 (vqrshrntq_n_u32): Remove.
12365 (vqrshrnbq_m_n_s32): Remove.
12366 (vqrshrnbq_m_n_s16): Remove.
12367 (vqrshrnbq_m_n_u32): Remove.
12368 (vqrshrnbq_m_n_u16): Remove.
12369 (vqrshrntq_m_n_s32): Remove.
12370 (vqrshrntq_m_n_s16): Remove.
12371 (vqrshrntq_m_n_u32): Remove.
12372 (vqrshrntq_m_n_u16): Remove.
12373 (__arm_vqrshrnbq_n_s16): Remove.
12374 (__arm_vqrshrnbq_n_u16): Remove.
12375 (__arm_vqrshrnbq_n_s32): Remove.
12376 (__arm_vqrshrnbq_n_u32): Remove.
12377 (__arm_vqrshrntq_n_s16): Remove.
12378 (__arm_vqrshrntq_n_u16): Remove.
12379 (__arm_vqrshrntq_n_s32): Remove.
12380 (__arm_vqrshrntq_n_u32): Remove.
12381 (__arm_vqrshrnbq_m_n_s32): Remove.
12382 (__arm_vqrshrnbq_m_n_s16): Remove.
12383 (__arm_vqrshrnbq_m_n_u32): Remove.
12384 (__arm_vqrshrnbq_m_n_u16): Remove.
12385 (__arm_vqrshrntq_m_n_s32): Remove.
12386 (__arm_vqrshrntq_m_n_s16): Remove.
12387 (__arm_vqrshrntq_m_n_u32): Remove.
12388 (__arm_vqrshrntq_m_n_u16): Remove.
12389 (__arm_vqrshrnbq): Remove.
12390 (__arm_vqrshrntq): Remove.
12391 (__arm_vqrshrnbq_m): Remove.
12392 (__arm_vqrshrntq_m): Remove.
12394 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
12396 * config/arm/iterators.md (MVE_SHRN_N, MVE_SHRN_M_N): New.
12397 (mve_insn): Add vqrshrnb, vqrshrnt, vqshrnb, vqshrnt, vrshrnb,
12398 vrshrnt, vshrnb, vshrnt.
12400 * config/arm/mve.md (mve_vqrshrnbq_n_<supf><mode>)
12401 (mve_vqrshrntq_n_<supf><mode>, mve_vqshrnbq_n_<supf><mode>)
12402 (mve_vqshrntq_n_<supf><mode>, mve_vrshrnbq_n_<supf><mode>)
12403 (mve_vrshrntq_n_<supf><mode>, mve_vshrnbq_n_<supf><mode>)
12404 (mve_vshrntq_n_<supf><mode>): Merge into ...
12405 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
12406 (mve_vqrshrnbq_m_n_<supf><mode>, mve_vqrshrntq_m_n_<supf><mode>)
12407 (mve_vqshrnbq_m_n_<supf><mode>, mve_vqshrntq_m_n_<supf><mode>)
12408 (mve_vrshrnbq_m_n_<supf><mode>, mve_vrshrntq_m_n_<supf><mode>)
12409 (mve_vshrnbq_m_n_<supf><mode>, mve_vshrntq_m_n_<supf><mode>):
12411 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
12413 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
12415 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow):
12417 * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New.
12419 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
12421 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_NO_F): New.
12422 (vmaxq, vminq): New.
12423 * config/arm/arm-mve-builtins-base.def (vmaxq, vminq): New.
12424 * config/arm/arm-mve-builtins-base.h (vmaxq, vminq): New.
12425 * config/arm/arm_mve.h (vminq): Remove.
12431 (vminq_u8): Remove.
12432 (vmaxq_u8): Remove.
12433 (vminq_s8): Remove.
12434 (vmaxq_s8): Remove.
12435 (vminq_u16): Remove.
12436 (vmaxq_u16): Remove.
12437 (vminq_s16): Remove.
12438 (vmaxq_s16): Remove.
12439 (vminq_u32): Remove.
12440 (vmaxq_u32): Remove.
12441 (vminq_s32): Remove.
12442 (vmaxq_s32): Remove.
12443 (vmaxq_m_s8): Remove.
12444 (vmaxq_m_s32): Remove.
12445 (vmaxq_m_s16): Remove.
12446 (vmaxq_m_u8): Remove.
12447 (vmaxq_m_u32): Remove.
12448 (vmaxq_m_u16): Remove.
12449 (vminq_m_s8): Remove.
12450 (vminq_m_s32): Remove.
12451 (vminq_m_s16): Remove.
12452 (vminq_m_u8): Remove.
12453 (vminq_m_u32): Remove.
12454 (vminq_m_u16): Remove.
12455 (vminq_x_s8): Remove.
12456 (vminq_x_s16): Remove.
12457 (vminq_x_s32): Remove.
12458 (vminq_x_u8): Remove.
12459 (vminq_x_u16): Remove.
12460 (vminq_x_u32): Remove.
12461 (vmaxq_x_s8): Remove.
12462 (vmaxq_x_s16): Remove.
12463 (vmaxq_x_s32): Remove.
12464 (vmaxq_x_u8): Remove.
12465 (vmaxq_x_u16): Remove.
12466 (vmaxq_x_u32): Remove.
12467 (__arm_vminq_u8): Remove.
12468 (__arm_vmaxq_u8): Remove.
12469 (__arm_vminq_s8): Remove.
12470 (__arm_vmaxq_s8): Remove.
12471 (__arm_vminq_u16): Remove.
12472 (__arm_vmaxq_u16): Remove.
12473 (__arm_vminq_s16): Remove.
12474 (__arm_vmaxq_s16): Remove.
12475 (__arm_vminq_u32): Remove.
12476 (__arm_vmaxq_u32): Remove.
12477 (__arm_vminq_s32): Remove.
12478 (__arm_vmaxq_s32): Remove.
12479 (__arm_vmaxq_m_s8): Remove.
12480 (__arm_vmaxq_m_s32): Remove.
12481 (__arm_vmaxq_m_s16): Remove.
12482 (__arm_vmaxq_m_u8): Remove.
12483 (__arm_vmaxq_m_u32): Remove.
12484 (__arm_vmaxq_m_u16): Remove.
12485 (__arm_vminq_m_s8): Remove.
12486 (__arm_vminq_m_s32): Remove.
12487 (__arm_vminq_m_s16): Remove.
12488 (__arm_vminq_m_u8): Remove.
12489 (__arm_vminq_m_u32): Remove.
12490 (__arm_vminq_m_u16): Remove.
12491 (__arm_vminq_x_s8): Remove.
12492 (__arm_vminq_x_s16): Remove.
12493 (__arm_vminq_x_s32): Remove.
12494 (__arm_vminq_x_u8): Remove.
12495 (__arm_vminq_x_u16): Remove.
12496 (__arm_vminq_x_u32): Remove.
12497 (__arm_vmaxq_x_s8): Remove.
12498 (__arm_vmaxq_x_s16): Remove.
12499 (__arm_vmaxq_x_s32): Remove.
12500 (__arm_vmaxq_x_u8): Remove.
12501 (__arm_vmaxq_x_u16): Remove.
12502 (__arm_vmaxq_x_u32): Remove.
12503 (__arm_vminq): Remove.
12504 (__arm_vmaxq): Remove.
12505 (__arm_vmaxq_m): Remove.
12506 (__arm_vminq_m): Remove.
12507 (__arm_vminq_x): Remove.
12508 (__arm_vmaxq_x): Remove.
12510 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
12512 * config/arm/iterators.md (MAX_MIN_SU): New.
12513 (max_min_su_str): New.
12514 (max_min_supf): New.
12515 * config/arm/mve.md (mve_vmaxq_s<mode>, mve_vmaxq_u<mode>)
12516 (mve_vminq_s<mode>, mve_vminq_u<mode>): Merge into ...
12517 (mve_<max_min_su_str>q_<max_min_supf><mode>): ... this.
12519 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
12521 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_R): New.
12522 (vqshlq, vshlq): New.
12523 * config/arm/arm-mve-builtins-base.def (vqshlq, vshlq): New.
12524 * config/arm/arm-mve-builtins-base.h (vqshlq, vshlq): New.
12525 * config/arm/arm_mve.h (vshlq): Remove.
12528 (vshlq_m_r): Remove.
12530 (vshlq_m_n): Remove.
12532 (vshlq_x_n): Remove.
12533 (vshlq_s8): Remove.
12534 (vshlq_s16): Remove.
12535 (vshlq_s32): Remove.
12536 (vshlq_u8): Remove.
12537 (vshlq_u16): Remove.
12538 (vshlq_u32): Remove.
12539 (vshlq_r_u8): Remove.
12540 (vshlq_n_u8): Remove.
12541 (vshlq_r_s8): Remove.
12542 (vshlq_n_s8): Remove.
12543 (vshlq_r_u16): Remove.
12544 (vshlq_n_u16): Remove.
12545 (vshlq_r_s16): Remove.
12546 (vshlq_n_s16): Remove.
12547 (vshlq_r_u32): Remove.
12548 (vshlq_n_u32): Remove.
12549 (vshlq_r_s32): Remove.
12550 (vshlq_n_s32): Remove.
12551 (vshlq_m_r_u8): Remove.
12552 (vshlq_m_r_s8): Remove.
12553 (vshlq_m_r_u16): Remove.
12554 (vshlq_m_r_s16): Remove.
12555 (vshlq_m_r_u32): Remove.
12556 (vshlq_m_r_s32): Remove.
12557 (vshlq_m_u8): Remove.
12558 (vshlq_m_s8): Remove.
12559 (vshlq_m_u16): Remove.
12560 (vshlq_m_s16): Remove.
12561 (vshlq_m_u32): Remove.
12562 (vshlq_m_s32): Remove.
12563 (vshlq_m_n_s8): Remove.
12564 (vshlq_m_n_s32): Remove.
12565 (vshlq_m_n_s16): Remove.
12566 (vshlq_m_n_u8): Remove.
12567 (vshlq_m_n_u32): Remove.
12568 (vshlq_m_n_u16): Remove.
12569 (vshlq_x_s8): Remove.
12570 (vshlq_x_s16): Remove.
12571 (vshlq_x_s32): Remove.
12572 (vshlq_x_u8): Remove.
12573 (vshlq_x_u16): Remove.
12574 (vshlq_x_u32): Remove.
12575 (vshlq_x_n_s8): Remove.
12576 (vshlq_x_n_s16): Remove.
12577 (vshlq_x_n_s32): Remove.
12578 (vshlq_x_n_u8): Remove.
12579 (vshlq_x_n_u16): Remove.
12580 (vshlq_x_n_u32): Remove.
12581 (__arm_vshlq_s8): Remove.
12582 (__arm_vshlq_s16): Remove.
12583 (__arm_vshlq_s32): Remove.
12584 (__arm_vshlq_u8): Remove.
12585 (__arm_vshlq_u16): Remove.
12586 (__arm_vshlq_u32): Remove.
12587 (__arm_vshlq_r_u8): Remove.
12588 (__arm_vshlq_n_u8): Remove.
12589 (__arm_vshlq_r_s8): Remove.
12590 (__arm_vshlq_n_s8): Remove.
12591 (__arm_vshlq_r_u16): Remove.
12592 (__arm_vshlq_n_u16): Remove.
12593 (__arm_vshlq_r_s16): Remove.
12594 (__arm_vshlq_n_s16): Remove.
12595 (__arm_vshlq_r_u32): Remove.
12596 (__arm_vshlq_n_u32): Remove.
12597 (__arm_vshlq_r_s32): Remove.
12598 (__arm_vshlq_n_s32): Remove.
12599 (__arm_vshlq_m_r_u8): Remove.
12600 (__arm_vshlq_m_r_s8): Remove.
12601 (__arm_vshlq_m_r_u16): Remove.
12602 (__arm_vshlq_m_r_s16): Remove.
12603 (__arm_vshlq_m_r_u32): Remove.
12604 (__arm_vshlq_m_r_s32): Remove.
12605 (__arm_vshlq_m_u8): Remove.
12606 (__arm_vshlq_m_s8): Remove.
12607 (__arm_vshlq_m_u16): Remove.
12608 (__arm_vshlq_m_s16): Remove.
12609 (__arm_vshlq_m_u32): Remove.
12610 (__arm_vshlq_m_s32): Remove.
12611 (__arm_vshlq_m_n_s8): Remove.
12612 (__arm_vshlq_m_n_s32): Remove.
12613 (__arm_vshlq_m_n_s16): Remove.
12614 (__arm_vshlq_m_n_u8): Remove.
12615 (__arm_vshlq_m_n_u32): Remove.
12616 (__arm_vshlq_m_n_u16): Remove.
12617 (__arm_vshlq_x_s8): Remove.
12618 (__arm_vshlq_x_s16): Remove.
12619 (__arm_vshlq_x_s32): Remove.
12620 (__arm_vshlq_x_u8): Remove.
12621 (__arm_vshlq_x_u16): Remove.
12622 (__arm_vshlq_x_u32): Remove.
12623 (__arm_vshlq_x_n_s8): Remove.
12624 (__arm_vshlq_x_n_s16): Remove.
12625 (__arm_vshlq_x_n_s32): Remove.
12626 (__arm_vshlq_x_n_u8): Remove.
12627 (__arm_vshlq_x_n_u16): Remove.
12628 (__arm_vshlq_x_n_u32): Remove.
12629 (__arm_vshlq): Remove.
12630 (__arm_vshlq_r): Remove.
12631 (__arm_vshlq_n): Remove.
12632 (__arm_vshlq_m_r): Remove.
12633 (__arm_vshlq_m): Remove.
12634 (__arm_vshlq_m_n): Remove.
12635 (__arm_vshlq_x): Remove.
12636 (__arm_vshlq_x_n): Remove.
12638 (vqshlq_r): Remove.
12639 (vqshlq_n): Remove.
12640 (vqshlq_m_r): Remove.
12641 (vqshlq_m_n): Remove.
12642 (vqshlq_m): Remove.
12643 (vqshlq_u8): Remove.
12644 (vqshlq_r_u8): Remove.
12645 (vqshlq_n_u8): Remove.
12646 (vqshlq_s8): Remove.
12647 (vqshlq_r_s8): Remove.
12648 (vqshlq_n_s8): Remove.
12649 (vqshlq_u16): Remove.
12650 (vqshlq_r_u16): Remove.
12651 (vqshlq_n_u16): Remove.
12652 (vqshlq_s16): Remove.
12653 (vqshlq_r_s16): Remove.
12654 (vqshlq_n_s16): Remove.
12655 (vqshlq_u32): Remove.
12656 (vqshlq_r_u32): Remove.
12657 (vqshlq_n_u32): Remove.
12658 (vqshlq_s32): Remove.
12659 (vqshlq_r_s32): Remove.
12660 (vqshlq_n_s32): Remove.
12661 (vqshlq_m_r_u8): Remove.
12662 (vqshlq_m_r_s8): Remove.
12663 (vqshlq_m_r_u16): Remove.
12664 (vqshlq_m_r_s16): Remove.
12665 (vqshlq_m_r_u32): Remove.
12666 (vqshlq_m_r_s32): Remove.
12667 (vqshlq_m_n_s8): Remove.
12668 (vqshlq_m_n_s32): Remove.
12669 (vqshlq_m_n_s16): Remove.
12670 (vqshlq_m_n_u8): Remove.
12671 (vqshlq_m_n_u32): Remove.
12672 (vqshlq_m_n_u16): Remove.
12673 (vqshlq_m_s8): Remove.
12674 (vqshlq_m_s32): Remove.
12675 (vqshlq_m_s16): Remove.
12676 (vqshlq_m_u8): Remove.
12677 (vqshlq_m_u32): Remove.
12678 (vqshlq_m_u16): Remove.
12679 (__arm_vqshlq_u8): Remove.
12680 (__arm_vqshlq_r_u8): Remove.
12681 (__arm_vqshlq_n_u8): Remove.
12682 (__arm_vqshlq_s8): Remove.
12683 (__arm_vqshlq_r_s8): Remove.
12684 (__arm_vqshlq_n_s8): Remove.
12685 (__arm_vqshlq_u16): Remove.
12686 (__arm_vqshlq_r_u16): Remove.
12687 (__arm_vqshlq_n_u16): Remove.
12688 (__arm_vqshlq_s16): Remove.
12689 (__arm_vqshlq_r_s16): Remove.
12690 (__arm_vqshlq_n_s16): Remove.
12691 (__arm_vqshlq_u32): Remove.
12692 (__arm_vqshlq_r_u32): Remove.
12693 (__arm_vqshlq_n_u32): Remove.
12694 (__arm_vqshlq_s32): Remove.
12695 (__arm_vqshlq_r_s32): Remove.
12696 (__arm_vqshlq_n_s32): Remove.
12697 (__arm_vqshlq_m_r_u8): Remove.
12698 (__arm_vqshlq_m_r_s8): Remove.
12699 (__arm_vqshlq_m_r_u16): Remove.
12700 (__arm_vqshlq_m_r_s16): Remove.
12701 (__arm_vqshlq_m_r_u32): Remove.
12702 (__arm_vqshlq_m_r_s32): Remove.
12703 (__arm_vqshlq_m_n_s8): Remove.
12704 (__arm_vqshlq_m_n_s32): Remove.
12705 (__arm_vqshlq_m_n_s16): Remove.
12706 (__arm_vqshlq_m_n_u8): Remove.
12707 (__arm_vqshlq_m_n_u32): Remove.
12708 (__arm_vqshlq_m_n_u16): Remove.
12709 (__arm_vqshlq_m_s8): Remove.
12710 (__arm_vqshlq_m_s32): Remove.
12711 (__arm_vqshlq_m_s16): Remove.
12712 (__arm_vqshlq_m_u8): Remove.
12713 (__arm_vqshlq_m_u32): Remove.
12714 (__arm_vqshlq_m_u16): Remove.
12715 (__arm_vqshlq): Remove.
12716 (__arm_vqshlq_r): Remove.
12717 (__arm_vqshlq_n): Remove.
12718 (__arm_vqshlq_m_r): Remove.
12719 (__arm_vqshlq_m_n): Remove.
12720 (__arm_vqshlq_m): Remove.
12722 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
12724 * config/arm/arm-mve-builtins-functions.h (class
12725 unspec_mve_function_exact_insn_vshl): New.
12727 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
12729 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
12730 * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
12732 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
12734 * config/arm/arm-mve-builtins.cc (has_inactive_argument)
12735 (finish_opt_n_resolution): Handle MODE_r.
12736 * config/arm/arm-mve-builtins.def (r): New mode.
12738 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
12740 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
12741 * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
12743 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
12745 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): New.
12747 * config/arm/arm-mve-builtins-base.def (vabdq): New.
12748 * config/arm/arm-mve-builtins-base.h (vabdq): New.
12749 * config/arm/arm_mve.h (vabdq): Remove.
12752 (vabdq_u8): Remove.
12753 (vabdq_s8): Remove.
12754 (vabdq_u16): Remove.
12755 (vabdq_s16): Remove.
12756 (vabdq_u32): Remove.
12757 (vabdq_s32): Remove.
12758 (vabdq_f16): Remove.
12759 (vabdq_f32): Remove.
12760 (vabdq_m_s8): Remove.
12761 (vabdq_m_s32): Remove.
12762 (vabdq_m_s16): Remove.
12763 (vabdq_m_u8): Remove.
12764 (vabdq_m_u32): Remove.
12765 (vabdq_m_u16): Remove.
12766 (vabdq_m_f32): Remove.
12767 (vabdq_m_f16): Remove.
12768 (vabdq_x_s8): Remove.
12769 (vabdq_x_s16): Remove.
12770 (vabdq_x_s32): Remove.
12771 (vabdq_x_u8): Remove.
12772 (vabdq_x_u16): Remove.
12773 (vabdq_x_u32): Remove.
12774 (vabdq_x_f16): Remove.
12775 (vabdq_x_f32): Remove.
12776 (__arm_vabdq_u8): Remove.
12777 (__arm_vabdq_s8): Remove.
12778 (__arm_vabdq_u16): Remove.
12779 (__arm_vabdq_s16): Remove.
12780 (__arm_vabdq_u32): Remove.
12781 (__arm_vabdq_s32): Remove.
12782 (__arm_vabdq_m_s8): Remove.
12783 (__arm_vabdq_m_s32): Remove.
12784 (__arm_vabdq_m_s16): Remove.
12785 (__arm_vabdq_m_u8): Remove.
12786 (__arm_vabdq_m_u32): Remove.
12787 (__arm_vabdq_m_u16): Remove.
12788 (__arm_vabdq_x_s8): Remove.
12789 (__arm_vabdq_x_s16): Remove.
12790 (__arm_vabdq_x_s32): Remove.
12791 (__arm_vabdq_x_u8): Remove.
12792 (__arm_vabdq_x_u16): Remove.
12793 (__arm_vabdq_x_u32): Remove.
12794 (__arm_vabdq_f16): Remove.
12795 (__arm_vabdq_f32): Remove.
12796 (__arm_vabdq_m_f32): Remove.
12797 (__arm_vabdq_m_f16): Remove.
12798 (__arm_vabdq_x_f16): Remove.
12799 (__arm_vabdq_x_f32): Remove.
12800 (__arm_vabdq): Remove.
12801 (__arm_vabdq_m): Remove.
12802 (__arm_vabdq_x): Remove.
12804 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
12806 * config/arm/iterators.md (MVE_FP_M_BINARY): Add vabdq.
12807 (MVE_FP_VABDQ_ONLY): New.
12808 (mve_insn): Add vabd.
12809 * config/arm/mve.md (mve_vabdq_f<mode>): Move into ...
12810 (@mve_<mve_insn>q_f<mode>): ... this.
12811 (mve_vabdq_m_f<mode>): Remove.
12813 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
12815 * config/arm/arm-mve-builtins-base.cc (vqrdmulhq): New.
12816 * config/arm/arm-mve-builtins-base.def (vqrdmulhq): New.
12817 * config/arm/arm-mve-builtins-base.h (vqrdmulhq): New.
12818 * config/arm/arm_mve.h (vqrdmulhq): Remove.
12819 (vqrdmulhq_m): Remove.
12820 (vqrdmulhq_s8): Remove.
12821 (vqrdmulhq_n_s8): Remove.
12822 (vqrdmulhq_s16): Remove.
12823 (vqrdmulhq_n_s16): Remove.
12824 (vqrdmulhq_s32): Remove.
12825 (vqrdmulhq_n_s32): Remove.
12826 (vqrdmulhq_m_n_s8): Remove.
12827 (vqrdmulhq_m_n_s32): Remove.
12828 (vqrdmulhq_m_n_s16): Remove.
12829 (vqrdmulhq_m_s8): Remove.
12830 (vqrdmulhq_m_s32): Remove.
12831 (vqrdmulhq_m_s16): Remove.
12832 (__arm_vqrdmulhq_s8): Remove.
12833 (__arm_vqrdmulhq_n_s8): Remove.
12834 (__arm_vqrdmulhq_s16): Remove.
12835 (__arm_vqrdmulhq_n_s16): Remove.
12836 (__arm_vqrdmulhq_s32): Remove.
12837 (__arm_vqrdmulhq_n_s32): Remove.
12838 (__arm_vqrdmulhq_m_n_s8): Remove.
12839 (__arm_vqrdmulhq_m_n_s32): Remove.
12840 (__arm_vqrdmulhq_m_n_s16): Remove.
12841 (__arm_vqrdmulhq_m_s8): Remove.
12842 (__arm_vqrdmulhq_m_s32): Remove.
12843 (__arm_vqrdmulhq_m_s16): Remove.
12844 (__arm_vqrdmulhq): Remove.
12845 (__arm_vqrdmulhq_m): Remove.
12847 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
12849 * config/arm/iterators.md (MVE_SHIFT_M_R, MVE_SHIFT_M_N)
12850 (MVE_SHIFT_N, MVE_SHIFT_R): New.
12851 (mve_insn): Add vqshl, vshl.
12852 * config/arm/mve.md (mve_vqshlq_n_<supf><mode>)
12853 (mve_vshlq_n_<supf><mode>): Merge into ...
12854 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
12855 (mve_vqshlq_r_<supf><mode>, mve_vshlq_r_<supf><mode>): Merge into
12857 (@mve_<mve_insn>q_r_<supf><mode>): ... this.
12858 (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
12860 (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
12861 (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
12863 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
12864 * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
12866 (@mve_<mve_insn>q_<supf><mode>): ... this.
12868 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
12870 * config/arm/arm-mve-builtins-base.cc (vqrshlq, vrshlq): New.
12871 * config/arm/arm-mve-builtins-base.def (vqrshlq, vrshlq): New.
12872 * config/arm/arm-mve-builtins-base.h (vqrshlq, vrshlq): New.
12873 * config/arm/arm-mve-builtins.cc (has_inactive_argument): Handle
12875 * config/arm/arm_mve.h (vrshlq): Remove.
12876 (vrshlq_m_n): Remove.
12877 (vrshlq_m): Remove.
12878 (vrshlq_x): Remove.
12879 (vrshlq_u8): Remove.
12880 (vrshlq_n_u8): Remove.
12881 (vrshlq_s8): Remove.
12882 (vrshlq_n_s8): Remove.
12883 (vrshlq_u16): Remove.
12884 (vrshlq_n_u16): Remove.
12885 (vrshlq_s16): Remove.
12886 (vrshlq_n_s16): Remove.
12887 (vrshlq_u32): Remove.
12888 (vrshlq_n_u32): Remove.
12889 (vrshlq_s32): Remove.
12890 (vrshlq_n_s32): Remove.
12891 (vrshlq_m_n_u8): Remove.
12892 (vrshlq_m_n_s8): Remove.
12893 (vrshlq_m_n_u16): Remove.
12894 (vrshlq_m_n_s16): Remove.
12895 (vrshlq_m_n_u32): Remove.
12896 (vrshlq_m_n_s32): Remove.
12897 (vrshlq_m_s8): Remove.
12898 (vrshlq_m_s32): Remove.
12899 (vrshlq_m_s16): Remove.
12900 (vrshlq_m_u8): Remove.
12901 (vrshlq_m_u32): Remove.
12902 (vrshlq_m_u16): Remove.
12903 (vrshlq_x_s8): Remove.
12904 (vrshlq_x_s16): Remove.
12905 (vrshlq_x_s32): Remove.
12906 (vrshlq_x_u8): Remove.
12907 (vrshlq_x_u16): Remove.
12908 (vrshlq_x_u32): Remove.
12909 (__arm_vrshlq_u8): Remove.
12910 (__arm_vrshlq_n_u8): Remove.
12911 (__arm_vrshlq_s8): Remove.
12912 (__arm_vrshlq_n_s8): Remove.
12913 (__arm_vrshlq_u16): Remove.
12914 (__arm_vrshlq_n_u16): Remove.
12915 (__arm_vrshlq_s16): Remove.
12916 (__arm_vrshlq_n_s16): Remove.
12917 (__arm_vrshlq_u32): Remove.
12918 (__arm_vrshlq_n_u32): Remove.
12919 (__arm_vrshlq_s32): Remove.
12920 (__arm_vrshlq_n_s32): Remove.
12921 (__arm_vrshlq_m_n_u8): Remove.
12922 (__arm_vrshlq_m_n_s8): Remove.
12923 (__arm_vrshlq_m_n_u16): Remove.
12924 (__arm_vrshlq_m_n_s16): Remove.
12925 (__arm_vrshlq_m_n_u32): Remove.
12926 (__arm_vrshlq_m_n_s32): Remove.
12927 (__arm_vrshlq_m_s8): Remove.
12928 (__arm_vrshlq_m_s32): Remove.
12929 (__arm_vrshlq_m_s16): Remove.
12930 (__arm_vrshlq_m_u8): Remove.
12931 (__arm_vrshlq_m_u32): Remove.
12932 (__arm_vrshlq_m_u16): Remove.
12933 (__arm_vrshlq_x_s8): Remove.
12934 (__arm_vrshlq_x_s16): Remove.
12935 (__arm_vrshlq_x_s32): Remove.
12936 (__arm_vrshlq_x_u8): Remove.
12937 (__arm_vrshlq_x_u16): Remove.
12938 (__arm_vrshlq_x_u32): Remove.
12939 (__arm_vrshlq): Remove.
12940 (__arm_vrshlq_m_n): Remove.
12941 (__arm_vrshlq_m): Remove.
12942 (__arm_vrshlq_x): Remove.
12944 (vqrshlq_m_n): Remove.
12945 (vqrshlq_m): Remove.
12946 (vqrshlq_u8): Remove.
12947 (vqrshlq_n_u8): Remove.
12948 (vqrshlq_s8): Remove.
12949 (vqrshlq_n_s8): Remove.
12950 (vqrshlq_u16): Remove.
12951 (vqrshlq_n_u16): Remove.
12952 (vqrshlq_s16): Remove.
12953 (vqrshlq_n_s16): Remove.
12954 (vqrshlq_u32): Remove.
12955 (vqrshlq_n_u32): Remove.
12956 (vqrshlq_s32): Remove.
12957 (vqrshlq_n_s32): Remove.
12958 (vqrshlq_m_n_u8): Remove.
12959 (vqrshlq_m_n_s8): Remove.
12960 (vqrshlq_m_n_u16): Remove.
12961 (vqrshlq_m_n_s16): Remove.
12962 (vqrshlq_m_n_u32): Remove.
12963 (vqrshlq_m_n_s32): Remove.
12964 (vqrshlq_m_s8): Remove.
12965 (vqrshlq_m_s32): Remove.
12966 (vqrshlq_m_s16): Remove.
12967 (vqrshlq_m_u8): Remove.
12968 (vqrshlq_m_u32): Remove.
12969 (vqrshlq_m_u16): Remove.
12970 (__arm_vqrshlq_u8): Remove.
12971 (__arm_vqrshlq_n_u8): Remove.
12972 (__arm_vqrshlq_s8): Remove.
12973 (__arm_vqrshlq_n_s8): Remove.
12974 (__arm_vqrshlq_u16): Remove.
12975 (__arm_vqrshlq_n_u16): Remove.
12976 (__arm_vqrshlq_s16): Remove.
12977 (__arm_vqrshlq_n_s16): Remove.
12978 (__arm_vqrshlq_u32): Remove.
12979 (__arm_vqrshlq_n_u32): Remove.
12980 (__arm_vqrshlq_s32): Remove.
12981 (__arm_vqrshlq_n_s32): Remove.
12982 (__arm_vqrshlq_m_n_u8): Remove.
12983 (__arm_vqrshlq_m_n_s8): Remove.
12984 (__arm_vqrshlq_m_n_u16): Remove.
12985 (__arm_vqrshlq_m_n_s16): Remove.
12986 (__arm_vqrshlq_m_n_u32): Remove.
12987 (__arm_vqrshlq_m_n_s32): Remove.
12988 (__arm_vqrshlq_m_s8): Remove.
12989 (__arm_vqrshlq_m_s32): Remove.
12990 (__arm_vqrshlq_m_s16): Remove.
12991 (__arm_vqrshlq_m_u8): Remove.
12992 (__arm_vqrshlq_m_u32): Remove.
12993 (__arm_vqrshlq_m_u16): Remove.
12994 (__arm_vqrshlq): Remove.
12995 (__arm_vqrshlq_m_n): Remove.
12996 (__arm_vqrshlq_m): Remove.
12998 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
13000 * config/arm/iterators.md (MVE_RSHIFT_M_N, MVE_RSHIFT_N): New.
13001 (mve_insn): Add vqrshl, vrshl.
13002 * config/arm/mve.md (mve_vqrshlq_n_<supf><mode>)
13003 (mve_vrshlq_n_<supf><mode>): Merge into ...
13004 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
13005 (mve_vqrshlq_m_n_<supf><mode>, mve_vrshlq_m_n_<supf><mode>): Merge
13007 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
13009 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
13011 * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
13012 * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
13014 2023-05-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13017 * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
13018 denegrate PHI optmization.
13020 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
13022 * config/i386/predicates.md (register_no_SP_operand):
13023 Rename from index_register_operand.
13024 (call_register_operand): Update for rename.
13025 * config/i386/i386.md (*lea<mode>_general_[1234]): Update for rename.
13027 2023-05-05 Tamar Christina <tamar.christina@arm.com>
13030 * Makefile.in (NUM_MATCH_SPLITS, MATCH_SPLITS_SEQ,
13031 GIMPLE_MATCH_PD_SEQ_SRC, GIMPLE_MATCH_PD_SEQ_O,
13032 GENERIC_MATCH_PD_SEQ_SRC, GENERIC_MATCH_PD_SEQ_O): New.
13033 (OBJS, MOSTLYCLEANFILES, .PRECIOUS): Use them.
13034 (s-match): Split into s-generic-match and s-gimple-match.
13035 * configure.ac (with-matchpd-partitions,
13036 DEFAULT_MATCHPD_PARTITIONS): New.
13037 * configure: Regenerate.
13039 2023-05-05 Tamar Christina <tamar.christina@arm.com>
13042 * genmatch.cc (emit_func, SIZED_BASED_CHUNKS, get_out_file): New.
13043 (decision_tree::gen): Accept list of files instead of single and update
13044 to write function definition to header and main file.
13045 (write_predicate): Likewise.
13046 (write_header): Emit pragmas and new includes.
13047 (main): Create file buffers and cleanup.
13048 (showUsage, write_header_includes): New.
13050 2023-05-05 Tamar Christina <tamar.christina@arm.com>
13053 * Makefile.in (OBJS): Add gimple-match-exports.o.
13054 * genmatch.cc (decision_tree::gen): Export gimple_gimplify helpers.
13055 * gimple-match-head.cc (gimple_simplify, gimple_resimplify1,
13056 gimple_resimplify2, gimple_resimplify3, gimple_resimplify4,
13057 gimple_resimplify5, constant_for_folding, convert_conditional_op,
13058 maybe_resimplify_conditional_op, gimple_match_op::resimplify,
13059 maybe_build_generic_op, build_call_internal, maybe_push_res_to_seq,
13060 do_valueize, try_conditional_simplification, gimple_extract,
13061 gimple_extract_op, canonicalize_code, commutative_binary_op_p,
13062 commutative_ternary_op_p, first_commutative_argument,
13063 associative_binary_op_p, directly_supported_p,
13064 get_conditional_internal_fn): Moved to gimple-match-exports.cc
13065 * gimple-match-exports.cc: New file.
13067 2023-05-05 Tamar Christina <tamar.christina@arm.com>
13070 * genmatch.cc (decision_tree::gen, write_predicate): Generate new
13072 (dt_simplify::gen_1): Use it.
13074 2023-05-05 Tamar Christina <tamar.christina@arm.com>
13077 * genmatch.cc (output_line_directive): Only emit commented directive
13080 2023-05-05 Tamar Christina <tamar.christina@arm.com>
13083 * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
13085 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
13087 * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
13088 unused in_mode/in_n variables.
13090 2023-05-05 Richard Biener <rguenther@suse.de>
13092 PR tree-optimization/109735
13093 * tree-vect-stmts.cc (vectorizable_operation): Perform
13094 conversion for POINTER_DIFF_EXPR unconditionally.
13096 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
13098 * config/i386/mmx.md (mulv2si3): New expander.
13099 (*mulv2si3): New insn pattern.
13101 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
13102 Thomas Schwinge <thomas@codesourcery.com>
13105 * config/nvptx/mkoffload.cc (process): Emit dummy procedure
13106 alongside reverse-offload function table to prevent NULL values
13107 of the function addresses.
13109 2023-05-05 Jakub Jelinek <jakub@redhat.com>
13111 * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo,
13113 * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise.
13115 2023-05-05 Andrew Pinski <apinski@marvell.com>
13117 PR tree-optimization/109732
13118 * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
13119 of the argtrue/argfalse.
13121 2023-05-05 Andrew Pinski <apinski@marvell.com>
13123 PR tree-optimization/109722
13124 * match.pd: Extend the `ABS<a> == 0` pattern
13125 to cover `ABSU<a> == 0` too.
13127 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
13130 * config/i386/predicates.md (index_reg_operand): New predicate.
13131 * config/i386/i386.md (ashift to lea spliter): Use
13132 general_reg_operand and index_reg_operand predicates.
13134 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13136 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn2<mode>_insn_le):
13137 Rename and reimplement with RTL codes to...
13138 (aarch64_<optab>hn2<mode>_insn_le): .. This.
13139 (aarch64_r<optab>hn2<mode>_insn_le): New pattern.
13140 (aarch64_<sur><addsub>hn2<mode>_insn_be): Rename and reimplement with RTL
13142 (aarch64_<optab>hn2<mode>_insn_be): ... This.
13143 (aarch64_r<optab>hn2<mode>_insn_be): New pattern.
13144 (aarch64_<sur><addsub>hn2<mode>): Rename and adjust expander to...
13145 (aarch64_<optab>hn2<mode>): ... This.
13146 (aarch64_r<optab>hn2<mode>): New expander.
13147 * config/aarch64/iterators.md (UNSPEC_ADDHN, UNSPEC_RADDHN,
13148 UNSPEC_SUBHN, UNSPEC_RSUBHN): Delete unspecs.
13149 (ADDSUBHN): Delete.
13150 (sur): Remove handling of the above.
13151 (addsub): Likewise.
13153 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13155 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
13157 (aarch64_<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
13158 (aarch64_<sur><addsub>hn<mode>_insn_be): Delete.
13159 (aarch64_r<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
13160 (aarch64_<sur><addsub>hn<mode>): Delete.
13161 (aarch64_<optab>hn<mode>): New define_expand.
13162 (aarch64_r<optab>hn<mode>): Likewise.
13163 * config/aarch64/predicates.md (aarch64_simd_raddsubhn_imm_vec):
13166 2023-05-04 Andrew Pinski <apinski@marvell.com>
13168 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
13169 diamond form bb with forwarder only empty blocks better.
13171 2023-05-04 Andrew Pinski <apinski@marvell.com>
13173 * tree-ssa-threadupdate.cc (copy_phi_arg_into_existing_phi): Move to ...
13174 * tree-cfg.cc (copy_phi_arg_into_existing_phi): Here and remove static.
13175 (gimple_duplicate_sese_tail): Use copy_phi_arg_into_existing_phi instead
13176 of an inline version of it.
13177 * tree-cfgcleanup.cc (remove_forwarder_block): Likewise.
13178 * tree-cfg.h (copy_phi_arg_into_existing_phi): New declaration.
13180 2023-05-04 Andrew Pinski <apinski@marvell.com>
13182 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Change
13183 the default argument value for dce_ssa_names to nullptr.
13184 Check to make sure dce_ssa_names is a non-nullptr before
13185 calling simple_dce_from_worklist.
13187 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
13189 * config/i386/predicates.md (index_register_operand): Reject
13190 arg_pointer_rtx, frame_pointer_rtx, stack_pointer_rtx and
13191 VIRTUAL_REGISTER_P operands. Allow subregs of memory before reload.
13192 (call_register_no_elim_operand): Rewrite as ...
13193 (call_register_operand): ... this.
13194 (call_insn_operand): Use call_register_operand predicate.
13196 2023-05-04 Richard Biener <rguenther@suse.de>
13198 PR tree-optimization/109721
13199 * tree-vect-stmts.cc (vectorizable_operation): Make sure
13200 to test word_mode for all !target_support_p operations.
13202 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13205 * config/aarch64/aarch64-simd.md (aarch64_<su>aba<mode>): Rename to...
13206 (aarch64_<su>aba<mode><vczle><vczbe>): ... This.
13207 (aarch64_mla<mode>): Rename to...
13208 (aarch64_mla<mode><vczle><vczbe>): ... This.
13209 (*aarch64_mla_elt<mode>): Rename to...
13210 (*aarch64_mla_elt<mode><vczle><vczbe>): ... This.
13211 (*aarch64_mla_elt_<vswap_width_name><mode>): Rename to...
13212 (*aarch64_mla_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
13213 (aarch64_mla_n<mode>): Rename to...
13214 (aarch64_mla_n<mode><vczle><vczbe>): ... This.
13215 (aarch64_mls<mode>): Rename to...
13216 (aarch64_mls<mode><vczle><vczbe>): ... This.
13217 (*aarch64_mls_elt<mode>): Rename to...
13218 (*aarch64_mls_elt<mode><vczle><vczbe>): ... This.
13219 (*aarch64_mls_elt_<vswap_width_name><mode>): Rename to...
13220 (*aarch64_mls_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
13221 (aarch64_mls_n<mode>): Rename to...
13222 (aarch64_mls_n<mode><vczle><vczbe>): ... This.
13223 (fma<mode>4): Rename to...
13224 (fma<mode>4<vczle><vczbe>): ... This.
13225 (*aarch64_fma4_elt<mode>): Rename to...
13226 (*aarch64_fma4_elt<mode><vczle><vczbe>): ... This.
13227 (*aarch64_fma4_elt_<vswap_width_name><mode>): Rename to...
13228 (*aarch64_fma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
13229 (*aarch64_fma4_elt_from_dup<mode>): Rename to...
13230 (*aarch64_fma4_elt_from_dup<mode><vczle><vczbe>): ... This.
13231 (fnma<mode>4): Rename to...
13232 (fnma<mode>4<vczle><vczbe>): ... This.
13233 (*aarch64_fnma4_elt<mode>): Rename to...
13234 (*aarch64_fnma4_elt<mode><vczle><vczbe>): ... This.
13235 (*aarch64_fnma4_elt_<vswap_width_name><mode>): Rename to...
13236 (*aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
13237 (*aarch64_fnma4_elt_from_dup<mode>): Rename to...
13238 (*aarch64_fnma4_elt_from_dup<mode><vczle><vczbe>): ... This.
13239 (aarch64_simd_bsl<mode>_internal): Rename to...
13240 (aarch64_simd_bsl<mode>_internal<vczle><vczbe>): ... This.
13241 (*aarch64_simd_bsl<mode>_alt): Rename to...
13242 (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>): ... This.
13244 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
13247 * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>): Rename to...
13248 (aarch64_<su>abd<mode><vczle><vczbe>): ... This.
13249 (fabd<mode>3): Rename to...
13250 (fabd<mode>3<vczle><vczbe>): ... This.
13251 (aarch64_<optab>p<mode>): Rename to...
13252 (aarch64_<optab>p<mode><vczle><vczbe>): ... This.
13253 (aarch64_faddp<mode>): Rename to...
13254 (aarch64_faddp<mode><vczle><vczbe>): ... This.
13256 2023-05-04 Martin Liska <mliska@suse.cz>
13258 * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
13259 (print_version): Use it.
13260 (generate_results): Likewise.
13262 2023-05-04 Richard Biener <rguenther@suse.de>
13264 * tree-cfg.h (last_stmt): Rename to ...
13265 (last_nondebug_stmt): ... this.
13266 * tree-cfg.cc (last_stmt): Rename to ...
13267 (last_nondebug_stmt): ... this.
13268 (assign_discriminators): Adjust.
13269 (group_case_labels_stmt): Likewise.
13270 (gimple_can_duplicate_bb_p): Likewise.
13271 (execute_fixup_cfg): Likewise.
13272 * auto-profile.cc (afdo_propagate_circuit): Likewise.
13273 * gimple-range.cc (gimple_ranger::range_on_exit): Likewise.
13274 * omp-expand.cc (workshare_safe_to_combine_p): Likewise.
13275 (determine_parallel_type): Likewise.
13276 (adjust_context_and_scope): Likewise.
13277 (expand_task_call): Likewise.
13278 (remove_exit_barrier): Likewise.
13279 (expand_omp_taskreg): Likewise.
13280 (expand_omp_for_init_counts): Likewise.
13281 (expand_omp_for_init_vars): Likewise.
13282 (expand_omp_for_static_chunk): Likewise.
13283 (expand_omp_simd): Likewise.
13284 (expand_oacc_for): Likewise.
13285 (expand_omp_for): Likewise.
13286 (expand_omp_sections): Likewise.
13287 (expand_omp_atomic_fetch_op): Likewise.
13288 (expand_omp_atomic_cas): Likewise.
13289 (expand_omp_atomic): Likewise.
13290 (expand_omp_target): Likewise.
13291 (expand_omp): Likewise.
13292 (omp_make_gimple_edges): Likewise.
13293 * trans-mem.cc (tm_region_init): Likewise.
13294 * tree-inline.cc (redirect_all_calls): Likewise.
13295 * tree-parloops.cc (gen_parallel_loop): Likewise.
13296 * tree-ssa-loop-ch.cc (do_while_loop_p): Likewise.
13297 * tree-ssa-loop-ivcanon.cc (canonicalize_loop_induction_variables):
13299 * tree-ssa-loop-ivopts.cc (stmt_after_ip_normal_pos): Likewise.
13300 (may_eliminate_iv): Likewise.
13301 * tree-ssa-loop-manip.cc (standard_iv_increment_position): Likewise.
13302 * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations):
13304 (estimate_numbers_of_iterations): Likewise.
13305 * tree-ssa-loop-split.cc (compute_added_num_insns): Likewise.
13306 * tree-ssa-loop-unswitch.cc (get_predicates_for_bb): Likewise.
13307 (set_predicates_for_bb): Likewise.
13308 (init_loop_unswitch_info): Likewise.
13309 (hoist_guard): Likewise.
13310 * tree-ssa-phiopt.cc (match_simplify_replacement): Likewise.
13311 (minmax_replacement): Likewise.
13312 * tree-ssa-reassoc.cc (update_range_test): Likewise.
13313 (optimize_range_tests_to_bit_test): Likewise.
13314 (optimize_range_tests_var_bound): Likewise.
13315 (optimize_range_tests): Likewise.
13316 (no_side_effect_bb): Likewise.
13317 (suitable_cond_bb): Likewise.
13318 (maybe_optimize_range_tests): Likewise.
13319 (reassociate_bb): Likewise.
13320 * tree-vrp.cc (rvrp_folder::pre_fold_bb): Likewise.
13322 2023-05-04 Jakub Jelinek <jakub@redhat.com>
13325 * config/i386/i386-features.cc (timode_scalar_chain::convert_insn):
13326 If src is REG, change its mode to V1TImode and call fix_debug_reg_uses
13327 for it only if it still has TImode. Don't decide whether to call
13328 fix_debug_reg_uses based on whether SRC is ever set or not.
13330 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
13332 * config/cris/cris.cc (cris_split_constant): New function.
13333 * config/cris/cris.md (splitop): New iterator.
13334 (opsplit1): New define_peephole2.
13335 * config/cris/cris-protos.h (cris_split_constant): Declare.
13336 (cris_splittable_constant_p): New macro.
13338 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
13340 * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
13343 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
13345 * config/cris/cris.cc (cris_side_effect_mode_ok): Use
13346 lra_in_progress, not reload_in_progress.
13347 * config/cris/cris.md ("movdi", "*addi_reload"): Ditto.
13348 * config/cris/constraints.md ("Q"): Ditto.
13350 2023-05-03 Andrew Pinski <apinski@marvell.com>
13352 * tree-ssa-dce.cc (simple_dce_from_worklist): Record
13353 stats on removed number of statements and phis.
13355 2023-05-03 Aldy Hernandez <aldyh@redhat.com>
13357 PR tree-optimization/109711
13358 * value-range.cc (irange::verify_range): Allow types of
13361 2023-05-03 Alexander Monakov <amonakov@ispras.ru>
13364 * calls.cc (can_implement_as_sibling_call_p): Reject calls
13365 to __sanitizer_cov_trace_pc.
13367 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
13370 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Add
13371 a new ABI break parameter for GCC 14. Set it to the alignment
13372 of enums that have an underlying type. Take the true alignment
13373 of such enums from the TYPE_ALIGN of the underlying type's
13375 (aarch64_function_arg_boundary): Update accordingly.
13376 (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise.
13377 Warn about ABI differences.
13379 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
13382 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Rename
13383 ABI break variables to abi_break_gcc_9 and abi_break_gcc_13.
13384 (aarch64_layout_arg, aarch64_function_arg_boundary): Likewise.
13385 (aarch64_gimplify_va_arg_expr): Likewise.
13387 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
13389 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_NO_F)
13390 (FUNCTION_WITHOUT_N_NO_F, FUNCTION_WITH_M_N_NO_U_F): New.
13391 (vhaddq, vhsubq, vmulhq, vqaddq, vqsubq, vqdmulhq, vrhaddq)
13393 * config/arm/arm-mve-builtins-base.def (vhaddq, vhsubq, vmulhq)
13394 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
13395 * config/arm/arm-mve-builtins-base.h (vhaddq, vhsubq, vmulhq)
13396 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
13397 * config/arm/arm_mve.h (vhsubq): Remove.
13399 (vhaddq_m): Remove.
13400 (vhsubq_m): Remove.
13401 (vhaddq_x): Remove.
13402 (vhsubq_x): Remove.
13403 (vhsubq_u8): Remove.
13404 (vhsubq_n_u8): Remove.
13405 (vhaddq_u8): Remove.
13406 (vhaddq_n_u8): Remove.
13407 (vhsubq_s8): Remove.
13408 (vhsubq_n_s8): Remove.
13409 (vhaddq_s8): Remove.
13410 (vhaddq_n_s8): Remove.
13411 (vhsubq_u16): Remove.
13412 (vhsubq_n_u16): Remove.
13413 (vhaddq_u16): Remove.
13414 (vhaddq_n_u16): Remove.
13415 (vhsubq_s16): Remove.
13416 (vhsubq_n_s16): Remove.
13417 (vhaddq_s16): Remove.
13418 (vhaddq_n_s16): Remove.
13419 (vhsubq_u32): Remove.
13420 (vhsubq_n_u32): Remove.
13421 (vhaddq_u32): Remove.
13422 (vhaddq_n_u32): Remove.
13423 (vhsubq_s32): Remove.
13424 (vhsubq_n_s32): Remove.
13425 (vhaddq_s32): Remove.
13426 (vhaddq_n_s32): Remove.
13427 (vhaddq_m_n_s8): Remove.
13428 (vhaddq_m_n_s32): Remove.
13429 (vhaddq_m_n_s16): Remove.
13430 (vhaddq_m_n_u8): Remove.
13431 (vhaddq_m_n_u32): Remove.
13432 (vhaddq_m_n_u16): Remove.
13433 (vhaddq_m_s8): Remove.
13434 (vhaddq_m_s32): Remove.
13435 (vhaddq_m_s16): Remove.
13436 (vhaddq_m_u8): Remove.
13437 (vhaddq_m_u32): Remove.
13438 (vhaddq_m_u16): Remove.
13439 (vhsubq_m_n_s8): Remove.
13440 (vhsubq_m_n_s32): Remove.
13441 (vhsubq_m_n_s16): Remove.
13442 (vhsubq_m_n_u8): Remove.
13443 (vhsubq_m_n_u32): Remove.
13444 (vhsubq_m_n_u16): Remove.
13445 (vhsubq_m_s8): Remove.
13446 (vhsubq_m_s32): Remove.
13447 (vhsubq_m_s16): Remove.
13448 (vhsubq_m_u8): Remove.
13449 (vhsubq_m_u32): Remove.
13450 (vhsubq_m_u16): Remove.
13451 (vhaddq_x_n_s8): Remove.
13452 (vhaddq_x_n_s16): Remove.
13453 (vhaddq_x_n_s32): Remove.
13454 (vhaddq_x_n_u8): Remove.
13455 (vhaddq_x_n_u16): Remove.
13456 (vhaddq_x_n_u32): Remove.
13457 (vhaddq_x_s8): Remove.
13458 (vhaddq_x_s16): Remove.
13459 (vhaddq_x_s32): Remove.
13460 (vhaddq_x_u8): Remove.
13461 (vhaddq_x_u16): Remove.
13462 (vhaddq_x_u32): Remove.
13463 (vhsubq_x_n_s8): Remove.
13464 (vhsubq_x_n_s16): Remove.
13465 (vhsubq_x_n_s32): Remove.
13466 (vhsubq_x_n_u8): Remove.
13467 (vhsubq_x_n_u16): Remove.
13468 (vhsubq_x_n_u32): Remove.
13469 (vhsubq_x_s8): Remove.
13470 (vhsubq_x_s16): Remove.
13471 (vhsubq_x_s32): Remove.
13472 (vhsubq_x_u8): Remove.
13473 (vhsubq_x_u16): Remove.
13474 (vhsubq_x_u32): Remove.
13475 (__arm_vhsubq_u8): Remove.
13476 (__arm_vhsubq_n_u8): Remove.
13477 (__arm_vhaddq_u8): Remove.
13478 (__arm_vhaddq_n_u8): Remove.
13479 (__arm_vhsubq_s8): Remove.
13480 (__arm_vhsubq_n_s8): Remove.
13481 (__arm_vhaddq_s8): Remove.
13482 (__arm_vhaddq_n_s8): Remove.
13483 (__arm_vhsubq_u16): Remove.
13484 (__arm_vhsubq_n_u16): Remove.
13485 (__arm_vhaddq_u16): Remove.
13486 (__arm_vhaddq_n_u16): Remove.
13487 (__arm_vhsubq_s16): Remove.
13488 (__arm_vhsubq_n_s16): Remove.
13489 (__arm_vhaddq_s16): Remove.
13490 (__arm_vhaddq_n_s16): Remove.
13491 (__arm_vhsubq_u32): Remove.
13492 (__arm_vhsubq_n_u32): Remove.
13493 (__arm_vhaddq_u32): Remove.
13494 (__arm_vhaddq_n_u32): Remove.
13495 (__arm_vhsubq_s32): Remove.
13496 (__arm_vhsubq_n_s32): Remove.
13497 (__arm_vhaddq_s32): Remove.
13498 (__arm_vhaddq_n_s32): Remove.
13499 (__arm_vhaddq_m_n_s8): Remove.
13500 (__arm_vhaddq_m_n_s32): Remove.
13501 (__arm_vhaddq_m_n_s16): Remove.
13502 (__arm_vhaddq_m_n_u8): Remove.
13503 (__arm_vhaddq_m_n_u32): Remove.
13504 (__arm_vhaddq_m_n_u16): Remove.
13505 (__arm_vhaddq_m_s8): Remove.
13506 (__arm_vhaddq_m_s32): Remove.
13507 (__arm_vhaddq_m_s16): Remove.
13508 (__arm_vhaddq_m_u8): Remove.
13509 (__arm_vhaddq_m_u32): Remove.
13510 (__arm_vhaddq_m_u16): Remove.
13511 (__arm_vhsubq_m_n_s8): Remove.
13512 (__arm_vhsubq_m_n_s32): Remove.
13513 (__arm_vhsubq_m_n_s16): Remove.
13514 (__arm_vhsubq_m_n_u8): Remove.
13515 (__arm_vhsubq_m_n_u32): Remove.
13516 (__arm_vhsubq_m_n_u16): Remove.
13517 (__arm_vhsubq_m_s8): Remove.
13518 (__arm_vhsubq_m_s32): Remove.
13519 (__arm_vhsubq_m_s16): Remove.
13520 (__arm_vhsubq_m_u8): Remove.
13521 (__arm_vhsubq_m_u32): Remove.
13522 (__arm_vhsubq_m_u16): Remove.
13523 (__arm_vhaddq_x_n_s8): Remove.
13524 (__arm_vhaddq_x_n_s16): Remove.
13525 (__arm_vhaddq_x_n_s32): Remove.
13526 (__arm_vhaddq_x_n_u8): Remove.
13527 (__arm_vhaddq_x_n_u16): Remove.
13528 (__arm_vhaddq_x_n_u32): Remove.
13529 (__arm_vhaddq_x_s8): Remove.
13530 (__arm_vhaddq_x_s16): Remove.
13531 (__arm_vhaddq_x_s32): Remove.
13532 (__arm_vhaddq_x_u8): Remove.
13533 (__arm_vhaddq_x_u16): Remove.
13534 (__arm_vhaddq_x_u32): Remove.
13535 (__arm_vhsubq_x_n_s8): Remove.
13536 (__arm_vhsubq_x_n_s16): Remove.
13537 (__arm_vhsubq_x_n_s32): Remove.
13538 (__arm_vhsubq_x_n_u8): Remove.
13539 (__arm_vhsubq_x_n_u16): Remove.
13540 (__arm_vhsubq_x_n_u32): Remove.
13541 (__arm_vhsubq_x_s8): Remove.
13542 (__arm_vhsubq_x_s16): Remove.
13543 (__arm_vhsubq_x_s32): Remove.
13544 (__arm_vhsubq_x_u8): Remove.
13545 (__arm_vhsubq_x_u16): Remove.
13546 (__arm_vhsubq_x_u32): Remove.
13547 (__arm_vhsubq): Remove.
13548 (__arm_vhaddq): Remove.
13549 (__arm_vhaddq_m): Remove.
13550 (__arm_vhsubq_m): Remove.
13551 (__arm_vhaddq_x): Remove.
13552 (__arm_vhsubq_x): Remove.
13554 (vmulhq_m): Remove.
13555 (vmulhq_x): Remove.
13556 (vmulhq_u8): Remove.
13557 (vmulhq_s8): Remove.
13558 (vmulhq_u16): Remove.
13559 (vmulhq_s16): Remove.
13560 (vmulhq_u32): Remove.
13561 (vmulhq_s32): Remove.
13562 (vmulhq_m_s8): Remove.
13563 (vmulhq_m_s32): Remove.
13564 (vmulhq_m_s16): Remove.
13565 (vmulhq_m_u8): Remove.
13566 (vmulhq_m_u32): Remove.
13567 (vmulhq_m_u16): Remove.
13568 (vmulhq_x_s8): Remove.
13569 (vmulhq_x_s16): Remove.
13570 (vmulhq_x_s32): Remove.
13571 (vmulhq_x_u8): Remove.
13572 (vmulhq_x_u16): Remove.
13573 (vmulhq_x_u32): Remove.
13574 (__arm_vmulhq_u8): Remove.
13575 (__arm_vmulhq_s8): Remove.
13576 (__arm_vmulhq_u16): Remove.
13577 (__arm_vmulhq_s16): Remove.
13578 (__arm_vmulhq_u32): Remove.
13579 (__arm_vmulhq_s32): Remove.
13580 (__arm_vmulhq_m_s8): Remove.
13581 (__arm_vmulhq_m_s32): Remove.
13582 (__arm_vmulhq_m_s16): Remove.
13583 (__arm_vmulhq_m_u8): Remove.
13584 (__arm_vmulhq_m_u32): Remove.
13585 (__arm_vmulhq_m_u16): Remove.
13586 (__arm_vmulhq_x_s8): Remove.
13587 (__arm_vmulhq_x_s16): Remove.
13588 (__arm_vmulhq_x_s32): Remove.
13589 (__arm_vmulhq_x_u8): Remove.
13590 (__arm_vmulhq_x_u16): Remove.
13591 (__arm_vmulhq_x_u32): Remove.
13592 (__arm_vmulhq): Remove.
13593 (__arm_vmulhq_m): Remove.
13594 (__arm_vmulhq_x): Remove.
13597 (vqaddq_m): Remove.
13598 (vqsubq_m): Remove.
13599 (vqsubq_u8): Remove.
13600 (vqsubq_n_u8): Remove.
13601 (vqaddq_u8): Remove.
13602 (vqaddq_n_u8): Remove.
13603 (vqsubq_s8): Remove.
13604 (vqsubq_n_s8): Remove.
13605 (vqaddq_s8): Remove.
13606 (vqaddq_n_s8): Remove.
13607 (vqsubq_u16): Remove.
13608 (vqsubq_n_u16): Remove.
13609 (vqaddq_u16): Remove.
13610 (vqaddq_n_u16): Remove.
13611 (vqsubq_s16): Remove.
13612 (vqsubq_n_s16): Remove.
13613 (vqaddq_s16): Remove.
13614 (vqaddq_n_s16): Remove.
13615 (vqsubq_u32): Remove.
13616 (vqsubq_n_u32): Remove.
13617 (vqaddq_u32): Remove.
13618 (vqaddq_n_u32): Remove.
13619 (vqsubq_s32): Remove.
13620 (vqsubq_n_s32): Remove.
13621 (vqaddq_s32): Remove.
13622 (vqaddq_n_s32): Remove.
13623 (vqaddq_m_n_s8): Remove.
13624 (vqaddq_m_n_s32): Remove.
13625 (vqaddq_m_n_s16): Remove.
13626 (vqaddq_m_n_u8): Remove.
13627 (vqaddq_m_n_u32): Remove.
13628 (vqaddq_m_n_u16): Remove.
13629 (vqaddq_m_s8): Remove.
13630 (vqaddq_m_s32): Remove.
13631 (vqaddq_m_s16): Remove.
13632 (vqaddq_m_u8): Remove.
13633 (vqaddq_m_u32): Remove.
13634 (vqaddq_m_u16): Remove.
13635 (vqsubq_m_n_s8): Remove.
13636 (vqsubq_m_n_s32): Remove.
13637 (vqsubq_m_n_s16): Remove.
13638 (vqsubq_m_n_u8): Remove.
13639 (vqsubq_m_n_u32): Remove.
13640 (vqsubq_m_n_u16): Remove.
13641 (vqsubq_m_s8): Remove.
13642 (vqsubq_m_s32): Remove.
13643 (vqsubq_m_s16): Remove.
13644 (vqsubq_m_u8): Remove.
13645 (vqsubq_m_u32): Remove.
13646 (vqsubq_m_u16): Remove.
13647 (__arm_vqsubq_u8): Remove.
13648 (__arm_vqsubq_n_u8): Remove.
13649 (__arm_vqaddq_u8): Remove.
13650 (__arm_vqaddq_n_u8): Remove.
13651 (__arm_vqsubq_s8): Remove.
13652 (__arm_vqsubq_n_s8): Remove.
13653 (__arm_vqaddq_s8): Remove.
13654 (__arm_vqaddq_n_s8): Remove.
13655 (__arm_vqsubq_u16): Remove.
13656 (__arm_vqsubq_n_u16): Remove.
13657 (__arm_vqaddq_u16): Remove.
13658 (__arm_vqaddq_n_u16): Remove.
13659 (__arm_vqsubq_s16): Remove.
13660 (__arm_vqsubq_n_s16): Remove.
13661 (__arm_vqaddq_s16): Remove.
13662 (__arm_vqaddq_n_s16): Remove.
13663 (__arm_vqsubq_u32): Remove.
13664 (__arm_vqsubq_n_u32): Remove.
13665 (__arm_vqaddq_u32): Remove.
13666 (__arm_vqaddq_n_u32): Remove.
13667 (__arm_vqsubq_s32): Remove.
13668 (__arm_vqsubq_n_s32): Remove.
13669 (__arm_vqaddq_s32): Remove.
13670 (__arm_vqaddq_n_s32): Remove.
13671 (__arm_vqaddq_m_n_s8): Remove.
13672 (__arm_vqaddq_m_n_s32): Remove.
13673 (__arm_vqaddq_m_n_s16): Remove.
13674 (__arm_vqaddq_m_n_u8): Remove.
13675 (__arm_vqaddq_m_n_u32): Remove.
13676 (__arm_vqaddq_m_n_u16): Remove.
13677 (__arm_vqaddq_m_s8): Remove.
13678 (__arm_vqaddq_m_s32): Remove.
13679 (__arm_vqaddq_m_s16): Remove.
13680 (__arm_vqaddq_m_u8): Remove.
13681 (__arm_vqaddq_m_u32): Remove.
13682 (__arm_vqaddq_m_u16): Remove.
13683 (__arm_vqsubq_m_n_s8): Remove.
13684 (__arm_vqsubq_m_n_s32): Remove.
13685 (__arm_vqsubq_m_n_s16): Remove.
13686 (__arm_vqsubq_m_n_u8): Remove.
13687 (__arm_vqsubq_m_n_u32): Remove.
13688 (__arm_vqsubq_m_n_u16): Remove.
13689 (__arm_vqsubq_m_s8): Remove.
13690 (__arm_vqsubq_m_s32): Remove.
13691 (__arm_vqsubq_m_s16): Remove.
13692 (__arm_vqsubq_m_u8): Remove.
13693 (__arm_vqsubq_m_u32): Remove.
13694 (__arm_vqsubq_m_u16): Remove.
13695 (__arm_vqsubq): Remove.
13696 (__arm_vqaddq): Remove.
13697 (__arm_vqaddq_m): Remove.
13698 (__arm_vqsubq_m): Remove.
13699 (vqdmulhq): Remove.
13700 (vqdmulhq_m): Remove.
13701 (vqdmulhq_s8): Remove.
13702 (vqdmulhq_n_s8): Remove.
13703 (vqdmulhq_s16): Remove.
13704 (vqdmulhq_n_s16): Remove.
13705 (vqdmulhq_s32): Remove.
13706 (vqdmulhq_n_s32): Remove.
13707 (vqdmulhq_m_n_s8): Remove.
13708 (vqdmulhq_m_n_s32): Remove.
13709 (vqdmulhq_m_n_s16): Remove.
13710 (vqdmulhq_m_s8): Remove.
13711 (vqdmulhq_m_s32): Remove.
13712 (vqdmulhq_m_s16): Remove.
13713 (__arm_vqdmulhq_s8): Remove.
13714 (__arm_vqdmulhq_n_s8): Remove.
13715 (__arm_vqdmulhq_s16): Remove.
13716 (__arm_vqdmulhq_n_s16): Remove.
13717 (__arm_vqdmulhq_s32): Remove.
13718 (__arm_vqdmulhq_n_s32): Remove.
13719 (__arm_vqdmulhq_m_n_s8): Remove.
13720 (__arm_vqdmulhq_m_n_s32): Remove.
13721 (__arm_vqdmulhq_m_n_s16): Remove.
13722 (__arm_vqdmulhq_m_s8): Remove.
13723 (__arm_vqdmulhq_m_s32): Remove.
13724 (__arm_vqdmulhq_m_s16): Remove.
13725 (__arm_vqdmulhq): Remove.
13726 (__arm_vqdmulhq_m): Remove.
13728 (vrhaddq_m): Remove.
13729 (vrhaddq_x): Remove.
13730 (vrhaddq_u8): Remove.
13731 (vrhaddq_s8): Remove.
13732 (vrhaddq_u16): Remove.
13733 (vrhaddq_s16): Remove.
13734 (vrhaddq_u32): Remove.
13735 (vrhaddq_s32): Remove.
13736 (vrhaddq_m_s8): Remove.
13737 (vrhaddq_m_s32): Remove.
13738 (vrhaddq_m_s16): Remove.
13739 (vrhaddq_m_u8): Remove.
13740 (vrhaddq_m_u32): Remove.
13741 (vrhaddq_m_u16): Remove.
13742 (vrhaddq_x_s8): Remove.
13743 (vrhaddq_x_s16): Remove.
13744 (vrhaddq_x_s32): Remove.
13745 (vrhaddq_x_u8): Remove.
13746 (vrhaddq_x_u16): Remove.
13747 (vrhaddq_x_u32): Remove.
13748 (__arm_vrhaddq_u8): Remove.
13749 (__arm_vrhaddq_s8): Remove.
13750 (__arm_vrhaddq_u16): Remove.
13751 (__arm_vrhaddq_s16): Remove.
13752 (__arm_vrhaddq_u32): Remove.
13753 (__arm_vrhaddq_s32): Remove.
13754 (__arm_vrhaddq_m_s8): Remove.
13755 (__arm_vrhaddq_m_s32): Remove.
13756 (__arm_vrhaddq_m_s16): Remove.
13757 (__arm_vrhaddq_m_u8): Remove.
13758 (__arm_vrhaddq_m_u32): Remove.
13759 (__arm_vrhaddq_m_u16): Remove.
13760 (__arm_vrhaddq_x_s8): Remove.
13761 (__arm_vrhaddq_x_s16): Remove.
13762 (__arm_vrhaddq_x_s32): Remove.
13763 (__arm_vrhaddq_x_u8): Remove.
13764 (__arm_vrhaddq_x_u16): Remove.
13765 (__arm_vrhaddq_x_u32): Remove.
13766 (__arm_vrhaddq): Remove.
13767 (__arm_vrhaddq_m): Remove.
13768 (__arm_vrhaddq_x): Remove.
13770 (vrmulhq_m): Remove.
13771 (vrmulhq_x): Remove.
13772 (vrmulhq_u8): Remove.
13773 (vrmulhq_s8): Remove.
13774 (vrmulhq_u16): Remove.
13775 (vrmulhq_s16): Remove.
13776 (vrmulhq_u32): Remove.
13777 (vrmulhq_s32): Remove.
13778 (vrmulhq_m_s8): Remove.
13779 (vrmulhq_m_s32): Remove.
13780 (vrmulhq_m_s16): Remove.
13781 (vrmulhq_m_u8): Remove.
13782 (vrmulhq_m_u32): Remove.
13783 (vrmulhq_m_u16): Remove.
13784 (vrmulhq_x_s8): Remove.
13785 (vrmulhq_x_s16): Remove.
13786 (vrmulhq_x_s32): Remove.
13787 (vrmulhq_x_u8): Remove.
13788 (vrmulhq_x_u16): Remove.
13789 (vrmulhq_x_u32): Remove.
13790 (__arm_vrmulhq_u8): Remove.
13791 (__arm_vrmulhq_s8): Remove.
13792 (__arm_vrmulhq_u16): Remove.
13793 (__arm_vrmulhq_s16): Remove.
13794 (__arm_vrmulhq_u32): Remove.
13795 (__arm_vrmulhq_s32): Remove.
13796 (__arm_vrmulhq_m_s8): Remove.
13797 (__arm_vrmulhq_m_s32): Remove.
13798 (__arm_vrmulhq_m_s16): Remove.
13799 (__arm_vrmulhq_m_u8): Remove.
13800 (__arm_vrmulhq_m_u32): Remove.
13801 (__arm_vrmulhq_m_u16): Remove.
13802 (__arm_vrmulhq_x_s8): Remove.
13803 (__arm_vrmulhq_x_s16): Remove.
13804 (__arm_vrmulhq_x_s32): Remove.
13805 (__arm_vrmulhq_x_u8): Remove.
13806 (__arm_vrmulhq_x_u16): Remove.
13807 (__arm_vrmulhq_x_u32): Remove.
13808 (__arm_vrmulhq): Remove.
13809 (__arm_vrmulhq_m): Remove.
13810 (__arm_vrmulhq_x): Remove.
13812 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
13814 * config/arm/iterators.md (MVE_INT_SU_BINARY): New.
13815 (mve_insn): Add vabdq, vhaddq, vhsubq, vmulhq, vqaddq, vqdmulhq,
13816 vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq.
13817 (supf): Add VQDMULHQ_S, VQRDMULHQ_S.
13818 * config/arm/mve.md (mve_vabdq_<supf><mode>)
13819 (@mve_vhaddq_<supf><mode>, mve_vhsubq_<supf><mode>)
13820 (mve_vmulhq_<supf><mode>, mve_vqaddq_<supf><mode>)
13821 (mve_vqdmulhq_s<mode>, mve_vqrdmulhq_s<mode>)
13822 (mve_vqrshlq_<supf><mode>, mve_vqshlq_<supf><mode>)
13823 (mve_vqsubq_<supf><mode>, @mve_vrhaddq_<supf><mode>)
13824 (mve_vrmulhq_<supf><mode>, mve_vrshlq_<supf><mode>): Merge into
13826 (@mve_<mve_insn>q_<supf><mode>): ... this.
13827 * config/arm/vec-common.md (avg<mode>3_floor, uavg<mode>3_floor)
13828 (avg<mode>3_ceil, uavg<mode>3_ceil): Use gen_mve_q instead of
13829 gen_mve_vhaddq / gen_mve_vrhaddq.
13831 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
13833 * config/arm/iterators.md (MVE_INT_SU_M_N_BINARY): New.
13834 (mve_insn): Add vhaddq, vhsubq, vmlaq, vmlasq, vqaddq, vqdmlahq,
13835 vqdmlashq, vqdmulhq, vqrdmlahq, vqrdmlashq, vqrdmulhq, vqsubq.
13836 (supf): Add VQDMLAHQ_M_N_S, VQDMLASHQ_M_N_S, VQRDMLAHQ_M_N_S,
13837 VQRDMLASHQ_M_N_S, VQDMULHQ_M_N_S, VQRDMULHQ_M_N_S.
13838 * config/arm/mve.md (mve_vhaddq_m_n_<supf><mode>)
13839 (mve_vhsubq_m_n_<supf><mode>, mve_vmlaq_m_n_<supf><mode>)
13840 (mve_vmlasq_m_n_<supf><mode>, mve_vqaddq_m_n_<supf><mode>)
13841 (mve_vqdmlahq_m_n_s<mode>, mve_vqdmlashq_m_n_s<mode>)
13842 (mve_vqrdmlahq_m_n_s<mode>, mve_vqrdmlashq_m_n_s<mode>)
13843 (mve_vqsubq_m_n_<supf><mode>, mve_vqdmulhq_m_n_s<mode>)
13844 (mve_vqrdmulhq_m_n_s<mode>): Merge into ...
13845 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
13847 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
13849 * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New.
13850 (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq,
13852 (supf): Add VQDMULHQ_N_S, VQRDMULHQ_N_S.
13853 * config/arm/mve.md (mve_vhaddq_n_<supf><mode>)
13854 (mve_vhsubq_n_<supf><mode>, mve_vqaddq_n_<supf><mode>)
13855 (mve_vqdmulhq_n_s<mode>, mve_vqrdmulhq_n_s<mode>)
13856 (mve_vqsubq_n_<supf><mode>): Merge into ...
13857 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
13859 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
13861 * config/arm/iterators.md (MVE_INT_SU_M_BINARY): New.
13862 (mve_insn): Add vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq,
13863 vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq,
13864 vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq,
13865 vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq.
13866 (supf): Add VQDMLADHQ_M_S, VQDMLADHXQ_M_S, VQDMLSDHQ_M_S,
13867 VQDMLSDHXQ_M_S, VQDMULHQ_M_S, VQRDMLADHQ_M_S, VQRDMLADHXQ_M_S,
13868 VQRDMLSDHQ_M_S, VQRDMLSDHXQ_M_S, VQRDMULHQ_M_S.
13869 * config/arm/mve.md (@mve_<mve_insn>q_m_<supf><mode>): New.
13870 (mve_vshlq_m_<supf><mode>): Merged into
13871 @mve_<mve_insn>q_m_<supf><mode>.
13872 (mve_vabdq_m_<supf><mode>): Likewise.
13873 (mve_vhaddq_m_<supf><mode>): Likewise.
13874 (mve_vhsubq_m_<supf><mode>): Likewise.
13875 (mve_vmaxq_m_<supf><mode>): Likewise.
13876 (mve_vminq_m_<supf><mode>): Likewise.
13877 (mve_vmulhq_m_<supf><mode>): Likewise.
13878 (mve_vqaddq_m_<supf><mode>): Likewise.
13879 (mve_vqrshlq_m_<supf><mode>): Likewise.
13880 (mve_vqshlq_m_<supf><mode>): Likewise.
13881 (mve_vqsubq_m_<supf><mode>): Likewise.
13882 (mve_vrhaddq_m_<supf><mode>): Likewise.
13883 (mve_vrmulhq_m_<supf><mode>): Likewise.
13884 (mve_vrshlq_m_<supf><mode>): Likewise.
13885 (mve_vqdmladhq_m_s<mode>): Likewise.
13886 (mve_vqdmladhxq_m_s<mode>): Likewise.
13887 (mve_vqdmlsdhq_m_s<mode>): Likewise.
13888 (mve_vqdmlsdhxq_m_s<mode>): Likewise.
13889 (mve_vqdmulhq_m_s<mode>): Likewise.
13890 (mve_vqrdmladhq_m_s<mode>): Likewise.
13891 (mve_vqrdmladhxq_m_s<mode>): Likewise.
13892 (mve_vqrdmlsdhq_m_s<mode>): Likewise.
13893 (mve_vqrdmlsdhxq_m_s<mode>): Likewise.
13894 (mve_vqrdmulhq_m_s<mode>): Likewise.
13896 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
13898 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_M_N): New. (vcreateq): New.
13899 * config/arm/arm-mve-builtins-base.def (vcreateq): New.
13900 * config/arm/arm-mve-builtins-base.h (vcreateq): New.
13901 * config/arm/arm_mve.h (vcreateq_f16): Remove.
13902 (vcreateq_f32): Remove.
13903 (vcreateq_u8): Remove.
13904 (vcreateq_u16): Remove.
13905 (vcreateq_u32): Remove.
13906 (vcreateq_u64): Remove.
13907 (vcreateq_s8): Remove.
13908 (vcreateq_s16): Remove.
13909 (vcreateq_s32): Remove.
13910 (vcreateq_s64): Remove.
13911 (__arm_vcreateq_u8): Remove.
13912 (__arm_vcreateq_u16): Remove.
13913 (__arm_vcreateq_u32): Remove.
13914 (__arm_vcreateq_u64): Remove.
13915 (__arm_vcreateq_s8): Remove.
13916 (__arm_vcreateq_s16): Remove.
13917 (__arm_vcreateq_s32): Remove.
13918 (__arm_vcreateq_s64): Remove.
13919 (__arm_vcreateq_f16): Remove.
13920 (__arm_vcreateq_f32): Remove.
13922 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
13924 * config/arm/iterators.md (MVE_FP_CREATE_ONLY): New.
13925 (mve_insn): Add VCREATEQ_S, VCREATEQ_U, VCREATEQ_F.
13926 * config/arm/mve.md (mve_vcreateq_f<mode>): Rename into ...
13927 (@mve_<mve_insn>q_f<mode>): ... this.
13928 (mve_vcreateq_<supf><mode>): Rename into ...
13929 (@mve_<mve_insn>q_<supf><mode>): ... this.
13931 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
13933 * config/arm/arm-mve-builtins-shapes.cc (create): New.
13934 * config/arm/arm-mve-builtins-shapes.h: (create): New.
13936 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
13938 * config/arm/arm-mve-builtins-functions.h (class
13939 unspec_mve_function_exact_insn): New.
13941 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
13943 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): New.
13945 * config/arm/arm-mve-builtins-base.def (vorrq): New.
13946 * config/arm/arm-mve-builtins-base.h (vorrq): New.
13947 * config/arm/arm-mve-builtins.cc
13948 (function_instance::has_inactive_argument): Handle vorrq.
13949 * config/arm/arm_mve.h (vorrq): Remove.
13950 (vorrq_m_n): Remove.
13953 (vorrq_u8): Remove.
13954 (vorrq_s8): Remove.
13955 (vorrq_u16): Remove.
13956 (vorrq_s16): Remove.
13957 (vorrq_u32): Remove.
13958 (vorrq_s32): Remove.
13959 (vorrq_n_u16): Remove.
13960 (vorrq_f16): Remove.
13961 (vorrq_n_s16): Remove.
13962 (vorrq_n_u32): Remove.
13963 (vorrq_f32): Remove.
13964 (vorrq_n_s32): Remove.
13965 (vorrq_m_n_s16): Remove.
13966 (vorrq_m_n_u16): Remove.
13967 (vorrq_m_n_s32): Remove.
13968 (vorrq_m_n_u32): Remove.
13969 (vorrq_m_s8): Remove.
13970 (vorrq_m_s32): Remove.
13971 (vorrq_m_s16): Remove.
13972 (vorrq_m_u8): Remove.
13973 (vorrq_m_u32): Remove.
13974 (vorrq_m_u16): Remove.
13975 (vorrq_m_f32): Remove.
13976 (vorrq_m_f16): Remove.
13977 (vorrq_x_s8): Remove.
13978 (vorrq_x_s16): Remove.
13979 (vorrq_x_s32): Remove.
13980 (vorrq_x_u8): Remove.
13981 (vorrq_x_u16): Remove.
13982 (vorrq_x_u32): Remove.
13983 (vorrq_x_f16): Remove.
13984 (vorrq_x_f32): Remove.
13985 (__arm_vorrq_u8): Remove.
13986 (__arm_vorrq_s8): Remove.
13987 (__arm_vorrq_u16): Remove.
13988 (__arm_vorrq_s16): Remove.
13989 (__arm_vorrq_u32): Remove.
13990 (__arm_vorrq_s32): Remove.
13991 (__arm_vorrq_n_u16): Remove.
13992 (__arm_vorrq_n_s16): Remove.
13993 (__arm_vorrq_n_u32): Remove.
13994 (__arm_vorrq_n_s32): Remove.
13995 (__arm_vorrq_m_n_s16): Remove.
13996 (__arm_vorrq_m_n_u16): Remove.
13997 (__arm_vorrq_m_n_s32): Remove.
13998 (__arm_vorrq_m_n_u32): Remove.
13999 (__arm_vorrq_m_s8): Remove.
14000 (__arm_vorrq_m_s32): Remove.
14001 (__arm_vorrq_m_s16): Remove.
14002 (__arm_vorrq_m_u8): Remove.
14003 (__arm_vorrq_m_u32): Remove.
14004 (__arm_vorrq_m_u16): Remove.
14005 (__arm_vorrq_x_s8): Remove.
14006 (__arm_vorrq_x_s16): Remove.
14007 (__arm_vorrq_x_s32): Remove.
14008 (__arm_vorrq_x_u8): Remove.
14009 (__arm_vorrq_x_u16): Remove.
14010 (__arm_vorrq_x_u32): Remove.
14011 (__arm_vorrq_f16): Remove.
14012 (__arm_vorrq_f32): Remove.
14013 (__arm_vorrq_m_f32): Remove.
14014 (__arm_vorrq_m_f16): Remove.
14015 (__arm_vorrq_x_f16): Remove.
14016 (__arm_vorrq_x_f32): Remove.
14017 (__arm_vorrq): Remove.
14018 (__arm_vorrq_m_n): Remove.
14019 (__arm_vorrq_m): Remove.
14020 (__arm_vorrq_x): Remove.
14022 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
14024 * config/arm/arm-mve-builtins-shapes.cc (binary_orrq): New.
14025 * config/arm/arm-mve-builtins-shapes.h (binary_orrq): New.
14026 * config/arm/arm-mve-builtins.cc (preds_m_or_none): Remove static.
14027 * config/arm/arm-mve-builtins.h (preds_m_or_none): Declare.
14029 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
14031 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M): New.
14032 (vandq,veorq): New.
14033 * config/arm/arm-mve-builtins-base.def (vandq, veorq): New.
14034 * config/arm/arm-mve-builtins-base.h (vandq, veorq): New.
14035 * config/arm/arm_mve.h (vandq): Remove.
14038 (vandq_u8): Remove.
14039 (vandq_s8): Remove.
14040 (vandq_u16): Remove.
14041 (vandq_s16): Remove.
14042 (vandq_u32): Remove.
14043 (vandq_s32): Remove.
14044 (vandq_f16): Remove.
14045 (vandq_f32): Remove.
14046 (vandq_m_s8): Remove.
14047 (vandq_m_s32): Remove.
14048 (vandq_m_s16): Remove.
14049 (vandq_m_u8): Remove.
14050 (vandq_m_u32): Remove.
14051 (vandq_m_u16): Remove.
14052 (vandq_m_f32): Remove.
14053 (vandq_m_f16): Remove.
14054 (vandq_x_s8): Remove.
14055 (vandq_x_s16): Remove.
14056 (vandq_x_s32): Remove.
14057 (vandq_x_u8): Remove.
14058 (vandq_x_u16): Remove.
14059 (vandq_x_u32): Remove.
14060 (vandq_x_f16): Remove.
14061 (vandq_x_f32): Remove.
14062 (__arm_vandq_u8): Remove.
14063 (__arm_vandq_s8): Remove.
14064 (__arm_vandq_u16): Remove.
14065 (__arm_vandq_s16): Remove.
14066 (__arm_vandq_u32): Remove.
14067 (__arm_vandq_s32): Remove.
14068 (__arm_vandq_m_s8): Remove.
14069 (__arm_vandq_m_s32): Remove.
14070 (__arm_vandq_m_s16): Remove.
14071 (__arm_vandq_m_u8): Remove.
14072 (__arm_vandq_m_u32): Remove.
14073 (__arm_vandq_m_u16): Remove.
14074 (__arm_vandq_x_s8): Remove.
14075 (__arm_vandq_x_s16): Remove.
14076 (__arm_vandq_x_s32): Remove.
14077 (__arm_vandq_x_u8): Remove.
14078 (__arm_vandq_x_u16): Remove.
14079 (__arm_vandq_x_u32): Remove.
14080 (__arm_vandq_f16): Remove.
14081 (__arm_vandq_f32): Remove.
14082 (__arm_vandq_m_f32): Remove.
14083 (__arm_vandq_m_f16): Remove.
14084 (__arm_vandq_x_f16): Remove.
14085 (__arm_vandq_x_f32): Remove.
14086 (__arm_vandq): Remove.
14087 (__arm_vandq_m): Remove.
14088 (__arm_vandq_x): Remove.
14091 (veorq_u8): Remove.
14092 (veorq_s8): Remove.
14093 (veorq_u16): Remove.
14094 (veorq_s16): Remove.
14095 (veorq_u32): Remove.
14096 (veorq_s32): Remove.
14097 (veorq_f16): Remove.
14098 (veorq_f32): Remove.
14099 (veorq_m_s8): Remove.
14100 (veorq_m_s32): Remove.
14101 (veorq_m_s16): Remove.
14102 (veorq_m_u8): Remove.
14103 (veorq_m_u32): Remove.
14104 (veorq_m_u16): Remove.
14105 (veorq_m_f32): Remove.
14106 (veorq_m_f16): Remove.
14107 (veorq_x_s8): Remove.
14108 (veorq_x_s16): Remove.
14109 (veorq_x_s32): Remove.
14110 (veorq_x_u8): Remove.
14111 (veorq_x_u16): Remove.
14112 (veorq_x_u32): Remove.
14113 (veorq_x_f16): Remove.
14114 (veorq_x_f32): Remove.
14115 (__arm_veorq_u8): Remove.
14116 (__arm_veorq_s8): Remove.
14117 (__arm_veorq_u16): Remove.
14118 (__arm_veorq_s16): Remove.
14119 (__arm_veorq_u32): Remove.
14120 (__arm_veorq_s32): Remove.
14121 (__arm_veorq_m_s8): Remove.
14122 (__arm_veorq_m_s32): Remove.
14123 (__arm_veorq_m_s16): Remove.
14124 (__arm_veorq_m_u8): Remove.
14125 (__arm_veorq_m_u32): Remove.
14126 (__arm_veorq_m_u16): Remove.
14127 (__arm_veorq_x_s8): Remove.
14128 (__arm_veorq_x_s16): Remove.
14129 (__arm_veorq_x_s32): Remove.
14130 (__arm_veorq_x_u8): Remove.
14131 (__arm_veorq_x_u16): Remove.
14132 (__arm_veorq_x_u32): Remove.
14133 (__arm_veorq_f16): Remove.
14134 (__arm_veorq_f32): Remove.
14135 (__arm_veorq_m_f32): Remove.
14136 (__arm_veorq_m_f16): Remove.
14137 (__arm_veorq_x_f16): Remove.
14138 (__arm_veorq_x_f32): Remove.
14139 (__arm_veorq): Remove.
14140 (__arm_veorq_m): Remove.
14141 (__arm_veorq_x): Remove.
14143 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
14145 * config/arm/iterators.md (MVE_INT_M_BINARY_LOGIC)
14146 (MVE_FP_M_BINARY_LOGIC): New.
14147 (MVE_INT_M_N_BINARY_LOGIC): New.
14148 (MVE_INT_N_BINARY_LOGIC): New.
14149 (mve_insn): Add vand, veor, vorr, vbic.
14150 * config/arm/mve.md (mve_vandq_m_<supf><mode>)
14151 (mve_veorq_m_<supf><mode>, mve_vorrq_m_<supf><mode>)
14152 (mve_vbicq_m_<supf><mode>): Merge into ...
14153 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
14154 (mve_vandq_m_f<mode>, mve_veorq_m_f<mode>, mve_vorrq_m_f<mode>)
14155 (mve_vbicq_m_f<mode>): Merge into ...
14156 (@mve_<mve_insn>q_m_f<mode>): ... this.
14157 (mve_vorrq_n_<supf><mode>)
14158 (mve_vbicq_n_<supf><mode>): Merge into ...
14159 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
14160 (mve_vorrq_m_n_<supf><mode>, mve_vbicq_m_n_<supf><mode>): Merge
14162 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14164 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
14166 * config/arm/arm-mve-builtins-shapes.cc (binary): New.
14167 * config/arm/arm-mve-builtins-shapes.h (binary): New.
14169 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
14171 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N):
14173 (vaddq, vmulq, vsubq): New.
14174 * config/arm/arm-mve-builtins-base.def (vaddq, vmulq, vsubq): New.
14175 * config/arm/arm-mve-builtins-base.h (vaddq, vmulq, vsubq): New.
14176 * config/arm/arm_mve.h (vaddq): Remove.
14179 (vaddq_n_u8): Remove.
14180 (vaddq_n_s8): Remove.
14181 (vaddq_n_u16): Remove.
14182 (vaddq_n_s16): Remove.
14183 (vaddq_n_u32): Remove.
14184 (vaddq_n_s32): Remove.
14185 (vaddq_n_f16): Remove.
14186 (vaddq_n_f32): Remove.
14187 (vaddq_m_n_s8): Remove.
14188 (vaddq_m_n_s32): Remove.
14189 (vaddq_m_n_s16): Remove.
14190 (vaddq_m_n_u8): Remove.
14191 (vaddq_m_n_u32): Remove.
14192 (vaddq_m_n_u16): Remove.
14193 (vaddq_m_s8): Remove.
14194 (vaddq_m_s32): Remove.
14195 (vaddq_m_s16): Remove.
14196 (vaddq_m_u8): Remove.
14197 (vaddq_m_u32): Remove.
14198 (vaddq_m_u16): Remove.
14199 (vaddq_m_f32): Remove.
14200 (vaddq_m_f16): Remove.
14201 (vaddq_m_n_f32): Remove.
14202 (vaddq_m_n_f16): Remove.
14203 (vaddq_s8): Remove.
14204 (vaddq_s16): Remove.
14205 (vaddq_s32): Remove.
14206 (vaddq_u8): Remove.
14207 (vaddq_u16): Remove.
14208 (vaddq_u32): Remove.
14209 (vaddq_f16): Remove.
14210 (vaddq_f32): Remove.
14211 (vaddq_x_s8): Remove.
14212 (vaddq_x_s16): Remove.
14213 (vaddq_x_s32): Remove.
14214 (vaddq_x_n_s8): Remove.
14215 (vaddq_x_n_s16): Remove.
14216 (vaddq_x_n_s32): Remove.
14217 (vaddq_x_u8): Remove.
14218 (vaddq_x_u16): Remove.
14219 (vaddq_x_u32): Remove.
14220 (vaddq_x_n_u8): Remove.
14221 (vaddq_x_n_u16): Remove.
14222 (vaddq_x_n_u32): Remove.
14223 (vaddq_x_f16): Remove.
14224 (vaddq_x_f32): Remove.
14225 (vaddq_x_n_f16): Remove.
14226 (vaddq_x_n_f32): Remove.
14227 (__arm_vaddq_n_u8): Remove.
14228 (__arm_vaddq_n_s8): Remove.
14229 (__arm_vaddq_n_u16): Remove.
14230 (__arm_vaddq_n_s16): Remove.
14231 (__arm_vaddq_n_u32): Remove.
14232 (__arm_vaddq_n_s32): Remove.
14233 (__arm_vaddq_m_n_s8): Remove.
14234 (__arm_vaddq_m_n_s32): Remove.
14235 (__arm_vaddq_m_n_s16): Remove.
14236 (__arm_vaddq_m_n_u8): Remove.
14237 (__arm_vaddq_m_n_u32): Remove.
14238 (__arm_vaddq_m_n_u16): Remove.
14239 (__arm_vaddq_m_s8): Remove.
14240 (__arm_vaddq_m_s32): Remove.
14241 (__arm_vaddq_m_s16): Remove.
14242 (__arm_vaddq_m_u8): Remove.
14243 (__arm_vaddq_m_u32): Remove.
14244 (__arm_vaddq_m_u16): Remove.
14245 (__arm_vaddq_s8): Remove.
14246 (__arm_vaddq_s16): Remove.
14247 (__arm_vaddq_s32): Remove.
14248 (__arm_vaddq_u8): Remove.
14249 (__arm_vaddq_u16): Remove.
14250 (__arm_vaddq_u32): Remove.
14251 (__arm_vaddq_x_s8): Remove.
14252 (__arm_vaddq_x_s16): Remove.
14253 (__arm_vaddq_x_s32): Remove.
14254 (__arm_vaddq_x_n_s8): Remove.
14255 (__arm_vaddq_x_n_s16): Remove.
14256 (__arm_vaddq_x_n_s32): Remove.
14257 (__arm_vaddq_x_u8): Remove.
14258 (__arm_vaddq_x_u16): Remove.
14259 (__arm_vaddq_x_u32): Remove.
14260 (__arm_vaddq_x_n_u8): Remove.
14261 (__arm_vaddq_x_n_u16): Remove.
14262 (__arm_vaddq_x_n_u32): Remove.
14263 (__arm_vaddq_n_f16): Remove.
14264 (__arm_vaddq_n_f32): Remove.
14265 (__arm_vaddq_m_f32): Remove.
14266 (__arm_vaddq_m_f16): Remove.
14267 (__arm_vaddq_m_n_f32): Remove.
14268 (__arm_vaddq_m_n_f16): Remove.
14269 (__arm_vaddq_f16): Remove.
14270 (__arm_vaddq_f32): Remove.
14271 (__arm_vaddq_x_f16): Remove.
14272 (__arm_vaddq_x_f32): Remove.
14273 (__arm_vaddq_x_n_f16): Remove.
14274 (__arm_vaddq_x_n_f32): Remove.
14275 (__arm_vaddq): Remove.
14276 (__arm_vaddq_m): Remove.
14277 (__arm_vaddq_x): Remove.
14281 (vmulq_u8): Remove.
14282 (vmulq_n_u8): Remove.
14283 (vmulq_s8): Remove.
14284 (vmulq_n_s8): Remove.
14285 (vmulq_u16): Remove.
14286 (vmulq_n_u16): Remove.
14287 (vmulq_s16): Remove.
14288 (vmulq_n_s16): Remove.
14289 (vmulq_u32): Remove.
14290 (vmulq_n_u32): Remove.
14291 (vmulq_s32): Remove.
14292 (vmulq_n_s32): Remove.
14293 (vmulq_n_f16): Remove.
14294 (vmulq_f16): Remove.
14295 (vmulq_n_f32): Remove.
14296 (vmulq_f32): Remove.
14297 (vmulq_m_n_s8): Remove.
14298 (vmulq_m_n_s32): Remove.
14299 (vmulq_m_n_s16): Remove.
14300 (vmulq_m_n_u8): Remove.
14301 (vmulq_m_n_u32): Remove.
14302 (vmulq_m_n_u16): Remove.
14303 (vmulq_m_s8): Remove.
14304 (vmulq_m_s32): Remove.
14305 (vmulq_m_s16): Remove.
14306 (vmulq_m_u8): Remove.
14307 (vmulq_m_u32): Remove.
14308 (vmulq_m_u16): Remove.
14309 (vmulq_m_f32): Remove.
14310 (vmulq_m_f16): Remove.
14311 (vmulq_m_n_f32): Remove.
14312 (vmulq_m_n_f16): Remove.
14313 (vmulq_x_s8): Remove.
14314 (vmulq_x_s16): Remove.
14315 (vmulq_x_s32): Remove.
14316 (vmulq_x_n_s8): Remove.
14317 (vmulq_x_n_s16): Remove.
14318 (vmulq_x_n_s32): Remove.
14319 (vmulq_x_u8): Remove.
14320 (vmulq_x_u16): Remove.
14321 (vmulq_x_u32): Remove.
14322 (vmulq_x_n_u8): Remove.
14323 (vmulq_x_n_u16): Remove.
14324 (vmulq_x_n_u32): Remove.
14325 (vmulq_x_f16): Remove.
14326 (vmulq_x_f32): Remove.
14327 (vmulq_x_n_f16): Remove.
14328 (vmulq_x_n_f32): Remove.
14329 (__arm_vmulq_u8): Remove.
14330 (__arm_vmulq_n_u8): Remove.
14331 (__arm_vmulq_s8): Remove.
14332 (__arm_vmulq_n_s8): Remove.
14333 (__arm_vmulq_u16): Remove.
14334 (__arm_vmulq_n_u16): Remove.
14335 (__arm_vmulq_s16): Remove.
14336 (__arm_vmulq_n_s16): Remove.
14337 (__arm_vmulq_u32): Remove.
14338 (__arm_vmulq_n_u32): Remove.
14339 (__arm_vmulq_s32): Remove.
14340 (__arm_vmulq_n_s32): Remove.
14341 (__arm_vmulq_m_n_s8): Remove.
14342 (__arm_vmulq_m_n_s32): Remove.
14343 (__arm_vmulq_m_n_s16): Remove.
14344 (__arm_vmulq_m_n_u8): Remove.
14345 (__arm_vmulq_m_n_u32): Remove.
14346 (__arm_vmulq_m_n_u16): Remove.
14347 (__arm_vmulq_m_s8): Remove.
14348 (__arm_vmulq_m_s32): Remove.
14349 (__arm_vmulq_m_s16): Remove.
14350 (__arm_vmulq_m_u8): Remove.
14351 (__arm_vmulq_m_u32): Remove.
14352 (__arm_vmulq_m_u16): Remove.
14353 (__arm_vmulq_x_s8): Remove.
14354 (__arm_vmulq_x_s16): Remove.
14355 (__arm_vmulq_x_s32): Remove.
14356 (__arm_vmulq_x_n_s8): Remove.
14357 (__arm_vmulq_x_n_s16): Remove.
14358 (__arm_vmulq_x_n_s32): Remove.
14359 (__arm_vmulq_x_u8): Remove.
14360 (__arm_vmulq_x_u16): Remove.
14361 (__arm_vmulq_x_u32): Remove.
14362 (__arm_vmulq_x_n_u8): Remove.
14363 (__arm_vmulq_x_n_u16): Remove.
14364 (__arm_vmulq_x_n_u32): Remove.
14365 (__arm_vmulq_n_f16): Remove.
14366 (__arm_vmulq_f16): Remove.
14367 (__arm_vmulq_n_f32): Remove.
14368 (__arm_vmulq_f32): Remove.
14369 (__arm_vmulq_m_f32): Remove.
14370 (__arm_vmulq_m_f16): Remove.
14371 (__arm_vmulq_m_n_f32): Remove.
14372 (__arm_vmulq_m_n_f16): Remove.
14373 (__arm_vmulq_x_f16): Remove.
14374 (__arm_vmulq_x_f32): Remove.
14375 (__arm_vmulq_x_n_f16): Remove.
14376 (__arm_vmulq_x_n_f32): Remove.
14377 (__arm_vmulq): Remove.
14378 (__arm_vmulq_m): Remove.
14379 (__arm_vmulq_x): Remove.
14383 (vsubq_n_f16): Remove.
14384 (vsubq_n_f32): Remove.
14385 (vsubq_u8): Remove.
14386 (vsubq_n_u8): Remove.
14387 (vsubq_s8): Remove.
14388 (vsubq_n_s8): Remove.
14389 (vsubq_u16): Remove.
14390 (vsubq_n_u16): Remove.
14391 (vsubq_s16): Remove.
14392 (vsubq_n_s16): Remove.
14393 (vsubq_u32): Remove.
14394 (vsubq_n_u32): Remove.
14395 (vsubq_s32): Remove.
14396 (vsubq_n_s32): Remove.
14397 (vsubq_f16): Remove.
14398 (vsubq_f32): Remove.
14399 (vsubq_m_s8): Remove.
14400 (vsubq_m_u8): Remove.
14401 (vsubq_m_s16): Remove.
14402 (vsubq_m_u16): Remove.
14403 (vsubq_m_s32): Remove.
14404 (vsubq_m_u32): Remove.
14405 (vsubq_m_n_s8): Remove.
14406 (vsubq_m_n_s32): Remove.
14407 (vsubq_m_n_s16): Remove.
14408 (vsubq_m_n_u8): Remove.
14409 (vsubq_m_n_u32): Remove.
14410 (vsubq_m_n_u16): Remove.
14411 (vsubq_m_f32): Remove.
14412 (vsubq_m_f16): Remove.
14413 (vsubq_m_n_f32): Remove.
14414 (vsubq_m_n_f16): Remove.
14415 (vsubq_x_s8): Remove.
14416 (vsubq_x_s16): Remove.
14417 (vsubq_x_s32): Remove.
14418 (vsubq_x_n_s8): Remove.
14419 (vsubq_x_n_s16): Remove.
14420 (vsubq_x_n_s32): Remove.
14421 (vsubq_x_u8): Remove.
14422 (vsubq_x_u16): Remove.
14423 (vsubq_x_u32): Remove.
14424 (vsubq_x_n_u8): Remove.
14425 (vsubq_x_n_u16): Remove.
14426 (vsubq_x_n_u32): Remove.
14427 (vsubq_x_f16): Remove.
14428 (vsubq_x_f32): Remove.
14429 (vsubq_x_n_f16): Remove.
14430 (vsubq_x_n_f32): Remove.
14431 (__arm_vsubq_u8): Remove.
14432 (__arm_vsubq_n_u8): Remove.
14433 (__arm_vsubq_s8): Remove.
14434 (__arm_vsubq_n_s8): Remove.
14435 (__arm_vsubq_u16): Remove.
14436 (__arm_vsubq_n_u16): Remove.
14437 (__arm_vsubq_s16): Remove.
14438 (__arm_vsubq_n_s16): Remove.
14439 (__arm_vsubq_u32): Remove.
14440 (__arm_vsubq_n_u32): Remove.
14441 (__arm_vsubq_s32): Remove.
14442 (__arm_vsubq_n_s32): Remove.
14443 (__arm_vsubq_m_s8): Remove.
14444 (__arm_vsubq_m_u8): Remove.
14445 (__arm_vsubq_m_s16): Remove.
14446 (__arm_vsubq_m_u16): Remove.
14447 (__arm_vsubq_m_s32): Remove.
14448 (__arm_vsubq_m_u32): Remove.
14449 (__arm_vsubq_m_n_s8): Remove.
14450 (__arm_vsubq_m_n_s32): Remove.
14451 (__arm_vsubq_m_n_s16): Remove.
14452 (__arm_vsubq_m_n_u8): Remove.
14453 (__arm_vsubq_m_n_u32): Remove.
14454 (__arm_vsubq_m_n_u16): Remove.
14455 (__arm_vsubq_x_s8): Remove.
14456 (__arm_vsubq_x_s16): Remove.
14457 (__arm_vsubq_x_s32): Remove.
14458 (__arm_vsubq_x_n_s8): Remove.
14459 (__arm_vsubq_x_n_s16): Remove.
14460 (__arm_vsubq_x_n_s32): Remove.
14461 (__arm_vsubq_x_u8): Remove.
14462 (__arm_vsubq_x_u16): Remove.
14463 (__arm_vsubq_x_u32): Remove.
14464 (__arm_vsubq_x_n_u8): Remove.
14465 (__arm_vsubq_x_n_u16): Remove.
14466 (__arm_vsubq_x_n_u32): Remove.
14467 (__arm_vsubq_n_f16): Remove.
14468 (__arm_vsubq_n_f32): Remove.
14469 (__arm_vsubq_f16): Remove.
14470 (__arm_vsubq_f32): Remove.
14471 (__arm_vsubq_m_f32): Remove.
14472 (__arm_vsubq_m_f16): Remove.
14473 (__arm_vsubq_m_n_f32): Remove.
14474 (__arm_vsubq_m_n_f16): Remove.
14475 (__arm_vsubq_x_f16): Remove.
14476 (__arm_vsubq_x_f32): Remove.
14477 (__arm_vsubq_x_n_f16): Remove.
14478 (__arm_vsubq_x_n_f32): Remove.
14479 (__arm_vsubq): Remove.
14480 (__arm_vsubq_m): Remove.
14481 (__arm_vsubq_x): Remove.
14482 * config/arm/arm_mve_builtins.def (vsubq_u, vsubq_s, vsubq_f):
14484 (vmulq_u, vmulq_s, vmulq_f): Remove.
14485 * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove.
14486 (mve_vmulq_<supf><mode>): Remove.
14488 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
14490 * config/arm/iterators.md (MVE_INT_BINARY_RTX, MVE_INT_M_BINARY)
14491 (MVE_INT_M_N_BINARY, MVE_INT_N_BINARY, MVE_FP_M_BINARY)
14492 (MVE_FP_M_N_BINARY, MVE_FP_N_BINARY, mve_addsubmul, mve_insn): New
14494 * config/arm/mve.md
14495 (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
14497 (@mve_<mve_insn>q_n_f<mode>): ... this.
14498 (mve_vaddq_n_<supf><mode>, mve_vmulq_n_<supf><mode>)
14499 (mve_vsubq_n_<supf><mode>): Factorize into ...
14500 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
14501 (mve_vaddq<mode>, mve_vmulq<mode>, mve_vsubq<mode>): Factorize
14503 (mve_<mve_addsubmul>q<mode>): ... this.
14504 (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
14506 (mve_<mve_addsubmul>q_f<mode>): ... this.
14507 (mve_vaddq_m_<supf><mode>, mve_vmulq_m_<supf><mode>)
14508 (mve_vsubq_m_<supf><mode>): Factorize into ...
14509 (@mve_<mve_insn>q_m_<supf><mode>): ... this,
14510 (mve_vaddq_m_n_<supf><mode>, mve_vmulq_m_n_<supf><mode>)
14511 (mve_vsubq_m_n_<supf><mode>): Factorize into ...
14512 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14513 (mve_vaddq_m_f<mode>, mve_vmulq_m_f<mode>, mve_vsubq_m_f<mode>):
14515 (@mve_<mve_insn>q_m_f<mode>): ... this.
14516 (mve_vaddq_m_n_f<mode>, mve_vmulq_m_n_f<mode>)
14517 (mve_vsubq_m_n_f<mode>): Factorize into ...
14518 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
14520 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
14522 * config/arm/arm-mve-builtins-functions.h (class
14523 unspec_based_mve_function_base): New.
14524 (class unspec_based_mve_function_exact_insn): New.
14526 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
14528 * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
14529 * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
14531 2023-05-03 Murray Steele <murray.steele@arm.com>
14532 Christophe Lyon <christophe.lyon@arm.com>
14534 * config/arm/arm-mve-builtins-base.cc (class
14535 vuninitializedq_impl): New.
14536 * config/arm/arm-mve-builtins-base.def (vuninitializedq): New.
14537 * config/arm/arm-mve-builtins-base.h (vuninitializedq): New
14539 * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
14540 * config/arm/arm-mve-builtins-shapes.h (inherent): New
14542 * config/arm/arm_mve_types.h (__arm_vuninitializedq): Move to ...
14543 * config/arm/arm_mve.h (__arm_vuninitializedq): ... here.
14544 (__arm_vuninitializedq_u8): Remove.
14545 (__arm_vuninitializedq_u16): Remove.
14546 (__arm_vuninitializedq_u32): Remove.
14547 (__arm_vuninitializedq_u64): Remove.
14548 (__arm_vuninitializedq_s8): Remove.
14549 (__arm_vuninitializedq_s16): Remove.
14550 (__arm_vuninitializedq_s32): Remove.
14551 (__arm_vuninitializedq_s64): Remove.
14552 (__arm_vuninitializedq_f16): Remove.
14553 (__arm_vuninitializedq_f32): Remove.
14555 2023-05-03 Murray Steele <murray.steele@arm.com>
14556 Christophe Lyon <christophe.lyon@arm.com>
14558 * config/arm/arm-mve-builtins-base.cc (vreinterpretq_impl): New class.
14559 * config/arm/arm-mve-builtins-base.def: Define vreinterpretq.
14560 * config/arm/arm-mve-builtins-base.h (vreinterpretq): New declaration.
14561 * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): New function.
14562 (parse_type): Likewise.
14563 (parse_signature): Likewise.
14564 (build_one): Likewise.
14565 (build_all): Likewise.
14566 (overloaded_base): New struct.
14567 (unary_convert_def): Likewise.
14568 * config/arm/arm-mve-builtins-shapes.h (unary_convert): Declare.
14569 * config/arm/arm-mve-builtins.cc (TYPES_reinterpret_signed1): New
14571 (TYPES_reinterpret_unsigned1): Likewise.
14572 (TYPES_reinterpret_integer): Likewise.
14573 (TYPES_reinterpret_integer1): Likewise.
14574 (TYPES_reinterpret_float1): Likewise.
14575 (TYPES_reinterpret_float): Likewise.
14576 (reinterpret_integer): New.
14577 (reinterpret_float): New.
14578 (handle_arm_mve_h): Register builtins.
14579 * config/arm/arm_mve.h (vreinterpretq_s16): Remove.
14580 (vreinterpretq_s32): Likewise.
14581 (vreinterpretq_s64): Likewise.
14582 (vreinterpretq_s8): Likewise.
14583 (vreinterpretq_u16): Likewise.
14584 (vreinterpretq_u32): Likewise.
14585 (vreinterpretq_u64): Likewise.
14586 (vreinterpretq_u8): Likewise.
14587 (vreinterpretq_f16): Likewise.
14588 (vreinterpretq_f32): Likewise.
14589 (vreinterpretq_s16_s32): Likewise.
14590 (vreinterpretq_s16_s64): Likewise.
14591 (vreinterpretq_s16_s8): Likewise.
14592 (vreinterpretq_s16_u16): Likewise.
14593 (vreinterpretq_s16_u32): Likewise.
14594 (vreinterpretq_s16_u64): Likewise.
14595 (vreinterpretq_s16_u8): Likewise.
14596 (vreinterpretq_s32_s16): Likewise.
14597 (vreinterpretq_s32_s64): Likewise.
14598 (vreinterpretq_s32_s8): Likewise.
14599 (vreinterpretq_s32_u16): Likewise.
14600 (vreinterpretq_s32_u32): Likewise.
14601 (vreinterpretq_s32_u64): Likewise.
14602 (vreinterpretq_s32_u8): Likewise.
14603 (vreinterpretq_s64_s16): Likewise.
14604 (vreinterpretq_s64_s32): Likewise.
14605 (vreinterpretq_s64_s8): Likewise.
14606 (vreinterpretq_s64_u16): Likewise.
14607 (vreinterpretq_s64_u32): Likewise.
14608 (vreinterpretq_s64_u64): Likewise.
14609 (vreinterpretq_s64_u8): Likewise.
14610 (vreinterpretq_s8_s16): Likewise.
14611 (vreinterpretq_s8_s32): Likewise.
14612 (vreinterpretq_s8_s64): Likewise.
14613 (vreinterpretq_s8_u16): Likewise.
14614 (vreinterpretq_s8_u32): Likewise.
14615 (vreinterpretq_s8_u64): Likewise.
14616 (vreinterpretq_s8_u8): Likewise.
14617 (vreinterpretq_u16_s16): Likewise.
14618 (vreinterpretq_u16_s32): Likewise.
14619 (vreinterpretq_u16_s64): Likewise.
14620 (vreinterpretq_u16_s8): Likewise.
14621 (vreinterpretq_u16_u32): Likewise.
14622 (vreinterpretq_u16_u64): Likewise.
14623 (vreinterpretq_u16_u8): Likewise.
14624 (vreinterpretq_u32_s16): Likewise.
14625 (vreinterpretq_u32_s32): Likewise.
14626 (vreinterpretq_u32_s64): Likewise.
14627 (vreinterpretq_u32_s8): Likewise.
14628 (vreinterpretq_u32_u16): Likewise.
14629 (vreinterpretq_u32_u64): Likewise.
14630 (vreinterpretq_u32_u8): Likewise.
14631 (vreinterpretq_u64_s16): Likewise.
14632 (vreinterpretq_u64_s32): Likewise.
14633 (vreinterpretq_u64_s64): Likewise.
14634 (vreinterpretq_u64_s8): Likewise.
14635 (vreinterpretq_u64_u16): Likewise.
14636 (vreinterpretq_u64_u32): Likewise.
14637 (vreinterpretq_u64_u8): Likewise.
14638 (vreinterpretq_u8_s16): Likewise.
14639 (vreinterpretq_u8_s32): Likewise.
14640 (vreinterpretq_u8_s64): Likewise.
14641 (vreinterpretq_u8_s8): Likewise.
14642 (vreinterpretq_u8_u16): Likewise.
14643 (vreinterpretq_u8_u32): Likewise.
14644 (vreinterpretq_u8_u64): Likewise.
14645 (vreinterpretq_s32_f16): Likewise.
14646 (vreinterpretq_s32_f32): Likewise.
14647 (vreinterpretq_u16_f16): Likewise.
14648 (vreinterpretq_u16_f32): Likewise.
14649 (vreinterpretq_u32_f16): Likewise.
14650 (vreinterpretq_u32_f32): Likewise.
14651 (vreinterpretq_u64_f16): Likewise.
14652 (vreinterpretq_u64_f32): Likewise.
14653 (vreinterpretq_u8_f16): Likewise.
14654 (vreinterpretq_u8_f32): Likewise.
14655 (vreinterpretq_f16_f32): Likewise.
14656 (vreinterpretq_f16_s16): Likewise.
14657 (vreinterpretq_f16_s32): Likewise.
14658 (vreinterpretq_f16_s64): Likewise.
14659 (vreinterpretq_f16_s8): Likewise.
14660 (vreinterpretq_f16_u16): Likewise.
14661 (vreinterpretq_f16_u32): Likewise.
14662 (vreinterpretq_f16_u64): Likewise.
14663 (vreinterpretq_f16_u8): Likewise.
14664 (vreinterpretq_f32_f16): Likewise.
14665 (vreinterpretq_f32_s16): Likewise.
14666 (vreinterpretq_f32_s32): Likewise.
14667 (vreinterpretq_f32_s64): Likewise.
14668 (vreinterpretq_f32_s8): Likewise.
14669 (vreinterpretq_f32_u16): Likewise.
14670 (vreinterpretq_f32_u32): Likewise.
14671 (vreinterpretq_f32_u64): Likewise.
14672 (vreinterpretq_f32_u8): Likewise.
14673 (vreinterpretq_s16_f16): Likewise.
14674 (vreinterpretq_s16_f32): Likewise.
14675 (vreinterpretq_s64_f16): Likewise.
14676 (vreinterpretq_s64_f32): Likewise.
14677 (vreinterpretq_s8_f16): Likewise.
14678 (vreinterpretq_s8_f32): Likewise.
14679 (__arm_vreinterpretq_f16): Likewise.
14680 (__arm_vreinterpretq_f32): Likewise.
14681 (__arm_vreinterpretq_s16): Likewise.
14682 (__arm_vreinterpretq_s32): Likewise.
14683 (__arm_vreinterpretq_s64): Likewise.
14684 (__arm_vreinterpretq_s8): Likewise.
14685 (__arm_vreinterpretq_u16): Likewise.
14686 (__arm_vreinterpretq_u32): Likewise.
14687 (__arm_vreinterpretq_u64): Likewise.
14688 (__arm_vreinterpretq_u8): Likewise.
14689 * config/arm/arm_mve_types.h (__arm_vreinterpretq_s16_s32): Remove.
14690 (__arm_vreinterpretq_s16_s64): Likewise.
14691 (__arm_vreinterpretq_s16_s8): Likewise.
14692 (__arm_vreinterpretq_s16_u16): Likewise.
14693 (__arm_vreinterpretq_s16_u32): Likewise.
14694 (__arm_vreinterpretq_s16_u64): Likewise.
14695 (__arm_vreinterpretq_s16_u8): Likewise.
14696 (__arm_vreinterpretq_s32_s16): Likewise.
14697 (__arm_vreinterpretq_s32_s64): Likewise.
14698 (__arm_vreinterpretq_s32_s8): Likewise.
14699 (__arm_vreinterpretq_s32_u16): Likewise.
14700 (__arm_vreinterpretq_s32_u32): Likewise.
14701 (__arm_vreinterpretq_s32_u64): Likewise.
14702 (__arm_vreinterpretq_s32_u8): Likewise.
14703 (__arm_vreinterpretq_s64_s16): Likewise.
14704 (__arm_vreinterpretq_s64_s32): Likewise.
14705 (__arm_vreinterpretq_s64_s8): Likewise.
14706 (__arm_vreinterpretq_s64_u16): Likewise.
14707 (__arm_vreinterpretq_s64_u32): Likewise.
14708 (__arm_vreinterpretq_s64_u64): Likewise.
14709 (__arm_vreinterpretq_s64_u8): Likewise.
14710 (__arm_vreinterpretq_s8_s16): Likewise.
14711 (__arm_vreinterpretq_s8_s32): Likewise.
14712 (__arm_vreinterpretq_s8_s64): Likewise.
14713 (__arm_vreinterpretq_s8_u16): Likewise.
14714 (__arm_vreinterpretq_s8_u32): Likewise.
14715 (__arm_vreinterpretq_s8_u64): Likewise.
14716 (__arm_vreinterpretq_s8_u8): Likewise.
14717 (__arm_vreinterpretq_u16_s16): Likewise.
14718 (__arm_vreinterpretq_u16_s32): Likewise.
14719 (__arm_vreinterpretq_u16_s64): Likewise.
14720 (__arm_vreinterpretq_u16_s8): Likewise.
14721 (__arm_vreinterpretq_u16_u32): Likewise.
14722 (__arm_vreinterpretq_u16_u64): Likewise.
14723 (__arm_vreinterpretq_u16_u8): Likewise.
14724 (__arm_vreinterpretq_u32_s16): Likewise.
14725 (__arm_vreinterpretq_u32_s32): Likewise.
14726 (__arm_vreinterpretq_u32_s64): Likewise.
14727 (__arm_vreinterpretq_u32_s8): Likewise.
14728 (__arm_vreinterpretq_u32_u16): Likewise.
14729 (__arm_vreinterpretq_u32_u64): Likewise.
14730 (__arm_vreinterpretq_u32_u8): Likewise.
14731 (__arm_vreinterpretq_u64_s16): Likewise.
14732 (__arm_vreinterpretq_u64_s32): Likewise.
14733 (__arm_vreinterpretq_u64_s64): Likewise.
14734 (__arm_vreinterpretq_u64_s8): Likewise.
14735 (__arm_vreinterpretq_u64_u16): Likewise.
14736 (__arm_vreinterpretq_u64_u32): Likewise.
14737 (__arm_vreinterpretq_u64_u8): Likewise.
14738 (__arm_vreinterpretq_u8_s16): Likewise.
14739 (__arm_vreinterpretq_u8_s32): Likewise.
14740 (__arm_vreinterpretq_u8_s64): Likewise.
14741 (__arm_vreinterpretq_u8_s8): Likewise.
14742 (__arm_vreinterpretq_u8_u16): Likewise.
14743 (__arm_vreinterpretq_u8_u32): Likewise.
14744 (__arm_vreinterpretq_u8_u64): Likewise.
14745 (__arm_vreinterpretq_s32_f16): Likewise.
14746 (__arm_vreinterpretq_s32_f32): Likewise.
14747 (__arm_vreinterpretq_s16_f16): Likewise.
14748 (__arm_vreinterpretq_s16_f32): Likewise.
14749 (__arm_vreinterpretq_s64_f16): Likewise.
14750 (__arm_vreinterpretq_s64_f32): Likewise.
14751 (__arm_vreinterpretq_s8_f16): Likewise.
14752 (__arm_vreinterpretq_s8_f32): Likewise.
14753 (__arm_vreinterpretq_u16_f16): Likewise.
14754 (__arm_vreinterpretq_u16_f32): Likewise.
14755 (__arm_vreinterpretq_u32_f16): Likewise.
14756 (__arm_vreinterpretq_u32_f32): Likewise.
14757 (__arm_vreinterpretq_u64_f16): Likewise.
14758 (__arm_vreinterpretq_u64_f32): Likewise.
14759 (__arm_vreinterpretq_u8_f16): Likewise.
14760 (__arm_vreinterpretq_u8_f32): Likewise.
14761 (__arm_vreinterpretq_f16_f32): Likewise.
14762 (__arm_vreinterpretq_f16_s16): Likewise.
14763 (__arm_vreinterpretq_f16_s32): Likewise.
14764 (__arm_vreinterpretq_f16_s64): Likewise.
14765 (__arm_vreinterpretq_f16_s8): Likewise.
14766 (__arm_vreinterpretq_f16_u16): Likewise.
14767 (__arm_vreinterpretq_f16_u32): Likewise.
14768 (__arm_vreinterpretq_f16_u64): Likewise.
14769 (__arm_vreinterpretq_f16_u8): Likewise.
14770 (__arm_vreinterpretq_f32_f16): Likewise.
14771 (__arm_vreinterpretq_f32_s16): Likewise.
14772 (__arm_vreinterpretq_f32_s32): Likewise.
14773 (__arm_vreinterpretq_f32_s64): Likewise.
14774 (__arm_vreinterpretq_f32_s8): Likewise.
14775 (__arm_vreinterpretq_f32_u16): Likewise.
14776 (__arm_vreinterpretq_f32_u32): Likewise.
14777 (__arm_vreinterpretq_f32_u64): Likewise.
14778 (__arm_vreinterpretq_f32_u8): Likewise.
14779 (__arm_vreinterpretq_s16): Likewise.
14780 (__arm_vreinterpretq_s32): Likewise.
14781 (__arm_vreinterpretq_s64): Likewise.
14782 (__arm_vreinterpretq_s8): Likewise.
14783 (__arm_vreinterpretq_u16): Likewise.
14784 (__arm_vreinterpretq_u32): Likewise.
14785 (__arm_vreinterpretq_u64): Likewise.
14786 (__arm_vreinterpretq_u8): Likewise.
14787 (__arm_vreinterpretq_f16): Likewise.
14788 (__arm_vreinterpretq_f32): Likewise.
14789 * config/arm/mve.md (@arm_mve_reinterpret<mode>): New pattern.
14790 * config/arm/unspecs.md: (REINTERPRET): New unspec.
14792 2023-05-03 Murray Steele <murray.steele@arm.com>
14793 Christophe Lyon <christophe.lyon@arm.com>
14794 Christophe Lyon <christophe.lyon@arm.com
14796 * config.gcc: Add arm-mve-builtins-base.o and
14797 arm-mve-builtins-shapes.o to extra_objs.
14798 * config/arm/arm-builtins.cc (arm_builtin_decl): Handle MVE builtin
14800 (arm_expand_builtin): Likewise
14801 (arm_check_builtin_call): Likewise
14802 (arm_describe_resolver): Likewise.
14803 * config/arm/arm-builtins.h (enum resolver_ident): Add
14805 * config/arm/arm-c.cc (arm_pragma_arm): Handle new pragma.
14806 (arm_resolve_overloaded_builtin): Handle MVE builtins.
14807 (arm_register_target_pragmas): Register arm_check_builtin_call.
14808 * config/arm/arm-mve-builtins.cc (class registered_function): New
14810 (struct registered_function_hasher): New struct.
14811 (pred_suffixes): New table.
14812 (mode_suffixes): New table.
14813 (type_suffix_info): New table.
14814 (TYPES_float16): New.
14815 (TYPES_all_float): New.
14816 (TYPES_integer_8): New.
14817 (TYPES_integer_8_16): New.
14818 (TYPES_integer_16_32): New.
14819 (TYPES_integer_32): New.
14820 (TYPES_signed_16_32): New.
14821 (TYPES_signed_32): New.
14822 (TYPES_all_signed): New.
14823 (TYPES_all_unsigned): New.
14824 (TYPES_all_integer): New.
14825 (TYPES_all_integer_with_64): New.
14826 (DEF_VECTOR_TYPE): New.
14827 (DEF_DOUBLE_TYPE): New.
14828 (DEF_MVE_TYPES_ARRAY): New.
14829 (all_integer): New.
14830 (all_integer_with_64): New.
14834 (all_unsigned): New.
14836 (integer_8_16): New.
14837 (integer_16_32): New.
14839 (signed_16_32): New.
14841 (register_vector_type): Use void_type_node for mve.fp-only types when
14842 mve.fp is not enabled.
14843 (register_builtin_tuple_types): Likewise.
14844 (handle_arm_mve_h): New function..
14845 (matches_type_p): Likewise..
14846 (report_out_of_range): Likewise.
14847 (report_not_enum): Likewise.
14848 (report_missing_float): Likewise.
14849 (report_non_ice): Likewise.
14850 (check_requires_float): Likewise.
14851 (function_instance::hash): Likewise
14852 (function_instance::call_properties): Likewise.
14853 (function_instance::reads_global_state_p): Likewise.
14854 (function_instance::modifies_global_state_p): Likewise.
14855 (function_instance::could_trap_p): Likewise.
14856 (function_instance::has_inactive_argument): Likewise.
14857 (registered_function_hasher::hash): Likewise.
14858 (registered_function_hasher::equal): Likewise.
14859 (function_builder::function_builder): Likewise.
14860 (function_builder::~function_builder): Likewise.
14861 (function_builder::append_name): Likewise.
14862 (function_builder::finish_name): Likewise.
14863 (function_builder::get_name): Likewise.
14864 (add_attribute): Likewise.
14865 (function_builder::get_attributes): Likewise.
14866 (function_builder::add_function): Likewise.
14867 (function_builder::add_unique_function): Likewise.
14868 (function_builder::add_overloaded_function): Likewise.
14869 (function_builder::add_overloaded_functions): Likewise.
14870 (function_builder::register_function_group): Likewise.
14871 (function_call_info::function_call_info): Likewise.
14872 (function_resolver::function_resolver): Likewise.
14873 (function_resolver::get_vector_type): Likewise.
14874 (function_resolver::get_scalar_type_name): Likewise.
14875 (function_resolver::get_argument_type): Likewise.
14876 (function_resolver::scalar_argument_p): Likewise.
14877 (function_resolver::report_no_such_form): Likewise.
14878 (function_resolver::lookup_form): Likewise.
14879 (function_resolver::resolve_to): Likewise.
14880 (function_resolver::infer_vector_or_tuple_type): Likewise.
14881 (function_resolver::infer_vector_type): Likewise.
14882 (function_resolver::require_vector_or_scalar_type): Likewise.
14883 (function_resolver::require_vector_type): Likewise.
14884 (function_resolver::require_matching_vector_type): Likewise.
14885 (function_resolver::require_derived_vector_type): Likewise.
14886 (function_resolver::require_derived_scalar_type): Likewise.
14887 (function_resolver::require_integer_immediate): Likewise.
14888 (function_resolver::require_scalar_type): Likewise.
14889 (function_resolver::check_num_arguments): Likewise.
14890 (function_resolver::check_gp_argument): Likewise.
14891 (function_resolver::finish_opt_n_resolution): Likewise.
14892 (function_resolver::resolve_unary): Likewise.
14893 (function_resolver::resolve_unary_n): Likewise.
14894 (function_resolver::resolve_uniform): Likewise.
14895 (function_resolver::resolve_uniform_opt_n): Likewise.
14896 (function_resolver::resolve): Likewise.
14897 (function_checker::function_checker): Likewise.
14898 (function_checker::argument_exists_p): Likewise.
14899 (function_checker::require_immediate): Likewise.
14900 (function_checker::require_immediate_enum): Likewise.
14901 (function_checker::require_immediate_range): Likewise.
14902 (function_checker::check): Likewise.
14903 (gimple_folder::gimple_folder): Likewise.
14904 (gimple_folder::fold): Likewise.
14905 (function_expander::function_expander): Likewise.
14906 (function_expander::direct_optab_handler): Likewise.
14907 (function_expander::get_fallback_value): Likewise.
14908 (function_expander::get_reg_target): Likewise.
14909 (function_expander::add_output_operand): Likewise.
14910 (function_expander::add_input_operand): Likewise.
14911 (function_expander::add_integer_operand): Likewise.
14912 (function_expander::generate_insn): Likewise.
14913 (function_expander::use_exact_insn): Likewise.
14914 (function_expander::use_unpred_insn): Likewise.
14915 (function_expander::use_pred_x_insn): Likewise.
14916 (function_expander::use_cond_insn): Likewise.
14917 (function_expander::map_to_rtx_codes): Likewise.
14918 (function_expander::expand): Likewise.
14919 (resolve_overloaded_builtin): Likewise.
14920 (check_builtin_call): Likewise.
14921 (gimple_fold_builtin): Likewise.
14922 (expand_builtin): Likewise.
14923 (gt_ggc_mx): Likewise.
14924 (gt_pch_nx): Likewise.
14925 (gt_pch_nx): Likewise.
14926 * config/arm/arm-mve-builtins.def(s8): Define new type suffix.
14937 (offset): New mode.
14938 * config/arm/arm-mve-builtins.h (MAX_TUPLE_SIZE): New constant.
14939 (CP_READ_FPCR): Likewise.
14940 (CP_RAISE_FP_EXCEPTIONS): Likewise.
14941 (CP_READ_MEMORY): Likewise.
14942 (CP_WRITE_MEMORY): Likewise.
14943 (enum units_index): New enum.
14944 (enum predication_index): New.
14945 (enum type_class_index): New.
14946 (enum mode_suffix_index): New enum.
14947 (enum type_suffix_index): New.
14948 (struct mode_suffix_info): New struct.
14949 (struct type_suffix_info): New.
14950 (struct function_group_info): Likewise.
14951 (class function_instance): Likewise.
14952 (class registered_function): Likewise.
14953 (class function_builder): Likewise.
14954 (class function_call_info): Likewise.
14955 (class function_resolver): Likewise.
14956 (class function_checker): Likewise.
14957 (class gimple_folder): Likewise.
14958 (class function_expander): Likewise.
14959 (get_mve_pred16_t): Likewise.
14960 (find_mode_suffix): New function.
14961 (class function_base): Likewise.
14962 (class function_shape): Likewise.
14963 (function_instance::operator==): New function.
14964 (function_instance::operator!=): Likewise.
14965 (function_instance::vectors_per_tuple): Likewise.
14966 (function_instance::mode_suffix): Likewise.
14967 (function_instance::type_suffix): Likewise.
14968 (function_instance::scalar_type): Likewise.
14969 (function_instance::vector_type): Likewise.
14970 (function_instance::tuple_type): Likewise.
14971 (function_instance::vector_mode): Likewise.
14972 (function_call_info::function_returns_void_p): Likewise.
14973 (function_base::call_properties): Likewise.
14974 * config/arm/arm-protos.h (enum arm_builtin_class): Add
14976 (handle_arm_mve_h): New.
14977 (resolve_overloaded_builtin): New.
14978 (check_builtin_call): New.
14979 (gimple_fold_builtin): New.
14980 (expand_builtin): New.
14981 * config/arm/arm.cc (TARGET_GIMPLE_FOLD_BUILTIN): Define as
14982 arm_gimple_fold_builtin.
14983 (arm_gimple_fold_builtin): New function.
14984 * config/arm/arm_mve.h: Use new arm_mve.h pragma.
14985 * config/arm/predicates.md (arm_any_register_operand): New predicate.
14986 * config/arm/t-arm: (arm-mve-builtins.o): Add includes.
14987 (arm-mve-builtins-shapes.o): New target.
14988 (arm-mve-builtins-base.o): New target.
14989 * config/arm/arm-mve-builtins-base.cc: New file.
14990 * config/arm/arm-mve-builtins-base.def: New file.
14991 * config/arm/arm-mve-builtins-base.h: New file.
14992 * config/arm/arm-mve-builtins-functions.h: New file.
14993 * config/arm/arm-mve-builtins-shapes.cc: New file.
14994 * config/arm/arm-mve-builtins-shapes.h: New file.
14996 2023-05-03 Murray Steele <murray.steele@arm.com>
14997 Christophe Lyon <christophe.lyon@arm.com>
14998 Christophe Lyon <christophe.lyon@arm.com>
15000 * config/arm/arm-builtins.cc (arm_general_add_builtin_function):
15002 (arm_init_builtin): Use arm_general_add_builtin_function instead
15003 of arm_add_builtin_function.
15004 (arm_init_acle_builtins): Likewise.
15005 (arm_init_mve_builtins): Likewise.
15006 (arm_init_crypto_builtins): Likewise.
15007 (arm_init_builtins): Likewise.
15008 (arm_general_builtin_decl): New function.
15009 (arm_builtin_decl): Defer to numberspace-specialized functions.
15010 (arm_expand_builtin_args): Rename into arm_general_expand_builtin_args.
15011 (arm_expand_builtin_1): Rename into arm_general_expand_builtin_1 and ...
15012 (arm_general_expand_builtin_1): ... specialize for general builtins.
15013 (arm_expand_acle_builtin): Use arm_general_expand_builtin
15014 instead of arm_expand_builtin.
15015 (arm_expand_mve_builtin): Likewise.
15016 (arm_expand_neon_builtin): Likewise.
15017 (arm_expand_vfp_builtin): Likewise.
15018 (arm_general_expand_builtin): New function.
15019 (arm_expand_builtin): Specialize for general builtins.
15020 (arm_general_check_builtin_call): New function.
15021 (arm_check_builtin_call): Specialize for general builtins.
15022 (arm_describe_resolver): Validate numberspace.
15023 (arm_cde_end_args): Likewise.
15024 * config/arm/arm-protos.h (enum arm_builtin_class): New enum.
15025 (ARM_BUILTIN_SHIFT, ARM_BUILTIN_CLASS): New constants.
15027 2023-05-03 Martin Liska <mliska@suse.cz>
15030 * config/riscv/sync.md: Add gcc_unreachable to a switch.
15032 2023-05-03 Richard Biener <rguenther@suse.de>
15034 * tree-ssa-loop-split.cc (split_at_bb_p): Avoid last_stmt.
15035 (patch_loop_exit): Likewise.
15036 (connect_loops): Likewise.
15037 (split_loop): Likewise.
15038 (control_dep_semi_invariant_p): Likewise.
15039 (do_split_loop_on_cond): Likewise.
15040 (split_loop_on_cond): Likewise.
15041 * tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
15043 (simplify_loop_version): Likewise.
15044 (evaluate_bbs): Likewise.
15045 (find_loop_guard): Likewise.
15046 (clean_up_after_unswitching): Likewise.
15047 * tree-ssa-math-opts.cc (maybe_optimize_guarding_check):
15049 (optimize_spaceship): Take a gcond * argument, avoid
15051 (math_opts_dom_walker::after_dom_children): Adjust call to
15052 optimize_spaceship.
15053 * tree-vrp.cc (maybe_set_nonzero_bits): Avoid last_stmt.
15054 * value-pointer-equiv.cc (pointer_equiv_analyzer::visit_edge):
15057 2023-05-03 Andreas Schwab <schwab@suse.de>
15059 * config/riscv/linux.h (LIB_SPEC): Don't redefine.
15061 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15063 * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
15065 (class vlseg): New class.
15066 (class vsseg): Ditto.
15067 (class vlsseg): Ditto.
15068 (class vssseg): Ditto.
15069 (class seg_indexed_load): Ditto.
15070 (class seg_indexed_store): Ditto.
15071 (class vlsegff): Ditto.
15073 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
15074 * config/riscv/riscv-vector-builtins-functions.def (vlseg):
15084 * config/riscv/riscv-vector-builtins-shapes.cc (struct
15085 seg_loadstore_def): Ditto.
15086 (struct seg_indexed_loadstore_def): Ditto.
15087 (struct seg_fault_load_def): Ditto.
15089 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
15090 * config/riscv/riscv-vector-builtins.cc
15091 (function_builder::append_nf): New function.
15092 * config/riscv/riscv-vector-builtins.def (vfloat32m1x2_t):
15093 Change ptr from double into float.
15094 (vfloat32m1x3_t): Ditto.
15095 (vfloat32m1x4_t): Ditto.
15096 (vfloat32m1x5_t): Ditto.
15097 (vfloat32m1x6_t): Ditto.
15098 (vfloat32m1x7_t): Ditto.
15099 (vfloat32m1x8_t): Ditto.
15100 (vfloat32m2x2_t): Ditto.
15101 (vfloat32m2x3_t): Ditto.
15102 (vfloat32m2x4_t): Ditto.
15103 (vfloat32m4x2_t): Ditto.
15104 * config/riscv/riscv-vector-builtins.h: Add segment intrinsics.
15105 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Adapt for
15107 * config/riscv/riscv.md: Add segment instructions.
15108 * config/riscv/vector-iterators.md: Support segment intrinsics.
15109 * config/riscv/vector.md (@pred_unit_strided_load<mode>): New
15111 (@pred_unit_strided_store<mode>): Ditto.
15112 (@pred_strided_load<mode>): Ditto.
15113 (@pred_strided_store<mode>): Ditto.
15114 (@pred_fault_load<mode>): Ditto.
15115 (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
15116 (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
15117 (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
15118 (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
15119 (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
15120 (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
15121 (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
15122 (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
15123 (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
15124 (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
15125 (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
15126 (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
15127 (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
15128 (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
15130 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15132 * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
15133 tuple type support.
15135 (floattype): Ditto.
15137 * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
15138 * config/riscv/riscv-vector-builtins-functions.def (vset): Add
15140 (vget): Add tuple type vget.
15141 * config/riscv/riscv-vector-builtins-types.def
15142 (DEF_RVV_TUPLE_OPS): New macro.
15143 (vint8mf8x2_t): Ditto.
15144 (vuint8mf8x2_t): Ditto.
15145 (vint8mf8x3_t): Ditto.
15146 (vuint8mf8x3_t): Ditto.
15147 (vint8mf8x4_t): Ditto.
15148 (vuint8mf8x4_t): Ditto.
15149 (vint8mf8x5_t): Ditto.
15150 (vuint8mf8x5_t): Ditto.
15151 (vint8mf8x6_t): Ditto.
15152 (vuint8mf8x6_t): Ditto.
15153 (vint8mf8x7_t): Ditto.
15154 (vuint8mf8x7_t): Ditto.
15155 (vint8mf8x8_t): Ditto.
15156 (vuint8mf8x8_t): Ditto.
15157 (vint8mf4x2_t): Ditto.
15158 (vuint8mf4x2_t): Ditto.
15159 (vint8mf4x3_t): Ditto.
15160 (vuint8mf4x3_t): Ditto.
15161 (vint8mf4x4_t): Ditto.
15162 (vuint8mf4x4_t): Ditto.
15163 (vint8mf4x5_t): Ditto.
15164 (vuint8mf4x5_t): Ditto.
15165 (vint8mf4x6_t): Ditto.
15166 (vuint8mf4x6_t): Ditto.
15167 (vint8mf4x7_t): Ditto.
15168 (vuint8mf4x7_t): Ditto.
15169 (vint8mf4x8_t): Ditto.
15170 (vuint8mf4x8_t): Ditto.
15171 (vint8mf2x2_t): Ditto.
15172 (vuint8mf2x2_t): Ditto.
15173 (vint8mf2x3_t): Ditto.
15174 (vuint8mf2x3_t): Ditto.
15175 (vint8mf2x4_t): Ditto.
15176 (vuint8mf2x4_t): Ditto.
15177 (vint8mf2x5_t): Ditto.
15178 (vuint8mf2x5_t): Ditto.
15179 (vint8mf2x6_t): Ditto.
15180 (vuint8mf2x6_t): Ditto.
15181 (vint8mf2x7_t): Ditto.
15182 (vuint8mf2x7_t): Ditto.
15183 (vint8mf2x8_t): Ditto.
15184 (vuint8mf2x8_t): Ditto.
15185 (vint8m1x2_t): Ditto.
15186 (vuint8m1x2_t): Ditto.
15187 (vint8m1x3_t): Ditto.
15188 (vuint8m1x3_t): Ditto.
15189 (vint8m1x4_t): Ditto.
15190 (vuint8m1x4_t): Ditto.
15191 (vint8m1x5_t): Ditto.
15192 (vuint8m1x5_t): Ditto.
15193 (vint8m1x6_t): Ditto.
15194 (vuint8m1x6_t): Ditto.
15195 (vint8m1x7_t): Ditto.
15196 (vuint8m1x7_t): Ditto.
15197 (vint8m1x8_t): Ditto.
15198 (vuint8m1x8_t): Ditto.
15199 (vint8m2x2_t): Ditto.
15200 (vuint8m2x2_t): Ditto.
15201 (vint8m2x3_t): Ditto.
15202 (vuint8m2x3_t): Ditto.
15203 (vint8m2x4_t): Ditto.
15204 (vuint8m2x4_t): Ditto.
15205 (vint8m4x2_t): Ditto.
15206 (vuint8m4x2_t): Ditto.
15207 (vint16mf4x2_t): Ditto.
15208 (vuint16mf4x2_t): Ditto.
15209 (vint16mf4x3_t): Ditto.
15210 (vuint16mf4x3_t): Ditto.
15211 (vint16mf4x4_t): Ditto.
15212 (vuint16mf4x4_t): Ditto.
15213 (vint16mf4x5_t): Ditto.
15214 (vuint16mf4x5_t): Ditto.
15215 (vint16mf4x6_t): Ditto.
15216 (vuint16mf4x6_t): Ditto.
15217 (vint16mf4x7_t): Ditto.
15218 (vuint16mf4x7_t): Ditto.
15219 (vint16mf4x8_t): Ditto.
15220 (vuint16mf4x8_t): Ditto.
15221 (vint16mf2x2_t): Ditto.
15222 (vuint16mf2x2_t): Ditto.
15223 (vint16mf2x3_t): Ditto.
15224 (vuint16mf2x3_t): Ditto.
15225 (vint16mf2x4_t): Ditto.
15226 (vuint16mf2x4_t): Ditto.
15227 (vint16mf2x5_t): Ditto.
15228 (vuint16mf2x5_t): Ditto.
15229 (vint16mf2x6_t): Ditto.
15230 (vuint16mf2x6_t): Ditto.
15231 (vint16mf2x7_t): Ditto.
15232 (vuint16mf2x7_t): Ditto.
15233 (vint16mf2x8_t): Ditto.
15234 (vuint16mf2x8_t): Ditto.
15235 (vint16m1x2_t): Ditto.
15236 (vuint16m1x2_t): Ditto.
15237 (vint16m1x3_t): Ditto.
15238 (vuint16m1x3_t): Ditto.
15239 (vint16m1x4_t): Ditto.
15240 (vuint16m1x4_t): Ditto.
15241 (vint16m1x5_t): Ditto.
15242 (vuint16m1x5_t): Ditto.
15243 (vint16m1x6_t): Ditto.
15244 (vuint16m1x6_t): Ditto.
15245 (vint16m1x7_t): Ditto.
15246 (vuint16m1x7_t): Ditto.
15247 (vint16m1x8_t): Ditto.
15248 (vuint16m1x8_t): Ditto.
15249 (vint16m2x2_t): Ditto.
15250 (vuint16m2x2_t): Ditto.
15251 (vint16m2x3_t): Ditto.
15252 (vuint16m2x3_t): Ditto.
15253 (vint16m2x4_t): Ditto.
15254 (vuint16m2x4_t): Ditto.
15255 (vint16m4x2_t): Ditto.
15256 (vuint16m4x2_t): Ditto.
15257 (vint32mf2x2_t): Ditto.
15258 (vuint32mf2x2_t): Ditto.
15259 (vint32mf2x3_t): Ditto.
15260 (vuint32mf2x3_t): Ditto.
15261 (vint32mf2x4_t): Ditto.
15262 (vuint32mf2x4_t): Ditto.
15263 (vint32mf2x5_t): Ditto.
15264 (vuint32mf2x5_t): Ditto.
15265 (vint32mf2x6_t): Ditto.
15266 (vuint32mf2x6_t): Ditto.
15267 (vint32mf2x7_t): Ditto.
15268 (vuint32mf2x7_t): Ditto.
15269 (vint32mf2x8_t): Ditto.
15270 (vuint32mf2x8_t): Ditto.
15271 (vint32m1x2_t): Ditto.
15272 (vuint32m1x2_t): Ditto.
15273 (vint32m1x3_t): Ditto.
15274 (vuint32m1x3_t): Ditto.
15275 (vint32m1x4_t): Ditto.
15276 (vuint32m1x4_t): Ditto.
15277 (vint32m1x5_t): Ditto.
15278 (vuint32m1x5_t): Ditto.
15279 (vint32m1x6_t): Ditto.
15280 (vuint32m1x6_t): Ditto.
15281 (vint32m1x7_t): Ditto.
15282 (vuint32m1x7_t): Ditto.
15283 (vint32m1x8_t): Ditto.
15284 (vuint32m1x8_t): Ditto.
15285 (vint32m2x2_t): Ditto.
15286 (vuint32m2x2_t): Ditto.
15287 (vint32m2x3_t): Ditto.
15288 (vuint32m2x3_t): Ditto.
15289 (vint32m2x4_t): Ditto.
15290 (vuint32m2x4_t): Ditto.
15291 (vint32m4x2_t): Ditto.
15292 (vuint32m4x2_t): Ditto.
15293 (vint64m1x2_t): Ditto.
15294 (vuint64m1x2_t): Ditto.
15295 (vint64m1x3_t): Ditto.
15296 (vuint64m1x3_t): Ditto.
15297 (vint64m1x4_t): Ditto.
15298 (vuint64m1x4_t): Ditto.
15299 (vint64m1x5_t): Ditto.
15300 (vuint64m1x5_t): Ditto.
15301 (vint64m1x6_t): Ditto.
15302 (vuint64m1x6_t): Ditto.
15303 (vint64m1x7_t): Ditto.
15304 (vuint64m1x7_t): Ditto.
15305 (vint64m1x8_t): Ditto.
15306 (vuint64m1x8_t): Ditto.
15307 (vint64m2x2_t): Ditto.
15308 (vuint64m2x2_t): Ditto.
15309 (vint64m2x3_t): Ditto.
15310 (vuint64m2x3_t): Ditto.
15311 (vint64m2x4_t): Ditto.
15312 (vuint64m2x4_t): Ditto.
15313 (vint64m4x2_t): Ditto.
15314 (vuint64m4x2_t): Ditto.
15315 (vfloat32mf2x2_t): Ditto.
15316 (vfloat32mf2x3_t): Ditto.
15317 (vfloat32mf2x4_t): Ditto.
15318 (vfloat32mf2x5_t): Ditto.
15319 (vfloat32mf2x6_t): Ditto.
15320 (vfloat32mf2x7_t): Ditto.
15321 (vfloat32mf2x8_t): Ditto.
15322 (vfloat32m1x2_t): Ditto.
15323 (vfloat32m1x3_t): Ditto.
15324 (vfloat32m1x4_t): Ditto.
15325 (vfloat32m1x5_t): Ditto.
15326 (vfloat32m1x6_t): Ditto.
15327 (vfloat32m1x7_t): Ditto.
15328 (vfloat32m1x8_t): Ditto.
15329 (vfloat32m2x2_t): Ditto.
15330 (vfloat32m2x3_t): Ditto.
15331 (vfloat32m2x4_t): Ditto.
15332 (vfloat32m4x2_t): Ditto.
15333 (vfloat64m1x2_t): Ditto.
15334 (vfloat64m1x3_t): Ditto.
15335 (vfloat64m1x4_t): Ditto.
15336 (vfloat64m1x5_t): Ditto.
15337 (vfloat64m1x6_t): Ditto.
15338 (vfloat64m1x7_t): Ditto.
15339 (vfloat64m1x8_t): Ditto.
15340 (vfloat64m2x2_t): Ditto.
15341 (vfloat64m2x3_t): Ditto.
15342 (vfloat64m2x4_t): Ditto.
15343 (vfloat64m4x2_t): Ditto.
15344 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_OPS):
15346 (DEF_RVV_TYPE_INDEX): Ditto.
15347 (rvv_arg_type_info::get_tuple_subpart_type): New function.
15348 (DEF_RVV_TUPLE_TYPE): New macro.
15349 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE_INDEX):
15350 Adapt for tuple vget/vset support.
15351 (vint8mf4_t): Ditto.
15352 (vuint8mf4_t): Ditto.
15353 (vint8mf2_t): Ditto.
15354 (vuint8mf2_t): Ditto.
15355 (vint8m1_t): Ditto.
15356 (vuint8m1_t): Ditto.
15357 (vint8m2_t): Ditto.
15358 (vuint8m2_t): Ditto.
15359 (vint8m4_t): Ditto.
15360 (vuint8m4_t): Ditto.
15361 (vint8m8_t): Ditto.
15362 (vuint8m8_t): Ditto.
15363 (vint16mf4_t): Ditto.
15364 (vuint16mf4_t): Ditto.
15365 (vint16mf2_t): Ditto.
15366 (vuint16mf2_t): Ditto.
15367 (vint16m1_t): Ditto.
15368 (vuint16m1_t): Ditto.
15369 (vint16m2_t): Ditto.
15370 (vuint16m2_t): Ditto.
15371 (vint16m4_t): Ditto.
15372 (vuint16m4_t): Ditto.
15373 (vint16m8_t): Ditto.
15374 (vuint16m8_t): Ditto.
15375 (vint32mf2_t): Ditto.
15376 (vuint32mf2_t): Ditto.
15377 (vint32m1_t): Ditto.
15378 (vuint32m1_t): Ditto.
15379 (vint32m2_t): Ditto.
15380 (vuint32m2_t): Ditto.
15381 (vint32m4_t): Ditto.
15382 (vuint32m4_t): Ditto.
15383 (vint32m8_t): Ditto.
15384 (vuint32m8_t): Ditto.
15385 (vint64m1_t): Ditto.
15386 (vuint64m1_t): Ditto.
15387 (vint64m2_t): Ditto.
15388 (vuint64m2_t): Ditto.
15389 (vint64m4_t): Ditto.
15390 (vuint64m4_t): Ditto.
15391 (vint64m8_t): Ditto.
15392 (vuint64m8_t): Ditto.
15393 (vfloat32mf2_t): Ditto.
15394 (vfloat32m1_t): Ditto.
15395 (vfloat32m2_t): Ditto.
15396 (vfloat32m4_t): Ditto.
15397 (vfloat32m8_t): Ditto.
15398 (vfloat64m1_t): Ditto.
15399 (vfloat64m2_t): Ditto.
15400 (vfloat64m4_t): Ditto.
15401 (vfloat64m8_t): Ditto.
15402 (tuple_subpart): Add tuple subpart base type.
15403 * config/riscv/riscv-vector-builtins.h (struct
15404 rvv_arg_type_info): Ditto.
15405 (tuple_type_field): New function.
15407 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
15409 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
15410 (RVV_TUPLE_PARTIAL_MODES): Ditto.
15411 * config/riscv/riscv-protos.h (riscv_v_ext_tuple_mode_p): New
15414 (get_subpart_mode): Ditto.
15415 (get_tuple_mode): Ditto.
15416 (expand_tuple_move): Ditto.
15417 * config/riscv/riscv-v.cc (ENTRY): New macro.
15418 (TUPLE_ENTRY): Ditto.
15419 (get_nf): New function.
15420 (get_subpart_mode): Ditto.
15421 (get_tuple_mode): Ditto.
15422 (expand_tuple_move): Ditto.
15423 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_TYPE):
15425 (register_tuple_type): New function
15426 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
15428 (vint8mf8x2_t): New macro.
15429 (vuint8mf8x2_t): Ditto.
15430 (vint8mf8x3_t): Ditto.
15431 (vuint8mf8x3_t): Ditto.
15432 (vint8mf8x4_t): Ditto.
15433 (vuint8mf8x4_t): Ditto.
15434 (vint8mf8x5_t): Ditto.
15435 (vuint8mf8x5_t): Ditto.
15436 (vint8mf8x6_t): Ditto.
15437 (vuint8mf8x6_t): Ditto.
15438 (vint8mf8x7_t): Ditto.
15439 (vuint8mf8x7_t): Ditto.
15440 (vint8mf8x8_t): Ditto.
15441 (vuint8mf8x8_t): Ditto.
15442 (vint8mf4x2_t): Ditto.
15443 (vuint8mf4x2_t): Ditto.
15444 (vint8mf4x3_t): Ditto.
15445 (vuint8mf4x3_t): Ditto.
15446 (vint8mf4x4_t): Ditto.
15447 (vuint8mf4x4_t): Ditto.
15448 (vint8mf4x5_t): Ditto.
15449 (vuint8mf4x5_t): Ditto.
15450 (vint8mf4x6_t): Ditto.
15451 (vuint8mf4x6_t): Ditto.
15452 (vint8mf4x7_t): Ditto.
15453 (vuint8mf4x7_t): Ditto.
15454 (vint8mf4x8_t): Ditto.
15455 (vuint8mf4x8_t): Ditto.
15456 (vint8mf2x2_t): Ditto.
15457 (vuint8mf2x2_t): Ditto.
15458 (vint8mf2x3_t): Ditto.
15459 (vuint8mf2x3_t): Ditto.
15460 (vint8mf2x4_t): Ditto.
15461 (vuint8mf2x4_t): Ditto.
15462 (vint8mf2x5_t): Ditto.
15463 (vuint8mf2x5_t): Ditto.
15464 (vint8mf2x6_t): Ditto.
15465 (vuint8mf2x6_t): Ditto.
15466 (vint8mf2x7_t): Ditto.
15467 (vuint8mf2x7_t): Ditto.
15468 (vint8mf2x8_t): Ditto.
15469 (vuint8mf2x8_t): Ditto.
15470 (vint8m1x2_t): Ditto.
15471 (vuint8m1x2_t): Ditto.
15472 (vint8m1x3_t): Ditto.
15473 (vuint8m1x3_t): Ditto.
15474 (vint8m1x4_t): Ditto.
15475 (vuint8m1x4_t): Ditto.
15476 (vint8m1x5_t): Ditto.
15477 (vuint8m1x5_t): Ditto.
15478 (vint8m1x6_t): Ditto.
15479 (vuint8m1x6_t): Ditto.
15480 (vint8m1x7_t): Ditto.
15481 (vuint8m1x7_t): Ditto.
15482 (vint8m1x8_t): Ditto.
15483 (vuint8m1x8_t): Ditto.
15484 (vint8m2x2_t): Ditto.
15485 (vuint8m2x2_t): Ditto.
15486 (vint8m2x3_t): Ditto.
15487 (vuint8m2x3_t): Ditto.
15488 (vint8m2x4_t): Ditto.
15489 (vuint8m2x4_t): Ditto.
15490 (vint8m4x2_t): Ditto.
15491 (vuint8m4x2_t): Ditto.
15492 (vint16mf4x2_t): Ditto.
15493 (vuint16mf4x2_t): Ditto.
15494 (vint16mf4x3_t): Ditto.
15495 (vuint16mf4x3_t): Ditto.
15496 (vint16mf4x4_t): Ditto.
15497 (vuint16mf4x4_t): Ditto.
15498 (vint16mf4x5_t): Ditto.
15499 (vuint16mf4x5_t): Ditto.
15500 (vint16mf4x6_t): Ditto.
15501 (vuint16mf4x6_t): Ditto.
15502 (vint16mf4x7_t): Ditto.
15503 (vuint16mf4x7_t): Ditto.
15504 (vint16mf4x8_t): Ditto.
15505 (vuint16mf4x8_t): Ditto.
15506 (vint16mf2x2_t): Ditto.
15507 (vuint16mf2x2_t): Ditto.
15508 (vint16mf2x3_t): Ditto.
15509 (vuint16mf2x3_t): Ditto.
15510 (vint16mf2x4_t): Ditto.
15511 (vuint16mf2x4_t): Ditto.
15512 (vint16mf2x5_t): Ditto.
15513 (vuint16mf2x5_t): Ditto.
15514 (vint16mf2x6_t): Ditto.
15515 (vuint16mf2x6_t): Ditto.
15516 (vint16mf2x7_t): Ditto.
15517 (vuint16mf2x7_t): Ditto.
15518 (vint16mf2x8_t): Ditto.
15519 (vuint16mf2x8_t): Ditto.
15520 (vint16m1x2_t): Ditto.
15521 (vuint16m1x2_t): Ditto.
15522 (vint16m1x3_t): Ditto.
15523 (vuint16m1x3_t): Ditto.
15524 (vint16m1x4_t): Ditto.
15525 (vuint16m1x4_t): Ditto.
15526 (vint16m1x5_t): Ditto.
15527 (vuint16m1x5_t): Ditto.
15528 (vint16m1x6_t): Ditto.
15529 (vuint16m1x6_t): Ditto.
15530 (vint16m1x7_t): Ditto.
15531 (vuint16m1x7_t): Ditto.
15532 (vint16m1x8_t): Ditto.
15533 (vuint16m1x8_t): Ditto.
15534 (vint16m2x2_t): Ditto.
15535 (vuint16m2x2_t): Ditto.
15536 (vint16m2x3_t): Ditto.
15537 (vuint16m2x3_t): Ditto.
15538 (vint16m2x4_t): Ditto.
15539 (vuint16m2x4_t): Ditto.
15540 (vint16m4x2_t): Ditto.
15541 (vuint16m4x2_t): Ditto.
15542 (vint32mf2x2_t): Ditto.
15543 (vuint32mf2x2_t): Ditto.
15544 (vint32mf2x3_t): Ditto.
15545 (vuint32mf2x3_t): Ditto.
15546 (vint32mf2x4_t): Ditto.
15547 (vuint32mf2x4_t): Ditto.
15548 (vint32mf2x5_t): Ditto.
15549 (vuint32mf2x5_t): Ditto.
15550 (vint32mf2x6_t): Ditto.
15551 (vuint32mf2x6_t): Ditto.
15552 (vint32mf2x7_t): Ditto.
15553 (vuint32mf2x7_t): Ditto.
15554 (vint32mf2x8_t): Ditto.
15555 (vuint32mf2x8_t): Ditto.
15556 (vint32m1x2_t): Ditto.
15557 (vuint32m1x2_t): Ditto.
15558 (vint32m1x3_t): Ditto.
15559 (vuint32m1x3_t): Ditto.
15560 (vint32m1x4_t): Ditto.
15561 (vuint32m1x4_t): Ditto.
15562 (vint32m1x5_t): Ditto.
15563 (vuint32m1x5_t): Ditto.
15564 (vint32m1x6_t): Ditto.
15565 (vuint32m1x6_t): Ditto.
15566 (vint32m1x7_t): Ditto.
15567 (vuint32m1x7_t): Ditto.
15568 (vint32m1x8_t): Ditto.
15569 (vuint32m1x8_t): Ditto.
15570 (vint32m2x2_t): Ditto.
15571 (vuint32m2x2_t): Ditto.
15572 (vint32m2x3_t): Ditto.
15573 (vuint32m2x3_t): Ditto.
15574 (vint32m2x4_t): Ditto.
15575 (vuint32m2x4_t): Ditto.
15576 (vint32m4x2_t): Ditto.
15577 (vuint32m4x2_t): Ditto.
15578 (vint64m1x2_t): Ditto.
15579 (vuint64m1x2_t): Ditto.
15580 (vint64m1x3_t): Ditto.
15581 (vuint64m1x3_t): Ditto.
15582 (vint64m1x4_t): Ditto.
15583 (vuint64m1x4_t): Ditto.
15584 (vint64m1x5_t): Ditto.
15585 (vuint64m1x5_t): Ditto.
15586 (vint64m1x6_t): Ditto.
15587 (vuint64m1x6_t): Ditto.
15588 (vint64m1x7_t): Ditto.
15589 (vuint64m1x7_t): Ditto.
15590 (vint64m1x8_t): Ditto.
15591 (vuint64m1x8_t): Ditto.
15592 (vint64m2x2_t): Ditto.
15593 (vuint64m2x2_t): Ditto.
15594 (vint64m2x3_t): Ditto.
15595 (vuint64m2x3_t): Ditto.
15596 (vint64m2x4_t): Ditto.
15597 (vuint64m2x4_t): Ditto.
15598 (vint64m4x2_t): Ditto.
15599 (vuint64m4x2_t): Ditto.
15600 (vfloat32mf2x2_t): Ditto.
15601 (vfloat32mf2x3_t): Ditto.
15602 (vfloat32mf2x4_t): Ditto.
15603 (vfloat32mf2x5_t): Ditto.
15604 (vfloat32mf2x6_t): Ditto.
15605 (vfloat32mf2x7_t): Ditto.
15606 (vfloat32mf2x8_t): Ditto.
15607 (vfloat32m1x2_t): Ditto.
15608 (vfloat32m1x3_t): Ditto.
15609 (vfloat32m1x4_t): Ditto.
15610 (vfloat32m1x5_t): Ditto.
15611 (vfloat32m1x6_t): Ditto.
15612 (vfloat32m1x7_t): Ditto.
15613 (vfloat32m1x8_t): Ditto.
15614 (vfloat32m2x2_t): Ditto.
15615 (vfloat32m2x3_t): Ditto.
15616 (vfloat32m2x4_t): Ditto.
15617 (vfloat32m4x2_t): Ditto.
15618 (vfloat64m1x2_t): Ditto.
15619 (vfloat64m1x3_t): Ditto.
15620 (vfloat64m1x4_t): Ditto.
15621 (vfloat64m1x5_t): Ditto.
15622 (vfloat64m1x6_t): Ditto.
15623 (vfloat64m1x7_t): Ditto.
15624 (vfloat64m1x8_t): Ditto.
15625 (vfloat64m2x2_t): Ditto.
15626 (vfloat64m2x3_t): Ditto.
15627 (vfloat64m2x4_t): Ditto.
15628 (vfloat64m4x2_t): Ditto.
15629 * config/riscv/riscv-vector-builtins.h (DEF_RVV_TUPLE_TYPE):
15631 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
15632 * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
15634 (TUPLE_ENTRY): Ditto.
15635 (riscv_v_ext_mode_p): New function.
15636 (riscv_v_adjust_nunits): Add tuple mode adjustment.
15637 (riscv_classify_address): Ditto.
15638 (riscv_binary_cost): Ditto.
15639 (riscv_rtx_costs): Ditto.
15640 (riscv_secondary_memory_needed): Ditto.
15641 (riscv_hard_regno_nregs): Ditto.
15642 (riscv_hard_regno_mode_ok): Ditto.
15643 (riscv_vector_mode_supported_p): Ditto.
15644 (riscv_regmode_natural_size): Ditto.
15645 (riscv_array_mode): New function.
15646 (TARGET_ARRAY_MODE): New target hook.
15647 * config/riscv/riscv.md: Add tuple modes.
15648 * config/riscv/vector-iterators.md: Ditto.
15649 * config/riscv/vector.md (mov<mode>): Add tuple modes data
15651 (*mov<VT:mode>_<P:mode>): Ditto.
15653 2023-05-03 Richard Biener <rguenther@suse.de>
15655 * cse.cc (cse_insn): Track an equivalence to the destination
15656 separately and delay using src_related for it.
15658 2023-05-03 Richard Biener <rguenther@suse.de>
15660 * cse.cc (HASH): Turn into inline function and mix
15661 in another HASH_SHIFT bits.
15662 (SAFE_HASH): Likewise.
15664 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
15667 * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to...
15668 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This.
15670 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
15673 * config/aarch64/aarch64-simd.md (add<mode>3): Rename to...
15674 (add<mode>3<vczle><vczbe>): ... This.
15675 (sub<mode>3): Rename to...
15676 (sub<mode>3<vczle><vczbe>): ... This.
15677 (mul<mode>3): Rename to...
15678 (mul<mode>3<vczle><vczbe>): ... This.
15679 (*div<mode>3): Rename to...
15680 (*div<mode>3<vczle><vczbe>): ... This.
15681 (neg<mode>2): Rename to...
15682 (neg<mode>2<vczle><vczbe>): ... This.
15683 (abs<mode>2): Rename to...
15684 (abs<mode>2<vczle><vczbe>): ... This.
15685 (<frint_pattern><mode>2): Rename to...
15686 (<frint_pattern><mode>2<vczle><vczbe>): ... This.
15687 (<fmaxmin><mode>3): Rename to...
15688 (<fmaxmin><mode>3<vczle><vczbe>): ... This.
15689 (*sqrt<mode>2): Rename to...
15690 (*sqrt<mode>2<vczle><vczbe>): ... This.
15692 2023-05-03 Kito Cheng <kito.cheng@sifive.com>
15694 * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
15696 2023-05-03 Martin Liska <mliska@suse.cz>
15698 PR tree-optimization/109693
15699 * value-range-storage.cc (vrange_allocator::vrange_allocator):
15700 Remove unused field.
15701 * value-range-storage.h: Likewise.
15703 2023-05-02 Andrew Pinski <apinski@marvell.com>
15705 * tree-ssa-phiopt.cc (move_stmt): New function.
15706 (match_simplify_replacement): Use move_stmt instead
15707 of the inlined version.
15709 2023-05-02 Andrew Pinski <apinski@marvell.com>
15711 * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
15714 2023-05-02 Andrew Pinski <apinski@marvell.com>
15716 PR tree-optimization/109702
15717 * match.pd: Fix "a != 0 ? FUNC(a) : CST" patterns
15718 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
15720 2023-05-02 Andrew Pinski <apinski@marvell.com>
15723 * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
15724 insn_and_split pattern.
15726 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
15728 * config/riscv/sync.md (atomic_load<mode>): Implement atomic
15731 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
15733 * config/riscv/sync.md (mem_thread_fence_1): Change fence
15734 depending on the given memory model.
15736 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
15738 * config/riscv/riscv-protos.h (riscv_union_memmodels): Expose
15739 riscv_union_memmodels function to sync.md.
15740 * config/riscv/riscv.cc (riscv_union_memmodels): Add function to
15741 get the union of two memmodels in sync.md.
15742 (riscv_print_operand): Add %I and %J flags that output the
15743 optimal LR/SC flag bits for a given memory model.
15744 * config/riscv/sync.md: Remove static .aqrl bits on LR op/.rl
15745 bits on SC op and replace with optimized %I, %J flags.
15747 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
15749 * config/riscv/riscv.cc
15750 (riscv_memmodel_needs_amo_release): Change function name.
15751 (riscv_print_operand): Remove unneeded %F case.
15752 * config/riscv/sync.md: Remove unneeded fences.
15754 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
15757 * config/riscv/sync.md (atomic_store<mode>): Use simple store
15758 instruction in combination with fence(s).
15760 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
15762 * config/riscv/riscv.cc (riscv_print_operand): Change behavior
15763 of %A to include release bits.
15765 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
15767 * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change
15768 FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl
15771 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
15773 * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
15774 sequentially consistent LR.aqrl/SC.rl pairs.
15776 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
15778 * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
15779 sanitize memmodel input with memmodel_base.
15781 2023-05-02 Yanzhang Wang <yanzhang.wang@intel.com>
15782 Pan Li <pan2.li@intel.com>
15785 * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
15787 2023-05-02 Romain Naour <romain.naour@gmail.com>
15789 * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
15792 2023-05-02 Martin Liska <mliska@suse.cz>
15794 * doc/invoke.texi: Update documentation based on param.opt file.
15796 2023-05-02 Richard Biener <rguenther@suse.de>
15798 PR tree-optimization/109672
15799 * tree-vect-stmts.cc (vectorizable_operation): For plus,
15800 minus and negate always check the vector mode is word mode.
15802 2023-05-01 Andrew Pinski <apinski@marvell.com>
15804 * tree-ssa-phiopt.cc: Update comment about
15805 how the transformation are implemented.
15807 2023-05-01 Jeff Law <jlaw@ventanamicro>
15809 * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
15811 2023-05-01 Jeff Law <jlaw@ventanamicro>
15813 * config/cris/cris.cc (TARGET_LRA_P): Remove.
15814 * config/epiphany/epiphany.cc (TARGET_LRA_P): Remove.
15815 * config/iq2000/iq2000.cc (TARGET_LRA_P): Remove.
15816 * config/m32r/m32r.cc (TARGET_LRA_P): Remove.
15817 * config/microblaze/microblaze.cc (TARGET_LRA_P): Remove.
15818 * config/mmix/mmix.cc (TARGET_LRA_P): Remove.
15820 2023-05-01 Rasmus Villemoes <rasmus.villemoes@prevas.dk>
15822 * print-tree.h (PRINT_DECL_REMAP_DEBUG): New flag.
15823 * print-tree.cc (print_decl_identifier): Implement it.
15824 * toplev.cc (output_stack_usage_1): Use it.
15826 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
15828 * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
15831 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
15833 * value-range.h (irange::set_nonzero): Inline.
15835 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
15837 * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct
15839 * gimple-ssa-warn-alloca.cc (alloca_call_type): Use <2> for
15840 invalid_range, as it is an inverse range.
15841 * tree-vrp.cc (find_case_label_range): Avoid trees.
15842 * value-range.cc (irange::irange_set): Delete.
15843 (irange::irange_set_1bit_anti_range): Delete.
15844 (irange::irange_set_anti_range): Delete.
15845 (irange::set): Cleanup.
15846 * value-range.h (class irange): Remove irange_set,
15847 irange_set_anti_range, irange_set_1bit_anti_range.
15848 (irange::set_undefined): Remove set to m_type.
15850 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
15852 * range-op.cc (update_known_bitmask): Adjust for irange containing
15853 wide_ints internally.
15854 * tree-ssanames.cc (set_nonzero_bits): Same.
15855 * tree-ssanames.h (set_nonzero_bits): Same.
15856 * value-range-storage.cc (irange_storage::set_irange): Same.
15857 (irange_storage::get_irange): Same.
15858 * value-range.cc (irange::operator=): Same.
15859 (irange::irange_set): Same.
15860 (irange::irange_set_1bit_anti_range): Same.
15861 (irange::irange_set_anti_range): Same.
15862 (irange::set): Same.
15863 (irange::verify_range): Same.
15864 (irange::contains_p): Same.
15865 (irange::irange_single_pair_union): Same.
15866 (irange::union_): Same.
15867 (irange::irange_contains_p): Same.
15868 (irange::intersect): Same.
15869 (irange::invert): Same.
15870 (irange::set_range_from_nonzero_bits): Same.
15871 (irange::set_nonzero_bits): Same.
15872 (mask_to_wi): Same.
15873 (irange::intersect_nonzero_bits): Same.
15874 (irange::union_nonzero_bits): Same.
15877 (tree_range): Same.
15878 (range_tests_strict_enum): Same.
15879 (range_tests_misc): Same.
15880 (range_tests_nonzero_bits): Same.
15881 * value-range.h (irange::type): Same.
15882 (irange::varying_compatible_p): Same.
15883 (irange::irange): Same.
15884 (int_range::int_range): Same.
15885 (irange::set_undefined): Same.
15886 (irange::set_varying): Same.
15887 (irange::lower_bound): Same.
15888 (irange::upper_bound): Same.
15890 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
15892 * gimple-range-fold.cc (tree_lower_bound): Delete.
15893 (tree_upper_bound): Delete.
15894 (vrp_val_max): Delete.
15895 (vrp_val_min): Delete.
15896 (fold_using_range::range_of_ssa_name_with_loop_info): Call
15897 range_of_var_in_loop.
15898 * vr-values.cc (valid_value_p): Delete.
15899 (fix_overflow): Delete.
15900 (get_scev_info): New.
15901 (bounds_of_var_in_loop): Refactor into...
15902 (induction_variable_may_overflow_p): ...this,
15903 (range_from_loop_direction): ...and this,
15904 (range_of_var_in_loop): ...and this.
15905 * vr-values.h (bounds_of_var_in_loop): Delete.
15906 (range_of_var_in_loop): New.
15908 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
15910 * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with
15912 (vrp_val_max): New.
15913 (vrp_val_min): New.
15914 * gimple-range-op.cc (cfn_strlen::fold_range): Use irange_val_*.
15915 * range-op.cc (max_limit): Same.
15917 (plus_minus_ranges): Same.
15918 (operator_rshift::op1_range): Same.
15919 (operator_cast::inside_domain_p): Same.
15920 * value-range.cc (vrp_val_is_max): Delete.
15921 (vrp_val_is_min): Delete.
15922 (range_tests_misc): Use irange_val_*.
15923 * value-range.h (vrp_val_is_min): Delete.
15924 (vrp_val_is_max): Delete.
15925 (vrp_val_max): Delete.
15926 (irange_val_min): New.
15927 (vrp_val_min): Delete.
15928 (irange_val_max): New.
15929 * vr-values.cc (check_for_binary_op_overflow): Use irange_val_*.
15931 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
15933 * fold-const.cc (expr_not_equal_to): Convert to irange wide_int API.
15934 * gimple-fold.cc (size_must_be_zero_p): Same.
15935 * gimple-loop-versioning.cc
15936 (loop_versioning::prune_loop_conditions): Same.
15937 * gimple-range-edge.cc (gcond_edge_range): Same.
15938 (gimple_outgoing_range::calc_switch_ranges): Same.
15939 * gimple-range-fold.cc (adjust_imagpart_expr): Same.
15940 (adjust_realpart_expr): Same.
15941 (fold_using_range::range_of_address): Same.
15942 (fold_using_range::relation_fold_and_or): Same.
15943 * gimple-range-gori.cc (gori_compute::gori_compute): Same.
15944 (range_is_either_true_or_false): Same.
15945 * gimple-range-op.cc (cfn_toupper_tolower::get_letter_range): Same.
15946 (cfn_clz::fold_range): Same.
15947 (cfn_ctz::fold_range): Same.
15948 * gimple-range-tests.cc (class test_expr_eval): Same.
15949 * gimple-ssa-warn-alloca.cc (alloca_call_type): Same.
15950 * ipa-cp.cc (ipa_value_range_from_jfunc): Same.
15951 (propagate_vr_across_jump_function): Same.
15952 (decide_whether_version_node): Same.
15953 * ipa-prop.cc (ipa_get_value_range): Same.
15954 * ipa-prop.h (ipa_range_set_and_normalize): Same.
15955 * range-op.cc (get_shift_range): Same.
15956 (value_range_from_overflowed_bounds): Same.
15957 (value_range_with_overflow): Same.
15958 (create_possibly_reversed_range): Same.
15959 (equal_op1_op2_relation): Same.
15960 (not_equal_op1_op2_relation): Same.
15961 (lt_op1_op2_relation): Same.
15962 (le_op1_op2_relation): Same.
15963 (gt_op1_op2_relation): Same.
15964 (ge_op1_op2_relation): Same.
15965 (operator_mult::op1_range): Same.
15966 (operator_exact_divide::op1_range): Same.
15967 (operator_lshift::op1_range): Same.
15968 (operator_rshift::op1_range): Same.
15969 (operator_cast::op1_range): Same.
15970 (operator_logical_and::fold_range): Same.
15971 (set_nonzero_range_from_mask): Same.
15972 (operator_bitwise_or::op1_range): Same.
15973 (operator_bitwise_xor::op1_range): Same.
15974 (operator_addr_expr::fold_range): Same.
15975 (pointer_plus_operator::wi_fold): Same.
15976 (pointer_or_operator::op1_range): Same.
15983 (range_op_cast_tests): Same.
15984 (range_op_lshift_tests): Same.
15985 (range_op_rshift_tests): Same.
15986 (range_op_bitwise_and_tests): Same.
15987 (range_relational_tests): Same.
15988 * range.cc (range_zero): Same.
15989 (range_nonzero): Same.
15990 * range.h (range_true): Same.
15991 (range_false): Same.
15992 (range_true_and_false): Same.
15993 * tree-data-ref.cc (split_constant_offset_1): Same.
15994 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Same.
15995 * tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Same.
15996 (find_unswitching_predicates_for_bb): Same.
15997 * tree-ssa-phiopt.cc (value_replacement): Same.
15998 * tree-ssa-threadbackward.cc
15999 (back_threader::find_taken_edge_cond): Same.
16000 * tree-ssanames.cc (ssa_name_has_boolean_range): Same.
16001 * tree-vrp.cc (find_case_label_range): Same.
16002 * value-query.cc (range_query::get_tree_range): Same.
16003 * value-range.cc (irange::set_nonnegative): Same.
16004 (frange::contains_p): Same.
16005 (frange::singleton_p): Same.
16006 (frange::internal_singleton_p): Same.
16007 (irange::irange_set): Same.
16008 (irange::irange_set_1bit_anti_range): Same.
16009 (irange::irange_set_anti_range): Same.
16010 (irange::set): Same.
16011 (irange::operator==): Same.
16012 (irange::singleton_p): Same.
16013 (irange::contains_p): Same.
16014 (irange::set_range_from_nonzero_bits): Same.
16015 (DEFINE_INT_RANGE_INSTANCE): Same.
16025 (range_uint128): New.
16026 (range_uchar): New.
16028 (build_range3): Convert to irange wide_int API.
16029 (range_tests_irange3): Same.
16030 (range_tests_int_range_max): Same.
16031 (range_tests_strict_enum): Same.
16032 (range_tests_misc): Same.
16033 (range_tests_nonzero_bits): Same.
16034 (range_tests_nan): Same.
16035 (range_tests_signed_zeros): Same.
16036 * value-range.h (Value_Range::Value_Range): Same.
16037 (irange::set): Same.
16038 (irange::nonzero_p): Same.
16039 (irange::contains_p): Same.
16040 (range_includes_zero_p): Same.
16041 (irange::set_nonzero): Same.
16042 (irange::set_zero): Same.
16043 (contains_zero_p): Same.
16044 (frange::contains_p): Same.
16046 (simplify_using_ranges::op_with_boolean_value_range_p): Same.
16047 (bounds_of_var_in_loop): Same.
16048 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
16050 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
16052 * value-range.cc (irange::irange_union): Rename to...
16053 (irange::union_): ...this.
16054 (irange::irange_intersect): Rename to...
16055 (irange::intersect): ...this.
16056 * value-range.h (irange::union_): Delete.
16057 (irange::intersect): Delete.
16059 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
16061 * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
16063 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
16065 * vr-values.cc (check_for_binary_op_overflow): Tidy up by using
16067 (compare_ranges): Delete.
16068 (compare_range_with_value): Delete.
16069 (bounds_of_var_in_loop): Tidy up by using ranger API.
16070 (simplify_using_ranges::fold_cond_with_ops): Cleanup and rename
16071 from vrp_evaluate_conditional_warnv_with_ops_using_ranges.
16072 (simplify_using_ranges::legacy_fold_cond_overflow): Remove
16073 strict_overflow_p and only_ranges.
16074 (simplify_using_ranges::legacy_fold_cond): Adjust call to
16075 legacy_fold_cond_overflow.
16076 (simplify_using_ranges::simplify_abs_using_ranges): Adjust for
16078 (range_fits_type_p): Rename value_range to irange.
16079 * vr-values.h (range_fits_type_p): Adjust prototype.
16081 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
16083 * value-range.cc (irange::irange_set_anti_range): Remove uses of
16084 tree_lower_bound and tree_upper_bound.
16085 (irange::verify_range): Same.
16086 (irange::operator==): Same.
16087 (irange::singleton_p): Same.
16088 * value-range.h (irange::tree_lower_bound): Delete.
16089 (irange::tree_upper_bound): Delete.
16090 (irange::lower_bound): Delete.
16091 (irange::upper_bound): Delete.
16092 (irange::zero_p): Remove uses of tree_lower_bound and
16095 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
16097 * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
16099 (determine_value_range): Same.
16100 (record_nonwrapping_iv): Same.
16101 (infer_loop_bounds_from_signedness): Same.
16102 (scev_var_range_cant_overflow): Same.
16103 * tree-vrp.cc (operand_less_p): Delete.
16104 * tree-vrp.h (operand_less_p): Delete.
16105 * value-range.cc (get_legacy_range): Remove uses of deprecated API.
16106 (irange::value_inside_range): Delete.
16107 * value-range.h (vrange::kind): Delete.
16108 (irange::num_pairs): Remove check of m_kind.
16109 (irange::min): Delete.
16110 (irange::max): Delete.
16112 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
16114 * gimple-fold.cc (maybe_fold_comparisons_from_match_pd): Adjust
16115 for vrange_storage.
16116 * gimple-range-cache.cc (sbr_vector::sbr_vector): Same.
16117 (sbr_vector::grow): Same.
16118 (sbr_vector::set_bb_range): Same.
16119 (sbr_vector::get_bb_range): Same.
16120 (sbr_sparse_bitmap::sbr_sparse_bitmap): Same.
16121 (sbr_sparse_bitmap::set_bb_range): Same.
16122 (sbr_sparse_bitmap::get_bb_range): Same.
16123 (block_range_cache::block_range_cache): Same.
16124 (ssa_global_cache::ssa_global_cache): Same.
16125 (ssa_global_cache::get_global_range): Same.
16126 (ssa_global_cache::set_global_range): Same.
16127 * gimple-range-cache.h: Same.
16128 * gimple-range-edge.cc
16129 (gimple_outgoing_range::gimple_outgoing_range): Same.
16130 (gimple_outgoing_range::switch_edge_range): Same.
16131 (gimple_outgoing_range::calc_switch_ranges): Same.
16132 * gimple-range-edge.h: Same.
16133 * gimple-range-infer.cc
16134 (infer_range_manager::infer_range_manager): Same.
16135 (infer_range_manager::get_nonzero): Same.
16136 (infer_range_manager::maybe_adjust_range): Same.
16137 (infer_range_manager::add_range): Same.
16138 * gimple-range-infer.h: Rename obstack_vrange_allocator to
16140 * tree-core.h (struct irange_storage_slot): Remove.
16141 (struct tree_ssa_name): Remove irange_info and frange_info. Make
16142 range_info a pointer to vrange_storage.
16143 * tree-ssanames.cc (range_info_fits_p): Adjust for vrange_storage.
16144 (range_info_alloc): Same.
16145 (range_info_free): Same.
16146 (range_info_get_range): Same.
16147 (range_info_set_range): Same.
16148 (get_nonzero_bits): Same.
16149 * value-query.cc (get_ssa_name_range_info): Same.
16150 * value-range-storage.cc (class vrange_internal_alloc): New.
16151 (class vrange_obstack_alloc): New.
16152 (class vrange_ggc_alloc): New.
16153 (vrange_allocator::vrange_allocator): New.
16154 (vrange_allocator::~vrange_allocator): New.
16155 (vrange_storage::alloc_slot): New.
16156 (vrange_allocator::alloc): New.
16157 (vrange_allocator::free): New.
16158 (vrange_allocator::clone): New.
16159 (vrange_allocator::clone_varying): New.
16160 (vrange_allocator::clone_undefined): New.
16161 (vrange_storage::alloc): New.
16162 (vrange_storage::set_vrange): Remove slot argument.
16163 (vrange_storage::get_vrange): Same.
16164 (vrange_storage::fits_p): Same.
16165 (vrange_storage::equal_p): New.
16166 (irange_storage::write_lengths_address): New.
16167 (irange_storage::lengths_address): New.
16168 (irange_storage_slot::alloc_slot): Remove.
16169 (irange_storage::alloc): New.
16170 (irange_storage_slot::irange_storage_slot): Remove.
16171 (irange_storage::irange_storage): New.
16172 (write_wide_int): New.
16173 (irange_storage_slot::set_irange): Remove.
16174 (irange_storage::set_irange): New.
16175 (read_wide_int): New.
16176 (irange_storage_slot::get_irange): Remove.
16177 (irange_storage::get_irange): New.
16178 (irange_storage_slot::size): Remove.
16179 (irange_storage::equal_p): New.
16180 (irange_storage_slot::num_wide_ints_needed): Remove.
16181 (irange_storage::size): New.
16182 (irange_storage_slot::fits_p): Remove.
16183 (irange_storage::fits_p): New.
16184 (irange_storage_slot::dump): Remove.
16185 (irange_storage::dump): New.
16186 (frange_storage_slot::alloc_slot): Remove.
16187 (frange_storage::alloc): New.
16188 (frange_storage_slot::set_frange): Remove.
16189 (frange_storage::set_frange): New.
16190 (frange_storage_slot::get_frange): Remove.
16191 (frange_storage::get_frange): New.
16192 (frange_storage_slot::fits_p): Remove.
16193 (frange_storage::equal_p): New.
16194 (frange_storage::fits_p): New.
16195 (ggc_vrange_allocator): New.
16196 (ggc_alloc_vrange_storage): New.
16197 * value-range-storage.h (class vrange_storage): Rewrite.
16198 (class irange_storage): Rewrite.
16199 (class frange_storage): Rewrite.
16200 (class obstack_vrange_allocator): Remove.
16201 (class ggc_vrange_allocator): Remove.
16202 (vrange_allocator::alloc_vrange): Remove.
16203 (vrange_allocator::alloc_irange): Remove.
16204 (vrange_allocator::alloc_frange): Remove.
16205 (ggc_alloc_vrange_storage): New.
16206 * value-range.h (class irange): Rename vrange_allocator to
16208 (class frange): Same.
16210 2023-04-30 Roger Sayle <roger@nextmovesoftware.com>
16212 * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
16213 inc to avoid clobbering the carry flag.
16215 2023-04-30 Andrew Pinski <apinski@marvell.com>
16217 * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
16218 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
16220 2023-04-30 Andrew Pinski <apinski@marvell.com>
16222 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
16223 Allow some builtin/internal function calls which
16224 are known not to trap/throw.
16225 (phiopt_worker::match_simplify_replacement):
16226 Use name instead of getting the lhs again.
16228 2023-04-30 Joakim Nohlgård <joakim@nohlgard.se>
16230 * configure: Regenerate.
16231 * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
16233 2023-04-29 Hans-Peter Nilsson <hp@axis.com>
16235 * reload1.cc (emit_insn_if_valid_for_reload_1): Rename from
16236 emit_insn_if_valid_for_reload.
16237 (emit_insn_if_valid_for_reload): Call new helper, and if a SET fails
16238 to be recognized, also try emitting a parallel that clobbers
16239 TARGET_FLAGS_REGNUM, as applicable.
16241 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
16243 * config/stormy16/stormy16.md (neghi2): Convert from a define_expand
16245 (*rotatehi_1): New define_insn for efficient 2 insn sequence.
16246 (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb.
16248 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
16250 * config/stormy16/stormy16.md (any_lshift): New code iterator.
16251 (any_or_plus): Likewise.
16252 (any_rotate): Likewise.
16253 (*<any_lshift>_and_internal): New define_insn_and_split to
16254 recognize a logical shift followed by an AND, and split it
16255 again after reload.
16256 (*swpn): New define_insn matching xstormy16's swpn.
16257 (*swpn_zext): New define_insn recognizing swpn followed by
16258 zero_extendqihi2, i.e. with the high byte set to zero.
16259 (*swpn_sext): Likewise, for swpn followed by cbw.
16260 (*swpn_sext_2): Likewise, for an alternate RTL form.
16261 (*swpn_zext_ior): A pre-reload splitter so that an swpn+zext+ior
16262 sequence is split in the correct place to recognize the *swpn_zext
16263 followed by any_or_plus (ior, xor or plus) instruction.
16265 2023-04-29 Mikael Pettersson <mikpelinux@gmail.com>
16268 * config.gcc (vax-*-linux*): Add glibc-stdint.h.
16269 (lm32-*-uclinux*): Likewise.
16271 2023-04-29 Fei Gao <gaofei@eswincomputing.com>
16273 * config/riscv/riscv.cc (riscv_avoid_save_libcall): helper function
16274 for riscv_use_save_libcall.
16275 (riscv_use_save_libcall): call riscv_avoid_save_libcall.
16276 (riscv_compute_frame_info): restructure to decouple stack allocation
16277 for rv32e w/o save-restore.
16279 2023-04-28 Eugene Rozenfeld <erozen@microsoft.com>
16281 * doc/install.texi: Fix documentation typo
16283 2023-04-28 Matevos Mehrabyan <matevosmehrabyan@gmail.com>
16285 * config/riscv/iterators.md (only_div, paired_mod): New iterators.
16286 (u): Add div/udiv cases.
16287 * config/riscv/riscv-protos.h (riscv_use_divmod_expander): Prototype.
16288 * config/riscv/riscv.cc (struct riscv_tune_param): Add field for
16290 (rocket_tune_info, sifive_7_tune_info): Initialize new field.
16291 (thead_c906_tune_info): Likewise.
16292 (optimize_size_tune_info): Likewise.
16293 (riscv_use_divmod_expander): New function.
16294 * config/riscv/riscv.md (<u>divmod<mode>4): New expander.
16296 2023-04-28 Karen Sargsyan <karen1999411@gmail.com>
16298 * config/riscv/bitmanip.md: Added clmulr instruction.
16299 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
16300 * config/riscv/riscv.md: (UNSPEC_CLMULR): Add new unspec type.
16302 * config/riscv/riscv-cmo.def: Added built-in function for clmulr.
16303 * config/riscv/crypto.md: Move clmul[h] instructions to bitmanip.md.
16304 * config/riscv/riscv-scalar-crypto.def: Move clmul[h] built-in
16305 functions to riscv-cmo.def.
16306 * config/riscv/generic.md: Add clmul to list of instructions
16307 using the generic_imul reservation.
16309 2023-04-28 Jivan Hakobyan <jivanhakobyan9@gmail.com>
16311 * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
16313 2023-04-28 Andrew Pinski <apinski@marvell.com>
16315 PR tree-optimization/100958
16316 * tree-ssa-phiopt.cc (two_value_replacement): Remove.
16317 (pass_phiopt::execute): Don't call two_value_replacement.
16318 * match.pd (a !=/== CST1 ? CST2 : CST3): Add pattern to
16319 handle what two_value_replacement did.
16321 2023-04-28 Andrew Pinski <apinski@marvell.com>
16323 * match.pd: Add patterns for
16324 "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
16326 2023-04-28 Andrew Pinski <apinski@marvell.com>
16328 * match.pd: Factor out the deciding the min/max from
16329 the "(cond (cmp (convert1? x) c1) (convert2? x) c2)"
16331 * fold-const.cc (minmax_from_comparison): this new function.
16332 * fold-const.h (minmax_from_comparison): New prototype.
16334 2023-04-28 Roger Sayle <roger@nextmovesoftware.com>
16336 PR rtl-optimization/109476
16337 * lower-subreg.cc: Include explow.h for force_reg.
16338 (find_decomposable_shift_zext): Pass an additional SPEED_P argument.
16339 If decomposing a suitable LSHIFTRT and we're not splitting
16340 ZERO_EXTEND (based on the current SPEED_P), then use a ZERO_EXTEND
16341 instead of setting a high part SUBREG to zero, which helps combine.
16342 (decompose_multiword_subregs): Update call to resolve_shift_zext.
16344 2023-04-28 Richard Biener <rguenther@suse.de>
16346 * tree-vect-data-refs.cc (vect_analyze_data_refs): Always
16348 * tree-vect-stmts.cc (vect_model_store_cost): Pass in the
16349 gather-scatter info and cost emulated scatters accordingly.
16350 (get_load_store_type): Support emulated scatters.
16351 (vectorizable_store): Likewise. Emulate them by extracting
16352 scalar offsets and data, doing scalar stores.
16354 2023-04-28 Richard Biener <rguenther@suse.de>
16356 * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
16357 Tame down element extracts and scalar loads for gather/scatter
16358 similar to elementwise strided accesses.
16360 2023-04-28 Pan Li <pan2.li@intel.com>
16361 kito-cheng <kito.cheng@sifive.com>
16363 * config/riscv/vector.md: Add new define split to perform
16364 the simplification.
16366 2023-04-28 Richard Biener <rguenther@suse.de>
16369 * ipa-param-manipulation.cc
16370 (ipa_param_body_adjustments::modify_expression): Allow
16371 conversion of a register to a non-register type. Elide
16372 conversions inside BIT_FIELD_REFs.
16374 2023-04-28 Richard Biener <rguenther@suse.de>
16376 PR tree-optimization/109644
16377 * tree-cfg.cc (verify_types_in_gimple_reference): Check
16378 register constraints on the outermost VIEW_CONVERT_EXPR
16379 only. Do not allow register or invariant bases on
16380 multi-level or possibly variable index handled components.
16382 2023-04-28 Richard Biener <rguenther@suse.de>
16384 * gimplify.cc (gimplify_compound_lval): When there's a
16385 non-register type produced by one of the handled component
16386 operations make sure we get a non-register base.
16388 2023-04-28 Richard Biener <rguenther@suse.de>
16390 PR tree-optimization/108752
16391 * tree-vect-generic.cc (build_replicated_const): Rename
16392 to build_replicated_int_cst and move to tree.{h,cc}.
16393 (do_plus_minus): Adjust.
16394 (do_negate): Likewise.
16395 * tree-vect-stmts.cc (vectorizable_operation): Emit emulated
16396 arithmetic vector operations in lowered form.
16397 * tree.h (build_replicated_int_cst): Declare.
16398 * tree.cc (build_replicated_int_cst): Moved from
16399 tree-vect-generic.cc build_replicated_const.
16401 2023-04-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
16404 * config/aarch64/aarch64-simd.md (aarch64_rbit<mode>): Rename to...
16405 (aarch64_rbit<mode><vczle><vczbe>): ... This.
16406 (neg<mode>2): Rename to...
16407 (neg<mode>2<vczle><vczbe>): ... This.
16408 (abs<mode>2): Rename to...
16409 (abs<mode>2<vczle><vczbe>): ... This.
16410 (aarch64_abs<mode>): Rename to...
16411 (aarch64_abs<mode><vczle><vczbe>): ... This.
16412 (one_cmpl<mode>2): Rename to...
16413 (one_cmpl<mode>2<vczle><vczbe>): ... This.
16414 (clrsb<mode>2): Rename to...
16415 (clrsb<mode>2<vczle><vczbe>): ... This.
16416 (clz<mode>2): Rename to...
16417 (clz<mode>2<vczle><vczbe>): ... This.
16418 (popcount<mode>2): Rename to...
16419 (popcount<mode>2<vczle><vczbe>): ... This.
16421 2023-04-28 Jakub Jelinek <jakub@redhat.com>
16423 * gimple-range-op.cc (class cfn_sqrt): New type.
16424 (op_cfn_sqrt): New variable.
16425 (gimple_range_op_handler::maybe_builtin_call): Handle
16426 CASE_CFN_SQRT{,_FN}.
16428 2023-04-28 Aldy Hernandez <aldyh@redhat.com>
16429 Jakub Jelinek <jakub@redhat.com>
16431 * value-range.h (frange_nextafter): Declare.
16432 * gimple-range-op.cc (class cfn_sincos): New.
16433 (op_cfn_sin, op_cfn_cos): New variables.
16434 (gimple_range_op_handler::maybe_builtin_call): Handle
16435 CASE_CFN_{SIN,COS}{,_FN}.
16437 2023-04-28 Jakub Jelinek <jakub@redhat.com>
16439 * target.def (libm_function_max_error): New target hook.
16440 * doc/tm.texi.in (TARGET_LIBM_FUNCTION_MAX_ERROR): Add.
16441 * doc/tm.texi: Regenerated.
16442 * targhooks.h (default_libm_function_max_error,
16443 glibc_linux_libm_function_max_error): Declare.
16444 * targhooks.cc: Include case-cfn-macros.h.
16445 (default_libm_function_max_error,
16446 glibc_linux_libm_function_max_error): New functions.
16447 * config/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
16448 * config/linux-protos.h (linux_libm_function_max_error): Declare.
16449 * config/linux.cc: Include target.h and targhooks.h.
16450 (linux_libm_function_max_error): New function.
16451 * config/arc/arc.cc: Include targhooks.h and case-cfn-macros.h.
16452 (arc_libm_function_max_error): New function.
16453 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
16454 * config/i386/i386.cc (ix86_libc_has_fast_function): Formatting fix.
16455 (ix86_libm_function_max_error): New function.
16456 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
16457 * config/rs6000/rs6000-protos.h
16458 (rs6000_linux_libm_function_max_error): Declare.
16459 * config/rs6000/rs6000-linux.cc: Include target.h, targhooks.h, tree.h
16460 and case-cfn-macros.h.
16461 (rs6000_linux_libm_function_max_error): New function.
16462 * config/rs6000/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
16463 * config/rs6000/linux64.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
16464 * config/or1k/or1k.cc: Include targhooks.h and case-cfn-macros.h.
16465 (or1k_libm_function_max_error): New function.
16466 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
16468 2023-04-28 Alexandre Oliva <oliva@adacore.com>
16470 * gimple-harden-conditionals.cc (insert_edge_check_and_trap):
16471 Move detach value calls...
16472 (pass_harden_conditional_branches::execute): ... here.
16473 (pass_harden_compares::execute): Detach values before
16476 2023-04-27 Andrew Stubbs <ams@codesourcery.com>
16478 * config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef.
16479 (cml<addsub_as><mode>4): Likewise.
16480 (vec_addsub<mode>3): Likewise.
16481 (cadd<rot><mode>3): Likewise.
16482 (vec_fmaddsub<mode>4): Likewise.
16483 (vec_fmsubadd<mode>4): Likewise, and use sub for the odd lanes.
16485 2023-04-27 Andrew Pinski <apinski@marvell.com>
16487 * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
16488 up to 2 min/max expressions in the sequence/match code.
16490 2023-04-27 Andrew Pinski <apinski@marvell.com>
16492 * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
16494 * tree-eh.cc (operation_could_trap_helper_p): Treate
16495 MIN_EXPR/MAX_EXPR similar as other comparisons.
16497 2023-04-27 Andrew Pinski <apinski@marvell.com>
16499 * tree-ssa-phiopt.cc (cond_store_replacement): Remove
16501 (cond_if_else_store_replacement): Likewise.
16502 (get_non_trapping): Likewise.
16503 (store_elim_worker): Move into ...
16504 (pass_cselim::execute): This.
16506 2023-04-27 Andrew Pinski <apinski@marvell.com>
16508 * tree-ssa-phiopt.cc (two_value_replacement): Remove
16510 (match_simplify_replacement): Likewise.
16511 (factor_out_conditional_conversion): Likewise.
16512 (value_replacement): Likewise.
16513 (minmax_replacement): Likewise.
16514 (spaceship_replacement): Likewise.
16515 (cond_removal_in_builtin_zero_pattern): Likewise.
16516 (hoist_adjacent_loads): Likewise.
16517 (tree_ssa_phiopt_worker): Move into ...
16518 (pass_phiopt::execute): this.
16520 2023-04-27 Andrew Pinski <apinski@marvell.com>
16522 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove
16523 do_store_elim argument and split that part out to ...
16524 (store_elim_worker): This new function.
16525 (pass_cselim::execute): Call store_elim_worker.
16526 (pass_phiopt::execute): Update call to tree_ssa_phiopt_worker.
16528 2023-04-27 Jan Hubicka <jh@suse.cz>
16530 * cfgloopmanip.h (unloop_loops): Export.
16531 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Unloop loops
16532 that no longer loop.
16533 * tree-ssa-loop-ivcanon.cc (unloop_loops): Export; do not free
16534 vectors of loops to unloop.
16535 (canonicalize_induction_variables): Free vectors here.
16536 (tree_unroll_loops_completely): Free vectors here.
16538 2023-04-27 Richard Biener <rguenther@suse.de>
16540 PR tree-optimization/109170
16541 * gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call):
16542 Handle __builtin_expect and similar via cfn_pass_through_arg1
16543 and inspecting the calls fnspec.
16544 * builtins.cc (builtin_fnspec): Handle BUILT_IN_EXPECT
16545 and BUILT_IN_EXPECT_WITH_PROBABILITY.
16547 2023-04-27 Alexandre Oliva <oliva@adacore.com>
16549 * genmultilib: Use CONFIG_SHELL to run sub-scripts.
16551 2023-04-27 Aldy Hernandez <aldyh@redhat.com>
16553 PR tree-optimization/109639
16554 * ipa-cp.cc (ipa_value_range_from_jfunc): Normalize range.
16555 (propagate_vr_across_jump_function): Same.
16556 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
16557 * ipa-prop.h (ipa_range_set_and_normalize): New.
16558 * value-range.cc (irange::set): Assert min and max are INTEGER_CST.
16560 2023-04-27 Richard Biener <rguenther@suse.de>
16562 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
16563 create a CTOR operand in the result when simplifying GIMPLE.
16565 2023-04-27 Richard Biener <rguenther@suse.de>
16567 * gimplify.cc (gimplify_compound_lval): When the base
16568 gimplified to a register make sure to split up chains
16571 2023-04-27 Richard Biener <rguenther@suse.de>
16574 * ipa-param-manipulation.h
16575 (ipa_param_body_adjustments::modify_expression): Add extra_stmts
16577 * ipa-param-manipulation.cc
16578 (ipa_param_body_adjustments::modify_expression): Likewise.
16579 When we need a conversion and the replacement is a register
16580 split the conversion out.
16581 (ipa_param_body_adjustments::modify_assignment): Pass
16582 extra_stmts to RHS modify_expression.
16584 2023-04-27 Jonathan Wakely <jwakely@redhat.com>
16586 * doc/extend.texi (Zero Length): Describe example.
16588 2023-04-27 Richard Biener <rguenther@suse.de>
16590 PR tree-optimization/109594
16591 * tree-ssa.cc (non_rewritable_mem_ref_base): Constrain
16592 what we rewrite to a register based on the above.
16594 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
16596 * config/riscv/riscv.cc: Fix whitespace.
16597 * config/riscv/sync.md: Fix whitespace.
16599 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
16601 PR tree-optimization/108697
16602 * gimple-range-cache.cc (ssa_global_cache::clear_range): Do
16603 not clear the vector on an out of range query.
16604 (ssa_cache::dump): Use dump_range_query instead of get_range.
16605 (ssa_cache::dump_range_query): New.
16606 (ssa_lazy_cache::dump_range_query): New.
16607 (ssa_lazy_cache::set_range): New.
16608 * gimple-range-cache.h (ssa_cache::dump_range_query): New.
16609 (class ssa_lazy_cache): New.
16610 (ssa_lazy_cache::ssa_lazy_cache): New.
16611 (ssa_lazy_cache::~ssa_lazy_cache): New.
16612 (ssa_lazy_cache::get_range): New.
16613 (ssa_lazy_cache::clear_range): New.
16614 (ssa_lazy_cache::clear): New.
16615 (ssa_lazy_cache::dump): New.
16616 * gimple-range-path.cc (path_range_query::path_range_query): Do
16617 not allocate a ssa_cache object nor has_cache bitmap.
16618 (path_range_query::~path_range_query): Do not free objects.
16619 (path_range_query::clear_cache): Remove.
16620 (path_range_query::get_cache): Adjust.
16621 (path_range_query::set_cache): Remove.
16622 (path_range_query::dump): Don't call through a pointer.
16623 (path_range_query::internal_range_of_expr): Set cache directly.
16624 (path_range_query::reset_path): Clear cache directly.
16625 (path_range_query::ssa_range_in_phi): Fold with globals only.
16626 (path_range_query::compute_ranges_in_phis): Simply set range.
16627 (path_range_query::compute_ranges_in_block): Call cache directly.
16628 * gimple-range-path.h (class path_range_query): Replace bitmap
16629 and cache pointer with lazy cache object.
16630 * gimple-range.h (class assume_query): Use ssa_lazy_cache.
16632 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
16634 * gimple-range-cache.cc (ssa_cache::ssa_cache): Rename.
16635 (ssa_cache::~ssa_cache): Rename.
16636 (ssa_cache::has_range): New.
16637 (ssa_cache::get_range): Rename.
16638 (ssa_cache::set_range): Rename.
16639 (ssa_cache::clear_range): Rename.
16640 (ssa_cache::clear): Rename.
16641 (ssa_cache::dump): Rename and use get_range.
16642 (ranger_cache::get_global_range): Use get_range and set_range.
16643 (ranger_cache::range_of_def): Use get_range.
16644 * gimple-range-cache.h (class ssa_cache): Rename class and methods.
16645 (class ranger_cache): Use ssa_cache.
16646 * gimple-range-path.cc (path_range_query::path_range_query): Use
16648 (path_range_query::get_cache): Use get_range.
16649 (path_range_query::set_cache): Use set_range.
16650 * gimple-range-path.h (class path_range_query): Use ssa_cache.
16651 * gimple-range.cc (assume_query::assume_range_p): Use get_range.
16652 (assume_query::range_of_expr): Use get_range.
16653 (assume_query::assume_query): Use set_range.
16654 (assume_query::calculate_op): Use get_range and set_range.
16655 * gimple-range.h (class assume_query): Use ssa_cache.
16657 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
16659 * gimple-range-cache.cc (sbr_vector::sbr_vector): Add parameter
16660 and local to optionally zero memory.
16661 (br_vector::grow): Only zero memory if flag is set.
16662 (class sbr_lazy_vector): New.
16663 (sbr_lazy_vector::sbr_lazy_vector): New.
16664 (sbr_lazy_vector::set_bb_range): New.
16665 (sbr_lazy_vector::get_bb_range): New.
16666 (sbr_lazy_vector::bb_range_p): New.
16667 (block_range_cache::set_bb_range): Check flags and Use sbr_lazy_vector.
16668 * gimple-range-gori.cc (gori_map::calculate_gori): Use
16669 param_vrp_switch_limit.
16670 (gori_compute::gori_compute): Use param_vrp_switch_limit.
16671 * params.opt (vrp_sparse_threshold): Rename from evrp_sparse_threshold.
16672 (vrp_switch_limit): Rename from evrp_switch_limit.
16673 (vrp_vector_threshold): New.
16675 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
16677 * value-relation.cc (dom_oracle::query_relation): Check early for lack
16679 * value-relation.h (equiv_oracle::has_equiv_p): New.
16681 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
16683 PR tree-optimization/109417
16684 * gimple-range-gori.cc (range_def_chain::register_dependency):
16685 Save the ssa version number, not the pointer.
16686 (gori_compute::may_recompute_p): No need to check if a dependency
16687 is in the free list.
16688 * gimple-range-gori.h (class range_def_chain): Change ssa1 and ssa2
16689 fields to be unsigned int instead of trees.
16690 (ange_def_chain::depend1): Adjust.
16691 (ange_def_chain::depend2): Adjust.
16692 * gimple-range.h: Include "ssa.h" to inline ssa_name().
16694 2023-04-26 David Edelsohn <dje.gcc@gmail.com>
16696 * config/rs6000/aix72.h (TARGET_DEFAULT): Use ISA_2_6_MASKS_SERVER.
16697 * config/rs6000/aix73.h (TARGET_DEFAULT): Use ISA_2_7_MASKS_SERVER.
16698 (PROCESSOR_DEFAULT): Use PROCESSOR_POWER8.
16700 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
16703 * config/riscv/riscv-protos.h: Add helper function stubs.
16704 * config/riscv/riscv.cc: Add helper functions for subword masking.
16705 * config/riscv/riscv.opt: Add command-line flags -minline-atomics and
16706 -mno-inline-atomics.
16707 * config/riscv/sync.md: Add masking logic and inline asm for fetch_and_op,
16708 fetch_and_nand, CAS, and exchange ops.
16709 * doc/invoke.texi: Add blurb regarding new command-line flags
16710 -minline-atomics and -mno-inline-atomics.
16712 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
16714 * config/aarch64/aarch64-simd.md (aarch64_rshrn2<mode>_insn_le):
16715 Reimplement using standard RTL codes instead of unspec.
16716 (aarch64_rshrn2<mode>_insn_be): Likewise.
16717 (aarch64_rshrn2<mode>): Adjust for the above.
16718 * config/aarch64/aarch64.md (UNSPEC_RSHRN): Delete.
16720 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
16722 * config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le): Reimplement
16723 with standard RTL codes instead of an UNSPEC.
16724 (aarch64_rshrn<mode>_insn_be): Likewise.
16725 (aarch64_rshrn<mode>): Adjust for the above.
16726 * config/aarch64/predicates.md (aarch64_simd_rshrn_imm_vec): Define.
16728 2023-04-26 Pan Li <pan2.li@intel.com>
16729 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16731 * config/riscv/riscv.cc (riscv_classify_address): Allow
16732 const0_rtx for the RVV load/store.
16734 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
16736 * range-op.cc (range_op_cast_tests): Remove legacy support.
16737 * value-range-storage.h (vrange_allocator::alloc_irange): Same.
16738 * value-range.cc (irange::operator=): Same.
16739 (get_legacy_range): Same.
16740 (irange::copy_legacy_to_multi_range): Delete.
16741 (irange::copy_to_legacy): Delete.
16742 (irange::irange_set_anti_range): Delete.
16743 (irange::set): Remove legacy support.
16744 (irange::verify_range): Same.
16745 (irange::legacy_lower_bound): Delete.
16746 (irange::legacy_upper_bound): Delete.
16747 (irange::legacy_equal_p): Delete.
16748 (irange::operator==): Remove legacy support.
16749 (irange::singleton_p): Same.
16750 (irange::value_inside_range): Same.
16751 (irange::contains_p): Same.
16752 (intersect_ranges): Delete.
16753 (irange::legacy_intersect): Delete.
16754 (union_ranges): Delete.
16755 (irange::legacy_union): Delete.
16756 (irange::legacy_verbose_union_): Delete.
16757 (irange::legacy_verbose_intersect): Delete.
16758 (irange::irange_union): Remove legacy support.
16759 (irange::irange_intersect): Same.
16760 (irange::intersect): Same.
16761 (irange::invert): Same.
16762 (ranges_from_anti_range): Delete.
16763 (gt_pch_nx): Adjust for legacy removal.
16765 (range_tests_legacy): Delete.
16766 (range_tests_misc): Adjust for legacy removal.
16767 (range_tests): Same.
16768 * value-range.h (class irange): Same.
16769 (irange::legacy_mode_p): Delete.
16770 (ranges_from_anti_range): Delete.
16771 (irange::nonzero_p): Adjust for legacy removal.
16772 (irange::lower_bound): Same.
16773 (irange::upper_bound): Same.
16774 (irange::union_): Same.
16775 (irange::intersect): Same.
16776 (irange::set_nonzero): Same.
16777 (irange::set_zero): Same.
16778 * vr-values.cc (simplify_using_ranges::legacy_fold_cond_overflow): Same.
16780 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
16782 * value-range.cc (irange::copy_legacy_to_multi_range): Rewrite use
16783 of range_has_numeric_bounds_p with irange API.
16784 (range_has_numeric_bounds_p): Delete.
16785 * value-range.h (range_has_numeric_bounds_p): Delete.
16787 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
16789 * tree-data-ref.cc (compute_distributive_range): Replace uses of
16790 range_int_cst_p with irange API.
16791 * tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.
16792 * tree-vrp.h (range_int_cst_p): Delete.
16793 * vr-values.cc (check_for_binary_op_overflow): Replace usees of
16794 range_int_cst_p with irange API.
16795 (vr_set_zero_nonzero_bits): Same.
16796 (range_fits_type_p): Same.
16797 (simplify_using_ranges::simplify_casted_cond): Same.
16798 * tree-vrp.cc (range_int_cst_p): Remove.
16800 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
16802 * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
16804 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
16806 * builtins.cc (expand_builtin_strnlen): Rewrite deprecated irange
16807 API uses to new API.
16808 * gimple-predicate-analysis.cc (find_var_cmp_const): Same.
16809 * internal-fn.cc (get_min_precision): Same.
16811 * tree-affine.cc (expr_to_aff_combination): Same.
16812 * tree-data-ref.cc (dr_step_indicator): Same.
16813 * tree-dfa.cc (get_ref_base_and_extent): Same.
16814 * tree-scalar-evolution.cc (iv_can_overflow_p): Same.
16815 * tree-ssa-phiopt.cc (two_value_replacement): Same.
16816 * tree-ssa-pre.cc (insert_into_preds_of_block): Same.
16817 * tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): Same.
16818 * tree-ssa-strlen.cc (compare_nonzero_chars): Same.
16819 * tree-switch-conversion.cc (bit_test_cluster::emit): Same.
16820 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Same.
16821 * tree.cc (get_range_pos_neg): Same.
16823 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
16825 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Use
16826 vrange::dump instead of ad-hoc dumper.
16827 * tree-ssa-strlen.cc (dump_strlen_info): Same.
16828 * value-range-pretty-print.cc (visit): Pass TDF_NOUID to
16831 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
16833 * range-op.cc (operator_cast::op1_range): Use
16834 create_possibly_reversed_range.
16835 (operator_bitwise_and::simple_op1_range_solver): Same.
16836 * value-range.cc (swap_out_of_order_endpoints): Delete.
16837 (irange::set): Remove call to swap_out_of_order_endpoints.
16839 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
16841 * builtins.cc (determine_block_size): Convert use of legacy API to
16843 * gimple-array-bounds.cc (check_out_of_bounds_and_warn): Same.
16844 (array_bounds_checker::check_array_ref): Same.
16845 * gimple-ssa-warn-restrict.cc
16846 (builtin_memref::extend_offset_range): Same.
16847 * ipa-cp.cc (ipcp_store_vr_results): Same.
16848 * ipa-fnsummary.cc (set_switch_stmt_execution_predicate): Same.
16849 * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Same.
16850 (ipa_write_jump_function): Same.
16851 * pointer-query.cc (get_size_range): Same.
16852 * tree-data-ref.cc (split_constant_offset): Same.
16853 * tree-ssa-strlen.cc (get_range): Same.
16854 (maybe_diag_stxncpy_trunc): Same.
16855 (strlen_pass::get_len_or_size): Same.
16856 (strlen_pass::count_nonzero_bytes_addr): Same.
16857 * tree-vect-patterns.cc (vect_get_range_info): Same.
16858 * value-range.cc (irange::maybe_anti_range): Remove.
16859 (get_legacy_range): New.
16860 (irange::copy_to_legacy): Use get_legacy_range.
16861 (ranges_from_anti_range): Same.
16862 * value-range.h (class irange): Remove maybe_anti_range.
16863 (get_legacy_range): New.
16864 * vr-values.cc (check_for_binary_op_overflow): Convert use of
16865 legacy API to get_legacy_range.
16866 (compare_ranges): Same.
16867 (compare_range_with_value): Same.
16868 (bounds_of_var_in_loop): Same.
16869 (find_case_label_ranges): Same.
16870 (simplify_using_ranges::simplify_switch_using_ranges): Same.
16872 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
16874 * value-range-pretty-print.cc (vrange_printer::visit): Remove
16876 * value-range.cc (irange::constant_p): Remove.
16877 (irange::get_nonzero_bits_from_range): Remove constant_p use.
16878 * value-range.h (class irange): Remove constant_p.
16879 (irange::num_pairs): Remove constant_p use.
16881 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
16883 * value-range.cc (irange::copy_legacy_to_multi_range): Remove
16885 (irange::set): Same.
16886 (irange::legacy_lower_bound): Same.
16887 (irange::legacy_upper_bound): Same.
16888 (irange::contains_p): Same.
16889 (range_tests_legacy): Same.
16890 (irange::normalize_addresses): Remove.
16891 (irange::normalize_symbolics): Remove.
16892 (irange::symbolic_p): Remove.
16893 * value-range.h (class irange): Remove symbolic_p,
16894 normalize_symbolics, and normalize_addresses.
16895 * vr-values.cc (simplify_using_ranges::two_valued_val_range_p):
16896 Remove symbolics support.
16898 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
16900 * value-range.cc (irange::may_contain_p): Remove.
16901 * value-range.h (range_includes_zero_p): Rewrite may_contain_p
16902 usage with contains_p.
16903 * vr-values.cc (compare_range_with_value): Same.
16905 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
16907 * tree-vrp.cc (supported_types_p): Remove.
16908 (defined_ranges_p): Remove.
16909 (range_fold_binary_expr): Remove.
16910 (range_fold_unary_expr): Remove.
16911 * tree-vrp.h (range_fold_unary_expr): Remove.
16912 (range_fold_binary_expr): Remove.
16914 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
16916 * ipa-cp.cc (ipa_vr_operation_and_type_effects): Convert to ranger API.
16917 (ipa_value_range_from_jfunc): Same.
16918 (propagate_vr_across_jump_function): Same.
16919 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
16920 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
16921 * vr-values.cc (bounds_of_var_in_loop): Same.
16923 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
16925 * gimple-array-bounds.cc (array_bounds_checker::get_value_range):
16926 Add irange argument.
16927 (check_out_of_bounds_and_warn): Remove check for vr.
16928 (array_bounds_checker::check_array_ref): Remove pointer qualifier
16929 for vr and adjust accordingly.
16930 * gimple-array-bounds.h (get_value_range): Add irange argument.
16931 * value-query.cc (class equiv_allocator): Delete.
16932 (range_query::get_value_range): Delete.
16933 (range_query::range_query): Remove allocator access.
16934 (range_query::~range_query): Same.
16935 * value-query.h (get_value_range): Delete.
16937 (simplify_using_ranges::op_with_boolean_value_range_p): Remove
16938 call to get_value_range.
16939 (check_for_binary_op_overflow): Same.
16940 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
16941 (simplify_using_ranges::simplify_abs_using_ranges): Same.
16942 (simplify_using_ranges::simplify_cond_using_ranges_1): Same.
16943 (simplify_using_ranges::simplify_casted_cond): Same.
16944 (simplify_using_ranges::simplify_switch_using_ranges): Same.
16945 (simplify_using_ranges::two_valued_val_range_p): Same.
16947 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
16950 (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
16952 (simplify_using_ranges::legacy_fold_cond_overflow): ...this.
16953 (simplify_using_ranges::vrp_visit_cond_stmt): Rename to...
16954 (simplify_using_ranges::legacy_fold_cond): ...this.
16955 (simplify_using_ranges::fold_cond): Rename
16956 vrp_evaluate_conditional_warnv_with_ops to
16957 legacy_fold_cond_overflow.
16958 * vr-values.h (class vr_values): Replace vrp_visit_cond_stmt and
16959 vrp_evaluate_conditional_warnv_with_ops with legacy_fold_cond and
16960 legacy_fold_cond_overflow respectively.
16962 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
16964 * vr-values.cc (get_vr_for_comparison): Remove.
16965 (compare_name_with_value): Same.
16966 (vrp_evaluate_conditional_warnv_with_ops): Remove calls to
16967 compare_name_with_value.
16968 * vr-values.h: Remove compare_name_with_value.
16969 Remove get_vr_for_comparison.
16971 2023-04-26 Roger Sayle <roger@nextmovesoftware.com>
16973 * config/stormy16/stormy16.md (bswaphi2): New define_insn.
16974 (bswapsi2): New define_insn.
16975 (swaphi): New define_insn to exchange two registers (swpw).
16976 (define_peephole2): Recognize exchange of registers as swaphi.
16978 2023-04-26 Richard Biener <rguenther@suse.de>
16980 * gimple-range-path.cc (path_range_query::compute_outgoing_relations):
16982 * ipa-pure-const.cc (pass_nothrow::execute): Likewise.
16983 * predict.cc (apply_return_prediction): Likewise.
16984 * sese.cc (set_ifsese_condition): Likewise. Simplify.
16985 * tree-cfg.cc (assert_unreachable_fallthru_edge_p): Avoid last_stmt.
16986 (make_edges_bb): Likewise.
16987 (make_cond_expr_edges): Likewise.
16988 (end_recording_case_labels): Likewise.
16989 (make_gimple_asm_edges): Likewise.
16990 (cleanup_dead_labels): Likewise.
16991 (group_case_labels): Likewise.
16992 (gimple_can_merge_blocks_p): Likewise.
16993 (gimple_merge_blocks): Likewise.
16994 (find_taken_edge): Likewise. Also handle empty fallthru blocks.
16995 (gimple_duplicate_sese_tail): Avoid last_stmt.
16996 (find_loop_dist_alias): Likewise.
16997 (gimple_block_ends_with_condjump_p): Likewise.
16998 (gimple_purge_dead_eh_edges): Likewise.
16999 (gimple_purge_dead_abnormal_call_edges): Likewise.
17000 (pass_warn_function_return::execute): Likewise.
17001 (execute_fixup_cfg): Likewise.
17002 * tree-eh.cc (redirect_eh_edge_1): Likewise.
17003 (pass_lower_resx::execute): Likewise.
17004 (pass_lower_eh_dispatch::execute): Likewise.
17005 (cleanup_empty_eh): Likewise.
17006 * tree-if-conv.cc (if_convertible_bb_p): Likewise.
17007 (predicate_bbs): Likewise.
17008 (ifcvt_split_critical_edges): Likewise.
17009 * tree-loop-distribution.cc (create_edge_for_control_dependence):
17011 (loop_distribution::transform_reduction_loop): Likewise.
17012 * tree-parloops.cc (transform_to_exit_first_loop_alt): Likewise.
17013 (try_transform_to_exit_first_loop_alt): Likewise.
17014 (transform_to_exit_first_loop): Likewise.
17015 (create_parallel_loop): Likewise.
17016 * tree-scalar-evolution.cc (get_loop_exit_condition): Likewise.
17017 * tree-ssa-dce.cc (mark_last_stmt_necessary): Likewise.
17018 (eliminate_unnecessary_stmts): Likewise.
17020 (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
17022 * tree-ssa-ifcombine.cc (ifcombine_ifandif): Likewise.
17023 (pass_tree_ifcombine::execute): Likewise.
17024 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Likewise.
17025 (should_duplicate_loop_header_p): Likewise.
17026 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Likewise.
17027 (tree_estimate_loop_size): Likewise.
17028 (try_unroll_loop_completely): Likewise.
17029 * tree-ssa-loop-ivopts.cc (tree_ssa_iv_optimize_loop): Likewise.
17030 * tree-ssa-loop-manip.cc (ip_normal_pos): Likewise.
17031 (canonicalize_loop_ivs): Likewise.
17032 * tree-ssa-loop-niter.cc (determine_value_range): Likewise.
17033 (bound_difference): Likewise.
17034 (number_of_iterations_popcount): Likewise.
17035 (number_of_iterations_cltz): Likewise.
17036 (number_of_iterations_cltz_complement): Likewise.
17037 (simplify_using_initial_conditions): Likewise.
17038 (number_of_iterations_exit_assumptions): Likewise.
17039 (loop_niter_by_eval): Likewise.
17040 (estimate_numbers_of_iterations): Likewise.
17042 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17044 * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
17046 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
17049 * config/rs6000/rs6000-builtins.def
17050 (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt
17051 __builtin_vsx_scalar_cmp_exp_qp_lt,
17052 __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw
17055 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
17058 * config/rs6000/altivec.md (sldoi_to_mov<mode>): Replace predicate
17059 easy_vector_constant with const_vector_each_byte_same, add
17060 handlings in preparation for !easy_vector_constant, and update
17061 VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P.
17062 * config/rs6000/predicates.md (const_vector_each_byte_same): New
17065 2023-04-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
17067 * config/riscv/vector.md (*pred_cmp<mode>_merge_tie_mask): New pattern.
17068 (*pred_ltge<mode>_merge_tie_mask): Ditto.
17069 (*pred_cmp<mode>_scalar_merge_tie_mask): Ditto.
17070 (*pred_eqne<mode>_scalar_merge_tie_mask): Ditto.
17071 (*pred_cmp<mode>_extended_scalar_merge_tie_mask): Ditto.
17072 (*pred_eqne<mode>_extended_scalar_merge_tie_mask): Ditto.
17073 (*pred_cmp<mode>_narrow_merge_tie_mask): Ditto.
17075 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17077 * config/riscv/vector.md: Fix redundant vmv1r.v.
17079 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17081 * config/riscv/vector.md: Fix RA constraint.
17083 2023-04-26 Pan Li <pan2.li@intel.com>
17086 * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
17087 check for vn_reference equal.
17089 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17091 * config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Add enum for
17092 auto-vectorization preference.
17093 (enum riscv_autovec_lmul_enum): Add enum for choosing LMUL of RVV
17094 auto-vectorization.
17095 * config/riscv/riscv.opt: Add compile option for RVV auto-vectorization.
17097 2023-04-26 Jivan Hakobyan <jivanhakobyan9@gmail.com>
17099 * config/riscv/bitmanip.md: Updated predicates of bclri<mode>_nottwobits
17100 and bclridisi_nottwobits patterns.
17101 * config/riscv/predicates.md: (not_uimm_extra_bit_or_nottwobits): Adjust
17102 predicate to avoid splitting arith constants.
17103 (const_nottwobits_not_arith_operand): New predicate.
17105 2023-04-25 Hans-Peter Nilsson <hp@axis.com>
17107 * recog.cc (peep2_attempt, peep2_update_life): Correct
17108 head-comment description of parameter match_len.
17110 2023-04-25 Vineet Gupta <vineetg@rivosinc.com>
17112 * config/riscv/riscv.md: riscv_move_integer() drop in_splitter arg.
17113 riscv_split_symbol() drop in_splitter arg.
17114 * config/riscv/riscv.cc: riscv_move_integer() drop in_splitter arg.
17115 riscv_split_symbol() drop in_splitter arg.
17116 riscv_force_temporary() drop in_splitter arg.
17117 * config/riscv/riscv-protos.h: riscv_move_integer() drop in_splitter arg.
17118 riscv_split_symbol() drop in_splitter arg.
17120 2023-04-25 Eric Botcazou <ebotcazou@adacore.com>
17122 * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
17123 superfluous debug temporaries for single GIMPLE assignments.
17125 2023-04-25 Richard Biener <rguenther@suse.de>
17127 PR tree-optimization/109609
17128 * attr-fnspec.h (arg_max_access_size_given_by_arg_p):
17130 * tree-ssa-alias.cc (check_fnspec): Correctly interpret
17131 the size given by arg_max_access_size_given_by_arg_p as
17132 maximum, not exact, size.
17134 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17137 * config/aarch64/aarch64-simd.md (orn<mode>3): Rename to...
17138 (orn<mode>3<vczle><vczbe>): ... This.
17139 (bic<mode>3): Rename to...
17140 (bic<mode>3<vczle><vczbe>): ... This.
17141 (<su><maxmin><mode>3): Rename to...
17142 (<su><maxmin><mode>3<vczle><vczbe>): ... This.
17144 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17146 * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3): New define_expand.
17147 * config/aarch64/iterators.md (VQDIV): New mode iterator.
17148 (vnx2di): New mode attribute.
17150 2023-04-25 Richard Biener <rguenther@suse.de>
17152 PR rtl-optimization/109585
17153 * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
17155 2023-04-25 Jakub Jelinek <jakub@redhat.com>
17158 * config/rs6000/rs6000.cc (rs6000_is_valid_rotate_dot_mask): For
17159 !TARGET_64BIT, don't return true if UINTVAL (mask) << (63 - nb)
17160 is larger than signed int maximum.
17162 2023-04-25 Martin Liska <mliska@suse.cz>
17164 * doc/gcov.texi: Document the new "calls" field and document
17165 the API bump. Mention also "block_ids" for lines.
17166 * gcov.cc (output_intermediate_json_line): Output info about
17167 calls and extend branches as well.
17168 (generate_results): Bump version to 2.
17169 (output_line_details): Use block ID instead of a non-sensual
17172 2023-04-25 Roger Sayle <roger@nextmovesoftware.com>
17174 * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
17175 length attribute for the first (memory operand) alternative.
17177 2023-04-25 Victor Do Nascimento <victor.donascimento@arm.com>
17179 * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New.
17180 * config/aarch64/constraints.md: Make "Umn" relaxed memory
17182 * config/aarch64/iterators.md(ldpstp_vel_sz): New.
17184 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
17186 * value-range.cc (frange::set): Adjust constructor.
17187 * value-range.h (nan_state::nan_state): Replace default
17188 constructor with one taking an argument.
17190 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
17192 * ipa-cp.cc (ipa_range_contains_p): New.
17193 (decide_whether_version_node): Use it.
17195 2023-04-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
17197 * tree-ssa-forwprop.cc (is_combined_permutation_identity): Try to
17198 simplify two successive VEC_PERM_EXPRs with same VLA mask,
17199 where mask chooses elements in reverse order.
17201 2023-04-24 Andrew Pinski <apinski@marvell.com>
17203 * tree-ssa-phiopt.cc (match_simplify_replacement): Add new arguments
17204 and support diamond shaped basic block form.
17205 (tree_ssa_phiopt_worker): Update call to match_simplify_replacement
17207 2023-04-24 Andrew Pinski <apinski@marvell.com>
17209 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
17210 Instead of calling last_and_only_stmt, look for the last statement
17213 2023-04-24 Andrew Pinski <apinski@marvell.com>
17215 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
17217 (match_simplify_replacement): Call
17218 empty_bb_or_one_feeding_into_p instead of doing it inline.
17220 2023-04-24 Andrew Pinski <apinski@marvell.com>
17222 PR tree-optimization/68894
17223 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove the
17224 continue for the do_hoist_loads diamond case.
17226 2023-04-24 Andrew Pinski <apinski@marvell.com>
17228 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
17229 code for better code readability.
17231 2023-04-24 Andrew Pinski <apinski@marvell.com>
17233 PR tree-optimization/109604
17234 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Move the
17235 diamond form check from ...
17236 (minmax_replacement): Here.
17238 2023-04-24 Patrick Palka <ppalka@redhat.com>
17240 * tree.cc (strip_array_types): Don't define here.
17241 (is_typedef_decl): Don't define here.
17242 (typedef_variant_p): Don't define here.
17243 * tree.h (strip_array_types): Define here.
17244 (is_typedef_decl): Define here.
17245 (typedef_variant_p): Define here.
17247 2023-04-24 Frederik Harwath <frederik@codesourcery.com>
17249 * doc/generic.texi (OpenMP): Add != to allowed
17250 conditions and state that vars can be unsigned.
17251 * tree.def (OMP_FOR): Likewise.
17253 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17255 * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
17257 2023-04-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
17259 * doc/install.texi: Consistently use Solaris rather than Solaris 2.
17260 Remove explicit Solaris 11 references.
17262 (Options specification, --with-gnu-as): as and gas always differ
17264 Remove /usr/ccs/bin reference.
17265 (Installing GCC: Binaries, Solaris (SPARC, Intel)): Remove.
17266 (i?86-*-solaris2*): Merge assembler, linker recommendations ...
17267 (*-*-solaris2*): ... here.
17268 Update bundled GCC versions.
17269 Don't refer to pre-built binaries.
17270 Remove /bin/sh warning.
17271 Update assembler, linker recommendations.
17272 Document GNAT bootstrap compiler.
17273 (sparc-sun-solaris2*): Remove non-UltraSPARC reference.
17274 (sparc64-*-solaris2*): Move content...
17275 (sparcv9-*-solaris2*): ...here.
17276 Add GDC for 64-bit bootstrap compilers.
17278 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17281 * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
17283 * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
17286 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17288 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal2<mode>): Rename to...
17289 (aarch64_<su>abal2<mode>_insn): ... This. Use RTL codes instead of unspec.
17290 (aarch64_<su>abal2<mode>): New define_expand.
17291 * config/aarch64/aarch64.cc (aarch64_abd_rtx_p): New function.
17292 (aarch64_rtx_costs): Handle ABD rtxes.
17293 * config/aarch64/aarch64.md (UNSPEC_SABAL2, UNSPEC_UABAL2): Delete.
17294 * config/aarch64/iterators.md (ABAL2): Delete.
17295 (sur): Remove handling of UNSPEC_UABAL2 and UNSPEC_SABAL2.
17297 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17299 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal<mode>): Rename to...
17300 (aarch64_<su>abal<mode>): ... This. Use RTL codes instead of unspec.
17301 (<sur>sadv16qi): Rename to...
17302 (<su>sadv16qi): ... This. Adjust for the above.
17303 * config/aarch64/aarch64-sve.md (<sur>sad<vsi2qi>): Rename to...
17304 (<su>sad<vsi2qi>): ... This. Adjust for the above.
17305 * config/aarch64/aarch64.md (UNSPEC_SABAL, UNSPEC_UABAL): Delete.
17306 * config/aarch64/iterators.md (ABAL): Delete.
17307 (sur): Remove handling of UNSPEC_SABAL and UNSPEC_UABAL.
17309 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17311 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>): Rename to...
17312 (aarch64_<su>abdl2<mode>_insn): ... This. Use RTL codes instead of unspec.
17313 (aarch64_<su>abdl2<mode>): New define_expand.
17314 * config/aarch64/aarch64.md (UNSPEC_SABDL2, UNSPEC_UABDL2): Delete.
17315 * config/aarch64/iterators.md (ABDL2): Delete.
17316 (sur): Remove handling of UNSPEC_SABDL2 and UNSPEC_UABDL2.
17318 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17320 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to...
17321 (aarch64_<su>abdl<mode>): ... This. Use standard RTL ops instead of
17323 * config/aarch64/aarch64.md (UNSPEC_SABDL, UNSPEC_UABDL): Delete.
17324 * config/aarch64/iterators.md (ABDL): Delete.
17325 (sur): Remove handling of UNSPEC_SABDL and UNSPEC_UABDL.
17327 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17329 * config/aarch64/aarch64-simd.md
17330 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
17332 2023-04-24 Richard Biener <rguenther@suse.de>
17334 * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid
17336 * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
17338 * ipa-fnsummary.cc (set_cond_stmt_execution_predicate): Likewise.
17339 (set_switch_stmt_execution_predicate): Likewise.
17340 (phi_result_unknown_predicate): Likewise.
17341 * ipa-prop.cc (compute_complex_ancestor_jump_func): Likewise.
17342 (ipa_analyze_indirect_call_uses): Likewise.
17343 * predict.cc (predict_iv_comparison): Likewise.
17344 (predict_extra_loop_exits): Likewise.
17345 (predict_loops): Likewise.
17346 (tree_predict_by_opcode): Likewise.
17347 * gimple-predicate-analysis.cc (predicate::init_from_control_deps):
17349 * gimple-pretty-print.cc (dump_implicit_edges): Likewise.
17350 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Likewise.
17351 (replace_phi_edge_with_variable): Likewise.
17352 (two_value_replacement): Likewise.
17353 (value_replacement): Likewise.
17354 (minmax_replacement): Likewise.
17355 (spaceship_replacement): Likewise.
17356 (cond_removal_in_builtin_zero_pattern): Likewise.
17357 * tree-ssa-reassoc.cc (maybe_optimize_range_tests): Likewise.
17358 * tree-ssa-sccvn.cc (vn_phi_eq): Likewise.
17359 (vn_phi_lookup): Likewise.
17360 (vn_phi_insert): Likewise.
17361 * tree-ssa-structalias.cc (compute_points_to_sets): Likewise.
17362 * tree-ssa-threadbackward.cc (back_threader::maybe_thread_block):
17364 (back_threader_profitability::possibly_profitable_path_p):
17366 * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
17368 * tree-switch-conversion.cc (pass_convert_switch::execute):
17370 (pass_lower_switch<O0>::execute): Likewise.
17371 * tree-tailcall.cc (tree_optimize_tail_calls_1): Likewise.
17372 * tree-vect-loop-manip.cc (vect_loop_versioning): Likewise.
17373 * tree-vect-slp.cc (vect_slp_function): Likewise.
17374 * tree-vect-stmts.cc (cfun_returns): Likewise.
17375 * tree-vectorizer.cc (vect_loop_vectorized_call): Likewise.
17376 (vect_loop_dist_alias_call): Likewise.
17378 2023-04-24 Richard Biener <rguenther@suse.de>
17380 * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
17382 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
17384 * config/riscv/riscv-vsetvl.cc
17385 (vector_infos_manager::all_avail_in_compatible_p): New function.
17386 (pass_vsetvl::refine_vsetvls): Optimize vsetvls.
17387 * config/riscv/riscv-vsetvl.h: New function.
17389 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
17391 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
17392 comment for cleanup_insns.
17394 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
17396 * config/riscv/vector-iterators.md: New unspec to refine fault first load pattern.
17397 * config/riscv/vector.md: Refine fault first load pattern to erase avl from instructions
17398 with the fault first load property.
17400 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17402 * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
17403 (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
17405 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17408 * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
17409 (aarch64_addp<mode><vczle><vczbe>): ... This.
17411 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
17413 * config/stormy16/stormy16.cc (xstormy16_rtx_costs): Rewrite to
17414 provide reasonable values for common arithmetic operations and
17415 immediate operands (in several machine modes).
17417 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
17419 * config/stormy16/stormy16.cc (xstormy16_print_operand): Add %h
17420 format specifier to output high_part register name of SImode reg.
17421 * config/stormy16/stormy16.md (extendhisi2): New define_insn.
17422 (zero_extendqihi2): Fix lengths, consistent formatting and add
17423 "and Rx,#255" alternative, for documentation purposes.
17424 (zero_extendhisi2): New define_insn.
17426 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
17428 * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
17429 SImode shifts by two by performing a single bit SImode shift twice.
17431 2023-04-23 Aldy Hernandez <aldyh@redhat.com>
17433 PR tree-optimization/109593
17434 * value-range.cc (frange::operator==): Handle NANs.
17436 2023-04-23 liuhongt <hongtao.liu@intel.com>
17438 PR rtl-optimization/108707
17439 * ira-costs.cc (scan_one_insn): Use NO_REGS instead of
17440 GENERAL_REGS when preferred reg_class is not known.
17442 2023-04-22 Andrew Pinski <apinski@marvell.com>
17444 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
17445 Change the code around slightly to move diamond
17446 handling for do_store_elim/do_hoist_loads out of
17449 2023-04-22 Andrew Pinski <apinski@marvell.com>
17451 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
17452 Remove check on empty_block_p.
17454 2023-04-22 Jakub Jelinek <jakub@redhat.com>
17456 PR bootstrap/109589
17457 * system.h (class auto_mpz): Workaround PR62101 bug in GCC 4.8 and 4.9.
17458 * realmpfr.h (class auto_mpfr): Likewise.
17460 2023-04-22 Jakub Jelinek <jakub@redhat.com>
17462 PR tree-optimization/109583
17463 * match.pd (fneg/fadd simplify): Don't call related_vector_mode
17464 if vec_mode is not VECTOR_MODE_P.
17466 2023-04-22 Jan Hubicka <hubicka@ucw.cz>
17467 Ondrej Kubanek <kubanek0ondrej@gmail.com>
17469 * cfgloopmanip.h (adjust_loop_info_after_peeling): Declare.
17470 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix updating of
17471 loop profile and bounds after header duplication.
17472 * tree-ssa-loop-ivcanon.cc (adjust_loop_info_after_peeling):
17473 Break out from try_peel_loop; fix handling of 0 iterations.
17474 (try_peel_loop): Use adjust_loop_info_after_peeling.
17476 2023-04-21 Andrew MacLeod <amacleod@redhat.com>
17478 PR tree-optimization/109546
17479 * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
17480 not fold conditions with ADDR_EXPR early.
17482 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17484 * config/aarch64/aarch64.md (aarch64_umax<mode>3_insn): Delete.
17485 (umax<mode>3): Emit raw UMAX RTL instead of going through gen_ function
17487 (<optab><mode>3): New define_expand for MAXMIN_NOUMAX codes.
17488 (*aarch64_<optab><mode>3_zero): Define.
17489 (*aarch64_<optab><mode>3_cssc): Likewise.
17490 * config/aarch64/iterators.md (maxminand): New code attribute.
17492 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17495 * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
17496 * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
17498 * config/aarch64/aarch64.cc (aarch64_tpidr_register): Declare.
17499 (aarch64_override_options_internal): Handle the above.
17500 (aarch64_output_load_tp): New function.
17501 * config/aarch64/aarch64.md (aarch64_load_tp_hard): Call
17502 aarch64_output_load_tp.
17503 * config/aarch64/aarch64.opt (aarch64_tp_reg): Define enum.
17504 (mtp=): New option.
17505 * doc/invoke.texi (AArch64 Options): Document -mtp=.
17507 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17510 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
17511 (add_vec_concat_subst_be): Likewise.
17514 (add<mode>3): Rename to...
17515 (add<mode>3<vczle><vczbe>): ... This.
17516 (sub<mode>3): Rename to...
17517 (sub<mode>3<vczle><vczbe>): ... This.
17518 (mul<mode>3): Rename to...
17519 (mul<mode>3<vczle><vczbe>): ... This.
17520 (and<mode>3): Rename to...
17521 (and<mode>3<vczle><vczbe>): ... This.
17522 (ior<mode>3): Rename to...
17523 (ior<mode>3<vczle><vczbe>): ... This.
17524 (xor<mode>3): Rename to...
17525 (xor<mode>3<vczle><vczbe>): ... This.
17526 * config/aarch64/iterators.md (VDZ): Define.
17528 2023-04-21 Patrick Palka <ppalka@redhat.com>
17530 * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
17533 2023-04-21 Jan Hubicka <jh@suse.cz>
17535 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
17538 2023-04-21 Vineet Gupta <vineetg@rivosinc.com>
17540 * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
17541 (shift*_cost_ptr ()): Access x_shift*_cost array directly.
17543 2023-04-21 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
17545 * config/aarch64/aarch64.cc (aarch64_simd_dup_constant): Use
17546 force_reg instead of copy_to_mode_reg.
17547 (aarch64_expand_vector_init): Likewise.
17549 2023-04-21 Uroš Bizjak <ubizjak@gmail.com>
17551 * config/i386/i386.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Remove.
17552 (REG_OK_FOR_INDEX_NONSTRICT_P, REG_OK_FOR_BASE_NONSTRICT_P): Ditto.
17553 (REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P): Ditto.
17554 (FIRST_INDEX_REG, LAST_INDEX_REG): New defines.
17555 (LEGACY_INDEX_REG_P, LEGACY_INDEX_REGNO_P): New macros.
17556 (INDEX_REG_P, INDEX_REGNO_P): Ditto.
17557 (REGNO_OK_FOR_INDEX_P): Use INDEX_REGNO_P predicates.
17558 (REGNO_OK_FOR_INDEX_NONSTRICT_P): New macro.
17559 (EG_OK_FOR_BASE_NONSTRICT_P): Ditto.
17560 * config/i386/predicates.md (index_register_operand):
17561 Use REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
17562 * config/i386/i386.cc (ix86_legitimate_address_p): Use
17563 REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_BASE_NONSTRICT_P,
17564 REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
17566 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
17567 Ondrej Kubanek <kubanek0ondrej@gmail.com>
17569 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
17572 2023-04-21 Richard Biener <rguenther@suse.de>
17574 * is-a.h (safe_is_a): New.
17576 2023-04-21 Richard Biener <rguenther@suse.de>
17578 * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
17579 (gphi_iterator::operator*): Likewise.
17581 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
17582 Michal Jires <michal@jires.eu>
17584 * ipa-inline.cc (class inline_badness): New class.
17585 (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead
17587 (update_edge_key): Update.
17588 (lookup_recursive_calls): Likewise.
17589 (recursive_inlining): Likewise.
17590 (add_new_edges_to_heap): Likewise.
17591 (inline_small_functions): Likewise.
17593 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
17595 * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
17597 2023-04-21 Richard Biener <rguenther@suse.de>
17599 PR tree-optimization/109573
17600 * tree-vect-loop.cc (vectorizable_live_operation): Allow
17601 unhandled SSA copy as well. Demote assert to checking only.
17603 2023-04-21 Richard Biener <rguenther@suse.de>
17605 * df-core.cc (df_analyze): Compute RPO on the reverse graph
17606 for DF_BACKWARD problems.
17607 (loop_post_order_compute): Rename to ...
17608 (loop_rev_post_order_compute): ... this, compute a RPO.
17609 (loop_inverted_post_order_compute): Rename to ...
17610 (loop_inverted_rev_post_order_compute): ... this, compute a RPO.
17611 (df_analyze_loop): Use RPO on the forward graph for DF_FORWARD
17612 problems, RPO on the inverted graph for DF_BACKWARD.
17614 2023-04-21 Richard Biener <rguenther@suse.de>
17616 * cfganal.h (inverted_rev_post_order_compute): Rename
17618 (inverted_post_order_compute): ... this. Add struct function
17619 argument, change allocation to a C array.
17620 * cfganal.cc (inverted_rev_post_order_compute): Likewise.
17621 * lcm.cc (compute_antinout_edge): Adjust.
17622 * lra-lives.cc (lra_create_live_ranges_1): Likewise.
17623 * tree-ssa-dce.cc (remove_dead_stmt): Likewise.
17624 * tree-ssa-pre.cc (compute_antic): Likewise.
17626 2023-04-21 Richard Biener <rguenther@suse.de>
17628 * df.h (df_d::postorder_inverted): Change back to int *,
17630 * df-core.cc (rest_of_handle_df_finish): Adjust.
17631 (df_analyze_1): Likewise.
17632 (df_analyze): For DF_FORWARD problems use RPO on the forward
17634 (loop_inverted_post_order_compute): Adjust API.
17635 (df_analyze_loop): Adjust.
17636 (df_get_n_blocks): Likewise.
17637 (df_get_postorder): Likewise.
17639 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
17642 * config/riscv/riscv-vsetvl.cc
17643 (vector_infos_manager::all_empty_predecessor_p): New function.
17644 (pass_vsetvl::backward_demand_fusion): Ditto.
17645 * config/riscv/riscv-vsetvl.h: Ditto.
17647 2023-04-21 Robin Dapp <rdapp@ventanamicro.com>
17650 * config/riscv/generic.md: Change standard names to insn names.
17652 2023-04-21 Richard Biener <rguenther@suse.de>
17654 * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
17655 (compute_laterin): Use RPO.
17656 (compute_available): Likewise.
17658 2023-04-21 Peng Fan <fanpeng@loongson.cn>
17660 * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
17662 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
17665 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): New function.
17666 (vector_insn_info::skip_avl_compatible_p): Ditto.
17667 (vector_insn_info::merge): Remove default value.
17668 (pass_vsetvl::compute_local_backward_infos): Ditto.
17669 (pass_vsetvl::cleanup_insns): Add local vsetvl elimination.
17670 * config/riscv/riscv-vsetvl.h: Ditto.
17672 2023-04-20 Alejandro Colomar <alx.manpages@gmail.com>
17674 * doc/extend.texi (Common Function Attributes): Remove duplicate
17677 2023-04-20 Andrew MacLeod <amacleod@redhat.com>
17679 PR tree-optimization/109564
17680 * gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore
17681 UNDEFINED range names when deciding if all PHI arguments are the same,
17683 2023-04-20 Jakub Jelinek <jakub@redhat.com>
17685 PR tree-optimization/109011
17686 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): Use
17687 .CTZ (X) = .POPCOUNT ((X - 1) & ~X) in preference to
17688 .CTZ (X) = PREC - .POPCOUNT (X | -X).
17690 2023-04-20 Vladimir N. Makarov <vmakarov@redhat.com>
17692 * lra-constraints.cc (match_reload): Exclude some hard regs for
17693 multi-reg inout reload pseudos used in asm in different mode.
17695 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
17697 * config/arm/arm.cc (thumb1_legitimate_address_p):
17698 Use VIRTUAL_REGISTER_P predicate.
17699 (arm_eliminable_register): Ditto.
17700 * config/avr/avr.md (push<mode>_1): Ditto.
17701 * config/bfin/predicates.md (register_no_elim_operand): Ditto.
17702 * config/h8300/predicates.md (register_no_sp_elim_operand): Ditto.
17703 * config/i386/predicates.md (register_no_elim_operand): Ditto.
17704 * config/iq2000/predicates.md (call_insn_operand): Ditto.
17705 * config/microblaze/microblaze.h (CALL_INSN_OP): Ditto.
17707 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
17710 * config/i386/predicates.md (extract_operator): New predicate.
17711 * config/i386/i386.md (any_extract): Remove code iterator.
17712 (*cmpqi_ext<mode>_1_mem_rex64): Use extract_operator predicate.
17713 (*cmpqi_ext<mode>_1): Ditto.
17714 (*cmpqi_ext<mode>_2): Ditto.
17715 (*cmpqi_ext<mode>_3_mem_rex64): Ditto.
17716 (*cmpqi_ext<mode>_3): Ditto.
17717 (*cmpqi_ext<mode>_4): Ditto.
17718 (*extzvqi_mem_rex64): Ditto.
17720 (*insvqi_2): Ditto.
17721 (*extendqi<SWI24:mode>_ext_1): Ditto.
17722 (*addqi_ext<mode>_0): Ditto.
17723 (*addqi_ext<mode>_1): Ditto.
17724 (*addqi_ext<mode>_2): Ditto.
17725 (*subqi_ext<mode>_0): Ditto.
17726 (*subqi_ext<mode>_2): Ditto.
17727 (*testqi_ext<mode>_1): Ditto.
17728 (*testqi_ext<mode>_2): Ditto.
17729 (*andqi_ext<mode>_0): Ditto.
17730 (*andqi_ext<mode>_1): Ditto.
17731 (*andqi_ext<mode>_1_cc): Ditto.
17732 (*andqi_ext<mode>_2): Ditto.
17733 (*<any_or:code>qi_ext<mode>_0): Ditto.
17734 (*<any_or:code>qi_ext<mode>_1): Ditto.
17735 (*<any_or:code>qi_ext<mode>_2): Ditto.
17736 (*xorqi_ext<mode>_1_cc): Ditto.
17737 (*negqi_ext<mode>_2): Ditto.
17738 (*ashlqi_ext<mode>_2): Ditto.
17739 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
17741 2023-04-20 Raphael Zinsly <rzinsly@ventanamicro.com>
17744 * config/riscv/bitmanip.md (clz, ctz, pcnt, min, max patterns): Use
17745 <bitmanip_insn> as the type to allow for fine grained control of
17746 scheduling these insns.
17747 * config/riscv/generic.md (generic_alu): Add bitmanip, clz, ctz, pcnt,
17749 * config/riscv/riscv.md (type attribute): Add types for clz, ctz,
17750 pcnt, signed and unsigned min/max.
17752 2023-04-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
17753 kito-cheng <kito.cheng@sifive.com>
17755 * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
17757 2023-04-20 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17758 kito-cheng <kito.cheng@sifive.com>
17761 * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
17762 (pass_vsetvl::cleanup_insns): Fix bug.
17764 2023-04-20 Andrew Stubbs <ams@codesourcery.com>
17766 * config/gcn/gcn-valu.md (vnsi, VnSI): Add scalar modes.
17767 (ldexp<mode>3): Delete.
17768 (ldexp<mode>3<exec>): Change "B" to "A".
17770 2023-04-20 Jakub Jelinek <jakub@redhat.com>
17771 Jonathan Wakely <jwakely@redhat.com>
17773 * tree.h (built_in_function_equal_p): New helper function.
17774 (fndecl_built_in_p): Turn into variadic template to support
17775 1 or more built_in_function arguments.
17776 * builtins.cc (fold_builtin_expect): Use 3 argument fndecl_built_in_p.
17777 * gimplify.cc (goa_stabilize_expr): Likewise.
17778 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
17779 * ipa-fnsummary.cc (compute_fn_summary): Likewise.
17780 * omp-low.cc (setjmp_or_longjmp_p): Likewise.
17781 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
17782 cgraph_update_edges_for_call_stmt_node,
17783 cgraph_edge::verify_corresponds_to_fndecl,
17784 cgraph_node::verify_node): Likewise.
17785 * tree-stdarg.cc (optimize_va_list_gpr_fpr_size): Likewise.
17786 * gimple-ssa-warn-access.cc (matching_alloc_calls_p): Likewise.
17787 * ipa-prop.cc (try_make_edge_direct_virtual_call): Likewise.
17789 2023-04-20 Jakub Jelinek <jakub@redhat.com>
17791 PR tree-optimization/109011
17792 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): New function.
17793 (vect_recog_popcount_clz_ctz_ffs_pattern): Move vect_pattern_detected
17794 call later. Don't punt for IFN_CTZ or IFN_FFS if it doesn't have
17795 direct optab support, but has instead IFN_CLZ, IFN_POPCOUNT or
17796 for IFN_FFS IFN_CTZ support, use vect_recog_ctz_ffs_pattern for that
17798 (vect_vect_recog_func_ptrs): Add ctz_ffs entry.
17800 2023-04-20 Richard Biener <rguenther@suse.de>
17802 * df-core.cc (rest_of_handle_df_initialize): Remove
17803 computation of df->postorder, df->postorder_inverted and
17806 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
17808 * common/config/i386/i386-common.cc
17809 (OPTION_MASK_ISA2_AVX_UNSET): Add OPTION_MASK_ISA2_VAES_UNSET.
17810 (ix86_handle_option): Set AVX flag for VAES.
17811 * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
17812 Add OPTION_MASK_ISA2_VAES_UNSET.
17813 (def_builtin): Share builtin between AES and VAES.
17814 * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
17816 * config/i386/i386.md (aes): New isa attribute.
17817 * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
17818 (aesenclast): Ditto.
17820 (aesdeclast): Ditto.
17821 * config/i386/vaesintrin.h: Remove redundant avx target push.
17822 * config/i386/wmmintrin.h (_mm_aesdec_si128): Change to macro.
17823 (_mm_aesdeclast_si128): Ditto.
17824 (_mm_aesenc_si128): Ditto.
17825 (_mm_aesenclast_si128): Ditto.
17827 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
17829 * config/i386/avx2intrin.h
17830 (_MM_REDUCE_OPERATOR_BASIC_EPI16): New macro.
17831 (_MM_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
17832 (_MM256_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
17833 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
17834 (_MM_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
17835 (_MM_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
17836 (_MM256_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
17837 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
17838 (_mm_reduce_add_epi16): New instrinsics.
17839 (_mm_reduce_mul_epi16): Ditto.
17840 (_mm_reduce_and_epi16): Ditto.
17841 (_mm_reduce_or_epi16): Ditto.
17842 (_mm_reduce_max_epi16): Ditto.
17843 (_mm_reduce_max_epu16): Ditto.
17844 (_mm_reduce_min_epi16): Ditto.
17845 (_mm_reduce_min_epu16): Ditto.
17846 (_mm256_reduce_add_epi16): Ditto.
17847 (_mm256_reduce_mul_epi16): Ditto.
17848 (_mm256_reduce_and_epi16): Ditto.
17849 (_mm256_reduce_or_epi16): Ditto.
17850 (_mm256_reduce_max_epi16): Ditto.
17851 (_mm256_reduce_max_epu16): Ditto.
17852 (_mm256_reduce_min_epi16): Ditto.
17853 (_mm256_reduce_min_epu16): Ditto.
17854 (_mm_reduce_add_epi8): Ditto.
17855 (_mm_reduce_mul_epi8): Ditto.
17856 (_mm_reduce_and_epi8): Ditto.
17857 (_mm_reduce_or_epi8): Ditto.
17858 (_mm_reduce_max_epi8): Ditto.
17859 (_mm_reduce_max_epu8): Ditto.
17860 (_mm_reduce_min_epi8): Ditto.
17861 (_mm_reduce_min_epu8): Ditto.
17862 (_mm256_reduce_add_epi8): Ditto.
17863 (_mm256_reduce_mul_epi8): Ditto.
17864 (_mm256_reduce_and_epi8): Ditto.
17865 (_mm256_reduce_or_epi8): Ditto.
17866 (_mm256_reduce_max_epi8): Ditto.
17867 (_mm256_reduce_max_epu8): Ditto.
17868 (_mm256_reduce_min_epi8): Ditto.
17869 (_mm256_reduce_min_epu8): Ditto.
17870 * config/i386/avx512vlbwintrin.h:
17871 (_mm_mask_reduce_add_epi16): Ditto.
17872 (_mm_mask_reduce_mul_epi16): Ditto.
17873 (_mm_mask_reduce_and_epi16): Ditto.
17874 (_mm_mask_reduce_or_epi16): Ditto.
17875 (_mm_mask_reduce_max_epi16): Ditto.
17876 (_mm_mask_reduce_max_epu16): Ditto.
17877 (_mm_mask_reduce_min_epi16): Ditto.
17878 (_mm_mask_reduce_min_epu16): Ditto.
17879 (_mm256_mask_reduce_add_epi16): Ditto.
17880 (_mm256_mask_reduce_mul_epi16): Ditto.
17881 (_mm256_mask_reduce_and_epi16): Ditto.
17882 (_mm256_mask_reduce_or_epi16): Ditto.
17883 (_mm256_mask_reduce_max_epi16): Ditto.
17884 (_mm256_mask_reduce_max_epu16): Ditto.
17885 (_mm256_mask_reduce_min_epi16): Ditto.
17886 (_mm256_mask_reduce_min_epu16): Ditto.
17887 (_mm_mask_reduce_add_epi8): Ditto.
17888 (_mm_mask_reduce_mul_epi8): Ditto.
17889 (_mm_mask_reduce_and_epi8): Ditto.
17890 (_mm_mask_reduce_or_epi8): Ditto.
17891 (_mm_mask_reduce_max_epi8): Ditto.
17892 (_mm_mask_reduce_max_epu8): Ditto.
17893 (_mm_mask_reduce_min_epi8): Ditto.
17894 (_mm_mask_reduce_min_epu8): Ditto.
17895 (_mm256_mask_reduce_add_epi8): Ditto.
17896 (_mm256_mask_reduce_mul_epi8): Ditto.
17897 (_mm256_mask_reduce_and_epi8): Ditto.
17898 (_mm256_mask_reduce_or_epi8): Ditto.
17899 (_mm256_mask_reduce_max_epi8): Ditto.
17900 (_mm256_mask_reduce_max_epu8): Ditto.
17901 (_mm256_mask_reduce_min_epi8): Ditto.
17902 (_mm256_mask_reduce_min_epu8): Ditto.
17904 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
17906 * common/config/i386/i386-common.cc
17907 (OPTION_MASK_ISA_VPCLMULQDQ_SET):
17908 Add OPTION_MASK_ISA_PCLMUL_SET and OPTION_MASK_ISA_AVX_SET.
17909 (OPTION_MASK_ISA_AVX_UNSET):
17910 Add OPTION_MASK_ISA_VPCLMULQDQ_UNSET.
17911 (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
17912 * config/i386/i386.md (vpclmulqdqvl): New.
17913 * config/i386/sse.md (pclmulqdq): Add evex encoding.
17914 * config/i386/vpclmulqdqintrin.h: Remove redudant avx target
17917 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
17919 * config/i386/avx512vlbwintrin.h
17920 (_mm_mask_blend_epi16): Remove __OPTIMIZE__ wrapper.
17921 (_mm_mask_blend_epi8): Ditto.
17922 (_mm256_mask_blend_epi16): Ditto.
17923 (_mm256_mask_blend_epi8): Ditto.
17924 * config/i386/avx512vlintrin.h
17925 (_mm256_mask_blend_pd): Ditto.
17926 (_mm256_mask_blend_ps): Ditto.
17927 (_mm256_mask_blend_epi64): Ditto.
17928 (_mm256_mask_blend_epi32): Ditto.
17929 (_mm_mask_blend_pd): Ditto.
17930 (_mm_mask_blend_ps): Ditto.
17931 (_mm_mask_blend_epi64): Ditto.
17932 (_mm_mask_blend_epi32): Ditto.
17933 * config/i386/sse.md (VF_AVX512BWHFBF16): Removed.
17934 (VF_AVX512HFBFVL): Move it before the first usage.
17935 (<avx512>_blendm<mode>): Change iterator from VF_AVX512BWHFBF16
17936 to VF_AVX512HFBFVL.
17938 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
17940 * common/config/i386/i386-common.cc
17941 (OPTION_MASK_ISA_AVX512VBMI2_SET): Change OPTION_MASK_ISA_AVX512F_SET
17942 to OPTION_MASK_ISA_AVX512BW_SET.
17943 (OPTION_MASK_ISA_AVX512F_UNSET):
17944 Remove OPTION_MASK_ISA_AVX512VBMI2_UNSET.
17945 (OPTION_MASK_ISA_AVX512BW_UNSET):
17946 Add OPTION_MASK_ISA_AVX512VBMI2_UNSET.
17947 * config/i386/avx512vbmi2intrin.h: Do not push avx512bw.
17948 * config/i386/avx512vbmi2vlintrin.h: Ditto.
17949 * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA_AVX512BW.
17950 * config/i386/sse.md (VI12_AVX512VLBW): Removed.
17951 (VI12_VI48F_AVX512VLBW): Rename to VI12_VI48F_AVX512VL.
17952 (compress<mode>_mask): Change iterator from VI12_AVX512VLBW to
17954 (compressstore<mode>_mask): Ditto.
17955 (expand<mode>_mask): Ditto.
17956 (expand<mode>_maskz): Ditto.
17957 (*expand<mode>_mask): Change iterator from VI12_VI48F_AVX512VLBW to
17958 VI12_VI48F_AVX512VL.
17960 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
17962 * common/config/i386/i386-common.cc
17963 (OPTION_MASK_ISA_AVX512BITALG_SET):
17964 Change OPTION_MASK_ISA_AVX512F_SET
17965 to OPTION_MASK_ISA_AVX512BW_SET.
17966 (OPTION_MASK_ISA_AVX512F_UNSET):
17967 Remove OPTION_MASK_ISA_AVX512BITALG_SET.
17968 (OPTION_MASK_ISA_AVX512BW_UNSET):
17969 Add OPTION_MASK_ISA_AVX512BITALG_SET.
17970 * config/i386/avx512bitalgintrin.h: Do not push avx512bw.
17971 * config/i386/i386-builtin.def:
17972 Remove redundant OPTION_MASK_ISA_AVX512BW.
17973 * config/i386/sse.md (VI1_AVX512VLBW): Removed.
17974 (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>):
17975 Change the iterator from VI1_AVX512VLBW to VI1_AVX512VL.
17977 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
17979 * config/i386/i386-expand.cc
17980 (ix86_check_builtin_isa_match): Correct wrong comments.
17981 Add a new macro SHARE_BUILTIN and refactor the current if
17984 2023-04-20 Mo, Zewei <zewei.mo@intel.com>
17986 * config/i386/cpuid.h: Open a new section for Extended Features
17987 Leaf (%eax == 7, %ecx == 0) and Extended Features Sub-leaf (%eax == 7,
17990 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
17992 * config/i386/sse.md: Modify insn vperm{i,f}
17995 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
17997 * config/xtensa/xtensa-opts.h: New header.
17998 * config/xtensa/xtensa.h (STRICT_ALIGNMENT): Redefine as
17999 xtensa_strict_align.
18000 * config/xtensa/xtensa.cc (xtensa_option_override): When
18001 -m[no-]strict-align is not specified in the command line set
18002 xtensa_strict_align to 0 if the hardware supports both unaligned
18003 loads and stores or to 1 otherwise.
18004 * config/xtensa/xtensa.opt (mstrict-align): New option.
18005 * doc/invoke.texi (Xtensa Options): Document -m[no-]strict-align.
18007 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
18009 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
18012 2023-04-19 Andrew Pinski <apinski@marvell.com>
18014 * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
18016 2023-04-19 Juzhe-Zhong <juzhe.zhong@rivai.ai>
18018 * config/riscv/riscv-modes.def (FLOAT_MODE): Add chunk 128 support.
18019 (VECTOR_BOOL_MODE): Ditto.
18020 (ADJUST_NUNITS): Ditto.
18021 (ADJUST_ALIGNMENT): Ditto.
18022 (ADJUST_BYTESIZE): Ditto.
18023 (ADJUST_PRECISION): Ditto.
18024 (RVV_MODES): Ditto.
18025 (VECTOR_MODE_WITH_PREFIX): Ditto.
18026 * config/riscv/riscv-v.cc (ENTRY): Ditto.
18027 (get_vlmul): Ditto.
18028 (get_ratio): Ditto.
18029 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
18030 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
18031 (vbool64_t): Ditto.
18032 (vbool32_t): Ditto.
18033 (vbool16_t): Ditto.
18038 (vint8mf8_t): Ditto.
18039 (vuint8mf8_t): Ditto.
18040 (vint8mf4_t): Ditto.
18041 (vuint8mf4_t): Ditto.
18042 (vint8mf2_t): Ditto.
18043 (vuint8mf2_t): Ditto.
18044 (vint8m1_t): Ditto.
18045 (vuint8m1_t): Ditto.
18046 (vint8m2_t): Ditto.
18047 (vuint8m2_t): Ditto.
18048 (vint8m4_t): Ditto.
18049 (vuint8m4_t): Ditto.
18050 (vint8m8_t): Ditto.
18051 (vuint8m8_t): Ditto.
18052 (vint16mf4_t): Ditto.
18053 (vuint16mf4_t): Ditto.
18054 (vint16mf2_t): Ditto.
18055 (vuint16mf2_t): Ditto.
18056 (vint16m1_t): Ditto.
18057 (vuint16m1_t): Ditto.
18058 (vint16m2_t): Ditto.
18059 (vuint16m2_t): Ditto.
18060 (vint16m4_t): Ditto.
18061 (vuint16m4_t): Ditto.
18062 (vint16m8_t): Ditto.
18063 (vuint16m8_t): Ditto.
18064 (vint32mf2_t): Ditto.
18065 (vuint32mf2_t): Ditto.
18066 (vint32m1_t): Ditto.
18067 (vuint32m1_t): Ditto.
18068 (vint32m2_t): Ditto.
18069 (vuint32m2_t): Ditto.
18070 (vint32m4_t): Ditto.
18071 (vuint32m4_t): Ditto.
18072 (vint32m8_t): Ditto.
18073 (vuint32m8_t): Ditto.
18074 (vint64m1_t): Ditto.
18075 (vuint64m1_t): Ditto.
18076 (vint64m2_t): Ditto.
18077 (vuint64m2_t): Ditto.
18078 (vint64m4_t): Ditto.
18079 (vuint64m4_t): Ditto.
18080 (vint64m8_t): Ditto.
18081 (vuint64m8_t): Ditto.
18082 (vfloat32mf2_t): Ditto.
18083 (vfloat32m1_t): Ditto.
18084 (vfloat32m2_t): Ditto.
18085 (vfloat32m4_t): Ditto.
18086 (vfloat32m8_t): Ditto.
18087 (vfloat64m1_t): Ditto.
18088 (vfloat64m2_t): Ditto.
18089 (vfloat64m4_t): Ditto.
18090 (vfloat64m8_t): Ditto.
18091 * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
18092 * config/riscv/riscv.cc (riscv_legitimize_poly_move): Ditto.
18093 (riscv_convert_vector_bits): Ditto.
18094 * config/riscv/riscv.md:
18095 * config/riscv/vector-iterators.md:
18096 * config/riscv/vector.md
18097 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
18098 (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
18099 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
18100 (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
18101 (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
18102 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
18103 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
18104 (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
18105 (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
18107 2023-04-19 Pan Li <pan2.li@intel.com>
18109 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
18110 Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
18112 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
18116 * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): New insn pattern.
18117 (*cmpqi_ext<mode>_1): Use nonimmediate_operand predicate
18118 for operand 0. Use any_extract code iterator.
18119 (*cmpqi_ext<mode>_1 peephole2): New peephole2 pattern.
18120 (*cmpqi_ext<mode>_2): Use any_extract code iterator.
18121 (*cmpqi_ext<mode>_3_mem_rex64): New insn pattern.
18122 (*cmpqi_ext<mode>_1): Use general_operand predicate
18123 for operand 1. Use any_extract code iterator.
18124 (*cmpqi_ext<mode>_3 peephole2): New peephole2 pattern.
18125 (*cmpqi_ext<mode>_4): Use any_extract code iterator.
18127 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18129 * config/aarch64/aarch64-simd.md (aarch64_saddw2<mode>): Delete.
18130 (aarch64_uaddw2<mode>): Delete.
18131 (aarch64_ssubw2<mode>): Delete.
18132 (aarch64_usubw2<mode>): Delete.
18133 (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>): New define_expand.
18135 2023-04-19 Richard Biener <rguenther@suse.de>
18137 * tree-ssa-structalias.cc (do_ds_constraint): Use
18138 solve_add_graph_edge.
18140 2023-04-19 Richard Biener <rguenther@suse.de>
18142 * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
18144 (do_sd_constraint): ... here.
18146 2023-04-19 Richard Biener <rguenther@suse.de>
18148 * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
18149 rejecting the merge when A contains only a non-local label.
18151 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
18153 * rtl.h (VIRTUAL_REGISTER_P): New predicate.
18154 (VIRTUAL_REGISTER_NUM_P): Ditto.
18155 (REGNO_PTR_FRAME_P): Use VIRTUAL_REGISTER_NUM_P predicate.
18156 * expr.cc (force_operand): Use VIRTUAL_REGISTER_P predicate.
18157 * function.cc (instantiate_decl_rtl): Ditto.
18158 * rtlanal.cc (rtx_addr_can_trap_p_1): Ditto.
18159 (nonzero_address_p): Ditto.
18160 (refers_to_regno_p): Use VIRTUAL_REGISTER_NUM_P predicate.
18162 2023-04-19 Aldy Hernandez <aldyh@redhat.com>
18164 * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
18166 2023-04-19 Richard Biener <rguenther@suse.de>
18168 * system.h (auto_mpz::operator->()): New.
18169 * realmpfr.h (auto_mpfr::operator->()): New.
18170 * builtins.cc (do_mpfr_lgamma_r): Use auto_mpfr.
18171 * real.cc (real_from_string): Likewise.
18172 (dconst_e_ptr): Likewise.
18173 (dconst_sqrt2_ptr): Likewise.
18174 * tree-ssa-loop-niter.cc (refine_value_range_using_guard):
18176 (bound_difference_of_offsetted_base): Likewise.
18177 (number_of_iterations_ne): Likewise.
18178 (number_of_iterations_lt_to_ne): Likewise.
18179 * ubsan.cc: Include realmpfr.h.
18180 (ubsan_instrument_float_cast): Use auto_mpfr.
18182 2023-04-19 Richard Biener <rguenther@suse.de>
18184 * tree-ssa-structalias.cc (solve_graph): Remove self-copy
18185 edges, remove edges from escaped after special-casing them.
18187 2023-04-19 Richard Biener <rguenther@suse.de>
18189 * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
18192 2023-04-19 Richard Biener <rguenther@suse.de>
18194 * tree-ssa-structalias.cc (do_sd_constraint): Do not write
18195 to the LHS varinfo solution member.
18197 2023-04-19 Richard Biener <rguenther@suse.de>
18199 * tree-ssa-structalias.cc (topo_visit): Look at the real
18200 destination of edges.
18202 2023-04-19 Richard Biener <rguenther@suse.de>
18204 PR tree-optimization/44794
18205 * tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop):
18206 If an epilogue loop is required set its iteration upper bound.
18208 2023-04-19 Xi Ruoyao <xry111@xry111.site>
18211 * config/loongarch/loongarch-protos.h
18212 (loongarch_expand_block_move): Add a parameter as alignment RTX.
18213 * config/loongarch/loongarch.h:
18214 (LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER): Remove.
18215 (LARCH_MAX_MOVE_BYTES_STRAIGHT): Remove.
18216 (LARCH_MAX_MOVE_OPS_PER_LOOP_ITER): Define.
18217 (LARCH_MAX_MOVE_OPS_STRAIGHT): Define.
18218 (MOVE_RATIO): Use LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
18219 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
18220 * config/loongarch/loongarch.cc (loongarch_expand_block_move):
18221 Take the alignment from the parameter, but set it to
18222 UNITS_PER_WORD if !TARGET_STRICT_ALIGN. Limit the length of
18223 straight-line implementation with LARCH_MAX_MOVE_OPS_STRAIGHT
18224 instead of LARCH_MAX_MOVE_BYTES_STRAIGHT.
18225 (loongarch_block_move_straight): When there are left-over bytes,
18226 half the mode size instead of falling back to byte mode at once.
18227 (loongarch_block_move_loop): Limit the length of loop body with
18228 LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
18229 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
18230 * config/loongarch/loongarch.md (cpymemsi): Pass the alignment
18231 to loongarch_expand_block_move.
18233 2023-04-19 Xi Ruoyao <xry111@xry111.site>
18235 * config/loongarch/loongarch.cc
18236 (loongarch_setup_incoming_varargs): Don't save more GARs than
18237 cfun->va_list_gpr_size / UNITS_PER_WORD.
18239 2023-04-19 Richard Biener <rguenther@suse.de>
18241 * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
18242 no epilogue condition.
18244 2023-04-19 Richard Biener <rguenther@suse.de>
18246 * gimple.h (gimple_assign_load): Outline...
18247 * gimple.cc (gimple_assign_load): ... here. Avoid
18248 get_base_address and instead just strip the outermost
18249 handled component, treating a remaining handled component
18252 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18254 * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
18256 * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
18258 2023-04-19 Jakub Jelinek <jakub@redhat.com>
18260 PR tree-optimization/109011
18261 * tree-vect-patterns.cc (vect_recog_popcount_pattern): Rename to ...
18262 (vect_recog_popcount_clz_ctz_ffs_pattern): ... this. Handle also
18263 CLZ, CTZ and FFS. Remove vargs variable, use
18264 gimple_build_call_internal rather than gimple_build_call_internal_vec.
18265 (vect_vect_recog_func_ptrs): Adjust popcount entry.
18267 2023-04-19 Jakub Jelinek <jakub@redhat.com>
18270 * dse.cc (replace_read): If read_reg is a SUBREG of a word mode
18271 REG, for WORD_REGISTER_OPERATIONS copy SUBREG_REG of it into
18272 a new REG rather than the SUBREG.
18274 2023-04-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
18276 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
18279 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18282 * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and
18283 ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases. Handle subregs in op1.
18285 2023-04-19 Richard Biener <rguenther@suse.de>
18287 PR rtl-optimization/109237
18288 * cse.cc (insn_live_p): Remove NEXT_INSN walk, instead check
18289 TREE_VISITED on INSN_VAR_LOCATION_DECL.
18290 (delete_trivially_dead_insns): Maintain TREE_VISITED on
18291 active debug bind INSN_VAR_LOCATION_DECL.
18293 2023-04-19 Richard Biener <rguenther@suse.de>
18295 PR rtl-optimization/109237
18296 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
18298 2023-04-19 Christophe Lyon <christophe.lyon@arm.com>
18300 * doc/install.texi (enable-decimal-float): Add AArch64.
18302 2023-04-19 liuhongt <hongtao.liu@intel.com>
18304 PR rtl-optimization/109351
18305 * ira.cc (setup_class_subset_and_memory_move_costs): Check
18306 hard_regno_mode_ok before setting lowest memory move cost for
18307 the mode with different reg classes.
18309 2023-04-18 Jason Merrill <jason@redhat.com>
18311 * doc/invoke.texi: Remove stray @gol.
18313 2023-04-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
18315 * ifcvt.cc (cond_move_process_if_block): Consider the result of
18316 targetm.noce_conversion_profitable_p() when replacing the original
18317 sequence with the converted one.
18319 2023-04-18 Mark Harmstone <mark@harmstone.com>
18321 * common.opt (gcodeview): Add new option.
18322 * gcc.cc (driver_handle_option); Handle OPT_gcodeview.
18323 * opts.cc (command_handle_option): Similarly.
18324 * doc/invoke.texi: Add documentation for -gcodeview.
18326 2023-04-18 Andrew Pinski <apinski@marvell.com>
18328 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove declaration.
18329 (make_pass_phiopt): Make execute out of line.
18330 (tree_ssa_cs_elim): Move code into ...
18331 (pass_cselim::execute): here.
18333 2023-04-18 Sam James <sam@gentoo.org>
18335 * system.h: Drop unused INCLUDE_PTHREAD_H.
18337 2023-04-18 Kevin Lee <kevinl@rivosinc.com>
18339 * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
18342 2023-04-18 Sinan Lin <sinan.lin@linux.alibaba.com>
18344 * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
18345 (bswapdi2, bswapsi2): Similarly.
18347 2023-04-18 Uros Bizjak <ubizjak@gmail.com>
18350 * config/i386/i386-builtin.def (__builtin_ia32_insertps128):
18351 Use CODE_FOR_sse4_1_insertps_v4sf.
18352 * config/i386/i386-expand.cc (expand_vec_perm_insertps): New.
18353 (expand_vec_perm_1): Call expand_vec_per_insertps.
18354 * config/i386/i386.md ("unspec"): Declare UNSPEC_INSERTPS here.
18355 * config/i386/mmx.md (mmxscalarmode): New mode attribute.
18356 (@sse4_1_insertps_<mode>): New insn pattern.
18357 * config/i386/sse.md (@sse4_1_insertps_<mode>): Macroize insn
18358 pattern from sse4_1_insertps using VI4F_128 mode iterator.
18360 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
18362 * value-range.cc (gt_ggc_mx): New.
18364 * value-range.h (class vrange): Add GTY marker.
18365 (class frange): Same.
18366 (gt_ggc_mx): Remove.
18367 (gt_pch_nx): Remove.
18369 2023-04-18 Victor L. Do Nascimento <victor.donascimento@arm.com>
18371 * lra-constraints.cc (constraint_unique): New.
18372 (process_address_1): Apply constraint_unique test.
18373 * recog.cc (constrain_operands): Allow relaxed memory
18376 2023-04-18 Kito Cheng <kito.cheng@sifive.com>
18378 * doc/extend.texi (Target Builtins): Add RISC-V Vector
18380 (RISC-V Vector Intrinsics): Document GCC implemented which
18381 version of RISC-V vector intrinsics and its reference.
18383 2023-04-18 Richard Biener <rguenther@suse.de>
18385 PR middle-end/108786
18386 * bitmap.h (bitmap_clear_first_set_bit): New.
18387 * bitmap.cc (bitmap_first_set_bit_worker): Rename from
18388 bitmap_first_set_bit and add optional clearing of the bit.
18389 (bitmap_first_set_bit): Wrap bitmap_first_set_bit_worker.
18390 (bitmap_clear_first_set_bit): Likewise.
18391 * df-core.cc (df_worklist_dataflow_doublequeue): Use
18392 bitmap_clear_first_set_bit.
18393 * graphite-scop-detection.cc (scop_detection::merge_sese):
18395 * sanopt.cc (sanitize_asan_mark_unpoison): Likewise.
18396 (sanitize_asan_mark_poison): Likewise.
18397 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Likewise.
18398 * tree-into-ssa.cc (rewrite_blocks): Likewise.
18399 * tree-ssa-dce.cc (simple_dce_from_worklist): Likewise.
18400 * tree-ssa-sccvn.cc (do_rpo_vn_1): Likewise.
18402 2023-04-18 Richard Biener <rguenther@suse.de>
18404 * tree-ssa-structalias.cc (dump_sa_stats): Split out from...
18405 (dump_sa_points_to_info): ... this function.
18406 (compute_points_to_sets): Guard large dumps with TDF_DETAILS,
18407 and call dump_sa_stats guarded with TDF_STATS.
18408 (ipa_pta_execute): Likewise.
18409 (compute_may_aliases): Guard dump_alias_info with
18410 TDF_DETAILS|TDF_ALIAS.
18412 2023-04-18 Andrew Pinski <apinski@marvell.com>
18414 * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump
18415 the expression that is being tried when TDF_FOLDING
18417 (phiopt_worker::match_simplify_replacement): Dump
18418 the sequence which was created by gimple_simplify_phiopt
18419 when TDF_FOLDING is true.
18421 2023-04-18 Andrew Pinski <apinski@marvell.com>
18423 * tree-ssa-phiopt.cc (match_simplify_replacement):
18424 Simplify code that does the movement slightly.
18426 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18428 * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to
18430 (rev16<mode>2): Rename to...
18431 (aarch64_rev16<mode>2_alt1): ... This.
18432 (rev16<mode>2_alt): Rename to...
18433 (*aarch64_rev16<mode>2_alt2): ... This.
18435 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
18437 * emit-rtl.cc (init_emit_once): Initialize dconstm0.
18438 * gimple-range-op.cc (class cfn_signbit): Remove dconstm0
18440 * range-op-float.cc (zero_range): Use dconstm0.
18441 (zero_to_inf_range): Same.
18442 * real.h (dconstm0): New.
18443 * value-range.cc (frange::flush_denormals_to_zero): Use dconstm0.
18444 (frange::set_zero): Do not declare dconstm0.
18446 2023-04-18 Richard Biener <rguenther@suse.de>
18448 * system.h (class auto_mpz): New,
18449 * realmpfr.h (class auto_mpfr): Likewise.
18450 * fold-const-call.cc (do_mpfr_arg1): Use auto_mpfr.
18451 (do_mpfr_arg2): Likewise.
18452 * tree-ssa-loop-niter.cc (bound_difference): Use auto_mpz;
18454 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18456 * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
18457 builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
18459 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
18461 * value-range.cc (frange::operator==): Adjust for NAN.
18462 (range_tests_nan): Remove some NAN tests.
18464 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
18466 * inchash.cc (hash::add_real_value): New.
18467 * inchash.h (class hash): Add add_real_value.
18468 * value-range.cc (add_vrange): New.
18469 * value-range.h (inchash::add_vrange): New.
18471 2023-04-18 Richard Biener <rguenther@suse.de>
18473 PR tree-optimization/109539
18474 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
18475 Re-implement pointer relatedness for PHIs.
18477 2023-04-18 Andrew Stubbs <ams@codesourcery.com>
18479 * config/gcn/gcn-valu.md (SV_SFDF): New iterator.
18480 (SV_FP): New iterator.
18481 (scalar_mode, SCALAR_MODE): Add identity mappings for scalar modes.
18482 (recip<mode>2): Unify the two patterns using SV_FP.
18483 (div_scale<mode><exec_vcc>): New insn.
18484 (div_fmas<mode><exec>): New insn.
18485 (div_fixup<mode><exec>): New insn.
18486 (div<mode>3): Unify the two expanders and rewrite using hardfp.
18487 * config/gcn/gcn.cc (gcn_md_reorg): Support "vccwait" attribute.
18488 * config/gcn/gcn.md (unspec): Add UNSPEC_DIV_SCALE, UNSPEC_DIV_FMAS,
18489 and UNSPEC_DIV_FIXUP.
18490 (vccwait): New attribute.
18492 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18494 * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
18495 if the argument matches that.
18497 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18499 * config/aarch64/atomics.md
18500 (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
18501 Use SD_HSDI for destination mode iterator.
18503 2023-04-18 Jin Ma <jinma@linux.alibaba.com>
18505 * common/config/riscv/riscv-common.cc (multi_letter_subset_rank): Swap the order
18506 of z-extensions and s-extensions.
18507 (riscv_subset_list::parse): Likewise.
18509 2023-04-18 Jakub Jelinek <jakub@redhat.com>
18511 PR tree-optimization/109240
18512 * match.pd (fneg/fadd): Rewrite such that it handles both plus as
18513 first vec_perm operand and minus as second using fneg/fadd and
18514 minus as first vec_perm operand and plus as second using fneg/fsub.
18516 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
18518 * data-streamer.cc (bp_pack_real_value): New.
18519 (bp_unpack_real_value): New.
18520 * data-streamer.h (bp_pack_real_value): New.
18521 (bp_unpack_real_value): New.
18522 * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Use
18523 bp_unpack_real_value.
18524 * tree-streamer-out.cc (pack_ts_real_cst_value_fields): Use
18525 bp_pack_real_value.
18527 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
18529 * wide-int.h (WIDE_INT_MAX_HWIS): New.
18530 (class fixed_wide_int_storage): Use it.
18531 (trailing_wide_ints <N>::set_precision): Use it.
18532 (trailing_wide_ints <N>::extra_size): Use it.
18534 2023-04-18 Xi Ruoyao <xry111@xry111.site>
18536 * config/loongarch/loongarch-protos.h
18537 (loongarch_addu16i_imm12_operand_p): New function prototype.
18538 (loongarch_split_plus_constant): Likewise.
18539 * config/loongarch/loongarch.cc
18540 (loongarch_addu16i_imm12_operand_p): New function.
18541 (loongarch_split_plus_constant): Likewise.
18542 * config/loongarch/loongarch.h (ADDU16I_OPERAND): New macro.
18543 (DUAL_IMM12_OPERAND): Likewise.
18544 (DUAL_ADDU16I_OPERAND): Likewise.
18545 * config/loongarch/constraints.md (La, Lb, Lc, Ld, Le): New
18547 * config/loongarch/predicates.md (const_dual_imm12_operand): New
18549 (const_addu16i_operand): Likewise.
18550 (const_addu16i_imm12_di_operand): Likewise.
18551 (const_addu16i_imm12_si_operand): Likewise.
18552 (plus_di_operand): Likewise.
18553 (plus_si_operand): Likewise.
18554 (plus_si_extend_operand): Likewise.
18555 * config/loongarch/loongarch.md (add<mode>3): Convert to
18556 define_insn_and_split. Use plus_<mode>_operand predicate
18557 instead of arith_operand. Add alternatives for La, Lb, Lc, Ld,
18558 and Le constraints.
18559 (*addsi3_extended): Convert to define_insn_and_split. Use
18560 plus_si_extend_operand instead of arith_operand. Add
18561 alternatives for La and Le alternatives.
18563 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
18565 * value-range.h (Value_Range::Value_Range): New.
18566 (Value_Range::contains_p): New.
18568 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
18570 * value-range.h (class vrange): Make m_discriminator const.
18571 (class irange): Make m_max_ranges const. Adjust constructors
18573 (class unsupported_range): Construct vrange appropriately.
18574 (class frange): Same.
18576 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
18578 * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
18581 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
18583 * doc/extend.texi: Add section for LoongArch Base Built-in functions.
18585 2023-04-18 Fei Gao <gaofei@eswincomputing.com>
18587 * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
18589 (riscv_expand_epilogue): Likewise.
18591 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
18593 * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in
18595 (riscv_expand_epilogue): Consider save-restore in stack deallocation.
18597 2023-04-17 Andrew Pinski <apinski@marvell.com>
18599 * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
18602 2023-04-17 Aldy Hernandez <aldyh@redhat.com>
18604 * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
18607 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
18609 * config/riscv/riscv.cc (riscv_first_stack_step): Add a new function
18610 parameter remaining_size.
18611 (riscv_compute_frame_info): Adapt new riscv_first_stack_step interface.
18612 (riscv_expand_prologue): Likewise.
18613 (riscv_expand_epilogue): Likewise.
18615 2023-04-17 Feng Wang <wangfeng@eswincomputing.com>
18617 * config/riscv/bitmanip.md (rotrsi3_sext): Support generating
18618 roriw for constant counts.
18619 * rtl.h (reverse_rotate_by_imm_p): Add function declartion
18620 * simplify-rtx.cc (reverse_rotate_by_imm_p): New function.
18621 (simplify_context::simplify_binary_operation_1): Use it.
18622 * expmed.cc (expand_shift_1): Likewise.
18624 2023-04-17 Martin Jambor <mjambor@suse.cz>
18628 * cgraph.h (symtab_node::find_reference): Add parameter use_type.
18629 * ipa-prop.h (ipa_pass_through_data): New flag refdesc_decremented.
18630 (ipa_zap_jf_refdesc): New function.
18631 (ipa_get_jf_pass_through_refdesc_decremented): Likewise.
18632 (ipa_set_jf_pass_through_refdesc_decremented): Likewise.
18633 * ipa-cp.cc (ipcp_discover_new_direct_edges): Provide a value for
18634 the new parameter of find_reference.
18635 (adjust_references_in_caller): Likewise. Make sure the constant jump
18636 function is not used to decrement a refdec counter again. Only
18637 decrement refdesc counters when the pass_through jump function allows
18638 it. Added a detailed dump when decrementing refdesc counters.
18639 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Dump new flag.
18640 (ipa_set_jf_simple_pass_through): Initialize the new flag.
18641 (ipa_set_jf_unary_pass_through): Likewise.
18642 (ipa_set_jf_arith_pass_through): Likewise.
18643 (remove_described_reference): Provide a value for the new parameter of
18645 (update_jump_functions_after_inlining): Zap refdesc of new jfunc if
18646 the previous pass_through had a flag mandating that we do so.
18647 (propagate_controlled_uses): Likewise. Only decrement refdesc
18648 counters when the pass_through jump function allows it.
18649 (ipa_edge_args_sum_t::duplicate): Provide a value for the new
18650 parameter of find_reference.
18651 (ipa_write_jump_function): Assert the new flag does not have to be
18653 * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
18656 2023-04-17 Philipp Tomsich <philipp.tomsich@vrull.eu>
18657 Di Zhao <di.zhao@amperecomputing.com>
18659 * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION):
18660 Add AARCH64_EXTRA_TUNE_NO_LDP_COMBINE.
18661 * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp):
18662 Check for the above tuning option when processing loads.
18664 2023-04-17 Richard Biener <rguenther@suse.de>
18666 PR tree-optimization/109524
18667 * tree-vrp.cc (remove_unreachable::m_list): Change to a
18668 vector of pairs of block indices.
18669 (remove_unreachable::maybe_register_block): Adjust.
18670 (remove_unreachable::remove_and_update_globals): Likewise.
18671 Deal with removed blocks.
18673 2023-04-16 Jeff Law <jlaw@ventanamicro>
18676 * config/riscv/riscv.cc (riscv_expand_conditional_move): For
18677 TARGET_SFB_ALU, force the true arm into a register.
18679 2023-04-15 John David Anglin <danglin@gcc.gnu.org>
18682 * config/pa/pa-protos.h (pa_function_arg_size): Update prototype.
18683 * config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument
18685 (pa_arg_partial_bytes): Don't call pa_function_arg_size twice.
18686 (pa_function_arg_size): Change return type to int. Return zero
18687 for arguments larger than 1 GB. Update comments.
18689 2023-04-15 Jakub Jelinek <jakub@redhat.com>
18691 PR tree-optimization/109154
18692 * tree-if-conv.cc (predicate_scalar_phi): For complex PHIs, emit just
18693 args_len - 1 COND_EXPRs rather than args_len. Formatting fix.
18695 2023-04-15 Jason Merrill <jason@redhat.com>
18698 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
18699 Overhaul lhs_ref.ref analysis.
18701 2023-04-14 Richard Biener <rguenther@suse.de>
18703 PR tree-optimization/109502
18704 * tree-vect-stmts.cc (vectorizable_assignment): Fix
18705 check for conversion between mask and non-mask types.
18707 2023-04-14 Jeff Law <jlaw@ventanamicro.com>
18708 Jakub Jelinek <jakub@redhat.com>
18712 * combine.cc (simplify_and_const_int_1): Compute nonzero_bits in
18713 word_mode rather than mode if WORD_REGISTER_OPERATIONS and mode is
18714 smaller than word_mode.
18715 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1)
18716 <case AND>: Likewise.
18718 2023-04-14 Jakub Jelinek <jakub@redhat.com>
18720 * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
18723 2023-04-13 Andrew MacLeod <amacleod@redhat.com>
18725 PR tree-optimization/108139
18726 PR tree-optimization/109462
18727 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Remove
18728 equivalency check for PHI nodes.
18729 * gimple-range-fold.cc (fold_using_range::range_of_phi): Ensure def
18730 does not dominate single-arg equivalency edges.
18732 2023-04-13 Richard Sandiford <richard.sandiford@arm.com>
18735 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
18736 not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
18738 2023-04-13 Richard Biener <rguenther@suse.de>
18740 PR tree-optimization/109491
18741 * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
18742 NULL operands test.
18744 2023-04-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18747 * config/riscv/riscv-vector-builtins-types.def (vint8mf8_t): Fix predicate.
18748 (vint16mf4_t): Ditto.
18749 (vint32mf2_t): Ditto.
18750 (vint64m1_t): Ditto.
18751 (vint64m2_t): Ditto.
18752 (vint64m4_t): Ditto.
18753 (vint64m8_t): Ditto.
18754 (vuint8mf8_t): Ditto.
18755 (vuint16mf4_t): Ditto.
18756 (vuint32mf2_t): Ditto.
18757 (vuint64m1_t): Ditto.
18758 (vuint64m2_t): Ditto.
18759 (vuint64m4_t): Ditto.
18760 (vuint64m8_t): Ditto.
18761 (vfloat32mf2_t): Ditto.
18762 (vbool64_t): Ditto.
18763 * config/riscv/riscv-vector-builtins.cc (register_builtin_type): Add comments.
18764 (register_vector_type): Ditto.
18765 (check_required_extensions): Fix condition.
18766 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ZVE64): Remove it.
18767 (RVV_REQUIRE_ELEN_64): New define.
18768 (RVV_REQUIRE_MIN_VLEN_64): Ditto.
18769 * config/riscv/riscv-vector-switch.def (TARGET_VECTOR_FP32): Remove it.
18770 (TARGET_VECTOR_FP64): Ditto.
18771 (ENTRY): Fix predicate.
18772 * config/riscv/vector-iterators.md: Fix predicate.
18774 2023-04-12 Jakub Jelinek <jakub@redhat.com>
18776 PR tree-optimization/109410
18777 * tree-ssa-reassoc.cc (build_and_add_sum): Split edge from entry
18778 block if first statement of the function is a call to returns_twice
18781 2023-04-12 Jakub Jelinek <jakub@redhat.com>
18784 * config/i386/i386.cc: Include rtl-error.h.
18785 (ix86_print_operand): For z modifier warning, use warning_for_asm
18786 if this_is_asm_operands. For Z modifier errors, use %c and code
18787 instead of hardcoded Z.
18789 2023-04-12 Costas Argyris <costas.argyris@gmail.com>
18791 * config/i386/x-mingw32-utf8: Remove extrataneous $@
18793 2023-04-12 Andrew MacLeod <amacleod@redhat.com>
18795 PR tree-optimization/109462
18796 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
18797 check for equivalences if NAME is a phi node.
18799 2023-04-12 Richard Biener <rguenther@suse.de>
18801 PR tree-optimization/109473
18802 * tree-vect-loop.cc (vect_create_epilog_for_reduction):
18803 Convert scalar result to the computation type before performing
18804 the reduction adjustment.
18806 2023-04-12 Richard Biener <rguenther@suse.de>
18808 PR tree-optimization/109469
18809 * tree-vect-slp.cc (vect_slp_function): Skip region starts with
18810 a returns-twice call.
18812 2023-04-12 Richard Biener <rguenther@suse.de>
18814 PR tree-optimization/109434
18815 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly
18816 handle possibly throwing calls when processing the LHS
18817 and may-defs are not OK.
18819 2023-04-11 Lin Sinan <mynameisxiaou@gmail.com>
18821 * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
18822 predicate to avoid splitting arith constants.
18824 2023-04-11 Yanzhang Wang <yanzhang.wang@intel.com>
18825 Pan Li <pan2.li@intel.com>
18826 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18827 Kito Cheng <kito.cheng@sifive.com>
18830 * config/riscv/riscv-protos.h (emit_hard_vlmax_vsetvl): New.
18831 * config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): New.
18832 (emit_vlmax_vsetvl): Use emit_hard_vlmax_vsetvl.
18833 * config/riscv/riscv.cc (vector_zero_call_used_regs): New.
18834 (riscv_zero_call_used_regs): New.
18835 (TARGET_ZERO_CALL_USED_REGS): New.
18837 2023-04-11 Martin Liska <mliska@suse.cz>
18840 * opts.cc (finish_options): Drop also
18841 x_flag_var_tracking_assignments.
18843 2023-04-11 Andre Vieira <andre.simoesdiasvieira@arm.com>
18845 PR tree-optimization/108888
18846 * tree-if-conv.cc (predicate_statements): Fix gimple call check.
18848 2023-04-11 Haochen Gui <guihaoc@gcc.gnu.org>
18851 * config/rs6000/vsx.md (vsx_sign_extend_qi_<mode>): Rename to...
18852 (vsx_sign_extend_v16qi_<mode>): ... this.
18853 (vsx_sign_extend_hi_<mode>): Rename to...
18854 (vsx_sign_extend_v8hi_<mode>): ... this.
18855 (vsx_sign_extend_si_v2di): Rename to...
18856 (vsx_sign_extend_v4si_v2di): ... this.
18857 (vsignextend_qi_<mode>): Remove.
18858 (vsignextend_hi_<mode>): Remove.
18859 (vsignextend_si_v2di): Remove.
18860 (vsignextend_v2di_v1ti): Remove.
18861 (*xxspltib_<mode>_split): Replace gen_vsx_sign_extend_qi_v2di with
18862 gen_vsx_sign_extend_v16qi_v2di and gen_vsx_sign_extend_qi_v4si
18863 with gen_vsx_sign_extend_v16qi_v4si.
18864 * config/rs6000/rs6000.md (split for DI constant generation):
18865 Replace gen_vsx_sign_extend_qi_si with gen_vsx_sign_extend_v16qi_si.
18866 (split for HSDI constant generation): Replace gen_vsx_sign_extend_qi_di
18867 with gen_vsx_sign_extend_v16qi_di and gen_vsx_sign_extend_qi_si
18868 with gen_vsx_sign_extend_v16qi_si.
18869 * config/rs6000/rs6000-builtins.def (__builtin_altivec_vsignextsb2d):
18870 Set bif-pattern to vsx_sign_extend_v16qi_v2di.
18871 (__builtin_altivec_vsignextsb2w): Set bif-pattern to
18872 vsx_sign_extend_v16qi_v4si.
18873 (__builtin_altivec_visgnextsh2d): Set bif-pattern to
18874 vsx_sign_extend_v8hi_v2di.
18875 (__builtin_altivec_vsignextsh2w): Set bif-pattern to
18876 vsx_sign_extend_v8hi_v4si.
18877 (__builtin_altivec_vsignextsw2d): Set bif-pattern to
18878 vsx_sign_extend_si_v2di.
18879 (__builtin_altivec_vsignext): Set bif-pattern to
18880 vsx_sign_extend_v2di_v1ti.
18881 * config/rs6000/rs6000-builtin.cc (lxvrse_expand_builtin): Replace
18882 gen_vsx_sign_extend_qi_v2di with gen_vsx_sign_extend_v16qi_v2di,
18883 gen_vsx_sign_extend_hi_v2di with gen_vsx_sign_extend_v8hi_v2di and
18884 gen_vsx_sign_extend_si_v2di with gen_vsx_sign_extend_v4si_v2di.
18886 2023-04-10 Michael Meissner <meissner@linux.ibm.com>
18889 * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
18890 (vsx_nfmsv4sf4): Do not generate vnmsubfp.
18892 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
18894 * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
18896 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
18898 * common/config/i386/cpuinfo.h (get_available_features):
18899 Detect AMX-COMPLEX.
18900 * common/config/i386/i386-common.cc
18901 (OPTION_MASK_ISA2_AMX_COMPLEX_SET,
18902 OPTION_MASK_ISA2_AMX_COMPLEX_UNSET): New.
18903 (ix86_handle_option): Handle -mamx-complex.
18904 * common/config/i386/i386-cpuinfo.h (enum processor_features):
18905 Add FEATURE_AMX_COMPLEX.
18906 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
18908 * config.gcc: Add amxcomplexintrin.h.
18909 * config/i386/cpuid.h (bit_AMX_COMPLEX): New.
18910 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
18912 * config/i386/i386-isa.def (AMX_COMPLEX): Add DEF_PTA(AMX_COMPLEX).
18913 * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
18914 Handle amx-complex.
18915 * config/i386/i386.opt: Add option -mamx-complex.
18916 * config/i386/immintrin.h: Include amxcomplexintrin.h.
18917 * doc/extend.texi: Document amx-complex.
18918 * doc/invoke.texi: Document -mamx-complex.
18919 * doc/sourcebuild.texi: Document target amx-complex.
18920 * config/i386/amxcomplexintrin.h: New file.
18922 2023-04-08 Jakub Jelinek <jakub@redhat.com>
18924 PR tree-optimization/109392
18925 * tree-vect-generic.cc (tree_vec_extract): Handle failure
18926 of maybe_push_res_to_seq better.
18928 2023-04-08 Jakub Jelinek <jakub@redhat.com>
18930 * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
18932 (SYSTEM_H): Depend on $(HASHTAB_H).
18933 * config/riscv/t-riscv (build/genrvv-type-indexer.o): Remove unused
18934 dependency on $(RTL_BASE_H), remove redundant dependency on
18937 2023-04-06 Richard Earnshaw <rearnsha@arm.com>
18940 * config/arm/arm.cc (arm_effective_regno): New function.
18941 (mve_vector_mem_operand): Use it.
18943 2023-04-06 Andrew MacLeod <amacleod@redhat.com>
18945 PR tree-optimization/109417
18946 * gimple-range-gori.cc (gori_compute::may_recompute_p): Check if
18947 dependency is in SSA_NAME_FREE_LIST.
18949 2023-04-06 Andrew Pinski <apinski@marvell.com>
18951 PR tree-optimization/109427
18952 * params.opt (-param=vect-induction-float=):
18953 Fix option attribute typo for IntegerRange.
18955 2023-04-05 Jeff Law <jlaw@ventanamicro>
18958 * combine.cc (combine_instructions): Force re-recognition when
18959 after restoring the body of an insn to its original form.
18961 2023-04-05 Martin Jambor <mjambor@suse.cz>
18964 * ipa-sra.cc (zap_useless_ipcp_results): New function.
18965 (process_isra_node_results): Call it.
18967 2023-04-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18969 * config/riscv/vector.md: Fix incorrect operand order.
18971 2023-04-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
18973 * config/riscv/riscv-vsetvl.cc
18974 (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
18977 2023-04-05 Li Xu <xuli1@eswincomputing.com>
18979 * config/riscv/riscv-vector-builtins.def: Fix typo.
18980 * config/riscv/riscv.cc (riscv_dwarf_poly_indeterminate_value): Ditto.
18981 * config/riscv/vector-iterators.md: Ditto.
18983 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
18985 * doc/md.texi (Including Patterns): Fix page break.
18987 2023-04-04 Jakub Jelinek <jakub@redhat.com>
18989 PR tree-optimization/109386
18990 * range-op-float.cc (foperator_lt::op1_range, foperator_lt::op2_range,
18991 foperator_le::op1_range, foperator_le::op2_range,
18992 foperator_gt::op1_range, foperator_gt::op2_range,
18993 foperator_ge::op1_range, foperator_ge::op2_range): Make r varying for
18994 BRS_FALSE case even if the other op is maybe_isnan, not just
18996 (foperator_unordered_lt::op1_range, foperator_unordered_lt::op2_range,
18997 foperator_unordered_le::op1_range, foperator_unordered_le::op2_range,
18998 foperator_unordered_gt::op1_range, foperator_unordered_gt::op2_range,
18999 foperator_unordered_ge::op1_range, foperator_unordered_ge::op2_range):
19000 Make r varying for BRS_TRUE case even if the other op is maybe_isnan,
19001 not just known_isnan.
19003 2023-04-04 Marek Polacek <polacek@redhat.com>
19005 PR sanitizer/109107
19006 * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
19008 * match.pd: Use TYPE_OVERFLOW_SANITIZED.
19010 2023-04-04 Stam Markianos-Wright <stam.markianos-wright@arm.com>
19012 * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
19013 (mve_vcreateq_f<mode>): Swap operands.
19015 2023-04-04 Andrew Stubbs <ams@codesourcery.com>
19017 * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
19019 2023-04-04 Jakub Jelinek <jakub@redhat.com>
19022 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
19023 Reword diagnostics about zfinx conflict with f, formatting fixes.
19025 2023-04-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
19027 * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
19029 2023-04-04 Richard Biener <rguenther@suse.de>
19031 PR tree-optimization/109304
19032 * tree-profile.cc (tree_profiling): Use symtab node
19033 availability to decide whether to skip adjusting calls.
19034 Do not adjust calls to internal functions.
19036 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
19039 * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
19040 function for permutation control vector by considering big endianness.
19042 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
19045 * config/rs6000/altivec.md (*p9v_parity<mode>2): Rename to ...
19046 (rs6000_vprtyb<mode>2): ... this.
19047 * config/rs6000/rs6000-builtins.def (VPRTYBD): Replace parityv2di2 with
19048 rs6000_vprtybv2di2.
19049 (VPRTYBW): Replace parityv4si2 with rs6000_vprtybv4si2.
19050 (VPRTYBQ): Replace parityv1ti2 with rs6000_vprtybv1ti2.
19051 * config/rs6000/vector.md (parity<mode>2 with VEC_IP): Expand with
19052 popcountv16qi2 and the corresponding rs6000_vprtyb<mode>2.
19054 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
19055 Sandra Loosemore <sandra@codesourcery.com>
19057 * doc/md.texi (Insn Splitting): Tweak wording for readability.
19059 2023-04-03 Martin Jambor <mjambor@suse.cz>
19062 * ipa-prop.cc (determine_known_aggregate_parts): Check that the
19063 offset + size will be representable in unsigned int.
19065 2023-04-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
19067 * configure.ac (ZSTD_LIB): Move before zstd.h check.
19068 Unset gcc_cv_header_zstd_h without libzstd.
19069 * configure: Regenerate.
19071 2023-04-03 Martin Liska <mliska@suse.cz>
19073 * doc/invoke.texi: Document new param.
19075 2023-04-03 Cupertino Miranda <cupertino.miranda@oracle.com>
19077 * doc/sourcebuild.texi (const_volatile_readonly_section): Document
19078 new check_effective_target function.
19080 2023-04-03 Li Xu <xuli1@eswincomputing.com>
19082 * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
19083 (vfloat32m8_t): Likewise
19085 2023-04-03 liuhongt <hongtao.liu@intel.com>
19087 * doc/md.texi: Document signbitm2.
19089 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
19090 kito-cheng <kito.cheng@sifive.com>
19092 * config/riscv/vector.md: Fix RA constraint.
19094 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
19096 * config/riscv/riscv-protos.h (gen_avl_for_scalar_move): New function.
19097 * config/riscv/riscv-v.cc (gen_avl_for_scalar_move): New function.
19098 * config/riscv/vector.md: Fix scalar move bug.
19100 2023-04-01 Jakub Jelinek <jakub@redhat.com>
19102 * range-op-float.cc (foperator_equal::fold_range): If at least
19103 one of the op ranges is not singleton and neither is NaN and all
19104 4 bounds are zero, return [1, 1].
19105 (foperator_not_equal::fold_range): In the same case return [0, 0].
19107 2023-04-01 Jakub Jelinek <jakub@redhat.com>
19109 * range-op-float.cc (foperator_equal::fold_range): Perform the
19110 non-singleton handling regardless of maybe_isnan (op1, op2).
19111 (foperator_not_equal::fold_range): Likewise.
19112 (foperator_lt::fold_range, foperator_le::fold_range,
19113 foperator_gt::fold_range, foperator_ge::fold_range): Perform the
19114 real_* comparison check which results in range_false (type)
19115 even if maybe_isnan (op1, op2). Simplify.
19116 (foperator_ltgt): New class.
19117 (fop_ltgt): New variable.
19118 (floating_op_table::floating_op_table): Handle LTGT_EXPR using
19121 2023-04-01 Jakub Jelinek <jakub@redhat.com>
19124 * builtins.cc (apply_args_size): If targetm.calls.get_raw_arg_mode
19125 returns VOIDmode, handle it like if the register isn't used for
19126 passing arguments at all.
19127 (apply_result_size): If targetm.calls.get_raw_result_mode returns
19128 VOIDmode, handle it like if the register isn't used for returning
19130 * target.def (get_raw_result_mode, get_raw_arg_mode): Document what it
19131 means to return VOIDmode.
19132 * doc/tm.texi: Regenerated.
19133 * config/aarch64/aarch64.cc (aarch64_function_value_regno_p): Return
19134 TARGET_SVE for P0_REGNUM.
19135 (aarch64_function_arg_regno_p): Also return true for p0-p3.
19136 (aarch64_get_reg_raw_mode): Return VOIDmode for PR_REGNUM_P regs.
19138 2023-03-31 Vladimir N. Makarov <vmakarov@redhat.com>
19140 * lra-constraints.cc: (combine_reload_insn): New function.
19142 2023-03-31 Jakub Jelinek <jakub@redhat.com>
19144 PR tree-optimization/91645
19145 * range-op-float.cc (foperator_unordered_lt::fold_range,
19146 foperator_unordered_le::fold_range,
19147 foperator_unordered_gt::fold_range,
19148 foperator_unordered_ge::fold_range,
19149 foperator_unordered_equal::fold_range): Call the ordered
19150 fold_range on ranges with cleared NaNs.
19151 * value-query.cc (range_query::get_tree_range): Handle also
19152 COMPARISON_CLASS_P trees.
19154 2023-03-31 Kito Cheng <kito.cheng@sifive.com>
19155 Andrew Pinski <pinskia@gmail.com>
19158 * config/riscv/t-riscv: Add missing dependencies.
19160 2023-03-31 liuhongt <hongtao.liu@intel.com>
19162 * config/i386/i386.cc (inline_memory_move_cost): Return 100
19163 for MASK_REGS when MODE_SIZE > 8.
19165 2023-03-31 liuhongt <hongtao.liu@intel.com>
19168 * config/i386/i386-builtin.def (BDESC): Adjust icode name from
19169 ufloat/ufix to floatuns/fixuns.
19170 * config/i386/i386-expand.cc
19171 (ix86_expand_vector_convert_uns_vsivsf): Adjust comments.
19172 * config/i386/sse.md
19173 (ufloat<sseintvecmodelower><mode>2<mask_name><round_name>):
19175 (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
19176 (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
19178 (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
19180 (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
19182 (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):.. this.
19183 (ufloat<si2dfmodelower><mode>2<mask_name>): Renamed to ..
19184 (floatuns<si2dfmodelower><mode>2<mask_name>): .. this.
19185 (ufloatv2siv2df2<mask_name>): Renamed to ..
19186 (<mask_codefor>floatunsv2siv2df2<mask_name>): .. this.
19187 (ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
19189 (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
19191 (ufix_notruncv2dfv2si2): Renamed to ..
19192 (fixuns_notruncv2dfv2si2):.. this.
19193 (ufix_notruncv2dfv2si2_mask): Renamed to ..
19194 (fixuns_notruncv2dfv2si2_mask): .. this.
19195 (*ufix_notruncv2dfv2si2_mask_1): Renamed to ..
19196 (*fixuns_notruncv2dfv2si2_mask_1): .. this.
19197 (ufix_truncv2dfv2si2): Renamed to ..
19198 (*fixuns_truncv2dfv2si2): .. this.
19199 (ufix_truncv2dfv2si2_mask): Renamed to ..
19200 (fixuns_truncv2dfv2si2_mask): .. this.
19201 (*ufix_truncv2dfv2si2_mask_1): Renamed to ..
19202 (*fixuns_truncv2dfv2si2_mask_1): .. this.
19203 (ufix_truncv4dfv4si2<mask_name>): Renamed to ..
19204 (fixuns_truncv4dfv4si2<mask_name>): .. this.
19205 (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
19207 (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
19209 (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
19210 (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
19213 2023-03-30 Andrew MacLeod <amacleod@redhat.com>
19215 PR tree-optimization/109154
19216 * gimple-range-gori.cc (gori_compute::may_recompute_p): Add depth limit.
19217 * gimple-range-gori.h (may_recompute_p): Add depth param.
19218 * params.opt (ranger-recompute-depth): New param.
19220 2023-03-30 Jason Merrill <jason@redhat.com>
19224 * cgraph.h: Move reset() from cgraph_node to symtab_node.
19225 * cgraphunit.cc (symtab_node::reset): Adjust. Also call
19226 remove_from_same_comdat_group.
19228 2023-03-30 Richard Biener <rguenther@suse.de>
19230 PR tree-optimization/107561
19231 * gimple-ssa-warn-access.cc (get_size_range): Add flags
19232 argument and pass it on.
19233 (check_access): When querying for the size range pass
19234 SR_ALLOW_ZERO when the known destination size is zero.
19236 2023-03-30 Richard Biener <rguenther@suse.de>
19238 PR tree-optimization/109342
19239 * tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New
19240 overload for edge. When that edge is a backedge use
19241 dominated_by_p directly.
19243 2023-03-30 liuhongt <hongtao.liu@intel.com>
19245 * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
19246 vpblendd instead of vpblendw for V4SI under avx2.
19248 2023-03-29 Hans-Peter Nilsson <hp@axis.com>
19250 * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
19251 for many quick operands, for register-sized modes.
19253 2023-03-29 Jiawei <jiawei@iscas.ac.cn>
19255 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
19258 2023-03-29 Martin Liska <mliska@suse.cz>
19260 PR bootstrap/109310
19261 * configure.ac: Emit a warning for deprecated option
19262 --enable-link-mutex.
19263 * configure: Regenerate.
19265 2023-03-29 Richard Biener <rguenther@suse.de>
19267 PR tree-optimization/109331
19268 * tree-ssa-forwprop.cc (pass_forwprop::execute): When we
19269 discover a taken edge make sure to cleanup the CFG.
19271 2023-03-29 Richard Biener <rguenther@suse.de>
19273 PR tree-optimization/109327
19274 * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
19275 already removed stmts when draining to_remove.
19277 2023-03-29 Richard Biener <rguenther@suse.de>
19280 * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
19281 so we can re-create the DIE for the type if required.
19283 2023-03-29 Jakub Jelinek <jakub@redhat.com>
19284 Richard Biener <rguenther@suse.de>
19286 PR tree-optimization/109301
19287 * tree-ssa-math-opts.cc (pass_data_cse_sincos): Change
19288 properties_provided from PROP_gimple_opt_math to 0.
19289 (pass_data_expand_powcabs): Change properties_provided from 0 to
19290 PROP_gimple_opt_math.
19292 2023-03-29 Richard Biener <rguenther@suse.de>
19294 PR tree-optimization/109154
19295 * tree-if-conv.cc (gen_phi_arg_condition): Handle single
19296 inverted condition specially by inverting at the caller.
19297 (gen_phi_arg_condition): Swap COND_EXPR arms if requested.
19299 2023-03-28 David Malcolm <dmalcolm@redhat.com>
19302 * diagnostic-show-locus.cc (column_range::column_range): Factor
19303 out assertion conditional into...
19304 (column_range::valid_p): ...this new function.
19305 (line_corrections::add_hint): Don't attempt to consolidate hints
19306 if it would lead to invalid column_range instances.
19308 2023-03-28 Kito Cheng <kito.cheng@sifive.com>
19311 * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
19312 (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
19315 2023-03-28 Alexander Monakov <amonakov@ispras.ru>
19317 PR rtl-optimization/109187
19318 * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
19319 subtraction in three-way comparison.
19321 2023-03-28 Andrew MacLeod <amacleod@redhat.com>
19323 PR tree-optimization/109265
19324 PR tree-optimization/109274
19325 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
19326 not create a relation record is op1 and op2 are the same symbol.
19327 (gori_compute::compute_operand1_range): Pass op1 == op2 to the
19328 handler for this stmt, but create a new record only if this statement
19329 generates a relation based on the ranges.
19330 (gori_compute::compute_operand2_range): Ditto.
19331 * value-relation.h (value_relation::set_relation): Always create the
19332 record that is requested.
19334 2023-03-28 Richard Biener <rguenther@suse.de>
19336 PR tree-optimization/107087
19337 * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
19338 executable regions to avoid useless work and to better
19339 propagate degenerate PHIs.
19341 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
19343 * config/i386/x-mingw32-utf8: update comments.
19345 2023-03-28 Richard Sandiford <richard.sandiford@arm.com>
19348 * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
19349 * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
19351 * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
19353 (aarch64_general_gimple_fold_builtin): Delay folding of vld1 until
19354 after inlining. Record which decls are loaded from. Fix handling
19355 of vops for loads and stores.
19356 * config/aarch64/aarch64.cc (aarch64_vector_load_decl): New function.
19357 (aarch64_accesses_vector_load_decl_p): Likewise.
19358 (aarch64_vector_costs::m_stores_to_vector_load_decl): New member
19360 (aarch64_vector_costs::add_stmt_cost): If the function has a vld1
19361 that loads from a decl, treat vector stores to those decls as
19363 (aarch64_vector_costs::finish_cost): ...and in that case,
19364 if the vector code does nothing more than a store, give the
19365 prologue a zero cost as well.
19367 2023-03-28 Richard Biener <rguenther@suse.de>
19370 PR tree-optimization/108129
19371 * genmatch.cc (lower_for): For (match ...) delay
19372 substituting into the match operator if possible.
19373 (dt_operand::gen_gimple_expr): For user_id look at the
19374 first substitute for determining how to access operands.
19375 (dt_operand::gen_generic_expr): Likewise.
19376 (dt_node::gen_kids): Properly sort user_ids according
19377 to their substitutes.
19378 (dt_node::gen_kids_1): Code-generate user_id matching.
19380 2023-03-28 Jakub Jelinek <jakub@redhat.com>
19381 Jonathan Wakely <jwakely@redhat.com>
19383 * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
19384 Use subcommand rather than sub-command in function comments.
19386 2023-03-28 Jakub Jelinek <jakub@redhat.com>
19388 PR tree-optimization/109154
19389 * value-range.h (frange::flush_denormals_to_zero): Make it public
19390 rather than private.
19391 * value-range.cc (frange::set): Don't call flush_denormals_to_zero
19393 * range-op-float.cc (range_operator_float::fold_range): Call
19394 flush_denormals_to_zero.
19396 2023-03-28 Jakub Jelinek <jakub@redhat.com>
19398 PR middle-end/106190
19399 * sanopt.cc (pass_sanopt::execute): Return TODO_cleanup_cfg if any
19400 of the IFN_{UB,HWA,A}SAN_* internal fns are lowered.
19402 2023-03-28 Jakub Jelinek <jakub@redhat.com>
19404 * range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state
19405 as 4th argument to set to avoid clear_nan and union_ calls.
19407 2023-03-28 Jakub Jelinek <jakub@redhat.com>
19410 * config/i386/i386.cc (assign_386_stack_local): For DImode
19411 with SLOT_FLOATxFDI_387 and -m32 -mpreferred-stack-boundary=2 pass
19412 align 32 rather than 0 to assign_stack_local.
19414 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
19417 * config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition
19418 on operand #3 to get the final condition code. Use std::swap.
19419 * config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander.
19420 (fucmp<gcond:code>8<P:mode>_vis): Move around.
19421 (fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise.
19422 (vcondu<GCM:mode><GCM:mode>): New VIS 4 expander.
19424 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
19426 * doc/gm2.texi: Add missing Next, Previous and Top fields to most
19427 top-level sections.
19429 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
19431 * config.host: Pull in i386/x-mingw32-utf8 Makefile
19432 fragment and reference utf8rc-mingw32.o explicitly
19434 * config/i386/sym-mingw32.cc: prevent name mangling of
19436 * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
19437 depend on manifest file explicitly.
19439 2023-03-28 Richard Biener <rguenther@suse.de>
19442 2023-03-27 Richard Biener <rguenther@suse.de>
19444 PR rtl-optimization/109237
19445 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
19447 2023-03-28 Richard Biener <rguenther@suse.de>
19449 * common.opt (gdwarf): Remove Negative(gdwarf-).
19451 2023-03-28 Richard Biener <rguenther@suse.de>
19453 * common.opt (gdwarf): Add RejectNegative.
19454 (gdwarf-): Likewise.
19458 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
19460 * config/cris/constraints.md ("T"): Correct to
19461 define_memory_constraint.
19463 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
19465 * config/cris/cris.md (BW2): New mode-iterator.
19466 (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
19469 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
19471 * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
19472 for possible eliminable compares.
19474 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
19476 * config/cris/constraints.md ("R"): Remove unused constraint.
19478 2023-03-27 Jonathan Wakely <jwakely@redhat.com>
19480 PR gcov-profile/109297
19481 * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
19482 (merge_stream_usage): Likewise.
19483 (overlap_usage): Likewise.
19485 2023-03-27 Christoph Müllner <christoph.muellner@vrull.eu>
19488 * config/riscv/thead.md: Add missing mode specifiers.
19490 2023-03-27 Philipp Tomsich <philipp.tomsich@vrull.eu>
19491 Jiangning Liu <jiangning.liu@amperecomputing.com>
19492 Manolis Tsamis <manolis.tsamis@vrull.eu>
19494 * config/aarch64/aarch64.cc: Update vector costs for ampere1.
19496 2023-03-27 Richard Biener <rguenther@suse.de>
19498 PR rtl-optimization/109237
19499 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
19501 2023-03-27 Richard Biener <rguenther@suse.de>
19504 * lto-wrapper.cc (run_gcc): Parse alternate debug options
19505 as well, they always enable debug.
19507 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
19510 * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
19512 (_mm_slli_si128): ... here. Change to call _mm_bslli_si128 directly.
19514 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
19517 * config/rs6000/emmintrin.h (_mm_bslli_si128): Check __N is not less
19518 than zero when calling vec_sld.
19519 (_mm_bsrli_si128): Return __A if __N is zero, check __N is bigger than
19520 zero when calling vec_sld.
19521 (_mm_slli_si128): Return __A if _imm5 is zero, check _imm5 is bigger
19522 than zero when calling vec_sld.
19524 2023-03-27 Sandra Loosemore <sandra@codesourcery.com>
19526 * doc/generic.texi (OpenMP): Document OMP_SIMD, OMP_DISTRIBUTE,
19527 OMP_TASKLOOP, and OMP_LOOP with OMP_FOR. Document how collapsed
19528 loops are represented and which fields are vectors. Add
19529 documentation for OMP_FOR_PRE_BODY field. Document internal
19530 form of non-rectangular loops and OMP_FOR_NON_RECTANGULAR.
19531 * tree.def (OMP_FOR): Make documentation consistent with the
19532 Texinfo manual, to fill some gaps and correct errors.
19534 2023-03-26 Andreas Schwab <schwab@linux-m68k.org>
19537 * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
19538 * config/m68k/m68k.cc (m68k_final_prescan_insn): Define.
19539 (handle_move_double): Call it before handle_movsi.
19540 * config/m68k/m68k-protos.h: Declare it.
19542 2023-03-26 Jakub Jelinek <jakub@redhat.com>
19544 PR tree-optimization/109230
19545 * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
19547 2023-03-26 Jakub Jelinek <jakub@redhat.com>
19550 * predict.cc (compute_function_frequency): Don't call
19551 warn_function_cold if function already has cold attribute.
19553 2023-03-26 Gerald Pfeifer <gerald@pfeifer.com>
19555 * doc/install.texi: Remove anachronistic note
19556 related to languages built and separate source tarballs.
19558 2023-03-25 David Malcolm <dmalcolm@redhat.com>
19561 * diagnostic-format-sarif.cc (read_until_eof): Delete.
19562 (maybe_read_file): Delete.
19563 (sarif_builder::maybe_make_artifact_content_object): Use
19564 get_source_file_content rather than maybe_read_file.
19565 Reject it if it's not valid UTF-8.
19566 * input.cc (file_cache_slot::get_full_file_content): New.
19567 (get_source_file_content): New.
19568 (selftest::check_cpp_valid_utf8_p): New.
19569 (selftest::test_cpp_valid_utf8_p): New.
19570 (selftest::input_cc_tests): Call selftest::test_cpp_valid_utf8_p.
19571 * input.h (get_source_file_content): New prototype.
19573 2023-03-24 David Malcolm <dmalcolm@redhat.com>
19575 * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
19577 (Special Functions for Debugging the Analyzer): Convert to a
19578 table, and rewrite in places.
19579 (Other Debugging Techniques): Add notes on how to compare two
19580 different exploded graphs.
19582 2023-03-24 David Malcolm <dmalcolm@redhat.com>
19585 * json.cc: Update comments to indicate that we now preserve
19586 insertion order of keys within objects.
19587 (object::print): Traverse keys in insertion order.
19588 (object::set): Preserve insertion order of keys.
19589 (selftest::test_writing_objects): Add an additional key to verify
19590 that we preserve insertion order.
19591 * json.h (object::m_keys): New field.
19593 2023-03-24 Andrew MacLeod <amacleod@redhat.com>
19595 PR tree-optimization/109238
19596 * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
19597 predecessors which this block dominates.
19599 2023-03-24 Richard Biener <rguenther@suse.de>
19601 PR tree-optimization/106912
19602 * tree-profile.cc (tree_profiling): Update stmts only when
19603 profiling or testing coverage. Make sure to update calls
19604 fntype, stripping 'const' there.
19606 2023-03-24 Jakub Jelinek <jakub@redhat.com>
19608 PR middle-end/109258
19609 * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
19610 if target == const0_rtx.
19612 2023-03-24 Alexandre Oliva <oliva@adacore.com>
19614 * doc/sourcebuild.texi (weak_undefined, posix_memalign):
19615 Document options and effective targets.
19617 2023-03-24 Costas Argyris <costas.argyris@gmail.com>
19619 * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
19622 2023-03-23 Pat Haugen <pthaugen@linux.ibm.com>
19624 * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
19625 non-earlyclobber alternative.
19627 2023-03-23 Andrew Pinski <apinski@marvell.com>
19630 * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
19633 2023-03-23 Richard Biener <rguenther@suse.de>
19635 PR tree-optimization/107569
19636 * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
19637 Do not push SSA names with zero uses as available leader.
19638 (process_bb): Likewise.
19640 2023-03-23 Richard Biener <rguenther@suse.de>
19642 PR tree-optimization/109262
19643 * tree-ssa-forwprop.cc (pass_forwprop::execute): When
19644 combining a piecewise complex load avoid touching loads
19645 that throw internally. Use fun, not cfun throughout.
19647 2023-03-23 Jakub Jelinek <jakub@redhat.com>
19649 * value-range.cc (irange::irange_union, irange::intersect): Fix
19650 comment spelling bugs.
19651 * gimple-range-trace.cc (range_tracer::do_header): Likewise.
19652 * gimple-range-trace.h: Likewise.
19653 * gimple-range-edge.cc: Likewise.
19654 (gimple_outgoing_range_stmt_p,
19655 gimple_outgoing_range::switch_edge_range,
19656 gimple_outgoing_range::edge_range_p): Likewise.
19657 * gimple-range.cc (gimple_ranger::prefill_stmt_dependencies,
19658 gimple_ranger::fold_stmt, gimple_ranger::register_transitive_infer,
19659 assume_query::assume_query, assume_query::calculate_phi): Likewise.
19660 * gimple-range-edge.h: Likewise.
19661 * value-range.h (Value_Range::set, Value_Range::lower_bound,
19662 Value_Range::upper_bound, frange::set_undefined): Likewise.
19663 * gimple-range-gori.h (range_def_chain::depend, gori_map::m_outgoing,
19664 gori_compute): Likewise.
19665 * gimple-range-fold.h (fold_using_range): Likewise.
19666 * gimple-range-path.cc (path_range_query::compute_ranges_in_phis):
19668 * gimple-range-gori.cc (range_def_chain::in_chain_p,
19669 range_def_chain::dump, gori_map::calculate_gori,
19670 gori_compute::compute_operand_range_switch,
19671 gori_compute::logical_combine, gori_compute::refine_using_relation,
19672 gori_compute::compute_operand1_range, gori_compute::may_recompute_p):
19674 * gimple-range.h: Likewise.
19675 (enable_ranger): Likewise.
19676 * range-op.h (empty_range_varying): Likewise.
19677 * value-query.h (value_query): Likewise.
19678 * gimple-range-cache.cc (block_range_cache::set_bb_range,
19679 block_range_cache::dump, ssa_global_cache::clear_global_range,
19680 temporal_cache::temporal_value, temporal_cache::current_p,
19681 ranger_cache::range_of_def, ranger_cache::propagate_updated_value,
19682 ranger_cache::range_from_dom, ranger_cache::register_inferred_value):
19684 * gimple-range-fold.cc (fur_edge::get_phi_operand,
19685 fur_stmt::get_operand, gimple_range_adjustment,
19686 fold_using_range::range_of_phi,
19687 fold_using_range::relation_fold_and_or): Likewise.
19688 * value-range-storage.h (irange_storage_slot::MAX_INTS): Likewise.
19689 * value-query.cc (range_query::value_of_expr,
19690 range_query::value_on_edge, range_query::query_relation): Likewise.
19691 * tree-vrp.cc (remove_unreachable::remove_and_update_globals,
19692 intersect_range_with_nonzero_bits): Likewise.
19693 * gimple-range-infer.cc (gimple_infer_range::check_assume_func,
19694 exit_range): Likewise.
19695 * value-relation.h: Likewise.
19696 (equiv_oracle, relation_trio::relation_trio, value_relation,
19697 value_relation::value_relation, pe_min): Likewise.
19698 * range-op-float.cc (range_operator_float::rv_fold,
19699 frange_arithmetic, foperator_unordered_equal::op1_range,
19700 foperator_div::rv_fold): Likewise.
19701 * gimple-range-op.cc (cfn_clz::fold_range): Likewise.
19702 * value-relation.cc (equiv_oracle::query_relation,
19703 equiv_oracle::register_equiv, equiv_oracle::add_equiv_to_block,
19704 value_relation::apply_transitive, relation_chain_head::find_relation,
19705 dom_oracle::query_relation, dom_oracle::find_relation_block,
19706 dom_oracle::find_relation_dom, path_oracle::register_equiv): Likewise.
19707 * range-op.cc (range_operator::wi_fold_in_parts_equiv,
19708 create_possibly_reversed_range, adjust_op1_for_overflow,
19709 operator_mult::wi_fold, operator_exact_divide::op1_range,
19710 operator_cast::lhs_op1_relation, operator_cast::fold_pair,
19711 operator_cast::fold_range, operator_abs::wi_fold, range_op_cast_tests,
19712 range_op_lshift_tests): Likewise.
19714 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
19716 * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
19717 (move_callee_saved_registers): Detect the bug condition early.
19719 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
19721 * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
19722 * config/gcn/gcn-valu.md (V_1REG_ALT): New.
19724 (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): New.
19725 (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): New.
19726 (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Use new patterns.
19727 * config/gcn/gcn.cc (gcn_stepped_zero_int_parallel_p): New.
19728 * config/gcn/predicates.md (ascending_zero_int_parallel): New.
19730 2023-03-23 Jakub Jelinek <jakub@redhat.com>
19732 PR tree-optimization/109176
19733 * tree-vect-generic.cc (expand_vector_condition): If a has
19734 vector boolean type and is a comparison, also check if both
19735 the comparison and VEC_COND_EXPR could be successfully expanded
19738 2023-03-23 Pan Li <pan2.li@intel.com>
19739 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19743 * config/riscv/riscv-modes.def (ADJUST_BYTESIZE): Adjust size
19744 for vector mask modes.
19745 * config/riscv/riscv.cc (riscv_v_adjust_bytesize): New.
19746 * config/riscv/riscv.h (riscv_v_adjust_bytesize): New.
19748 2023-03-23 Songhe Zhu <zhusonghe@eswincomputing.com>
19750 * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
19752 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19755 * config/riscv/riscv-protos.h (emit_vlmax_vsetvl): Define as global.
19756 (emit_vlmax_op): Ditto.
19757 * config/riscv/riscv-v.cc (get_sew): New function.
19758 (emit_vlmax_vsetvl): Adapt function.
19759 (emit_pred_op): Ditto.
19760 (emit_vlmax_op): Ditto.
19761 (emit_nonvlmax_op): Ditto.
19762 (legitimize_move): Fix LRA ICE.
19763 (gen_no_side_effects_vsetvl_rtx): Adapt function.
19764 * config/riscv/vector.md (@mov<V_FRACT:mode><P:mode>_lra): New pattern.
19765 (@mov<VB:mode><P:mode>_lra): Ditto.
19766 (*mov<V_FRACT:mode><P:mode>_lra): Ditto.
19767 (*mov<VB:mode><P:mode>_lra): Ditto.
19769 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19772 * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
19773 __riscv_vlenb support.
19775 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
19776 * config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto.
19777 * config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto.
19779 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
19780 * config/riscv/riscv-vector-builtins.cc: Ditto.
19782 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19783 kito-cheng <kito.cheng@sifive.com>
19785 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs.
19786 (pass_vsetvl::compute_local_backward_infos): Fix bugs.
19787 (pass_vsetvl::need_vsetvl): Fix bugs.
19788 (pass_vsetvl::backward_demand_fusion): Fix bugs.
19789 (pass_vsetvl::demand_fusion): Fix bugs.
19790 (eliminate_insn): Fix bugs.
19791 (insert_vsetvl): Ditto.
19792 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
19793 * config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto.
19794 * config/riscv/vector.md: Ditto.
19796 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19797 kito-cheng <kito.cheng@sifive.com>
19799 * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
19800 * config/riscv/vector-iterators.md (nmsac): Ditto.
19806 * config/riscv/vector.md (@pred_mul_<optab><mode>): Ditto.
19807 (@pred_mul_plus<mode>): Ditto.
19808 (*pred_madd<mode>): Ditto.
19809 (*pred_macc<mode>): Ditto.
19810 (*pred_mul_plus<mode>): Ditto.
19811 (@pred_mul_plus<mode>_scalar): Ditto.
19812 (*pred_madd<mode>_scalar): Ditto.
19813 (*pred_macc<mode>_scalar): Ditto.
19814 (*pred_mul_plus<mode>_scalar): Ditto.
19815 (*pred_madd<mode>_extended_scalar): Ditto.
19816 (*pred_macc<mode>_extended_scalar): Ditto.
19817 (*pred_mul_plus<mode>_extended_scalar): Ditto.
19818 (@pred_minus_mul<mode>): Ditto.
19819 (*pred_<madd_nmsub><mode>): Ditto.
19820 (*pred_nmsub<mode>): Ditto.
19821 (*pred_<macc_nmsac><mode>): Ditto.
19822 (*pred_nmsac<mode>): Ditto.
19823 (*pred_mul_<optab><mode>): Ditto.
19824 (*pred_minus_mul<mode>): Ditto.
19825 (@pred_mul_<optab><mode>_scalar): Ditto.
19826 (@pred_minus_mul<mode>_scalar): Ditto.
19827 (*pred_<madd_nmsub><mode>_scalar): Ditto.
19828 (*pred_nmsub<mode>_scalar): Ditto.
19829 (*pred_<macc_nmsac><mode>_scalar): Ditto.
19830 (*pred_nmsac<mode>_scalar): Ditto.
19831 (*pred_mul_<optab><mode>_scalar): Ditto.
19832 (*pred_minus_mul<mode>_scalar): Ditto.
19833 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
19834 (*pred_nmsub<mode>_extended_scalar): Ditto.
19835 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
19836 (*pred_nmsac<mode>_extended_scalar): Ditto.
19837 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
19838 (*pred_minus_mul<mode>_extended_scalar): Ditto.
19839 (*pred_<madd_msub><mode>): Ditto.
19840 (*pred_<macc_msac><mode>): Ditto.
19841 (*pred_<madd_msub><mode>_scalar): Ditto.
19842 (*pred_<macc_msac><mode>_scalar): Ditto.
19843 (@pred_neg_mul_<optab><mode>): Ditto.
19844 (@pred_mul_neg_<optab><mode>): Ditto.
19845 (*pred_<nmadd_msub><mode>): Ditto.
19846 (*pred_<nmsub_nmadd><mode>): Ditto.
19847 (*pred_<nmacc_msac><mode>): Ditto.
19848 (*pred_<nmsac_nmacc><mode>): Ditto.
19849 (*pred_neg_mul_<optab><mode>): Ditto.
19850 (*pred_mul_neg_<optab><mode>): Ditto.
19851 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
19852 (@pred_mul_neg_<optab><mode>_scalar): Ditto.
19853 (*pred_<nmadd_msub><mode>_scalar): Ditto.
19854 (*pred_<nmsub_nmadd><mode>_scalar): Ditto.
19855 (*pred_<nmacc_msac><mode>_scalar): Ditto.
19856 (*pred_<nmsac_nmacc><mode>_scalar): Ditto.
19857 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
19858 (*pred_mul_neg_<optab><mode>_scalar): Ditto.
19859 (@pred_widen_neg_mul_<optab><mode>): Ditto.
19860 (@pred_widen_mul_neg_<optab><mode>): Ditto.
19861 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
19862 (@pred_widen_mul_neg_<optab><mode>_scalar): Ditto.
19864 2023-03-23 liuhongt <hongtao.liu@intel.com>
19866 * builtins.cc (builtin_memset_read_str): Replace
19867 targetm.gen_memset_scratch_rtx with gen_reg_rtx.
19868 (builtin_memset_gen_str): Ditto.
19869 * config/i386/i386-expand.cc
19870 (ix86_convert_const_wide_int_to_broadcast): Replace
19871 ix86_gen_scratch_sse_rtx with gen_reg_rtx.
19872 (ix86_expand_vector_move): Ditto.
19873 * config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx):
19875 * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed.
19876 (TARGET_GEN_MEMSET_SCRATCH_RTX): Removed.
19877 * doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX.
19878 * doc/tm.texi.in: Ditto.
19879 * target.def: Ditto.
19881 2023-03-22 Vladimir N. Makarov <vmakarov@redhat.com>
19883 * lra.cc (lra): Do not repeat inheritance and live range splitting
19884 when asm error is found.
19886 2023-03-22 Andrew Jenner <andrew@codesourcery.com>
19888 * config/gcn/gcn-protos.h (gcn_expand_dpp_swap_pairs_insn)
19889 (gcn_expand_dpp_distribute_even_insn)
19890 (gcn_expand_dpp_distribute_odd_insn): Declare.
19891 * config/gcn/gcn-valu.md (@dpp_swap_pairs<mode>)
19892 (@dpp_distribute_even<mode>, @dpp_distribute_odd<mode>)
19893 (cmul<conj_op><mode>3, cml<addsub_as><mode>4, vec_addsub<mode>3)
19894 (cadd<rot><mode>3, vec_fmaddsub<mode>4, vec_fmsubadd<mode>4)
19895 (fms<mode>4<exec>, fms<mode>4_negop2<exec>, fms<mode>4)
19896 (fms<mode>4_negop2): New patterns.
19897 * config/gcn/gcn.cc (gcn_expand_dpp_swap_pairs_insn)
19898 (gcn_expand_dpp_distribute_even_insn)
19899 (gcn_expand_dpp_distribute_odd_insn): New functions.
19900 * config/gcn/gcn.md: Add entries to unspec enum.
19902 2023-03-22 Aldy Hernandez <aldyh@redhat.com>
19904 PR tree-optimization/109008
19905 * value-range.cc (frange::set): Add nan_state argument.
19906 * value-range.h (class nan_state): New.
19907 (frange::get_nan_state): New.
19909 2023-03-22 Martin Liska <mliska@suse.cz>
19911 * configure: Regenerate.
19913 2023-03-21 Joseph Myers <joseph@codesourcery.com>
19915 * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
19918 2023-03-21 Andrew MacLeod <amacleod@redhat.com>
19920 PR tree-optimization/109192
19921 * gimple-range-gori.cc (gori_compute::compute_operand_range):
19922 Terminate gori calculations if a relation is not relevant.
19923 * value-relation.h (value_relation::set_relation): Allow
19924 equality between op1 and op2 if they are the same.
19926 2023-03-21 Richard Biener <rguenther@suse.de>
19928 PR tree-optimization/109219
19929 * tree-vect-loop.cc (vectorizable_reduction): Check
19930 slp_node, not STMT_SLP_TYPE.
19931 * tree-vect-stmts.cc (vectorizable_condition): Likewise.
19932 * tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
19933 Remove assertion on STMT_SLP_TYPE.
19935 2023-03-21 Jakub Jelinek <jakub@redhat.com>
19937 PR tree-optimization/109215
19938 * tree.h (enum special_array_member): Adjust comments for int_0
19940 * tree.cc (component_ref_sam_type): Clear zero_elts if memtype
19941 has zero sized element type and the array has variable number of
19942 elements or constant one or more elements.
19943 (component_ref_size): Adjust comments, formatting fix.
19945 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
19947 * configure.ac: Add check for the Texinfo 6.8
19948 CONTENTS_OUTPUT_LOCATION customization variable and set it if
19950 * configure: Regenerate.
19951 * Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable. Set by
19952 configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
19953 CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
19954 ($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
19956 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
19958 * doc/extend.texi: Associate use_hazard_barrier_return index
19959 entry with its attribute.
19960 * doc/invoke.texi: Associate -fcanon-prefix-map index entry with
19963 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
19965 * doc/implement-c.texi: Remove usage of @gol.
19966 * doc/invoke.texi: Ditto.
19967 * doc/sourcebuild.texi: Ditto.
19968 * doc/include/gcc-common.texi: Remove @gol. In new Makeinfo and
19969 texinfo.tex versions, the bug it was working around appears to
19972 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
19974 * doc/include/texinfo.tex: Update to 2023-01-17.19.
19976 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
19978 * doc/include/gcc-common.texi: Add @defbuiltin{,x} and
19979 @enddefbuiltin for defining built-in functions.
19980 * doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
19981 places where it should be used.
19983 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
19985 * doc/extend.texi (Formatted Output Function Checking): New
19986 subsection for grouping together printf et al.
19987 (Exception handling) Fix missing @ sign before copyright
19988 header, which lead to the copyright line leaking into
19989 '(gcc)Exception handling'.
19990 * doc/gcc.texi: Set document language to en_US.
19991 (@copying): Wrap front cover texts in quotations, move in manual
19994 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
19996 * doc/gcc.texi: Add the Indices appendix, to make texinfo
19997 generate nice indices overview page.
19999 2023-03-21 Richard Biener <rguenther@suse.de>
20001 PR tree-optimization/109170
20002 * gimple-range-op.cc (cfn_pass_through_arg1): New.
20003 (gimple_range_op_handler::maybe_builtin_call): Handle
20004 __builtin_expect via cfn_pass_through_arg1.
20006 2023-03-20 Michael Meissner <meissner@linux.ibm.com>
20009 * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
20010 (init_float128_ieee): Delete code to switch complex multiply and divide
20012 (complex_multiply_builtin_code): New helper function.
20013 (complex_divide_builtin_code): Likewise.
20014 (rs6000_mangle_decl_assembler_name): Add support for mangling the name
20015 of complex 128-bit multiply and divide built-in functions.
20017 2023-03-20 Peter Bergner <bergner@linux.ibm.com>
20020 * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
20022 2023-03-19 Jonny Grant <jg@jguk.org>
20024 * doc/extend.texi (Common Function Attributes) <nonnull>:
20027 2023-03-18 Peter Bergner <bergner@linux.ibm.com>
20029 PR rtl-optimization/109179
20030 * lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug
20031 insn or note. Move the tests earlier to guard lra_get_insn_recog_data.
20033 2023-03-17 Jakub Jelinek <jakub@redhat.com>
20036 * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
20038 * function.cc (push_struct_function): Add ABSTRACT_P argument, pass it
20039 to allocate_struct_function instead of false.
20040 * tree-inline.cc (initialize_cfun): Don't copy DECL_ARGUMENTS
20041 nor DECL_RESULT here. Pass true as ABSTRACT_P to
20042 push_struct_function. Call targetm.target_option.relayout_function
20044 (tree_function_versioning): Formatting fix.
20046 2023-03-17 Vladimir N. Makarov <vmakarov@redhat.com>
20048 * lra-constraints.cc: Include hooks.h.
20049 (combine_reload_insn): New function.
20050 (lra_constraints): Call it.
20052 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20053 kito-cheng <kito.cheng@sifive.com>
20055 * config/riscv/riscv-v.cc (legitimize_move): Allow undef value
20056 as legitimate value.
20057 * config/riscv/riscv-vector-builtins.cc
20058 (function_expander::use_ternop_insn): Fix bugs of ternary intrinsic.
20059 (function_expander::use_widen_ternop_insn): Ditto.
20060 * config/riscv/vector.md (@vundefined<mode>): New pattern.
20061 (pred_mul_<optab><mode>_undef_merge): Remove.
20062 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
20063 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
20064 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
20065 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
20067 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20070 * config/riscv/riscv.md: Fix subreg bug.
20072 2023-03-17 Jakub Jelinek <jakub@redhat.com>
20074 PR middle-end/108685
20075 * omp-expand.cc (expand_omp_for_ordered_loops): Add L0_BB argument,
20076 use its loop_father rather than BODY_BB's loop_father.
20077 (expand_omp_for_generic): Adjust expand_omp_for_ordered_loops caller.
20078 If broken_loop with ordered > collapse and at least one of those
20079 extra loops aren't guaranteed to have at least one iteration, change
20080 l0_bb's loop_father to entry_bb's loop_father. Set cont_bb's
20081 loop_father to l0_bb's loop_father rather than l1_bb's.
20083 2023-03-17 Jakub Jelinek <jakub@redhat.com>
20086 * gdbhooks.py (TreePrinter.to_string): Wrap
20087 gdb.parse_and_eval('tree_code_type') in a try block, parse
20088 and eval 'tree_code_type_tmpl<0>::tree_code_type' instead if it
20089 raises exception. Update comments for the recent tree_code_type
20092 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
20094 * doc/extend.texi (BPF Built-in Functions): Fix numerous markup
20095 issues. Add more line breaks to example so it doesn't overflow
20098 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
20100 * doc/extend.texi (Common Function Attributes) <access>: Fix bad
20101 line breaks in examples.
20102 <malloc>: Fix bad line breaks in running text, also copy-edit
20104 (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
20105 * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
20107 (C++ Dialect Options) <-fcontracts>: Add line break in example.
20108 <-Wctad-maybe-unsupported>: Likewise.
20109 <-Winvalid-constexpr>: Likewise.
20110 (Warning Options) <-Wdangling-pointer>: Likewise.
20111 <-Winterference-size>: Likewise.
20112 <-Wvla-parameter>: Likewise.
20113 (Static Analyzer Options): Fix bad line breaks in running text,
20114 plus add some missing markup.
20115 (Optimize Options) <openacc-privatization>: Fix more bad line
20116 breaks in running text.
20118 2023-03-16 Uros Bizjak <ubizjak@gmail.com>
20120 * config/i386/i386-expand.cc (expand_vec_perm_pblendv):
20121 Handle 8-byte modes only with TARGET_MMX_WITH_SSE.
20122 (expand_vec_perm_2perm_pblendv): Ditto.
20124 2023-03-16 Martin Liska <mliska@suse.cz>
20126 PR middle-end/106133
20127 * gcc.cc (driver_handle_option): Use x_main_input_basename
20128 if x_dump_base_name is null.
20129 * opts.cc (common_handle_option): Likewise.
20131 2023-03-16 Richard Biener <rguenther@suse.de>
20133 PR tree-optimization/109123
20134 * gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
20135 Do not emit -Wuse-after-free late.
20136 (pass_waccess::check_call): Always check call pointer uses.
20138 2023-03-16 Richard Biener <rguenther@suse.de>
20140 PR tree-optimization/109141
20141 * tree-dfa.h (renumber_gimple_stmt_uids_in_block): New.
20142 * tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split
20144 (renumber_gimple_stmt_uids): ... here and
20145 (renumber_gimple_stmt_uids_in_blocks): ... here.
20146 * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p):
20147 Use renumber_gimple_stmt_uids_in_block to also assign UIDs
20149 (pass_waccess::check_pointer_uses): Process all PHIs.
20151 2023-03-15 David Malcolm <dmalcolm@redhat.com>
20154 * diagnostic-format-sarif.cc (class sarif_invocation): New.
20155 (class sarif_ice_notification): New.
20156 (sarif_builder::m_invocation_obj): New field.
20157 (sarif_invocation::add_notification_for_ice): New.
20158 (sarif_invocation::prepare_to_flush): New.
20159 (sarif_ice_notification::sarif_ice_notification): New.
20160 (sarif_builder::sarif_builder): Add m_invocation_obj.
20161 (sarif_builder::end_diagnostic): Special-case DK_ICE and
20163 (sarif_builder::flush_to_file): Call prepare_to_flush on
20164 m_invocation_obj. Pass the latter to make_top_level_object.
20165 (sarif_builder::make_result_object): Move creation of "locations"
20167 (sarif_builder::make_locations_arr): ...this new function.
20168 (sarif_builder::make_top_level_object): Add "invocation_obj" param
20169 and pass it to make_run_object.
20170 (sarif_builder::make_run_object): Add "invocation_obj" param and
20172 (sarif_ice_handler): New callback.
20173 (diagnostic_output_format_init_sarif): Wire up sarif_ice_handler.
20174 * diagnostic.cc (diagnostic_initialize): Initialize new field
20176 (diagnostic_action_after_output): If it is set, make one attempt
20177 to call ice_handler_cb.
20178 * diagnostic.h (diagnostic_context::ice_handler_cb): New field.
20180 2023-03-15 Uros Bizjak <ubizjak@gmail.com>
20182 * config/i386/i386-expand.cc (expand_vec_perm_blend):
20183 Handle 8-byte modes only with TARGET_MMX_WITH_SSE. Handle V2SFmode
20184 and fix V2HImode handling.
20185 (expand_vec_perm_1): Try to emit BLEND instruction
20186 before MOVSS/MOVSD.
20187 * config/i386/mmx.md (*mmx_blendps): New insn pattern.
20189 2023-03-15 Tobias Burnus <tobias@codesourcery.com>
20191 * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
20193 2023-03-15 Richard Biener <rguenther@suse.de>
20195 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
20196 Do not diagnose clobbers.
20198 2023-03-15 Richard Biener <rguenther@suse.de>
20200 PR tree-optimization/109139
20201 * tree-ssa-live.cc (remove_unused_locals): Look at the
20202 base address for unused decls on the LHS of .DEFERRED_INIT.
20204 2023-03-15 Xi Ruoyao <xry111@xry111.site>
20207 * builtins.cc (inline_string_cmp): Force the character
20208 difference into "result" pseudo-register, instead of reassign
20209 the pseudo-register.
20211 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
20213 * config.gcc: Add thead.o to RISC-V extra_objs.
20214 * config/riscv/peephole.md: Add mempair peephole passes.
20215 * config/riscv/riscv-protos.h (riscv_split_64bit_move_p): New
20217 (th_mempair_operands_p): Likewise.
20218 (th_mempair_order_operands): Likewise.
20219 (th_mempair_prepare_save_restore_operands): Likewise.
20220 (th_mempair_save_restore_regs): Likewise.
20221 (th_mempair_output_move): Likewise.
20222 * config/riscv/riscv.cc (riscv_save_reg): Move code.
20223 (riscv_restore_reg): Move code.
20224 (riscv_for_each_saved_reg): Add code to emit mempair insns.
20225 * config/riscv/t-riscv: Add thead.cc.
20226 * config/riscv/thead.md (*th_mempair_load_<GPR:mode>2):
20228 (*th_mempair_store_<GPR:mode>2): Likewise.
20229 (*th_mempair_load_extendsidi2): Likewise.
20230 (*th_mempair_load_zero_extendsidi2): Likewise.
20231 * config/riscv/thead.cc: New file.
20233 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
20235 * config/riscv/constraints.md (TARGET_XTHEADFMV ? FP_REGS : NO_REGS)
20236 New constraint "th_f_fmv".
20237 (TARGET_XTHEADFMV ? GR_REGS : NO_REGS): New constraint
20239 * config/riscv/riscv.cc (riscv_split_doubleword_move):
20240 Add split code for XTheadFmv.
20241 (riscv_secondary_memory_needed): XTheadFmv does not need
20243 * config/riscv/riscv.md: Add new UNSPEC_XTHEADFMV and
20244 UNSPEC_XTHEADFMV_HW. Add support for XTheadFmv to
20245 movdf_hardfloat_rv32.
20246 * config/riscv/thead.md (th_fmv_hw_w_x): New INSN.
20247 (th_fmv_x_w): New INSN.
20248 (th_fmv_x_hw): New INSN.
20250 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
20252 * config/riscv/riscv.md (maddhisi4): New expand.
20253 (msubhisi4): New expand.
20254 * config/riscv/thead.md (*th_mula<mode>): New pattern.
20255 (*th_mulawsi): New pattern.
20256 (*th_mulawsi2): New pattern.
20257 (*th_maddhisi4): New pattern.
20258 (*th_sextw_maddhisi4): New pattern.
20259 (*th_muls<mode>): New pattern.
20260 (*th_mulswsi): New pattern.
20261 (*th_mulswsi2): New pattern.
20262 (*th_msubhisi4): New pattern.
20263 (*th_sextw_msubhisi4): New pattern.
20265 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
20267 * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
20268 * config/riscv/riscv-protos.h (riscv_expand_conditional_move):
20270 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
20272 (riscv_expand_conditional_move): New function.
20273 (riscv_expand_conditional_move_onesided): New function.
20274 * config/riscv/riscv.md: Add support for XTheadCondMov.
20275 * config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add
20276 support for XTheadCondMov.
20277 (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise.
20279 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
20281 * config/riscv/bitmanip.md (clzdi2): New expand.
20282 (clzsi2): New expand.
20283 (ctz<mode>2): New expand.
20284 (popcount<mode>2): New expand.
20285 (<bitmanip_optab>si2): Rename INSN.
20286 (*<bitmanip_optab>si2): Hide INSN name.
20287 (<bitmanip_optab>di2): Rename INSN.
20288 (*<bitmanip_optab>di2): Hide INSN name.
20289 (rotrsi3): Remove INSN.
20290 (rotr<mode>3): Add expand.
20291 (*rotrsi3): New INSN.
20292 (rotrdi3): Rename INSN.
20293 (*rotrdi3): Hide INSN name.
20294 (rotrsi3_sext): Rename INSN.
20295 (*rotrsi3_sext): Hide INSN name.
20296 (bswap<mode>2): Remove INSN.
20297 (bswapdi2): Add expand.
20298 (bswapsi2): Add expand.
20299 (*bswap<mode>2): Hide INSN name.
20300 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for sign
20302 * config/riscv/riscv.md (extv<mode>): New expand.
20303 (extzv<mode>): New expand.
20304 * config/riscv/thead.md (*th_srri<mode>3): New INSN.
20305 (*th_ext<mode>): New INSN.
20306 (*th_extu<mode>): New INSN.
20307 (*th_clz<mode>2): New INSN.
20308 (*th_rev<mode>2): New INSN.
20310 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
20312 * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
20313 * config/riscv/thead.md (*th_tst<mode>3): New INSN.
20315 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
20317 * config/riscv/riscv.md: Include thead.md
20318 * config/riscv/thead.md: New file.
20320 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
20322 * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
20324 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
20326 * common/config/riscv/riscv-common.cc: Add xthead* extensions.
20327 * config/riscv/riscv-opts.h (MASK_XTHEADBA): New.
20328 (MASK_XTHEADBB): New.
20329 (MASK_XTHEADBS): New.
20330 (MASK_XTHEADCMO): New.
20331 (MASK_XTHEADCONDMOV): New.
20332 (MASK_XTHEADFMEMIDX): New.
20333 (MASK_XTHEADFMV): New.
20334 (MASK_XTHEADINT): New.
20335 (MASK_XTHEADMAC): New.
20336 (MASK_XTHEADMEMIDX): New.
20337 (MASK_XTHEADMEMPAIR): New.
20338 (MASK_XTHEADSYNC): New.
20339 (TARGET_XTHEADBA): New.
20340 (TARGET_XTHEADBB): New.
20341 (TARGET_XTHEADBS): New.
20342 (TARGET_XTHEADCMO): New.
20343 (TARGET_XTHEADCONDMOV): New.
20344 (TARGET_XTHEADFMEMIDX): New.
20345 (TARGET_XTHEADFMV): New.
20346 (TARGET_XTHEADINT): New.
20347 (TARGET_XTHEADMAC): New.
20348 (TARGET_XTHEADMEMIDX): New.
20349 (TARGET_XTHEADMEMPAIR): new.
20350 (TARGET_XTHEADSYNC): New.
20351 * config/riscv/riscv.opt: Add riscv_xthead_subext.
20353 2023-03-15 Hu, Lin1 <lin1.hu@intel.com>
20356 * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
20357 __builtin_ia32_vaesdeclast_v16qi,__builtin_ia32_vaesenc_v16qi,
20358 __builtin_ia32_vaesenclast_v16qi): Require OPTION_MASK_ISA_AVX512VL.
20360 2023-03-14 Jakub Jelinek <jakub@redhat.com>
20363 * config/i386/i386-expand.cc (split_double_concat): Fix splitting
20364 when lo is equal to dhi and hi is a MEM which uses dlo register.
20366 2023-03-14 Martin Jambor <mjambor@suse.cz>
20369 * ipa-cp.cc (update_profiling_info): Drop counts of orig_node to
20370 global0 instead of zeroing when it does not have as many counts as
20373 2023-03-14 Martin Jambor <mjambor@suse.cz>
20376 * ipa-cp.cc (update_specialized_profile): Drop orig_node_count to
20377 ipa count, remove assert, lenient_count_portion_handling, dump
20378 also orig_node_count.
20380 2023-03-14 Uros Bizjak <ubizjak@gmail.com>
20382 * config/i386/i386-expand.cc (expand_vec_perm_movs):
20383 Handle V2SImode for TARGET_MMX_WITH_SSE.
20384 * config/i386/mmx.md (*mmx_movss_<mode>): Rename from *mmx_movss
20385 using V2FI mode iterator to handle both V2SI and V2SF modes.
20387 2023-03-14 Sam James <sam@gentoo.org>
20389 * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
20390 including <sstream> earlier.
20391 * system.h: Add INCLUDE_SSTREAM.
20393 2023-03-14 Richard Biener <rguenther@suse.de>
20395 * tree-ssa-live.cc (remove_unused_locals): Do not treat
20396 the .DEFERRED_INIT of a variable as use, instead remove
20397 that if it is the only use.
20399 2023-03-14 Eric Botcazou <ebotcazou@adacore.com>
20401 PR rtl-optimization/107762
20402 * expr.cc (emit_group_store): Revert latest change.
20404 2023-03-14 Andre Vieira <andre.simoesdiasvieira@arm.com>
20406 PR tree-optimization/109005
20407 * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
20408 aggregate type check.
20410 2023-03-14 Jakub Jelinek <jakub@redhat.com>
20412 PR tree-optimization/109115
20413 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Don't use
20414 r.upper_bound () on r.undefined_p () range.
20416 2023-03-14 Jan Hubicka <hubicka@ucw.cz>
20418 PR tree-optimization/106896
20419 * profile-count.cc (profile_count::to_sreal_scale): Synchronize
20420 implementatoin with probability_in; avoid some asserts.
20422 2023-03-13 Max Filippov <jcmvbkbc@gmail.com>
20424 * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
20426 2023-03-13 Sean Bright <sean@seanbright.com>
20428 * doc/invoke.texi (Warning Options): Remove errant 'See'
20431 2023-03-13 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
20433 * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
20434 REG_OK_FOR_BASE_P): Remove.
20436 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20438 * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
20439 (=vd,vd,vr,vr): Ditto.
20440 * config/riscv/vector.md: Ditto.
20442 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20444 * config/riscv/riscv-vector-builtins.cc
20445 (function_expander::use_compare_insn): Add operand predicate check.
20447 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20449 * config/riscv/vector.md: Fine tune RA constraints.
20451 2023-03-13 Tobias Burnus <tobias@codesourcery.com>
20453 * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
20454 hsaco assemble/link.
20456 2023-03-13 Richard Biener <rguenther@suse.de>
20458 PR tree-optimization/109046
20459 * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
20460 piecewise complex loads.
20462 2023-03-12 Jakub Jelinek <jakub@redhat.com>
20464 * config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove.
20465 (aarch64_bf16_ptr_type_node): Adjust comment.
20466 * config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use
20467 bfloat16_type_node rather than aarch64_bf16_type_node.
20468 (aarch64_libgcc_floating_mode_supported_p,
20469 aarch64_scalar_mode_supported_p): Also support BFmode.
20470 (aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove.
20471 (aarch64_invalid_binary_op): Remove BFmode related rejections.
20472 (TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine.
20473 * config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove.
20474 (aarch64_int_or_fp_type): Use bfloat16_type_node rather than
20475 aarch64_bf16_type_node.
20476 (aarch64_init_simd_builtin_types): Likewise.
20477 (aarch64_init_bf16_types): Likewise. Don't create bfloat16_type_node,
20478 which is created in tree.cc already.
20479 * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise.
20481 2023-03-12 Roger Sayle <roger@nextmovesoftware.com>
20483 PR middle-end/109031
20484 * tree-chrec.cc (chrec_apply): When folding "{a, +, a} (x-1)",
20485 ensure that the type of x is as wide or wider than the type of a.
20487 2023-03-12 Tamar Christina <tamar.christina@arm.com>
20490 * config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): Remove.
20491 (*bitmask_shift_plus<mode>): New.
20492 * config/aarch64/aarch64-sve2.md (*bitmask_shift_plus<mode>): New.
20493 (@aarch64_bitmask_udiv<mode>3): Remove.
20494 * config/aarch64/aarch64.cc
20495 (aarch64_vectorize_can_special_div_by_constant,
20496 TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Removed.
20497 (TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT,
20498 aarch64_vectorize_preferred_div_as_shifts_over_mult): New.
20500 2023-03-12 Tamar Christina <tamar.christina@arm.com>
20503 * target.def (preferred_div_as_shifts_over_mult): New.
20504 * doc/tm.texi.in: Document it.
20505 * doc/tm.texi: Regenerate.
20506 * targhooks.cc (default_preferred_div_as_shifts_over_mult): New.
20507 * targhooks.h (default_preferred_div_as_shifts_over_mult): New.
20508 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Use it.
20510 2023-03-12 Tamar Christina <tamar.christina@arm.com>
20511 Richard Sandiford <richard.sandiford@arm.com>
20514 * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
20517 2023-03-12 Tamar Christina <tamar.christina@arm.com>
20518 Andrew MacLeod <amacleod@redhat.com>
20521 * gimple-range-op.h (gimple_range_op_handler): Add maybe_non_standard.
20522 * gimple-range-op.cc (gimple_range_op_handler::gimple_range_op_handler):
20524 (gimple_range_op_handler::maybe_non_standard): New.
20525 * range-op.cc (class operator_widen_plus_signed,
20526 operator_widen_plus_signed::wi_fold, class operator_widen_plus_unsigned,
20527 operator_widen_plus_unsigned::wi_fold, class operator_widen_mult_signed,
20528 operator_widen_mult_signed::wi_fold, class operator_widen_mult_unsigned,
20529 operator_widen_mult_unsigned::wi_fold,
20530 ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
20531 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New.
20532 * range-op.h (ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
20533 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New
20535 2023-03-12 Tamar Christina <tamar.christina@arm.com>
20538 * doc/tm.texi (TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Remove.
20539 * doc/tm.texi.in: Likewise.
20540 * explow.cc (round_push, align_dynamic_address): Revert previous patch.
20541 * expmed.cc (expand_divmod): Likewise.
20542 * expmed.h (expand_divmod): Likewise.
20543 * expr.cc (force_operand, expand_expr_divmod): Likewise.
20544 * optabs.cc (expand_doubleword_mod, expand_doubleword_divmod): Likewise.
20545 * target.def (can_special_div_by_const): Remove.
20546 * target.h: Remove tree-core.h include
20547 * targhooks.cc (default_can_special_div_by_const): Remove.
20548 * targhooks.h (default_can_special_div_by_const): Remove.
20549 * tree-vect-generic.cc (expand_vector_operation): Remove hook.
20550 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Remove hook.
20551 * tree-vect-stmts.cc (vectorizable_operation): Remove hook.
20553 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
20555 * doc/install.texi2html: Fix issue number typo in comment.
20557 2023-03-12 Gaius Mulley <gaiusmod2@gmail.com>
20559 * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
20562 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
20564 * doc/invoke.texi (Optimize Options): Add markup to
20565 description of asan-kernel-mem-intrinsic-prefix, and clarify
20568 2023-03-11 Gerald Pfeifer <gerald@pfeifer.com>
20570 * doc/extend.texi (Named Address Spaces): Drop a redundant link
20573 2023-03-11 Jeff Law <jlaw@ventanamicro>
20576 * doc/extend.texi: Clarify Attribute Syntax a bit.
20578 2023-03-11 Sandra Loosemore <sandra@codesourcery.com>
20580 * doc/install.texi (Prerequisites): Suggest using newer versions
20582 (Final install): Clean up and modernize discussion of how to
20583 build or obtain the GCC manuals.
20584 * doc/install.texi2html: Update comment to point to the PR instead
20585 of "makeinfo 4.7 brokenness" (it's not specific to that version).
20587 2023-03-10 Jakub Jelinek <jakub@redhat.com>
20590 * optabs.cc (expand_fix): For conversions from BFmode to integral,
20591 use shifts to convert it to SFmode first and then convert SFmode
20594 2023-03-10 Andrew Pinski <apinski@marvell.com>
20596 * config/aarch64/aarch64.md: Add a new define_split
20599 2023-03-10 Richard Biener <rguenther@suse.de>
20601 * tree-ssa-structalias.cc (solve_graph): Immediately
20602 iterate self-cycles.
20604 2023-03-10 Jakub Jelinek <jakub@redhat.com>
20606 PR tree-optimization/109008
20607 * range-op-float.cc (float_widen_lhs_range): If not
20608 -frounding-math and not IBM double double format, extend lhs
20609 range just by 0.5ulp rather than 1ulp in each direction.
20611 2023-03-10 Jakub Jelinek <jakub@redhat.com>
20614 * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
20616 * config/i386/t-cygwin-w64: Remove.
20618 2023-03-10 Jakub Jelinek <jakub@redhat.com>
20621 * tree-core.h (tree_code_type, tree_code_length): For C++11 or
20622 C++14, don't declare as extern const arrays.
20623 (tree_code_type_tmpl, tree_code_length_tmpl): New types with
20624 static constexpr member arrays for C++11 or C++14.
20625 * tree.h (TREE_CODE_CLASS): For C++11 or C++14 use
20626 tree_code_type_tmpl <0>::tree_code_type instead of tree_code_type.
20627 (TREE_CODE_LENGTH): For C++11 or C++14 use
20628 tree_code_length_tmpl <0>::tree_code_length instead of
20630 * tree.cc (tree_code_type, tree_code_length): Remove.
20632 2023-03-10 Jakub Jelinek <jakub@redhat.com>
20635 * common.opt (fcanon-prefix-map): New option.
20636 * opts.cc: Include file-prefix-map.h.
20637 (flag_canon_prefix_map): New variable.
20638 (common_handle_option): Handle OPT_fcanon_prefix_map.
20639 (gen_command_line_string): Ignore OPT_fcanon_prefix_map.
20640 * file-prefix-map.h (flag_canon_prefix_map): Declare.
20641 * file-prefix-map.cc (struct file_prefix_map): Add canonicalize
20643 (add_prefix_map): Initialize canonicalize member from
20644 flag_canon_prefix_map, and if true canonicalize it using lrealpath.
20645 (remap_filename): Revert 2022-11-01 and 2022-11-07 changes,
20646 use lrealpath result only for map->canonicalize map entries.
20647 * lto-opts.cc (lto_write_options): Ignore OPT_fcanon_prefix_map.
20648 * opts-global.cc (handle_common_deferred_options): Clear
20649 flag_canon_prefix_map at the start and handle OPT_fcanon_prefix_map.
20650 * doc/invoke.texi (-fcanon-prefix-map): Document.
20651 (-ffile-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map): Add
20652 see also for -fcanon-prefix-map.
20653 * doc/cppopts.texi (-fmacro-prefix-map): Likewise.
20655 2023-03-10 Jakub Jelinek <jakub@redhat.com>
20658 * cgraphunit.cc (check_global_declaration): Don't warn for unused
20659 variables which have OPT_Wunused_variable warning suppressed.
20661 2023-03-10 Jakub Jelinek <jakub@redhat.com>
20663 PR tree-optimization/109008
20664 * range-op-float.cc (float_widen_lhs_range): If lb is
20665 minimum representable finite number or ub is maximum
20666 representable finite number, instead of widening it to
20667 -inf or inf widen it to negative or positive 0x0.8p+(EMAX+1).
20668 Temporarily clear flag_finite_math_only when canonicalizing
20671 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20673 * config/riscv/riscv-builtins.cc (riscv_gimple_fold_builtin): New function.
20674 * config/riscv/riscv-protos.h (riscv_gimple_fold_builtin): Ditto.
20675 (gimple_fold_builtin): Ditto.
20676 * config/riscv/riscv-vector-builtins-bases.cc (class read_vl): New class.
20677 (class vleff): Ditto.
20679 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20680 * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
20682 * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
20683 (struct fault_load_def): Ditto.
20685 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
20686 * config/riscv/riscv-vector-builtins.cc
20687 (rvv_arg_type_info::get_tree_type): Add size_ptr.
20688 (gimple_folder::gimple_folder): New class.
20689 (gimple_folder::fold): Ditto.
20690 (gimple_fold_builtin): New function.
20691 (get_read_vl_instance): Ditto.
20692 (get_read_vl_decl): Ditto.
20693 * config/riscv/riscv-vector-builtins.def (size_ptr): Add size_ptr.
20694 * config/riscv/riscv-vector-builtins.h (class gimple_folder): New class.
20695 (get_read_vl_instance): New function.
20696 (get_read_vl_decl): Ditto.
20697 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Ditto.
20698 (read_vl_insn_p): Ditto.
20699 (available_occurrence_p): Ditto.
20700 (backward_propagate_worthwhile_p): Ditto.
20701 (gen_vsetvl_pat): Adapt for vleff support.
20702 (get_forward_read_vl_insn): New function.
20703 (get_backward_fault_first_load_insn): Ditto.
20704 (source_equal_p): Adapt for vleff support.
20705 (first_ratio_invalid_for_second_sew_p): Remove.
20706 (first_ratio_invalid_for_second_lmul_p): Ditto.
20707 (first_lmul_less_than_second_lmul_p): Ditto.
20708 (first_ratio_less_than_second_ratio_p): Ditto.
20709 (support_relaxed_compatible_p): New function.
20710 (vector_insn_info::operator>): Remove.
20711 (vector_insn_info::operator>=): Refine.
20712 (vector_insn_info::parse_insn): Adapt for vleff support.
20713 (vector_insn_info::compatible_p): Ditto.
20714 (vector_insn_info::update_fault_first_load_avl): New function.
20715 (pass_vsetvl::transfer_after): Adapt for vleff support.
20716 (pass_vsetvl::demand_fusion): Ditto.
20717 (pass_vsetvl::cleanup_insns): Ditto.
20718 * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Remove
20719 redundant condtions.
20720 * config/riscv/riscv-vsetvl.h (struct demands_cond): New function.
20721 * config/riscv/riscv.cc (TARGET_GIMPLE_FOLD_BUILTIN): New target hook.
20722 * config/riscv/riscv.md: Adapt for vleff support.
20723 * config/riscv/t-riscv: Ditto.
20724 * config/riscv/vector-iterators.md: New iterator.
20725 * config/riscv/vector.md (read_vlsi): New pattern.
20726 (read_vldi_zero_extend): Ditto.
20727 (@pred_fault_load<mode>): Ditto.
20729 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20731 * config/riscv/riscv-vector-builtins.cc
20732 (function_expander::use_ternop_insn): Use maybe_gen_insn instead.
20733 (function_expander::use_widen_ternop_insn): Ditto.
20734 * optabs.cc (maybe_gen_insn): Extend nops handling.
20736 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20738 * config/riscv/riscv-vector-builtins-bases.cc: Split indexed load
20739 patterns according to RVV ISA.
20740 * config/riscv/vector-iterators.md: New iterators.
20741 * config/riscv/vector.md
20742 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Remove.
20743 (@pred_indexed_<order>load<mode>_same_eew): New pattern.
20744 (@pred_indexed_<order>load<mode>_x2_greater_eew): Ditto.
20745 (@pred_indexed_<order>load<mode>_x4_greater_eew): Ditto.
20746 (@pred_indexed_<order>load<mode>_x8_greater_eew): Ditto.
20747 (@pred_indexed_<order>load<mode>_x2_smaller_eew): Ditto.
20748 (@pred_indexed_<order>load<mode>_x4_smaller_eew): Ditto.
20749 (@pred_indexed_<order>load<mode>_x8_smaller_eew): Ditto.
20750 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Remove.
20751 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
20752 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
20753 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
20754 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
20755 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
20757 2023-03-10 Michael Collison <collison@rivosinc.com>
20759 * tree-vect-loop-manip.cc (vect_do_peeling): Use
20760 result of constant_lower_bound instead of vf for the lower
20761 bound of the epilog loop trip count.
20763 2023-03-09 Tamar Christina <tamar.christina@arm.com>
20765 * passes.cc (emergency_dump_function): Finish graph generation.
20767 2023-03-09 Tamar Christina <tamar.christina@arm.com>
20769 * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
20770 and bottom bit only.
20772 2023-03-09 Andrew Pinski <apinski@marvell.com>
20774 PR tree-optimization/108980
20775 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
20776 Reorgnize the call to warning for not strict flexible arrays
20777 to be before the check of warned.
20779 2023-03-09 Jason Merrill <jason@redhat.com>
20781 * doc/extend.texi: Comment out __is_deducible docs.
20783 2023-03-09 Jason Merrill <jason@redhat.com>
20786 * doc/extend.texi (Type Traits):: Document __is_deducible.
20788 2023-03-09 Costas Argyris <costas.argyris@gmail.com>
20791 * config.host: add object for x86_64-*-mingw*.
20792 * config/i386/sym-mingw32.cc: dummy file to attach
20794 * config/i386/utf8-mingw32.rc: windres resource file.
20795 * config/i386/winnt-utf8.manifest: XML manifest to
20797 * config/i386/x-mingw32: reference to x-mingw32-utf8.
20798 * config/i386/x-mingw32-utf8: Makefile fragment to
20799 embed UTF-8 manifest.
20801 2023-03-09 Vladimir N. Makarov <vmakarov@redhat.com>
20803 * lra-constraints.cc (process_alt_operands): Use operand modes for
20804 clobbered regs instead of the biggest access mode.
20806 2023-03-09 Richard Biener <rguenther@suse.de>
20808 PR middle-end/108995
20809 * fold-const.cc (extract_muldiv_1): Avoid folding
20810 (CST * b) / CST2 when sanitizing overflow and we rely on
20811 overflow being undefined.
20813 2023-03-09 Jakub Jelinek <jakub@redhat.com>
20814 Richard Biener <rguenther@suse.de>
20816 PR tree-optimization/109008
20817 * range-op-float.cc (float_widen_lhs_range): New function.
20818 (foperator_plus::op1_range, foperator_minus::op1_range,
20819 foperator_minus::op2_range, foperator_mult::op1_range,
20820 foperator_div::op1_range, foperator_div::op2_range): Use it.
20822 2023-03-07 Jonathan Grant <jg@jguk.org>
20825 * doc/invoke.texi (Instrumentation Options): Clarify
20826 LeakSanitizer behavior.
20828 2023-03-07 Benson Muite <benson_muite@emailplus.org>
20830 * doc/install.texi (Prerequisites): Add link to gmplib.org.
20832 2023-03-07 Pan Li <pan2.li@intel.com>
20833 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20837 * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
20839 * config/riscv/riscv.cc (riscv_v_adjust_precision): New.
20840 * config/riscv/riscv.h (riscv_v_adjust_precision): New.
20841 * genmodes.cc (adj_precision): New.
20842 (ADJUST_PRECISION): New.
20843 (emit_mode_adjustments): Handle ADJUST_PRECISION.
20845 2023-03-07 Hans-Peter Nilsson <hp@axis.com>
20847 * doc/sourcebuild.texi: Document check_effective_target_tail_call.
20849 2023-03-06 Paul-Antoine Arras <pa@codesourcery.com>
20851 * config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for
20852 {s|u}{max|min} in QI, HI and DI modes.
20853 (<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode.
20854 (cond_<fexpander><mode>): Add pattern for cond_f{max|min}.
20855 (cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}.
20856 * config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be
20859 2023-03-06 Richard Biener <rguenther@suse.de>
20861 PR tree-optimization/109025
20862 * tree-vect-loop.cc (vect_is_simple_reduction): Verify
20863 the inner LC PHI use is the inner loop PHI latch definition
20864 before classifying an outer PHI as double reduction.
20866 2023-03-06 Jan Hubicka <hubicka@ucw.cz>
20869 * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
20871 (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
20872 (X86_TUNE_USE_SCATTER): Likewise.
20874 2023-03-06 Xi Ruoyao <xry111@xry111.site>
20877 * config/loongarch/loongarch.h (FP_RETURN): Use
20878 TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
20879 (UNITS_PER_FP_ARG): Likewise.
20881 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20883 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
20884 (pass_vsetvl::backward_demand_fusion): Ditto.
20886 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
20887 SiYu Wu <siyu@isrc.iscas.ac.cn>
20889 * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
20891 (riscv_sm3p1_<mode>): New.
20892 (riscv_sm4ed_<mode>): New.
20893 (riscv_sm4ks_<mode>): New.
20894 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKSED's and ZKSH's AVAIL.
20895 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): Add ZKSED's and
20896 ZKSH's built-in functions.
20898 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
20899 SiYu Wu <siyu@isrc.iscas.ac.cn>
20901 * config/riscv/crypto.md (riscv_sha256sig0_<mode>): Add ZKNH's instructions.
20902 (riscv_sha256sig1_<mode>): New.
20903 (riscv_sha256sum0_<mode>): New.
20904 (riscv_sha256sum1_<mode>): New.
20905 (riscv_sha512sig0h): New.
20906 (riscv_sha512sig0l): New.
20907 (riscv_sha512sig1h): New.
20908 (riscv_sha512sig1l): New.
20909 (riscv_sha512sum0r): New.
20910 (riscv_sha512sum1r): New.
20911 (riscv_sha512sig0): New.
20912 (riscv_sha512sig1): New.
20913 (riscv_sha512sum0): New.
20914 (riscv_sha512sum1): New.
20915 * config/riscv/riscv-builtins.cc (AVAIL): And ZKNH's AVAIL.
20916 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): And ZKNH's
20917 built-in functions.
20918 (DIRECT_BUILTIN): Add new.
20920 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
20921 SiYu Wu <siyu@isrc.iscas.ac.cn>
20923 * config/riscv/constraints.md (D03): Add constants of bs and rnum.
20925 * config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions.
20926 (riscv_aes32dsmi): New.
20927 (riscv_aes64ds): New.
20928 (riscv_aes64dsm): New.
20929 (riscv_aes64im): New.
20930 (riscv_aes64ks1i): New.
20931 (riscv_aes64ks2): New.
20932 (riscv_aes32esi): New.
20933 (riscv_aes32esmi): New.
20934 (riscv_aes64es): New.
20935 (riscv_aes64esm): New.
20936 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL.
20937 * config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and
20938 ZKNE's built-in functions.
20940 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
20941 SiYu Wu <siyu@isrc.iscas.ac.cn>
20943 * config/riscv/bitmanip.md: Add ZBKB's instructions.
20944 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
20945 * config/riscv/riscv.md: Add new type for crypto instructions.
20946 * config/riscv/crypto.md: Add Scalar Cryptography extension's machine
20948 * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
20949 extension's built-in function file.
20951 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
20952 SiYu Wu <siyu@isrc.iscas.ac.cn>
20954 * config/riscv/riscv-builtins.cc (RISCV_FTYPE_NAME2): New.
20955 (RISCV_FTYPE_NAME3): New.
20956 (RISCV_ATYPE_QI): New.
20957 (RISCV_ATYPE_HI): New.
20958 (RISCV_FTYPE_ATYPES2): New.
20959 (RISCV_FTYPE_ATYPES3): New.
20960 * config/riscv/riscv-ftypes.def (2): New.
20963 2023-03-05 Vineet Gupta <vineetg@rivosinc.com>
20965 * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
20968 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20969 kito-cheng <kito.cheng@sifive.com>
20971 * config/riscv/predicates.md (vector_any_register_operand): New predicate.
20972 * config/riscv/riscv-c.cc (riscv_check_builtin_call): New function.
20973 (riscv_register_pragmas): Add builtin function check call.
20974 * config/riscv/riscv-protos.h (RVV_VUNDEF): Adapt macro.
20975 (check_builtin_call): New function.
20976 * config/riscv/riscv-vector-builtins-bases.cc (class vundefined): New class.
20977 (class vreinterpret): Ditto.
20978 (class vlmul_ext): Ditto.
20979 (class vlmul_trunc): Ditto.
20980 (class vset): Ditto.
20981 (class vget): Ditto.
20983 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
20984 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
21000 (vundefined): Add new intrinsic.
21001 (vreinterpret): Ditto.
21002 (vlmul_ext): Ditto.
21003 (vlmul_trunc): Ditto.
21006 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): New class.
21007 (struct narrow_alu_def): Ditto.
21008 (struct reduc_alu_def): Ditto.
21009 (struct vundefined_def): Ditto.
21010 (struct misc_def): Ditto.
21011 (struct vset_def): Ditto.
21012 (struct vget_def): Ditto.
21014 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
21015 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EEW8_INTERPRET_OPS): New def.
21016 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
21017 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
21018 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
21019 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
21020 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
21021 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
21022 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
21023 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
21024 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
21025 (DEF_RVV_LMUL1_OPS): Ditto.
21026 (DEF_RVV_LMUL2_OPS): Ditto.
21027 (DEF_RVV_LMUL4_OPS): Ditto.
21028 (vint16mf4_t): Ditto.
21029 (vint16mf2_t): Ditto.
21030 (vint16m1_t): Ditto.
21031 (vint16m2_t): Ditto.
21032 (vint16m4_t): Ditto.
21033 (vint16m8_t): Ditto.
21034 (vint32mf2_t): Ditto.
21035 (vint32m1_t): Ditto.
21036 (vint32m2_t): Ditto.
21037 (vint32m4_t): Ditto.
21038 (vint32m8_t): Ditto.
21039 (vint64m1_t): Ditto.
21040 (vint64m2_t): Ditto.
21041 (vint64m4_t): Ditto.
21042 (vint64m8_t): Ditto.
21043 (vuint16mf4_t): Ditto.
21044 (vuint16mf2_t): Ditto.
21045 (vuint16m1_t): Ditto.
21046 (vuint16m2_t): Ditto.
21047 (vuint16m4_t): Ditto.
21048 (vuint16m8_t): Ditto.
21049 (vuint32mf2_t): Ditto.
21050 (vuint32m1_t): Ditto.
21051 (vuint32m2_t): Ditto.
21052 (vuint32m4_t): Ditto.
21053 (vuint32m8_t): Ditto.
21054 (vuint64m1_t): Ditto.
21055 (vuint64m2_t): Ditto.
21056 (vuint64m4_t): Ditto.
21057 (vuint64m8_t): Ditto.
21058 (vint8mf4_t): Ditto.
21059 (vint8mf2_t): Ditto.
21060 (vint8m1_t): Ditto.
21061 (vint8m2_t): Ditto.
21062 (vint8m4_t): Ditto.
21063 (vint8m8_t): Ditto.
21064 (vuint8mf4_t): Ditto.
21065 (vuint8mf2_t): Ditto.
21066 (vuint8m1_t): Ditto.
21067 (vuint8m2_t): Ditto.
21068 (vuint8m4_t): Ditto.
21069 (vuint8m8_t): Ditto.
21070 (vint8mf8_t): Ditto.
21071 (vuint8mf8_t): Ditto.
21072 (vfloat32mf2_t): Ditto.
21073 (vfloat32m1_t): Ditto.
21074 (vfloat32m2_t): Ditto.
21075 (vfloat32m4_t): Ditto.
21076 (vfloat64m1_t): Ditto.
21077 (vfloat64m2_t): Ditto.
21078 (vfloat64m4_t): Ditto.
21079 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
21080 (DEF_RVV_EEW8_INTERPRET_OPS): Ditto.
21081 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
21082 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
21083 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
21084 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
21085 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
21086 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
21087 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
21088 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
21089 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
21090 (DEF_RVV_LMUL1_OPS): Ditto.
21091 (DEF_RVV_LMUL2_OPS): Ditto.
21092 (DEF_RVV_LMUL4_OPS): Ditto.
21093 (DEF_RVV_TYPE_INDEX): Ditto.
21094 (required_extensions_p): Adapt for new intrinsic support/
21095 (get_required_extensions): New function.
21096 (check_required_extensions): Ditto.
21097 (unsigned_base_type_p): Remove.
21098 (rvv_arg_type_info::get_scalar_ptr_type): New function.
21099 (get_mode_for_bitsize): Remove.
21100 (rvv_arg_type_info::get_scalar_const_ptr_type): New function.
21101 (rvv_arg_type_info::get_base_vector_type): Ditto.
21102 (rvv_arg_type_info::get_function_type_index): Ditto.
21103 (DEF_RVV_BASE_TYPE): New def.
21104 (function_builder::apply_predication): New class.
21105 (function_expander::mask_mode): Ditto.
21106 (function_checker::function_checker): Ditto.
21107 (function_checker::report_non_ice): Ditto.
21108 (function_checker::report_out_of_range): Ditto.
21109 (function_checker::require_immediate): Ditto.
21110 (function_checker::require_immediate_range): Ditto.
21111 (function_checker::check): Ditto.
21112 (check_builtin_call): Ditto.
21113 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): New def.
21114 (DEF_RVV_BASE_TYPE): Ditto.
21115 (DEF_RVV_TYPE_INDEX): Ditto.
21116 (vbool64_t): Ditto.
21117 (vbool32_t): Ditto.
21118 (vbool16_t): Ditto.
21123 (vuint8mf8_t): Ditto.
21124 (vuint8mf4_t): Ditto.
21125 (vuint8mf2_t): Ditto.
21126 (vuint8m1_t): Ditto.
21127 (vuint8m2_t): Ditto.
21128 (vint8m4_t): Ditto.
21129 (vuint8m4_t): Ditto.
21130 (vint8m8_t): Ditto.
21131 (vuint8m8_t): Ditto.
21132 (vint16mf4_t): Ditto.
21133 (vuint16mf2_t): Ditto.
21134 (vuint16m1_t): Ditto.
21135 (vuint16m2_t): Ditto.
21136 (vuint16m4_t): Ditto.
21137 (vuint16m8_t): Ditto.
21138 (vint32mf2_t): Ditto.
21139 (vuint32m1_t): Ditto.
21140 (vuint32m2_t): Ditto.
21141 (vuint32m4_t): Ditto.
21142 (vuint32m8_t): Ditto.
21143 (vuint64m1_t): Ditto.
21144 (vuint64m2_t): Ditto.
21145 (vuint64m4_t): Ditto.
21146 (vuint64m8_t): Ditto.
21147 (vfloat32mf2_t): Ditto.
21148 (vfloat32m1_t): Ditto.
21149 (vfloat32m2_t): Ditto.
21150 (vfloat32m4_t): Ditto.
21151 (vfloat32m8_t): Ditto.
21152 (vfloat64m1_t): Ditto.
21153 (vfloat64m4_t): Ditto.
21154 (vector): Move it def.
21157 (signed_vector): Ditto.
21158 (unsigned_vector): Ditto.
21159 (unsigned_scalar): Ditto.
21160 (vector_ptr): Ditto.
21161 (scalar_ptr): Ditto.
21162 (scalar_const_ptr): Ditto.
21166 (unsigned_long): Ditto.
21168 (eew8_index): Ditto.
21169 (eew16_index): Ditto.
21170 (eew32_index): Ditto.
21171 (eew64_index): Ditto.
21172 (shift_vector): Ditto.
21173 (double_trunc_vector): Ditto.
21174 (quad_trunc_vector): Ditto.
21175 (oct_trunc_vector): Ditto.
21176 (double_trunc_scalar): Ditto.
21177 (double_trunc_signed_vector): Ditto.
21178 (double_trunc_unsigned_vector): Ditto.
21179 (double_trunc_unsigned_scalar): Ditto.
21180 (double_trunc_float_vector): Ditto.
21181 (float_vector): Ditto.
21182 (lmul1_vector): Ditto.
21183 (widen_lmul1_vector): Ditto.
21184 (eew8_interpret): Ditto.
21185 (eew16_interpret): Ditto.
21186 (eew32_interpret): Ditto.
21187 (eew64_interpret): Ditto.
21188 (vlmul_ext_x2): Ditto.
21189 (vlmul_ext_x4): Ditto.
21190 (vlmul_ext_x8): Ditto.
21191 (vlmul_ext_x16): Ditto.
21192 (vlmul_ext_x32): Ditto.
21193 (vlmul_ext_x64): Ditto.
21194 * config/riscv/riscv-vector-builtins.h (DEF_RVV_BASE_TYPE): New def.
21195 (struct function_type_info): New function.
21196 (struct rvv_arg_type_info): Ditto.
21197 (class function_checker): New class.
21198 (rvv_arg_type_info::get_scalar_type): New function.
21199 (rvv_arg_type_info::get_vector_type): Ditto.
21200 (function_expander::ret_mode): New function.
21201 (function_checker::arg_mode): Ditto.
21202 (function_checker::ret_mode): Ditto.
21203 * config/riscv/t-riscv: Add generator.
21204 * config/riscv/vector-iterators.md: New iterators.
21205 * config/riscv/vector.md (vundefined<mode>): New pattern.
21206 (@vundefined<mode>): Ditto.
21207 (@vreinterpret<mode>): Ditto.
21208 (@vlmul_extx2<mode>): Ditto.
21209 (@vlmul_extx4<mode>): Ditto.
21210 (@vlmul_extx8<mode>): Ditto.
21211 (@vlmul_extx16<mode>): Ditto.
21212 (@vlmul_extx32<mode>): Ditto.
21213 (@vlmul_extx64<mode>): Ditto.
21214 (*vlmul_extx2<mode>): Ditto.
21215 (*vlmul_extx4<mode>): Ditto.
21216 (*vlmul_extx8<mode>): Ditto.
21217 (*vlmul_extx16<mode>): Ditto.
21218 (*vlmul_extx32<mode>): Ditto.
21219 (*vlmul_extx64<mode>): Ditto.
21220 * config/riscv/genrvv-type-indexer.cc: New file.
21222 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21224 * config/riscv/riscv-protos.h (enum vlen_enum): New enum.
21225 (slide1_sew64_helper): New function.
21226 * config/riscv/riscv-v.cc (compute_vlmax): Ditto.
21227 (get_unknown_min_value): Ditto.
21228 (force_vector_length_operand): Ditto.
21229 (gen_no_side_effects_vsetvl_rtx): Ditto.
21230 (get_vl_x2_rtx): Ditto.
21231 (slide1_sew64_helper): Ditto.
21232 * config/riscv/riscv-vector-builtins-bases.cc (class slideop): New class.
21233 (class vrgather): Ditto.
21234 (class vrgatherei16): Ditto.
21235 (class vcompress): Ditto.
21237 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
21238 * config/riscv/riscv-vector-builtins-functions.def (vslideup): Ditto.
21239 (vslidedown): Ditto.
21240 (vslide1up): Ditto.
21241 (vslide1down): Ditto.
21242 (vfslide1up): Ditto.
21243 (vfslide1down): Ditto.
21245 (vrgatherei16): Ditto.
21246 (vcompress): Ditto.
21247 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EI16_OPS): New macro.
21248 (vint8mf8_t): Ditto.
21249 (vint8mf4_t): Ditto.
21250 (vint8mf2_t): Ditto.
21251 (vint8m1_t): Ditto.
21252 (vint8m2_t): Ditto.
21253 (vint8m4_t): Ditto.
21254 (vint16mf4_t): Ditto.
21255 (vint16mf2_t): Ditto.
21256 (vint16m1_t): Ditto.
21257 (vint16m2_t): Ditto.
21258 (vint16m4_t): Ditto.
21259 (vint16m8_t): Ditto.
21260 (vint32mf2_t): Ditto.
21261 (vint32m1_t): Ditto.
21262 (vint32m2_t): Ditto.
21263 (vint32m4_t): Ditto.
21264 (vint32m8_t): Ditto.
21265 (vint64m1_t): Ditto.
21266 (vint64m2_t): Ditto.
21267 (vint64m4_t): Ditto.
21268 (vint64m8_t): Ditto.
21269 (vuint8mf8_t): Ditto.
21270 (vuint8mf4_t): Ditto.
21271 (vuint8mf2_t): Ditto.
21272 (vuint8m1_t): Ditto.
21273 (vuint8m2_t): Ditto.
21274 (vuint8m4_t): Ditto.
21275 (vuint16mf4_t): Ditto.
21276 (vuint16mf2_t): Ditto.
21277 (vuint16m1_t): Ditto.
21278 (vuint16m2_t): Ditto.
21279 (vuint16m4_t): Ditto.
21280 (vuint16m8_t): Ditto.
21281 (vuint32mf2_t): Ditto.
21282 (vuint32m1_t): Ditto.
21283 (vuint32m2_t): Ditto.
21284 (vuint32m4_t): Ditto.
21285 (vuint32m8_t): Ditto.
21286 (vuint64m1_t): Ditto.
21287 (vuint64m2_t): Ditto.
21288 (vuint64m4_t): Ditto.
21289 (vuint64m8_t): Ditto.
21290 (vfloat32mf2_t): Ditto.
21291 (vfloat32m1_t): Ditto.
21292 (vfloat32m2_t): Ditto.
21293 (vfloat32m4_t): Ditto.
21294 (vfloat32m8_t): Ditto.
21295 (vfloat64m1_t): Ditto.
21296 (vfloat64m2_t): Ditto.
21297 (vfloat64m4_t): Ditto.
21298 (vfloat64m8_t): Ditto.
21299 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_EI16_OPS): Ditto.
21300 * config/riscv/riscv.md: Adjust RVV instruction types.
21301 * config/riscv/vector-iterators.md (down): New iterator.
21302 (=vd,vr): New attribute.
21303 (UNSPEC_VSLIDE1UP): New unspec.
21304 * config/riscv/vector.md (@pred_slide<ud><mode>): New pattern.
21305 (*pred_slide<ud><mode>): Ditto.
21306 (*pred_slide<ud><mode>_extended): Ditto.
21307 (@pred_gather<mode>): Ditto.
21308 (@pred_gather<mode>_scalar): Ditto.
21309 (@pred_gatherei16<mode>): Ditto.
21310 (@pred_compress<mode>): Ditto.
21312 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21314 * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
21316 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21318 * config/riscv/constraints.md (Wb1): New constraint.
21319 * config/riscv/predicates.md
21320 (vector_least_significant_set_mask_operand): New predicate.
21321 (vector_broadcast_mask_operand): Ditto.
21322 * config/riscv/riscv-protos.h (enum vlmul_type): Adjust.
21323 (gen_scalar_move_mask): New function.
21324 * config/riscv/riscv-v.cc (gen_scalar_move_mask): Ditto.
21325 * config/riscv/riscv-vector-builtins-bases.cc (class vmv): New class.
21326 (class vmv_s): Ditto.
21328 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
21329 * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
21333 * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
21335 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
21336 * config/riscv/riscv-vector-builtins.cc (function_expander::mask_mode): Ditto.
21337 (function_expander::use_exact_insn): New function.
21338 (function_expander::use_contiguous_load_insn): New function.
21339 (function_expander::use_contiguous_store_insn): New function.
21340 (function_expander::use_ternop_insn): New function.
21341 (function_expander::use_widen_ternop_insn): New function.
21342 (function_expander::use_scalar_move_insn): New function.
21343 * config/riscv/riscv-vector-builtins.def (s): New operand suffix.
21344 * config/riscv/riscv-vector-builtins.h
21345 (function_expander::add_scalar_move_mask_operand): New class.
21346 * config/riscv/riscv-vsetvl.cc (ignore_vlmul_insn_p): New function.
21347 (scalar_move_insn_p): Ditto.
21348 (has_vsetvl_killed_avl_p): Ditto.
21349 (anticipatable_occurrence_p): Ditto.
21350 (insert_vsetvl): Ditto.
21351 (get_vl_vtype_info): Ditto.
21352 (calculate_sew): Ditto.
21353 (calculate_vlmul): Ditto.
21354 (incompatible_avl_p): Ditto.
21355 (different_sew_p): Ditto.
21356 (different_lmul_p): Ditto.
21357 (different_ratio_p): Ditto.
21358 (different_tail_policy_p): Ditto.
21359 (different_mask_policy_p): Ditto.
21360 (possible_zero_avl_p): Ditto.
21361 (first_ratio_invalid_for_second_sew_p): Ditto.
21362 (first_ratio_invalid_for_second_lmul_p): Ditto.
21363 (second_ratio_invalid_for_first_sew_p): Ditto.
21364 (second_ratio_invalid_for_first_lmul_p): Ditto.
21365 (second_sew_less_than_first_sew_p): Ditto.
21366 (first_sew_less_than_second_sew_p): Ditto.
21367 (compare_lmul): Ditto.
21368 (second_lmul_less_than_first_lmul_p): Ditto.
21369 (first_lmul_less_than_second_lmul_p): Ditto.
21370 (first_ratio_less_than_second_ratio_p): Ditto.
21371 (second_ratio_less_than_first_ratio_p): Ditto.
21372 (DEF_INCOMPATIBLE_COND): Ditto.
21373 (greatest_sew): Ditto.
21374 (first_sew): Ditto.
21375 (second_sew): Ditto.
21376 (first_vlmul): Ditto.
21377 (second_vlmul): Ditto.
21378 (first_ratio): Ditto.
21379 (second_ratio): Ditto.
21380 (vlmul_for_first_sew_second_ratio): Ditto.
21381 (ratio_for_second_sew_first_vlmul): Ditto.
21382 (DEF_SEW_LMUL_FUSE_RULE): Ditto.
21383 (always_unavailable): Ditto.
21384 (avl_unavailable_p): Ditto.
21385 (sew_unavailable_p): Ditto.
21386 (lmul_unavailable_p): Ditto.
21387 (ge_sew_unavailable_p): Ditto.
21388 (ge_sew_lmul_unavailable_p): Ditto.
21389 (ge_sew_ratio_unavailable_p): Ditto.
21390 (DEF_UNAVAILABLE_COND): Ditto.
21391 (same_sew_lmul_demand_p): Ditto.
21392 (propagate_avl_across_demands_p): Ditto.
21393 (reg_available_p): Ditto.
21394 (avl_info::has_non_zero_avl): Ditto.
21395 (vl_vtype_info::has_non_zero_avl): Ditto.
21396 (vector_insn_info::operator>=): Refactor.
21397 (vector_insn_info::parse_insn): Adjust for scalar move.
21398 (vector_insn_info::demand_vl_vtype): Remove.
21399 (vector_insn_info::compatible_p): New function.
21400 (vector_insn_info::compatible_avl_p): Ditto.
21401 (vector_insn_info::compatible_vtype_p): Ditto.
21402 (vector_insn_info::available_p): Ditto.
21403 (vector_insn_info::merge): Ditto.
21404 (vector_insn_info::fuse_avl): Ditto.
21405 (vector_insn_info::fuse_sew_lmul): Ditto.
21406 (vector_insn_info::fuse_tail_policy): Ditto.
21407 (vector_insn_info::fuse_mask_policy): Ditto.
21408 (vector_insn_info::dump): Ditto.
21409 (vector_infos_manager::release): Ditto.
21410 (pass_vsetvl::compute_local_backward_infos): Adjust for scalar move support.
21411 (pass_vsetvl::get_backward_fusion_type): Adjust for scalar move support.
21412 (pass_vsetvl::hard_empty_block_p): Ditto.
21413 (pass_vsetvl::backward_demand_fusion): Ditto.
21414 (pass_vsetvl::forward_demand_fusion): Ditto.
21415 (pass_vsetvl::refine_vsetvls): Ditto.
21416 (pass_vsetvl::cleanup_vsetvls): Ditto.
21417 (pass_vsetvl::commit_vsetvls): Ditto.
21418 (pass_vsetvl::propagate_avl): Ditto.
21419 * config/riscv/riscv-vsetvl.h (enum demand_status): New class.
21420 (struct demands_pair): Ditto.
21421 (struct demands_cond): Ditto.
21422 (struct demands_fuse_rule): Ditto.
21423 * config/riscv/vector-iterators.md: New iterator.
21424 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
21425 (*pred_broadcast<mode>): Ditto.
21426 (*pred_broadcast<mode>_extended_scalar): Ditto.
21427 (@pred_extract_first<mode>): Ditto.
21428 (*pred_extract_first<mode>): Ditto.
21429 (@pred_extract_first_trunc<mode>): Ditto.
21430 * config/riscv/riscv-vsetvl.def: New file.
21432 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
21434 * config/riscv/bitmanip.md: allow 0 constant in max/min
21437 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
21439 * config/riscv/bitmanip.md: Fix wrong index in the check.
21441 2023-03-04 Jakub Jelinek <jakub@redhat.com>
21443 PR middle-end/109006
21444 * vec.cc (test_auto_alias): Adjust comment for removal of
21446 * read-rtl-function.cc (function_reader::parse_block): Likewise.
21447 * gdbhooks.py: Likewise.
21449 2023-03-04 Jakub Jelinek <jakub@redhat.com>
21451 PR testsuite/108973
21452 * selftest-diagnostic.cc
21453 (test_diagnostic_context::test_diagnostic_context): Set
21454 caret_max_width to 80.
21456 2023-03-03 Alexandre Oliva <oliva@adacore.com>
21458 * gimple-ssa-warn-access.cc
21459 (pass_waccess::check_dangling_stores): Skip non-stores.
21461 2023-03-03 Alexandre Oliva <oliva@adacore.com>
21463 * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
21464 after vmsr and vmrs, and lower the case of P0.
21466 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
21468 PR middle-end/109006
21469 * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
21471 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
21473 PR middle-end/109006
21474 * gdbhooks.py (VecPrinter): Adjust for new vec layout.
21476 2023-03-03 Jakub Jelinek <jakub@redhat.com>
21479 * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
21480 Return immediately if OPT_Wnonnull or OPT_Wstringop_overflow_ is
21481 suppressed on stmt. For [static %E] warning, print access_nelts
21482 rather than access_size. Fix up comment wording.
21484 2023-03-03 Robin Dapp <rdapp@linux.ibm.com>
21486 * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
21487 arch14 instead of z16.
21489 2023-03-03 Anthony Green <green@moxielogic.com>
21491 * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
21493 2023-03-03 Anthony Green <green@moxielogic.com>
21495 * config/moxie/constraints.md (A, B, W): Change
21496 define_constraint to define_memory_constraint.
21498 2023-03-03 Xi Ruoyao <xry111@xry111.site>
21500 * toplev.cc (process_options): Fix the spelling of
21501 "-fstack-clash-protection".
21503 2023-03-03 Richard Biener <rguenther@suse.de>
21505 PR tree-optimization/109002
21506 * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
21507 PHI-translate ANTIC_IN.
21509 2023-03-03 Jakub Jelinek <jakub@redhat.com>
21511 PR tree-optimization/108988
21512 * gimple-fold.cc (gimple_fold_builtin_fputs): Fold len to
21513 size_type_node before passing it as argument to fwrite. Formatting
21516 2023-03-03 Richard Biener <rguenther@suse.de>
21519 * config/i386/i386.opt (--param x86-stv-max-visits): New param.
21520 * doc/invoke.texi (--param x86-stv-max-visits): Document it.
21521 * config/i386/i386-features.h (scalar_chain::max_visits): New.
21522 (scalar_chain::build): Add bitmap parameter, return boolean.
21523 (scalar_chain::add_insn): Likewise.
21524 (scalar_chain::analyze_register_chain): Likewise.
21525 * config/i386/i386-features.cc (scalar_chain::scalar_chain):
21526 Initialize max_visits.
21527 (scalar_chain::analyze_register_chain): When we exhaust
21528 max_visits, abort. Also abort when running into any
21530 (scalar_chain::add_insn): Propagate abort.
21531 (scalar_chain::build): Likewise. When aborting amend
21532 the set of disallowed insn with the insns set.
21533 (convert_scalars_to_vector): Adjust. Do not convert aborted
21536 2023-03-03 Richard Biener <rguenther@suse.de>
21539 * dwarf2out.cc (dwarf2out_late_global_decl): Do not
21540 generate a DIE for a function scope static.
21542 2023-03-03 Alexandre Oliva <oliva@adacore.com>
21544 * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
21546 2023-03-02 Jakub Jelinek <jakub@redhat.com>
21549 * target.h (emit_support_tinfos_callback): New typedef.
21550 * targhooks.h (default_emit_support_tinfos): Declare.
21551 * targhooks.cc (default_emit_support_tinfos): New function.
21552 * target.def (emit_support_tinfos): New target hook.
21553 * doc/tm.texi.in (emit_support_tinfos): Document it.
21554 * doc/tm.texi: Regenerated.
21555 * config/i386/i386.cc (ix86_emit_support_tinfos): New function.
21556 (TARGET_EMIT_SUPPORT_TINFOS): Redefine.
21558 2023-03-02 Vladimir N. Makarov <vmakarov@redhat.com>
21560 * ira-costs.cc: Include print-rtl.h.
21561 (record_reg_classes, scan_one_insn): Add code to print debug info.
21562 (record_operand_costs): Find and use smaller cost for hard reg
21565 2023-03-02 Kwok Cheung Yeung <kcy@codesourcery.com>
21566 Paul-Antoine Arras <pa@codesourcery.com>
21568 * builtins.cc (mathfn_built_in_explicit): New.
21569 * config/gcn/gcn.cc: Include case-cfn-macros.h.
21570 (mathfn_built_in_explicit): Add prototype.
21571 (gcn_vectorize_builtin_vectorized_function): New.
21572 (gcn_libc_has_function): New.
21573 (TARGET_LIBC_HAS_FUNCTION): Define.
21574 (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
21576 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
21578 PR tree-optimization/108979
21579 * tree-vect-stmts.cc (vectorizable_operation): Don't mask
21580 operations on invariants.
21582 2023-03-02 Robin Dapp <rdapp@linux.ibm.com>
21584 * config/s390/predicates.md (vll_bias_operand): Add -1 bias.
21585 * config/s390/s390.cc (s390_option_override_internal): Make
21586 partial vector usage the default from z13 on.
21587 * config/s390/vector.md (len_load_v16qi): Add.
21588 (len_store_v16qi): Add.
21590 2023-03-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
21592 * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
21593 of constant 0 offset.
21595 2023-03-02 Robert Suchanek <robert.suchanek@imgtec.com>
21597 * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
21599 * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
21601 2023-03-02 Junxian Zhu <zhujunxian@oss.cipunited.com>
21603 * config.gcc: add -with-{no-}msa build option.
21604 * config/mips/mips.h: Likewise.
21605 * doc/install.texi: Likewise.
21607 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
21609 PR tree-optimization/108603
21610 * explow.cc (convert_memory_address_addr_space_1): Only wrap
21611 the result of a recursive call in a CONST if no instructions
21614 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
21616 PR tree-optimization/108430
21617 * tree-vect-stmts.cc (vectorizable_condition): Fix handling
21618 of inverted condition.
21620 2023-03-02 Jakub Jelinek <jakub@redhat.com>
21623 * fold-const.cc (native_interpret_expr) <case REAL_CST>: Before memcmp
21624 comparison copy the bytes from ptr to a temporary buffer and clearing
21625 padding bits in there.
21627 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
21629 PR middle-end/108545
21630 * gimplify.cc (struct tree_operand_hash_no_se): New.
21631 (omp_index_mapping_groups_1, omp_index_mapping_groups,
21632 omp_reindex_mapping_groups, omp_mapped_by_containing_struct,
21633 omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
21634 oacc_resolve_clause_dependencies, omp_build_struct_sibling_lists,
21635 gimplify_scan_omp_clauses): Use tree_operand_hash_no_se instead
21636 of tree_operand_hash.
21638 2023-03-01 LIU Hao <lh_mouse@126.com>
21641 * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
21642 Remove the size limit `pch_VA_max_size`
21644 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
21646 PR middle-end/108546
21647 * omp-low.cc (lower_omp_target): Remove optional handling
21648 on the receiver side, i.e. inside target (data), for
21651 2023-03-01 Jakub Jelinek <jakub@redhat.com>
21654 * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
21655 and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
21657 2023-03-01 Richard Biener <rguenther@suse.de>
21659 PR tree-optimization/108970
21660 * tree-vect-loop-manip.cc (slpeel_can_duplicate_loop_p):
21661 Check we can copy the BBs.
21662 (slpeel_tree_duplicate_loop_to_edge_cfg): Avoid redundant
21664 (vect_do_peeling): Streamline error handling.
21666 2023-03-01 Richard Biener <rguenther@suse.de>
21668 PR tree-optimization/108950
21669 * tree-vect-patterns.cc (vect_recog_widen_sum_pattern):
21670 Check oprnd0 is defined in the loop.
21671 * tree-vect-loop.cc (vectorizable_reduction): Record all
21672 operands vector types, compute that of invariants and
21673 properly update their SLP nodes.
21675 2023-03-01 Kewen Lin <linkw@linux.ibm.com>
21678 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
21679 implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
21681 2023-02-28 Qing Zhao <qing.zhao@oracle.com>
21683 PR middle-end/107411
21684 PR middle-end/107411
21685 * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
21687 * tree-ssa-uninit.cc (warn_uninit): Handle the case when the
21688 LHS varaible of a .DEFERRED_INIT call doesn't have a DECL_NAME.
21690 2023-02-28 Jakub Jelinek <jakub@redhat.com>
21692 PR sanitizer/108894
21693 * ubsan.cc (ubsan_expand_bounds_ifn): Emit index >= bound
21694 comparison rather than index > bound.
21695 * gimple-fold.cc (gimple_fold_call): Use tree_int_cst_lt
21696 rather than tree_int_cst_le for IFN_UBSAN_BOUND comparison.
21697 * doc/invoke.texi (-fsanitize=bounds): Document that whether
21698 flexible array member-like arrays are instrumented or not depends
21699 on -fstrict-flex-arrays* options of strict_flex_array attributes.
21700 (-fsanitize=bounds-strict): Document that flexible array members
21701 are not instrumented.
21703 2023-02-27 Uroš Bizjak <ubizjak@gmail.com>
21707 * config/i386/i386.md (fmodxf3): Enable for flag_finite_math_only only.
21708 (fmod<mode>3): Ditto.
21709 (fpremxf4_i387): Ditto.
21710 (reminderxf3): Ditto.
21711 (reminder<mode>3): Ditto.
21712 (fprem1xf4_i387): Ditto.
21714 2023-02-27 Roger Sayle <roger@nextmovesoftware.com>
21716 * simplify-rtx.cc (simplify_unary_operation_1) <case FFS>: Avoid
21717 generating FFS with mismatched operand and result modes, by using
21718 an explicit SIGN_EXTEND/ZERO_EXTEND.
21719 <case POPCOUNT>: Likewise, for POPCOUNT of ZERO_EXTEND.
21720 <case PARITY>: Likewise, for PARITY of {ZERO,SIGN}_EXTEND.
21722 2023-02-27 Patrick Palka <ppalka@redhat.com>
21724 * hash-table.h (gt_pch_nx(hash_table<D>)): Remove static.
21725 * lra-int.h (lra_change_class): Likewise.
21726 * recog.h (which_op_alt): Likewise.
21727 * sel-sched-ir.h (sel_bb_empty_or_nop_p): Declare inline
21730 2023-02-27 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
21732 * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
21734 * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
21736 * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
21737 * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
21739 2023-02-27 Max Filippov <jcmvbkbc@gmail.com>
21741 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
21742 (xtensa_get_config_v3): New functions.
21744 2023-02-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21746 * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
21748 2023-02-27 Lulu Cheng <chenglulu@loongson.cn>
21750 * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
21751 the macro to 0x1000000000.
21753 2023-02-25 Gaius Mulley <gaiusmod2@gmail.com>
21756 * doc/gm2.texi (-fm2-pathname): New option documented.
21757 (-fm2-pathnameI): New option documented.
21758 (-fm2-prefix=): New option documented.
21759 (-fruntime-modules=): Update default module list.
21761 2023-02-25 Max Filippov <jcmvbkbc@gmail.com>
21764 * config/xtensa/xtensa-protos.h
21765 (xtensa_prepare_expand_call): Rename to xtensa_expand_call.
21766 * config/xtensa/xtensa.cc (xtensa_prepare_expand_call): Rename
21767 to xtensa_expand_call.
21768 (xtensa_expand_call): Emit the call and add a clobber expression
21769 for the static chain to it in case of windowed ABI.
21770 * config/xtensa/xtensa.md (call, call_value, sibcall)
21771 (sibcall_value): Call xtensa_expand_call and complete expansion
21772 right after that call.
21774 2023-02-24 Richard Biener <rguenther@suse.de>
21776 * vec.h (vec<T, A, vl_embed>::m_vecdata): Remove.
21777 (vec<T, A, vl_embed>::m_vecpfx): Align as T to avoid
21778 changing alignment of vec<T, A, vl_embed> and simplifying
21780 (vec<T, A, vl_embed>::address): Compute as this + 1.
21781 (vec<T, A, vl_embed>::embedded_size): Use sizeof the
21782 vector instead of the offset of the m_vecdata member.
21783 (auto_vec<T, N>::m_data): Turn storage into
21784 uninitialized unsigned char.
21785 (auto_vec<T, N>::auto_vec): Allow allocation of one
21786 stack member. Initialize m_vec in a special way to
21787 avoid later stringop overflow diagnostics.
21788 * vec.cc (test_auto_alias): New.
21789 (vec_cc_tests): Call it.
21791 2023-02-24 Richard Biener <rguenther@suse.de>
21793 * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
21794 take a const reference to the object, use address to
21796 (vec<T, A, vl_embed>::contains): Use address to access data.
21797 (vec<T, A, vl_embed>::operator[]): Use address instead of
21798 m_vecdata to access data.
21799 (vec<T, A, vl_embed>::iterate): Likewise.
21800 (vec<T, A, vl_embed>::copy): Likewise.
21801 (vec<T, A, vl_embed>::quick_push): Likewise.
21802 (vec<T, A, vl_embed>::pop): Likewise.
21803 (vec<T, A, vl_embed>::quick_insert): Likewise.
21804 (vec<T, A, vl_embed>::ordered_remove): Likewise.
21805 (vec<T, A, vl_embed>::unordered_remove): Likewise.
21806 (vec<T, A, vl_embed>::block_remove): Likewise.
21807 (vec<T, A, vl_heap>::address): Likewise.
21809 2023-02-24 Martin Liska <mliska@suse.cz>
21811 PR sanitizer/108834
21812 * asan.cc (asan_add_global): Use proper TU name for normal
21813 global variables (and aux_base_name for the artificial one).
21815 2023-02-24 Jakub Jelinek <jakub@redhat.com>
21817 * config/i386/i386-builtin.def: Update description of BDESC
21818 and BDESC_FIRST in file comment to include mask2.
21820 2023-02-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
21822 * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
21824 2023-02-24 Jakub Jelinek <jakub@redhat.com>
21826 PR middle-end/108854
21827 * cgraphclones.cc (duplicate_thunk_for_node): If no parameter
21828 changes are needed, copy at least DECL_ARGUMENTS PARM_DECL
21829 nodes and adjust their DECL_CONTEXT.
21831 2023-02-24 Jakub Jelinek <jakub@redhat.com>
21834 * config/i386/i386-builtin.def (__builtin_ia32_cvtne2ps2bf16_v16bf,
21835 __builtin_ia32_cvtne2ps2bf16_v16bf_mask,
21836 __builtin_ia32_cvtne2ps2bf16_v16bf_maskz,
21837 __builtin_ia32_cvtne2ps2bf16_v8bf,
21838 __builtin_ia32_cvtne2ps2bf16_v8bf_mask,
21839 __builtin_ia32_cvtne2ps2bf16_v8bf_maskz,
21840 __builtin_ia32_cvtneps2bf16_v8sf_mask,
21841 __builtin_ia32_cvtneps2bf16_v8sf_maskz,
21842 __builtin_ia32_cvtneps2bf16_v4sf_mask,
21843 __builtin_ia32_cvtneps2bf16_v4sf_maskz,
21844 __builtin_ia32_dpbf16ps_v8sf, __builtin_ia32_dpbf16ps_v8sf_mask,
21845 __builtin_ia32_dpbf16ps_v8sf_maskz, __builtin_ia32_dpbf16ps_v4sf,
21846 __builtin_ia32_dpbf16ps_v4sf_mask,
21847 __builtin_ia32_dpbf16ps_v4sf_maskz): Require also
21848 OPTION_MASK_ISA_AVX512VL.
21850 2023-02-24 Sebastian Huber <sebastian.huber@embedded-brains.de>
21852 * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
21853 Add non-compact 32-bit multilibs.
21855 2023-02-24 Junxian Zhu <zhujunxian@oss.cipunited.com>
21857 * config/mips/mips.md (*clo<mode>2): New pattern.
21859 2023-02-24 Prachi Godbole <prachi.godbole@imgtec.com>
21861 * config/mips/mips.h (machine_function): New variable
21862 use_hazard_barrier_return_p.
21863 * config/mips/mips.md (UNSPEC_JRHB): New unspec.
21864 (mips_hb_return_internal): New insn pattern.
21865 * config/mips/mips.cc (mips_attribute_table): Add attribute
21866 use_hazard_barrier_return.
21867 (mips_use_hazard_barrier_return_p): New static function.
21868 (mips_function_attr_inlinable_p): Likewise.
21869 (mips_compute_frame_info): Set use_hazard_barrier_return_p.
21870 Emit error for unsupported architecture choice.
21871 (mips_function_ok_for_sibcall, mips_can_use_return_insn):
21872 Return false for use_hazard_barrier_return.
21873 (mips_expand_epilogue): Emit hazard barrier return.
21874 * doc/extend.texi: Document use_hazard_barrier_return.
21876 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
21878 * config/xtensa/xtensa-dynconfig.cc (config.h, system.h)
21879 (coretypes.h, diagnostic.h, intl.h): Use "..." instead of <...>
21880 for the gcc-internal headers.
21882 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
21884 * config/xtensa/t-xtensa (xtensa-dynconfig.o): Use $(COMPILE)
21885 and $(POSTCOMPILE) instead of manual dependency listing.
21886 * config/xtensa/xtensa-dynconfig.c: Rename to ...
21887 * config/xtensa/xtensa-dynconfig.cc: ... this.
21889 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
21891 * doc/cfg.texi: Reorder index entries around @items.
21892 * doc/cpp.texi: Ditto.
21893 * doc/cppenv.texi: Ditto.
21894 * doc/cppopts.texi: Ditto.
21895 * doc/generic.texi: Ditto.
21896 * doc/install.texi: Ditto.
21897 * doc/extend.texi: Ditto.
21898 * doc/invoke.texi: Ditto.
21899 * doc/md.texi: Ditto.
21900 * doc/rtl.texi: Ditto.
21901 * doc/tm.texi.in: Ditto.
21902 * doc/trouble.texi: Ditto.
21903 * doc/tm.texi: Regenerate.
21905 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
21907 * config/xtensa/xtensa.md: New peephole2 pattern that eliminates
21908 the occurrence of general-purpose register used only once and for
21909 transferring intermediate value.
21911 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
21913 * config/xtensa/xtensa.cc (machine_function): Add new member
21914 'eliminated_callee_saved_bmp'.
21915 (xtensa_can_eliminate_callee_saved_reg_p): New function to
21916 determine whether the register can be eliminated or not.
21917 (xtensa_expand_prologue): Add invoking the above function and
21918 elimination the use of callee-saved register by using its stack
21919 slot through the stack pointer (or the frame pointer if needed)
21921 (xtensa_expand_prologue): Modify to not emit register restoration
21922 insn from its stack slot if the register is already eliminated.
21924 2023-02-23 Jakub Jelinek <jakub@redhat.com>
21926 PR translation/108890
21927 * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
21928 around fatal_error format strings.
21930 2023-02-23 Richard Biener <rguenther@suse.de>
21932 * tree-ssa-structalias.cc (handle_lhs_call): Do not
21933 re-create rhsc, only truncate it.
21935 2023-02-23 Jakub Jelinek <jakub@redhat.com>
21937 PR middle-end/106258
21938 * ipa-prop.cc (try_make_edge_direct_virtual_call): Handle
21939 BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
21941 2023-02-23 Richard Biener <rguenther@suse.de>
21943 * tree-if-conv.cc (tree_if_conversion): Properly manage
21944 memory of refs and the contained data references.
21946 2023-02-23 Richard Biener <rguenther@suse.de>
21948 PR tree-optimization/108888
21949 * tree-if-conv.cc (if_convertible_stmt_p): Set PLF_2 on
21950 calls to predicate.
21951 (predicate_statements): Only predicate calls with PLF_2.
21953 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
21955 * config/xtensa/xtensa.md
21956 (zero_cost_loop_start, zero_cost_loop_end, loop_end):
21957 Add missing "SI:" to PLUS RTXes.
21959 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
21962 * config/xtensa/xtensa.cc (xtensa_expand_epilogue):
21963 Emit (use (reg:SI A0_REG)) at the end in the sibling call
21964 (i.e. the same place as (return) in the normal call).
21966 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
21969 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
21972 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
21974 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
21975 (sibcall_value, sibcall_value_internal): Add 'use' expression
21978 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
21980 * doc/cppdiropts.texi: Reorder @opindex commands to precede
21981 @items they relate to.
21982 * doc/cppopts.texi: Ditto.
21983 * doc/cppwarnopts.texi: Ditto.
21984 * doc/invoke.texi: Ditto.
21985 * doc/lto.texi: Ditto.
21987 2023-02-22 Andrew Stubbs <ams@codesourcery.com>
21989 * internal-fn.cc (expand_MASK_CALL): New.
21990 * internal-fn.def (MASK_CALL): New.
21991 * internal-fn.h (expand_MASK_CALL): New prototype.
21992 * omp-simd-clone.cc (simd_clone_adjust_argument_types): Set vector_type
21993 for mask arguments also.
21994 * tree-if-conv.cc: Include cgraph.h.
21995 (if_convertible_stmt_p): Do if conversions for calls to SIMD calls.
21996 (predicate_statements): Convert functions to IFN_MASK_CALL.
21997 * tree-vect-loop.cc (vect_get_datarefs_in_loop): Recognise
21998 IFN_MASK_CALL as a SIMD function call.
21999 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
22000 IFN_MASK_CALL as an inbranch SIMD function call.
22001 Generate the mask vector arguments.
22003 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22005 * config/riscv/riscv-vector-builtins-bases.cc (class reducop): New class.
22006 (class widen_reducop): Ditto.
22007 (class freducop): Ditto.
22008 (class widen_freducop): Ditto.
22010 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22011 * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
22020 (vwredsumu): Ditto.
22021 (vfredusum): Ditto.
22022 (vfredosum): Ditto.
22025 (vfwredosum): Ditto.
22026 (vfwredusum): Ditto.
22027 * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
22029 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
22030 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WI_OPS): New macro.
22031 (DEF_RVV_WU_OPS): Ditto.
22032 (DEF_RVV_WF_OPS): Ditto.
22033 (vint8mf8_t): Ditto.
22034 (vint8mf4_t): Ditto.
22035 (vint8mf2_t): Ditto.
22036 (vint8m1_t): Ditto.
22037 (vint8m2_t): Ditto.
22038 (vint8m4_t): Ditto.
22039 (vint8m8_t): Ditto.
22040 (vint16mf4_t): Ditto.
22041 (vint16mf2_t): Ditto.
22042 (vint16m1_t): Ditto.
22043 (vint16m2_t): Ditto.
22044 (vint16m4_t): Ditto.
22045 (vint16m8_t): Ditto.
22046 (vint32mf2_t): Ditto.
22047 (vint32m1_t): Ditto.
22048 (vint32m2_t): Ditto.
22049 (vint32m4_t): Ditto.
22050 (vint32m8_t): Ditto.
22051 (vuint8mf8_t): Ditto.
22052 (vuint8mf4_t): Ditto.
22053 (vuint8mf2_t): Ditto.
22054 (vuint8m1_t): Ditto.
22055 (vuint8m2_t): Ditto.
22056 (vuint8m4_t): Ditto.
22057 (vuint8m8_t): Ditto.
22058 (vuint16mf4_t): Ditto.
22059 (vuint16mf2_t): Ditto.
22060 (vuint16m1_t): Ditto.
22061 (vuint16m2_t): Ditto.
22062 (vuint16m4_t): Ditto.
22063 (vuint16m8_t): Ditto.
22064 (vuint32mf2_t): Ditto.
22065 (vuint32m1_t): Ditto.
22066 (vuint32m2_t): Ditto.
22067 (vuint32m4_t): Ditto.
22068 (vuint32m8_t): Ditto.
22069 (vfloat32mf2_t): Ditto.
22070 (vfloat32m1_t): Ditto.
22071 (vfloat32m2_t): Ditto.
22072 (vfloat32m4_t): Ditto.
22073 (vfloat32m8_t): Ditto.
22074 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WI_OPS): Ditto.
22075 (DEF_RVV_WU_OPS): Ditto.
22076 (DEF_RVV_WF_OPS): Ditto.
22077 (required_extensions_p): Add reduction support.
22078 (rvv_arg_type_info::get_base_vector_type): Ditto.
22079 (rvv_arg_type_info::get_tree_type): Ditto.
22080 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
22081 * config/riscv/riscv.md: Ditto.
22082 * config/riscv/vector-iterators.md (minu): Ditto.
22083 * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): New patern.
22084 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
22085 (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Ditto.
22086 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>):Ditto.
22087 (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
22088 (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
22089 (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
22091 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22093 * config/riscv/iterators.md: New iterator.
22094 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class.
22095 (enum ternop_type): New enum.
22096 (class vmacc): New class.
22097 (class imac): Ditto.
22098 (class vnmsac): Ditto.
22099 (enum widen_ternop_type): New enum.
22100 (class vmadd): Ditto.
22101 (class vnmsub): Ditto.
22102 (class iwmac): Ditto.
22103 (class vwmacc): Ditto.
22104 (class vwmaccu): Ditto.
22105 (class vwmaccsu): Ditto.
22106 (class vwmaccus): Ditto.
22107 (class reverse_binop): Ditto.
22108 (class vfmacc): Ditto.
22109 (class vfnmsac): Ditto.
22110 (class vfmadd): Ditto.
22111 (class vfnmsub): Ditto.
22112 (class vfnmacc): Ditto.
22113 (class vfmsac): Ditto.
22114 (class vfnmadd): Ditto.
22115 (class vfmsub): Ditto.
22116 (class vfwmacc): Ditto.
22117 (class vfwnmacc): Ditto.
22118 (class vfwmsac): Ditto.
22119 (class vfwnmsac): Ditto.
22120 (class float_misc): Ditto.
22121 (class fcmp): Ditto.
22122 (class vfclass): Ditto.
22123 (class vfcvt_x): Ditto.
22124 (class vfcvt_rtz_x): Ditto.
22125 (class vfcvt_f): Ditto.
22126 (class vfwcvt_x): Ditto.
22127 (class vfwcvt_rtz_x): Ditto.
22128 (class vfwcvt_f): Ditto.
22129 (class vfncvt_x): Ditto.
22130 (class vfncvt_rtz_x): Ditto.
22131 (class vfncvt_f): Ditto.
22132 (class vfncvt_rod_f): Ditto.
22134 * config/riscv/riscv-vector-builtins-bases.h:
22135 * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
22179 (vfcvt_rtz_x): Ditto.
22180 (vfcvt_rtz_xu): Ditto.
22183 (vfwcvt_xu): Ditto.
22184 (vfwcvt_rtz_x): Ditto.
22185 (vfwcvt_rtz_xu): Ditto.
22188 (vfncvt_xu): Ditto.
22189 (vfncvt_rtz_x): Ditto.
22190 (vfncvt_rtz_xu): Ditto.
22192 (vfncvt_rod_f): Ditto.
22193 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
22194 (struct move_def): Ditto.
22195 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTF_OPS): New macro.
22196 (DEF_RVV_CONVERT_I_OPS): Ditto.
22197 (DEF_RVV_CONVERT_U_OPS): Ditto.
22198 (DEF_RVV_WCONVERT_I_OPS): Ditto.
22199 (DEF_RVV_WCONVERT_U_OPS): Ditto.
22200 (DEF_RVV_WCONVERT_F_OPS): Ditto.
22201 (vfloat64m1_t): Ditto.
22202 (vfloat64m2_t): Ditto.
22203 (vfloat64m4_t): Ditto.
22204 (vfloat64m8_t): Ditto.
22205 (vint32mf2_t): Ditto.
22206 (vint32m1_t): Ditto.
22207 (vint32m2_t): Ditto.
22208 (vint32m4_t): Ditto.
22209 (vint32m8_t): Ditto.
22210 (vint64m1_t): Ditto.
22211 (vint64m2_t): Ditto.
22212 (vint64m4_t): Ditto.
22213 (vint64m8_t): Ditto.
22214 (vuint32mf2_t): Ditto.
22215 (vuint32m1_t): Ditto.
22216 (vuint32m2_t): Ditto.
22217 (vuint32m4_t): Ditto.
22218 (vuint32m8_t): Ditto.
22219 (vuint64m1_t): Ditto.
22220 (vuint64m2_t): Ditto.
22221 (vuint64m4_t): Ditto.
22222 (vuint64m8_t): Ditto.
22223 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_CONVERT_I_OPS): Ditto.
22224 (DEF_RVV_CONVERT_U_OPS): Ditto.
22225 (DEF_RVV_WCONVERT_I_OPS): Ditto.
22226 (DEF_RVV_WCONVERT_U_OPS): Ditto.
22227 (DEF_RVV_WCONVERT_F_OPS): Ditto.
22228 (DEF_RVV_F_OPS): Ditto.
22229 (DEF_RVV_WEXTF_OPS): Ditto.
22230 (required_extensions_p): Adjust for floating-point support.
22231 (check_required_extensions): Ditto.
22232 (unsigned_base_type_p): Ditto.
22233 (get_mode_for_bitsize): Ditto.
22234 (rvv_arg_type_info::get_base_vector_type): Ditto.
22235 (rvv_arg_type_info::get_tree_type): Ditto.
22236 * config/riscv/riscv-vector-builtins.def (v_f): New define.
22239 (xu_v): New define.
22241 (xu_w): New define.
22242 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): New enum.
22243 (function_expander::arg_mode): New function.
22244 * config/riscv/vector-iterators.md (sof): New iterator.
22250 (fixuns_trunc): Ditto.
22252 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
22253 (@pred_<optab><mode>): Ditto.
22254 (@pred_<optab><mode>_scalar): Ditto.
22255 (@pred_<optab><mode>_reverse_scalar): Ditto.
22256 (@pred_<copysign><mode>): Ditto.
22257 (@pred_<copysign><mode>_scalar): Ditto.
22258 (@pred_mul_<optab><mode>): Ditto.
22259 (pred_mul_<optab><mode>_undef_merge): Ditto.
22260 (*pred_<madd_nmsub><mode>): Ditto.
22261 (*pred_<macc_nmsac><mode>): Ditto.
22262 (*pred_mul_<optab><mode>): Ditto.
22263 (@pred_mul_<optab><mode>_scalar): Ditto.
22264 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
22265 (*pred_<madd_nmsub><mode>_scalar): Ditto.
22266 (*pred_<macc_nmsac><mode>_scalar): Ditto.
22267 (*pred_mul_<optab><mode>_scalar): Ditto.
22268 (@pred_neg_mul_<optab><mode>): Ditto.
22269 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
22270 (*pred_<nmadd_msub><mode>): Ditto.
22271 (*pred_<nmacc_msac><mode>): Ditto.
22272 (*pred_neg_mul_<optab><mode>): Ditto.
22273 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
22274 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
22275 (*pred_<nmadd_msub><mode>_scalar): Ditto.
22276 (*pred_<nmacc_msac><mode>_scalar): Ditto.
22277 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
22278 (@pred_<misc_op><mode>): Ditto.
22279 (@pred_class<mode>): Ditto.
22280 (@pred_dual_widen_<optab><mode>): Ditto.
22281 (@pred_dual_widen_<optab><mode>_scalar): Ditto.
22282 (@pred_single_widen_<plus_minus:optab><mode>): Ditto.
22283 (@pred_single_widen_<plus_minus:optab><mode>_scalar): Ditto.
22284 (@pred_widen_mul_<optab><mode>): Ditto.
22285 (@pred_widen_mul_<optab><mode>_scalar): Ditto.
22286 (@pred_widen_neg_mul_<optab><mode>): Ditto.
22287 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
22288 (@pred_cmp<mode>): Ditto.
22289 (*pred_cmp<mode>): Ditto.
22290 (*pred_cmp<mode>_narrow): Ditto.
22291 (@pred_cmp<mode>_scalar): Ditto.
22292 (*pred_cmp<mode>_scalar): Ditto.
22293 (*pred_cmp<mode>_scalar_narrow): Ditto.
22294 (@pred_eqne<mode>_scalar): Ditto.
22295 (*pred_eqne<mode>_scalar): Ditto.
22296 (*pred_eqne<mode>_scalar_narrow): Ditto.
22297 (@pred_merge<mode>_scalar): Ditto.
22298 (@pred_fcvt_x<v_su>_f<mode>): Ditto.
22299 (@pred_<fix_cvt><mode>): Ditto.
22300 (@pred_<float_cvt><mode>): Ditto.
22301 (@pred_widen_fcvt_x<v_su>_f<mode>): Ditto.
22302 (@pred_widen_<fix_cvt><mode>): Ditto.
22303 (@pred_widen_<float_cvt><mode>): Ditto.
22304 (@pred_extend<mode>): Ditto.
22305 (@pred_narrow_fcvt_x<v_su>_f<mode>): Ditto.
22306 (@pred_narrow_<fix_cvt><mode>): Ditto.
22307 (@pred_narrow_<float_cvt><mode>): Ditto.
22308 (@pred_trunc<mode>): Ditto.
22309 (@pred_rod_trunc<mode>): Ditto.
22311 2023-02-22 Jakub Jelinek <jakub@redhat.com>
22313 PR middle-end/106258
22314 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
22315 cgraph_update_edges_for_call_stmt_node, cgraph_node::verify_node):
22316 Handle BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
22317 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
22319 2023-02-22 Thomas Schwinge <thomas@codesourcery.com>
22321 * common.opt (-Wcomplain-wrong-lang): New.
22322 * doc/invoke.texi (-Wno-complain-wrong-lang): Document it.
22323 * opts-common.cc (prune_options): Handle it.
22324 * opts-global.cc (complain_wrong_lang): Use it.
22326 2023-02-21 David Malcolm <dmalcolm@redhat.com>
22329 * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
22331 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
22334 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
22336 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
22337 (sibcall_value, sibcall_value_internal): Add 'use' expression
22340 2023-02-21 Richard Biener <rguenther@suse.de>
22342 PR tree-optimization/108691
22343 * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove
22344 assert about calls_setjmp not becoming true when it was false.
22346 2023-02-21 Richard Biener <rguenther@suse.de>
22348 PR tree-optimization/108793
22349 * tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
22350 Use convert operands to niter_type when computing num.
22352 2023-02-21 Richard Biener <rguenther@suse.de>
22355 2023-02-13 Richard Biener <rguenther@suse.de>
22357 PR tree-optimization/108691
22358 * tree-cfg.cc (notice_special_calls): When the CFG is built
22359 honor gimple_call_ctrl_altering_p.
22360 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
22361 temporarily if the call is not control-altering.
22362 * calls.cc (emit_call_1): Do not add REG_SETJMP if
22363 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
22365 2023-02-21 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
22367 * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
22368 true if register A0 (return address register) when -Og is specified.
22370 2023-02-20 Uroš Bizjak <ubizjak@gmail.com>
22372 * config/i386/predicates.md
22373 (general_x64constmem_operand): New predicate.
22374 * config/i386/i386.md (*cmpqi_ext<mode>_1):
22375 Use nonimm_x64constmem_operand.
22376 (*cmpqi_ext<mode>_3): Use general_x64constmem_operand.
22377 (*addqi_ext<mode>_1): Ditto.
22378 (*testqi_ext<mode>_1): Ditto.
22379 (*andqi_ext<mode>_1): Ditto.
22380 (*andqi_ext<mode>_1_cc): Ditto.
22381 (*<any_or:code>qi_ext<mode>_1): Ditto.
22382 (*xorqi_ext<mode>_1_cc): Ditto.
22384 2023-02-20 Jakub Jelinek <jakub2redhat.com>
22387 * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
22388 gen_umadddi4_highpart{,_le}.
22390 2023-02-20 Kito Cheng <kito.cheng@sifive.com>
22392 * config/riscv/riscv.md (prefetch): Use r instead of p for the
22394 (riscv_prefetchi_<mode>): Ditto.
22396 2023-02-20 Richard Biener <rguenther@suse.de>
22398 PR tree-optimization/108816
22399 * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
22400 versioning condition split prerequesite, assert required
22403 2023-02-20 Richard Biener <rguenther@suse.de>
22405 PR tree-optimization/108825
22406 * tree-ssa-loop-manip.cc (verify_loop_closed_ssa): For
22407 loop-local verfication only verify there's no pending SSA
22410 2023-02-20 Richard Biener <rguenther@suse.de>
22412 PR tree-optimization/108819
22413 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): Check
22414 we have an SSA name as iv_2 as expected.
22416 2023-02-18 Jakub Jelinek <jakub@redhat.com>
22418 PR tree-optimization/108819
22419 * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
22421 2023-02-18 Jakub Jelinek <jakub@redhat.com>
22424 * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
22425 * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
22427 * config/i386/i386.md: Replace replace_rtx calls in all peephole2s
22428 with ix86_replace_reg_with_reg.
22430 2023-02-18 Gerald Pfeifer <gerald@pfeifer.com>
22432 * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
22434 2023-02-18 Xi Ruoyao <xry111@xry111.site>
22436 * config.gcc (triplet_abi): Set its value based on $with_abi,
22437 instead of $target.
22438 (la_canonical_triplet): Set it after $triplet_abi is set
22440 * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
22441 multiarch tuple for lp64d "loongarch64-linux-gnu" (without
22444 2023-02-18 Andrew Pinski <apinski@marvell.com>
22446 * match.pd: Remove #if GIMPLE around the
22449 2023-02-18 Andrew Pinski <apinski@marvell.com>
22451 * value-query.h (get_range_query): Return the global ranges
22452 for a nullptr func.
22454 2023-02-17 Siddhesh Poyarekar <siddhesh@gotplt.org>
22456 * doc/invoke.texi (@item -Wall): Fix typo in
22459 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
22462 * config/i386/predicates.md
22463 (nonimm_x64constmem_operand): New predicate.
22464 * config/i386/i386.md (*addqi_ext<mode>_0): New insn pattern.
22465 (*subqi_ext<mode>_0): Ditto.
22466 (*andqi_ext<mode>_0): Ditto.
22467 (*<any_or:code>qi_ext<mode>_0): Ditto.
22469 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
22472 * simplify-rtx.cc (simplify_context::simplify_subreg): Use
22473 int_outermode instead of GET_MODE (tem) to prevent
22474 VOIDmode from entering simplify_gen_subreg.
22476 2023-02-17 Richard Biener <rguenther@suse.de>
22478 PR tree-optimization/108821
22479 * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
22480 move volatile accesses.
22482 2023-02-17 Richard Biener <rguenther@suse.de>
22484 * tree-ssa.cc (ssa_undefined_value_p): Assert we are not
22485 called on virtual operands.
22486 * tree-ssa-sccvn.cc (vn_phi_lookup): Guard
22487 ssa_undefined_value_p calls.
22488 (vn_phi_insert): Likewise.
22489 (set_ssa_val_to): Likewise.
22490 (visit_phi): Avoid extra work with equivalences for
22491 virtual operand PHIs.
22493 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22495 * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
22497 (class mask_nlogic): Ditto.
22498 (class mask_notlogic): Ditto.
22499 (class vmmv): Ditto.
22500 (class vmclr): Ditto.
22501 (class vmset): Ditto.
22502 (class vmnot): Ditto.
22503 (class vcpop): Ditto.
22504 (class vfirst): Ditto.
22505 (class mask_misc): Ditto.
22506 (class viota): Ditto.
22507 (class vid): Ditto.
22509 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22510 * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
22529 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
22530 (struct mask_alu_def): Ditto.
22532 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
22533 * config/riscv/riscv-vector-builtins.cc: Ditto.
22534 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug
22535 for dest it scalar RVV intrinsics.
22536 * config/riscv/vector-iterators.md (sof): New iterator.
22537 * config/riscv/vector.md (@pred_<optab>n<mode>): New pattern.
22538 (@pred_<optab>not<mode>): New pattern.
22539 (@pred_popcount<VB:mode><P:mode>): New pattern.
22540 (@pred_ffs<VB:mode><P:mode>): New pattern.
22541 (@pred_<misc_op><mode>): New pattern.
22542 (@pred_iota<mode>): New pattern.
22543 (@pred_series<mode>): New pattern.
22545 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22547 * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
22551 * config/riscv/riscv-vector-builtins.cc: Ditto.
22553 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22554 kito-cheng <kito.cheng@sifive.com>
22556 * config/riscv/riscv-protos.h (sew64_scalar_helper): New function.
22557 * config/riscv/riscv-v.cc (has_vi_variant_p): Adjust.
22558 (sew64_scalar_helper): New function.
22559 * config/riscv/vector.md: Normalization.
22561 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22563 * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
22625 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22627 * config/riscv/vector.md (@pred_<optab><mode>): Rearrange.
22628 (@pred_<optab><mode>_scalar): Ditto.
22629 (*pred_<optab><mode>_scalar): Ditto.
22630 (*pred_<optab><mode>_extended_scalar): Ditto.
22632 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22634 * config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'.
22635 (init_builtins): Ditto.
22636 (mangle_builtin_type): Ditto.
22637 (verify_type_context): Ditto.
22638 (handle_pragma_vector): Ditto.
22639 (builtin_decl): Ditto.
22640 (expand_builtin): Ditto.
22641 (const_vec_all_same_in_range_p): Ditto.
22642 (legitimize_move): Ditto.
22643 (emit_vlmax_op): Ditto.
22644 (emit_nonvlmax_op): Ditto.
22645 (get_vlmul): Ditto.
22646 (get_ratio): Ditto.
22649 (get_avl_type): Ditto.
22650 (calculate_ratio): Ditto.
22651 (enum vlmul_type): Ditto.
22653 (neg_simm5_p): Ditto.
22654 (has_vi_variant_p): Ditto.
22656 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22658 * config/riscv/riscv-protos.h (simm32_p): Remove.
22659 * config/riscv/riscv-v.cc (simm32_p): Ditto.
22660 * config/riscv/vector.md: Use immediate_operand
22661 instead of riscv_vector::simm32_p.
22663 2023-02-16 Gerald Pfeifer <gerald@pfeifer.com>
22665 * doc/invoke.texi (Optimize Options): Reword the explanation
22666 getting minimal, maximal and default values of a parameter.
22668 2023-02-16 Patrick Palka <ppalka@redhat.com>
22670 * addresses.h: Mechanically drop 'static' from 'static inline'
22671 functions via s/^static inline/inline/g.
22672 * asan.h: Likewise.
22673 * attribs.h: Likewise.
22674 * basic-block.h: Likewise.
22675 * bitmap.h: Likewise.
22676 * cfghooks.h: Likewise.
22677 * cfgloop.h: Likewise.
22678 * cgraph.h: Likewise.
22679 * cselib.h: Likewise.
22680 * data-streamer.h: Likewise.
22681 * debug.h: Likewise.
22683 * diagnostic.h: Likewise.
22684 * dominance.h: Likewise.
22685 * dumpfile.h: Likewise.
22686 * emit-rtl.h: Likewise.
22687 * except.h: Likewise.
22688 * expmed.h: Likewise.
22689 * expr.h: Likewise.
22690 * fixed-value.h: Likewise.
22691 * gengtype.h: Likewise.
22692 * gimple-expr.h: Likewise.
22693 * gimple-iterator.h: Likewise.
22694 * gimple-predict.h: Likewise.
22695 * gimple-range-fold.h: Likewise.
22696 * gimple-ssa.h: Likewise.
22697 * gimple.h: Likewise.
22698 * graphite.h: Likewise.
22699 * hard-reg-set.h: Likewise.
22700 * hash-map.h: Likewise.
22701 * hash-set.h: Likewise.
22702 * hash-table.h: Likewise.
22703 * hwint.h: Likewise.
22704 * input.h: Likewise.
22705 * insn-addr.h: Likewise.
22706 * internal-fn.h: Likewise.
22707 * ipa-fnsummary.h: Likewise.
22708 * ipa-icf-gimple.h: Likewise.
22709 * ipa-inline.h: Likewise.
22710 * ipa-modref.h: Likewise.
22711 * ipa-prop.h: Likewise.
22712 * ira-int.h: Likewise.
22714 * lra-int.h: Likewise.
22716 * lto-streamer.h: Likewise.
22717 * memmodel.h: Likewise.
22718 * omp-general.h: Likewise.
22719 * optabs-query.h: Likewise.
22720 * optabs.h: Likewise.
22721 * plugin.h: Likewise.
22722 * pretty-print.h: Likewise.
22723 * range.h: Likewise.
22724 * read-md.h: Likewise.
22725 * recog.h: Likewise.
22726 * regs.h: Likewise.
22727 * rtl-iter.h: Likewise.
22729 * sbitmap.h: Likewise.
22730 * sched-int.h: Likewise.
22731 * sel-sched-ir.h: Likewise.
22732 * sese.h: Likewise.
22733 * sparseset.h: Likewise.
22734 * ssa-iterators.h: Likewise.
22735 * system.h: Likewise.
22736 * target-globals.h: Likewise.
22737 * target.h: Likewise.
22738 * timevar.h: Likewise.
22739 * tree-chrec.h: Likewise.
22740 * tree-data-ref.h: Likewise.
22741 * tree-iterator.h: Likewise.
22742 * tree-outof-ssa.h: Likewise.
22743 * tree-phinodes.h: Likewise.
22744 * tree-scalar-evolution.h: Likewise.
22745 * tree-sra.h: Likewise.
22746 * tree-ssa-alias.h: Likewise.
22747 * tree-ssa-live.h: Likewise.
22748 * tree-ssa-loop-manip.h: Likewise.
22749 * tree-ssa-loop.h: Likewise.
22750 * tree-ssa-operands.h: Likewise.
22751 * tree-ssa-propagate.h: Likewise.
22752 * tree-ssa-sccvn.h: Likewise.
22753 * tree-ssa.h: Likewise.
22754 * tree-ssanames.h: Likewise.
22755 * tree-streamer.h: Likewise.
22756 * tree-switch-conversion.h: Likewise.
22757 * tree-vectorizer.h: Likewise.
22758 * tree.h: Likewise.
22759 * wide-int.h: Likewise.
22761 2023-02-16 Jakub Jelinek <jakub@redhat.com>
22763 PR tree-optimization/108657
22764 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt
22765 exists and is not a SSA_NAME, call ao_ref_init even if the stmt
22766 is a call to internal or builtin function.
22768 2023-02-16 Jonathan Wakely <jwakely@redhat.com>
22770 * doc/invoke.texi (C++ Dialect Options): Suggest adding a
22771 using-declaration to unhide functions.
22773 2023-02-16 Jakub Jelinek <jakub@redhat.com>
22775 PR tree-optimization/108783
22776 * tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode
22777 is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set
22778 t to curr->op. Otherwise, punt if either newop1 or newop2 are
22779 SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs.
22781 2023-02-16 Richard Biener <rguenther@suse.de>
22783 PR tree-optimization/108791
22784 * tree-ssa-forwprop.cc (optimize_vector_load): Build
22785 the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful
22788 2023-02-15 Eric Botcazou <ebotcazou@adacore.com>
22791 * config/i386/i386.cc (ix86_compute_frame_layout): Disable the
22792 effects of -fstack-clash-protection for TARGET_STACK_PROBE.
22793 (ix86_expand_prologue): Likewise.
22795 2023-02-15 Jan-Benedict Glaw <jbglaw@lug-owl.de>
22797 * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
22799 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
22801 * config/i386/i386.md (*cmpqi_ext<mode>_1): Use
22802 int248_register_operand predicate in zero_extract sub-RTX.
22803 (*cmpqi_ext<mode>_2): Ditto.
22804 (*cmpqi_ext<mode>_3): Ditto.
22805 (*cmpqi_ext<mode>_4): Ditto.
22806 (*extzvqi_mem_rex64): Ditto.
22808 (*insvqi_1_mem_rex64): Ditto.
22809 (@insv<mode>_1): Ditto.
22810 (*insvqi_1): Ditto.
22811 (*insvqi_2): Ditto.
22812 (*insvqi_3): Ditto.
22813 (*extendqi<SWI24:mode>_ext_1): Ditto.
22814 (*addqi_ext<mode>_1): Ditto.
22815 (*addqi_ext<mode>_2): Ditto.
22816 (*subqi_ext<mode>_2): Ditto.
22817 (*testqi_ext<mode>_1): Ditto.
22818 (*testqi_ext<mode>_2): Ditto.
22819 (*andqi_ext<mode>_1): Ditto.
22820 (*andqi_ext<mode>_1_cc): Ditto.
22821 (*andqi_ext<mode>_2): Ditto.
22822 (*<any_or:code>qi_ext<mode>_1): Ditto.
22823 (*<any_or:code>qi_ext<mode>_2): Ditto.
22824 (*xorqi_ext<mode>_1_cc): Ditto.
22825 (*negqi_ext<mode>_2): Ditto.
22826 (*ashlqi_ext<mode>_2): Ditto.
22827 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
22829 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
22831 * config/i386/predicates.md (int248_register_operand):
22832 Rename from extr_register_operand.
22833 * config/i386/i386.md (*extv<mode>): Update for renamed predicate.
22834 (*extzx<mode>): Ditto.
22835 (*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate.
22836 (*ashl<mode>3_mask): Ditto.
22837 (*<any_shiftrt:insn><mode>3_mask): Ditto.
22838 (*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto.
22839 (*<any_rotate:insn><mode>3_mask): Ditto.
22840 (*<btsc><mode>_mask): Ditto.
22841 (*btr<mode>_mask): Ditto.
22842 (*jcc_bt<mode>_mask_1): Ditto.
22844 2023-02-15 Richard Biener <rguenther@suse.de>
22846 PR middle-end/26854
22847 * df-core.cc (df_worklist_propagate_forward): Put later
22848 blocks on worklist and only earlier blocks on pending.
22849 (df_worklist_propagate_backward): Likewise.
22850 (df_worklist_dataflow_doublequeue): Change the iteration
22851 to process new blocks in the same iteration if that
22852 maintains the iteration order.
22854 2023-02-15 Marek Polacek <polacek@redhat.com>
22856 PR middle-end/106080
22857 * gimple-ssa-warn-access.cc (is_auto_decl): Remove. Use auto_var_p
22860 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22862 * config/riscv/predicates.md: Refine codes.
22863 * config/riscv/riscv-protos.h (RVV_VUNDEF): New macro.
22864 * config/riscv/riscv-v.cc: Refine codes.
22865 * config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New
22867 (class imac): New class.
22868 (enum widen_ternop_type): New enum.
22869 (class iwmac): New class.
22871 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22872 * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
22880 * config/riscv/riscv-vector-builtins.cc
22881 (function_builder::apply_predication): Adjust for multiply-add support.
22882 (function_expander::add_vundef_operand): Refine codes.
22883 (function_expander::use_ternop_insn): New function.
22884 (function_expander::use_widen_ternop_insn): Ditto.
22885 * config/riscv/riscv-vector-builtins.h: New function.
22886 * config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern.
22887 (pred_mul_<optab><mode>_undef_merge): Ditto.
22888 (*pred_<madd_nmsub><mode>): Ditto.
22889 (*pred_<macc_nmsac><mode>): Ditto.
22890 (*pred_mul_<optab><mode>): Ditto.
22891 (@pred_mul_<optab><mode>_scalar): Ditto.
22892 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
22893 (*pred_<madd_nmsub><mode>_scalar): Ditto.
22894 (*pred_<macc_nmsac><mode>_scalar): Ditto.
22895 (*pred_mul_<optab><mode>_scalar): Ditto.
22896 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
22897 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
22898 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
22899 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
22900 (@pred_widen_mul_plus<su><mode>): Ditto.
22901 (@pred_widen_mul_plus<su><mode>_scalar): Ditto.
22902 (@pred_widen_mul_plussu<mode>): Ditto.
22903 (@pred_widen_mul_plussu<mode>_scalar): Ditto.
22904 (@pred_widen_mul_plusus<mode>_scalar): Ditto.
22906 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22908 * config/riscv/predicates.md (vector_mask_operand): Refine the codes.
22909 (vector_all_trues_mask_operand): New predicate.
22910 (vector_undef_operand): New predicate.
22911 (ltge_operator): New predicate.
22912 (comparison_except_ltge_operator): New predicate.
22913 (comparison_except_eqge_operator): New predicate.
22914 (ge_operator): New predicate.
22915 * config/riscv/riscv-v.cc (has_vi_variant_p): Add compare support.
22916 * config/riscv/riscv-vector-builtins-bases.cc (class icmp): New class.
22918 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22919 * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
22929 * config/riscv/riscv-vector-builtins-shapes.cc
22930 (struct return_mask_def): Adjust for compare support.
22931 * config/riscv/riscv-vector-builtins.cc
22932 (function_expander::use_compare_insn): New function.
22933 * config/riscv/riscv-vector-builtins.h
22934 (function_expander::add_integer_operand): Ditto.
22935 * config/riscv/riscv.cc (riscv_print_operand): Add compare support.
22936 * config/riscv/riscv.md: Add vector min/max attributes.
22937 * config/riscv/vector-iterators.md (xnor): New iterator.
22938 * config/riscv/vector.md (@pred_cmp<mode>): New pattern.
22939 (*pred_cmp<mode>): Ditto.
22940 (*pred_cmp<mode>_narrow): Ditto.
22941 (@pred_ltge<mode>): Ditto.
22942 (*pred_ltge<mode>): Ditto.
22943 (*pred_ltge<mode>_narrow): Ditto.
22944 (@pred_cmp<mode>_scalar): Ditto.
22945 (*pred_cmp<mode>_scalar): Ditto.
22946 (*pred_cmp<mode>_scalar_narrow): Ditto.
22947 (@pred_eqne<mode>_scalar): Ditto.
22948 (*pred_eqne<mode>_scalar): Ditto.
22949 (*pred_eqne<mode>_scalar_narrow): Ditto.
22950 (*pred_cmp<mode>_extended_scalar): Ditto.
22951 (*pred_cmp<mode>_extended_scalar_narrow): Ditto.
22952 (*pred_eqne<mode>_extended_scalar): Ditto.
22953 (*pred_eqne<mode>_extended_scalar_narrow): Ditto.
22954 (@pred_ge<mode>_scalar): Ditto.
22955 (@pred_<optab><mode>): Ditto.
22956 (@pred_n<optab><mode>): Ditto.
22957 (@pred_<optab>n<mode>): Ditto.
22958 (@pred_not<mode>): Ditto.
22960 2023-02-15 Martin Jambor <mjambor@suse.cz>
22963 * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
22964 creation of non-scalar replacements even if IPA-CP knows their
22967 2023-02-15 Jakub Jelinek <jakub@redhat.com>
22971 * config/rs6000/rs6000.md (<u>maddditi4): Change into umaddditi4 only
22972 expander, change operand 3 to be TImode, emit maddlddi4 and
22973 umadddi4_highpart{,_le} with its low half and finally add the high
22974 half to the result.
22976 2023-02-15 Martin Liska <mliska@suse.cz>
22978 * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
22980 2023-02-15 Richard Biener <rguenther@suse.de>
22982 * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
22983 for with_poison and alias worklist to it.
22984 (sanitize_asan_mark_poison): Likewise.
22986 2023-02-15 Richard Biener <rguenther@suse.de>
22989 * config/i386/i386-features.cc (scalar_chain::add_to_queue):
22990 Combine bitmap test and set.
22991 (scalar_chain::add_insn): Likewise.
22992 (scalar_chain::analyze_register_chain): Remove redundant
22993 attempt to add to queue and instead strengthen assert.
22994 Sink common attempts to mark the def dual-mode.
22995 (scalar_chain::add_to_queue): Remove redundant insn bitmap
22998 2023-02-15 Richard Biener <rguenther@suse.de>
23001 * config/i386/i386-features.cc (convert_scalars_to_vector):
23002 Switch candidates bitmaps to tree view before building the chains.
23004 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
23006 * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
23007 "failure trying to reload" call.
23009 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
23011 * gdbinit.in (phrs): New command.
23012 * sel-sched-dump.cc (debug_hard_reg_set): Remove debug-function.
23013 * ira-color.cc (debug_hard_reg_set): New, calling print_hard_reg_set.
23015 2023-02-14 David Faust <david.faust@oracle.com>
23018 * config/bpf/constraints.md (q): New memory constraint.
23019 * config/bpf/bpf.md (zero_extendhidi2): Use it here.
23020 (zero_extendqidi2): Likewise.
23021 (zero_extendsidi2): Likewise.
23022 (*mov<MM:mode>): Likewise.
23024 2023-02-14 Andrew Pinski <apinski@marvell.com>
23026 PR tree-optimization/108355
23027 PR tree-optimization/96921
23028 * match.pd: Add pattern for "1 - bool_val".
23030 2023-02-14 Richard Biener <rguenther@suse.de>
23032 * tree-ssa-sccvn.cc (vn_phi_compute_hash): Key skipping
23033 basic block index hashing on the availability of ->cclhs.
23034 (vn_phi_eq): Avoid re-doing sanity checks for CSE but
23035 rely on ->cclhs availability.
23036 (vn_phi_lookup): Set ->cclhs only when we are eventually
23037 going to CSE the PHI.
23038 (vn_phi_insert): Likewise.
23040 2023-02-14 Eric Botcazou <ebotcazou@adacore.com>
23042 * gimplify.cc (gimplify_save_expr): Add missing guard.
23044 2023-02-14 Richard Biener <rguenther@suse.de>
23046 PR tree-optimization/108782
23047 * tree-vect-loop.cc (vect_phi_first_order_recurrence_p):
23048 Make sure we're not vectorizing an inner loop.
23050 2023-02-14 Jakub Jelinek <jakub@redhat.com>
23052 PR sanitizer/108777
23053 * params.opt (-param=asan-kernel-mem-intrinsic-prefix=): New param.
23054 * asan.h (asan_memfn_rtl): Declare.
23055 * asan.cc (asan_memfn_rtls): New variable.
23056 (asan_memfn_rtl): New function.
23057 * builtins.cc (expand_builtin): If
23058 param_asan_kernel_mem_intrinsic_prefix and function is
23059 kernel-{,hw}address sanitized, emit calls to
23060 __{,hw}asan_{memcpy,memmove,memset} rather than
23061 {memcpy,memmove,memset}. Use sanitize_flags_p (SANITIZE_ADDRESS)
23062 instead of flag_sanitize & SANITIZE_ADDRESS to check if
23063 asan_intercepted_p functions shouldn't be expanded inline.
23065 2023-02-14 Richard Sandiford <richard.sandiford@arm.com>
23067 PR tree-optimization/96373
23068 * tree-vect-stmts.cc (vectorizable_operation): Predicate trapping
23069 operations on the loop mask. Reject partial vectors if this isn't
23072 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
23074 PR rtl-optimization/108681
23075 * lra-spills.cc (lra_final_code_change): Extend subreg replacement
23076 code to handle bare uses and clobbers.
23078 2023-02-13 Vladimir N. Makarov <vmakarov@redhat.com>
23080 * ira.cc (ira_update_equiv_info_by_shuffle_insn): Clear equiv
23081 caller_save_p flag when clearing defined_p flag.
23082 (setup_reg_equiv): Ditto.
23083 * lra-constraints.cc (lra_constraints): Ditto.
23085 2023-02-13 Uroš Bizjak <ubizjak@gmail.com>
23088 * config/i386/predicates.md (extr_register_operand):
23089 New special predicate.
23090 * config/i386/i386.md (*extv<mode>): Use extr_register_operand
23091 as operand 1 predicate.
23092 (*exzv<mode>): Ditto.
23093 (*extendqi<SWI24:mode>_ext_1): New insn pattern.
23095 2023-02-13 Richard Biener <rguenther@suse.de>
23097 PR tree-optimization/28614
23098 * tree-ssa-sccvn.cc (can_track_predicate_on_edge): Avoid
23099 walking all edges in most cases.
23100 (vn_nary_op_insert_pieces_predicated): Avoid repeated
23101 calls to can_track_predicate_on_edge unless checking is
23103 (process_bb): Instead call it once here for each edge
23104 we register possibly multiple predicates on.
23106 2023-02-13 Richard Biener <rguenther@suse.de>
23108 PR tree-optimization/108691
23109 * tree-cfg.cc (notice_special_calls): When the CFG is built
23110 honor gimple_call_ctrl_altering_p.
23111 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
23112 temporarily if the call is not control-altering.
23113 * calls.cc (emit_call_1): Do not add REG_SETJMP if
23114 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
23116 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
23119 * config/s390/s390.cc (s390_bb_fallthru_entry_likely): Remove.
23120 (struct s390_sched_state): Initialise to zero.
23121 (s390_sched_variable_issue): For better debuggability also emit
23123 (s390_sched_init): Unconditionally reset scheduler state.
23125 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
23127 * ifcvt.h (noce_if_info::cond_inverted): New field.
23128 * ifcvt.cc (cond_move_convert_if_block): Swap the then and else
23129 values when cond_inverted is true.
23130 (noce_find_if_block): Allow the condition to be inverted when
23131 handling conditional moves.
23133 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
23135 * config/s390/predicates.md (execute_operation): Use
23136 constrain_operands instead of extract_constrain_insn in order to
23137 determine wheter there exists a valid alternative.
23139 2023-02-13 Claudiu Zissulescu <claziss@gmail.com>
23141 * common/config/arc/arc-common.cc (arc_option_optimization_table):
23142 Remove millicode from list.
23144 2023-02-13 Martin Liska <mliska@suse.cz>
23146 * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
23148 2023-02-13 Richard Biener <rguenther@suse.de>
23150 PR tree-optimization/106722
23151 * tree-ssa-dce.cc (mark_last_stmt_necessary): Return
23152 whether we marked a stmt.
23153 (mark_control_dependent_edges_necessary): When
23154 mark_last_stmt_necessary didn't mark any stmt make sure
23155 to mark its control dependent edges.
23156 (propagate_necessity): Likewise.
23158 2023-02-13 Kito Cheng <kito.cheng@sifive.com>
23160 * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
23161 (DWARF_FRAME_REGISTERS): New.
23162 (DWARF_REG_TO_UNWIND_COLUMN): New.
23164 2023-02-12 Gerald Pfeifer <gerald@pfeifer.com>
23166 * doc/sourcebuild.texi: Remove (broken) direct reference to
23167 "The GNU configure and build system".
23169 2023-02-12 Jin Ma <jinma@linux.alibaba.com>
23171 * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Change
23172 gen_add3_insn to gen_rtx_SET.
23173 (riscv_adjust_libcall_cfi_epilogue): Likewise.
23175 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23177 * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
23178 (class vnclip): Ditto.
23180 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23181 * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
23190 * config/riscv/vector-iterators.md (su): Add instruction.
23193 * config/riscv/vector.md (@pred_<sat_op><mode>): New pattern.
23194 (@pred_<sat_op><mode>_scalar): Ditto.
23195 (*pred_<sat_op><mode>_scalar): Ditto.
23196 (*pred_<sat_op><mode>_extended_scalar): Ditto.
23197 (@pred_narrow_clip<v_su><mode>): Ditto.
23198 (@pred_narrow_clip<v_su><mode>_scalar): Ditto.
23200 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23202 * config/riscv/constraints.md (Wbr): Remove unused constraint.
23203 * config/riscv/predicates.md: Fix move operand predicate.
23204 * config/riscv/riscv-vector-builtins-bases.cc (class vnshift): New class.
23205 (class vncvt_x): Ditto.
23206 (class vmerge): Ditto.
23207 (class vmv_v): Ditto.
23209 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23210 * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
23217 * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
23218 (struct move_def): Ditto.
23220 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
23221 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): New variable.
23222 (DEF_RVV_WEXTU_OPS): Ditto
23223 * config/riscv/riscv-vector-builtins.def (x_x_w): Fix type for suffix.
23228 * config/riscv/riscv.cc (riscv_print_operand): Refine ASM printting rule.
23229 * config/riscv/vector-iterators.md (nmsac):New iterator.
23230 (nmsub): New iterator.
23231 * config/riscv/vector.md (@pred_merge<mode>): New pattern.
23232 (@pred_merge<mode>_scalar): New pattern.
23233 (*pred_merge<mode>_scalar): New pattern.
23234 (*pred_merge<mode>_extended_scalar): New pattern.
23235 (@pred_narrow_<optab><mode>): New pattern.
23236 (@pred_narrow_<optab><mode>_scalar): New pattern.
23237 (@pred_trunc<mode>): New pattern.
23239 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23241 * config/riscv/riscv-vector-builtins-bases.cc (class vmadc): New class.
23242 (class vmsbc): Ditto.
23243 (BASE): Define new class.
23244 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23245 * config/riscv/riscv-vector-builtins-functions.def (vmadc): New define.
23247 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
23250 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
23251 * config/riscv/riscv-vector-builtins.cc
23252 (function_expander::use_exact_insn): Adjust for new support
23253 * config/riscv/riscv-vector-builtins.h
23254 (function_base::has_merge_operand_p): New function.
23255 * config/riscv/vector-iterators.md: New iterator.
23256 * config/riscv/vector.md (@pred_madc<mode>): New pattern.
23257 (@pred_msbc<mode>): Ditto.
23258 (@pred_madc<mode>_scalar): Ditto.
23259 (@pred_msbc<mode>_scalar): Ditto.
23260 (*pred_madc<mode>_scalar): Ditto.
23261 (*pred_madc<mode>_extended_scalar): Ditto.
23262 (*pred_msbc<mode>_scalar): Ditto.
23263 (*pred_msbc<mode>_extended_scalar): Ditto.
23264 (@pred_madc<mode>_overflow): Ditto.
23265 (@pred_msbc<mode>_overflow): Ditto.
23266 (@pred_madc<mode>_overflow_scalar): Ditto.
23267 (@pred_msbc<mode>_overflow_scalar): Ditto.
23268 (*pred_madc<mode>_overflow_scalar): Ditto.
23269 (*pred_madc<mode>_overflow_extended_scalar): Ditto.
23270 (*pred_msbc<mode>_overflow_scalar): Ditto.
23271 (*pred_msbc<mode>_overflow_extended_scalar): Ditto.
23273 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23275 * config/riscv/riscv-protos.h (simm5_p): Add vadc/vsbc support.
23276 * config/riscv/riscv-v.cc (simm32_p): Ditto.
23277 * config/riscv/riscv-vector-builtins-bases.cc (class vadc): New class.
23278 (class vsbc): Ditto.
23280 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23281 * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
23283 * config/riscv/riscv-vector-builtins-shapes.cc
23284 (struct no_mask_policy_def): Ditto.
23286 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
23287 * config/riscv/riscv-vector-builtins.cc
23288 (rvv_arg_type_info::get_base_vector_type): Add vadc/vsbc support.
23289 (rvv_arg_type_info::get_tree_type): Ditto.
23290 (function_expander::use_exact_insn): Ditto.
23291 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
23292 (function_base::use_mask_predication_p): New function.
23293 * config/riscv/vector-iterators.md: New iterator.
23294 * config/riscv/vector.md (@pred_adc<mode>): New pattern.
23295 (@pred_sbc<mode>): Ditto.
23296 (@pred_adc<mode>_scalar): Ditto.
23297 (@pred_sbc<mode>_scalar): Ditto.
23298 (*pred_adc<mode>_scalar): Ditto.
23299 (*pred_adc<mode>_extended_scalar): Ditto.
23300 (*pred_sbc<mode>_scalar): Ditto.
23301 (*pred_sbc<mode>_extended_scalar): Ditto.
23303 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23305 * config/riscv/vector.md: use "zero" reg.
23307 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23309 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
23311 (class vwmulsu): Ditto.
23312 (class vwcvt): Ditto.
23313 (BASE): Add integer widening support.
23314 * config/riscv/riscv-vector-builtins-bases.h: Ditto
23315 * config/riscv/riscv-vector-builtins-functions.def (vwadd): New class.
23316 (vwsub): New class.
23317 (vwmul): New class.
23318 (vwmulu): New class.
23319 (vwmulsu): New class.
23320 (vwaddu): New class.
23321 (vwsubu): New class.
23322 (vwcvt_x): New class.
23323 (vwcvtu_x): New class.
23324 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): New
23326 (struct widen_alu_def): New class.
23327 (SHAPE): New class.
23328 * config/riscv/riscv-vector-builtins-shapes.h: New class.
23329 * config/riscv/riscv-vector-builtins.cc
23330 (rvv_arg_type_info::get_base_vector_type): Add integer widening support.
23331 (rvv_arg_type_info::get_tree_type): Ditto.
23332 * config/riscv/riscv-vector-builtins.def (x_x_v): Change into "x_v"
23334 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
23336 * config/riscv/riscv-vsetvl.cc (change_insn): Fix reg_equal use bug.
23337 * config/riscv/riscv.h (X0_REGNUM): New constant.
23338 * config/riscv/vector-iterators.md: New iterators.
23339 * config/riscv/vector.md
23340 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>): New
23342 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
23344 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
23345 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
23347 (@pred_widen_mulsu<mode>): Ditto.
23348 (@pred_widen_mulsu<mode>_scalar): Ditto.
23349 (@pred_<optab><mode>): Ditto.
23351 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23352 kito-cheng <kito.cheng@sifive.com>
23354 * common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
23355 * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
23357 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23358 * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
23362 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
23364 (DEF_RVV_FULL_V_U_OPS): Ditto.
23365 (vint8mf8_t): Ditto.
23366 (vint8mf4_t): Ditto.
23367 (vint8mf2_t): Ditto.
23368 (vint8m1_t): Ditto.
23369 (vint8m2_t): Ditto.
23370 (vint8m4_t): Ditto.
23371 (vint8m8_t): Ditto.
23372 (vint16mf4_t): Ditto.
23373 (vint16mf2_t): Ditto.
23374 (vint16m1_t): Ditto.
23375 (vint16m2_t): Ditto.
23376 (vint16m4_t): Ditto.
23377 (vint16m8_t): Ditto.
23378 (vint32mf2_t): Ditto.
23379 (vint32m1_t): Ditto.
23380 (vint32m2_t): Ditto.
23381 (vint32m4_t): Ditto.
23382 (vint32m8_t): Ditto.
23383 (vint64m1_t): Ditto.
23384 (vint64m2_t): Ditto.
23385 (vint64m4_t): Ditto.
23386 (vint64m8_t): Ditto.
23387 (vuint8mf8_t): Ditto.
23388 (vuint8mf4_t): Ditto.
23389 (vuint8mf2_t): Ditto.
23390 (vuint8m1_t): Ditto.
23391 (vuint8m2_t): Ditto.
23392 (vuint8m4_t): Ditto.
23393 (vuint8m8_t): Ditto.
23394 (vuint16mf4_t): Ditto.
23395 (vuint16mf2_t): Ditto.
23396 (vuint16m1_t): Ditto.
23397 (vuint16m2_t): Ditto.
23398 (vuint16m4_t): Ditto.
23399 (vuint16m8_t): Ditto.
23400 (vuint32mf2_t): Ditto.
23401 (vuint32m1_t): Ditto.
23402 (vuint32m2_t): Ditto.
23403 (vuint32m4_t): Ditto.
23404 (vuint32m8_t): Ditto.
23405 (vuint64m1_t): Ditto.
23406 (vuint64m2_t): Ditto.
23407 (vuint64m4_t): Ditto.
23408 (vuint64m8_t): Ditto.
23409 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FULL_V_I_OPS): Ditto.
23410 (DEF_RVV_FULL_V_U_OPS): Ditto.
23411 (check_required_extensions): Add vmulh support.
23412 (rvv_arg_type_info::get_tree_type): Ditto.
23413 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_FULL_V): Ditto.
23414 (enum rvv_base_type): Ditto.
23415 * config/riscv/riscv.opt: Add 'V' extension flag.
23416 * config/riscv/vector-iterators.md (su): New iterator.
23417 * config/riscv/vector.md (@pred_mulh<v_su><mode>): New pattern.
23418 (@pred_mulh<v_su><mode>_scalar): Ditto.
23419 (*pred_mulh<v_su><mode>_scalar): Ditto.
23420 (*pred_mulh<v_su><mode>_extended_scalar): Ditto.
23422 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23424 * config/riscv/iterators.md: Add sign_extend/zero_extend.
23425 * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
23427 * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
23428 * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
23431 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Adjust
23432 for vsext/vzext support.
23433 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTI_OPS): New
23435 (DEF_RVV_QEXTI_OPS): Ditto.
23436 (DEF_RVV_OEXTI_OPS): Ditto.
23437 (DEF_RVV_WEXTU_OPS): Ditto.
23438 (DEF_RVV_QEXTU_OPS): Ditto.
23439 (DEF_RVV_OEXTU_OPS): Ditto.
23440 (vint16mf4_t): Ditto.
23441 (vint16mf2_t): Ditto.
23442 (vint16m1_t): Ditto.
23443 (vint16m2_t): Ditto.
23444 (vint16m4_t): Ditto.
23445 (vint16m8_t): Ditto.
23446 (vint32mf2_t): Ditto.
23447 (vint32m1_t): Ditto.
23448 (vint32m2_t): Ditto.
23449 (vint32m4_t): Ditto.
23450 (vint32m8_t): Ditto.
23451 (vint64m1_t): Ditto.
23452 (vint64m2_t): Ditto.
23453 (vint64m4_t): Ditto.
23454 (vint64m8_t): Ditto.
23455 (vuint16mf4_t): Ditto.
23456 (vuint16mf2_t): Ditto.
23457 (vuint16m1_t): Ditto.
23458 (vuint16m2_t): Ditto.
23459 (vuint16m4_t): Ditto.
23460 (vuint16m8_t): Ditto.
23461 (vuint32mf2_t): Ditto.
23462 (vuint32m1_t): Ditto.
23463 (vuint32m2_t): Ditto.
23464 (vuint32m4_t): Ditto.
23465 (vuint32m8_t): Ditto.
23466 (vuint64m1_t): Ditto.
23467 (vuint64m2_t): Ditto.
23468 (vuint64m4_t): Ditto.
23469 (vuint64m8_t): Ditto.
23470 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): Ditto.
23471 (DEF_RVV_QEXTI_OPS): Ditto.
23472 (DEF_RVV_OEXTI_OPS): Ditto.
23473 (DEF_RVV_WEXTU_OPS): Ditto.
23474 (DEF_RVV_QEXTU_OPS): Ditto.
23475 (DEF_RVV_OEXTU_OPS): Ditto.
23476 (rvv_arg_type_info::get_base_vector_type): Add sign_exted/zero_extend
23478 (rvv_arg_type_info::get_tree_type): Ditto.
23479 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
23480 * config/riscv/vector-iterators.md (z): New attribute.
23481 * config/riscv/vector.md (@pred_<optab><mode>_vf2): New pattern.
23482 (@pred_<optab><mode>_vf4): Ditto.
23483 (@pred_<optab><mode>_vf8): Ditto.
23485 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23487 * config/riscv/iterators.md: Add saturating Addition && Subtraction.
23488 * config/riscv/riscv-v.cc (has_vi_variant_p): Ditto.
23489 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto.
23490 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23491 * config/riscv/riscv-vector-builtins-functions.def (vsadd): New def.
23495 * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
23500 * config/riscv/vector.md (@pred_<optab><mode>): New pattern.
23501 (@pred_<optab><mode>_scalar): New pattern.
23502 (*pred_<optab><mode>_scalar): New pattern.
23503 (*pred_<optab><mode>_extended_scalar): New pattern.
23505 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23507 * config/riscv/iterators.md: Add neg and not.
23508 * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
23510 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23511 * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
23532 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
23533 (struct alu_def): Ditto.
23535 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
23536 * config/riscv/riscv-vector-builtins.cc: Support unary C/C/++.
23537 * config/riscv/vector-iterators.md: New iterator.
23538 * config/riscv/vector.md (@pred_<optab><mode>): New pattern
23540 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23542 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
23544 2023-02-11 Jakub Jelinek <jakub@redhat.com>
23547 * ipa-cp.cc (ipa_agg_value_from_jfunc): Return NULL_TREE also if
23548 item->offset bit position is too large to be representable as
23549 unsigned int byte position.
23551 2023-02-11 Gerald Pfeifer <gerald@pfeifer.com>
23553 * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
23555 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
23557 * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
23558 valid_combine only when ira_use_lra_p is true.
23560 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
23562 * params.opt (ira-simple-lra-insn-threshold): Add new param.
23563 * ira.cc (ira): Use the param to switch on simple LRA.
23565 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
23567 PR tree-optimization/108687
23568 * gimple-range-cache.cc (ranger_cache::range_on_edge): Revert
23569 back to RFD_NONE mode for calculations.
23570 (ranger_cache::propagate_cache): Call the internal edge range API
23571 with RFD_READ_ONLY instead of changing the external routine.
23573 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
23575 PR tree-optimization/108520
23576 * gimple-range-infer.cc (check_assume_func): Invoke
23577 gimple_range_global directly instead using global_range_query.
23578 * value-query.cc (get_range_global): Add function context and
23579 avoid calling nonnull_arg_p if not cfun.
23580 (gimple_range_global): Add function context pointer.
23581 * value-query.h (imple_range_global): Add function context.
23583 2023-02-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23585 * config/riscv/constraints.md (Wdm): Adjust constraint.
23586 (Wbr): New constraint.
23587 * config/riscv/predicates.md (reg_or_int_operand): New predicate.
23588 * config/riscv/riscv-protos.h (emit_pred_op): Remove function.
23589 (emit_vlmax_op): New function.
23590 (emit_nonvlmax_op): Ditto.
23592 (neg_simm5_p): Ditto.
23593 (has_vi_variant_p): Ditto.
23594 * config/riscv/riscv-v.cc (emit_pred_op): Adjust function.
23595 (emit_vlmax_op): New function.
23596 (emit_nonvlmax_op): Ditto.
23597 (expand_const_vector): Adjust function.
23598 (legitimize_move): Ditto.
23599 (simm32_p): New function.
23601 (neg_simm5_p): Ditto.
23602 (has_vi_variant_p): Ditto.
23603 * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
23605 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23606 * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
23609 (vminu): Remove signed cases.
23611 (vdiv): Remove unsigned cases.
23613 (vdivu): Remove signed cases.
23617 (vrsub): New class.
23622 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_U_OPS): New macro.
23623 * config/riscv/riscv.h: change VL/VTYPE as fixed reg.
23624 * config/riscv/vector-iterators.md: New iterators.
23625 * config/riscv/vector.md (@pred_broadcast<mode>): Adjust pattern for vx
23627 (@pred_<optab><mode>_scalar): New pattern.
23628 (@pred_sub<mode>_reverse_scalar): Ditto.
23629 (*pred_<optab><mode>_scalar): Ditto.
23630 (*pred_<optab><mode>_extended_scalar): Ditto.
23631 (*pred_sub<mode>_reverse_scalar): Ditto.
23632 (*pred_sub<mode>_extended_reverse_scalar): Ditto.
23634 2023-02-10 Richard Biener <rguenther@suse.de>
23636 PR tree-optimization/108724
23637 * tree-vect-stmts.cc (vectorizable_operation): Avoid
23638 using word_mode vectors when vector lowering will
23639 decompose them to elementwise operations.
23641 2023-02-10 Jakub Jelinek <jakub@redhat.com>
23644 2023-02-09 Martin Liska <mliska@suse.cz>
23647 * doc/extend.texi: Document that the function
23648 does not work correctly for old VIA processors.
23650 2023-02-10 Andrew Pinski <apinski@marvell.com>
23651 Andrew Macleod <amacleod@redhat.com>
23653 PR tree-optimization/108684
23654 * tree-ssa-dce.cc (simple_dce_from_worklist):
23655 Check all ssa names and not just non-vdef ones
23656 before accepting the inline-asm.
23657 Call unlink_stmt_vdef on the statement before
23660 2023-02-09 Vladimir N. Makarov <vmakarov@redhat.com>
23662 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
23663 * ira.cc (validate_equiv_mem): Check memref address variance.
23664 (no_equiv): Clear caller_save_p flag.
23665 (update_equiv_regs): Define caller save equivalence for
23667 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
23668 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
23669 call_save_p. Use caller save equivalence depending on the arg.
23670 (split_reg): Adjust the call.
23672 2023-02-09 Jakub Jelinek <jakub@redhat.com>
23675 * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Formatting fixes.
23676 (cpu_indicator_init): Call get_available_features for all CPUs with
23677 max_level >= 1, rather than just Intel, AMD or Zhaoxin. Formatting
23680 2023-02-09 Jakub Jelinek <jakub@redhat.com>
23682 PR tree-optimization/108688
23683 * match.pd (bit_field_ref [bit_insert]): Simplify BIT_FIELD_REF
23684 of BIT_INSERT_EXPR extracting exactly all inserted bits even
23685 when without mode precision. Formatting fixes.
23687 2023-02-09 Andrew Pinski <apinski@marvell.com>
23689 PR tree-optimization/108688
23690 * match.pd (bit_field_ref [bit_insert]): Avoid generating
23691 BIT_FIELD_REFs of non-mode-precision integral operands.
23693 2023-02-09 Martin Liska <mliska@suse.cz>
23696 * doc/extend.texi: Document that the function
23697 does not work correctly for old VIA processors.
23699 2023-02-09 Andreas Schwab <schwab@suse.de>
23701 * lto-wrapper.cc (merge_and_complain): Handle
23702 -funwind-tables and -fasynchronous-unwind-tables.
23703 (append_compiler_options): Likewise.
23705 2023-02-09 Richard Biener <rguenther@suse.de>
23707 PR tree-optimization/26854
23708 * tree-into-ssa.cc (update_ssa): Turn blocks_to_update to tree
23709 view around insert_updated_phi_nodes_for.
23710 * tree-ssa-alias.cc (maybe_skip_until): Allocate visited bitmap
23712 (walk_aliased_vdefs_1): Likewise.
23714 2023-02-08 Gerald Pfeifer <gerald@pfeifer.com>
23716 * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
23718 2023-02-08 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
23721 * config.gcc (tm_mlib_file): Define new variable.
23723 2023-02-08 Jakub Jelinek <jakub@redhat.com>
23725 PR tree-optimization/108692
23726 * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is
23727 widened_code which is different from code, don't call
23728 vect_look_through_possible_promotion but instead just check op is
23729 SSA_NAME with integral type for which vect_is_simple_use is true
23730 and call set_op on this_unprom.
23732 2023-02-08 Andrea Corallo <andrea.corallo@arm.com>
23734 * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
23736 * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
23738 * config/aarch64/aarch64.opt (aarch64_ra_sign_key): Rename
23739 to 'aarch_ra_sign_key'.
23740 * config/arm/aarch-common.cc (aarch_ra_sign_key): Remove
23742 * config/arm/arm-protos.h (aarch_ra_sign_key): Likewise.
23743 * config/arm/arm.cc (enum aarch_key_type): Remove definition.
23744 * config/arm/arm.opt: Define.
23746 2023-02-08 Richard Sandiford <richard.sandiford@arm.com>
23748 PR tree-optimization/108316
23749 * tree-vect-stmts.cc (get_load_store_type): When using
23750 internal functions for gather/scatter, make sure that the type
23751 of the offset argument is consistent with the offset vector type.
23753 2023-02-08 Vladimir N. Makarov <vmakarov@redhat.com>
23756 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
23758 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
23759 * ira.cc (validate_equiv_mem): Check memref address variance.
23760 (update_equiv_regs): Define caller save equivalence for
23762 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
23763 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
23764 call_save_p. Use caller save equivalence depending on the arg.
23765 (split_reg): Adjust the call.
23767 2023-02-08 Jakub Jelinek <jakub@redhat.com>
23769 * tree.def (SAD_EXPR): Remove outdated comment about missing
23772 2023-02-07 Marek Polacek <polacek@redhat.com>
23774 * doc/invoke.texi: Update -fchar8_t documentation.
23776 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
23778 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
23779 * ira.cc (validate_equiv_mem): Check memref address variance.
23780 (update_equiv_regs): Define caller save equivalence for
23782 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
23783 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
23784 call_save_p. Use caller save equivalence depending on the arg.
23785 (split_reg): Adjust the call.
23787 2023-02-07 Richard Biener <rguenther@suse.de>
23789 PR tree-optimization/26854
23790 * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
23791 instead of immediate uses.
23793 2023-02-07 Jakub Jelinek <jakub@redhat.com>
23795 PR tree-optimization/106923
23796 * ipa-split.cc (execute_split_functions): Don't split returns_twice
23799 2023-02-07 Jakub Jelinek <jakub@redhat.com>
23801 PR tree-optimization/106433
23802 * cgraph.cc (set_const_flag_1): Recurse on simd clones too.
23803 (cgraph_node::set_pure_flag): Call set_pure_flag_1 on simd clones too.
23805 2023-02-07 Jan Hubicka <jh@suse.cz>
23807 * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
23810 2023-02-06 Andrew Stubbs <ams@codesourcery.com>
23812 * config/gcn/mkoffload.cc (gcn_stack_size): New global variable.
23813 (process_asm): Create a constructor for GCN_STACK_SIZE.
23814 (main): Parse the -mstack-size option.
23816 2023-02-06 Alex Coplan <alex.coplan@arm.com>
23819 * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
23820 Use correct constraint for operand 3.
23822 2023-02-06 Martin Jambor <mjambor@suse.cz>
23824 * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
23826 2023-02-06 Xi Ruoyao <xry111@xry111.site>
23828 * config/loongarch/loongarch.md (bytepick_w_ashift_amount):
23829 New define_int_iterator.
23830 (bytepick_d_ashift_amount): Likewise.
23831 (bytepick_imm): New define_int_attr.
23832 (bytepick_w_lshiftrt_amount): Likewise.
23833 (bytepick_d_lshiftrt_amount): Likewise.
23834 (bytepick_w_<bytepick_imm>): New define_insn template.
23835 (bytepick_w_<bytepick_imm>_extend): Likewise.
23836 (bytepick_d_<bytepick_imm>): Likewise.
23837 (bytepick_w): Remove unused define_insn.
23838 (bytepick_d): Likewise.
23839 (UNSPEC_BYTEPICK_W): Remove unused unspec.
23840 (UNSPEC_BYTEPICK_D): Likewise.
23841 * config/loongarch/predicates.md (const_0_to_3_operand):
23842 Remove unused define_predicate.
23843 (const_0_to_7_operand): Likewise.
23845 2023-02-06 Jakub Jelinek <jakub@redhat.com>
23847 PR tree-optimization/108655
23848 * ubsan.cc (sanitize_unreachable_fn): For -funreachable-traps
23849 or -fsanitize=unreachable -fsanitize-trap=unreachable return
23850 BUILT_IN_UNREACHABLE_TRAP decl rather than BUILT_IN_TRAP.
23852 2023-02-05 Gerald Pfeifer <gerald@pfeifer.com>
23854 * doc/install.texi (Specific): Remove PW32.
23856 2023-02-03 Jakub Jelinek <jakub@redhat.com>
23858 PR tree-optimization/108647
23859 * range-op.cc (operator_equal::op1_range,
23860 operator_not_equal::op1_range): Don't test op2 bound
23861 equality if op2.undefined_p (), instead set_varying.
23862 (operator_lt::op1_range, operator_le::op1_range,
23863 operator_gt::op1_range, operator_ge::op1_range): Return false if
23864 op2.undefined_p ().
23865 (operator_lt::op2_range, operator_le::op2_range,
23866 operator_gt::op2_range, operator_ge::op2_range): Return false if
23867 op1.undefined_p ().
23869 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
23871 PR tree-optimization/108639
23872 * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
23874 (irange::operator==): Same.
23876 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
23878 PR tree-optimization/108647
23879 * range-op-float.cc (foperator_lt::op1_range): Handle undefined ranges.
23880 (foperator_lt::op2_range): Same.
23881 (foperator_le::op1_range): Same.
23882 (foperator_le::op2_range): Same.
23883 (foperator_gt::op1_range): Same.
23884 (foperator_gt::op2_range): Same.
23885 (foperator_ge::op1_range): Same.
23886 (foperator_ge::op2_range): Same.
23887 (foperator_unordered_lt::op1_range): Same.
23888 (foperator_unordered_lt::op2_range): Same.
23889 (foperator_unordered_le::op1_range): Same.
23890 (foperator_unordered_le::op2_range): Same.
23891 (foperator_unordered_gt::op1_range): Same.
23892 (foperator_unordered_gt::op2_range): Same.
23893 (foperator_unordered_ge::op1_range): Same.
23894 (foperator_unordered_ge::op2_range): Same.
23896 2023-02-03 Andrew MacLeod <amacleod@redhat.com>
23898 PR tree-optimization/107570
23899 * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
23901 2023-02-03 Gaius Mulley <gaiusmod2@gmail.com>
23903 * doc/gm2.texi (Internals): Remove from menu.
23904 (Using): Comment out ifnohtml conditional.
23905 (Documentation): Use gcc url.
23906 (License): Node simplified.
23907 (Copying): New node. Include gpl_v3_without_node.
23908 (Contributing): Node simplified.
23909 (Internals): Commented out.
23910 (Libraries): Node simplified.
23913 (Functions): Ditto.
23915 2023-02-03 Christophe Lyon <christophe.lyon@arm.com>
23917 * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
23919 (mve_vqshluq_m_n_s<mode>): Likewise.
23920 (mve_vshlq_m_<supf><mode>): Likewise.
23921 (mve_vsriq_m_n_<supf><mode>): Likewise.
23922 (mve_vsubq_m_<supf><mode>): Likewise.
23924 2023-02-03 Martin Jambor <mjambor@suse.cz>
23927 * ipa-sra.cc (push_param_adjustments_for_index): Remove a size check
23928 when comparing to an IPA-CP value.
23929 (dump_list_of_param_indices): New function.
23930 (adjust_parameter_descriptions): Check for mismatching IPA-CP values.
23931 Dump removed candidates using dump_list_of_param_indices.
23932 * ipa-param-manipulation.cc
23933 (ipa_param_body_adjustments::modify_expression): Add assert checking
23934 sizes of a VIEW_CONVERT_EXPR will match.
23935 (ipa_param_body_adjustments::modify_assignment): Likewise.
23937 2023-02-03 Monk Chiang <monk.chiang@sifive.com>
23939 * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
23940 * config/riscv/riscv.cc: Ditto.
23942 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23944 * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
23948 * config/riscv/vector.md: Ditto.
23950 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23952 * config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate.
23953 * config/riscv/riscv-vector-builtins-bases.cc: New class.
23954 * config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto.
23957 * config/riscv/riscv-vector-builtins.cc: Ditto.
23958 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
23960 2023-02-02 Iain Sandoe <iain@sandoe.co.uk>
23962 * toplev.cc (toplev::main): Only print the version information header
23963 from toplevel main().
23965 2023-02-02 Paul-Antoine Arras <pa@codesourcery.com>
23967 * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
23968 cond_{ashl|ashr|lshr}
23970 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
23972 PR rtl-optimization/108086
23973 * rtl-ssa/insns.h (insn_info): Make m_num_defs a full unsigned int.
23974 Adjust size-related commentary accordingly.
23976 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
23978 PR rtl-optimization/108508
23979 * rtl-ssa/accesses.cc (function_info::split_clobber_group): When
23980 the splay tree search gives the first clobber in the second group,
23981 make sure that the root of the first clobber group is updated
23982 correctly. Enter the new clobber group into the definition splay
23985 2023-02-02 Jin Ma <jinma@linux.alibaba.com>
23987 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
23988 Fix finding best match score.
23990 2023-02-02 Jakub Jelinek <jakub@redhat.com>
23993 PR rtl-optimization/108463
23995 * cselib.cc (cselib_current_insn): Move declaration earlier.
23996 (cselib_hasher::equal): For debug only locs, temporarily override
23997 cselib_current_insn to their l->setting_insn for the
23998 rtx_equal_for_cselib_1 call, so that unsuccessful comparisons don't
23999 promote some debug locs.
24000 * sched-deps.cc (sched_analyze_2) <case MEM>: For MEMs in DEBUG_INSNs
24001 when using cselib call cselib_lookup_from_insn on the address but
24002 don't substitute it.
24004 2023-02-02 Richard Biener <rguenther@suse.de>
24006 PR middle-end/108625
24007 * genmatch.cc (expr::gen_transform): Also disallow resimplification
24008 from pushing to lseq with force_leaf.
24009 (dt_simplify::gen_1): Likewise.
24011 2023-02-02 Andrew Stubbs <ams@codesourcery.com>
24013 * config/gcn/gcn-run.cc: Include libgomp-gcn.h.
24014 (struct kernargs): Replace the common content with kernargs_abi.
24015 (struct heap): Delete.
24016 (main): Read GCN_STACK_SIZE envvar.
24017 Allocate space for the device stacks.
24018 Write the new kernargs fields.
24019 * config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt.
24020 (default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and
24021 PRIVATE_SEGMENT_WAVE_OFFSET_ARG.
24022 (gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content.
24023 (gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top.
24024 Set up the stacks from the values in the kernargs, not private.
24025 (gcn_expand_builtin_1): Match the stack configuration in the prologue.
24026 (gcn_hsa_declare_function_name): Turn off the private segment.
24027 (gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed.
24028 * config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register.
24029 * config/gcn/gcn.opt (mstack-size): Change the description.
24031 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
24034 * config/arm/arm.h (VALID_MVE_PRED_MODE): Add V2QI.
24035 * config/arm/arm.cc (thumb2_legitimate_address_p): Use HImode for
24036 addressing MVE predicate modes.
24037 (mve_bool_vec_to_const): Change to represent correct MVE predicate
24039 (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
24041 (arm_vector_mode_supported_p): Likewise.
24042 (arm_mode_to_pred_mode): Add V2QI.
24043 * config/arm/arm-builtins.cc (UNOP_PRED_UNONE_QUALIFIERS): New
24045 (UNOP_PRED_PRED_QUALIFIERS): New qualifier
24046 (BINOP_PRED_UNONE_PRED_QUALIFIERS): New qualifier.
24047 (v2qi_UP): New macro.
24048 (v4bi_UP): New macro.
24049 (v8bi_UP): New macro.
24050 (v16bi_UP): New macro.
24051 (arm_expand_builtin_args): Make it able to expand the new predicate
24053 * config/arm/arm-modes.def (V2QI): New mode.
24054 * config/arm/arm-simd-builtin-types.def (Pred1x16_t, Pred2x8_t
24055 Pred4x4_t): Remove unused predicate builtin types.
24056 * config/arm/arm_mve.h (__arm_vctp16q, __arm_vctp32q, __arm_vctp64q,
24057 __arm_vctp8q, __arm_vpnot, __arm_vctp8q_m, __arm_vctp64q_m,
24058 __arm_vctp32q_m, __arm_vctp16q_m): Use predicate modes.
24059 * config/arm/arm_mve_builtins.def (vctp16q, vctp32q, vctp64q, vctp8q,
24060 vpnot, vctp8q_m, vctp16q_m, vctp32q_m, vctp64q_m): Likewise.
24061 * config/arm/constraints.md (DB): Check for VALID_MVE_PRED_MODE instead
24062 of MODE_VECTOR_BOOL.
24063 * config/arm/iterators.md (MVE_7, MVE_7_HI): Add V2QI
24064 (MVE_VPRED): Likewise.
24065 (MVE_vpred): Add V2QI and map upper case predicate modes to lower case.
24066 (MVE_vctp): New mode attribute.
24070 * config/arm/mve.md (mve_vctp<mode1>qhi): Rename this...
24071 (mve_vctp<MVE_vctp>q<MVE_vpred>): ... to this. And use new mode
24073 (mve_vpnothi): Rename this...
24074 (mve_vpnotv16bi): ... to this.
24075 (mve_vctp<mode1>q_mhi): Rename this...
24076 (mve_vctp<MVE_vctp>q_m<MVE_vpred>):... to this.
24077 (mve_vldrdq_gather_base_z_<supf>v2di,
24078 mve_vldrdq_gather_offset_z_<supf>v2di,
24079 mve_vldrdq_gather_shifted_offset_z_<supf>v2di,
24080 mve_vstrdq_scatter_base_p_<supf>v2di,
24081 mve_vstrdq_scatter_offset_p_<supf>v2di,
24082 mve_vstrdq_scatter_offset_p_<supf>v2di_insn,
24083 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di,
24084 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn,
24085 mve_vstrdq_scatter_base_wb_p_<supf>v2di,
24086 mve_vldrdq_gather_base_wb_z_<supf>v2di,
24087 mve_vldrdq_gather_base_nowb_z_<supf>v2di,
24088 mve_vldrdq_gather_base_wb_z_<supf>v2di_insn): Use V2QI insead of HI for
24090 * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
24092 (VCTP): ... with this.
24093 (VCTP8Q_M, VCTP16Q_M, VCTP32Q_M, VCTP64Q_M): Replace these...
24094 (VCTP_M): ... with this.
24095 * config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Use
24096 VALID_MVE_PRED_MODE instead of checking for MODE_VECTOR_BOOL class.
24098 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
24101 * config/arm/arm.cc (arm_hard_regno_mode_ok): Use new MACRO.
24102 (arm_modes_tieable_p): Make MVE predicate modes tieable.
24103 * config/arm/arm.h (VALID_MVE_PRED_MODE): New define.
24104 * simplify-rtx.cc (simplify_context::simplify_subreg): Teach
24105 simplify_subreg to simplify subregs where the outermode is not scalar.
24107 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
24110 * config/arm/arm-builtins.cc (arm_simd_builtin_type): Rewrite to use
24111 new qualifiers parameter and use unsigned short type for MVE predicate.
24112 (arm_init_builtin): Call arm_simd_builtin_type with qualifiers
24114 (arm_init_crypto_builtins): Likewise.
24116 2023-02-02 Jakub Jelinek <jakub@redhat.com>
24119 * builtins.def (BUILT_IN_UNREACHABLE_TRAP): New builtin.
24120 * internal-fn.def (TRAP): Remove.
24121 * internal-fn.cc (expand_TRAP): Remove.
24122 * tree.cc (build_common_builtin_nodes): Define
24123 BUILT_IN_UNREACHABLE_TRAP if not yet defined.
24124 (builtin_decl_unreachable): Use BUILT_IN_UNREACHABLE_TRAP
24125 instead of BUILT_IN_TRAP.
24126 * gimple.cc (gimple_build_builtin_unreachable): Remove
24127 emitting internal function for BUILT_IN_TRAP.
24128 * asan.cc (maybe_instrument_call): Handle BUILT_IN_UNREACHABLE_TRAP.
24129 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Handle
24130 BUILT_IN_UNREACHABLE_TRAP instead of BUILT_IN_TRAP.
24131 * ipa-devirt.cc (possible_polymorphic_call_target_p): Handle
24132 BUILT_IN_UNREACHABLE_TRAP.
24133 * builtins.cc (expand_builtin, is_inexpensive_builtin): Likewise.
24134 * tree-cfg.cc (verify_gimple_call,
24135 pass_warn_function_return::execute): Likewise.
24136 * attribs.cc (decl_attributes): Don't report exclusions on
24137 BUILT_IN_UNREACHABLE_TRAP either.
24139 2023-02-02 liuhongt <hongtao.liu@intel.com>
24141 PR tree-optimization/108601
24142 * tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Removed.
24143 * tree-vect-loop.cc
24144 (vectorizable_nonlinear_induction): Remove
24145 vect_can_peel_nonlinear_iv_p.
24146 (vect_can_peel_nonlinear_iv_p): Don't peel
24147 nonlinear iv(mult or shift) for epilog when vf is not
24148 constant and moved the defination to ..
24149 * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p):
24152 2023-02-02 Jakub Jelinek <jakub@redhat.com>
24154 PR middle-end/108435
24155 * tree-nested.cc (convert_nonlocal_omp_clauses)
24156 <case OMP_CLAUSE_LASTPRIVATE>: If info->new_local_var_chain and *seq
24157 is not a GIMPLE_BIND, wrap the sequence into a new GIMPLE_BIND
24158 before calling declare_vars.
24159 (convert_nonlocal_omp_clauses) <case OMP_CLAUSE_LINEAR>: Merge
24160 with the OMP_CLAUSE_LASTPRIVATE handling except for whether
24161 seq is initialized to &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)
24162 or &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause).
24164 2023-02-01 Tamar Christina <tamar.christina@arm.com>
24166 * common/config/aarch64/aarch64-common.cc
24167 (struct aarch64_option_extension): Add native_detect and document struct
24169 (all_extensions): Set new field native_detect.
24170 * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
24173 2023-02-01 Martin Liska <mliska@suse.cz>
24175 * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
24178 2023-02-01 Andrew MacLeod <amacleod@redhat.com>
24180 PR tree-optimization/108356
24181 * gimple-range-cache.cc (ranger_cache::range_on_edge): Always
24182 do a search of the DOM tree for a range.
24184 2023-02-01 Martin Liska <mliska@suse.cz>
24187 * cgraphunit.cc (walk_polymorphic_call_targets): Insert
24188 ony non-null values.
24189 * ipa.cc (walk_polymorphic_call_targets): Likewise.
24191 2023-02-01 Martin Liska <mliska@suse.cz>
24194 * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
24197 2023-02-01 Jakub Jelinek <jakub@redhat.com>
24200 * ree.cc (combine_reaching_defs): Don't return false for paradoxical
24201 subregs in DEBUG_INSNs.
24203 2023-02-01 Richard Sandiford <richard.sandiford@arm.com>
24205 * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
24207 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
24209 * config/s390/s390.cc (s390_restore_gpr_p): New function.
24210 (s390_preserve_gpr_arg_in_range_p): New function.
24211 (s390_preserve_gpr_arg_p): New function.
24212 (s390_preserve_fpr_arg_p): New function.
24213 (s390_register_info_stdarg_fpr): Rename to ...
24214 (s390_register_info_arg_fpr): ... this. Add -mpreserve-args handling.
24215 (s390_register_info_stdarg_gpr): Rename to ...
24216 (s390_register_info_arg_gpr): ... this. Add -mpreserve-args handling.
24217 (s390_register_info): Use the renamed functions above.
24218 (s390_optimize_register_info): Likewise.
24219 (save_fpr): Generate CFI for -mpreserve-args.
24220 (save_gprs): Generate CFI for -mpreserve-args. Drop return value.
24221 (s390_emit_prologue): Adjust to changed calling convention of save_gprs.
24222 (s390_optimize_prologue): Likewise.
24223 * config/s390/s390.opt: New option -mpreserve-args
24225 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
24227 * config/s390/s390.cc (save_gprs): Use gen_frame_mem.
24228 (restore_gprs): Likewise.
24229 (s390_emit_stack_tie): Make the stack_tie to be dependent on the
24230 frame pointer if a frame-pointer is used.
24231 (s390_emit_prologue): Emit stack_tie when frame-pointer is needed.
24232 * config/s390/s390.md (stack_tie): Add a register operand and
24234 (@stack_tie<mode>): ... this.
24236 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
24238 * dwarf2cfi.cc (dwarf2out_frame_debug_cfa_restore): Add
24239 EMIT_CFI parameter.
24240 (dwarf2out_frame_debug): Add case for REG_CFA_NORESTORE.
24241 * reg-notes.def (REG_CFA_NOTE): New reg note definition.
24243 2023-02-01 Richard Biener <rguenther@suse.de>
24245 PR middle-end/108500
24246 * dominance.cc (assign_dfs_numbers): Replace recursive DFS
24247 with tree traversal algorithm.
24249 2023-02-01 Jason Merrill <jason@redhat.com>
24251 * doc/invoke.texi: Document -Wno-changes-meaning.
24253 2023-02-01 David Malcolm <dmalcolm@redhat.com>
24255 * doc/invoke.texi (Static Analyzer Options): Add notes about
24256 limitations of -fanalyzer.
24258 2023-01-31 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24260 * config/riscv/constraints.md (vj): New.
24262 * config/riscv/iterators.md: Add more opcode.
24263 * config/riscv/predicates.md (vector_arith_operand): New.
24264 (vector_neg_arith_operand): New.
24265 (vector_shift_operand): New.
24266 * config/riscv/riscv-vector-builtins-bases.cc (class binop): New.
24267 * config/riscv/riscv-vector-builtins-bases.h: (vadd): New.
24284 * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
24301 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): New.
24302 * config/riscv/riscv-vector-builtins-shapes.h (binop): New.
24303 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New.
24304 (DEF_RVV_U_OPS): New.
24305 (rvv_arg_type_info::get_base_vector_type): Handle
24306 RVV_BASE_shift_vector.
24307 (rvv_arg_type_info::get_tree_type): Ditto.
24308 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add
24309 RVV_BASE_shift_vector.
24310 * config/riscv/riscv.cc (riscv_print_operand): Handle 'V'.
24311 * config/riscv/vector-iterators.md: Handle more opcode.
24312 * config/riscv/vector.md (@pred_<optab><mode>): New.
24314 2023-01-31 Philipp Tomsich <philipp.tomsich@vrull.eu>
24317 * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
24320 2023-01-31 Richard Sandiford <richard.sandiford@arm.com>
24322 PR tree-optimization/108608
24323 * tree-vect-loop.cc (vect_transform_reduction): Handle single
24324 def-use cycles that involve function calls rather than tree codes.
24326 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
24328 PR tree-optimization/108385
24329 * gimple-range-gori.cc (gori_compute::compute_operand_range):
24330 Allow VARYING computations to continue if there is a relation.
24331 * range-op.cc (pointer_plus_operator::op2_range): New.
24333 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
24335 PR tree-optimization/108359
24336 * range-op.cc (range_operator::wi_fold_in_parts_equiv): New.
24337 (range_operator::fold_range): If op1 is equivalent to op2 then
24338 invoke new fold_in_parts_equiv to operate on sub-components.
24339 * range-op.h (wi_fold_in_parts_equiv): New prototype.
24341 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
24343 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
24344 not abort calculations if there is a valid relation available.
24345 (gori_compute::refine_using_relation): Pass correct relation trio.
24346 (gori_compute::compute_operand1_range): Create trio and use it.
24347 (gori_compute::compute_operand2_range): Ditto.
24348 * range-op.cc (operator_plus::op1_range): Use correct trio member.
24349 (operator_minus::op1_range): Use correct trio member.
24350 * value-relation.cc (value_relation::create_trio): New.
24351 * value-relation.h (value_relation::create_trio): New prototype.
24353 2023-01-31 Jakub Jelinek <jakub@redhat.com>
24356 * config/i386/i386-expand.cc
24357 (ix86_convert_const_wide_int_to_broadcast): Return nullptr if
24358 CONST_WIDE_INT_NUNITS (op) times HOST_BITS_PER_WIDE_INT isn't
24359 equal to bitsize of mode.
24361 2023-01-31 Jakub Jelinek <jakub@redhat.com>
24363 PR rtl-optimization/108596
24364 * bb-reorder.cc (fix_up_fall_thru_edges): Handle the case where cur_bb
24365 ends with asm goto and has a crossing fallthrough edge to the same bb
24366 that contains at least one of its labels by restoring EDGE_CROSSING
24367 flag even on possible edge from cur_bb to new_bb successor.
24369 2023-01-31 Jakub Jelinek <jakub@redhat.com>
24372 * config/i386/avx512erintrin.h (_mm512_exp2a23_round_pd,
24373 _mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps,
24374 _mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps): Use
24375 _mm512_undefined_pd () or _mm512_undefined_ps () instead of using
24376 uninitialized automatic variable __W.
24378 2023-01-31 Gerald Pfeifer <gerald@pfeifer.com>
24380 * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
24382 2023-01-30 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24384 * config/riscv/riscv-protos.h (get_vector_mode): New function.
24385 * config/riscv/riscv-v.cc (get_vector_mode): Ditto.
24386 * config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum.
24387 (class loadstore): Adjust for indexed loads/stores support.
24389 * config/riscv/riscv-vector-builtins-bases.h: New function declare.
24390 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
24406 * config/riscv/riscv-vector-builtins-shapes.cc
24407 (struct indexed_loadstore_def): New class.
24409 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
24410 * config/riscv/riscv-vector-builtins.cc (required_extensions_p): Adjust
24411 for indexed loads/stores support.
24412 (check_required_extensions): Ditto.
24413 (rvv_arg_type_info::get_base_vector_type): New function.
24414 (rvv_arg_type_info::get_tree_type): Ditto.
24415 (function_builder::add_unique_function): Adjust for indexed loads/stores
24417 (function_expander::use_exact_insn): New function.
24418 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Adjust for
24419 indexed loads/stores support.
24420 (struct rvv_arg_type_info): Ditto.
24421 (function_expander::index_mode): New function.
24422 (function_base::apply_tail_policy_p): Ditto.
24423 (function_base::apply_mask_policy_p): Ditto.
24424 * config/riscv/vector-iterators.md (unspec): New unspec.
24425 * config/riscv/vector.md (unspec): Ditto.
24426 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New
24428 (@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
24429 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
24430 (@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
24431 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
24432 (@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
24433 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
24434 (@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
24435 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
24436 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
24437 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
24438 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
24439 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
24440 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
24442 2023-01-30 Flavio Cruz <flaviocruz@gmail.com>
24444 * config.gcc: Recognize x86_64-*-gnu* targets and include
24446 * config/i386/gnu64.h: Define configuration for new target
24447 including ld.so location.
24449 2023-01-30 Philipp Tomsich <philipp.tomsich@vrull.eu>
24451 * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
24452 ampere1a to include SM4.
24454 2023-01-30 Andrew Pinski <apinski@marvell.com>
24456 PR tree-optimization/108582
24457 * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
24458 for middlebb to have no phi nodes.
24460 2023-01-30 Richard Biener <rguenther@suse.de>
24462 PR tree-optimization/108574
24463 * tree-ssa-sccvn.cc (visit_phi): Instead of swapping
24464 sameval and def, ignore the equivalence if there's the
24465 danger of oscillating between two values.
24467 2023-01-30 Andreas Schwab <schwab@suse.de>
24469 * common/config/riscv/riscv-common.cc
24470 (riscv_option_optimization_table)
24471 [TARGET_DEFAULT_ASYNC_UNWIND_TABLES]: Enable
24472 -fasynchronous-unwind-tables and -funwind-tables.
24473 * config.gcc (riscv*-*-linux*): Define
24474 TARGET_DEFAULT_ASYNC_UNWIND_TABLES.
24476 2023-01-30 YunQiang Su <yunqiang.su@cipunited.com>
24478 * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
24479 value of includedir.
24481 2023-01-30 Richard Biener <rguenther@suse.de>
24484 * cgraph.cc (possibly_call_in_translation_unit_p): Relax
24487 2023-01-30 liuhongt <hongtao.liu@intel.com>
24489 * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
24490 * doc/invoke.texi: Ditto.
24492 2023-01-29 Jan Hubicka <hubicka@ucw.cz>
24494 * ipa-utils.cc: Include calls.h, cfgloop.h and cfganal.h
24495 (stmt_may_terminate_function_p): If assuming return or EH
24496 volatile asm is safe.
24497 (find_always_executed_bbs): Fix handling of terminating BBS and
24498 infinite loops; add debug output.
24499 * tree-ssa-alias.cc (stmt_kills_ref_p): Fix debug output
24501 2023-01-28 Philipp Tomsich <philipp.tomsich@vrull.eu>
24503 * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
24504 off-by-one in checking the permissible shift-amount.
24506 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
24508 * doc/extend.texi (Named Address Spaces): Update link to the
24511 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
24513 * doc/standards.texi (Standards): Fix markup.
24515 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
24517 * doc/standards.texi (Standards): Update link to Objective-C book.
24519 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
24521 * doc/invoke.texi (Instrumentation Options): Update reference to
24524 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
24526 * doc/standards.texi: Update Go1 link.
24528 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24530 * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
24531 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
24534 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24535 * config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
24537 * config/riscv/riscv-vector-builtins.cc
24538 (function_expander::use_contiguous_load_insn): Support vlse/vsse.
24539 * config/riscv/vector.md (@pred_strided_load<mode>): New md pattern.
24540 (@pred_strided_store<mode>): Ditto.
24542 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24544 * config/riscv/vector.md (tail_policy_op_idx): Remove.
24545 (mask_policy_op_idx): Remove.
24546 (avl_type_op_idx): Remove.
24548 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
24550 PR tree-optimization/96373
24551 * tree.h (sign_mask_for): Declare.
24552 * tree.cc (sign_mask_for): New function.
24553 (signed_or_unsigned_type_for): For vector types, try to use the
24554 related_int_vector_mode.
24555 * genmatch.cc (commutative_op): Handle conditional internal functions.
24556 * match.pd: Fold an IFN_COND_MUL+copysign into an IFN_COND_XOR+and.
24558 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
24560 * tree-vectorizer.cc (vector_costs::compare_inside_loop_cost):
24561 Use the likely minimum VF when bounding the denominators to
24562 the estimated number of iterations.
24564 2023-01-27 Richard Biener <rguenther@suse.de>
24567 * doc/invoke.texi (-shared): Clarify effect on -ffast-math
24568 and -Ofast FP environment side-effects.
24570 2023-01-27 Richard Biener <rguenther@suse.de>
24573 * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
24574 Don't add crtfastmath.o for -shared.
24576 2023-01-27 Richard Biener <rguenther@suse.de>
24579 * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
24582 2023-01-27 Richard Biener <rguenther@suse.de>
24585 * config/alpha/linux.h (ENDFILE_SPEC): Don't add
24586 crtfastmath.o for -shared.
24588 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
24590 PR tree-optimization/108306
24591 * range-op.cc (operator_lshift::fold_range): Return [0, 0] not
24592 varying for shifts that are always out of void range.
24593 (operator_rshift::fold_range): Return [0, 0] not
24594 varying for shifts that are always out of void range.
24596 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
24598 PR tree-optimization/108447
24599 * gimple-range-fold.cc (old_using_range::relation_fold_and_or):
24600 Do not attempt to fold HONOR_NAN types.
24602 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24604 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
24605 Remove _m suffix for "vop_m" C++ overloaded API name.
24607 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24609 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add vlm/vsm support.
24610 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24611 * config/riscv/riscv-vector-builtins-functions.def (vlm): New define.
24613 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): Add vlm/vsm support.
24614 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_B_OPS): Ditto.
24615 (vbool64_t): Ditto.
24616 (vbool32_t): Ditto.
24617 (vbool16_t): Ditto.
24622 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_B_OPS): Ditto.
24623 (rvv_arg_type_info::get_tree_type): Ditto.
24624 (function_expander::use_contiguous_load_insn): Ditto.
24625 * config/riscv/vector.md (@pred_store<mode>): Ditto.
24627 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24629 * config/riscv/riscv-vsetvl.cc (vsetvl_insn_p): Add condition to avoid ICE.
24630 (vsetvl_discard_result_insn_p): New function.
24631 (reg_killed_by_bb_p): rename to find_reg_killed_by.
24632 (find_reg_killed_by): New name.
24633 (get_vl): allow it to be called by more functions.
24634 (has_vsetvl_killed_avl_p): Add condition.
24635 (get_avl): allow it to be called by more functions.
24636 (insn_should_be_added_p): New function.
24637 (get_all_nonphi_defs): Refine function.
24638 (get_all_sets): Ditto.
24639 (get_same_bb_set): New function.
24640 (any_insn_in_bb_p): Ditto.
24641 (any_set_in_bb_p): Ditto.
24642 (get_vl_vtype_info): Add VLMAX forward optimization.
24643 (source_equal_p): Fix issues.
24644 (extract_single_source): Refine.
24645 (avl_info::multiple_source_equal_p): New function.
24646 (avl_info::operator==): Adjust for final version.
24647 (vl_vtype_info::operator==): Ditto.
24648 (vl_vtype_info::same_avl_p): Ditto.
24649 (vector_insn_info::parse_insn): Ditto.
24650 (vector_insn_info::available_p): New function.
24651 (vector_insn_info::merge): Adjust for final version.
24652 (vector_insn_info::dump): Add hard_empty.
24653 (pass_vsetvl::hard_empty_block_p): New function.
24654 (pass_vsetvl::backward_demand_fusion): Adjust for final version.
24655 (pass_vsetvl::forward_demand_fusion): Ditto.
24656 (pass_vsetvl::demand_fusion): Ditto.
24657 (pass_vsetvl::cleanup_illegal_dirty_blocks): New function.
24658 (pass_vsetvl::compute_local_properties): Adjust for final version.
24659 (pass_vsetvl::can_refine_vsetvl_p): Ditto.
24660 (pass_vsetvl::refine_vsetvls): Ditto.
24661 (pass_vsetvl::commit_vsetvls): Ditto.
24662 (pass_vsetvl::propagate_avl): New function.
24663 (pass_vsetvl::lazy_vsetvl): Adjust for new version.
24664 * config/riscv/riscv-vsetvl.h (enum def_type): New enum.
24666 2023-01-27 Jakub Jelinek <jakub@redhat.com>
24669 * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
24670 from size_t to int.
24672 2023-01-27 Jakub Jelinek <jakub@redhat.com>
24675 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Allow
24676 redirection of calls to __builtin_trap in addition to redirection
24677 to __builtin_unreachable.
24679 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24681 * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
24683 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24685 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
24686 (emit_vsetvl_insn): Ditto.
24688 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24690 * config/riscv/vector.md: Fix constraints.
24692 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24694 * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
24696 2023-01-27 Patrick Palka <ppalka@redhat.com>
24697 Jakub Jelinek <jakub@redhat.com>
24699 * tree-core.h (tree_code_type, tree_code_length): For
24700 C++17 and later, add inline keyword, otherwise don't define
24701 the arrays, but declare extern arrays.
24702 * tree.cc (tree_code_type, tree_code_length): Define these
24703 arrays for C++14 and older.
24705 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24707 * config/riscv/riscv-vsetvl.h: Change it into public.
24709 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24711 * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
24714 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24716 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
24718 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24720 * config/riscv/vector.md: Fix incorrect attributes.
24722 2023-01-27 Richard Biener <rguenther@suse.de>
24725 * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
24726 Don't add crtfastmath.o for -shared.
24728 2023-01-27 Alexandre Oliva <oliva@gnu.org>
24730 * doc/options.texi (option, RejectNegative): Mention that
24731 -g-started options are also implicitly negatable.
24733 2023-01-26 Kito Cheng <kito.cheng@sifive.com>
24735 * config/riscv/riscv-vector-builtins.cc (register_builtin_types):
24736 Use get_typenode_from_name to get fixed-width integer type
24738 * config/riscv/riscv-vector-builtins.def: Update define with
24739 fixed-width integer type nodes.
24741 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24743 * config/riscv/riscv-vsetvl.cc (same_bb_and_before_p): Remove it.
24744 (real_insn_and_same_bb_p): New function.
24745 (same_bb_and_after_or_equal_p): Remove it.
24746 (before_p): New function.
24747 (reg_killed_by_bb_p): Ditto.
24748 (has_vsetvl_killed_avl_p): Ditto.
24749 (get_vl): Move location so that we can call it.
24750 (anticipatable_occurrence_p): Fix issue of AVL=REG support.
24751 (available_occurrence_p): Ditto.
24752 (dominate_probability_p): Remove it.
24753 (can_backward_propagate_p): Remove it.
24754 (get_all_nonphi_defs): New function.
24755 (get_all_predecessors): Ditto.
24756 (any_insn_in_bb_p): Ditto.
24757 (insert_vsetvl): Adjust AVL REG.
24758 (source_equal_p): New function.
24759 (extract_single_source): Ditto.
24760 (avl_info::single_source_equal_p): Ditto.
24761 (avl_info::operator==): Adjust for AVL=REG.
24762 (vl_vtype_info::same_avl_p): Ditto.
24763 (vector_insn_info::set_demand_info): Remove it.
24764 (vector_insn_info::compatible_p): Adjust for AVL=REG.
24765 (vector_insn_info::compatible_avl_p): New function.
24766 (vector_insn_info::merge): Adjust AVL=REG.
24767 (vector_insn_info::dump): Ditto.
24768 (pass_vsetvl::merge_successors): Remove it.
24769 (enum fusion_type): New enum.
24770 (pass_vsetvl::get_backward_fusion_type): New function.
24771 (pass_vsetvl::backward_demand_fusion): Adjust for AVL=REG.
24772 (pass_vsetvl::forward_demand_fusion): Ditto.
24773 (pass_vsetvl::demand_fusion): Ditto.
24774 (pass_vsetvl::prune_expressions): Ditto.
24775 (pass_vsetvl::compute_local_properties): Ditto.
24776 (pass_vsetvl::cleanup_vsetvls): Ditto.
24777 (pass_vsetvl::commit_vsetvls): Ditto.
24778 (pass_vsetvl::init): Ditto.
24779 * config/riscv/riscv-vsetvl.h (enum fusion_type): New enum.
24780 (enum merge_type): New enum.
24782 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24784 * config/riscv/riscv-vsetvl.cc
24785 (vector_infos_manager::vector_infos_manager): Add probability.
24786 (vector_infos_manager::dump): Ditto.
24787 (pass_vsetvl::compute_probabilities): Ditto.
24788 * config/riscv/riscv-vsetvl.h (struct vector_block_info): Ditto.
24790 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24792 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Remove dirty_pat.
24793 (vector_insn_info::merge): Ditto.
24794 (vector_insn_info::dump): Ditto.
24795 (pass_vsetvl::merge_successors): Ditto.
24796 (pass_vsetvl::backward_demand_fusion): Ditto.
24797 (pass_vsetvl::forward_demand_fusion): Ditto.
24798 (pass_vsetvl::commit_vsetvls): Ditto.
24799 * config/riscv/riscv-vsetvl.h: Ditto.
24801 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24803 * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
24806 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24808 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
24810 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24812 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
24813 Add pre-check for redundant flow.
24815 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24817 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::create_bitmap_vectors): New function.
24818 (vector_infos_manager::free_bitmap_vectors): Ditto.
24819 (pass_vsetvl::pre_vsetvl): Adjust codes.
24820 * config/riscv/riscv-vsetvl.h: New function declaration.
24822 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24824 * config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb.
24825 (vector_insn_info::set_demand_info): New function.
24826 (pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3.
24827 (pass_vsetvl::merge_successors): Ditto.
24828 (pass_vsetvl::compute_global_backward_infos): Ditto.
24829 (pass_vsetvl::backward_demand_fusion): Ditto.
24830 (pass_vsetvl::forward_demand_fusion): Ditto.
24831 (pass_vsetvl::demand_fusion): New function.
24832 (pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3.
24833 * config/riscv/riscv-vsetvl.h: New function declaration.
24835 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24837 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
24839 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24841 * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
24842 (pass_vsetvl::compute_global_backward_infos): Simplify codes.
24844 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24846 * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
24847 (backward_propagate_worthwhile_p): Fix non-worthwhile.
24849 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24851 * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
24853 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24855 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::all_same_avl_p): New function.
24856 (pass_vsetvl::can_refine_vsetvl_p): Add AVL check.
24857 (pass_vsetvl::commit_vsetvls): Ditto.
24858 * config/riscv/riscv-vsetvl.h: New function declaration.
24860 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24862 * config/riscv/vector.md:
24864 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24866 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): use
24867 pred_store for vse.
24868 * config/riscv/riscv-vector-builtins.cc
24869 (function_expander::add_mem_operand): Refine function.
24870 (function_expander::use_contiguous_load_insn): Adjust new
24872 (function_expander::use_contiguous_store_insn): Ditto.
24873 * config/riscv/riscv-vector-builtins.h: Refine function.
24874 * config/riscv/vector.md (@pred_store<mode>): New pattern.
24876 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24878 * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
24880 2023-01-26 Marek Polacek <polacek@redhat.com>
24882 PR middle-end/108543
24883 * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
24884 if it was previously set.
24886 2023-01-26 Jakub Jelinek <jakub@redhat.com>
24888 PR tree-optimization/108540
24889 * range-op-float.cc (foperator_equal::fold_range): If both op1 and op2
24890 are singletons, use range_true even if op1 != op2
24891 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
24892 even if intersection of the ranges is empty and one has
24893 zero low bound and another zero high bound, use range_true_and_false
24894 rather than range_false.
24895 (foperator_not_equal::fold_range): If both op1 and op2
24896 are singletons, use range_false even if op1 != op2
24897 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
24898 even if intersection of the ranges is empty and one has
24899 zero low bound and another zero high bound, use range_true_and_false
24900 rather than range_true.
24902 2023-01-26 Jakub Jelinek <jakub@redhat.com>
24904 * value-relation.cc (kind_string): Add const.
24905 (rr_negate_table, rr_swap_table, rr_intersect_table,
24906 rr_union_table, rr_transitive_table): Add static const, change
24907 element type from relation_kind to unsigned char.
24908 (relation_negate, relation_swap, relation_intersect, relation_union,
24909 relation_transitive): Cast rr_*_table element to relation_kind.
24910 (relation_to_code): Add static const.
24911 (relation_tests): Assert VREL_LAST is smaller than UCHAR_MAX.
24913 2023-01-26 Richard Biener <rguenther@suse.de>
24915 PR tree-optimization/108547
24916 * gimple-predicate-analysis.cc (value_sat_pred_p):
24919 2023-01-26 Siddhesh Poyarekar <siddhesh@gotplt.org>
24921 PR tree-optimization/108522
24922 * tree-object-size.cc (compute_object_offset): Make EXPR
24923 argument non-const. Call component_ref_field_offset.
24925 2023-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
24927 * config/aarch64/aarch64-option-extensions.def (cssc): Specify
24928 FEATURE_STRING field.
24930 2023-01-26 Gerald Pfeifer <gerald@pfeifer.com>
24932 * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
24934 2023-01-25 Iain Sandoe <iain@sandoe.co.uk>
24938 * gcc.cc: Provide default specs for Modula-2 so that when the
24939 language is not built-in better diagnostics are emitted for
24940 attempts to use .mod or .m2i file extensions.
24942 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
24944 * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
24946 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
24948 * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
24950 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
24952 * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
24955 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
24957 * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
24959 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
24961 * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
24963 2023-01-25 Richard Biener <rguenther@suse.de>
24965 PR tree-optimization/108523
24966 * tree-ssa-sccvn.cc (visit_phi): Avoid using the exclusive
24967 backedge value for the result when using predication to
24970 2023-01-25 Richard Biener <rguenther@suse.de>
24972 * doc/lto.texi (Command line options): Reword and update reference
24973 to removed lto_read_all_file_options.
24975 2023-01-25 Richard Sandiford <richard.sandiford@arm.com>
24977 * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
24980 2023-01-25 Gerald Pfeifer <gerald@pfeifer.com>
24982 * doc/contrib.texi: Add Jose E. Marchesi.
24984 2023-01-25 Jakub Jelinek <jakub@redhat.com>
24986 PR tree-optimization/108498
24987 * gimple-ssa-store-merging.cc (class store_operand_info):
24988 End coment with full stop rather than comma.
24989 (split_group): Likewise.
24990 (merged_store_group::apply_stores): Clear string_concatenation if
24991 start or end aren't on a byte boundary.
24993 2023-01-25 Siddhesh Poyarekar <siddhesh@gotplt.org>
24994 Jakub Jelinek <jakub@redhat.com>
24996 PR tree-optimization/108522
24997 * tree-object-size.cc (compute_object_offset): Use
24998 TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
25000 2023-01-24 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
25002 * config/xtensa/xtensa.md:
25003 Fix exit from loops detecting references before overwriting in the
25006 2023-01-24 Vladimir N. Makarov <vmakarov@redhat.com>
25008 * lra-constraints.cc (get_hard_regno): Remove final_p arg. Always
25009 do elimination but only for hard register.
25010 (operands_match_p, uses_hard_regs_p, process_alt_operands): Adjust
25011 calls of get_hard_regno.
25013 2023-01-24 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
25015 * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
25018 2023-01-24 Andre Vieira <andre.simoesdiasvieira@arm.com>
25021 * config/arm/mve.md (mve_vstrbq_p_<supf><mode>, mve_vstrhq_p_fv8hf,
25022 mve_vstrhq_p_<supf><mode>, mve_vstrwq_p_<supf>v4si): Add memory operand
25025 2023-01-24 Xianmiao Qu <cooper.qu@linux.alibaba.com>
25027 * config.gcc(csky-*-linux*): Define CSKY_ENABLE_MULTILIB
25028 and only include 'csky/t-csky-linux' when enable multilib.
25029 * config/csky/csky-linux-elf.h(SYSROOT_SUFFIX_SPEC): Don't
25030 define it when disable multilib.
25032 2023-01-24 Richard Biener <rguenther@suse.de>
25034 PR tree-optimization/108500
25035 * dominance.h (calculate_dominance_info): Add parameter
25036 to indicate fast-query compute, defaulted to true.
25037 * dominance.cc (calculate_dominance_info): Honor
25038 fast-query compute parameter.
25039 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Do
25040 not compute the dominator fast-query DFS numbers.
25042 2023-01-24 Eric Biggers <ebiggers@google.com>
25045 * optc-save-gen.awk: Fix copy-and-paste error.
25047 2023-01-24 Jakub Jelinek <jakub@redhat.com>
25050 * cgraphbuild.cc: Include gimplify.h.
25051 (record_reference): Replace VAR_DECLs with DECL_HAS_VALUE_EXPR_P with
25052 their corresponding DECL_VALUE_EXPR expressions after unsharing.
25054 2023-01-24 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
25057 * config.gcc (tm_file): Move the variable out of loop.
25059 2023-01-24 Lulu Cheng <chenglulu@loongson.cn>
25060 Yang Yujie <yangyujie@loongson.cn>
25063 * config/loongarch/loongarch.cc (loongarch_classify_address):
25064 Add precessint for CONST_INT.
25065 (loongarch_print_operand_reloc): Operand modifier 'c' is supported.
25066 (loongarch_print_operand): Increase the processing of '%c'.
25067 * doc/extend.texi: Adds documents for LoongArch operand modifiers.
25068 And port the public operand modifiers information to this document.
25070 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
25072 * doc/invoke.texi (-mbranch-protection): Update documentation.
25074 2023-01-23 Richard Biener <rguenther@suse.de>
25077 * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
25079 * config/sparc/linux.h (ENDFILE_SPEC): Likewise.
25080 * config/sparc/linux64.h (ENDFILE_SPEC): Likewise.
25081 * config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise.
25082 * config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise.
25084 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
25086 * config/arm/aout.h (ra_auth_code): Add entry in enum.
25087 * config/arm/arm.cc (emit_multi_reg_push): Add RA_AUTH_CODE register
25088 to dwarf frame expression.
25089 (arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register.
25090 (arm_expand_prologue): Update frame related information and reg notes
25091 for pac/pacbit insn.
25092 (arm_regno_class): Check for pac pseudo reigster.
25093 (arm_dbx_register_number): Assign ra_auth_code register number in dwarf.
25094 (arm_init_machine_status): Set pacspval_needed to zero.
25095 (arm_debugger_regno): Check for PAC register.
25096 (arm_unwind_emit_sequence): Print .save directive with ra_auth_code
25098 (arm_unwind_emit_set): Add entry for IP_REGNUM in switch case.
25099 (arm_unwind_emit): Update REG_CFA_REGISTER case._
25100 * config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify.
25101 (DWARF_PAC_REGNUM): Define.
25102 (IS_PAC_REGNUM): Likewise.
25103 (enum reg_class): Add PAC_REG entry.
25104 (machine_function): Add pacbti_needed state to structure.
25105 * config/arm/arm.md (RA_AUTH_CODE): Define.
25107 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
25109 * config.gcc ($tm_file): Update variable.
25110 * config/arm/arm-mlib.h: Create new header file.
25111 * config/arm/t-rmprofile (MULTI_ARCH_DIRS_RM): Rename mbranch-protection
25112 multilib arch directory.
25113 (MULTILIB_REUSE): Add multilib reuse rules.
25114 (MULTILIB_MATCHES): Add multilib match rules.
25116 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
25118 * config/arm/arm-cpus.in (cortex-m85): Define new CPU.
25119 * config/arm/arm-tables.opt: Regenerate.
25120 * config/arm/arm-tune.md: Likewise.
25121 * doc/invoke.texi (Arm Options): Document -mcpu=cortex-m85.
25122 * (-mfix-cmse-cve-2021-35465): Likewise.
25124 2023-01-23 Richard Biener <rguenther@suse.de>
25126 PR tree-optimization/108482
25127 * tree-vect-generic.cc (expand_vector_operations): Fold remaining
25128 .LOOP_DIST_ALIAS calls.
25130 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
25132 * config.gcc (arm*-*-*): Add 'aarch-bti-insert.o' object.
25133 * config/arm/arm-protos.h: Update.
25134 * config/arm/aarch-common-protos.h: Declare
25135 'aarch_bti_arch_check'.
25136 * config/arm/arm.cc (aarch_bti_enabled) Update.
25137 (aarch_bti_j_insn_p, aarch_pac_insn_p, aarch_gen_bti_c)
25138 (aarch_gen_bti_j, aarch_bti_arch_check): New functions.
25139 * config/arm/arm.md (bti_nop): New insn.
25140 * config/arm/t-arm (PASSES_EXTRA): Add 'arm-passes.def'.
25141 (aarch-bti-insert.o): New target.
25142 * config/arm/unspecs.md (VUNSPEC_BTI_NOP): New unspec.
25143 * config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Verify arch
25145 (gate): Make use of 'aarch_bti_arch_check'.
25146 * config/arm/arm-passes.def: New file.
25147 * config/aarch64/aarch64.cc (aarch_bti_arch_check): New function.
25149 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
25151 * config.gcc (aarch64*-*-*): Rename 'aarch64-bti-insert.o' into
25152 'aarch-bti-insert.o'.
25153 * config/aarch64/aarch64-protos.h: Remove 'aarch64_bti_enabled'
25155 * config/aarch64/aarch64.cc (aarch_bti_enabled): Rename.
25156 (aarch_bti_j_insn_p, aarch_pac_insn_p): New functions.
25157 (aarch64_output_mi_thunk)
25158 (aarch64_print_patchable_function_entry)
25159 (aarch64_file_end_indicate_exec_stack): Update renamed function
25160 calls to renamed functions.
25161 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise.
25162 * config/aarch64/t-aarch64 (aarch-bti-insert.o): Update
25164 * config/aarch64/aarch64-bti-insert.cc: Delete.
25165 * config/arm/aarch-bti-insert.cc: New file including and
25166 generalizing code from aarch64-bti-insert.cc.
25167 * config/arm/aarch-common-protos.h: Update.
25169 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
25171 * config/arm/arm.h (arm_arch8m_main): Declare it.
25172 * config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
25174 * config/arm/arm.cc (arm_arch8m_main): Define it.
25175 (arm_option_reconfigure_globals): Set arm_arch8m_main.
25176 (arm_compute_frame_layout, arm_expand_prologue)
25177 (thumb2_expand_return, arm_expand_epilogue)
25178 (arm_conditional_register_usage): Update for pac codegen.
25179 (arm_current_function_pac_enabled_p): New function.
25180 (aarch_bti_enabled) New function.
25181 (use_return_insn): Return zero when pac is enabled.
25182 * config/arm/arm.md (pac_ip_lr_sp, pacbti_ip_lr_sp, aut_ip_lr_sp):
25184 * config/arm/unspecs.md (UNSPEC_PAC_NOP)
25185 (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
25187 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
25189 * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
25190 mbranch-protection.
25192 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
25193 Tejas Belagod <tbelagod@arm.com>
25195 * config/arm/arm.cc (arm_file_start): Emit EABI attributes for
25196 Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use.
25198 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
25199 Tejas Belagod <tbelagod@arm.com>
25200 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
25202 * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
25203 new pseudo register class _UVRSC_PAC.
25205 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
25206 Tejas Belagod <tbelagod@arm.com>
25208 * config/arm/arm-c.cc (arm_cpu_builtins): Define
25209 __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT,
25210 __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI.
25212 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
25213 Tejas Belagod <tbelagod@arm.com>
25215 * doc/sourcebuild.texi: Document arm_pacbti_hw.
25217 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
25218 Tejas Belagod <tbelagod@arm.com>
25219 Richard Earnshaw <Richard.Earnshaw@arm.com>
25221 * config/arm/arm.cc (arm_configure_build_target): Parse and validate
25222 -mbranch-protection option and initialize appropriate data structures.
25223 * config/arm/arm.opt (-mbranch-protection): New option.
25224 * doc/invoke.texi (Arm Options): Document it.
25226 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
25227 Tejas Belagod <tbelagod@arm.com>
25229 * config/arm/arm.h (TARGET_HAVE_PACBTI): New macro.
25230 * config/arm/arm-cpus.in (pacbti): New feature.
25231 * doc/invoke.texi (Arm Options): Document it.
25233 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
25234 Tejas Belagod <tbelagod@arm.com>
25236 * common/config/aarch64/aarch64-common.cc: Include aarch-common.h.
25237 (all_architectures): Fix comment.
25238 (aarch64_parse_extension): Rename return type, enum value names.
25239 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Rename
25240 factored out aarch_ra_sign_scope and aarch_ra_sign_key variables.
25241 Also rename corresponding enum values.
25242 * config/aarch64/aarch64-opts.h (aarch64_function_type): Factor
25243 out aarch64_function_type and move it to common code as
25244 aarch_function_type in aarch-common.h.
25245 * config/aarch64/aarch64-protos.h: Include common types header,
25246 move out types aarch64_parse_opt_result and aarch64_key_type to
25248 * config/aarch64/aarch64.cc: Move mbranch-protection parsing types
25249 and functions out into aarch-common.h and aarch-common.cc. Fix up
25250 all the name changes resulting from the move.
25251 * config/aarch64/aarch64.md: Fix up aarch64_ra_sign_key type name change
25253 * config/aarch64/aarch64.opt: Include aarch-common.h to import
25254 type move. Fix up name changes from factoring out common code and
25256 * config/arm/aarch-common-protos.h: Export factored out routines to both
25258 * config/arm/aarch-common.cc: Include newly factored out types.
25259 Move all mbranch-protection code and data structures from
25261 * config/arm/aarch-common.h: New header that declares types shared
25262 between aarch32 and aarch64 backends.
25263 * config/arm/arm-protos.h: Declare types and variables that are
25264 made common to aarch64 and aarch32 backends - aarch_ra_sign_key,
25265 aarch_ra_sign_scope and aarch_enable_bti.
25266 * config/arm/arm.opt (config/arm/aarch-common.h): Include header.
25267 (aarch_ra_sign_scope, aarch_enable_bti): Declare variable.
25268 * config/arm/arm.cc: Add missing includes.
25270 2023-01-23 Tobias Burnus <tobias@codesourcery.com>
25272 * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
25274 2023-01-23 Richard Biener <rguenther@suse.de>
25276 PR tree-optimization/108449
25277 * cgraphunit.cc (check_global_declaration): Do not turn
25278 undefined statics into externs.
25280 2023-01-22 Dimitar Dimitrov <dimitar@dinux.eu>
25282 * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix value for QI
25283 and HI input modes.
25284 * config/pru/pru.md (clz): Fix generated code for QI and HI
25287 2023-01-22 Cupertino Miranda <cupertino.miranda@oracle.com>
25289 * config/v850/v850.cc (v850_select_section): Put const volatile
25290 objects into read-only sections.
25292 2023-01-20 Tejas Belagod <tejas.belagod@arm.com>
25294 * config/aarch64/arm_neon.h (vmull_p64, vmull_high_p64, vaeseq_u8,
25295 vaesdq_u8, vaesmcq_u8, vaesimcq_u8): Gate under "nothing+aes".
25296 (vsha1*_u32, vsha256*_u32): Gate under "nothing+sha2".
25298 2023-01-20 Jakub Jelinek <jakub@redhat.com>
25300 PR tree-optimization/108457
25301 * tree-ssa-loop-niter.cc (build_cltz_expr): Use
25302 SCALAR_INT_TYPE_MODE (utype) directly as C[LT]Z_DEFINED_VALUE_AT_ZERO
25303 argument instead of a temporary. Formatting fixes.
25305 2023-01-19 Jakub Jelinek <jakub@redhat.com>
25307 PR tree-optimization/108447
25308 * value-relation.cc (rr_union_table): Fix VREL_UNDEFINED row order.
25309 (relation_tests): Add self-tests for relation_{intersect,union}
25311 * selftest.h (relation_tests): Declare.
25312 * function-tests.cc (test_ranges): Call it.
25314 2023-01-19 H.J. Lu <hjl.tools@gmail.com>
25317 * config/i386/i386-expand.cc (ix86_expand_builtin): Check
25318 invalid third argument to __builtin_ia32_prefetch.
25320 2023-01-19 Jakub Jelinek <jakub@redhat.com>
25322 PR middle-end/108459
25323 * omp-expand.cc (expand_omp_for_init_counts): Use fold_build1 rather
25324 than fold_unary for NEGATE_EXPR.
25326 2023-01-19 Christophe Lyon <christophe.lyon@arm.com>
25329 * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
25330 comment. Move assert about alignment a bit later.
25332 2023-01-19 Jakub Jelinek <jakub@redhat.com>
25334 PR tree-optimization/108440
25335 * tree-ssa-forwprop.cc: Include gimple-range.h.
25336 (simplify_rotate): For the forms with T2 wider than T and shift counts of
25337 Y and B - Y add & (B - 1) masking for the rotate count if Y could be equal
25338 to B. For the forms with T2 wider than T and shift counts of
25339 Y and (-Y) & (B - 1), don't punt if range could be [B, B2], but only if
25340 range doesn't guarantee Y < B or Y = N * B. If range doesn't guarantee
25341 Y < B, also add & (B - 1) masking for the rotate count. Use lazily created
25342 pass specific ranger instead of get_global_range_query.
25343 (pass_forwprop::execute): Disable that ranger at the end of pass if it has
25346 2023-01-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
25348 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
25349 exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
25351 (aarch64_simd_vec_copy_lane<mode>): Likewise.
25352 (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
25354 2023-01-19 Alexandre Oliva <oliva@adacore.com>
25357 * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
25358 within debug insns.
25360 2023-01-18 Martin Jambor <mjambor@suse.cz>
25363 * cgraph.cc (cgraph_node::remove): Check whether nodes up the
25364 lcone_of chain also do not need the body.
25366 2023-01-18 Richard Biener <rguenther@suse.de>
25369 2022-12-16 Richard Biener <rguenther@suse.de>
25371 PR middle-end/108086
25372 * tree-inline.cc (remap_ssa_name): Do not unshare the
25373 result from the decl_map.
25375 2023-01-18 Murray Steele <murray.steele@arm.com>
25378 * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
25380 (__arm_vst1q_p_s8): Likewise.
25381 (__arm_vld1q_z_u8): Likewise.
25382 (__arm_vld1q_z_s8): Likewise.
25383 (__arm_vst1q_p_u16): Likewise.
25384 (__arm_vst1q_p_s16): Likewise.
25385 (__arm_vld1q_z_u16): Likewise.
25386 (__arm_vld1q_z_s16): Likewise.
25387 (__arm_vst1q_p_u32): Likewise.
25388 (__arm_vst1q_p_s32): Likewise.
25389 (__arm_vld1q_z_u32): Likewise.
25390 (__arm_vld1q_z_s32): Likewise.
25391 (__arm_vld1q_z_f16): Likewise.
25392 (__arm_vst1q_p_f16): Likewise.
25393 (__arm_vld1q_z_f32): Likewise.
25394 (__arm_vst1q_p_f32): Likewise.
25396 2023-01-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
25398 * config/xtensa/xtensa.md (xorsi3_internal):
25399 Rename from the original of "xorsi3".
25400 (xorsi3): New expansion pattern that emits addition rather than
25401 bitwise-XOR when the second source is a constant of -2147483648
25404 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
25405 Andrew Pinski <apinski@marvell.com>
25408 * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
25409 vec_vsubcuqP with vec_vsubcuq.
25411 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
25414 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
25415 support for invalid uses of MMA opaque type in function arguments.
25417 2023-01-18 liuhongt <hongtao.liu@intel.com>
25420 * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o
25421 whenever -mdaz-ftz is specified. Don't link crtfastmath.o when
25422 -share or -mno-daz-ftz is specified.
25423 * config/i386/darwin.h (ENDFILE_SPEC): Ditto.
25424 * config/i386/mingw32.h (ENDFILE_SPEC): Ditto.
25426 2023-01-17 Jose E. Marchesi <jose.marchesi@oracle.com>
25428 * config/bpf/bpf.cc (bpf_option_override): Disable
25431 2023-01-17 Jakub Jelinek <jakub@redhat.com>
25433 PR tree-optimization/106523
25434 * tree-ssa-forwprop.cc (simplify_rotate): For the
25435 patterns with (-Y) & (B - 1) in one operand's shift
25436 count and Y in another, if T2 has wider precision than T,
25437 punt if Y could have a value in [B, B2 - 1] range.
25439 2023-01-16 H.J. Lu <hjl.tools@gmail.com>
25442 * config/i386/i386.cc (x86_output_mi_thunk): Disable
25443 -mforce-indirect-call for PIC in 32-bit mode.
25445 2023-01-16 Jan Hubicka <hubicka@ucw.cz>
25448 * ipa-modref.cc (modref_access_analysis::analyze): Use
25449 find_always_executed_bbs.
25450 * ipa-sra.cc (process_scan_results): Likewise.
25451 * ipa-utils.cc (stmt_may_terminate_function_p): New function.
25452 (find_always_executed_bbs): New function.
25453 * ipa-utils.h (stmt_may_terminate_function_p): Declare.
25454 (find_always_executed_bbs): Declare.
25456 2023-01-16 Jan Hubicka <jh@suse.cz>
25458 * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Guard scatter
25459 by TARGET_USE_SCATTER.
25460 * config/i386/i386.h (TARGET_USE_SCATTER_2PARTS,
25461 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New macros.
25462 * config/i386/x86-tune.def (TARGET_USE_SCATTER_2PARTS,
25463 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New tunes.
25464 (X86_TUNE_AVOID_256FMA_CHAINS, X86_TUNE_AVOID_512FMA_CHAINS): Disable
25465 for znver4. (X86_TUNE_USE_GATHER): Disable for zen4.
25467 2023-01-16 Richard Biener <rguenther@suse.de>
25470 * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
25472 2023-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
25476 * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
25477 (__ARM_mve_coerce3): Likewise.
25479 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
25481 * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
25483 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
25485 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): New.
25486 (number_of_iterations_bitcount): Add call to the above.
25487 (number_of_iterations_exit_assumptions): Add EQ_EXPR case for
25488 c[lt]z idiom recognition.
25490 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
25492 * doc/sourcebuild.texi: Add missing target attributes.
25494 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
25496 PR tree-optimization/94793
25497 * tree-scalar-evolution.cc (expression_expensive_p): Add checks
25499 * tree-ssa-loop-niter.cc (build_cltz_expr): New.
25500 (number_of_iterations_cltz_complement): New.
25501 (number_of_iterations_bitcount): Add call to the above.
25503 2023-01-16 Jonathan Wakely <jwakely@redhat.com>
25505 * doc/extend.texi (Common Function Attributes): Fix grammar.
25507 2023-01-16 Jakub Jelinek <jakub@redhat.com>
25510 * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
25511 * config/riscv/riscv-vsetvl.cc: Likewise.
25513 2023-01-16 Jakub Jelinek <jakub@redhat.com>
25516 * config/i386/xmmintrin.h (_mm_undefined_ps): Temporarily
25517 disable -Winit-self using pragma GCC diagnostic ignored.
25518 * config/i386/emmintrin.h (_mm_undefined_pd, _mm_undefined_si128):
25520 * config/i386/avxintrin.h (_mm256_undefined_pd, _mm256_undefined_ps,
25521 _mm256_undefined_si256): Likewise.
25522 * config/i386/avx512fintrin.h (_mm512_undefined_pd,
25523 _mm512_undefined_ps, _mm512_undefined_epi32): Likewise.
25524 * config/i386/avx512fp16intrin.h (_mm_undefined_ph,
25525 _mm256_undefined_ph, _mm512_undefined_ph): Likewise.
25527 2023-01-16 Kewen Lin <linkw@linux.ibm.com>
25530 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
25531 support for invalid uses in inline asm, factor out the checking and
25532 erroring to lambda function check_and_error_invalid_use.
25534 2023-01-15 Aldy Hernandez <aldyh@redhat.com>
25536 PR tree-optimization/107608
25537 * range-op-float.cc (range_operator_float::fold_range): Avoid
25538 folding into INF when flag_trapping_math.
25539 * value-range.h (frange::known_isinf): Return false for possible NANs.
25541 2023-01-15 Xianmiao Qu <cooper.qu@linux.alibaba.com>
25543 * config.gcc (csky-*-*): Support --with-float=softfp.
25545 2023-01-14 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
25547 * config/xtensa/xtensa-protos.h (order_regs_for_local_alloc):
25548 Rename to xtensa_adjust_reg_alloc_order.
25549 * config/xtensa/xtensa.cc (xtensa_adjust_reg_alloc_order):
25550 Ditto. And also remove code to reorder register numbers for
25551 leaf functions, rename the tables, and adjust the allocation
25552 order for the call0 ABI to use register A0 more.
25553 (xtensa_leaf_regs): Remove.
25554 * config/xtensa/xtensa.h (REG_ALLOC_ORDER): Cosmetics.
25555 (order_regs_for_local_alloc): Rename as the above.
25556 (LEAF_REGISTERS, LEAF_REG_REMAP, leaf_function): Remove.
25558 2023-01-14 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
25560 * config/aarch64/aarch64-sve.md (aarch64_vec_duplicate_vq<mode>_le):
25561 Change to define_insn_and_split to fold ldr+dup to ld1rq.
25562 * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): New.
25564 2023-01-14 Alexandre Oliva <oliva@adacore.com>
25566 * hash-table.h (is_deleted): Precheck !is_empty.
25567 (mark_deleted): Postcheck !is_empty.
25568 (copy constructor): Test is_empty before is_deleted.
25570 2023-01-14 Alexandre Oliva <oliva@adacore.com>
25573 * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
25576 2023-01-13 Eric Botcazou <ebotcazou@adacore.com>
25578 PR rtl-optimization/108274
25579 * function.cc (thread_prologue_and_epilogue_insns): Also update the
25580 DF information for calls in a few more cases.
25582 2023-01-13 John David Anglin <danglin@gcc.gnu.org>
25584 * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
25585 * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
25587 * config/pa/pa.h (TARGET_SYNC_LIBCALLS): Use flag_sync_libcalls.
25588 (MAX_SYNC_LIBFUNC_SIZE): Define.
25589 (TARGET_CPU_CPP_BUILTINS): Define __SOFTFP__ when soft float is
25591 * config/pa/pa.md (atomic_storeqi): Emit __atomic_exchange_1
25592 libcall when sync libcalls are disabled.
25593 (atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
25594 (atomic_loaddi): Emit __atomic_load_8 libcall when sync libcalls
25595 are disabled on 32-bit target.
25596 * config/pa/pa.opt (matomic-libcalls): New option.
25597 * doc/invoke.texi (HPPA Options): Update.
25599 2023-01-13 Alexander Monakov <amonakov@ispras.ru>
25601 PR rtl-optimization/108117
25602 PR rtl-optimization/108132
25603 * sched-deps.cc (deps_analyze_insn): Do not schedule across
25604 calls before reload.
25606 2023-01-13 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
25608 * common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
25609 options for -mlibarch.
25610 * config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
25611 * doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
25613 2023-01-13 Qing Zhao <qing.zhao@oracle.com>
25615 * attribs.cc (strict_flex_array_level_of): Move this function to ...
25616 * attribs.h (strict_flex_array_level_of): Remove the declaration.
25617 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
25618 replace the referece to strict_flex_array_level_of with
25619 DECL_NOT_FLEXARRAY.
25620 * tree.cc (component_ref_size): Likewise.
25622 2023-01-13 Richard Biener <rguenther@suse.de>
25625 * config/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
25626 crtfastmath.o for -shared.
25627 * config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.
25629 2023-01-13 Richard Biener <rguenther@suse.de>
25632 * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
25633 crtfastmath.o for -shared.
25634 * config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
25636 * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
25639 2023-01-13 Richard Sandiford <richard.sandiford@arm.com>
25641 * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
25643 (TARGET_DWARF_FRAME_REG_MODE): Define.
25645 2023-01-13 Richard Biener <rguenther@suse.de>
25648 * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
25649 update EH info on the fly.
25651 2023-01-13 Richard Biener <rguenther@suse.de>
25653 PR tree-optimization/108387
25654 * tree-ssa-sccvn.cc (visit_nary_op): Check for SSA_NAME
25655 value before inserting expression into the tables.
25657 2023-01-12 Andrew Pinski <apinski@marvell.com>
25658 Roger Sayle <roger@nextmovesoftware.com>
25660 PR tree-optimization/92342
25661 * match.pd ((m1 CMP m2) * d -> (m1 CMP m2) ? d : 0):
25662 Use tcc_comparison and :c for the multiply.
25663 (b & -(a CMP c) -> (a CMP c)?b:0): New pattern.
25665 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
25666 Richard Sandiford <richard.sandiford@arm.com>
25669 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment):
25670 Check DECL_PACKED for bitfield.
25671 (aarch64_layout_arg): Warn when parameter passing ABI changes.
25672 (aarch64_function_arg_boundary): Do not warn here.
25673 (aarch64_gimplify_va_arg_expr): Warn when parameter passing ABI
25676 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
25677 Richard Sandiford <richard.sandiford@arm.com>
25679 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
25681 (aarch64_layout_arg): Factorize warning conditions.
25682 (aarch64_function_arg_boundary): Fix typo.
25683 * function.cc (currently_expanding_function_start): New variable.
25684 (expand_function_start): Handle
25685 currently_expanding_function_start.
25686 * function.h (currently_expanding_function_start): Declare.
25688 2023-01-12 Richard Biener <rguenther@suse.de>
25690 PR tree-optimization/99412
25691 * tree-ssa-reassoc.cc (is_phi_for_stmt): Remove.
25692 (swap_ops_for_binary_stmt): Remove reduction handling.
25693 (rewrite_expr_tree_parallel): Adjust.
25694 (reassociate_bb): Likewise.
25695 * tree-parloops.cc (build_new_reduction): Handle MINUS_EXPR.
25697 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
25699 * config/xtensa/xtensa.md (ctzsi2, ffssi2):
25700 Rearrange the emitting codes.
25702 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
25704 * config/xtensa/xtensa.md (*btrue):
25705 Correct value of the attribute "length" that depends on
25706 TARGET_DENSITY and operands, and add '?' character to the register
25707 constraint of the compared operand.
25709 2023-01-12 Alexandre Oliva <oliva@adacore.com>
25711 * hash-table.h (expand): Check elements and deleted counts.
25712 (verify): Likewise.
25714 2023-01-11 Roger Sayle <roger@nextmovesoftware.com>
25716 PR tree-optimization/71343
25717 * tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make
25718 the value number of the expression X << C the same as the value
25719 number for the multiplication X * (1<<C).
25721 2023-01-11 David Faust <david.faust@oracle.com>
25724 * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
25725 floating point modes.
25727 2023-01-11 Eric Botcazou <ebotcazou@adacore.com>
25729 PR tree-optimization/108199
25730 * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
25731 for bit-field references.
25733 2023-01-11 Kewen Lin <linkw@linux.ibm.com>
25735 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Make
25736 OPTION_MASK_P10_FUSION implicit setting honour Power10 tuning setting.
25737 * config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER): Remove
25738 OPTION_MASK_P10_FUSION.
25740 2023-01-11 Richard Biener <rguenther@suse.de>
25742 PR tree-optimization/107767
25743 * tree-cfgcleanup.cc (phi_alternatives_equal): Export.
25744 * tree-cfgcleanup.h (phi_alternatives_equal): Declare.
25745 * tree-switch-conversion.cc (switch_conversion::collect):
25746 Count unique non-default targets accounting for later
25747 merging opportunities.
25749 2023-01-11 Martin Liska <mliska@suse.cz>
25751 PR middle-end/107976
25752 * params.opt: Limit JT params.
25753 * stmt.cc (emit_case_dispatch_table): Use auto_vec.
25755 2023-01-11 Richard Biener <rguenther@suse.de>
25757 PR tree-optimization/108352
25758 * tree-ssa-threadbackward.cc
25759 (back_threader_profitability::profitable_path_p): Adjust
25760 heuristic that allows non-multi-way branch threads creating
25762 * doc/invoke.texi (--param fsm-scale-path-blocks): Remove.
25763 (--param fsm-scale-path-stmts): Adjust.
25764 * params.opt (--param=fsm-scale-path-blocks=): Remove.
25765 (-param=fsm-scale-path-stmts=): Adjust description.
25767 2023-01-11 Richard Biener <rguenther@suse.de>
25769 PR tree-optimization/108353
25770 * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
25772 (add_ssa_edge): Simplify.
25773 (add_control_edge): Likewise.
25774 (ssa_prop_init): Likewise.
25775 (ssa_prop_fini): Likewise.
25776 (ssa_propagation_engine::ssa_propagate): Likewise.
25778 2023-01-11 Andreas Krebbel <krebbel@linux.ibm.com>
25780 * config/s390/s390.md (*not<mode>): New pattern.
25782 2023-01-11 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
25784 * config/xtensa/xtensa.cc (xtensa_insn_cost):
25785 Let insn cost for size be obtained by applying COSTS_N_INSNS()
25786 to instruction length and then dividing by 3.
25788 2023-01-10 Richard Biener <rguenther@suse.de>
25790 PR tree-optimization/106293
25791 * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
25792 process degenerate PHI defs.
25794 2023-01-10 Roger Sayle <roger@nextmovesoftware.com>
25796 PR rtl-optimization/106421
25797 * cprop.cc (bypass_block): Check that DEST is local to this
25798 function (non-NULL) before calling find_edge.
25800 2023-01-10 Martin Jambor <mjambor@suse.cz>
25803 * ipa-param-manipulation.h (ipa_param_body_adjustments): New members
25804 sort_replacements, lookup_first_base_replacement and
25805 m_sorted_replacements_p.
25806 * ipa-param-manipulation.cc: Define INCLUDE_ALGORITHM.
25807 (ipa_param_body_adjustments::register_replacement): Set
25808 m_sorted_replacements_p to false.
25809 (compare_param_body_replacement): New function.
25810 (ipa_param_body_adjustments::sort_replacements): Likewise.
25811 (ipa_param_body_adjustments::common_initialization): Call
25813 (ipa_param_body_adjustments::ipa_param_body_adjustments): Initialize
25814 m_sorted_replacements_p.
25815 (ipa_param_body_adjustments::lookup_replacement_1): Rework to use
25817 (ipa_param_body_adjustments::lookup_first_base_replacement): New
25819 (ipa_param_body_adjustments::modify_call_stmt): Use
25820 lookup_first_base_replacement.
25821 * omp-simd-clone.cc (ipa_simd_modify_function_body): Call
25822 adjustments->sort_replacements.
25824 2023-01-10 Richard Biener <rguenther@suse.de>
25826 PR tree-optimization/108314
25827 * tree-vect-stmts.cc (vectorizable_condition): Do not
25828 perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
25830 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
25832 * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
25834 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
25836 * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
25838 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
25840 * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
25841 defines for soft float abi.
25843 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
25845 * config/csky/csky.md (smart_bseti): Change condition to CSKY_ISA_FEATURE (E1).
25846 (smart_bclri): Likewise.
25847 (fast_bseti): Change condition to CSKY_ISA_FEATURE (E2).
25848 (fast_bclri): Likewise.
25849 (fast_cmpnesi_i): Likewise.
25850 (*fast_cmpltsi_i): Likewise.
25851 (*fast_cmpgeusi_i): Likewise.
25853 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
25855 * config/csky/csky_insn_fpuv3.md (l<frm_pattern><fixsuop><mode>si2): Test
25856 flag_fp_int_builtin_inexact || !flag_trapping_math.
25857 (<frm_pattern><mode>2): Likewise.
25859 2023-01-10 Andreas Krebbel <krebbel@linux.ibm.com>
25861 * config/s390/s390.cc (s390_register_info): Check call_used_regs
25862 instead of hard-coding the register numbers for call saved
25864 (s390_optimize_register_info): Likewise.
25866 2023-01-09 Eric Botcazou <ebotcazou@adacore.com>
25868 * doc/gm2.texi (Overview): Fix @node markers.
25869 (Using): Likewise. Remove subsections that were moved to Overview
25870 from the menu and move others around.
25872 2023-01-09 Richard Biener <rguenther@suse.de>
25874 PR middle-end/108209
25875 * genmatch.cc (commutative_op): Fix return value for
25876 user-id with non-commutative first replacement.
25878 2023-01-09 Jakub Jelinek <jakub@redhat.com>
25881 * calls.cc (expand_call): For calls with
25882 TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
25885 2023-01-09 Richard Biener <rguenther@suse.de>
25887 PR middle-end/69482
25888 * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
25889 qualified accesses also force objects to memory.
25891 2023-01-09 Martin Liska <mliska@suse.cz>
25894 * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
25895 NULL (deleleted value) to a hash_set.
25897 2023-01-08 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
25899 * config/xtensa/xtensa.md (*splice_bits):
25900 New insn_and_split pattern.
25902 2023-01-07 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
25904 * config/xtensa/xtensa.cc
25905 (xtensa_split_imm_two_addends, xtensa_emit_add_imm):
25906 New helper functions.
25907 (xtensa_set_return_address, xtensa_output_mi_thunk):
25908 Change to use the helper function.
25909 (xtensa_emit_adjust_stack_ptr): Ditto.
25910 And also change to try reusing the content of scratch register
25911 A9 if the register is not modified in the function body.
25913 2023-01-07 LIU Hao <lh_mouse@126.com>
25915 PR middle-end/108300
25916 * config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
25917 before <windows.h>.
25918 * diagnostic-color.cc: Likewise.
25919 * plugin.cc: Likewise.
25920 * prefix.cc: Likewise.
25922 2023-01-06 Joseph Myers <joseph@codesourcery.com>
25924 * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
25925 for handling real integer types.
25927 2023-01-06 Tamar Christina <tamar.christina@arm.com>
25930 2022-12-12 Tamar Christina <tamar.christina@arm.com>
25932 * config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
25933 (mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
25934 aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
25935 @aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
25936 reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
25937 aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
25938 vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
25939 (aarch64_simd_dupv2hf): New.
25940 * config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
25942 * config/aarch64/iterators.md (VHSDF_P): New.
25943 (V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
25944 Vel, q, vp): Add V2HF.
25945 * config/arm/types.md (neon_fp_reduc_add_h): New.
25947 2023-01-06 Martin Liska <mliska@suse.cz>
25949 PR middle-end/107966
25950 * doc/options.texi: Fix Var documentation in internal manual.
25952 2023-01-05 Roger Sayle <roger@nextmovesoftware.com>
25955 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
25957 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
25958 RTL expansion to allow condition (mask) to be shared/reused,
25959 by avoiding overwriting pseudos and adding REG_EQUAL notes.
25961 2023-01-05 Iain Sandoe <iain@sandoe.co.uk>
25963 * common.opt: Add -static-libgm2.
25964 * config/darwin.h (LINK_SPEC): Handle static-libgm2.
25965 * doc/gm2.texi: Document static-libgm2.
25966 * gcc.cc (driver_handle_option): Allow static-libgm2.
25968 2023-01-05 Tejas Joshi <TejasSanjay.Joshi@amd.com>
25970 * common/config/i386/i386-common.cc (processor_alias_table):
25971 Use CPU_ZNVER4 for znver4.
25972 * config/i386/i386.md: Add znver4.md.
25973 * config/i386/znver4.md: New.
25975 2023-01-04 Jakub Jelinek <jakub@redhat.com>
25977 PR tree-optimization/108253
25978 * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
25981 2023-01-04 Jakub Jelinek <jakub@redhat.com>
25983 PR middle-end/108237
25984 * generic-match-head.cc: Include tree-pass.h.
25985 (canonicalize_math_p, optimize_vectors_before_lowering_p): Define
25986 to false if cfun and cfun->curr_properties has PROP_gimple_opt_math
25987 resp. PROP_gimple_lvec property set.
25989 2023-01-04 Jakub Jelinek <jakub@redhat.com>
25991 PR sanitizer/108256
25992 * convert.cc (do_narrow): Punt for MULT_EXPR if original
25993 type doesn't wrap around and -fsanitize=signed-integer-overflow
25995 * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
25997 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
25999 * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
26000 * common/config/i386/i386-common.cc: Add Emeraldrapids.
26002 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
26004 * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
26007 2023-01-03 Sandra Loosemore <sandra@codesourcery.com>
26009 * cgraph.h (struct cgraph_node): Add gc_candidate bit, modify
26010 default constructor to initialize it.
26011 * cgraphunit.cc (expand_all_functions): Save gc_candidate functions
26012 for last and iterate to handle recursive calls. Delete leftover
26013 candidates at the end.
26014 * omp-simd-clone.cc (simd_clone_create): Set gc_candidate bit
26016 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
26017 gc_candidate bit when a clone is used.
26019 2023-01-03 Florian Weimer <fweimer@redhat.com>
26022 2023-01-02 Florian Weimer <fweimer@redhat.com>
26024 * dwarf2cfi.cc (init_return_column_size): Remove.
26025 (init_one_dwarf_reg_size): Adjust.
26026 (generate_dwarf_reg_sizes): New function. Extracted
26027 from expand_builtin_init_dwarf_reg_sizes.
26028 (expand_builtin_init_dwarf_reg_sizes): Call
26029 generate_dwarf_reg_sizes.
26030 * target.def (init_dwarf_reg_sizes_extra): Adjust
26032 * config/msp430/msp430.cc
26033 (msp430_init_dwarf_reg_sizes_extra): Adjust.
26034 * config/rs6000/rs6000.cc
26035 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
26036 * doc/tm.texi: Update.
26038 2023-01-03 Florian Weimer <fweimer@redhat.com>
26041 2023-01-02 Florian Weimer <fweimer@redhat.com>
26043 * debug.h (dwarf_reg_sizes_constant): Declare.
26044 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
26046 2023-01-03 Siddhesh Poyarekar <siddhesh@gotplt.org>
26048 PR tree-optimization/105043
26049 * doc/extend.texi (Object Size Checking): Split out into two
26050 subsections and mention _FORTIFY_SOURCE.
26052 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
26054 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
26055 RTL expansion to allow condition (mask) to be shared/reused,
26056 by avoiding overwriting pseudos and adding REG_EQUAL notes.
26058 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
26061 * config/i386/i386-features.cc
26062 (general_scalar_chain::compute_convert_gain) <case PLUS>: Consider
26063 the gain/cost of converting a MEM operand.
26065 2023-01-03 Jakub Jelinek <jakub@redhat.com>
26067 PR middle-end/108264
26068 * expr.cc (store_expr): For stores into SUBREG_PROMOTED_* targets
26069 from source which doesn't have scalar integral mode first convert
26072 2023-01-03 Jakub Jelinek <jakub@redhat.com>
26074 PR rtl-optimization/108263
26075 * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
26078 2023-01-02 Alexander Monakov <amonakov@ispras.ru>
26081 * config/i386/lujiazui.md (lujiazui_div): New automaton.
26082 (lua_div): New unit.
26083 (lua_idiv_qi): Correct unit in the reservation.
26084 (lua_idiv_qi_load): Ditto.
26085 (lua_idiv_hi): Ditto.
26086 (lua_idiv_hi_load): Ditto.
26087 (lua_idiv_si): Ditto.
26088 (lua_idiv_si_load): Ditto.
26089 (lua_idiv_di): Ditto.
26090 (lua_idiv_di_load): Ditto.
26091 (lua_fdiv_SF): Ditto.
26092 (lua_fdiv_SF_load): Ditto.
26093 (lua_fdiv_DF): Ditto.
26094 (lua_fdiv_DF_load): Ditto.
26095 (lua_fdiv_XF): Ditto.
26096 (lua_fdiv_XF_load): Ditto.
26097 (lua_ssediv_SF): Ditto.
26098 (lua_ssediv_load_SF): Ditto.
26099 (lua_ssediv_V4SF): Ditto.
26100 (lua_ssediv_load_V4SF): Ditto.
26101 (lua_ssediv_V8SF): Ditto.
26102 (lua_ssediv_load_V8SF): Ditto.
26103 (lua_ssediv_SD): Ditto.
26104 (lua_ssediv_load_SD): Ditto.
26105 (lua_ssediv_V2DF): Ditto.
26106 (lua_ssediv_load_V2DF): Ditto.
26107 (lua_ssediv_V4DF): Ditto.
26108 (lua_ssediv_load_V4DF): Ditto.
26110 2023-01-02 Florian Weimer <fweimer@redhat.com>
26112 * debug.h (dwarf_reg_sizes_constant): Declare.
26113 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
26115 2023-01-02 Florian Weimer <fweimer@redhat.com>
26117 * dwarf2cfi.cc (init_return_column_size): Remove.
26118 (init_one_dwarf_reg_size): Adjust.
26119 (generate_dwarf_reg_sizes): New function. Extracted
26120 from expand_builtin_init_dwarf_reg_sizes.
26121 (expand_builtin_init_dwarf_reg_sizes): Call
26122 generate_dwarf_reg_sizes.
26123 * target.def (init_dwarf_reg_sizes_extra): Adjust
26125 * config/msp430/msp430.cc
26126 (msp430_init_dwarf_reg_sizes_extra): Adjust.
26127 * config/rs6000/rs6000.cc
26128 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
26129 * doc/tm.texi: Update.
26131 2023-01-02 Jakub Jelinek <jakub@redhat.com>
26133 * gcc.cc (process_command): Update copyright notice dates.
26134 * gcov-dump.cc (print_version): Ditto.
26135 * gcov.cc (print_version): Ditto.
26136 * gcov-tool.cc (print_version): Ditto.
26137 * gengtype.cc (create_file): Ditto.
26138 * doc/cpp.texi: Bump @copying's copyright year.
26139 * doc/cppinternals.texi: Ditto.
26140 * doc/gcc.texi: Ditto.
26141 * doc/gccint.texi: Ditto.
26142 * doc/gcov.texi: Ditto.
26143 * doc/install.texi: Ditto.
26144 * doc/invoke.texi: Ditto.
26146 2023-01-01 Roger Sayle <roger@nextmovesoftware.com>
26147 Uroš Bizjak <ubizjak@gmail.com>
26149 * config/i386/i386.md (extendditi2): New define_insn.
26150 (define_split): Use DWIH mode iterator to treat new extendditi2
26151 identically to existing extendsidi2_1.
26152 (define_peephole2): Likewise.
26153 (define_peephole2): Likewise.
26154 (define_Split): Likewise.
26157 Copyright (C) 2023 Free Software Foundation, Inc.
26159 Copying and distribution of this file, with or without modification,
26160 are permitted in any medium without royalty provided the copyright
26161 notice and this notice are preserved.