1 2023-07-19 Vladimir N. Makarov <vmakarov@redhat.com>
3 * lra-int.h (lra_update_fp2sp_elimination): New prototype.
4 (lra_asm_insn_error): New prototype.
5 * lra-spills.cc (remove_pseudos): Add check for pseudo slot memory
7 (lra_spill): Call lra_update_fp2sp_elimination.
8 * lra-eliminations.cc: Remove trailing spaces.
9 (elimination_fp2sp_occured_p): New static flag.
10 (lra_eliminate_regs_1): Set the flag up.
11 (update_reg_eliminate): Modify the assert for stack to frame
13 (lra_update_fp2sp_elimination): New function.
14 (lra_eliminate): Clear flag elimination_fp2sp_occured_p.
16 2023-07-19 Andrew Carlotti <andrew.carlotti@arm.com>
18 * config/aarch64/aarch64.h (TARGET_MEMTAG): Remove armv8.5
20 * config/aarch64/arm_acle.h: Remove unnecessary armv8.x
21 dependencies from target pragmas.
22 * config/aarch64/arm_fp16.h (target): Likewise.
23 * config/aarch64/arm_neon.h (target): Likewise.
25 2023-07-19 Andrew Pinski <apinski@marvell.com>
27 PR tree-optimization/110252
28 * tree-ssa-phiopt.cc (class auto_flow_sensitive): New class.
29 (auto_flow_sensitive::auto_flow_sensitive): New constructor.
30 (auto_flow_sensitive::~auto_flow_sensitive): New deconstructor.
31 (match_simplify_replacement): Temporarily
32 remove the flow sensitive info on the two statements that might
35 2023-07-19 Andrew Pinski <apinski@marvell.com>
37 * gimple-fold.cc (fosa_unwind): Replace `vrange_storage *`
38 with flow_sensitive_info_storage.
39 (follow_outer_ssa_edges): Update how to save off the flow
41 (maybe_fold_comparisons_from_match_pd): Update restoring
42 of flow sensitive info.
43 * tree-ssanames.cc (flow_sensitive_info_storage::save): New method.
44 (flow_sensitive_info_storage::restore): New method.
45 (flow_sensitive_info_storage::save_and_clear): New method.
46 (flow_sensitive_info_storage::clear_storage): New method.
47 * tree-ssanames.h (class flow_sensitive_info_storage): New class.
49 2023-07-19 Andrew Pinski <apinski@marvell.com>
51 PR tree-optimization/110726
52 * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)):
53 Add checks to make sure the type was one bit precision
56 2023-07-19 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
58 * doc/md.texi: Add mask_len_fold_left_plus.
59 * internal-fn.cc (mask_len_fold_left_direct): Ditto.
60 (expand_mask_len_fold_left_optab_fn): Ditto.
61 (direct_mask_len_fold_left_optab_supported_p): Ditto.
62 * internal-fn.def (MASK_LEN_FOLD_LEFT_PLUS): Ditto.
63 * optabs.def (OPTAB_D): Ditto.
65 2023-07-19 Jakub Jelinek <jakub@redhat.com>
67 * tree-switch-conversion.h (class bit_test_cluster): Fix comment typo.
69 2023-07-19 Jakub Jelinek <jakub@redhat.com>
71 PR tree-optimization/110731
72 * wide-int.cc (wi::divmod_internal): Always unpack dividend and
73 divisor as UNSIGNED regardless of sgn.
75 2023-07-19 Lehua Ding <lehua.ding@rivai.ai>
77 * common/config/riscv/riscv-common.cc (riscv_supported_std_ext): Init.
78 (standard_extensions_p): Add check.
79 (riscv_subset_list::add): Just return NULL if it failed before.
80 (riscv_subset_list::parse_std_ext): Continue parse when find a error
81 (riscv_subset_list::parse): Just return NULL if it failed before.
82 * config/riscv/riscv-subset.h (class riscv_subset_list): Add field.
84 2023-07-19 Jan Beulich <jbeulich@suse.com>
86 * config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate):
88 (ix86_expand_vector_extract): Use gen_vec_extract_lo /
90 (expand_vec_perm_broadcast_1): Use gen_vec_interleave_high /
91 gen_vec_interleave_low. Rename local variable.
93 2023-07-19 Jan Beulich <jbeulich@suse.com>
95 * config/i386/sse.md (vec_dupv2df<mask_name>): Add new AVX512F
96 alternative. Move AVX512VL part of condition to new "enabled"
99 2023-07-19 liuhongt <hongtao.liu@intel.com>
102 * config/i386/i386-builtins.cc
103 (ix86_register_float16_builtin_type): Remove TARGET_SSE2.
104 (ix86_register_bf16_builtin_type): Ditto.
105 * config/i386/i386-c.cc (ix86_target_macros): When TARGET_SSE2
106 isn't available, undef the macros which are used to check the
107 backend support of the _Float16/__bf16 types when building
108 libstdc++ and libgcc.
109 * config/i386/i386.cc (construct_container): Issue errors for
110 HFmode/BFmode when TARGET_SSE2 is not available.
111 (function_value_32): Ditto.
112 (ix86_scalar_mode_supported_p): Remove TARGET_SSE2 for HFmode/BFmode.
113 (ix86_libgcc_floating_mode_supported_p): Ditto.
114 (ix86_emit_support_tinfos): Adjust codes.
115 (ix86_invalid_conversion): Return diagnostic message string
116 when there's conversion from/to BF/HFmode w/o TARGET_SSE2.
117 (ix86_invalid_unary_op): New function.
118 (ix86_invalid_binary_op): Ditto.
119 (TARGET_INVALID_UNARY_OP): Define.
120 (TARGET_INVALID_BINARY_OP): Define.
121 * config/i386/immintrin.h [__SSE2__]: Remove for fp16/bf16
122 related instrinsics header files.
123 * config/i386/i386.h (VALID_SSE2_TYPE_MODE): New macro.
125 2023-07-18 Uros Bizjak <ubizjak@gmail.com>
127 * dwarf2asm.cc: Change FALSE to false.
128 * dwarf2cfi.cc (execute_dwarf2_frame): Change return type to void.
129 * dwarf2out.cc (matches_main_base): Change return type from
130 int to bool. Change "last_match" variable to bool.
131 (dump_struct_debug): Change return type from int to bool.
132 Change "matches" and "result" function arguments to bool.
133 (is_pseudo_reg): Change return type from int to bool.
134 (is_tagged_type): Ditto.
136 (same_dw_val_p): Change return type from int to bool and adjust
137 function body accordingly.
138 (same_attr_p): Ditto.
140 (is_type_die): Ditto.
141 (is_declaration_die): Ditto.
142 (should_move_die_to_comdat): Ditto.
143 (is_base_type): Ditto.
144 (is_based_loc): Ditto.
145 (local_scope_p): Ditto.
146 (class_scope_p): Ditto.
147 (class_or_namespace_scope_p): Ditto.
148 (is_tagged_type): Ditto.
149 (is_rust): Use void argument.
150 (is_nested_in_subprogram): Change return type from int to bool.
151 (contains_subprogram_definition): Ditto.
152 (gen_struct_or_union_type_die): Change "nested", "complete"
153 and "ns_decl" variables to bool.
154 (is_naming_typedef_decl): Change FALSE to false.
156 2023-07-18 Jan Hubicka <jh@suse.cz>
158 * tree-ssa-loop-ch.cc (edge_range_query): Take loop argument; be ready
159 for queries not in headers.
160 (static_loop_exit): Add basic blck parameter; update use of
162 (should_duplicate_loop_header_p): Add ranger and static_exits
163 parameter. Do not account statements that will be optimized
164 out after duplicaiton in overall size. Add ranger query to
166 (update_profile_after_ch): Take static_exits has set instead of
167 single eliminated_edge.
168 (ch_base::copy_headers): Do all analysis in the first pass;
169 remember invariant_exits and static_exits.
171 2023-07-18 Jason Merrill <jason@redhat.com>
173 * fold-const.cc (native_interpret_aggregate): Skip empty fields.
175 2023-07-18 Gaius Mulley <gaiusmod2@gmail.com>
177 * doc/gm2.texi (Semantic checking): Change example testwithptr
180 2023-07-18 Richard Biener <rguenther@suse.de>
183 * gimple-isel.cc (gimple_expand_vec_exprs): Merge into...
184 (pass_gimple_isel::execute): ... this. Duplicate
185 comparison defs of COND_EXPRs.
187 2023-07-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
189 * config/riscv/riscv-selftests.cc (run_poly_int_selftests): Add more selftests.
190 * config/riscv/riscv.cc (riscv_legitimize_poly_move): Dynamic adjust size of VLA vectors.
191 (riscv_convert_vector_bits): Ditto.
193 2023-07-18 Juzhe-Zhong <juzhe.zhong@rivai.ai>
195 * config/riscv/autovec.md (vec_shl_insert_<mode>): New patterns.
196 * config/riscv/riscv-v.cc (shuffle_compress_patterns): Fix bugs.
198 2023-07-18 Juergen Christ <jchrist@linux.ibm.com>
200 * config/s390/vx-builtins.md: New vsel pattern.
202 2023-07-18 liuhongt <hongtao.liu@intel.com>
205 * config/i386/sse.md (<mask_codefor>one_cmpl<mode>2<mask_name>):
206 Remove # from assemble output.
208 2023-07-18 liuhongt <hongtao.liu@intel.com>
211 * config/i386/sync.md (cmpccxadd_<mode>): Adjust the pattern
212 to explicitly set FLAGS_REG like *cmp<mode>_1, also add extra
213 3 define_peephole2 after the pattern.
215 2023-07-18 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
217 * rtl-ssa/internals.inl: Fix when mode1 and mode2 are not ordred.
219 2023-07-18 Pan Li <pan2.li@intel.com>
220 Juzhe-Zhong <juzhe.zhong@rivai.ai>
222 * config/riscv/riscv.cc (struct machine_function): Add new field.
223 (riscv_static_frm_mode_p): New function.
224 (riscv_emit_frm_mode_set): New function for emit FRM.
225 (riscv_emit_mode_set): Extract function for FRM.
226 (riscv_mode_needed): Fix the TODO.
227 (riscv_mode_entry): Initial dynamic frm RTL.
228 (riscv_mode_exit): Return DYN_EXIT.
229 * config/riscv/riscv.md: Add rdfrm.
230 * config/riscv/vector-iterators.md (unspecv): Add DYN_EXIT unspecv.
231 * config/riscv/vector.md (frm_modee): Add new mode dyn_exit.
233 (fsrmsi_backup): New pattern for swap.
234 (fsrmsi_restore): New pattern for restore.
235 (fsrmsi_restore_exit): New pattern for restore exit.
236 (frrmsi): New pattern for backup.
238 2023-07-17 Arsen Arsenović <arsen@aarsen.me>
240 * doc/extend.texi: Add @cindex on __auto_type.
242 2023-07-17 Uros Bizjak <ubizjak@gmail.com>
244 * combine-stack-adj.cc (stack_memref_p): Change return type from
245 int to bool and adjust function body accordingly.
246 (rest_of_handle_stack_adjustments): Change return type to void.
248 2023-07-17 Uros Bizjak <ubizjak@gmail.com>
250 * combine.cc (struct reg_stat_type): Change last_set_invalid to bool.
251 (cant_combine_insn_p): Change return type from int to bool and adjust
252 function body accordingly.
253 (can_combine_p): Ditto.
254 (combinable_i3pat): Ditto. Change "i1_not_in_src" and "i0_not_in_src"
255 function arguments from int to bool.
256 (contains_muldiv): Change return type from int to bool and adjust
257 function body accordingly.
258 (try_combine): Ditto. Change "new_direct_jump" pointer function
259 argument from int to bool. Change "substed_i2", "substed_i1",
260 "substed_i0", "added_sets_0", "added_sets_1", "added_sets_2",
261 "i2dest_in_i2src", "i1dest_in_i1src", "i2dest_in_i1src",
262 "i0dest_in_i0src", "i1dest_in_i0src", "i2dest_in_i0src",
263 "i2dest_killed", "i1dest_killed", "i0dest_killed", "i1_feeds_i2_n",
264 "i0_feeds_i2_n", "i0_feeds_i1_n", "i3_subst_into_i2", "have_mult",
265 "swap_i2i3", "split_i2i3" and "changed_i3_dest" variables
267 (subst): Change "in_dest", "in_cond" and "unique_copy" function
268 arguments from int to bool.
269 (combine_simplify_rtx): Change "in_dest" and "in_cond" function
270 arguments from int to bool.
271 (make_extraction): Change "unsignedp", "in_dest" and "in_compare"
272 function argument from int to bool.
273 (force_int_to_mode): Change "just_select" function argument
274 from int to bool. Change "next_select" variable to bool.
275 (rtx_equal_for_field_assignment_p): Change return type from
276 int to bool and adjust function body accordingly.
277 (merge_outer_ops): Ditto. Change "pcomp_p" pointer function
278 argument from int to bool.
279 (get_last_value_validate): Change return type from int to bool
280 and adjust function body accordingly.
281 (reg_dead_at_p): Ditto.
282 (reg_bitfield_target_p): Ditto.
283 (combine_instructions): Ditto. Change "new_direct_jump"
285 (can_combine_p): Change return type from int to bool
286 and adjust function body accordingly.
287 (likely_spilled_retval_p): Ditto.
288 (can_change_dest_mode): Change "added_sets" function argument
290 (find_split_point): Change "unsignedp" variable to bool.
291 (simplify_if_then_else): Change "comparison_p" and "swapped"
293 (simplify_set): Change "other_changed" variable to bool.
294 (expand_compound_operation): Change "unsignedp" variable to bool.
295 (force_to_mode): Change "just_select" function argument
296 from int to bool. Change "next_select" variable to bool.
297 (extended_count): Change "unsignedp" function argument to bool.
298 (simplify_shift_const_1): Change "complement_p" variable to bool.
299 (simplify_comparison): Change "changed" variable to bool.
300 (rest_of_handle_combine): Change return type to void.
302 2023-07-17 Andre Vieira <andre.simoesdiasvieira@arm.com>
305 * Makefile.in (INTERNAL_FN_H): Add insn-opinit.h.
307 2023-07-17 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
309 * ira.cc (setup_reg_class_relations): Continue
310 if regclass cl3 is hard_reg_set_empty_p.
312 2023-07-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
314 * config/riscv/riscv.cc (riscv_option_override): Add sorry check.
316 2023-07-17 Martin Jambor <mjambor@suse.cz>
318 * tree-ssa-loop-ivcanon.cc (try_peel_loop): Remove unused variable
321 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
323 * tree-ssa-ccp.cc (ccp_finalize): Export value/mask known bits.
325 2023-07-17 Lehua Ding <lehua.ding@rivai.ai>
328 * common/config/riscv/riscv-common.cc (riscv_subset_list::handle_implied_ext):
329 recur add all implied extensions.
330 (riscv_subset_list::check_implied_ext): Add new method.
331 (riscv_subset_list::parse): Call checker check_implied_ext.
332 * config/riscv/riscv-subset.h: Add new method.
334 2023-07-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
336 * config/riscv/autovec.md (reduc_plus_scal_<mode>): New pattern.
337 (reduc_smax_scal_<mode>): Ditto.
338 (reduc_umax_scal_<mode>): Ditto.
339 (reduc_smin_scal_<mode>): Ditto.
340 (reduc_umin_scal_<mode>): Ditto.
341 (reduc_and_scal_<mode>): Ditto.
342 (reduc_ior_scal_<mode>): Ditto.
343 (reduc_xor_scal_<mode>): Ditto.
344 * config/riscv/riscv-protos.h (enum insn_type): Add reduction.
345 (expand_reduction): New function.
346 * config/riscv/riscv-v.cc (emit_vlmax_reduction_insn): Ditto.
347 (emit_vlmax_fp_reduction_insn): Ditto.
348 (get_m1_mode): Ditto.
349 (expand_cond_len_binop): Fix name.
350 (expand_reduction): New function
351 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Fix VSETVL BUG.
352 (validate_change_or_fail): New function.
353 (change_insn): Fix VSETVL BUG.
354 (change_vsetvl_insn): Ditto.
355 (pass_vsetvl::backward_demand_fusion): Ditto.
356 (pass_vsetvl::df_post_optimization): Ditto.
358 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
360 * ipa-prop.cc (ipcp_update_bits): Export value/mask known bits.
362 2023-07-17 Christoph Müllner <christoph.muellner@vrull.eu>
364 * config/riscv/riscv.cc (riscv_regno_ok_for_index_p):
365 Remove parameter name from declaration of unused parameter.
367 2023-07-17 Kewen Lin <linkw@linux.ibm.com>
369 PR tree-optimization/110652
370 * tree-vect-stmts.cc (vectorizable_load): Initialize new_temp as
373 2023-07-17 Richard Biener <rguenther@suse.de>
375 PR tree-optimization/110669
376 * tree-scalar-evolution.cc (analyze_and_compute_bitop_with_inv_effect):
377 Check we matched a header PHI.
379 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
381 * tree-ssanames.cc (set_bitmask): New.
382 * tree-ssanames.h (set_bitmask): New.
384 2023-07-17 Aldy Hernandez <aldyh@redhat.com>
386 * value-range.cc (irange_bitmask::verify_mask): Mask need not be
388 * value-range.h (irange_bitmask::union_): Normalize beforehand.
389 (irange_bitmask::intersect): Same.
391 2023-07-17 Andrew Pinski <apinski@marvell.com>
393 PR tree-optimization/95923
394 * match.pd ((a|b)&(a==b),a|(a==b),(a&b)|(a==b)): New transformation.
396 2023-07-17 Roger Sayle <roger@nextmovesoftware.com>
398 * tree-if-conv.cc (predicate_scalar_phi): Make the arguments
399 to the std::sort comparison lambda function const.
401 2023-07-17 Andrew Pinski <apinski@marvell.com>
403 PR tree-optimization/110666
404 * match.pd (A NEEQ (A NEEQ CST)): Fix Outer EQ case.
406 2023-07-17 Mo, Zewei <zewei.mo@intel.com>
408 * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Lunar Lake,
409 Arrow Lake and Arrow Lake S.
410 * common/config/i386/i386-common.cc:
411 (processor_name): Add arrowlake.
412 (processor_alias_table): Add arrow lake, arrow lake s and lunar
414 * common/config/i386/i386-cpuinfo.h (enum processor_subtypes):
415 Add INTEL_COREI7_ARROWLAKE and INTEL_COREI7_ARROWLAKE_S.
416 * config.gcc: Add -march=arrowlake and -march=arrowlake-s.
417 * config/i386/driver-i386.cc (host_detect_local_cpu): Handle
419 * config/i386/i386-c.cc (ix86_target_macros_internal): Add
421 * config/i386/i386-options.cc (m_ARROWLAKE): New.
422 (processor_cost_table): Add arrowlake.
423 * config/i386/i386.h (enum processor_type):
424 Add PROCESSOR_ARROWLAKE.
425 * config/i386/x86-tune.def: Add m_ARROWLAKE.
426 * doc/extend.texi: Add arrowlake and arrowlake-s.
427 * doc/invoke.texi: Ditto.
429 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
431 * config/i386/sse.md (VI2_AVX2): Delete V32HI since we actually
432 have the same iterator. Also renaming all the occurence to
434 (usdot_prod<mode>): New define_expand.
435 (udot_prod<mode>): Ditto.
437 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
439 * common/config/i386/cpuinfo.h (get_available_features):
441 * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SM4_SET,
442 OPTION_MASK_ISA2_SM4_UNSET): New.
443 (OPTION_MASK_ISA2_AVX_UNSET): Add SM4.
444 (ix86_handle_option): Handle -msm4.
445 * common/config/i386/i386-cpuinfo.h (enum processor_features):
447 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
449 * config.gcc: Add sm4intrin.h.
450 * config/i386/cpuid.h (bit_SM4): New.
451 * config/i386/i386-builtin.def (BDESC): Add new builtins.
452 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
454 * config/i386/i386-isa.def (SM4): Add DEF_PTA(SM4).
455 * config/i386/i386-options.cc (isa2_opts): Add -msm4.
456 (ix86_valid_target_attribute_inner_p): Handle sm4.
457 * config/i386/i386.opt: Add option -msm4.
458 * config/i386/immintrin.h: Include sm4intrin.h
459 * config/i386/sse.md (vsm4key4_<mode>): New define insn.
460 (vsm4rnds4_<mode>): Ditto.
461 * doc/extend.texi: Document sm4.
462 * doc/invoke.texi: Document -msm4.
463 * doc/sourcebuild.texi: Document target sm4.
464 * config/i386/sm4intrin.h: New file.
466 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
468 * common/config/i386/cpuinfo.h (get_available_features):
470 * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SHA512_SET,
471 OPTION_MASK_ISA2_SHA512_UNSET): New.
472 (OPTION_MASK_ISA2_AVX_UNSET): Add SHA512.
473 (ix86_handle_option): Handle -msha512.
474 * common/config/i386/i386-cpuinfo.h (enum processor_features):
476 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
478 * config.gcc: Add sha512intrin.h.
479 * config/i386/cpuid.h (bit_SHA512): New.
480 * config/i386/i386-builtin-types.def:
481 Add DEF_FUNCTION_TYPE (V4DI, V4DI, V4DI, V2DI).
482 * config/i386/i386-builtin.def (BDESC): Add new builtins.
483 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
485 * config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle
486 V4DI_FTYPE_V4DI_V4DI_V2DI and V4DI_FTYPE_V4DI_V2DI.
487 * config/i386/i386-isa.def (SHA512): Add DEF_PTA(SHA512).
488 * config/i386/i386-options.cc (isa2_opts): Add -msha512.
489 (ix86_valid_target_attribute_inner_p): Handle sha512.
490 * config/i386/i386.opt: Add option -msha512.
491 * config/i386/immintrin.h: Include sha512intrin.h.
492 * config/i386/sse.md (vsha512msg1): New define insn.
493 (vsha512msg2): Ditto.
494 (vsha512rnds2): Ditto.
495 * doc/extend.texi: Document sha512.
496 * doc/invoke.texi: Document -msha512.
497 * doc/sourcebuild.texi: Document target sha512.
498 * config/i386/sha512intrin.h: New file.
500 2023-07-17 Haochen Jiang <haochen.jiang@intel.com>
502 * common/config/i386/cpuinfo.h (get_available_features):
504 * common/config/i386/i386-common.cc (OPTION_MASK_ISA2_SM3_SET,
505 OPTION_MASK_ISA2_SM3_UNSET): New.
506 (OPTION_MASK_ISA2_AVX_UNSET): Add SM3.
507 (ix86_handle_option): Handle -msm3.
508 * common/config/i386/i386-cpuinfo.h (enum processor_features):
510 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
512 * config.gcc: Add sm3intrin.h
513 * config/i386/cpuid.h (bit_SM3): New.
514 * config/i386/i386-builtin-types.def:
515 Add DEF_FUNCTION_TYPE (V4SI, V4SI, V4SI, V4SI, INT).
516 * config/i386/i386-builtin.def (BDESC): Add new builtins.
517 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
519 * config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle
520 V4SI_FTYPE_V4SI_V4SI_V4SI_INT.
521 * config/i386/i386-isa.def (SM3): Add DEF_PTA(SM3).
522 * config/i386/i386-options.cc (isa2_opts): Add -msm3.
523 (ix86_valid_target_attribute_inner_p): Handle sm3.
524 * config/i386/i386.opt: Add option -msm3.
525 * config/i386/immintrin.h: Include sm3intrin.h.
526 * config/i386/sse.md (vsm3msg1): New define insn.
529 * doc/extend.texi: Document sm3.
530 * doc/invoke.texi: Document -msm3.
531 * doc/sourcebuild.texi: Document target sm3.
532 * config/i386/sm3intrin.h: New file.
534 2023-07-17 Kong Lingling <lingling.kong@intel.com>
535 Haochen Jiang <haochen.jiang@intel.com>
537 * common/config/i386/cpuinfo.h (get_available_features): Detect
539 * common/config/i386/i386-common.cc
540 (OPTION_MASK_ISA2_AVXVNNIINT16_SET): New.
541 (OPTION_MASK_ISA2_AVXVNNIINT16_UNSET): Ditto.
542 (ix86_handle_option): Handle -mavxvnniint16.
543 * common/config/i386/i386-cpuinfo.h (enum processor_features):
544 Add FEATURE_AVXVNNIINT16.
545 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
547 * config.gcc: Add avxvnniint16.h.
548 * config/i386/avxvnniint16intrin.h: New file.
549 * config/i386/cpuid.h (bit_AVXVNNIINT16): New.
550 * config/i386/i386-builtin.def: Add new builtins.
551 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
553 * config/i386/i386-options.cc (isa2_opts): Add -mavxvnniint16.
554 (ix86_valid_target_attribute_inner_p): Handle avxvnniint16intrin.h.
555 * config/i386/i386-isa.def: Add DEF_PTA(AVXVNNIINT16).
556 * config/i386/i386.opt: Add option -mavxvnniint16.
557 * config/i386/immintrin.h: Include avxvnniint16.h.
559 (vpdp<vpdpwprodtype>_<mode>): New define_insn.
560 * doc/extend.texi: Document avxvnniint16.
561 * doc/invoke.texi: Document -mavxvnniint16.
562 * doc/sourcebuild.texi: Document target avxvnniint16.
564 2023-07-16 Jan Hubicka <jh@suse.cz>
567 * tree-vect-loop.cc (scale_profile_for_vect_loop): Rewrite.
568 (vect_transform_loop): Move scale_profile_for_vect_loop after
571 2023-07-16 Jan Hubicka <jh@suse.cz>
573 PR tree-optimization/110649
574 * tree-vect-loop.cc (optimize_mask_stores): Set correctly
575 probability of the if-then-else construct.
577 2023-07-16 Jan Hubicka <jh@suse.cz>
580 * tree-ssa-loop-ivcanon.cc (try_peel_loop): Avoid double profile update.
582 2023-07-15 Andrew Pinski <apinski@marvell.com>
584 * doc/contrib.texi: Update my entry.
586 2023-07-15 John David Anglin <danglin@gcc.gnu.org>
588 * config/pa/pa.md: Define constants R1_REGNUM, R19_REGNUM and
590 (tgd_load): Restrict to !TARGET_64BIT. Use register constants.
591 (tld_load): Likewise.
592 (tgd_load_pic): Change to expander.
593 (tld_load_pic, tld_offset_load, tp_load): Likewise.
594 (tie_load_pic, tle_load): Likewise.
595 (tgd_load_picsi, tgd_load_picdi): New.
596 (tld_load_picsi, tld_load_picdi): New.
597 (tld_offset_load<P:mode>): New.
598 (tp_load<P:mode>): New.
599 (tie_load_picsi, tie_load_picdi): New.
600 (tle_load<P:mode>): New.
602 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
604 * config/arm/arm-mve-builtins-base.cc (vcmlaq, vcmlaq_rot90)
605 (vcmlaq_rot180, vcmlaq_rot270): New.
606 * config/arm/arm-mve-builtins-base.def (vcmlaq, vcmlaq_rot90)
607 (vcmlaq_rot180, vcmlaq_rot270): New.
608 * config/arm/arm-mve-builtins-base.h: (vcmlaq, vcmlaq_rot90)
609 (vcmlaq_rot180, vcmlaq_rot270): New.
610 * config/arm/arm-mve-builtins.cc
611 (function_instance::has_inactive_argument): Handle vcmlaq,
612 vcmlaq_rot90, vcmlaq_rot180, vcmlaq_rot270.
613 * config/arm/arm_mve.h (vcmlaq): Delete.
614 (vcmlaq_rot180): Delete.
615 (vcmlaq_rot270): Delete.
616 (vcmlaq_rot90): Delete.
618 (vcmlaq_rot180_m): Delete.
619 (vcmlaq_rot270_m): Delete.
620 (vcmlaq_rot90_m): Delete.
621 (vcmlaq_f16): Delete.
622 (vcmlaq_rot180_f16): Delete.
623 (vcmlaq_rot270_f16): Delete.
624 (vcmlaq_rot90_f16): Delete.
625 (vcmlaq_f32): Delete.
626 (vcmlaq_rot180_f32): Delete.
627 (vcmlaq_rot270_f32): Delete.
628 (vcmlaq_rot90_f32): Delete.
629 (vcmlaq_m_f32): Delete.
630 (vcmlaq_m_f16): Delete.
631 (vcmlaq_rot180_m_f32): Delete.
632 (vcmlaq_rot180_m_f16): Delete.
633 (vcmlaq_rot270_m_f32): Delete.
634 (vcmlaq_rot270_m_f16): Delete.
635 (vcmlaq_rot90_m_f32): Delete.
636 (vcmlaq_rot90_m_f16): Delete.
637 (__arm_vcmlaq_f16): Delete.
638 (__arm_vcmlaq_rot180_f16): Delete.
639 (__arm_vcmlaq_rot270_f16): Delete.
640 (__arm_vcmlaq_rot90_f16): Delete.
641 (__arm_vcmlaq_f32): Delete.
642 (__arm_vcmlaq_rot180_f32): Delete.
643 (__arm_vcmlaq_rot270_f32): Delete.
644 (__arm_vcmlaq_rot90_f32): Delete.
645 (__arm_vcmlaq_m_f32): Delete.
646 (__arm_vcmlaq_m_f16): Delete.
647 (__arm_vcmlaq_rot180_m_f32): Delete.
648 (__arm_vcmlaq_rot180_m_f16): Delete.
649 (__arm_vcmlaq_rot270_m_f32): Delete.
650 (__arm_vcmlaq_rot270_m_f16): Delete.
651 (__arm_vcmlaq_rot90_m_f32): Delete.
652 (__arm_vcmlaq_rot90_m_f16): Delete.
653 (__arm_vcmlaq): Delete.
654 (__arm_vcmlaq_rot180): Delete.
655 (__arm_vcmlaq_rot270): Delete.
656 (__arm_vcmlaq_rot90): Delete.
657 (__arm_vcmlaq_m): Delete.
658 (__arm_vcmlaq_rot180_m): Delete.
659 (__arm_vcmlaq_rot270_m): Delete.
660 (__arm_vcmlaq_rot90_m): Delete.
662 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
664 * config/arm/arm_mve_builtins.def (vcmlaq_rot90_f)
665 (vcmlaq_rot270_f, vcmlaq_rot180_f, vcmlaq_f): Add "_f" suffix.
666 * config/arm/iterators.md (MVE_VCMLAQ_M): New.
667 (mve_insn): Add vcmla.
668 (rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F,
670 (mve_rot): Add VCMLAQ_M_F, VCMLAQ_ROT90_M_F, VCMLAQ_ROT180_M_F,
672 * config/arm/mve.md (mve_vcmlaq<mve_rot><mode>): Rename into ...
673 (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this.
674 (mve_vcmlaq_m_f<mode>, mve_vcmlaq_rot180_m_f<mode>)
675 (mve_vcmlaq_rot270_m_f<mode>, mve_vcmlaq_rot90_m_f<mode>): Merge
677 (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
679 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
681 * config/arm/arm-mve-builtins-base.cc (vcmulq, vcmulq_rot90)
682 (vcmulq_rot180, vcmulq_rot270): New.
683 * config/arm/arm-mve-builtins-base.def (vcmulq, vcmulq_rot90)
684 (vcmulq_rot180, vcmulq_rot270): New.
685 * config/arm/arm-mve-builtins-base.h: (vcmulq, vcmulq_rot90)
686 (vcmulq_rot180, vcmulq_rot270): New.
687 * config/arm/arm_mve.h (vcmulq_rot90): Delete.
688 (vcmulq_rot270): Delete.
689 (vcmulq_rot180): Delete.
692 (vcmulq_rot180_m): Delete.
693 (vcmulq_rot270_m): Delete.
694 (vcmulq_rot90_m): Delete.
696 (vcmulq_rot90_x): Delete.
697 (vcmulq_rot180_x): Delete.
698 (vcmulq_rot270_x): Delete.
699 (vcmulq_rot90_f16): Delete.
700 (vcmulq_rot270_f16): Delete.
701 (vcmulq_rot180_f16): Delete.
702 (vcmulq_f16): Delete.
703 (vcmulq_rot90_f32): Delete.
704 (vcmulq_rot270_f32): Delete.
705 (vcmulq_rot180_f32): Delete.
706 (vcmulq_f32): Delete.
707 (vcmulq_m_f32): Delete.
708 (vcmulq_m_f16): Delete.
709 (vcmulq_rot180_m_f32): Delete.
710 (vcmulq_rot180_m_f16): Delete.
711 (vcmulq_rot270_m_f32): Delete.
712 (vcmulq_rot270_m_f16): Delete.
713 (vcmulq_rot90_m_f32): Delete.
714 (vcmulq_rot90_m_f16): Delete.
715 (vcmulq_x_f16): Delete.
716 (vcmulq_x_f32): Delete.
717 (vcmulq_rot90_x_f16): Delete.
718 (vcmulq_rot90_x_f32): Delete.
719 (vcmulq_rot180_x_f16): Delete.
720 (vcmulq_rot180_x_f32): Delete.
721 (vcmulq_rot270_x_f16): Delete.
722 (vcmulq_rot270_x_f32): Delete.
723 (__arm_vcmulq_rot90_f16): Delete.
724 (__arm_vcmulq_rot270_f16): Delete.
725 (__arm_vcmulq_rot180_f16): Delete.
726 (__arm_vcmulq_f16): Delete.
727 (__arm_vcmulq_rot90_f32): Delete.
728 (__arm_vcmulq_rot270_f32): Delete.
729 (__arm_vcmulq_rot180_f32): Delete.
730 (__arm_vcmulq_f32): Delete.
731 (__arm_vcmulq_m_f32): Delete.
732 (__arm_vcmulq_m_f16): Delete.
733 (__arm_vcmulq_rot180_m_f32): Delete.
734 (__arm_vcmulq_rot180_m_f16): Delete.
735 (__arm_vcmulq_rot270_m_f32): Delete.
736 (__arm_vcmulq_rot270_m_f16): Delete.
737 (__arm_vcmulq_rot90_m_f32): Delete.
738 (__arm_vcmulq_rot90_m_f16): Delete.
739 (__arm_vcmulq_x_f16): Delete.
740 (__arm_vcmulq_x_f32): Delete.
741 (__arm_vcmulq_rot90_x_f16): Delete.
742 (__arm_vcmulq_rot90_x_f32): Delete.
743 (__arm_vcmulq_rot180_x_f16): Delete.
744 (__arm_vcmulq_rot180_x_f32): Delete.
745 (__arm_vcmulq_rot270_x_f16): Delete.
746 (__arm_vcmulq_rot270_x_f32): Delete.
747 (__arm_vcmulq_rot90): Delete.
748 (__arm_vcmulq_rot270): Delete.
749 (__arm_vcmulq_rot180): Delete.
750 (__arm_vcmulq): Delete.
751 (__arm_vcmulq_m): Delete.
752 (__arm_vcmulq_rot180_m): Delete.
753 (__arm_vcmulq_rot270_m): Delete.
754 (__arm_vcmulq_rot90_m): Delete.
755 (__arm_vcmulq_x): Delete.
756 (__arm_vcmulq_rot90_x): Delete.
757 (__arm_vcmulq_rot180_x): Delete.
758 (__arm_vcmulq_rot270_x): Delete.
760 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
762 * config/arm/arm_mve_builtins.def (vcmulq_rot90_f)
763 (vcmulq_rot270_f, vcmulq_rot180_f, vcmulq_f): Add "_f" suffix.
764 * config/arm/iterators.md (MVE_VCADDQ_VCMULQ)
765 (MVE_VCADDQ_VCMULQ_M): New.
766 (mve_insn): Add vcmul.
767 (rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F,
770 (mve_rot): Add VCMULQ_M_F, VCMULQ_ROT90_M_F, VCMULQ_ROT180_M_F,
772 * config/arm/mve.md (mve_vcmulq<mve_rot><mode>): Merge into
773 @mve_<mve_insn>q<mve_rot>_f<mode>.
774 (mve_vcmulq_m_f<mode>, mve_vcmulq_rot180_m_f<mode>)
775 (mve_vcmulq_rot270_m_f<mode>, mve_vcmulq_rot90_m_f<mode>): Merge
776 into @mve_<mve_insn>q<mve_rot>_m_f<mode>.
778 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
780 * config/arm/arm-mve-builtins-base.cc (vcaddq_rot90)
781 (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
782 * config/arm/arm-mve-builtins-base.def (vcaddq_rot90)
783 (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
784 * config/arm/arm-mve-builtins-base.h: (vcaddq_rot90)
785 (vcaddq_rot270, vhcaddq_rot90, vhcaddq_rot270): New.
786 * config/arm/arm-mve-builtins-functions.h (class
787 unspec_mve_function_exact_insn_rot): New.
788 * config/arm/arm_mve.h (vcaddq_rot90): Delete.
789 (vcaddq_rot270): Delete.
790 (vhcaddq_rot90): Delete.
791 (vhcaddq_rot270): Delete.
792 (vcaddq_rot270_m): Delete.
793 (vcaddq_rot90_m): Delete.
794 (vhcaddq_rot270_m): Delete.
795 (vhcaddq_rot90_m): Delete.
796 (vcaddq_rot90_x): Delete.
797 (vcaddq_rot270_x): Delete.
798 (vhcaddq_rot90_x): Delete.
799 (vhcaddq_rot270_x): Delete.
800 (vcaddq_rot90_u8): Delete.
801 (vcaddq_rot270_u8): Delete.
802 (vhcaddq_rot90_s8): Delete.
803 (vhcaddq_rot270_s8): Delete.
804 (vcaddq_rot90_s8): Delete.
805 (vcaddq_rot270_s8): Delete.
806 (vcaddq_rot90_u16): Delete.
807 (vcaddq_rot270_u16): Delete.
808 (vhcaddq_rot90_s16): Delete.
809 (vhcaddq_rot270_s16): Delete.
810 (vcaddq_rot90_s16): Delete.
811 (vcaddq_rot270_s16): Delete.
812 (vcaddq_rot90_u32): Delete.
813 (vcaddq_rot270_u32): Delete.
814 (vhcaddq_rot90_s32): Delete.
815 (vhcaddq_rot270_s32): Delete.
816 (vcaddq_rot90_s32): Delete.
817 (vcaddq_rot270_s32): Delete.
818 (vcaddq_rot90_f16): Delete.
819 (vcaddq_rot270_f16): Delete.
820 (vcaddq_rot90_f32): Delete.
821 (vcaddq_rot270_f32): Delete.
822 (vcaddq_rot270_m_s8): Delete.
823 (vcaddq_rot270_m_s32): Delete.
824 (vcaddq_rot270_m_s16): Delete.
825 (vcaddq_rot270_m_u8): Delete.
826 (vcaddq_rot270_m_u32): Delete.
827 (vcaddq_rot270_m_u16): Delete.
828 (vcaddq_rot90_m_s8): Delete.
829 (vcaddq_rot90_m_s32): Delete.
830 (vcaddq_rot90_m_s16): Delete.
831 (vcaddq_rot90_m_u8): Delete.
832 (vcaddq_rot90_m_u32): Delete.
833 (vcaddq_rot90_m_u16): Delete.
834 (vhcaddq_rot270_m_s8): Delete.
835 (vhcaddq_rot270_m_s32): Delete.
836 (vhcaddq_rot270_m_s16): Delete.
837 (vhcaddq_rot90_m_s8): Delete.
838 (vhcaddq_rot90_m_s32): Delete.
839 (vhcaddq_rot90_m_s16): Delete.
840 (vcaddq_rot270_m_f32): Delete.
841 (vcaddq_rot270_m_f16): Delete.
842 (vcaddq_rot90_m_f32): Delete.
843 (vcaddq_rot90_m_f16): Delete.
844 (vcaddq_rot90_x_s8): Delete.
845 (vcaddq_rot90_x_s16): Delete.
846 (vcaddq_rot90_x_s32): Delete.
847 (vcaddq_rot90_x_u8): Delete.
848 (vcaddq_rot90_x_u16): Delete.
849 (vcaddq_rot90_x_u32): Delete.
850 (vcaddq_rot270_x_s8): Delete.
851 (vcaddq_rot270_x_s16): Delete.
852 (vcaddq_rot270_x_s32): Delete.
853 (vcaddq_rot270_x_u8): Delete.
854 (vcaddq_rot270_x_u16): Delete.
855 (vcaddq_rot270_x_u32): Delete.
856 (vhcaddq_rot90_x_s8): Delete.
857 (vhcaddq_rot90_x_s16): Delete.
858 (vhcaddq_rot90_x_s32): Delete.
859 (vhcaddq_rot270_x_s8): Delete.
860 (vhcaddq_rot270_x_s16): Delete.
861 (vhcaddq_rot270_x_s32): Delete.
862 (vcaddq_rot90_x_f16): Delete.
863 (vcaddq_rot90_x_f32): Delete.
864 (vcaddq_rot270_x_f16): Delete.
865 (vcaddq_rot270_x_f32): Delete.
866 (__arm_vcaddq_rot90_u8): Delete.
867 (__arm_vcaddq_rot270_u8): Delete.
868 (__arm_vhcaddq_rot90_s8): Delete.
869 (__arm_vhcaddq_rot270_s8): Delete.
870 (__arm_vcaddq_rot90_s8): Delete.
871 (__arm_vcaddq_rot270_s8): Delete.
872 (__arm_vcaddq_rot90_u16): Delete.
873 (__arm_vcaddq_rot270_u16): Delete.
874 (__arm_vhcaddq_rot90_s16): Delete.
875 (__arm_vhcaddq_rot270_s16): Delete.
876 (__arm_vcaddq_rot90_s16): Delete.
877 (__arm_vcaddq_rot270_s16): Delete.
878 (__arm_vcaddq_rot90_u32): Delete.
879 (__arm_vcaddq_rot270_u32): Delete.
880 (__arm_vhcaddq_rot90_s32): Delete.
881 (__arm_vhcaddq_rot270_s32): Delete.
882 (__arm_vcaddq_rot90_s32): Delete.
883 (__arm_vcaddq_rot270_s32): Delete.
884 (__arm_vcaddq_rot270_m_s8): Delete.
885 (__arm_vcaddq_rot270_m_s32): Delete.
886 (__arm_vcaddq_rot270_m_s16): Delete.
887 (__arm_vcaddq_rot270_m_u8): Delete.
888 (__arm_vcaddq_rot270_m_u32): Delete.
889 (__arm_vcaddq_rot270_m_u16): Delete.
890 (__arm_vcaddq_rot90_m_s8): Delete.
891 (__arm_vcaddq_rot90_m_s32): Delete.
892 (__arm_vcaddq_rot90_m_s16): Delete.
893 (__arm_vcaddq_rot90_m_u8): Delete.
894 (__arm_vcaddq_rot90_m_u32): Delete.
895 (__arm_vcaddq_rot90_m_u16): Delete.
896 (__arm_vhcaddq_rot270_m_s8): Delete.
897 (__arm_vhcaddq_rot270_m_s32): Delete.
898 (__arm_vhcaddq_rot270_m_s16): Delete.
899 (__arm_vhcaddq_rot90_m_s8): Delete.
900 (__arm_vhcaddq_rot90_m_s32): Delete.
901 (__arm_vhcaddq_rot90_m_s16): Delete.
902 (__arm_vcaddq_rot90_x_s8): Delete.
903 (__arm_vcaddq_rot90_x_s16): Delete.
904 (__arm_vcaddq_rot90_x_s32): Delete.
905 (__arm_vcaddq_rot90_x_u8): Delete.
906 (__arm_vcaddq_rot90_x_u16): Delete.
907 (__arm_vcaddq_rot90_x_u32): Delete.
908 (__arm_vcaddq_rot270_x_s8): Delete.
909 (__arm_vcaddq_rot270_x_s16): Delete.
910 (__arm_vcaddq_rot270_x_s32): Delete.
911 (__arm_vcaddq_rot270_x_u8): Delete.
912 (__arm_vcaddq_rot270_x_u16): Delete.
913 (__arm_vcaddq_rot270_x_u32): Delete.
914 (__arm_vhcaddq_rot90_x_s8): Delete.
915 (__arm_vhcaddq_rot90_x_s16): Delete.
916 (__arm_vhcaddq_rot90_x_s32): Delete.
917 (__arm_vhcaddq_rot270_x_s8): Delete.
918 (__arm_vhcaddq_rot270_x_s16): Delete.
919 (__arm_vhcaddq_rot270_x_s32): Delete.
920 (__arm_vcaddq_rot90_f16): Delete.
921 (__arm_vcaddq_rot270_f16): Delete.
922 (__arm_vcaddq_rot90_f32): Delete.
923 (__arm_vcaddq_rot270_f32): Delete.
924 (__arm_vcaddq_rot270_m_f32): Delete.
925 (__arm_vcaddq_rot270_m_f16): Delete.
926 (__arm_vcaddq_rot90_m_f32): Delete.
927 (__arm_vcaddq_rot90_m_f16): Delete.
928 (__arm_vcaddq_rot90_x_f16): Delete.
929 (__arm_vcaddq_rot90_x_f32): Delete.
930 (__arm_vcaddq_rot270_x_f16): Delete.
931 (__arm_vcaddq_rot270_x_f32): Delete.
932 (__arm_vcaddq_rot90): Delete.
933 (__arm_vcaddq_rot270): Delete.
934 (__arm_vhcaddq_rot90): Delete.
935 (__arm_vhcaddq_rot270): Delete.
936 (__arm_vcaddq_rot270_m): Delete.
937 (__arm_vcaddq_rot90_m): Delete.
938 (__arm_vhcaddq_rot270_m): Delete.
939 (__arm_vhcaddq_rot90_m): Delete.
940 (__arm_vcaddq_rot90_x): Delete.
941 (__arm_vcaddq_rot270_x): Delete.
942 (__arm_vhcaddq_rot90_x): Delete.
943 (__arm_vhcaddq_rot270_x): Delete.
945 2023-07-14 Christophe Lyon <christophe.lyon@linaro.org>
947 * config/arm/arm_mve_builtins.def (vcaddq_rot90_, vcaddq_rot270_)
948 (vcaddq_rot90_f, vcaddq_rot90_f): Add "_" or "_f" suffix.
949 * config/arm/iterators.md (mve_insn): Add vcadd, vhcadd.
950 (isu): Add UNSPEC_VCADD90, UNSPEC_VCADD270, VCADDQ_ROT270_M_U,
951 VCADDQ_ROT270_M_S, VCADDQ_ROT90_M_U, VCADDQ_ROT90_M_S,
952 VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S, VHCADDQ_ROT90_S,
954 (rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S, VCADDQ_ROT90_M_U,
955 VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S, VCADDQ_ROT270_M_U,
956 VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, VHCADDQ_ROT90_M_S,
958 (mve_rot): Add VCADDQ_ROT90_M_F, VCADDQ_ROT90_M_S,
959 VCADDQ_ROT90_M_U, VCADDQ_ROT270_M_F, VCADDQ_ROT270_M_S,
960 VCADDQ_ROT270_M_U, VHCADDQ_ROT90_S, VHCADDQ_ROT270_S,
961 VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S.
962 (supf): Add VHCADDQ_ROT90_M_S, VHCADDQ_ROT270_M_S,
963 VHCADDQ_ROT90_S, VHCADDQ_ROT270_S, UNSPEC_VCADD90,
965 (VCADDQ_ROT270_M): Delete.
966 (VCADDQ_M_F VxCADDQ VxCADDQ_M): New.
967 (VCADDQ_ROT90_M): Delete.
968 * config/arm/mve.md (mve_vcaddq<mve_rot><mode>)
969 (mve_vhcaddq_rot270_s<mode>, mve_vhcaddq_rot90_s<mode>): Merge
971 (@mve_<mve_insn>q<mve_rot>_<supf><mode>): ... this.
972 (mve_vcaddq<mve_rot><mode>): Rename into ...
973 (@mve_<mve_insn>q<mve_rot>_f<mode>): ... this
974 (mve_vcaddq_rot270_m_<supf><mode>)
975 (mve_vcaddq_rot90_m_<supf><mode>, mve_vhcaddq_rot270_m_s<mode>)
976 (mve_vhcaddq_rot90_m_s<mode>): Merge into ...
977 (@mve_<mve_insn>q<mve_rot>_m_<supf><mode>): ... this.
978 (mve_vcaddq_rot270_m_f<mode>, mve_vcaddq_rot90_m_f<mode>): Merge
980 (@mve_<mve_insn>q<mve_rot>_m_f<mode>): ... this.
982 2023-07-14 Roger Sayle <roger@nextmovesoftware.com>
985 * config/i386/i386.md (*bt<mode>_setcqi): Prefer string form
986 preparation statement over braces for a single statement.
987 (*bt<mode>_setncqi): Likewise.
988 (*bt<mode>_setncqi_2): New define_insn_and_split.
990 2023-07-14 Roger Sayle <roger@nextmovesoftware.com>
992 * config/i386/i386-expand.cc (ix86_expand_move): Generalize special
993 case inserting of 64-bit values into a TImode register, to handle
994 both DImode and DFmode using either *insvti_lowpart_1
995 or *isnvti_highpart_1.
997 2023-07-14 Uros Bizjak <ubizjak@gmail.com>
1000 * fwprop.cc (contains_paradoxical_subreg_p): Move to ...
1001 * rtlanal.cc (contains_paradoxical_subreg_p): ... here.
1002 * rtlanal.h (contains_paradoxical_subreg_p): Add prototype.
1003 * cprop.cc (try_replace_reg): Do not set REG_EQUAL note
1004 when the original source contains a paradoxical subreg.
1006 2023-07-14 Jan Hubicka <jh@suse.cz>
1008 * passes.cc (execute_function_todo): Remove
1009 TODO_rebuild_frequencies
1010 * passes.def: Add rebuild_frequencies pass.
1011 * predict.cc (estimate_bb_frequencies): Drop
1013 (tree_estimate_probability): Update call of
1014 estimate_bb_frequencies.
1015 (rebuild_frequencies): Turn into a pass; verify CFG profile consistency
1016 first and do not rebuild if not necessary.
1017 (class pass_rebuild_frequencies): New.
1018 (make_pass_rebuild_frequencies): New.
1019 * profile-count.h: Add profile_count::very_large_p.
1020 * tree-inline.cc (optimize_inline_calls): Do not return
1021 TODO_rebuild_frequencies
1022 * tree-pass.h (TODO_rebuild_frequencies): Remove.
1023 (make_pass_rebuild_frequencies): Declare.
1025 2023-07-14 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1027 * config/riscv/autovec.md (cond_len_fma<mode>): New pattern.
1028 * config/riscv/riscv-protos.h (enum insn_type): New enum.
1029 (expand_cond_len_ternop): New function.
1030 * config/riscv/riscv-v.cc (emit_nonvlmax_fp_ternary_tu_insn): Ditto.
1031 (expand_cond_len_ternop): Ditto.
1033 2023-07-14 Jose E. Marchesi <jose.marchesi@oracle.com>
1036 * config/bpf/bpf.md: Enable instruction scheduling.
1038 2023-07-14 Tamar Christina <tamar.christina@arm.com>
1040 PR tree-optimization/109154
1041 * tree-if-conv.cc (INCLUDE_ALGORITHM): Include.
1042 (struct bb_predicate): Add no_predicate_stmts.
1043 (set_bb_predicate): Increase predicate count.
1044 (set_bb_predicate_gimplified_stmts): Conditionally initialize
1046 (get_bb_num_predicate_stmts): New.
1047 (init_bb_predicate): Initialzie no_predicate_stmts.
1048 (release_bb_predicate): Cleanup no_predicate_stmts.
1049 (insert_gimplified_predicates): Preserve no_predicate_stmts.
1051 2023-07-14 Tamar Christina <tamar.christina@arm.com>
1053 PR tree-optimization/109154
1054 * tree-if-conv.cc (gen_simplified_condition,
1055 gen_phi_nest_statement): New.
1056 (gen_phi_arg_condition, predicate_scalar_phi): Use it.
1058 2023-07-14 Richard Biener <rguenther@suse.de>
1060 * gimple.h (gimple_phi_arg): New const overload.
1061 (gimple_phi_arg_def): Make gimple arg const.
1062 (gimple_phi_arg_def_from_edge): New inline function.
1063 * tree-phinodes.h (gimple_phi_arg_imm_use_ptr_from_edge):
1065 * tree-ssa-operands.h (PHI_ARG_DEF_FROM_EDGE): Direct to
1066 new inline function.
1067 (PHI_ARG_DEF_PTR_FROM_EDGE): Likewise.
1069 2023-07-14 Monk Chiang <monk.chiang@sifive.com>
1071 * common/config/riscv/riscv-common.cc:
1072 (riscv_implied_info): Add zihintntl item.
1073 (riscv_ext_version_table): Ditto.
1074 (riscv_ext_flag_table): Ditto.
1075 * config/riscv/riscv-opts.h (MASK_ZIHINTNTL): New macro.
1076 (TARGET_ZIHINTNTL): Ditto.
1078 2023-07-14 Die Li <lidie@eswincomputing.com>
1080 * config/riscv/riscv.md: Remove redundant portion in and<mode>3.
1082 2023-07-14 Oleg Endo <olegendo@gcc.gnu.org>
1085 * config/sh/sh.md (peephole2): Handle case where eliminated reg is also
1086 used by the address of the following memory operand.
1088 2023-07-13 Mikael Pettersson <mikpelinux@gmail.com>
1091 * config/pdp11/pdp11.cc (pdp11_expand_epilogue): Also
1092 deallocate alloca-only frame.
1094 2023-07-13 Iain Sandoe <iain@sandoe.co.uk>
1097 * config/darwin.h (DARWIN_PLATFORM_ID): New.
1098 (LINK_COMMAND_A): Use DARWIN_PLATFORM_ID to pass OS, OS version
1099 and SDK data to the static linker.
1101 2023-07-13 Carl Love <cel@us.ibm.com>
1103 * config/rs6000/rs6000-builtins.def (__builtin_set_fpscr_rn): Update
1104 built-in definition return type.
1105 * config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Add check,
1106 define __SET_FPSCR_RN_RETURNS_FPSCR__ macro.
1107 * config/rs6000/rs6000.md (rs6000_set_fpscr_rn): Add return
1108 argument to return FPSCR fields.
1109 * doc/extend.texi (__builtin_set_fpscr_rn): Update description for
1110 the return value. Add description for
1111 __SET_FPSCR_RN_RETURNS_FPSCR__ macro.
1113 2023-07-13 Uros Bizjak <ubizjak@gmail.com>
1116 * config/alpha/alpha.cc (alpha_emit_set_long_const):
1117 Always use DImode when constructing long const.
1119 2023-07-13 Uros Bizjak <ubizjak@gmail.com>
1121 * haifa-sched.cc: Change TRUE/FALSE to true/false.
1123 * lra-assigns.cc: Ditto.
1124 * lra-constraints.cc: Ditto.
1125 * sel-sched.cc: Ditto.
1127 2023-07-13 Andrew Pinski <apinski@marvell.com>
1129 PR tree-optimization/110293
1130 PR tree-optimization/110539
1131 * match.pd: Expand the `x != (typeof x)(x == 0)`
1132 pattern to handle where the inner and outer comparsions
1133 are either `!=` or `==` and handle other constants
1136 2023-07-13 Vladimir N. Makarov <vmakarov@redhat.com>
1138 PR middle-end/109520
1139 * lra-int.h (lra_insn_recog_data): Add member asm_reloads_num.
1140 (lra_asm_insn_error): New prototype.
1141 * lra.cc: Include rtl_error.h.
1142 (lra_set_insn_recog_data): Initialize asm_reloads_num.
1143 (lra_asm_insn_error): New func whose code is taken from ...
1144 * lra-assigns.cc (lra_split_hard_reg_for): ... here. Use lra_asm_insn_error.
1145 * lra-constraints.cc (curr_insn_transform): Check reloads nummber for asm.
1147 2023-07-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1149 * genmatch.cc (commutative_op): Add COND_LEN_*
1150 * internal-fn.cc (first_commutative_argument): Ditto.
1152 (get_unconditional_internal_fn): Ditto.
1153 (can_interpret_as_conditional_op_p): Ditto.
1154 (internal_fn_len_index): Ditto.
1155 * internal-fn.h (can_interpret_as_conditional_op_p): Ditt.
1156 * tree-ssa-math-opts.cc (convert_mult_to_fma_1): Ditto.
1157 (convert_mult_to_fma): Ditto.
1158 (math_opts_dom_walker::after_dom_children): Ditto.
1160 2023-07-13 Pan Li <pan2.li@intel.com>
1162 * config/riscv/riscv.cc (vxrm_rtx): New static var.
1164 (global_state_unknown_p): Removed.
1165 (riscv_entity_mode_after): Removed.
1166 (asm_insn_p): New function.
1167 (vxrm_unknown_p): New function for fixed-point.
1168 (riscv_vxrm_mode_after): Ditto.
1169 (frm_unknown_dynamic_p): New function for floating-point.
1170 (riscv_frm_mode_after): Ditto.
1171 (riscv_mode_after): Leverage new functions.
1173 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
1175 * tree-vect-stmts.cc (vect_model_load_cost): Remove.
1176 (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS without
1177 calling vect_model_load_cost.
1179 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
1181 * tree-vect-stmts.cc (vect_model_load_cost): Assert this function only
1182 handle memory_access_type VMAT_CONTIGUOUS, remove some
1183 VMAT_CONTIGUOUS_PERMUTE related handlings.
1184 (vectorizable_load): Adjust the cost handling on VMAT_CONTIGUOUS_PERMUTE
1185 without calling vect_model_load_cost.
1187 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
1189 * tree-vect-stmts.cc (vect_model_load_cost): Assert it won't get
1190 VMAT_CONTIGUOUS_REVERSE any more.
1191 (vectorizable_load): Adjust the costing handling on
1192 VMAT_CONTIGUOUS_REVERSE without calling vect_model_load_cost.
1194 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
1196 * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on
1197 VMAT_LOAD_STORE_LANES without calling vect_model_load_cost.
1198 (vectorizable_load): Remove VMAT_LOAD_STORE_LANES related handling and
1199 assert it will never get VMAT_LOAD_STORE_LANES.
1201 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
1203 * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling on
1204 VMAT_GATHER_SCATTER without calling vect_model_load_cost.
1205 (vect_model_load_cost): Adjut the assertion on VMAT_GATHER_SCATTER,
1206 remove VMAT_GATHER_SCATTER related handlings and the related parameter
1209 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
1211 * tree-vect-stmts.cc (vectorizable_load): Adjust the cost handling
1212 on VMAT_ELEMENTWISE and VMAT_STRIDED_SLP without calling
1213 vect_model_load_cost.
1214 (vect_model_load_cost): Assert it won't get VMAT_ELEMENTWISE and
1215 VMAT_STRIDED_SLP any more, and remove their related handlings.
1217 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
1219 * tree-vect-stmts.cc (hoist_defs_of_uses): Add one argument HOIST_P.
1220 (vectorizable_load): Adjust the handling on VMAT_INVARIANT to respect
1221 hoisting decision and without calling vect_model_load_cost.
1222 (vect_model_load_cost): Assert it won't get VMAT_INVARIANT any more
1223 and remove VMAT_INVARIANT related handlings.
1225 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
1227 * tree-vect-stmts.cc (vect_build_gather_load_calls): Add the handlings
1228 on costing with one extra argument cost_vec.
1229 (vectorizable_load): Adjust the call to vect_build_gather_load_calls.
1230 (vect_model_load_cost): Assert it won't get VMAT_GATHER_SCATTER with
1231 gs_info.decl set any more.
1233 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
1235 * tree-vect-stmts.cc (vectorizable_load): Move and duplicate the call
1236 to vect_model_load_cost down to some different transform paths
1237 according to the handlings of different vect_memory_access_types.
1239 2023-07-13 Kewen Lin <linkw@linux.ibm.com>
1241 * tree.h (wi::from_mpz): Hide from GENERATOR_FILE.
1243 2023-07-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1245 * config/riscv/autovec.md
1246 (len_mask_gather_load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New pattern.
1247 (len_mask_gather_load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
1248 (len_mask_gather_load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
1249 (len_mask_gather_load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
1250 (len_mask_gather_load<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
1251 (len_mask_gather_load<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
1252 (len_mask_gather_load<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
1253 (len_mask_gather_load<mode><mode>): Ditto.
1254 (len_mask_scatter_store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
1255 (len_mask_scatter_store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
1256 (len_mask_scatter_store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
1257 (len_mask_scatter_store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
1258 (len_mask_scatter_store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
1259 (len_mask_scatter_store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
1260 (len_mask_scatter_store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
1261 (len_mask_scatter_store<mode><mode>): Ditto.
1262 * config/riscv/predicates.md (const_1_operand): New predicate.
1263 (vector_gs_scale_operand_16): Ditto.
1264 (vector_gs_scale_operand_32): Ditto.
1265 (vector_gs_scale_operand_64): Ditto.
1266 (vector_gs_extension_operand): Ditto.
1267 (vector_gs_scale_operand_16_rv32): Ditto.
1268 (vector_gs_scale_operand_32_rv32): Ditto.
1269 * config/riscv/riscv-protos.h (enum insn_type): Add gather/scatter.
1270 (expand_gather_scatter): New function.
1271 * config/riscv/riscv-v.cc (gen_const_vector_dup): Add gather/scatter.
1272 (emit_vlmax_masked_store_insn): New function.
1273 (emit_nonvlmax_masked_store_insn): Ditto.
1274 (modulo_sel_indices): Ditto.
1275 (expand_vec_perm): Fix SLP for gather/scatter.
1276 (prepare_gather_scatter): New function.
1277 (expand_gather_scatter): Ditto.
1278 * config/riscv/riscv.cc (riscv_legitimize_move): Fix bug of
1279 (subreg:SI (DI CONST_POLY_INT)).
1280 * config/riscv/vector-iterators.md: Add gather/scatter.
1281 * config/riscv/vector.md (vec_duplicate<mode>): Use "@" instead.
1282 (@vec_duplicate<mode>): Ditto.
1283 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>):
1285 (@pred_indexed_<order>store<VNX16_QHSD:mode><VNX16_QHSDI:mode>): Ditto.
1287 2023-07-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
1289 * config/riscv/autovec.md (cond_len_<optab><mode>): New pattern.
1290 * config/riscv/riscv-protos.h (enum insn_type): New enum.
1291 (expand_cond_len_binop): New function.
1292 * config/riscv/riscv-v.cc (emit_nonvlmax_tu_insn): Ditto.
1293 (emit_nonvlmax_fp_tu_insn): Ditto.
1294 (need_fp_rounding_p): Ditto.
1295 (expand_cond_len_binop): Ditto.
1296 * config/riscv/riscv.cc (riscv_preferred_else_value): Ditto.
1297 (TARGET_PREFERRED_ELSE_VALUE): New target hook.
1299 2023-07-12 Jan Hubicka <jh@suse.cz>
1301 * tree-cfg.cc (gimple_duplicate_sese_region): Rename to ...
1302 (gimple_duplicate_seme_region): ... this; break out profile updating
1304 * tree-ssa-loop-ch.cc (update_profile_after_ch): ... here.
1305 (ch_base::copy_headers): Update.
1306 * tree-cfg.h (gimple_duplicate_sese_region): Rename to ...
1307 (gimple_duplicate_seme_region): ... this.
1309 2023-07-12 Aldy Hernandez <aldyh@redhat.com>
1311 PR tree-optimization/107043
1312 * range-op.cc (operator_bitwise_and::op1_range): Update bitmask.
1314 2023-07-12 Aldy Hernandez <aldyh@redhat.com>
1316 PR tree-optimization/107053
1317 * gimple-range-op.cc (cfn_popcount): Use known set bits.
1319 2023-07-12 Uros Bizjak <ubizjak@gmail.com>
1321 * ira.cc (equiv_init_varies_p): Change return type from int to bool
1322 and adjust function body accordingly.
1323 (equiv_init_movable_p): Ditto.
1324 (memref_used_between_p): Ditto.
1325 * lra-constraints.cc (valid_address_p): Ditto.
1327 2023-07-12 Aldy Hernandez <aldyh@redhat.com>
1329 * range-op.cc (irange_to_masked_value): Remove.
1330 (update_known_bitmask): Update irange value/mask pair instead of
1331 only updating nonzero bits.
1333 2023-07-12 Jan Hubicka <jh@suse.cz>
1335 * tree-cfg.cc (gimple_duplicate_sese_region): Add ORIG_ELIMINATED_EDGES
1336 parameter and rewrite profile updating code to handle edges elimination.
1337 * tree-cfg.h (gimple_duplicate_sese_region): Update prototpe.
1338 * tree-ssa-loop-ch.cc (loop_invariant_op_p): New function.
1339 (loop_iv_derived_p): New function.
1340 (should_duplicate_loop_header_p): Track invariant exit edges; fix handling
1341 of PHIs and propagation of IV derived variables.
1342 (ch_base::copy_headers): Pass around the invariant edges hash set.
1344 2023-07-12 Uros Bizjak <ubizjak@gmail.com>
1346 * ifcvt.cc (cond_exec_changed_p): Change variable to bool.
1347 (last_active_insn): Change "skip_use_p" function argument to bool.
1348 (noce_operand_ok): Change return type from int to bool.
1349 (find_cond_trap): Ditto.
1350 (block_jumps_and_fallthru_p): Change "fallthru_p" and
1351 "jump_p" variables to bool.
1352 (noce_find_if_block): Change return type from int to bool.
1353 (cond_exec_find_if_block): Ditto.
1354 (find_if_case_1): Ditto.
1355 (find_if_case_2): Ditto.
1356 (dead_or_predicable): Ditto. Change "reversep" function arg to bool.
1357 (block_jumps_and_fallthru): Rename from block_jumps_and_fallthru_p.
1358 (cond_exec_process_insns): Change return type from int to bool.
1359 Change "mod_ok" function arg to bool.
1360 (cond_exec_process_if_block): Change return type from int to bool.
1361 Change "do_multiple_p" function arg to bool. Change "then_mod_ok"
1363 (noce_emit_store_flag): Change return type from int to bool.
1364 Change "reversep" function arg to bool. Change "cond_complex"
1366 (noce_try_move): Change return type from int to bool.
1367 (noce_try_ifelse_collapse): Ditto.
1368 (noce_try_store_flag): Ditto. Change "reversep" variable to bool.
1369 (noce_try_addcc): Change return type from int to bool. Change
1370 "subtract" variable to bool.
1371 (noce_try_store_flag_constants): Change return type from int to bool.
1372 (noce_try_store_flag_mask): Ditto. Change "reversep" variable to bool.
1373 (noce_try_cmove): Change return type from int to bool.
1374 (noce_try_cmove_arith): Ditto. Change "is_mem" variable to bool.
1375 (noce_try_minmax): Change return type from int to bool. Change
1376 "unsignedp" variable to bool.
1377 (noce_try_abs): Change return type from int to bool. Change
1378 "negate" variable to bool.
1379 (noce_try_sign_mask): Change return type from int to bool.
1380 (noce_try_move): Ditto.
1381 (noce_try_store_flag_constants): Ditto.
1382 (noce_try_cmove): Ditto.
1383 (noce_try_cmove_arith): Ditto.
1384 (noce_try_minmax): Ditto. Change "unsignedp" variable to bool.
1385 (noce_try_bitop): Change return type from int to bool.
1386 (noce_operand_ok): Ditto.
1387 (noce_convert_multiple_sets): Ditto.
1388 (noce_convert_multiple_sets_1): Ditto.
1389 (noce_process_if_block): Ditto.
1390 (check_cond_move_block): Ditto.
1391 (cond_move_process_if_block): Ditto. Change "success_p"
1393 (rest_of_handle_if_conversion): Change return type to void.
1395 2023-07-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1397 * internal-fn.cc (FOR_EACH_CODE_MAPPING): Adapt for COND_LEN_* support.
1399 (get_conditional_len_internal_fn): New function.
1400 * internal-fn.h (get_conditional_len_internal_fn): Ditto.
1401 * tree-vect-stmts.cc (vectorizable_operation): Adapt for COND_LEN_*
1404 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
1407 * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): Typo.
1409 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
1412 * config/i386/i386.md (*add<dwi>3_doubleword_concat_zext): New
1413 define_insn_and_split derived from *add<dwi>3_doubleword_concat
1414 and *add<dwi>3_doubleword_zext.
1416 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
1419 * config/i386/i386.md (peephole2): Check !reg_mentioned_p when
1420 optimizing rega = 0; rega op= regb for op in [XOR,IOR,PLUS].
1421 (peephole2): Simplify rega = 0; rega op= rega cases.
1423 2023-07-12 Roger Sayle <roger@nextmovesoftware.com>
1425 * config/i386/i386-expand.cc (ix86_expand_int_compare): If
1426 testing a TImode SUBREG of a 128-bit vector register against
1427 zero, use a PTEST instruction instead of first moving it to
1428 a pair of scalar registers.
1430 2023-07-12 Robin Dapp <rdapp@ventanamicro.com>
1432 * genopinit.cc (main): Adjust maximal number of optabs and
1434 * gensupport.cc (find_optab): Shift optab by 20 and mode by
1436 * optabs-query.h (optab_handler): Ditto.
1437 (convert_optab_handler): Ditto.
1439 2023-07-12 Richard Biener <rguenther@suse.de>
1441 PR tree-optimization/110630
1442 * tree-vect-slp.cc (vect_add_slp_permutation): New
1443 offset parameter, honor that for the extract code generation.
1444 (vectorizable_slp_permutation_1): Handle offsetted identities.
1446 2023-07-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1448 * config/riscv/autovec.md (smul<mode>3_highpart): New pattern.
1449 (umul<mode>3_highpart): Ditto.
1451 2023-07-12 Jan Beulich <jbeulich@suse.com>
1453 * config/i386/i386.md (extendbfsf2_1): Add new AVX512F
1454 alternative. Adjust original last alternative's "prefix"
1455 attribute to maybe_evex.
1457 2023-07-12 Jan Beulich <jbeulich@suse.com>
1459 * config/i386/sse.md (vec_dupv4sf): Make first alternative use
1460 vbroadcastss for AVX2. New AVX512F alternative.
1461 (*vec_dupv4si): New AVX2 and AVX512F alternatives using
1462 vpbroadcastd. Replace sselog1 by sseshuf1 in "type" attribute.
1464 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
1466 * config/riscv/peephole.md: Remove XThead* peephole passes.
1467 * config/riscv/thead.md: Include thead-peephole.md.
1468 * config/riscv/thead-peephole.md: New file.
1470 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
1472 * config/riscv/riscv-protos.h (riscv_regno_ok_for_index_p):
1474 (riscv_index_reg_class): Likewise.
1475 * config/riscv/riscv.cc (riscv_regno_ok_for_index_p): New function.
1476 (riscv_index_reg_class): New function.
1477 * config/riscv/riscv.h (INDEX_REG_CLASS): Call new function
1478 riscv_index_reg_class().
1479 (REGNO_OK_FOR_INDEX_P): Call new function
1480 riscv_regno_ok_for_index_p().
1482 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
1484 * config/riscv/riscv-protos.h (enum riscv_address_type):
1485 New location of type definition.
1486 (struct riscv_address_info): Likewise.
1487 * config/riscv/riscv.cc (enum riscv_address_type):
1488 Old location of type definition.
1489 (struct riscv_address_info): Likewise.
1491 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
1493 * config/riscv/riscv.h (Xmode): New macro.
1495 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
1497 * config/riscv/riscv.cc (riscv_print_operand_address): Use
1498 output_addr_const rather than riscv_print_operand.
1500 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
1502 * config/riscv/thead.md: Adjust constraints of th_addsl.
1504 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
1506 * config/riscv/thead.cc (th_mempair_operands_p):
1507 Fix documentation of th_mempair_order_operands().
1509 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
1511 * config/riscv/thead.cc (th_mempair_save_regs):
1512 Emit REG_FRAME_RELATED_EXPR notes in prologue.
1514 2023-07-12 Christoph Müllner <christoph.muellner@vrull.eu>
1516 * config/riscv/riscv.md: No base-ISA extension splitter for XThead*.
1517 * config/riscv/thead.md (*extend<SHORT:mode><SUPERQI:mode>2_th_ext):
1518 New XThead extension INSN.
1519 (*zero_extendsidi2_th_extu): New XThead extension INSN.
1520 (*zero_extendhi<GPR:mode>2_th_extu): New XThead extension INSN.
1522 2023-07-12 liuhongt <hongtao.liu@intel.com>
1526 * config/i386/predicates.md
1527 (int_float_vector_all_ones_operand): New predicate.
1528 * config/i386/sse.md (*vmov<mode>_constm1_pternlog_false_dep): New
1530 (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
1532 (*<avx512>_cvtmask2<ssemodesuffix><mode>_pternlog_false_dep):
1534 (*<avx512>_cvtmask2<ssemodesuffix><mode>): Adjust to
1535 define_insn_and_split to avoid false dependence.
1536 (*<avx512>_cvtmask2<ssemodesuffix><mode>): Ditto.
1537 (<mask_codefor>one_cmpl<mode>2<mask_name>): Adjust constraint
1538 of operands 1 to '0' to avoid false dependence.
1539 (*andnot<mode>3): Ditto.
1540 (iornot<mode>3): Ditto.
1541 (*<nlogic><mode>3): Ditto.
1543 2023-07-12 Mo, Zewei <zewei.mo@intel.com>
1545 * common/config/i386/cpuinfo.h
1546 (get_intel_cpu): Handle Granite Rapids D.
1547 * common/config/i386/i386-common.cc:
1548 (processor_alias_table): Add graniterapids-d.
1549 * common/config/i386/i386-cpuinfo.h
1550 (enum processor_subtypes): Add INTEL_COREI7_GRANITERAPIDS_D.
1551 * config.gcc: Add -march=graniterapids-d.
1552 * config/i386/driver-i386.cc (host_detect_local_cpu):
1553 Handle graniterapids-d.
1554 * config/i386/i386.h: (PTA_GRANITERAPIDS_D): New.
1555 * doc/extend.texi: Add graniterapids-d.
1556 * doc/invoke.texi: Ditto.
1558 2023-07-12 Haochen Jiang <haochen.jiang@intel.com>
1560 * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
1561 Add OPTION_MASK_ISA_AVX512VL.
1562 * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
1565 2023-07-11 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1567 * config/riscv/riscv-protos.h (enum insn_type): Add vcompress optimization.
1568 * config/riscv/riscv-v.cc (emit_vlmax_compress_insn): Ditto.
1569 (shuffle_compress_patterns): Ditto.
1570 (expand_vec_perm_const_1): Ditto.
1572 2023-07-11 Uros Bizjak <ubizjak@gmail.com>
1574 * cfghooks.cc (verify_flow_info): Change "err" variable to bool.
1575 * cfghooks.h (struct cfg_hooks): Change return type of
1576 verify_flow_info from integer to bool.
1577 * cfgrtl.cc (can_delete_note_p): Change return type from int to bool.
1578 (can_delete_label_p): Ditto.
1579 (rtl_verify_flow_info): Change return type from int to bool
1580 and adjust function body accordingly. Change "err" variable to bool.
1581 (rtl_verify_flow_info_1): Ditto.
1582 (free_bb_for_insn): Change return type to void.
1583 (rtl_merge_blocks): Change "b_empty" variable to bool.
1584 (try_redirect_by_replacing_jump): Change "fallthru" variable to bool.
1585 (verify_hot_cold_block_grouping): Change return type from int to bool.
1586 Change "err" variable to bool.
1587 (rtl_verify_edges): Ditto.
1588 (rtl_verify_bb_insns): Ditto.
1589 (rtl_verify_bb_pointers): Ditto.
1590 (rtl_verify_bb_insn_chain): Ditto.
1591 (rtl_verify_fallthru): Ditto.
1592 (rtl_verify_bb_layout): Ditto.
1593 (purge_all_dead_edges): Change "purged" variable to bool.
1594 * cfgrtl.h (free_bb_for_insn): Change return type from int to void.
1595 * postreload-gcse.cc (expr_hasher::equal): Change "equiv_p" to bool.
1596 (load_killed_in_block_p): Change return type from int to bool
1597 and adjust function body accordingly.
1598 (oprs_unchanged_p): Return true/false.
1599 (rest_of_handle_gcse2): Change return type to void.
1600 * tree-cfg.cc (gimple_verify_flow_info): Change return type from
1601 int to bool. Change "err" variable to bool.
1603 2023-07-11 Gaius Mulley <gaiusmod2@gmail.com>
1605 * doc/gm2.texi (-Wuninit-variable-checking=) New item.
1607 2023-07-11 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1609 * doc/md.texi: Add COND_LEN_* operations for loop control with length.
1610 * internal-fn.cc (cond_len_unary_direct): Ditto.
1611 (cond_len_binary_direct): Ditto.
1612 (cond_len_ternary_direct): Ditto.
1613 (expand_cond_len_unary_optab_fn): Ditto.
1614 (expand_cond_len_binary_optab_fn): Ditto.
1615 (expand_cond_len_ternary_optab_fn): Ditto.
1616 (direct_cond_len_unary_optab_supported_p): Ditto.
1617 (direct_cond_len_binary_optab_supported_p): Ditto.
1618 (direct_cond_len_ternary_optab_supported_p): Ditto.
1619 * internal-fn.def (COND_LEN_ADD): Ditto.
1620 (COND_LEN_SUB): Ditto.
1621 (COND_LEN_MUL): Ditto.
1622 (COND_LEN_DIV): Ditto.
1623 (COND_LEN_MOD): Ditto.
1624 (COND_LEN_RDIV): Ditto.
1625 (COND_LEN_MIN): Ditto.
1626 (COND_LEN_MAX): Ditto.
1627 (COND_LEN_FMIN): Ditto.
1628 (COND_LEN_FMAX): Ditto.
1629 (COND_LEN_AND): Ditto.
1630 (COND_LEN_IOR): Ditto.
1631 (COND_LEN_XOR): Ditto.
1632 (COND_LEN_SHL): Ditto.
1633 (COND_LEN_SHR): Ditto.
1634 (COND_LEN_FMA): Ditto.
1635 (COND_LEN_FMS): Ditto.
1636 (COND_LEN_FNMA): Ditto.
1637 (COND_LEN_FNMS): Ditto.
1638 (COND_LEN_NEG): Ditto.
1639 * optabs.def (OPTAB_D): Ditto.
1641 2023-07-11 Richard Biener <rguenther@suse.de>
1643 PR tree-optimization/110614
1644 * tree-vect-data-refs.cc (vect_supportable_dr_alignment):
1645 SLP splats are not suitable for re-align ops.
1647 2023-07-10 Peter Bergner <bergner@linux.ibm.com>
1649 * config/rs6000/predicates.md (quad_memory_operand): Remove redundant
1651 (vsx_quad_dform_memory_operand): Likewise.
1653 2023-07-10 Uros Bizjak <ubizjak@gmail.com>
1655 * reorg.cc (stop_search_p): Change return type from int to bool
1656 and adjust function body accordingly.
1657 (resource_conflicts_p): Ditto.
1658 (insn_references_resource_p): Change return type from int to bool.
1659 (insn_sets_resource_p): Ditto.
1660 (redirect_with_delay_slots_safe_p): Ditto.
1661 (condition_dominates_p): Change return type from int to bool
1662 and adjust function body accordingly.
1663 (redirect_with_delay_list_safe_p): Ditto.
1664 (check_annul_list_true_false): Ditto. Change "annul_true_p"
1665 function argument to bool.
1666 (steal_delay_list_from_target): Change "pannul_p" function
1667 argument to bool pointer. Change "must_annul" and "used_annul"
1668 variables from int to bool.
1669 (steal_delay_list_from_fallthrough): Ditto.
1670 (own_thread_p): Change return type from int to bool and adjust
1671 function body accordingly. Change "allow_fallthrough" function
1673 (reorg_redirect_jump): Change return type from int to bool.
1674 (fill_simple_delay_slots): Change "non_jumps_p" function
1675 argument from int to bool. Change "maybe_never" varible to bool.
1676 (fill_slots_from_thread): Change "likely", "thread_if_true" and
1677 "own_thread" function arguments to bool. Change "lose" and
1678 "must_annul" variables to bool.
1679 (delete_from_delay_slot): Change "had_barrier" variable to bool.
1680 (try_merge_delay_insns): Change "annul_p" variable to bool.
1681 (fill_eager_delay_slots): Change "own_target" and "own_fallthrouhg"
1683 (rest_of_handle_delay_slots): Change return type from int to void
1684 and adjust function body accordingly.
1686 2023-07-10 Kito Cheng <kito.cheng@sifive.com>
1688 * doc/extend.texi (RISC-V Operand Modifiers): New.
1690 2023-07-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
1692 * config/riscv/riscv-vsetvl.cc (add_label_notes): Remove it.
1693 (insert_insn_end_basic_block): Ditto.
1694 (pass_vsetvl::commit_vsetvls): Adapt for new helper function.
1695 * gcse.cc (insert_insn_end_basic_block): Export as global function.
1696 * gcse.h (insert_insn_end_basic_block): Ditto.
1698 2023-07-10 Christophe Lyon <christophe.lyon@linaro.org>
1701 * config/arm/arm-builtins.cc (arm_init_mve_builtins): Handle LTO.
1702 (arm_builtin_decl): Hahndle MVE builtins.
1703 * config/arm/arm-mve-builtins.cc (builtin_decl): New function.
1704 (add_unique_function): Fix handling of
1705 __ARM_MVE_PRESERVE_USER_NAMESPACE.
1706 (add_overloaded_function): Likewise.
1707 * config/arm/arm-protos.h (builtin_decl): New declaration.
1709 2023-07-10 Christophe Lyon <christophe.lyon@linaro.org>
1711 * doc/sourcebuild.texi (arm_v8_1m_main_cde_mve_fp): Document.
1713 2023-07-10 Xi Ruoyao <xry111@xry111.site>
1715 PR tree-optimization/110557
1716 * tree-vect-patterns.cc (vect_recog_bitfield_ref_pattern):
1717 Ensure the output sign-extended if necessary.
1719 2023-07-10 Roger Sayle <roger@nextmovesoftware.com>
1721 * config/i386/i386.md (peephole2): Transform xchg insn with a
1722 REG_UNUSED note to a (simple) move.
1723 (*insvti_lowpart_1): New define_insn_and_split.
1724 (*insvdi_lowpart_1): Likewise.
1726 2023-07-10 Roger Sayle <roger@nextmovesoftware.com>
1728 * config/i386/i386-features.cc (compute_convert_gain): Tweak
1729 gains/costs for ROTATE/ROTATERT by integer constant on AVX512VL.
1730 (general_scalar_chain::convert_rotate): On TARGET_AVX512F generate
1731 avx512vl_rolv2di or avx412vl_rolv4si when appropriate.
1733 2023-07-10 liuhongt <hongtao.liu@intel.com>
1736 * config/i386/i386.md (*ieee_max<mode>3_1): New pre_reload
1737 splitter to detect fp max pattern.
1738 (*ieee_min<mode>3_1): Ditto, but for fp min pattern.
1740 2023-07-09 Jan Hubicka <jh@suse.cz>
1742 * cfg.cc (check_bb_profile): Dump counts with relative frequency.
1743 (dump_edge_info): Likewise.
1744 (dump_bb_info): Likewise.
1745 * profile-count.cc (profile_count::dump): Add comma between quality and
1748 2023-07-08 Jan Hubicka <jh@suse.cz>
1750 PR tree-optimization/110600
1751 * cfgloopmanip.cc (scale_loop_profile): Add mising profile_dump check.
1753 2023-07-08 Jan Hubicka <jh@suse.cz>
1755 PR middle-end/110590
1756 * cfgloopmanip.cc (scale_loop_profile): Avoid scaling exits within
1757 inner loops and be more careful about inconsistent profiles.
1758 (duplicate_loop_body_to_header_edge): Fix profile update when eliminated
1759 exit is followed by other exit.
1761 2023-07-08 Uros Bizjak <ubizjak@gmail.com>
1763 * cprop.cc (reg_available_p): Change return type from int to bool.
1764 (reg_not_set_p): Ditto.
1765 (try_replace_reg): Ditto. Change "success" variable to bool.
1766 (cprop_jump): Change return type from int to void
1767 and adjust function body accordingly.
1768 (constprop_register): Ditto.
1769 (cprop_insn): Ditto. Change "changed" variable to bool.
1770 (local_cprop_pass): Change return type from int to void
1771 and adjust function body accordingly.
1772 (bypass_block): Ditto. Change "change", "may_be_loop_header"
1773 and "removed_p" variables to bool.
1774 (bypass_conditional_jumps): Change return type from int to void
1775 and adjust function body accordingly. Change "changed"
1777 (one_cprop_pass): Ditto.
1779 2023-07-08 Uros Bizjak <ubizjak@gmail.com>
1781 * gcse.cc (expr_equiv_p): Change return type from int to bool.
1782 (oprs_unchanged_p): Change return type from int to void
1783 and adjust function body accordingly.
1784 (oprs_anticipatable_p): Ditto.
1785 (oprs_available_p): Ditto.
1786 (insert_expr_in_table): Ditto. Change "antic_p" and "avail_p"
1787 arguments to bool. Change "found" variable to bool.
1788 (load_killed_in_block_p): Change return type from int to void and
1789 adjust function body accordingly. Change "avail_p" argument to bool.
1790 (pre_expr_reaches_here_p): Change return type from int to void
1791 and adjust function body accordingly.
1792 (pre_delete): Ditto. Change "changed" variable to bool.
1793 (pre_gcse): Change return type from int to void
1794 and adjust function body accordingly. Change "did_insert" and
1795 "changed" variables to bool.
1796 (one_pre_gcse_pass): Change return type from int to void
1797 and adjust function body accordingly. Change "changed" variable
1799 (should_hoist_expr_to_dom): Change return type from int to void
1800 and adjust function body accordingly. Change
1801 "visited_allocated_locally" variable to bool.
1802 (hoist_code): Change return type from int to void and adjust
1803 function body accordingly. Change "changed" variable to bool.
1804 (one_code_hoisting_pass): Ditto.
1805 (pre_edge_insert): Change return type from int to void and adjust
1806 function body accordingly. Change "did_insert" variable to bool.
1807 (pre_expr_reaches_here_p_work): Change return type from int to void
1808 and adjust function body accordingly.
1809 (simple_mem): Ditto.
1810 (want_to_gcse_p): Change return type from int to void
1811 and adjust function body accordingly.
1812 (can_assign_to_reg_without_clobbers_p): Update function body
1813 for bool return type.
1814 (hash_scan_set): Change "antic_p" and "avail_p" variables to bool.
1815 (pre_insert_copies): Change "added_copy" variable to bool.
1817 2023-07-08 Jonathan Wakely <jwakely@redhat.com>
1821 * doc/invoke.texi (Warning Options): Fix typos.
1823 2023-07-07 Jan Hubicka <jh@suse.cz>
1825 * profile-count.cc (profile_count::dump): Add FUN
1826 parameter; print relative frequency.
1827 (profile_count::debug): Update.
1828 * profile-count.h (profile_count::dump): Update
1831 2023-07-07 Roger Sayle <roger@nextmovesoftware.com>
1835 * config/i386/i386-expand.cc (ix86_expand_move): Convert SETs of
1836 TImode destinations from paradoxical SUBREGs (setting the lowpart)
1837 into explicit zero extensions. Use *insvti_highpart_1 instruction
1838 to set the highpart of a TImode destination.
1840 2023-07-07 Jan Hubicka <jh@suse.cz>
1842 * predict.cc (force_edge_cold): Use
1843 set_edge_probability_and_rescale_others; improve dumps.
1845 2023-07-07 Jan Hubicka <jh@suse.cz>
1847 * cfgloopmanip.cc (scale_loop_profile): Fix computation of count_in and scaling blocks
1849 * tree-vect-loop-manip.cc (vect_do_peeling): Scale loop profile of the epilogue if bound
1852 2023-07-07 Juergen Christ <jchrist@linux.ibm.com>
1854 * config/s390/s390.cc (vec_init): Fix default case
1856 2023-07-07 Vladimir N. Makarov <vmakarov@redhat.com>
1858 * lra-assigns.cc (assign_by_spills): Add reload insns involving
1859 reload pseudos with non-refined class to be processed on the next
1861 * lra-constraints.cc (enough_allocatable_hard_regs_p): New func.
1862 (in_class_p): Use it.
1863 (print_curr_insn_alt): New func.
1864 (process_alt_operands): Use it. Improve debug info.
1865 (curr_insn_transform): Use print_curr_insn_alt. Refine reload
1866 pseudo class if it is not refined yet.
1868 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
1870 * value-range.cc (irange::get_bitmask_from_range): Return all the
1871 known bits for a singleton.
1872 (irange::set_range_from_bitmask): Set a range of a singleton when
1875 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
1877 * value-range.cc (irange::intersect): Leave normalization to
1880 2023-07-07 Aldy Hernandez <aldyh@redhat.com>
1882 * data-streamer-in.cc (streamer_read_value_range): Adjust for
1884 * data-streamer-out.cc (streamer_write_vrange): Same.
1885 * range-op.cc (operator_cast::fold_range): Same.
1886 * value-range-pretty-print.cc
1887 (vrange_printer::print_irange_bitmasks): Same.
1888 * value-range-storage.cc (irange_storage::write_lengths_address):
1890 (irange_storage::set_irange): Same.
1891 (irange_storage::get_irange): Same.
1892 (irange_storage::size): Same.
1893 (irange_storage::dump): Same.
1894 * value-range-storage.h: Same.
1895 * value-range.cc (debug): New.
1896 (irange_bitmask::dump): New.
1897 (add_vrange): Adjust for value/mask.
1898 (irange::operator=): Same.
1899 (irange::set): Same.
1900 (irange::verify_range): Same.
1901 (irange::operator==): Same.
1902 (irange::contains_p): Same.
1903 (irange::irange_single_pair_union): Same.
1904 (irange::union_): Same.
1905 (irange::intersect): Same.
1906 (irange::invert): Same.
1907 (irange::get_nonzero_bits_from_range): Rename to...
1908 (irange::get_bitmask_from_range): ...this.
1909 (irange::set_range_from_nonzero_bits): Rename to...
1910 (irange::set_range_from_bitmask): ...this.
1911 (irange::set_nonzero_bits): Rename to...
1912 (irange::update_bitmask): ...this.
1913 (irange::get_nonzero_bits): Rename to...
1914 (irange::get_bitmask): ...this.
1915 (irange::intersect_nonzero_bits): Rename to...
1916 (irange::intersect_bitmask): ...this.
1917 (irange::union_nonzero_bits): Rename to...
1918 (irange::union_bitmask): ...this.
1919 (irange_bitmask::verify_mask): New.
1920 * value-range.h (class irange_bitmask): New.
1921 (irange_bitmask::set_unknown): New.
1922 (irange_bitmask::unknown_p): New.
1923 (irange_bitmask::irange_bitmask): New.
1924 (irange_bitmask::get_precision): New.
1925 (irange_bitmask::get_nonzero_bits): New.
1926 (irange_bitmask::set_nonzero_bits): New.
1927 (irange_bitmask::operator==): New.
1928 (irange_bitmask::union_): New.
1929 (irange_bitmask::intersect): New.
1930 (class irange): Friend vrange_printer.
1931 (irange::varying_compatible_p): Adjust for bitmask.
1932 (irange::set_varying): Same.
1933 (irange::set_nonzero): Same.
1935 2023-07-07 Jan Beulich <jbeulich@suse.com>
1937 * config/i386/sse.md (*vec_extractv2ti): Drop g modifiers.
1939 2023-07-07 Jan Beulich <jbeulich@suse.com>
1941 * config/i386/sse.md (@vec_extract_hi_<mode>): Drop last
1942 alternative. Switch new last alternative's "isa" attribute to
1944 (vec_extract_hi_v32qi): Likewise.
1946 2023-07-07 Pan Li <pan2.li@intel.com>
1947 Robin Dapp <rdapp@ventanamicro.com>
1949 * config/riscv/riscv.cc (riscv_emit_mode_set): Avoid emit insn
1951 (riscv_mode_entry): Take FRM_MODE_DYN as entry mode.
1952 (riscv_mode_exit): Likewise for exit mode.
1953 (riscv_mode_needed): Likewise for needed mode.
1954 (riscv_mode_after): Likewise for after mode.
1956 2023-07-07 Pan Li <pan2.li@intel.com>
1958 * config/riscv/vector.md: Fix typo.
1960 2023-07-06 Jan Hubicka <jh@suse.cz>
1963 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Scale loop frequency to maximal number
1964 of iterations determined.
1965 * tree-ssa-loop-ivcanon.cc (try_unroll_loop_completely): Likewise.
1967 2023-07-06 Jan Hubicka <jh@suse.cz>
1969 * cfgloopmanip.cc (scale_loop_profile): Rewrite exit edge
1970 probability update to be safe on loops with subloops.
1971 Make bound parameter to be iteration bound.
1972 * tree-ssa-loop-ivcanon.cc (try_peel_loop): Update call
1973 of scale_loop_profile.
1974 * tree-vect-loop-manip.cc (vect_do_peeling): Likewise.
1976 2023-07-06 Hao Liu OS <hliu@os.amperecomputing.com>
1978 PR tree-optimization/110449
1979 * tree-vect-loop.cc (vectorizable_induction): use vec_n to replace
1980 vec_loop for the unrolled loop.
1982 2023-07-06 Jan Hubicka <jh@suse.cz>
1984 * cfg.cc (set_edge_probability_and_rescale_others): New function.
1985 (update_bb_profile_for_threading): Use it; simplify the rest.
1986 * cfg.h (set_edge_probability_and_rescale_others): Declare.
1987 * profile-count.h (profile_probability::apply_scale): New.
1989 2023-07-06 Claudiu Zissulescu <claziss@gmail.com>
1991 * doc/extend.texi (ARC Built-in Functions): Update documentation
1992 with missing builtins.
1994 2023-07-06 Richard Biener <rguenther@suse.de>
1996 PR tree-optimization/110556
1997 * tree-ssa-tail-merge.cc (gimple_equal_p): Check
1998 assign code and all operands of non-stores.
2000 2023-07-06 Richard Biener <rguenther@suse.de>
2002 PR tree-optimization/110563
2003 * tree-vectorizer.h (vect_determine_partial_vectors_and_peeling):
2004 Remove second argument.
2005 * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
2006 Remove for_epilogue_p argument. Merge assert ...
2007 (vect_analyze_loop_2): ... with check done before determining
2008 partial vectors by moving it after.
2009 * tree-vect-loop-manip.cc (vect_do_peeling): Adjust.
2011 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
2013 * ggc-common.cc (gt_pch_note_reorder, gt_pch_save): Tighten up a
2014 few things re 'reorder' option and strings.
2015 * stringpool.cc (gt_pch_p_S): This is now 'gcc_unreachable'.
2017 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
2019 * gengtype-parse.cc: Clean up obsolete parametrized structs
2021 * gengtype.cc: Likewise.
2022 * gengtype.h: Likewise.
2024 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
2026 * gengtype.cc (struct walk_type_data): Remove 'needs_cast_p'.
2029 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
2031 * gengtype-parse.cc (token_names): Add '"user"'.
2032 * gengtype.h (gty_token): Add 'UNUSED_PARAM_IS' for use with
2033 'FIRST_TOKEN_WITH_VALUE'.
2035 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
2037 * doc/gty.texi (GTY Options) <string_length>: Enhance.
2039 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
2041 * gengtype.cc (write_root, write_roots): Explicitly reject
2042 'string_length' option.
2043 * doc/gty.texi (GTY Options) <string_length>: Document.
2045 2023-07-06 Thomas Schwinge <thomas@codesourcery.com>
2047 * ggc-internal.h (ggc_pch_count_object, ggc_pch_alloc_object)
2048 (ggc_pch_write_object): Remove 'bool is_string' argument.
2049 * ggc-common.cc: Adjust.
2050 * ggc-page.cc: Likewise.
2052 2023-07-06 Roger Sayle <roger@nextmovesoftware.com>
2054 * dwarf2out.cc (mem_loc_descriptor): Handle COPYSIGN.
2056 2023-07-06 Hongyu Wang <hongyu.wang@intel.com>
2058 * doc/extend.texi: Move x86 inlining rule to a new subsubsection
2059 and add description for inling of function with arch and tune
2062 2023-07-06 Richard Biener <rguenther@suse.de>
2064 PR tree-optimization/110515
2065 * tree-ssa-pre.cc (compute_avail): Make code dealing
2066 with hoisting loads with different alias-sets more
2069 2023-07-06 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2071 * tree-vect-stmts.cc (vect_get_strided_load_store_ops): Fix ICE.
2073 2023-07-06 Hongyu Wang <hongyu.wang@intel.com>
2075 * config/i386/i386.cc (ix86_can_inline_p): If callee has
2076 default arch=x86-64 and tune=generic, do not block the
2077 inlining to its caller. Also allow callee with different
2078 arch= to be inlined if it has always_inline attribute and
2079 it's ISA is subset of caller's.
2081 2023-07-06 liuhongt <hongtao.liu@intel.com>
2083 * config/i386/i386.cc (ix86_rtx_costs): Adjust rtx_cost for
2084 DF/SFmode AND/IOR/XOR/ANDN operations.
2086 2023-07-06 Andrew Pinski <apinski@marvell.com>
2088 PR middle-end/110554
2089 * tree-vect-generic.cc (expand_vector_condition): For comparisons,
2090 just build using boolean_type_node instead of the cond_type.
2091 For non-comparisons/non-scalar-bitmask, build a ` != 0` gimple
2092 that will feed into the COND_EXPR.
2094 2023-07-06 liuhongt <hongtao.liu@intel.com>
2097 * config/i386/i386.md (movdf_internal): Disparage slightly for
2098 2 alternatives (r,v) and (v,r) by adding constraint modifier
2101 2023-07-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
2104 * config/rs6000/rs6000.cc (rs6000_expand_vector_extract): Remove redundant
2105 initialization of new_addr.
2107 2023-07-06 Hao Liu <hliu@os.amperecomputing.com>
2109 PR tree-optimization/110474
2110 * tree-vect-loop.cc (vect_analyze_loop_2): unscale the VF by suggested
2111 unroll factor while selecting the epilog vect loop VF.
2113 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
2115 * gimple-range-gori.cc (compute_operand_range): Convert to a tail
2118 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
2120 * gimple-range-gori.cc (compute_operand_range): After calling
2121 compute_operand2_range, recursively call self if needed.
2122 (compute_operand2_range): Turn into a leaf function.
2123 (gori_compute::compute_operand1_and_operand2_range): Finish
2124 operand2 calculation.
2125 * gimple-range-gori.h (compute_operand2_range): Remove name param.
2127 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
2129 * gimple-range-gori.cc (compute_operand_range): After calling
2130 compute_operand1_range, recursively call self if needed.
2131 (compute_operand1_range): Turn into a leaf function.
2132 (gori_compute::compute_operand1_and_operand2_range): Finish
2133 operand1 calculation.
2134 * gimple-range-gori.h (compute_operand1_range): Remove name param.
2136 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
2138 * gimple-range-gori.cc (compute_operand_range): Check for
2139 operand interdependence when both op1 and op2 are computed.
2140 (compute_operand1_and_operand2_range): No checks required now.
2142 2023-07-05 Andrew MacLeod <amacleod@redhat.com>
2144 * gimple-range-gori.cc (compute_operand_range): Check for
2145 a relation between op1 and op2 and use that instead.
2146 (compute_operand1_range): Don't look for a relation override.
2147 (compute_operand2_range): Ditto.
2149 2023-07-05 Jonathan Wakely <jwakely@redhat.com>
2151 * doc/contrib.texi (Contributors): Update my entry.
2153 2023-07-05 Filip Kastl <filip.kastl@gmail.com>
2155 * value-prof.cc (gimple_mod_subtract_transform): Correct edge
2158 2023-07-05 Uros Bizjak <ubizjak@gmail.com>
2160 * sched-int.h (struct haifa_sched_info): Change can_schedule_ready_p,
2161 scehdule_more_p and contributes_to_priority indirect frunction
2162 type from int to bool.
2163 (no_real_insns_p): Change return type from int to bool.
2164 (contributes_to_priority): Ditto.
2165 * haifa-sched.cc (no_real_insns_p): Change return type from
2166 int to bool and adjust function body accordingly.
2167 * modulo-sched.cc (try_scheduling_node_in_cycle): Change "success"
2168 variable type from int to bool.
2169 (ps_insn_advance_column): Change return type from int to bool.
2170 (ps_has_conflicts): Ditto. Change "has_conflicts"
2171 variable type from int to bool.
2172 * sched-deps.cc (deps_may_trap_p): Change return type from int to bool.
2173 (conditions_mutex_p): Ditto.
2174 * sched-ebb.cc (schedule_more_p): Ditto.
2175 (ebb_contributes_to_priority): Change return type from
2176 int to bool and adjust function body accordingly.
2177 * sched-rgn.cc (is_cfg_nonregular): Ditto.
2178 (check_live_1): Ditto.
2180 (find_conditional_protection): Ditto.
2181 (is_conditionally_protected): Ditto.
2183 (is_exception_free): Ditto.
2184 (haifa_find_rgns): Change "unreachable" and "too_large_failure"
2185 variables from int to bool.
2186 (extend_rgns): Change "rescan" variable from int to bool.
2187 (check_live): Change return type from
2188 int to bool and adjust function body accordingly.
2189 (can_schedule_ready_p): Ditto.
2190 (schedule_more_p): Ditto.
2191 (contributes_to_priority): Ditto.
2193 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
2195 * doc/md.texi: Document that vec_set and vec_extract must not
2197 * gimple-isel.cc (gimple_expand_vec_set_expr): Rename this...
2198 (gimple_expand_vec_set_extract_expr): ...to this.
2199 (gimple_expand_vec_exprs): Call renamed function.
2200 * internal-fn.cc (vec_extract_direct): Add.
2201 (expand_vec_extract_optab_fn): New function to expand
2203 (direct_vec_extract_optab_supported_p): Add.
2204 * internal-fn.def (VEC_EXTRACT): Add.
2205 * optabs.cc (can_vec_extract_var_idx_p): New function.
2206 * optabs.h (can_vec_extract_var_idx_p): Declare.
2208 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
2210 * config/riscv/autovec.md: Add gen_lowpart.
2212 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
2214 * config/riscv/autovec.md: Allow register index operand.
2216 2023-07-05 Pan Li <pan2.li@intel.com>
2218 * config/riscv/riscv-vector-builtins.cc
2219 (function_expander::use_exact_insn): Use FRM_DYN instead of const0.
2221 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
2223 * config/riscv/autovec.md: Use float_truncate.
2225 2023-07-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2227 * internal-fn.cc (internal_fn_len_index): Apply
2228 LEN_MASK_GATHER_LOAD/SCATTER_STORE into vectorizer.
2229 (internal_fn_mask_index): Ditto.
2230 * optabs-query.cc (supports_vec_gather_load_p): Ditto.
2231 (supports_vec_scatter_store_p): Ditto.
2232 * tree-vect-data-refs.cc (vect_gather_scatter_fn_p): Ditto.
2233 * tree-vect-patterns.cc (vect_recog_gather_scatter_pattern): Ditto.
2234 * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
2235 (vect_get_strided_load_store_ops): Ditto.
2236 (vectorizable_store): Ditto.
2237 (vectorizable_load): Ditto.
2239 2023-07-05 Robin Dapp <rdapp@ventanamicro.com>
2240 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2242 * simplify-rtx.cc (native_encode_rtx): Ditto.
2243 (native_decode_vector_rtx): Ditto.
2244 (simplify_const_vector_byte_offset): Ditto.
2245 (simplify_const_vector_subreg): Ditto.
2246 * tree.cc (build_truth_vector_type_for_mode): Ditto.
2247 * varasm.cc (output_constant_pool_2): Ditto.
2249 2023-07-05 YunQiang Su <yunqiang.su@cipunited.com>
2251 * config/mips/mips.cc (mips_expand_block_move): don't expand for
2252 r6 with -mno-unaligned-access option if one or both of src and
2253 dest are unaligned. restruct: return directly if length is not const.
2254 (mips_block_move_straight): emit_move if ISA_HAS_UNALIGNED_ACCESS.
2256 2023-07-05 Jan Beulich <jbeulich@suse.com>
2259 * config/i386/sse.md: New splitters to simplify
2260 not;vec_duplicate as a singular vpternlog.
2261 (one_cmpl<mode>2): Allow broadcast for operand 1.
2262 (<mask_codefor>one_cmpl<mode>2<mask_name>): Likewise.
2264 2023-07-05 Jan Beulich <jbeulich@suse.com>
2267 * config/i386/sse.md: New splitters to simplify
2268 not;vec_duplicate;{ior,xor} as vec_duplicate;{iornot,xnor}.
2270 2023-07-05 Jan Beulich <jbeulich@suse.com>
2273 * config/i386/sse.md: Permit non-immediate operand 1 in AVX2
2274 form of splitter for PR target/100711.
2276 2023-07-05 Richard Biener <rguenther@suse.de>
2278 PR middle-end/110541
2279 * tree.def (VEC_PERM_EXPR): Adjust documentation to reflect
2282 2023-07-05 Jan Beulich <jbeulich@suse.com>
2285 * config/i386/sse.md (*andnot<mode>3): Add new alternatives
2286 for memory form operand 1.
2288 2023-07-05 Jan Beulich <jbeulich@suse.com>
2291 * config/i386/i386.cc (ix86_rtx_costs): Further special-case
2292 bitwise vector operations.
2293 * config/i386/sse.md (*iornot<mode>3): New insn.
2294 (*xnor<mode>3): Likewise.
2295 (*<nlogic><mode>3): Likewise.
2296 (andor): New code iterator.
2297 (nlogic): New code attribute.
2298 (ternlog_nlogic): Likewise.
2300 2023-07-05 Richard Biener <rguenther@suse.de>
2302 * tree-vect-stmts.cc (vect_mark_relevant): Fix typo.
2304 2023-07-05 yulong <shiyulong@iscas.ac.cn>
2306 * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
2308 2023-07-05 yulong <shiyulong@iscas.ac.cn>
2310 * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
2311 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
2312 (ADJUST_ALIGNMENT): Ditto.
2313 (RVV_TUPLE_PARTIAL_MODES): Ditto.
2314 (ADJUST_NUNITS): Ditto.
2315 * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
2317 (vfloat16mf4x3_t): Ditto.
2318 (vfloat16mf4x4_t): Ditto.
2319 (vfloat16mf4x5_t): Ditto.
2320 (vfloat16mf4x6_t): Ditto.
2321 (vfloat16mf4x7_t): Ditto.
2322 (vfloat16mf4x8_t): Ditto.
2323 (vfloat16mf2x2_t): Ditto.
2324 (vfloat16mf2x3_t): Ditto.
2325 (vfloat16mf2x4_t): Ditto.
2326 (vfloat16mf2x5_t): Ditto.
2327 (vfloat16mf2x6_t): Ditto.
2328 (vfloat16mf2x7_t): Ditto.
2329 (vfloat16mf2x8_t): Ditto.
2330 (vfloat16m1x2_t): Ditto.
2331 (vfloat16m1x3_t): Ditto.
2332 (vfloat16m1x4_t): Ditto.
2333 (vfloat16m1x5_t): Ditto.
2334 (vfloat16m1x6_t): Ditto.
2335 (vfloat16m1x7_t): Ditto.
2336 (vfloat16m1x8_t): Ditto.
2337 (vfloat16m2x2_t): Ditto.
2338 (vfloat16m2x3_t): Ditto.
2339 (vfloat16m2x4_t): Ditto.
2340 (vfloat16m4x2_t): Ditto.
2341 * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
2342 (vfloat16mf4x3_t): Ditto.
2343 (vfloat16mf4x4_t): Ditto.
2344 (vfloat16mf4x5_t): Ditto.
2345 (vfloat16mf4x6_t): Ditto.
2346 (vfloat16mf4x7_t): Ditto.
2347 (vfloat16mf4x8_t): Ditto.
2348 (vfloat16mf2x2_t): Ditto.
2349 (vfloat16mf2x3_t): Ditto.
2350 (vfloat16mf2x4_t): Ditto.
2351 (vfloat16mf2x5_t): Ditto.
2352 (vfloat16mf2x6_t): Ditto.
2353 (vfloat16mf2x7_t): Ditto.
2354 (vfloat16mf2x8_t): Ditto.
2355 (vfloat16m1x2_t): Ditto.
2356 (vfloat16m1x3_t): Ditto.
2357 (vfloat16m1x4_t): Ditto.
2358 (vfloat16m1x5_t): Ditto.
2359 (vfloat16m1x6_t): Ditto.
2360 (vfloat16m1x7_t): Ditto.
2361 (vfloat16m1x8_t): Ditto.
2362 (vfloat16m2x2_t): Ditto.
2363 (vfloat16m2x3_t): Ditto.
2364 (vfloat16m2x4_t): Ditto.
2365 (vfloat16m4x2_t): Ditto.
2366 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
2367 * config/riscv/riscv.md: New.
2368 * config/riscv/vector-iterators.md: New.
2370 2023-07-04 Andrew Pinski <apinski@marvell.com>
2372 PR tree-optimization/110487
2373 * match.pd (a !=/== CST1 ? CST2 : CST3): Always
2374 build a nonstandard integer and use that.
2376 2023-07-04 Andrew Pinski <apinski@marvell.com>
2378 * match.pd (a?-1:0): Cast type an integer type
2379 rather the type before the negative.
2382 2023-07-04 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
2384 * config/xtensa/xtensa.cc (machine_function, xtensa_expand_prologue):
2385 Change to use HARD_REG_BIT and its macros.
2386 * config/xtensa/xtensa.md
2387 (peephole2: regmove elimination during DFmode input reload):
2390 2023-07-04 Richard Biener <rguenther@suse.de>
2392 PR tree-optimization/110491
2393 * tree-ssa-phiopt.cc (match_simplify_replacement): Check
2394 whether the PHI args are possibly undefined before folding
2397 2023-07-04 Pan Li <pan2.li@intel.com>
2398 Thomas Schwinge <thomas@codesourcery.com>
2400 * lto-streamer-in.cc (lto_input_mode_table): Stream in the mode
2401 bits for machine mode table.
2402 * lto-streamer-out.cc (lto_write_mode_table): Stream out the
2403 HOST machine mode bits.
2404 * lto-streamer.h (struct lto_file_decl_data): New fields mode_bits.
2405 * tree-streamer.cc (streamer_mode_table): Take MAX_MACHINE_MODE
2407 * tree-streamer.h (streamer_mode_table): Ditto.
2408 (bp_pack_machine_mode): Take 1 << ceil_log2 (MAX_MACHINE_MODE)
2409 as the packing limit.
2410 (bp_unpack_machine_mode): Ditto with 'file_data->mode_bits'.
2412 2023-07-04 Thomas Schwinge <thomas@codesourcery.com>
2414 * lto-streamer.h (class lto_input_block): Capture
2415 'lto_file_decl_data *file_data' instead of just
2416 'unsigned char *mode_table'.
2417 * ipa-devirt.cc (ipa_odr_read_section): Adjust.
2418 * ipa-fnsummary.cc (inline_read_section): Likewise.
2419 * ipa-icf.cc (sem_item_optimizer::read_section): Likewise.
2420 * ipa-modref.cc (read_section): Likewise.
2421 * ipa-prop.cc (ipa_prop_read_section, read_replacements_section):
2423 * ipa-sra.cc (isra_read_summary_section): Likewise.
2424 * lto-cgraph.cc (input_cgraph_opt_section): Likewise.
2425 * lto-section-in.cc (lto_create_simple_input_block): Likewise.
2426 * lto-streamer-in.cc (lto_read_body_or_constructor)
2427 (lto_input_toplevel_asms): Likewise.
2428 * tree-streamer.h (bp_unpack_machine_mode): Likewise.
2430 2023-07-04 Richard Biener <rguenther@suse.de>
2432 * tree-ssa-phiopt.cc (pass_phiopt::execute): Mark SSA undefs.
2433 (empty_bb_or_one_feeding_into_p): Check for them.
2434 * tree-ssa.h (gimple_uses_undefined_value_p): Remove.
2435 * tree-ssa.cc (gimple_uses_undefined_value_p): Likewise.
2437 2023-07-04 Richard Biener <rguenther@suse.de>
2439 * tree-vect-loop.cc (vect_analyze_loop_costing): Remove
2440 check guarding scalar_niter underflow.
2442 2023-07-04 Hao Liu <hliu@os.amperecomputing.com>
2444 PR tree-optimization/110531
2445 * tree-vect-loop.cc (vect_analyze_loop_1): initialize
2446 slp_done_for_suggested_uf to false.
2448 2023-07-04 Richard Biener <rguenther@suse.de>
2450 PR tree-optimization/110228
2451 * tree-ssa-ifcombine.cc (pass_tree_ifcombine::execute):
2452 Mark SSA may-undefs.
2453 (bb_no_side_effects_p): Check stmt uses for undefs.
2455 2023-07-04 Richard Biener <rguenther@suse.de>
2457 PR tree-optimization/110436
2458 * tree-vect-stmts.cc (vect_mark_relevant): Expand dumping,
2459 force live but not relevant pattern stmts relevant.
2461 2023-07-04 Lili Cui <lili.cui@intel.com>
2463 * config/i386/i386.h: Add PTA_ENQCMD and PTA_UINTR to PTA_SIERRAFOREST.
2464 * doc/invoke.texi: Update new isa to march=sierraforest and grandridge.
2466 2023-07-04 Richard Biener <rguenther@suse.de>
2468 PR middle-end/110495
2469 * tree.h (TREE_OVERFLOW): Do not mention VECTOR_CSTs
2470 since we do not set TREE_OVERFLOW on those since the
2471 introduction of VL vectors.
2472 * match.pd (x +- CST +- CST): For VECTOR_CST do not look
2473 at TREE_OVERFLOW to determine validity of association.
2475 2023-07-04 Richard Biener <rguenther@suse.de>
2477 PR tree-optimization/110310
2478 * tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
2479 Move costing part ...
2480 (vect_analyze_loop_costing): ... here. Integrate better
2481 estimate for epilogues from ...
2482 (vect_analyze_loop_2): Call vect_determine_partial_vectors_and_peeling
2483 with actual epilogue status.
2484 * tree-vect-loop-manip.cc (vect_do_peeling): ... here and
2485 avoid cancelling epilogue vectorization.
2486 (vect_update_epilogue_niters): Remove. No longer update
2487 epilogue LOOP_VINFO_NITERS.
2489 2023-07-04 Pan Li <pan2.li@intel.com>
2492 2023-07-03 Pan Li <pan2.li@intel.com>
2494 * config/riscv/vector.md: Fix typo.
2496 2023-07-04 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2498 * doc/md.texi: Add len_mask_gather_load/len_mask_scatter_store.
2499 * internal-fn.cc (expand_scatter_store_optab_fn): Ditto.
2500 (expand_gather_load_optab_fn): Ditto.
2501 (internal_load_fn_p): Ditto.
2502 (internal_store_fn_p): Ditto.
2503 (internal_gather_scatter_fn_p): Ditto.
2504 (internal_fn_len_index): Ditto.
2505 (internal_fn_mask_index): Ditto.
2506 (internal_fn_stored_value_index): Ditto.
2507 * internal-fn.def (LEN_MASK_GATHER_LOAD): Ditto.
2508 (LEN_MASK_SCATTER_STORE): Ditto.
2509 * optabs.def (OPTAB_CD): Ditto.
2511 2023-07-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2513 * config/riscv/riscv-vsetvl.cc
2514 (vector_insn_info::parse_insn): Add early break.
2516 2023-07-04 Hans-Peter Nilsson <hp@axis.com>
2518 * config/cris/cris.md (CRIS_UNSPEC_SWAP_BITS): Remove.
2519 ("cris_swap_bits", "ctzsi2"): Use bitreverse instead.
2521 2023-07-04 Hans-Peter Nilsson <hp@axis.com>
2523 * dwarf2out.cc (mem_loc_descriptor): Handle BITREVERSE.
2525 2023-07-03 Christoph Müllner <christoph.muellner@vrull.eu>
2527 * common/config/riscv/riscv-common.cc: Add support for zvbb,
2528 zvbc, zvkg, zvkned, zvknha, zvknhb, zvksed, zvksh, zvkn,
2529 zvknc, zvkng, zvks, zvksc, zvksg, zvkt and the implied subsets.
2530 * config/riscv/arch-canonicalize: Add canonicalization info for
2531 zvkn, zvknc, zvkng, zvks, zvksc, zvksg.
2532 * config/riscv/riscv-opts.h (MASK_ZVBB): New macro.
2533 (MASK_ZVBC): Likewise.
2534 (TARGET_ZVBB): Likewise.
2535 (TARGET_ZVBC): Likewise.
2536 (MASK_ZVKG): Likewise.
2537 (MASK_ZVKNED): Likewise.
2538 (MASK_ZVKNHA): Likewise.
2539 (MASK_ZVKNHB): Likewise.
2540 (MASK_ZVKSED): Likewise.
2541 (MASK_ZVKSH): Likewise.
2542 (MASK_ZVKN): Likewise.
2543 (MASK_ZVKNC): Likewise.
2544 (MASK_ZVKNG): Likewise.
2545 (MASK_ZVKS): Likewise.
2546 (MASK_ZVKSC): Likewise.
2547 (MASK_ZVKSG): Likewise.
2548 (MASK_ZVKT): Likewise.
2549 (TARGET_ZVKG): Likewise.
2550 (TARGET_ZVKNED): Likewise.
2551 (TARGET_ZVKNHA): Likewise.
2552 (TARGET_ZVKNHB): Likewise.
2553 (TARGET_ZVKSED): Likewise.
2554 (TARGET_ZVKSH): Likewise.
2555 (TARGET_ZVKN): Likewise.
2556 (TARGET_ZVKNC): Likewise.
2557 (TARGET_ZVKNG): Likewise.
2558 (TARGET_ZVKS): Likewise.
2559 (TARGET_ZVKSC): Likewise.
2560 (TARGET_ZVKSG): Likewise.
2561 (TARGET_ZVKT): Likewise.
2562 * config/riscv/riscv.opt: Introduction of riscv_zv{b,k}_subext.
2564 2023-07-03 Andrew Pinski <apinski@marvell.com>
2566 PR middle-end/110510
2567 * except.h (struct eh_landing_pad_d): Add chain_next GTY.
2569 2023-07-03 Iain Sandoe <iain@sandoe.co.uk>
2571 * config/darwin.h: Avoid duplicate multiply_defined specs on
2572 earlier Darwin versions with shared libgcc.
2574 2023-07-03 Uros Bizjak <ubizjak@gmail.com>
2576 * tree.h (tree_int_cst_equal): Change return type from int to bool.
2577 (operand_equal_for_phi_arg_p): Ditto.
2578 (tree_map_base_marked_p): Ditto.
2579 * tree.cc (contains_placeholder_p): Update function body
2580 for bool return type.
2581 (type_cache_hasher::equal): Ditto.
2582 (tree_map_base_hash): Change return type
2583 from int to void and adjust function body accordingly.
2584 (tree_int_cst_equal): Ditto.
2585 (operand_equal_for_phi_arg_p): Ditto.
2586 (get_narrower): Change "first" variable to bool.
2587 (cl_option_hasher::equal): Update function body for bool return type.
2588 * ggc.h (ggc_set_mark): Change return type from int to bool.
2589 (ggc_marked_p): Ditto.
2590 * ggc-page.cc (gt_ggc_mx): Change return type
2591 from int to void and adjust function body accordingly.
2592 (ggc_set_mark): Ditto.
2594 2023-07-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
2596 * config/riscv/autovec.md: Change order of
2597 LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
2598 * config/riscv/riscv-v.cc (expand_load_store): Ditto.
2599 * doc/md.texi: Ditto.
2600 * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Ditto.
2601 * internal-fn.cc (len_maskload_direct): Ditto.
2602 (len_maskstore_direct): Ditto.
2603 (add_len_and_mask_args): New function.
2604 (expand_partial_load_optab_fn): Change order of
2605 LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
2606 (expand_partial_store_optab_fn): Ditto.
2607 (internal_fn_len_index): New function.
2608 (internal_fn_mask_index): Change order of
2609 LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
2610 (internal_fn_stored_value_index): Ditto.
2611 (internal_len_load_store_bias): Ditto.
2612 * internal-fn.h (internal_fn_len_index): New function.
2613 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Change order of
2614 LEN_MASK_LOAD/LEN_MASK_STORE/LEN_LOAD/LEN_STORE arguments.
2615 * tree-vect-stmts.cc (vectorizable_store): Ditto.
2616 (vectorizable_load): Ditto.
2618 2023-07-03 Gaius Mulley <gaiusmod2@gmail.com>
2621 * doc/gm2.texi (Semantic checking): Include examples using
2622 -Wuninit-variable-checking.
2624 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2626 * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
2627 (*single_widen_fnma<mode>): Ditto.
2628 (*double_widen_fms<mode>): Ditto.
2629 (*single_widen_fms<mode>): Ditto.
2630 (*double_widen_fnms<mode>): Ditto.
2631 (*single_widen_fnms<mode>): Ditto.
2633 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2635 * config/riscv/autovec-opt.md (@pred_single_widen_mul<any_extend:su><mode>): Change "@"
2636 into "*" in pattern name which simplifies build files.
2637 (*pred_single_widen_mul<any_extend:su><mode>): Ditto.
2638 (*pred_single_widen_mul<mode>): New pattern.
2640 2023-07-03 Richard Sandiford <richard.sandiford@arm.com>
2642 * config/aarch64/aarch64-simd.md (vec_extract<mode><Vhalf>): Expect
2643 the index to be 0 or 1.
2645 2023-07-03 Lehua Ding <lehua.ding@rivai.ai>
2648 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2650 * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
2651 (*single_widen_fnma<mode>): Ditto.
2652 (*double_widen_fms<mode>): Ditto.
2653 (*single_widen_fms<mode>): Ditto.
2654 (*double_widen_fnms<mode>): Ditto.
2655 (*single_widen_fnms<mode>): Ditto.
2657 2023-07-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
2659 * config/riscv/autovec-opt.md (*double_widen_fnma<mode>): New pattern.
2660 (*single_widen_fnma<mode>): Ditto.
2661 (*double_widen_fms<mode>): Ditto.
2662 (*single_widen_fms<mode>): Ditto.
2663 (*double_widen_fnms<mode>): Ditto.
2664 (*single_widen_fnms<mode>): Ditto.
2666 2023-07-03 Pan Li <pan2.li@intel.com>
2668 * config/riscv/vector.md: Fix typo.
2670 2023-07-03 Richard Biener <rguenther@suse.de>
2672 PR tree-optimization/110506
2673 * tree-vect-patterns.cc (vect_recog_rotate_pattern): Re-order
2674 TYPE_PRECISION access with INTEGRAL_TYPE_P check.
2676 2023-07-03 Richard Biener <rguenther@suse.de>
2678 PR tree-optimization/110506
2679 * tree-ssa-ccp.cc (get_value_for_expr): Check for integral
2680 type before relying on TYPE_PRECISION to produce a nonzero mask.
2682 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
2684 * config/mips/mips.md(*and<mode>3_mips16): Generates
2685 ZEB/ZEH instructions.
2687 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
2689 * config/mips/mips.cc(mips_9bit_offset_address_p): Restrict the
2690 address register to M16_REGS for MIPS16.
2691 (BUILTIN_AVAIL_MIPS16E2): Defined a new macro.
2692 (AVAIL_MIPS16E2_OR_NON_MIPS16): Same as above.
2693 (AVAIL_NON_MIPS16 (cache..)): Update to
2694 AVAIL_MIPS16E2_OR_NON_MIPS16.
2695 * config/mips/mips.h (ISA_HAS_CACHE): Add clause for ISA_HAS_MIPS16E2.
2696 * config/mips/mips.md (mips_cache): Mark as extended MIPS16.
2698 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
2700 * config/mips/mips.h(ISA_HAS_9BIT_DISPLACEMENT): Add clause
2701 for ISA_HAS_MIPS16E2.
2702 (ISA_HAS_SYNC): Same as above.
2703 (ISA_HAS_LL_SC): Same as above.
2705 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
2707 * config/mips/mips.cc(mips_expand_ins_as_unaligned_store):
2708 Add logics for generating instruction.
2709 * config/mips/mips.h(ISA_HAS_LWL_LWR): Add clause for ISA_HAS_MIPS16E2.
2710 * config/mips/mips.md(mov_<load>l): Generates instructions.
2711 (mov_<load>r): Same as above.
2712 (mov_<store>l): Adjusted for the conditions above.
2713 (mov_<store>r): Same as above.
2714 (mov_<store>l_mips16e2): Add machine description for `define_insn mov_<store>l_mips16e2`.
2715 (mov_<store>r_mips16e2): Add machine description for `define_insn mov_<store>r_mips16e2`.
2717 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
2719 * config/mips/mips.cc(mips_symbol_insns_1): Generates LUI instruction.
2720 (mips_const_insns): Same as above.
2721 (mips_output_move): Same as above.
2722 (mips_output_function_prologue): Same as above.
2723 * config/mips/mips.md: Same as above
2725 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
2727 * config/mips/constraints.md(Yz): New constraints for mips16e2.
2728 * config/mips/mips-protos.h(mips_bit_clear_p): Declared new function.
2729 (mips_bit_clear_info): Same as above.
2730 * config/mips/mips.cc(mips_bit_clear_info): New function for
2731 generating instructions.
2732 (mips_bit_clear_p): Same as above.
2733 * config/mips/mips.h(ISA_HAS_EXT_INS): Add clause for ISA_HAS_MIPS16E2.
2734 * config/mips/mips.md(extended_mips16): Generates EXT and INS instructions.
2735 (*and<mode>3): Generates INS instruction.
2736 (*and<mode>3_mips16): Generates EXT, INS and ANDI instructions.
2737 (ior<mode>3): Add logics for ORI instruction.
2738 (*ior<mode>3_mips16_asmacro): Generates ORI instrucion.
2739 (*ior<mode>3_mips16): Add logics for XORI instruction.
2740 (*xor<mode>3_mips16): Generates XORI instrucion.
2741 (*extzv<mode>): Add logics for EXT instruction.
2742 (*insv<mode>): Add logics for INS instruction.
2743 * config/mips/predicates.md(bit_clear_operand): New predicate for
2744 generating bitwise instructions.
2745 (and_reg_operand): Add logics for generating bitwise instructions.
2747 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
2749 * config/mips/mips.cc(mips_regno_mode_ok_for_base_p): Generate instructions
2750 that uses global pointer register.
2751 (mips16_unextended_reference_p): Same as above.
2752 (mips_pic_base_register): Same as above.
2753 (mips_init_relocs): Same as above.
2754 * config/mips/mips.h(MIPS16_GP_LOADS): Defined a new macro.
2755 (GLOBAL_POINTER_REGNUM): Moved to machine description `mips.md`.
2756 * config/mips/mips.md(GLOBAL_POINTER_REGNUM): Moved to here from above.
2757 (*lowsi_mips16_gp):New `define_insn *low<mode>_mips16`.
2759 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
2761 * config/mips/mips.h(ISA_HAS_CONDMOVE): Add condition for ISA_HAS_MIPS16E2.
2762 * config/mips/mips.md(*mov<GPR:mode>_on_<MOVECC:mode>): Add logics for MOVx insts.
2763 (*mov<GPR:mode>_on_<MOVECC:mode>_mips16e2): Generate MOVx instruction.
2764 (*mov<GPR:mode>_on_<GPR2:mode>_ne): Add logics for MOVx insts.
2765 (*mov<GPR:mode>_on_<GPR2:mode>_ne_mips16e2): Generate MOVx instruction.
2766 * config/mips/predicates.md(reg_or_0_operand_mips16e2): New predicate for MOVx insts.
2768 2023-07-03 Jie Mei <jie.mei@oss.cipunited.com>
2770 * config/mips/mips.cc(mips_file_start): Add mips16e2 info
2772 * config/mips/mips.h(__mips_mips16e2): Defined a new
2774 (ISA_HAS_MIPS16E2): Defined a new macro.
2775 (ASM_SPEC): Pass mmips16e2 to the assembler.
2776 * config/mips/mips.opt: Add -m(no-)mips16e2 option.
2777 * config/mips/predicates.md: Add clause for TARGET_MIPS16E2.
2778 * doc/invoke.texi: Add -m(no-)mips16e2 option..
2780 2023-07-02 Jakub Jelinek <jakub@redhat.com>
2782 PR tree-optimization/110508
2783 * tree-ssa-math-opts.cc (match_uaddc_usubc): Only replace re2 with
2784 REALPART_EXPR opf nlhs if re2 is non-NULL.
2786 2023-07-02 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
2788 * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
2790 * config/xtensa/xtensa.md (*xtensa_clamps):
2791 Add TARGET_MINMAX to the condition.
2793 2023-07-02 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
2795 * config/xtensa/xtensa.md (*eqne_INT_MIN):
2796 Add missing ":SI" to the match_operator.
2798 2023-07-02 Iain Sandoe <iain@sandoe.co.uk>
2801 * config/darwin.opt: Add fconstant-cfstrings alias to
2802 mconstant-cfstrings.
2803 * doc/invoke.texi: Amend invocation descriptions to reflect
2804 that the fconstant-cfstrings is a target-option alias and to
2805 add the missing mconstant-cfstrings option description to the
2808 2023-07-01 Jan Hubicka <jh@suse.cz>
2810 * tree-cfg.cc (gimple_duplicate_sese_region): Add elliminated_edge
2811 parmaeter; update profile.
2812 * tree-cfg.h (gimple_duplicate_sese_region): Update prototype.
2813 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Rename to ...
2814 (static_loop_exit): ... this; return the edge to be elliminated.
2815 (ch_base::copy_headers): Handle profile updating for eliminated exits.
2817 2023-07-01 Roger Sayle <roger@nextmovesoftware.com>
2819 * config/i386/i386-features.cc (compute_convert_gain): Provide
2820 gains/costs for ROTATE and ROTATERT (by an integer constant).
2821 (general_scalar_chain::convert_rotate): New helper function to
2822 convert a DImode or SImode rotation by an integer constant into
2824 (general_scalar_chain::convert_insn): Call the new convert_rotate
2825 for ROTATE and ROTATERT.
2826 (general_scalar_to_vector_candidate_p): Consider ROTATE and
2827 ROTATERT to be candidates if the second operand is an integer
2828 constant, valid for a rotation (or shift) in the given mode.
2829 * config/i386/i386-features.h (general_scalar_chain): Add new
2830 helper method convert_rotate.
2832 2023-07-01 Jan Hubicka <jh@suse.cz>
2834 PR tree-optimization/103680
2835 * cfg.cc (update_bb_profile_for_threading): Fix profile update;
2836 make message clearer.
2838 2023-06-30 Qing Zhao <qing.zhao@oracle.com>
2840 PR tree-optimization/101832
2841 * tree-object-size.cc (addr_object_size): Handle structure/union type
2842 when it has flexible size.
2844 2023-06-30 Eric Botcazou <ebotcazou@adacore.com>
2846 * gimple-fold.cc (fold_array_ctor_reference): Fix head comment.
2847 (fold_nonarray_ctor_reference): Likewise. Specifically deal
2848 with integral bit-fields.
2849 (fold_ctor_reference): Make sure that the constructor uses the
2850 native storage order.
2852 2023-06-30 Jan Hubicka <jh@suse.cz>
2854 PR middle-end/109849
2855 * predict.cc (estimate_bb_frequencies): Turn to static function.
2856 (expr_expected_value_1): Fix handling of binary expressions with
2858 * predict.def (PRED_MALLOC_NONNULL): Move later in the priority queue.
2859 (PRED_BUILTIN_EXPECT_WITH_PROBABILITY): Move to almost top of the priority
2861 * predict.h (estimate_bb_frequencies): No longer declare it.
2863 2023-06-30 Uros Bizjak <ubizjak@gmail.com>
2865 * fold-const.h (multiple_of_p): Change return type from int to bool.
2866 * fold-const.cc (split_tree): Change negl_p, neg_litp_p,
2867 neg_conp_p and neg_var_p variables to bool.
2868 (const_binop): Change sat_p variable to bool.
2869 (merge_ranges): Change no_overlap variable to bool.
2870 (extract_muldiv_1): Change same_p variable to bool.
2871 (tree_swap_operands_p): Update function body for bool return type.
2872 (fold_truth_andor): Change commutative variable to bool.
2873 (multiple_of_p): Change return type
2874 from int to void and adjust function body accordingly.
2875 * optabs.h (expand_twoval_unop): Change return type from int to bool.
2876 (expand_twoval_binop): Ditto.
2877 (can_compare_p): Ditto.
2878 (have_add2_insn): Ditto.
2879 (have_addptr3_insn): Ditto.
2880 (have_sub2_insn): Ditto.
2881 (have_insn_for): Ditto.
2882 * optabs.cc (add_equal_note): Ditto.
2883 (widen_operand): Change no_extend argument from int to bool.
2884 (expand_binop): Ditto.
2885 (expand_twoval_unop): Change return type
2886 from int to void and adjust function body accordingly.
2887 (expand_twoval_binop): Ditto.
2888 (can_compare_p): Ditto.
2889 (have_add2_insn): Ditto.
2890 (have_addptr3_insn): Ditto.
2891 (have_sub2_insn): Ditto.
2892 (have_insn_for): Ditto.
2894 2023-06-30 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
2896 * config/aarch64/aarch64-simd.md
2897 (vec_widen_<su>abdl_lo_<mode>, vec_widen_<su>abdl_hi_<mode>):
2898 Expansions for abd vec widen optabs.
2899 (aarch64_<su>abdl<mode>_insn): VQW based abdl RTL.
2900 * config/aarch64/iterators.md (USMAX_EXT): Code attributes
2901 that give the appropriate extend RTL for the max RTL.
2903 2023-06-30 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
2905 * internal-fn.def (VEC_WIDEN_ABD): New internal hilo optab.
2906 * optabs.def (vec_widen_sabd_optab,
2907 vec_widen_sabd_hi_optab, vec_widen_sabd_lo_optab,
2908 vec_widen_sabd_odd_even, vec_widen_sabd_even_optab,
2909 vec_widen_uabd_optab,
2910 vec_widen_uabd_hi_optab, vec_widen_uabd_lo_optab,
2911 vec_widen_uabd_odd_even, vec_widen_uabd_even_optab):
2913 * doc/md.texi: Document them.
2914 * tree-vect-patterns.cc (vect_recog_abd_pattern): Update to
2915 to build a VEC_WIDEN_ABD call if the input precision is smaller
2916 than the precision of the output.
2917 (vect_recog_widen_abd_pattern): Should an ABD expression be
2918 found preceeding an extension, replace the two with a
2921 2023-06-30 Pan Li <pan2.li@intel.com>
2923 * config/riscv/vector.md: Refactor the common condition.
2925 2023-06-30 Richard Biener <rguenther@suse.de>
2927 PR tree-optimization/110496
2928 * gimple-ssa-store-merging.cc (find_bswap_or_nop_1): Re-order
2929 verifying and TYPE_PRECISION query for the BIT_FIELD_REF case.
2931 2023-06-30 Richard Biener <rguenther@suse.de>
2933 PR middle-end/110489
2934 * statistics.cc (curr_statistics_hash): Add argument
2935 indicating whether we should allocate the hash.
2936 (statistics_fini_pass): If the hash isn't allocated
2937 only print the summary header.
2939 2023-06-30 Segher Boessenkool <segher@kernel.crashing.org>
2940 Thomas Schwinge <thomas@codesourcery.com>
2942 * config/nvptx/nvptx.cc (TARGET_LRA_P): Remove.
2944 2023-06-30 Jovan Dmitrović <jovan.dmitrovic@syrmia.com>
2947 * config/mips/mips.cc (mips_function_arg_alignment): Returns
2948 the alignment of function argument. In case of typedef type,
2949 it returns the aligment of the aliased type.
2950 (mips_function_arg_boundary): Relocated calculation of the
2951 aligment of function arguments.
2953 2023-06-29 Jan Hubicka <jh@suse.cz>
2955 PR tree-optimization/109849
2956 * ipa-fnsummary.cc (decompose_param_expr): Skip
2957 functions returning its parameter.
2958 (set_cond_stmt_execution_predicate): Return early
2959 if predicate was constructed.
2961 2023-06-29 Qing Zhao <qing.zhao@oracle.com>
2964 * doc/extend.texi: Document GCC extension on a structure containing
2965 a flexible array member to be a member of another structure.
2967 2023-06-29 Qing Zhao <qing.zhao@oracle.com>
2969 * print-tree.cc (print_node): Print new bit type_include_flexarray.
2970 * tree-core.h (struct tree_type_common): Use bit no_named_args_stdarg_p
2971 as type_include_flexarray for RECORD_TYPE or UNION_TYPE.
2972 * tree-streamer-in.cc (unpack_ts_type_common_value_fields): Stream
2973 in bit no_named_args_stdarg_p properly for its corresponding type.
2974 * tree-streamer-out.cc (pack_ts_type_common_value_fields): Stream
2975 out bit no_named_args_stdarg_p properly for its corresponding type.
2976 * tree.h (TYPE_INCLUDES_FLEXARRAY): New macro TYPE_INCLUDES_FLEXARRAY.
2978 2023-06-29 Aldy Hernandez <aldyh@redhat.com>
2980 * tree-vrp.cc (maybe_set_nonzero_bits): Move from here...
2981 * tree-ssa-dom.cc (maybe_set_nonzero_bits): ...to here.
2982 * tree-vrp.h (maybe_set_nonzero_bits): Remove.
2984 2023-06-29 Aldy Hernandez <aldyh@redhat.com>
2986 * value-range.cc (frange::set): Do not call verify_range.
2987 (frange::normalize_kind): Verify range.
2988 (frange::union_nans): Do not call verify_range.
2989 (frange::union_): Same.
2990 (frange::intersect): Same.
2991 (irange::irange_single_pair_union): Call normalize_kind if
2993 (irange::union_): Same.
2994 (irange::intersect): Same.
2995 (irange::set_range_from_nonzero_bits): Verify range.
2996 (irange::set_nonzero_bits): Call normalize_kind if necessary.
2997 (irange::get_nonzero_bits): Tweak comment.
2998 (irange::intersect_nonzero_bits): Call normalize_kind if
3000 (irange::union_nonzero_bits): Same.
3001 * value-range.h (irange::normalize_kind): Verify range.
3003 2023-06-29 Uros Bizjak <ubizjak@gmail.com>
3005 * cselib.h (rtx_equal_for_cselib_1):
3006 Change return type from int to bool.
3007 (references_value_p): Ditto.
3008 (rtx_equal_for_cselib_p): Ditto.
3009 * expr.h (can_store_by_pieces): Ditto.
3010 (try_casesi): Ditto.
3011 (try_tablejump): Ditto.
3012 (safe_from_p): Ditto.
3013 * sbitmap.h (bitmap_equal_p): Ditto.
3014 * cselib.cc (references_value_p): Change return type
3015 from int to void and adjust function body accordingly.
3016 (rtx_equal_for_cselib_1): Ditto.
3017 * expr.cc (is_aligning_offset): Ditto.
3018 (can_store_by_pieces): Ditto.
3019 (mostly_zeros_p): Ditto.
3020 (all_zeros_p): Ditto.
3021 (safe_from_p): Ditto.
3022 (is_aligning_offset): Ditto.
3023 (try_casesi): Ditto.
3024 (try_tablejump): Ditto.
3025 (store_constructor): Change "need_to_clear" and
3026 "const_bounds_p" variables to bool.
3027 * sbitmap.cc (bitmap_equal_p): Change return type from int to bool.
3029 2023-06-29 Robin Dapp <rdapp@ventanamicro.com>
3031 * tree-ssa-math-opts.cc (divmod_candidate_p): Use
3034 2023-06-29 Richard Biener <rguenther@suse.de>
3036 PR tree-optimization/110460
3037 * tree-vect-stmts.cc (get_related_vectype_for_scalar_type):
3038 Only allow integral, pointer and scalar float type scalar_type.
3040 2023-06-29 Lili Cui <lili.cui@intel.com>
3042 PR tree-optimization/110148
3043 * tree-ssa-reassoc.cc (rewrite_expr_tree_parallel): Handle loop-carried
3044 ops in this function.
3046 2023-06-29 Richard Biener <rguenther@suse.de>
3048 PR middle-end/110452
3049 * expr.cc (store_constructor): Handle uniform boolean
3050 vectors with integer mode specially.
3052 2023-06-29 Richard Biener <rguenther@suse.de>
3054 PR middle-end/110461
3055 * match.pd (bitop (convert@2 @0) (convert?@3 @1)): Disable
3058 2023-06-29 Richard Sandiford <richard.sandiford@arm.com>
3060 * vec.h (gt_pch_nx): Add overloads for va_gc_atomic.
3061 (array_slice): Relax va_gc constructor to handle all vectors
3062 with a vl_embed layout.
3064 2023-06-29 Pan Li <pan2.li@intel.com>
3066 * config/riscv/riscv.cc (riscv_emit_mode_set): Add emit for FRM.
3067 (riscv_mode_needed): Likewise.
3068 (riscv_entity_mode_after): Likewise.
3069 (riscv_mode_after): Likewise.
3070 (riscv_mode_entry): Likewise.
3071 (riscv_mode_exit): Likewise.
3072 * config/riscv/riscv.h (NUM_MODES_FOR_MODE_SWITCHING): Add number
3074 * config/riscv/riscv.md: Add FRM register.
3075 * config/riscv/vector-iterators.md: Add FRM type.
3076 * config/riscv/vector.md (frm_mode): Define new attr for FRM mode.
3077 (fsrm): Define new insn for fsrm instruction.
3079 2023-06-29 Pan Li <pan2.li@intel.com>
3081 * config/riscv/riscv-protos.h (enum floating_point_rounding_mode):
3082 Add macro for static frm min and max.
3083 * config/riscv/riscv-vector-builtins-bases.cc
3084 (class binop_frm): New class for floating-point with frm.
3085 (BASE): Add vfadd for frm.
3086 * config/riscv/riscv-vector-builtins-bases.h: Likewise.
3087 * config/riscv/riscv-vector-builtins-functions.def
3088 (vfadd_frm): Likewise.
3089 * config/riscv/riscv-vector-builtins-shapes.cc
3090 (struct alu_frm_def): New struct for alu with frm.
3091 (SHAPE): Add alu with frm.
3092 * config/riscv/riscv-vector-builtins-shapes.h: Likewise.
3093 * config/riscv/riscv-vector-builtins.cc
3094 (function_checker::report_out_of_range_and_not): New function
3095 for report out of range and not val.
3096 (function_checker::require_immediate_range_or): New function
3097 for checking in range or one val.
3098 * config/riscv/riscv-vector-builtins.h: Add function decl.
3100 2023-06-29 Cui, Lili <lili.cui@intel.com>
3102 * common/config/i386/cpuinfo.h (get_intel_cpu): Remove model value 0xa8
3103 from Rocketlake, move model value 0xbf from Alderlake to Raptorlake.
3105 2023-06-28 Hans-Peter Nilsson <hp@axis.com>
3108 * config/cris/cris.cc (cris_postdbr_cmpelim): Don't apply PATTERN
3109 to insn before validating it.
3111 2023-06-28 Jan Hubicka <jh@suse.cz>
3113 PR middle-end/110334
3114 * ipa-fnsummary.h (ipa_fn_summary): Add
3115 safe_to_inline_to_always_inline.
3116 * ipa-inline.cc (can_early_inline_edge_p): ICE
3117 if SSA is not built; do cycle checking for
3118 always_inline functions.
3119 (inline_always_inline_functions): Be recrusive;
3120 watch for cycles; do not updat overall summary.
3121 (early_inliner): Do not give up on always_inlines.
3122 * ipa-utils.cc (ipa_reverse_postorder): Do not skip
3125 2023-06-28 Uros Bizjak <ubizjak@gmail.com>
3127 * output.h (leaf_function_p): Change return type from int to bool.
3128 (final_forward_branch_p): Ditto.
3129 (only_leaf_regs_used): Ditto.
3130 (maybe_assemble_visibility): Ditto.
3131 * varasm.h (supports_one_only): Ditto.
3132 * rtl.h (compute_alignments): Change return type from int to void.
3133 * final.cc (app_on): Change return type from int to bool.
3134 (compute_alignments): Change return type from int to void
3135 and adjust function body accordingly.
3136 (shorten_branches): Change "something_changed" variable
3137 type from int to bool.
3138 (leaf_function_p): Change return type from int to bool
3139 and adjust function body accordingly.
3140 (final_forward_branch_p): Ditto.
3141 (only_leaf_regs_used): Ditto.
3142 * varasm.cc (contains_pointers_p): Change return type from
3143 int to bool and adjust function body accordingly.
3144 (compare_constant): Ditto.
3145 (maybe_assemble_visibility): Ditto.
3146 (supports_one_only): Ditto.
3148 2023-06-28 Manolis Tsamis <manolis.tsamis@vrull.eu>
3151 * regcprop.cc (maybe_mode_change): Check stack_pointer_rtx mode.
3152 (maybe_copy_reg_attrs): New function.
3153 (find_oldest_value_reg): Use maybe_copy_reg_attrs.
3154 (copyprop_hardreg_forward_1): Ditto.
3156 2023-06-28 Richard Biener <rguenther@suse.de>
3158 PR tree-optimization/110434
3159 * tree-nrv.cc (pass_nrv::execute): Remove CLOBBERs of
3160 VAR we replace with <retval>.
3162 2023-06-28 Richard Biener <rguenther@suse.de>
3164 PR tree-optimization/110451
3165 * tree-ssa-loop-im.cc (stmt_cost): [VEC_]COND_EXPR and
3166 tcc_comparison are expensive.
3168 2023-06-28 Roger Sayle <roger@nextmovesoftware.com>
3170 * config/i386/i386-expand.cc (ix86_expand_branch): Also use ptest
3171 for TImode comparisons on 32-bit architectures.
3172 * config/i386/i386.md (cbranch<mode>4): Change from SDWIM to
3173 SWIM1248x to exclude/avoid TImode being conditional on -m64.
3174 (cbranchti4): New define_expand for TImode on both TARGET_64BIT
3175 and/or with TARGET_SSE4_1.
3176 * config/i386/predicates.md (ix86_timode_comparison_operator):
3177 New predicate that depends upon TARGET_64BIT.
3178 (ix86_timode_comparison_operand): Likewise.
3180 2023-06-28 Roger Sayle <roger@nextmovesoftware.com>
3183 * config/i386/i386-features.cc (compute_convert_gain): Provide
3184 more accurate gains for conversion of scalar comparisons to
3187 2023-06-28 Richard Biener <rguenther@suse.de>
3189 PR tree-optimization/110443
3190 * tree-vect-slp.cc (vect_build_slp_tree_1): Reject non-grouped
3193 2023-06-28 Haochen Gui <guihaoc@gcc.gnu.org>
3195 * config/rs6000/rs6000.md (peephole2 for compare_and_move): New.
3196 (peephole2 for move_and_compare): New.
3197 (mode_iterator WORD): New. Set the mode to SI/DImode by
3199 (*mov<mode>_internal2): Change the mode iterator from P to WORD.
3200 (split pattern for compare_and_move): Likewise.
3202 2023-06-28 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3204 * config/riscv/autovec-opt.md (*double_widen_fma<mode>): New pattern.
3205 (*single_widen_fma<mode>): Ditto.
3207 2023-06-28 Haochen Gui <guihaoc@gcc.gnu.org>
3210 * config/rs6000/altivec.md (*altivec_vupkhs<VU_char>_direct): Rename
3212 (altivec_vupkhs<VU_char>_direct): ...this.
3213 * config/rs6000/predicates.md (vspltisw_vupkhsw_constant_split): New
3214 predicate to test if a constant can be loaded with vspltisw and
3216 (easy_vector_constant): Call vspltisw_vupkhsw_constant_p to Check if
3217 a vector constant can be synthesized with a vspltisw and a vupkhsw.
3218 * config/rs6000/rs6000-protos.h (vspltisw_vupkhsw_constant_p):
3220 * config/rs6000/rs6000.cc (vspltisw_vupkhsw_constant_p): New
3221 function to return true if OP mode is V2DI and can be synthesized
3222 with vupkhsw and vspltisw.
3223 * config/rs6000/vsx.md (*vspltisw_v2di_split): New insn to load up
3224 constants with vspltisw and vupkhsw.
3226 2023-06-28 Jan Hubicka <jh@suse.cz>
3228 PR tree-optimization/110377
3229 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Pass statement to
3231 (ipa_analyze_node): Enable ranger.
3233 2023-06-28 Richard Biener <rguenther@suse.de>
3235 * tree.h (TYPE_PRECISION): Check for non-VECTOR_TYPE.
3236 (TYPE_PRECISION_RAW): Provide raw access to the precision
3238 * tree.cc (verify_type_variant): Compare TYPE_PRECISION_RAW.
3239 (gimple_canonical_types_compatible_p): Likewise.
3240 * tree-streamer-out.cc (pack_ts_type_common_value_fields):
3241 Stream TYPE_PRECISION_RAW.
3242 * tree-streamer-in.cc (unpack_ts_type_common_value_fields):
3244 * lto-streamer-out.cc (hash_tree): Hash TYPE_PRECISION_RAW.
3246 2023-06-28 Alexandre Oliva <oliva@adacore.com>
3248 * doc/extend.texi (zero-call-used-regs): Document leafy and
3250 * flag-types.h (zero_regs_flags): Add LEAFY_MODE, as well as
3252 * function.cc (gen_call_ued_regs_seq): Set only_used for leaf
3253 functions in leafy mode.
3254 * opts.cc (zero_call_used_regs_opts): Add leafy and variants.
3256 2023-06-28 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3258 * config/riscv/riscv-vector-builtins-bases.cc: Adapt expand.
3259 * config/riscv/vector.md (@pred_single_widen_<plus_minus:optab><mode>):
3261 (@pred_single_widen_add<mode>): New pattern.
3262 (@pred_single_widen_sub<mode>): New pattern.
3264 2023-06-28 liuhongt <hongtao.liu@intel.com>
3266 * config/i386/i386.cc (ix86_invalid_conversion): New function.
3267 (TARGET_INVALID_CONVERSION): Define as
3268 ix86_invalid_conversion.
3270 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
3272 * config/riscv/autovec.md (<optab><vnconvert><mode>2): New
3274 (<float_cvt><vnconvert><mode>2): Ditto.
3275 (<optab><mode><vnconvert>2): Ditto.
3276 (<float_cvt><mode><vnconvert>2): Ditto.
3277 * config/riscv/vector-iterators.md: Add vnconvert.
3279 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
3281 * config/riscv/autovec.md (extend<v_double_trunc><mode>2): New
3283 (extend<v_quad_trunc><mode>2): Ditto.
3284 (trunc<mode><v_double_trunc>2): Ditto.
3285 (trunc<mode><v_quad_trunc>2): Ditto.
3286 * config/riscv/vector-iterators.md: Add VQEXTF and HF to
3287 V_QUAD_TRUNC and v_quad_trunc.
3289 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
3291 * config/riscv/autovec.md (<float_cvt><vconvert><mode>2): New
3294 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
3296 * config/riscv/autovec.md (copysign<mode>3): Add expander.
3297 (xorsign<mode>3): Ditto.
3298 * config/riscv/riscv-vector-builtins-bases.cc (class vfsgnjn):
3300 * config/riscv/vector-iterators.md (copysign): Remove ncopysign.
3304 * config/riscv/vector.md (@pred_ncopysign<mode>): Split off.
3305 (@pred_ncopysign<mode>_scalar): Ditto.
3307 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
3309 * config/riscv/autovec.md: VF_AUTO -> VF.
3310 * config/riscv/vector-iterators.md: Introduce VF_ZVFHMIN,
3311 VWEXTF_ZVFHMIN and use TARGET_ZVFH in VWCONVERTI, VHF and
3313 * config/riscv/vector.md: Use new iterators.
3315 2023-06-27 Robin Dapp <rdapp@ventanamicro.com>
3317 * match.pd: Use element_mode and check if target supports
3318 operation with new type.
3320 2023-06-27 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
3322 * config/aarch64/aarch64-sve-builtins-base.cc
3323 (svdupq_impl::fold_nonconst_dupq): New method.
3324 (svdupq_impl::fold): Call fold_nonconst_dupq.
3326 2023-06-27 Andrew Pinski <apinski@marvell.com>
3328 PR middle-end/110420
3329 PR middle-end/103979
3331 * gimplify.cc (gimplify_asm_expr): Mark asm with labels as volatile.
3333 2023-06-27 Aldy Hernandez <aldyh@redhat.com>
3335 * ipa-cp.cc (decide_whether_version_node): Adjust comment.
3336 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Adjust
3338 (set_switch_stmt_execution_predicate): Same.
3339 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
3341 2023-06-27 Aldy Hernandez <aldyh@redhat.com>
3343 * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Adjust for use with
3344 ipa_vr instead of value_range.
3347 (ipa_get_value_range): Same.
3348 * value-range.cc (gt_pch_nx): Move to ipa-prop.cc and adjust for
3352 2023-06-27 Aldy Hernandez <aldyh@redhat.com>
3354 * ipa-cp.cc (ipa_vr_operation_and_type_effects): New.
3355 * ipa-prop.cc (ipa_get_value_range): Adjust for ipa_vr.
3356 (ipa_set_jfunc_vr): Take a range.
3357 (ipa_compute_jump_functions_for_edge): Pass range to
3359 (ipa_write_jump_function): Call streamer write helper.
3360 (ipa_read_jump_function): Call streamer read helper.
3361 * ipa-prop.h (class ipa_vr): Change m_vr to an ipa_vr.
3363 2023-06-27 Richard Sandiford <richard.sandiford@arm.com>
3365 * gengtype-parse.cc (consume_until_comma_or_eos): Parse "= { ... }"
3366 as a probable initializer rather than a probable complete statement.
3368 2023-06-27 Richard Biener <rguenther@suse.de>
3370 PR tree-optimization/96208
3371 * tree-vect-slp.cc (vect_build_slp_tree_1): Allow
3372 a non-grouped load if it is the same for all lanes.
3373 (vect_build_slp_tree_2): Handle not grouped loads.
3374 (vect_optimize_slp_pass::remove_redundant_permutations):
3376 (vect_transform_slp_perm_load_1): Likewise.
3377 * tree-vect-stmts.cc (vect_model_load_cost): Likewise.
3378 (get_group_load_store_type): Likewise. Handle
3380 (vectorizable_load): Likewise.
3382 2023-06-27 liuhongt <hongtao.liu@intel.com>
3384 PR rtl-optimization/110237
3385 * config/i386/sse.md (<avx512>_store<mode>_mask): Refine with
3387 (maskstore<mode><avx512fmaskmodelower): Ditto.
3388 (*<avx512>_store<mode>_mask): New define_insn, it's renamed
3389 from original <avx512>_store<mode>_mask.
3391 2023-06-27 liuhongt <hongtao.liu@intel.com>
3393 * config/i386/i386-features.cc (pass_insert_vzeroupper:gate):
3394 Move flag_expensive_optimizations && !optimize_size to ..
3395 * config/i386/i386-options.cc (ix86_option_override_internal):
3396 .. this, it makes -mvzeroupper independent of optimization
3397 level, but still keeps the behavior of architecture
3398 tuning(emit_vzeroupper) unchanged.
3400 2023-06-27 liuhongt <hongtao.liu@intel.com>
3403 * config/i386/i386.cc (ix86_avx_u127_mode_needed): Don't emit
3404 vzeroupper for vzeroupper call_insn.
3406 2023-06-27 Andrew Pinski <apinski@marvell.com>
3408 * doc/extend.texi (__builtin_alloca_with_align_and_max): Fix
3411 2023-06-27 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3413 * config/riscv/riscv-v.cc (expand_const_vector): Fix stepped vector
3416 2023-06-26 Andrew Pinski <apinski@marvell.com>
3418 * doc/extend.texi (access attribute): Add
3420 (interrupt/interrupt_handler attribute):
3423 2023-06-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3425 * config/aarch64/aarch64-simd.md (aarch64_sqrshrun_n<mode>_insn):
3426 Use <DWI> instead of <V2XWIDE>.
3427 (aarch64_sqrshrun_n<mode>): Likewise.
3429 2023-06-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3431 * config/aarch64/aarch64-protos.h (aarch64_const_vec_rsra_rnd_imm_p):
3433 (aarch64_rnd_imm_p): ... This.
3434 * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec):
3436 (aarch64_int_rnd_operand): ... This.
3437 (aarch64_simd_rshrn_imm_vec): Delete.
3438 * config/aarch64/aarch64-simd.md (aarch64_<sra_op>rsra_n<mode>_insn):
3439 Adjust for the above.
3440 (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): Likewise.
3441 (*aarch64_<shrn_op>rshrn_n<mode>_insn): Likewise.
3442 (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
3443 (aarch64_sqrshrun_n<mode>_insn): Likewise.
3444 (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): Likewise.
3445 (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): Likewise.
3446 (aarch64_sqrshrun2_n<mode>_insn_le): Likewise.
3447 (aarch64_sqrshrun2_n<mode>_insn_be): Likewise.
3448 * config/aarch64/aarch64.cc (aarch64_const_vec_rsra_rnd_imm_p):
3450 (aarch64_rnd_imm_p): ... This.
3452 2023-06-26 Andreas Krebbel <krebbel@linux.ibm.com>
3454 * config/s390/s390.cc (s390_encode_section_info): Set
3455 SYMBOL_FLAG_SET_NOTALIGN2 only if the symbol has explicitely been
3458 2023-06-26 Jan Hubicka <jh@suse.cz>
3460 PR tree-optimization/109849
3461 * tree-ssa-dce.cc (make_forwarders_with_degenerate_phis): Fix profile
3462 count of newly constructed forwarder block.
3464 2023-06-26 Andrew Carlotti <andrew.carlotti@arm.com>
3466 * doc/optinfo.texi: Fix "steam" -> "stream".
3468 2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3470 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Add LEN_MASK_STORE and
3472 (dse_optimize_stmt): Add LEN_MASK_STORE.
3474 2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3476 * gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Fix gimple
3477 fold of LOAD/STORE with length.
3479 2023-06-26 Andrew MacLeod <amacleod@redhat.com>
3481 * gimple-range-gori.cc (compute_operand1_and_operand2_range):
3482 Check for interdependence between operands 1 and 2.
3484 2023-06-26 Richard Sandiford <richard.sandiford@arm.com>
3486 * tree-vect-stmts.cc (vectorizable_conversion): Take multi_step_cvt
3487 into account when costing non-widening/truncating conversions.
3489 2023-06-26 Richard Biener <rguenther@suse.de>
3491 PR tree-optimization/110381
3492 * tree-vect-slp.cc (vect_optimize_slp_pass::start_choosing_layouts):
3493 Materialize permutes before fold-left reductions.
3495 2023-06-26 Pan Li <pan2.li@intel.com>
3497 * config/riscv/riscv-vector-builtins-bases.h: Remove duplicated decl.
3499 2023-06-26 Richard Biener <rguenther@suse.de>
3501 * varasm.cc (initializer_constant_valid_p_1): Also
3502 constrain the type of value to be scalar integral
3503 before dispatching to narrowing_initializer_constant_valid_p.
3505 2023-06-26 Richard Biener <rguenther@suse.de>
3507 * tree-ssa-scopedtables.cc (hashable_expr_equal_p):
3508 Use element_precision.
3510 2023-06-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3512 * config/riscv/autovec.md (vcond<V:mode><VI:mode>): Remove redundant
3514 (vcondu<V:mode><VI:mode>): Ditto.
3515 * config/riscv/riscv-protos.h (expand_vcond): Ditto.
3516 * config/riscv/riscv-v.cc (expand_vcond): Ditto.
3518 2023-06-26 Richard Biener <rguenther@suse.de>
3520 PR tree-optimization/110392
3521 * gimple-predicate-analysis.cc (uninit_analysis::is_use_guarded):
3522 Do early exits on true/false predicate only after normalization.
3524 2023-06-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3526 * tree-ssa-sccvn.cc (vn_reference_lookup_3): Change name "len" into
3529 2023-06-26 Roger Sayle <roger@nextmovesoftware.com>
3531 * config/i386/i386.md (peephole2): Simplify zeroing a register
3532 followed by an IOR, XOR or PLUS operation on it, into a move.
3533 (*ashl<dwi>3_doubleword_highpart): New define_insn_and_split to
3534 eliminate (and hide from reload) unnecessary word to doubleword
3535 extensions that are followed by left shifts by sufficiently large,
3536 but valid, bit counts.
3538 2023-06-26 liuhongt <hongtao.liu@intel.com>
3540 PR tree-optimization/110371
3541 PR tree-optimization/110018
3542 * tree-vect-stmts.cc (vectorizable_conversion): Use cvt_op to
3543 save intermediate type operand instead of "subtle" vec_dest
3546 2023-06-26 liuhongt <hongtao.liu@intel.com>
3548 PR tree-optimization/110371
3549 PR tree-optimization/110018
3550 * tree-vect-stmts.cc (vectorizable_conversion): Don't use
3551 intermiediate type for FIX_TRUNC_EXPR when ftrapping-math.
3553 2023-06-26 Hongyu Wang <hongyu.wang@intel.com>
3555 * config/i386/i386-options.cc (ix86_valid_target_attribute_tree):
3556 Override tune_string with arch_string if tune_string is not
3557 explicitly specified.
3559 2023-06-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3561 * config/riscv/riscv-vsetvl.cc (vector_insn_info::parse_insn): Ehance
3563 * config/riscv/riscv-vsetvl.h: New function.
3565 2023-06-25 Li Xu <xuli1@eswincomputing.com>
3567 * config/riscv/riscv-vector-builtins-bases.cc: change emit_insn to
3570 2023-06-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3572 * config/riscv/autovec.md (len_load_<mode>): Remove.
3573 (len_maskload<mode><vm>): Remove.
3574 (len_store_<mode>): New pattern.
3575 (len_maskstore<mode><vm>): New pattern.
3576 * config/riscv/predicates.md (autovec_length_operand): New predicate.
3577 * config/riscv/riscv-protos.h (enum insn_type): New enum.
3578 (expand_load_store): New function.
3579 * config/riscv/riscv-v.cc (emit_vlmax_masked_insn): Ditto.
3580 (emit_nonvlmax_masked_insn): Ditto.
3581 (expand_load_store): Ditto.
3582 * config/riscv/riscv-vector-builtins.cc
3583 (function_expander::use_contiguous_store_insn): Add avl_type operand
3585 * config/riscv/vector.md: Ditto.
3587 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3589 * internal-fn.cc (expand_partial_store_optab_fn): Fix bug of BIAS
3592 2023-06-25 Pan Li <pan2.li@intel.com>
3594 * config/riscv/vector.md: Revert.
3596 2023-06-25 Pan Li <pan2.li@intel.com>
3598 * config/riscv/genrvv-type-indexer.cc (valid_type): Revert changes.
3599 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): Ditto.
3600 (ADJUST_ALIGNMENT): Ditto.
3601 (RVV_TUPLE_PARTIAL_MODES): Ditto.
3602 (ADJUST_NUNITS): Ditto.
3603 * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t): Ditto.
3604 (vfloat16mf4x3_t): Ditto.
3605 (vfloat16mf4x4_t): Ditto.
3606 (vfloat16mf4x5_t): Ditto.
3607 (vfloat16mf4x6_t): Ditto.
3608 (vfloat16mf4x7_t): Ditto.
3609 (vfloat16mf4x8_t): Ditto.
3610 (vfloat16mf2x2_t): Ditto.
3611 (vfloat16mf2x3_t): Ditto.
3612 (vfloat16mf2x4_t): Ditto.
3613 (vfloat16mf2x5_t): Ditto.
3614 (vfloat16mf2x6_t): Ditto.
3615 (vfloat16mf2x7_t): Ditto.
3616 (vfloat16mf2x8_t): Ditto.
3617 (vfloat16m1x2_t): Ditto.
3618 (vfloat16m1x3_t): Ditto.
3619 (vfloat16m1x4_t): Ditto.
3620 (vfloat16m1x5_t): Ditto.
3621 (vfloat16m1x6_t): Ditto.
3622 (vfloat16m1x7_t): Ditto.
3623 (vfloat16m1x8_t): Ditto.
3624 (vfloat16m2x2_t): Ditto.
3625 (vfloat16m2x3_t): Diito.
3626 (vfloat16m2x4_t): Diito.
3627 (vfloat16m4x2_t): Diito.
3628 * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): Ditto.
3629 (vfloat16mf4x3_t): Ditto.
3630 (vfloat16mf4x4_t): Ditto.
3631 (vfloat16mf4x5_t): Ditto.
3632 (vfloat16mf4x6_t): Ditto.
3633 (vfloat16mf4x7_t): Ditto.
3634 (vfloat16mf4x8_t): Ditto.
3635 (vfloat16mf2x2_t): Ditto.
3636 (vfloat16mf2x3_t): Ditto.
3637 (vfloat16mf2x4_t): Ditto.
3638 (vfloat16mf2x5_t): Ditto.
3639 (vfloat16mf2x6_t): Ditto.
3640 (vfloat16mf2x7_t): Ditto.
3641 (vfloat16mf2x8_t): Ditto.
3642 (vfloat16m1x2_t): Ditto.
3643 (vfloat16m1x3_t): Ditto.
3644 (vfloat16m1x4_t): Ditto.
3645 (vfloat16m1x5_t): Ditto.
3646 (vfloat16m1x6_t): Ditto.
3647 (vfloat16m1x7_t): Ditto.
3648 (vfloat16m1x8_t): Ditto.
3649 (vfloat16m2x2_t): Ditto.
3650 (vfloat16m2x3_t): Ditto.
3651 (vfloat16m2x4_t): Ditto.
3652 (vfloat16m4x2_t): Ditto.
3653 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
3654 * config/riscv/riscv.md: Ditto.
3655 * config/riscv/vector-iterators.md: Ditto.
3657 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3659 * gimple-fold.cc (arith_overflowed_p): Apply LEN_MASK_{LOAD,STORE}.
3660 (gimple_fold_partial_load_store_mem_ref): Ditto.
3661 (gimple_fold_partial_store): Ditto.
3662 (gimple_fold_call): Ditto.
3664 2023-06-25 liuhongt <hongtao.liu@intel.com>
3667 * config/i386/sse.md (maskload<mode><avx512fmaskmodelower>):
3668 Refine pattern with UNSPEC_MASKLOAD.
3669 (maskload<mode><avx512fmaskmodelower>): Ditto.
3670 (*<avx512>_load<mode>_mask): Extend mode iterator to
3672 (*<avx512>_load<mode>): Ditto.
3674 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3676 * tree-ssa-alias.cc (call_may_clobber_ref_p_1): Add LEN_MASK_STORE.
3678 2023-06-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3680 * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Apply
3681 LEN_MASK_{LOAD,STORE}
3683 2023-06-25 yulong <shiyulong@iscas.ac.cn>
3685 * config/riscv/vector.md: Add float16 attr at sew、vlmul and ratio.
3687 2023-06-24 Roger Sayle <roger@nextmovesoftware.com>
3689 * config/i386/i386.md (*<code>qi_ext<mode>_3): New define_insn.
3691 2023-06-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3693 * config/riscv/autovec.md (*fma<mode>): set clobber to Pmode in expand stage.
3694 (*fma<VI:mode><P:mode>): Ditto.
3695 (*fnma<mode>): Ditto.
3696 (*fnma<VI:mode><P:mode>): Ditto.
3698 2023-06-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
3700 * config/riscv/autovec.md (fma<mode>4): New pattern.
3701 (*fma<mode>): Ditto.
3702 (fnma<mode>4): Ditto.
3703 (*fnma<mode>): Ditto.
3704 (fms<mode>4): Ditto.
3705 (*fms<mode>): Ditto.
3706 (fnms<mode>4): Ditto.
3707 (*fnms<mode>): Ditto.
3708 * config/riscv/riscv-protos.h (emit_vlmax_fp_ternary_insn):
3710 * config/riscv/riscv-v.cc (emit_vlmax_fp_ternary_insn): Ditto.
3711 * config/riscv/vector.md: Fix attribute bug.
3713 2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3715 * tree-ssa-loop-ivopts.cc (get_mem_type_for_internal_fn):
3716 Apply LEN_MASK_{LOAD,STORE}.
3718 2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3720 * tree-ssa-loop-ivopts.cc (get_alias_ptr_type_for_ptr_address):
3721 Add LEN_MASK_{LOAD,STORE}.
3723 2023-06-24 David Malcolm <dmalcolm@redhat.com>
3725 * diagnostic-format-sarif.cc: Add #define INCLUDE_VECTOR.
3726 * diagnostic.cc: Likewise.
3727 * text-art/box-drawing.cc: Likewise.
3728 * text-art/canvas.cc: Likewise.
3729 * text-art/ruler.cc: Likewise.
3730 * text-art/selftests.cc: Likewise.
3731 * text-art/selftests.h (text_art::canvas): New forward decl.
3732 * text-art/style.cc: Add #define INCLUDE_VECTOR.
3733 * text-art/styled-string.cc: Likewise.
3734 * text-art/table.cc: Likewise.
3735 * text-art/table.h: Remove #include <vector>.
3736 * text-art/theme.cc: Add #define INCLUDE_VECTOR.
3737 * text-art/types.h: Check that INCLUDE_VECTOR is defined.
3738 Remove #include of <vector> and <string>.
3739 * text-art/widget.cc: Add #define INCLUDE_VECTOR.
3740 * text-art/widget.h: Remove #include <vector>.
3742 2023-06-24 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
3744 * internal-fn.cc (expand_partial_store_optab_fn): Adapt for LEN_MASK_STORE.
3745 (internal_load_fn_p): Add LEN_MASK_LOAD.
3746 (internal_store_fn_p): Add LEN_MASK_STORE.
3747 (internal_fn_mask_index): Add LEN_MASK_{LOAD,STORE}.
3748 (internal_fn_stored_value_index): Add LEN_MASK_STORE.
3749 (internal_len_load_store_bias): Add LEN_MASK_{LOAD,STORE}.
3750 * optabs-tree.cc (can_vec_mask_load_store_p): Adapt for LEN_MASK_{LOAD,STORE}.
3751 (get_len_load_store_mode): Ditto.
3752 * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
3753 (get_len_load_store_mode): Ditto.
3754 * tree-vect-stmts.cc (check_load_store_for_partial_vectors): Ditto.
3755 (get_all_ones_mask): New function.
3756 (vectorizable_store): Apply LEN_MASK_{LOAD,STORE} into vectorizer.
3757 (vectorizable_load): Ditto.
3759 2023-06-23 Marek Polacek <polacek@redhat.com>
3761 * doc/cpp.texi (__cplusplus): Document value for -std=c++26 and
3762 -std=gnu++26. Document that for C++23, its value is 202302L.
3763 * doc/invoke.texi: Document -std=c++26 and -std=gnu++26.
3764 * dwarf2out.cc (highest_c_language): Handle GNU C++26.
3765 (gen_compile_unit_die): Likewise.
3767 2023-06-23 Jan Hubicka <jh@suse.cz>
3769 * tree-ssa-phiprop.cc (propagate_with_phi): Compute post dominators on
3771 (pass_phiprop::execute): Do not compute it here; return
3772 update_ssa_only_virtuals if something changed.
3773 (pass_data_phiprop): Remove TODO_update_ssa from todos.
3775 2023-06-23 Michael Meissner <meissner@linux.ibm.com>
3776 Aaron Sawdey <acsawdey@linux.ibm.com>
3779 * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): Fix problems that
3780 allowed prefixed lwa to be generated.
3781 * config/rs6000/fusion.md: Regenerate.
3782 * config/rs6000/predicates.md (ds_form_mem_operand): Delete.
3783 * config/rs6000/rs6000.md (prefixed attribute): Add support for load
3784 plus compare immediate fused insns.
3785 (maybe_prefixed): Likewise.
3787 2023-06-23 Roger Sayle <roger@nextmovesoftware.com>
3789 * simplify-rtx.cc (simplify_subreg): Optimize lowpart SUBREGs
3790 of ASHIFT to const0_rtx with sufficiently large shift count.
3791 Optimize highpart SUBREGs of ASHIFT as the shift operand when
3792 the shift count is the correct offset. Optimize SUBREGs of
3793 multi-word logic operations if the SUBREGs of both operands
3796 2023-06-23 Richard Biener <rguenther@suse.de>
3798 * varasm.cc (initializer_constant_valid_p_1): Only
3799 allow conversions between scalar floating point types.
3801 2023-06-23 Richard Biener <rguenther@suse.de>
3803 * tree-vect-stmts.cc (vectorizable_assignment):
3804 Properly handle non-integral operands when analyzing
3807 2023-06-23 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
3809 PR tree-optimization/110280
3810 * match.pd (vec_perm_expr(v, v, mask) -> v): Explicitly build vector
3811 using build_vector_from_val with the element of input operand, and
3812 mask's type if operand and mask's types don't match.
3814 2023-06-23 Richard Biener <rguenther@suse.de>
3816 * fold-const.cc (tree_simple_nonnegative_warnv_p): Guard
3817 the truth_value_p case with !VECTOR_TYPE_P.
3819 2023-06-23 Richard Biener <rguenther@suse.de>
3821 * tree-vect-patterns.cc (vect_look_through_possible_promotion):
3822 Exit early when the type isn't scalar integral.
3824 2023-06-23 Richard Biener <rguenther@suse.de>
3826 * match.pd ((outertype)((innertype0)a+(innertype1)b)
3827 -> ((newtype)a+(newtype)b)): Use element_precision
3830 2023-06-23 Richard Biener <rguenther@suse.de>
3832 * fold-const.cc (fold_binary_loc): Use element_precision
3833 when trying (double)float1 CMP (double)float2 to
3834 float1 CMP float2 simplification.
3835 * match.pd: Likewise.
3837 2023-06-23 Richard Biener <rguenther@suse.de>
3839 * tree-vect-stmts.cc (vectorizable_load): Avoid useless
3840 copies of VMAT_INVARIANT vectorized stmts, fix SLP support.
3842 2023-06-23 Richard Biener <rguenther@suse.de>
3844 * tree-vect-stmts.cc (vector_vector_composition_type):
3845 Handle composition of a vector from a number of elements that
3846 happens to match its number of lanes.
3848 2023-06-22 Marek Polacek <polacek@redhat.com>
3850 * configure.ac (--enable-host-bind-now): New check. Add
3851 -Wl,-z,now to LD_PICFLAG if --enable-host-bind-now.
3852 * configure: Regenerate.
3853 * doc/install.texi: Document --enable-host-bind-now.
3855 2023-06-22 Di Zhao OS <dizhao@os.amperecomputing.com>
3857 * config/aarch64/aarch64.cc: Change fma_reassoc_width for ampere1.
3859 2023-06-22 Richard Biener <rguenther@suse.de>
3861 PR tree-optimization/110332
3862 * tree-ssa-phiprop.cc (propagate_with_phi): Always
3863 check aliasing with edge inserted loads.
3865 2023-06-22 Roger Sayle <roger@nextmovesoftware.com>
3866 Uros Bizjak <ubizjak@gmail.com>
3868 * config/i386/i386-expand.cc (ix86_expand_sse_ptest): Recognize
3869 expansion of ptestc with equal operands as producing const1_rtx.
3870 * config/i386/i386.cc (ix86_rtx_costs): Provide accurate cost
3871 estimates of UNSPEC_PTEST, where the ptest performs the PAND
3872 or PAND of its operands.
3873 * config/i386/sse.md (define_split): Transform CCCmode UNSPEC_PTEST
3874 of reg_equal_p operands into an x86_stc instruction.
3875 (define_split): Split pandn/ptestz/set{n?}e into ptestc/set{n?}c.
3876 (define_split): Similar to above for strict_low_part destinations.
3877 (define_split): Split pandn/ptestz/j{n?}e into ptestc/j{n?}c.
3879 2023-06-22 David Malcolm <dmalcolm@redhat.com>
3882 * Makefile.in (ANALYZER_OBJS): Add analyzer/access-diagram.o.
3883 * doc/invoke.texi (Wanalyzer-out-of-bounds): Add description of
3885 (fanalyzer-debug-text-art): New.
3887 2023-06-22 David Malcolm <dmalcolm@redhat.com>
3889 * Makefile.in (OBJS-libcommon): Add text-art/box-drawing.o,
3890 text-art/canvas.o, text-art/ruler.o, text-art/selftests.o,
3891 text-art/style.o, text-art/styled-string.o, text-art/table.o,
3892 text-art/theme.o, and text-art/widget.o.
3893 * color-macros.h (COLOR_FG_BRIGHT_BLACK): New.
3894 (COLOR_FG_BRIGHT_RED): New.
3895 (COLOR_FG_BRIGHT_GREEN): New.
3896 (COLOR_FG_BRIGHT_YELLOW): New.
3897 (COLOR_FG_BRIGHT_BLUE): New.
3898 (COLOR_FG_BRIGHT_MAGENTA): New.
3899 (COLOR_FG_BRIGHT_CYAN): New.
3900 (COLOR_FG_BRIGHT_WHITE): New.
3901 (COLOR_BG_BRIGHT_BLACK): New.
3902 (COLOR_BG_BRIGHT_RED): New.
3903 (COLOR_BG_BRIGHT_GREEN): New.
3904 (COLOR_BG_BRIGHT_YELLOW): New.
3905 (COLOR_BG_BRIGHT_BLUE): New.
3906 (COLOR_BG_BRIGHT_MAGENTA): New.
3907 (COLOR_BG_BRIGHT_CYAN): New.
3908 (COLOR_BG_BRIGHT_WHITE): New.
3909 * common.opt (fdiagnostics-text-art-charset=): New option.
3910 (diagnostic-text-art.h): New SourceInclude.
3911 (diagnostic_text_art_charset) New Enum and EnumValues.
3912 * configure: Regenerate.
3913 * configure.ac (gccdepdir): Add text-art to loop.
3914 * diagnostic-diagram.h: New file.
3915 * diagnostic-format-json.cc (json_emit_diagram): New.
3916 (diagnostic_output_format_init_json): Wire it up to
3917 context->m_diagrams.m_emission_cb.
3918 * diagnostic-format-sarif.cc: Include "diagnostic-diagram.h" and
3919 "text-art/canvas.h".
3920 (sarif_result::on_nested_diagnostic): Move code to...
3921 (sarif_result::add_related_location): ...this new function.
3922 (sarif_result::on_diagram): New.
3923 (sarif_builder::emit_diagram): New.
3924 (sarif_builder::make_message_object_for_diagram): New.
3925 (sarif_emit_diagram): New.
3926 (diagnostic_output_format_init_sarif): Set
3927 context->m_diagrams.m_emission_cb to sarif_emit_diagram.
3928 * diagnostic-text-art.h: New file.
3929 * diagnostic.cc: Include "diagnostic-text-art.h",
3930 "diagnostic-diagram.h", and "text-art/theme.h".
3931 (diagnostic_initialize): Initialize context->m_diagrams and
3932 call diagnostics_text_art_charset_init.
3933 (diagnostic_finish): Clean up context->m_diagrams.m_theme.
3934 (diagnostic_emit_diagram): New.
3935 (diagnostics_text_art_charset_init): New.
3936 * diagnostic.h (text_art::theme): New forward decl.
3937 (class diagnostic_diagram): Likewise.
3938 (diagnostic_context::m_diagrams): New field.
3939 (diagnostic_emit_diagram): New decl.
3940 * doc/invoke.texi (Diagnostic Message Formatting Options): Add
3941 -fdiagnostics-text-art-charset=.
3942 (-fdiagnostics-plain-output): Add
3943 -fdiagnostics-text-art-charset=none.
3944 * gcc.cc: Include "diagnostic-text-art.h".
3945 (driver_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
3946 * opts-common.cc (decode_cmdline_options_to_array): Add
3947 "-fdiagnostics-text-art-charset=none" to expanded_args for
3948 -fdiagnostics-plain-output.
3949 * opts.cc: Include "diagnostic-text-art.h".
3950 (common_handle_option): Handle OPT_fdiagnostics_text_art_charset_.
3951 * pretty-print.cc (pp_unicode_character): New.
3952 * pretty-print.h (pp_unicode_character): New decl.
3953 * selftest-run-tests.cc: Include "text-art/selftests.h".
3954 (selftest::run_tests): Call text_art_tests.
3955 * text-art/box-drawing-chars.inc: New file, generated by
3956 contrib/unicode/gen-box-drawing-chars.py.
3957 * text-art/box-drawing.cc: New file.
3958 * text-art/box-drawing.h: New file.
3959 * text-art/canvas.cc: New file.
3960 * text-art/canvas.h: New file.
3961 * text-art/ruler.cc: New file.
3962 * text-art/ruler.h: New file.
3963 * text-art/selftests.cc: New file.
3964 * text-art/selftests.h: New file.
3965 * text-art/style.cc: New file.
3966 * text-art/styled-string.cc: New file.
3967 * text-art/table.cc: New file.
3968 * text-art/table.h: New file.
3969 * text-art/theme.cc: New file.
3970 * text-art/theme.h: New file.
3971 * text-art/types.h: New file.
3972 * text-art/widget.cc: New file.
3973 * text-art/widget.h: New file.
3975 2023-06-21 Uros Bizjak <ubizjak@gmail.com>
3977 * function.h (emit_initial_value_sets):
3978 Change return type from int to void.
3979 (aggregate_value_p): Change return type from int to bool.
3980 (prologue_contains): Ditto.
3981 (epilogue_contains): Ditto.
3982 (prologue_epilogue_contains): Ditto.
3983 * function.cc (temp_slot): Make "in_use" variable bool.
3984 (make_slot_available): Update for changed "in_use" variable.
3985 (assign_stack_temp_for_type): Ditto.
3986 (emit_initial_value_sets): Change return type from int to void
3987 and update function body accordingly.
3988 (instantiate_virtual_regs): Ditto.
3989 (rest_of_handle_thread_prologue_and_epilogue): Ditto.
3990 (safe_insn_predicate): Change return type from int to bool.
3991 (aggregate_value_p): Change return type from int to bool
3992 and update function body accordingly.
3993 (prologue_contains): Change return type from int to bool.
3994 (prologue_epilogue_contains): Ditto.
3996 2023-06-21 Alexander Monakov <amonakov@ispras.ru>
3998 * common.opt (fp_contract_mode) [on]: Remove fallback.
3999 * config/sh/sh.md (*fmasf4): Correct flag_fp_contract_mode test.
4000 * doc/invoke.texi (-ffp-contract): Update.
4001 * trans-mem.cc (diagnose_tm_1): Skip internal function calls.
4003 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4005 * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
4006 Add alternatives to prefer to avoid same input and output Z register.
4007 (mask_gather_load<mode><v_int_container>): Likewise.
4008 (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
4009 (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
4010 (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
4011 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
4013 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
4015 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4016 <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
4017 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4018 <SVE_2BHSI:mode>_sxtw): Likewise.
4019 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4020 <SVE_2BHSI:mode>_uxtw): Likewise.
4021 (@aarch64_ldff1_gather<mode>): Likewise.
4022 (@aarch64_ldff1_gather<mode>): Likewise.
4023 (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
4024 (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
4025 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
4026 <VNx4_NARROW:mode>): Likewise.
4027 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4028 <VNx2_NARROW:mode>): Likewise.
4029 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4030 <VNx2_NARROW:mode>_sxtw): Likewise.
4031 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4032 <VNx2_NARROW:mode>_uxtw): Likewise.
4033 * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
4034 (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
4035 <SVE_PARTIAL_I:mode>): Likewise.
4037 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4039 * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
4040 Convert to compact alternatives syntax.
4041 (mask_gather_load<mode><v_int_container>): Likewise.
4042 (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
4043 (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
4044 (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
4045 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
4047 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
4049 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4050 <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
4051 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4052 <SVE_2BHSI:mode>_sxtw): Likewise.
4053 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4054 <SVE_2BHSI:mode>_uxtw): Likewise.
4055 (@aarch64_ldff1_gather<mode>): Likewise.
4056 (@aarch64_ldff1_gather<mode>): Likewise.
4057 (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
4058 (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
4059 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
4060 <VNx4_NARROW:mode>): Likewise.
4061 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4062 <VNx2_NARROW:mode>): Likewise.
4063 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4064 <VNx2_NARROW:mode>_sxtw): Likewise.
4065 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4066 <VNx2_NARROW:mode>_uxtw): Likewise.
4067 * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
4068 (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
4069 <SVE_PARTIAL_I:mode>): Likewise.
4071 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4074 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4076 * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
4077 Convert to compact alternatives syntax.
4078 (mask_gather_load<mode><v_int_container>): Likewise.
4079 (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
4080 (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
4081 (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
4082 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
4084 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
4086 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4087 <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
4088 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4089 <SVE_2BHSI:mode>_sxtw): Likewise.
4090 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4091 <SVE_2BHSI:mode>_uxtw): Likewise.
4092 (@aarch64_ldff1_gather<mode>): Likewise.
4093 (@aarch64_ldff1_gather<mode>): Likewise.
4094 (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
4095 (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
4096 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
4097 <VNx4_NARROW:mode>): Likewise.
4098 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4099 <VNx2_NARROW:mode>): Likewise.
4100 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4101 <VNx2_NARROW:mode>_sxtw): Likewise.
4102 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4103 <VNx2_NARROW:mode>_uxtw): Likewise.
4104 * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
4105 (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
4106 <SVE_PARTIAL_I:mode>): Likewise.
4108 2023-06-21 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
4110 * optabs-query.cc (can_vec_mask_load_store_p): Move to optabs-tree.cc.
4111 (get_len_load_store_mode): Ditto.
4112 * optabs-query.h (can_vec_mask_load_store_p): Move to optabs-tree.h.
4113 (get_len_load_store_mode): Ditto.
4114 * optabs-tree.cc (can_vec_mask_load_store_p): New function.
4115 (get_len_load_store_mode): Ditto.
4116 * optabs-tree.h (can_vec_mask_load_store_p): Ditto.
4117 (get_len_load_store_mode): Ditto.
4118 * tree-if-conv.cc: include optabs-tree instead of optabs-query
4120 2023-06-21 Richard Biener <rguenther@suse.de>
4122 * tree-ssa-loop-ivopts.cc (add_iv_candidate_for_use): Use
4123 split_constant_offset for the POINTER_PLUS_EXPR case.
4125 2023-06-21 Richard Biener <rguenther@suse.de>
4127 * tree-ssa-loop-ivopts.cc (record_group_use): Use
4128 split_constant_offset.
4130 2023-06-21 Richard Biener <rguenther@suse.de>
4132 * tree-loop-distribution.cc (classify_builtin_st): Use
4133 split_constant_offset.
4134 * tree-ssa-loop-ivopts.h (strip_offset): Remove.
4135 * tree-ssa-loop-ivopts.cc (strip_offset): Make static.
4137 2023-06-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4139 * config/aarch64/aarch64-sve.md (mask_gather_load<mode><v_int_container>):
4140 Convert to compact alternatives syntax.
4141 (mask_gather_load<mode><v_int_container>): Likewise.
4142 (*mask_gather_load<mode><v_int_container>_<su>xtw_unpacked): Likewise.
4143 (*mask_gather_load<mode><v_int_container>_sxtw): Likewise.
4144 (*mask_gather_load<mode><v_int_container>_uxtw): Likewise.
4145 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_4HSI:mode><SVE_4BHI:mode>):
4147 (@aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode><SVE_2BHSI:mode>):
4149 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4150 <SVE_2BHSI:mode>_<ANY_EXTEND2:su>xtw_unpacked): Likewise.
4151 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4152 <SVE_2BHSI:mode>_sxtw): Likewise.
4153 (*aarch64_gather_load_<ANY_EXTEND:optab><SVE_2HSDI:mode>
4154 <SVE_2BHSI:mode>_uxtw): Likewise.
4155 (@aarch64_ldff1_gather<mode>): Likewise.
4156 (@aarch64_ldff1_gather<mode>): Likewise.
4157 (*aarch64_ldff1_gather<mode>_sxtw): Likewise.
4158 (*aarch64_ldff1_gather<mode>_uxtw): Likewise.
4159 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx4_WIDE:mode>
4160 <VNx4_NARROW:mode>): Likewise.
4161 (@aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4162 <VNx2_NARROW:mode>): Likewise.
4163 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4164 <VNx2_NARROW:mode>_sxtw): Likewise.
4165 (*aarch64_ldff1_gather_<ANY_EXTEND:optab><VNx2_WIDE:mode>
4166 <VNx2_NARROW:mode>_uxtw): Likewise.
4167 * config/aarch64/aarch64-sve2.md (@aarch64_gather_ldnt<mode>): Likewise.
4168 (@aarch64_gather_ldnt_<ANY_EXTEND:optab><SVE_FULL_SDI:mode>
4169 <SVE_PARTIAL_I:mode>): Likewise.
4171 2023-06-21 Tamar Christina <tamar.christina@arm.com>
4174 * doc/md.texi: Replace backslashchar.
4176 2023-06-21 Richard Biener <rguenther@suse.de>
4178 * config/i386/i386.cc (ix86_vector_costs::finish_cost):
4179 Overload. For masked main loops make sure the vectorization
4180 factor isn't more than double the number of iterations.
4182 2023-06-21 Jan Beulich <jbeulich@suse.com>
4184 * config/i386/i386-expand.cc (ix86_expand_copysign): Request
4185 value duplication by ix86_build_signbit_mask() when AVX512F and
4187 * config/i386/sse.md (*<avx512>_vternlog<mode>_all): Convert to
4188 2-alternative form. Adjust "mode" attribute. Add "enabled"
4190 (*<avx512>_vpternlog<mode>_1): Also permit when TARGET_AVX512F
4191 && !TARGET_PREFER_AVX256.
4192 (*<avx512>_vpternlog<mode>_2): Likewise.
4193 (*<avx512>_vpternlog<mode>_3): Likewise.
4195 2023-06-21 liuhongt <hongtao.liu@intel.com>
4198 * tree-vect-stmts.cc (vectorizable_conversion): Use
4199 intermiediate integer type for float_expr/fix_trunc_expr when
4200 direct optab is not existed.
4202 2023-06-20 Tamar Christina <tamar.christina@arm.com>
4205 * gensupport.cc (convert_syntax): Explicitly check for RTX code.
4207 2023-06-20 Richard Sandiford <richard.sandiford@arm.com>
4209 * config/aarch64/aarch64.md (stack_tie): Hard-code the first
4210 register operand to the stack pointer. Require the second register
4211 operand to have the number specified in a separate const_int operand.
4212 * config/aarch64/aarch64.cc (aarch64_emit_stack_tie): New function.
4213 (aarch64_allocate_and_probe_stack_space): Use it.
4214 (aarch64_expand_prologue, aarch64_expand_epilogue): Likewise.
4215 (aarch64_expand_epilogue): Likewise.
4217 2023-06-20 Jakub Jelinek <jakub@redhat.com>
4220 * tree-ssa-math-opts.cc (match_uaddc_usubc): Remember lhs of
4221 IMAGPART_EXPR of arg2/arg3 and use that as arg3 if it has the right
4224 2023-06-20 Uros Bizjak <ubizjak@gmail.com>
4226 * calls.h (setjmp_call_p): Change return type from int to bool.
4227 * calls.cc (struct arg_data): Change "pass_on_stack" to bool.
4228 (store_one_arg): Change return type from int to bool
4229 and adjust function body accordingly. Change "sibcall_failure"
4231 (finalize_must_preallocate): Ditto. Change *must_preallocate pointer
4232 argument to bool. Change "partial_seen" variable to bool.
4233 (load_register_parameters): Change *sibcall_failure
4234 pointer argument to bool.
4235 (check_sibcall_argument_overlap_1): Change return type from int to bool
4236 and adjust function body accordingly.
4237 (check_sibcall_argument_overlap): Ditto. Change
4238 "mark_stored_args_map" argument to bool.
4239 (emit_call_1): Change "already_popped" variable to bool.
4240 (setjmp_call_p): Change return type from int to bool
4241 and adjust function body accordingly.
4242 (initialize_argument_information): Change *must_preallocate
4243 pointer argument to bool.
4244 (expand_call): Change "pcc_struct_value", "must_preallocate"
4245 and "sibcall_failure" variables to bool.
4246 (emit_library_call_value_1): Change "pcc_struct_value"
4249 2023-06-20 Martin Jambor <mjambor@suse.cz>
4252 * ipa-sra.cc (struct caller_issues): New field there_is_one.
4253 (check_for_caller_issues): Set it.
4254 (check_all_callers_for_issues): Check it.
4256 2023-06-20 Martin Jambor <mjambor@suse.cz>
4258 * ipa-prop.h (ipa_uid_to_idx_map_elt): New type.
4259 (struct ipcp_transformation): Rearrange members according to
4260 C++ class coding convention, add m_uid_to_idx,
4261 get_param_index and maybe_create_parm_idx_map.
4262 * ipa-cp.cc (ipcp_transformation::get_param_index): New function.
4263 (compare_uids): Likewise.
4264 (ipcp_transformation::maype_create_parm_idx_map): Likewise.
4265 * ipa-prop.cc (ipcp_get_parm_bits): Use get_param_index.
4266 (ipcp_update_bits): Accept TS as a parameter, assume it is not NULL.
4267 (ipcp_update_vr): Likewise.
4268 (ipcp_transform_function): Call, maybe_create_parm_idx_map of TS, bail
4269 out quickly if empty, pass it to ipcp_update_bits and ipcp_update_vr.
4271 2023-06-20 Carl Love <cel@us.ibm.com>
4273 * config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin):
4274 Rename CODE_FOR_xsxsigqp_tf to CODE_FOR_xsxsigqp_tf_ti.
4275 Rename CODE_FOR_xsxsigqp_kf to CODE_FOR_xsxsigqp_kf_ti.
4276 Rename CCDE_FOR_xsxexpqp_tf to CODE_FOR_xsxexpqp_tf_di.
4277 Rename CODE_FOR_xsxexpqp_kf to CODE_FOR_xsxexpqp_kf_di.
4278 (CODE_FOR_xsxexpqp_kf_v2di, CODE_FOR_xsxsigqp_kf_v1ti,
4279 CODE_FOR_xsiexpqp_kf_v2di): Add case statements.
4280 * config/rs6000/rs6000-builtins.def
4281 (__builtin_vsx_scalar_extract_exp_to_vec,
4282 __builtin_vsx_scalar_extract_sig_to_vec,
4283 __builtin_vsx_scalar_insert_exp_vqp): Add new builtin definitions.
4284 Rename xsxexpqp_kf, xsxsigqp_kf, xsiexpqp_kf to xsexpqp_kf_di,
4285 xsxsigqp_kf_ti, xsiexpqp_kf_di respectively.
4286 * config/rs6000/rs6000-c.cc (altivec_resolve_overloaded_builtin):
4287 Update case RS6000_OVLD_VEC_VSIE to handle MODE_VECTOR_INT for new
4288 overloaded instance. Update comments.
4289 * config/rs6000/rs6000-overload.def
4290 (__builtin_vec_scalar_insert_exp): Add new overload definition with
4292 (scalar_extract_exp_to_vec, scalar_extract_sig_to_vec): New
4293 overloaded definitions.
4294 * config/rs6000/vsx.md (V2DI_DI): New mode iterator.
4295 (DI_to_TI): New mode attribute.
4296 Rename xsxexpqp_<mode> to sxexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
4297 Rename xsxsigqp_<mode> to xsxsigqp_<IEEE128:mode>_<VEC_TI:mode>.
4298 Rename xsiexpqp_<mode> to xsiexpqp_<IEEE128:mode>_<V2DI_DI:mode>.
4299 * doc/extend.texi (scalar_extract_exp_to_vec,
4300 scalar_extract_sig_to_vec): Add documentation for new builtins.
4301 (scalar_insert_exp): Add new overloaded builtin definition.
4303 2023-06-20 Li Xu <xuli1@eswincomputing.com>
4305 * config/riscv/riscv.cc (riscv_regmode_natural_size): set the natural
4306 size of vector mask mode to one rvv register.
4308 2023-06-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4310 * config/riscv/riscv-v.cc (expand_const_vector): Optimize codegen.
4312 2023-06-20 Lehua Ding <lehua.ding@rivai.ai>
4314 * config/riscv/riscv.cc (riscv_arg_has_vector): Add default
4317 2023-06-20 Richard Biener <rguenther@suse.de>
4319 * tree-ssa-dse.cc (dse_classify_store): When we found
4320 no defs and the basic-block with the original definition
4321 ends in __builtin_unreachable[_trap] the store is dead.
4323 2023-06-20 Richard Biener <rguenther@suse.de>
4325 * tree-ssa-phiprop.cc (phiprop_insert_phi): For simple loads
4326 keep the virtual SSA form up-to-date.
4328 2023-06-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4330 * config/aarch64/aarch64-simd.md (*aarch64_addp_same_reg<mode>):
4331 New define_insn_and_split.
4333 2023-06-20 Tamar Christina <tamar.christina@arm.com>
4335 * config/aarch64/aarch64.md (*mov<mode>_aarch64): Drop test comment.
4337 2023-06-20 Jan Beulich <jbeulich@suse.com>
4339 * config/i386/sse.md (vec_dupv2di): Correct %vmovddup input
4340 constraint. Add new AVX512F alternative.
4342 2023-06-20 Richard Biener <rguenther@suse.de>
4345 * dwarf2out.cc (process_scope_var): Continue processing
4346 the decl after setting a parent in case the existing DIE
4349 2023-06-20 Lehua Ding <lehua.ding@rivai.ai>
4351 * config/riscv/riscv.cc (riscv_scalable_vector_type_p): Delete.
4352 (riscv_arg_has_vector): Simplify.
4353 (riscv_pass_in_vector_p): Adjust warning message.
4355 2023-06-19 Jin Ma <jinma@linux.alibaba.com>
4357 * config/riscv/riscv.cc (riscv_compute_frame_info): Allocate frame for FCSR.
4358 (riscv_for_each_saved_reg): Save and restore FCSR in interrupt functions.
4359 * config/riscv/riscv.md (riscv_frcsr): New patterns.
4360 (riscv_fscsr): Likewise.
4362 2023-06-19 Toru Kisuki <tkisuki@tachyum.com>
4364 PR rtl-optimization/110305
4365 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
4366 Handle HONOR_SNANS for x + 0.0.
4368 2023-06-19 Jan Hubicka <jh@suse.cz>
4370 PR tree-optimization/109811
4371 PR tree-optimization/109849
4372 * passes.def: Add phiprop to early optimization passes.
4373 * tree-ssa-phiprop.cc: Allow clonning.
4375 2023-06-19 Tamar Christina <tamar.christina@arm.com>
4377 * config/aarch64/aarch64.md (arches): Add nosimd.
4378 (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Rewrite to
4381 2023-06-19 Tamar Christina <tamar.christina@arm.com>
4382 Omar Tahir <Omar.Tahir2@arm.com>
4384 * gensupport.cc (class conlist, add_constraints, add_attributes,
4385 skip_spaces, expect_char, preprocess_compact_syntax,
4386 parse_section_layout, parse_section, convert_syntax): New.
4387 (process_rtx): Check for conversion.
4388 * genoutput.cc (process_template): Check for unresolved iterators.
4389 (class data): Add compact_syntax_p.
4391 * gensupport.h (compact_syntax): New.
4392 (hash-set.h): Include.
4393 * doc/md.texi: Document it.
4395 2023-06-19 Uros Bizjak <ubizjak@gmail.com>
4397 * recog.h (check_asm_operands): Change return type from int to bool.
4398 (insn_invalid_p): Ditto.
4399 (verify_changes): Ditto.
4400 (apply_change_group): Ditto.
4401 (constrain_operands): Ditto.
4402 (constrain_operands_cached): Ditto.
4403 (validate_replace_rtx_subexp): Ditto.
4404 (validate_replace_rtx): Ditto.
4405 (validate_replace_rtx_part): Ditto.
4406 (validate_replace_rtx_part_nosimplify): Ditto.
4407 (added_clobbers_hard_reg_p): Ditto.
4408 (peep2_regno_dead_p): Ditto.
4409 (peep2_reg_dead_p): Ditto.
4410 (store_data_bypass_p): Ditto.
4411 (if_test_bypass_p): Ditto.
4412 * rtl.h (split_all_insns_noflow): Change
4413 return type from unsigned int to void.
4414 * genemit.cc (output_added_clobbers_hard_reg_p): Change return type
4415 of generated added_clobbers_hard_reg_p from int to bool and adjust
4416 function body accordingly. Change "used" variable type from
4418 * recog.cc (check_asm_operands): Change return type
4419 from int to bool and adjust function body accordingly.
4420 (insn_invalid_p): Ditto. Change "is_asm" variable to bool.
4421 (verify_changes): Change return type from int to bool.
4422 (apply_change_group): Change return type from int to bool
4423 and adjust function body accordingly.
4424 (validate_replace_rtx_subexp): Change return type from int to bool.
4425 (validate_replace_rtx): Ditto.
4426 (validate_replace_rtx_part): Ditto.
4427 (validate_replace_rtx_part_nosimplify): Ditto.
4428 (constrain_operands_cached): Ditto.
4429 (constrain_operands): Ditto. Change "lose" and "win"
4430 variables type from int to bool.
4431 (split_all_insns_noflow): Change return type from unsigned int
4432 to void and adjust function body accordingly.
4433 (peep2_regno_dead_p): Change return type from int to bool.
4434 (peep2_reg_dead_p): Ditto.
4435 (peep2_find_free_register): Change "success"
4436 variable type from int to bool
4437 (store_data_bypass_p_1): Change return type from int to bool.
4438 (store_data_bypass_p): Ditto.
4440 2023-06-19 Li Xu <xuli1@eswincomputing.com>
4442 * config/riscv/vector-iterators.md: zvfh/zvfhmin depends on the
4445 2023-06-19 Pan Li <pan2.li@intel.com>
4448 * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
4450 * config/riscv/vector-iterators.md: Remove VWLMUL1, VWLMUL1_ZVE64,
4451 VWLMUL1_ZVE32, VI_ZVE64, VI_ZVE32, VWI, VWI_ZVE64, VWI_ZVE32,
4452 VF_ZVE63 and VF_ZVE32.
4453 * config/riscv/vector.md
4454 (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Removed.
4455 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
4456 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>): Ditto.
4457 (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
4458 (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
4459 (@pred_widen_reduc_plus<v_su><VQI:mode><VHI_LMUL1:mode>): New pattern.
4460 (@pred_widen_reduc_plus<v_su><VHI:mode><VSI_LMUL1:mode>): Ditto.
4461 (@pred_widen_reduc_plus<v_su><VSI:mode><VDI_LMUL1:mode>): Ditto.
4462 (@pred_widen_reduc_plus<order><VHF:mode><VSF_LMUL1:mode>): Ditto.
4463 (@pred_widen_reduc_plus<order><VSF:mode><VDF_LMUL1:mode>): Ditto.
4465 2023-06-19 Pan Li <pan2.li@intel.com>
4468 * config/riscv/riscv-vector-builtins-bases.cc: Adjust expand for
4470 * config/riscv/vector-iterators.md: Add VHF, VSF, VDF,
4471 VHF_LMUL1, VSF_LMUL1, VDF_LMUL1, and remove unused attr.
4472 * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): Removed.
4473 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
4474 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
4475 (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
4476 (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
4477 (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
4478 (@pred_reduc_<reduc><VHF:mode><VHF_LMUL1:mode>): New pattern.
4479 (@pred_reduc_<reduc><VSF:mode><VSF_LMUL1:mode>): Ditto.
4480 (@pred_reduc_<reduc><VDF:mode><VDF_LMUL1:mode>): Ditto.
4481 (@pred_reduc_plus<order><VHF:mode><VHF_LMUL1:mode>): Ditto.
4482 (@pred_reduc_plus<order><VSF:mode><VSF_LMUL1:mode>): Ditto.
4483 (@pred_reduc_plus<order><VDF:mode><VDF_LMUL1:mode>): Ditto.
4485 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
4487 * config/gcn/gcn.cc (gcn_expand_divmod_libfunc): New function.
4488 (gcn_init_libfuncs): Add div and mod functions for all modes.
4489 Add placeholders for divmod functions.
4490 (TARGET_EXPAND_DIVMOD_LIBFUNC): Define.
4492 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
4494 * tree-vect-generic.cc: Include optabs-libfuncs.h.
4495 (get_compute_type): Check optab_libfunc.
4496 * tree-vect-stmts.cc: Include optabs-libfuncs.h.
4497 (vectorizable_operation): Check optab_libfunc.
4499 2023-06-19 Andrew Stubbs <ams@codesourcery.com>
4501 * config/gcn/gcn-protos.h (vgpr_4reg_mode_p): New function.
4502 * config/gcn/gcn-valu.md (V_4REG, V_4REG_ALT): New iterators.
4503 (V_MOV, V_MOV_ALT): Likewise.
4504 (scalar_mode, SCALAR_MODE): Add TImode.
4505 (vnsi, VnSI, vndi, VnDI): Likewise.
4506 (vec_merge, vec_merge_with_clobber, vec_merge_with_vcc): Use V_MOV.
4507 (mov<mode>, mov<mode>_unspec): Use V_MOV.
4508 (*mov<mode>_4reg): New insn.
4509 (mov<mode>_exec): New 4reg variant.
4510 (mov<mode>_sgprbase): Likewise.
4511 (reload_in<mode>, reload_out<mode>): Use V_MOV.
4512 (vec_set<mode>): Likewise.
4513 (vec_duplicate<mode><exec>): New 4reg variant.
4514 (vec_extract<mode><scalar_mode>): Likewise.
4515 (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
4516 (vec_extract<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
4517 (vec_extract<V_4REG:mode><V_4REG_ALT:mode>_nop): New 4reg variant.
4518 (fold_extract_last_<mode>): Use V_MOV.
4519 (vec_init<V_ALL:mode><V_ALL_ALT:mode>): Rename to ...
4520 (vec_init<V_MOV:mode><V_MOV_ALT:mode>): ... this, and use V_MOV.
4521 (gather_load<mode><vnsi>, gather<mode>_expr<exec>,
4522 gather<mode>_insn_1offset<exec>, gather<mode>_insn_1offset_ds<exec>,
4523 gather<mode>_insn_2offsets<exec>): Use V_MOV.
4524 (scatter_store<mode><vnsi>, scatter<mode>_expr<exec_scatter>,
4525 scatter<mode>_insn_1offset<exec_scatter>,
4526 scatter<mode>_insn_1offset_ds<exec_scatter>,
4527 scatter<mode>_insn_2offsets<exec_scatter>): Likewise.
4528 (maskload<mode>di, maskstore<mode>di, mask_gather_load<mode><vnsi>,
4529 mask_scatter_store<mode><vnsi>): Likewise.
4530 * config/gcn/gcn.cc (gcn_class_max_nregs): Use vgpr_4reg_mode_p.
4531 (gcn_hard_regno_mode_ok): Likewise.
4532 (GEN_VNM): Add TImode support.
4533 (USE_TI): New macro. Separate TImode operations from non-TImode ones.
4534 (gcn_vector_mode_supported_p): Add V64TImode, V32TImode, V16TImode,
4535 V8TImode, and V2TImode.
4536 (print_operand): Add 'J' and 'K' print codes.
4538 2023-06-19 Richard Biener <rguenther@suse.de>
4540 PR tree-optimization/110298
4541 * tree-ssa-loop-ivcanon.cc (tree_unroll_loops_completely):
4542 Clear number of iterations info before cleaning up the CFG.
4544 2023-06-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4546 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
4547 Simplify vec_concat of lowpart subreg and high part vec_select.
4549 2023-06-19 Tobias Burnus <tobias@codesourcery.com>
4551 * doc/invoke.texi (-foffload-options): Remove '-O3' from the examples.
4553 2023-06-19 Richard Sandiford <richard.sandiford@arm.com>
4555 * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
4556 Handle null niters_skip.
4558 2023-06-19 Richard Biener <rguenther@suse.de>
4560 * config/aarch64/aarch64.cc
4561 (aarch64_vector_costs::analyze_loop_vinfo): Fix reference
4562 to LOOP_VINFO_MASKS.
4564 2023-06-19 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
4567 * common/config/avr/avr-common.cc: Remove setting
4568 of OPT_fdelete_null_pointer_checks.
4569 * config/avr/avr.cc (avr_option_override): Clear
4570 flag_delete_null_pointer_checks if zero_address_valid.
4571 (avr_addr_space_zero_address_valid): New function.
4572 (TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID): Provide target
4575 2023-06-19 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
4576 Robin Dapp <rdapp.gcc@gmail.com>
4578 * doc/md.texi: Add len_mask{load,store}.
4579 * genopinit.cc (main): Ditto.
4581 * internal-fn.cc (len_maskload_direct): Ditto.
4582 (len_maskstore_direct): Ditto.
4583 (expand_call_mem_ref): Ditto.
4584 (expand_partial_load_optab_fn): Ditto.
4585 (expand_len_maskload_optab_fn): Ditto.
4586 (expand_partial_store_optab_fn): Ditto.
4587 (expand_len_maskstore_optab_fn): Ditto.
4588 (direct_len_maskload_optab_supported_p): Ditto.
4589 (direct_len_maskstore_optab_supported_p): Ditto.
4590 * internal-fn.def (LEN_MASK_LOAD): Ditto.
4591 (LEN_MASK_STORE): Ditto.
4592 * optabs.def (OPTAB_CD): Ditto.
4594 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
4596 * config/riscv/autovec.md (<optab><mode>2): Add unop expanders.
4598 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
4600 * config/riscv/autovec.md (<optab><mode>3): Implement binop
4602 * config/riscv/riscv-protos.h (emit_vlmax_fp_insn): Declare.
4603 (enum vxrm_field_enum): Rename this...
4604 (enum fixed_point_rounding_mode): ...to this.
4605 (enum frm_field_enum): Rename this...
4606 (enum floating_point_rounding_mode): ...to this.
4607 * config/riscv/riscv-v.cc (emit_vlmax_fp_insn): New function
4608 * config/riscv/riscv.cc (riscv_const_insns): Clarify const
4610 (riscv_libgcc_floating_mode_supported_p): Adjust comment.
4611 (riscv_excess_precision): Do not convert to float for ZVFH.
4612 * config/riscv/vector-iterators.md: Add VF_AUTO iterator.
4614 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
4616 * config/riscv/vector-iterators.md: Add VI_QH iterator.
4617 * config/riscv/autovec-opt.md
4618 (@pred_extract_first_sextdi<mode>): New vmv.x.s pattern
4619 that includes sign extension.
4620 (@pred_extract_first_sextsi<mode>): Dito for SImode.
4622 2023-06-19 Robin Dapp <rdapp@ventanamicro.com>
4624 * config/riscv/autovec.md (vec_set<mode>): Implement.
4625 (vec_extract<mode><vel>): Implement.
4626 * config/riscv/riscv-protos.h (enum insn_type): Add slide insn.
4627 (emit_vlmax_slide_insn): Declare.
4628 (emit_nonvlmax_slide_tu_insn): Declare.
4629 (emit_scalar_move_insn): Export.
4630 (emit_nonvlmax_integer_move_insn): Export.
4631 * config/riscv/riscv-v.cc (emit_vlmax_slide_insn): New function.
4632 (emit_nonvlmax_slide_tu_insn): New function.
4633 (emit_vlmax_masked_mu_insn): No change.
4634 (emit_vlmax_integer_move_insn): Export.
4636 2023-06-19 Richard Biener <rguenther@suse.de>
4638 * tree-vectorizer.h (enum vect_partial_vector_style): New.
4639 (_loop_vec_info::partial_vector_style): Likewise.
4640 (LOOP_VINFO_PARTIAL_VECTORS_STYLE): Likewise.
4641 (rgroup_controls::compare_type): Add.
4642 (vec_loop_masks): Change from a typedef to auto_vec<>
4644 * tree-vect-loop-manip.cc (vect_set_loop_condition_partial_vectors):
4645 Adjust. Convert niters_skip to compare_type.
4646 (vect_set_loop_condition_partial_vectors_avx512): New function
4647 implementing the AVX512 partial vector codegen.
4648 (vect_set_loop_condition): Dispatch to the correct
4649 vect_set_loop_condition_partial_vectors_* function based on
4650 LOOP_VINFO_PARTIAL_VECTORS_STYLE.
4651 (vect_prepare_for_masked_peels): Compute LOOP_VINFO_MASK_SKIP_NITERS
4652 in the original niter type.
4653 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Initialize
4654 partial_vector_style.
4655 (can_produce_all_loop_masks_p): Adjust.
4656 (vect_verify_full_masking): Produce the rgroup_controls vector
4657 here. Set LOOP_VINFO_PARTIAL_VECTORS_STYLE on success.
4658 (vect_verify_full_masking_avx512): New function implementing
4659 verification of AVX512 style masking.
4660 (vect_verify_loop_lens): Set LOOP_VINFO_PARTIAL_VECTORS_STYLE.
4661 (vect_analyze_loop_2): Also try AVX512 style masking.
4663 (vect_estimate_min_profitable_iters): Implement AVX512 style
4664 mask producing cost.
4665 (vect_record_loop_mask): Do not build the rgroup_controls
4666 vector here but record masks in a hash-set.
4667 (vect_get_loop_mask): Implement AVX512 style mask query,
4668 complementing the existing while_ult style.
4670 2023-06-19 Richard Biener <rguenther@suse.de>
4672 * tree-vectorizer.h (vect_get_loop_mask): Add loop_vec_info
4674 * tree-vect-loop.cc (vect_get_loop_mask): Likewise.
4675 (vectorize_fold_left_reduction): Adjust.
4676 (vect_transform_reduction): Likewise.
4677 (vectorizable_live_operation): Likewise.
4678 * tree-vect-stmts.cc (vectorizable_call): Likewise.
4679 (vectorizable_operation): Likewise.
4680 (vectorizable_store): Likewise.
4681 (vectorizable_load): Likewise.
4682 (vectorizable_condition): Likewise.
4684 2023-06-19 Senthil Kumar Selvaraj <saaadhu@gcc.gnu.org>
4687 * config/avr/avr.opt (mgas-isr-prologues, mmain-is-OS_task):
4688 Add Optimization option property.
4690 2023-06-19 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
4692 * config/xtensa/xtensa.cc (xtensa_constantsynth_2insn):
4693 Add new pattern for the abovementioned case.
4695 2023-06-19 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
4697 * config/xtensa/xtensa.cc
4698 (TARGET_MEMORY_MOVE_COST, xtensa_memory_move_cost): Remove.
4700 2023-06-19 Jiufu Guo <guojiufu@linux.ibm.com>
4702 * config/rs6000/rs6000.cc (TARGET_CONST_ANCHOR): New define.
4704 2023-06-19 Jiufu Guo <guojiufu@linux.ibm.com>
4706 * cse.cc (try_const_anchors): Check SCALAR_INT_MODE.
4708 2023-06-19 liuhongt <hongtao.liu@intel.com>
4711 * config/i386/sse.md (<sse2_avx2>_packsswb<mask_name>):
4713 (sse2_packsswb<mask_name>): .. this, ..
4714 (avx2_packsswb<mask_name>): .. this and ..
4715 (avx512bw_packsswb<mask_name>): .. this.
4716 (<sse2_avx2>_packssdw<mask_name>): Substitute with ..
4717 (sse2_packssdw<mask_name>): .. this, ..
4718 (avx2_packssdw<mask_name>): .. this and ..
4719 (avx512bw_packssdw<mask_name>): .. this.
4721 2023-06-19 liuhongt <hongtao.liu@intel.com>
4724 * config/i386/i386-expand.cc (ix86_split_mmx_pack): Use
4725 UNSPEC_US_TRUNCATE instead of original us_truncate for
4727 * config/i386/mmx.md (mmx_pack<s_trunsuffix>swb): Substitute
4729 (mmx_packsswb): .. this and ..
4730 (mmx_packuswb): .. this.
4731 (mmx_packusdw): Use UNSPEC_US_TRUNCATE instead of original
4733 (s_trunsuffix): Removed code iterator.
4734 (any_s_truncate): Ditto.
4735 * config/i386/sse.md (<sse2_avx2>_packuswb<mask_name>): Use
4736 UNSPEC_US_TRUNCATE instead of original us_truncate.
4737 (<sse4_1_avx2>_packusdw<mask_name>): Ditto.
4738 * config/i386/i386.md (UNSPEC_US_TRUNCATE): New unspec_c_enum.
4740 2023-06-18 Pan Li <pan2.li@intel.com>
4742 * config/riscv/riscv-vector-builtins-bases.cc: Fix one typo.
4744 2023-06-18 Uros Bizjak <ubizjak@gmail.com>
4746 * rtl.h (*rtx_equal_p_callback_function):
4747 Change return type from int to bool.
4748 (rtx_equal_p): Ditto.
4749 (*hash_rtx_callback_function): Ditto.
4750 * rtl.cc (rtx_equal_p): Change return type from int to bool
4751 and adjust function body accordingly.
4752 * early-remat.cc (scratch_equal): Ditto.
4753 * sel-sched-ir.cc (skip_unspecs_callback): Ditto.
4754 (hash_with_unspec_callback): Ditto.
4756 2023-06-18 Jeff Law <jlaw@ventanamicro.com>
4758 * config/arc/arc.md (movqi_insn): Allow certain constants to
4759 be stored into memory in the pattern's condition.
4760 (movsf_insn): Similarly.
4762 2023-06-18 Honza <jh@ryzen3.suse.cz>
4764 PR tree-optimization/109849
4765 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Add new parameter
4766 ES; handle ipa_predicate::not_sra_candidate.
4767 (evaluate_properties_for_edge): Pass es to
4768 evaluate_conditions_for_known_args.
4769 (ipa_fn_summary_t::duplicate): Handle sra candidates.
4770 (dump_ipa_call_summary): Dump points_to_possible_sra_candidate.
4771 (load_or_store_of_ptr_parameter): New function.
4772 (points_to_possible_sra_candidate_p): New function.
4773 (analyze_function_body): Initialize points_to_possible_sra_candidate;
4774 determine sra predicates.
4775 (estimate_ipcp_clone_size_and_time): Update call of
4776 evaluate_conditions_for_known_args.
4777 (remap_edge_params): Update points_to_possible_sra_candidate.
4778 (read_ipa_call_summary): Stream points_to_possible_sra_candidate
4779 (write_ipa_call_summary): Likewise.
4780 * ipa-predicate.cc (ipa_predicate::add_clause): Handle not_sra_candidate.
4781 (dump_condition): Dump it.
4782 * ipa-predicate.h (struct inline_param_summary): Add
4783 points_to_possible_sra_candidate.
4785 2023-06-18 Roger Sayle <roger@nextmovesoftware.com>
4787 * config/i386/i386-expand.cc (ix86_expand_carry): New helper
4788 function for setting the carry flag.
4789 (ix86_expand_builtin) <handlecarry>: Use it here.
4790 * config/i386/i386-protos.h (ix86_expand_carry): Prototype here.
4791 * config/i386/i386.md (uaddc<mode>5): Use ix86_expand_carry.
4792 (usubc<mode>5): Likewise.
4794 2023-06-18 Roger Sayle <roger@nextmovesoftware.com>
4796 * config/i386/i386.md (*concat<mode><dwi>3_1): Use QImode
4797 for the immediate constant shift count.
4798 (*concat<mode><dwi>3_2): Likewise.
4799 (*concat<mode><dwi>3_3): Likewise.
4800 (*concat<mode><dwi>3_4): Likewise.
4801 (*concat<mode><dwi>3_5): Likewise.
4802 (*concat<mode><dwi>3_6): Likewise.
4804 2023-06-18 Uros Bizjak <ubizjak@gmail.com>
4806 * cse.cc (hash_rtx_cb): Rename to hash_rtx.
4808 * early-remat.cc (remat_candidate_hasher::equal): Update
4809 to call rtx_equal_p with rtx_equal_p_callback_function argument.
4810 * rtl.cc (rtx_equal_p_cb): Rename to rtx_equal_p.
4811 (rtx_equal_p): Remove.
4812 * rtl.h (rtx_equal_p): Add rtx_equal_p_callback_function
4813 argument with NULL default value.
4814 (rtx_equal_p_cb): Remove function declaration.
4815 (hash_rtx_cb): Ditto.
4816 (hash_rtx): Add hash_rtx_callback_function argument
4817 with NULL default value.
4818 * sel-sched-ir.cc (free_nop_pool): Update function comment.
4819 (skip_unspecs_callback): Ditto.
4820 (vinsn_init): Update to call hash_rtx with
4821 hash_rtx_callback_function argument.
4822 (vinsn_equal_p): Ditto.
4824 2023-06-18 yulong <shiyulong@iscas.ac.cn>
4826 * config/riscv/genrvv-type-indexer.cc (valid_type): Enable FP16 tuple.
4827 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
4828 (ADJUST_ALIGNMENT): Ditto.
4829 (RVV_TUPLE_PARTIAL_MODES): Ditto.
4830 (ADJUST_NUNITS): Ditto.
4831 * config/riscv/riscv-vector-builtins-types.def (vfloat16mf4x2_t):
4833 (vfloat16mf4x3_t): Ditto.
4834 (vfloat16mf4x4_t): Ditto.
4835 (vfloat16mf4x5_t): Ditto.
4836 (vfloat16mf4x6_t): Ditto.
4837 (vfloat16mf4x7_t): Ditto.
4838 (vfloat16mf4x8_t): Ditto.
4839 (vfloat16mf2x2_t): Ditto.
4840 (vfloat16mf2x3_t): Ditto.
4841 (vfloat16mf2x4_t): Ditto.
4842 (vfloat16mf2x5_t): Ditto.
4843 (vfloat16mf2x6_t): Ditto.
4844 (vfloat16mf2x7_t): Ditto.
4845 (vfloat16mf2x8_t): Ditto.
4846 (vfloat16m1x2_t): Ditto.
4847 (vfloat16m1x3_t): Ditto.
4848 (vfloat16m1x4_t): Ditto.
4849 (vfloat16m1x5_t): Ditto.
4850 (vfloat16m1x6_t): Ditto.
4851 (vfloat16m1x7_t): Ditto.
4852 (vfloat16m1x8_t): Ditto.
4853 (vfloat16m2x2_t): Ditto.
4854 (vfloat16m2x3_t): Ditto.
4855 (vfloat16m2x4_t): Ditto.
4856 (vfloat16m4x2_t): Ditto.
4857 * config/riscv/riscv-vector-builtins.def (vfloat16mf4x2_t): New macro.
4858 (vfloat16mf4x3_t): Ditto.
4859 (vfloat16mf4x4_t): Ditto.
4860 (vfloat16mf4x5_t): Ditto.
4861 (vfloat16mf4x6_t): Ditto.
4862 (vfloat16mf4x7_t): Ditto.
4863 (vfloat16mf4x8_t): Ditto.
4864 (vfloat16mf2x2_t): Ditto.
4865 (vfloat16mf2x3_t): Ditto.
4866 (vfloat16mf2x4_t): Ditto.
4867 (vfloat16mf2x5_t): Ditto.
4868 (vfloat16mf2x6_t): Ditto.
4869 (vfloat16mf2x7_t): Ditto.
4870 (vfloat16mf2x8_t): Ditto.
4871 (vfloat16m1x2_t): Ditto.
4872 (vfloat16m1x3_t): Ditto.
4873 (vfloat16m1x4_t): Ditto.
4874 (vfloat16m1x5_t): Ditto.
4875 (vfloat16m1x6_t): Ditto.
4876 (vfloat16m1x7_t): Ditto.
4877 (vfloat16m1x8_t): Ditto.
4878 (vfloat16m2x2_t): Ditto.
4879 (vfloat16m2x3_t): Ditto.
4880 (vfloat16m2x4_t): Ditto.
4881 (vfloat16m4x2_t): Ditto.
4882 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): New.
4883 * config/riscv/riscv.md: New.
4884 * config/riscv/vector-iterators.md: New.
4886 2023-06-17 Roger Sayle <roger@nextmovesoftware.com>
4888 * config/i386/i386-expand.cc (ix86_expand_move): Check that OP1 is
4889 CONST_WIDE_INT_P before calling ix86_convert_wide_int_to_broadcast.
4890 Generalize special case for converting TImode to V1TImode to handle
4891 all 128-bit vector conversions.
4893 2023-06-17 Costas Argyris <costas.argyris@gmail.com>
4895 * gcc-ar.cc (main): Refactor to slightly reduce code
4896 duplication. Avoid unnecessary elements in nargv.
4898 2023-06-16 Pan Li <pan2.li@intel.com>
4901 * config/riscv/riscv-vector-builtins-bases.cc: Add ret_mode for
4902 integer reduction expand.
4903 * config/riscv/vector-iterators.md: Add VQI, VHI, VSI and VDI,
4904 and the LMUL1 attr respectively.
4905 * config/riscv/vector.md
4906 (@pred_reduc_<reduc><mode><vlmul1>): Removed.
4907 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Likewise.
4908 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Likewise.
4909 (@pred_reduc_<reduc><VQI:mode><VQI_LMUL1:mode>): New pattern.
4910 (@pred_reduc_<reduc><VHI:mode><VHI_LMUL1:mode>): Likewise.
4911 (@pred_reduc_<reduc><VSI:mode><VSI_LMUL1:mode>): Likewise.
4912 (@pred_reduc_<reduc><VDI:mode><VDI_LMUL1:mode>): Likewise.
4914 2023-06-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
4917 * config/riscv/riscv-vsetvl.cc (insert_vsetvl): Fix bug.
4919 2023-06-16 Jakub Jelinek <jakub@redhat.com>
4922 * builtin-types.def (BT_FN_UINT_UINT_UINT_UINT_UINTPTR,
4923 BT_FN_ULONG_ULONG_ULONG_ULONG_ULONGPTR,
4924 BT_FN_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONG_ULONGLONGPTR): New
4926 * builtins.def (BUILT_IN_ADDC, BUILT_IN_ADDCL, BUILT_IN_ADDCLL,
4927 BUILT_IN_SUBC, BUILT_IN_SUBCL, BUILT_IN_SUBCLL): New builtins.
4928 * builtins.cc (fold_builtin_addc_subc): New function.
4929 (fold_builtin_varargs): Handle BUILT_IN_{ADD,SUB}C{,L,LL}.
4930 * doc/extend.texi (__builtin_addc, __builtin_subc): Document.
4932 2023-06-16 Jakub Jelinek <jakub@redhat.com>
4934 PR tree-optimization/110271
4935 * tree-ssa-math-opts.cc (math_opts_dom_walker::after_dom_children)
4936 <case PLUS_EXPR>: Ignore return value from match_arith_overflow,
4937 instead call match_uaddc_usubc only if gsi_stmt (gsi) is still stmt.
4939 2023-06-16 Martin Jambor <mjambor@suse.cz>
4941 * configure: Regenerate.
4943 2023-06-16 Roger Sayle <roger@nextmovesoftware.com>
4944 Uros Bizjak <ubizjak@gmail.com>
4947 * config/i386/i386.md (*add<dwi>3_doubleword_concat): New
4948 define_insn_and_split combine *add<dwi>3_doubleword with
4949 a *concat<mode><dwi>3 for more efficient lowering after reload.
4951 2023-06-16 Vladimir N. Makarov <vmakarov@redhat.com>
4953 * ira-lives.cc: Include except.h.
4954 (process_bb_node_lives): Ignore conflicts from cleanup exceptions
4955 when the pseudo does not live at the exception landing pad.
4957 2023-06-16 Alex Coplan <alex.coplan@arm.com>
4959 * doc/invoke.texi: Document -Welaborated-enum-base.
4961 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4963 * config/aarch64/aarch64-simd-builtins.def (shrn2_n): Rename builtins to...
4964 (ushrn2_n): ... This.
4965 (sqshrn2_n): Rename builtins to...
4966 (ssqshrn2_n): ... This.
4967 (uqshrn2_n): Rename builtins to...
4968 (uqushrn2_n): ... This.
4969 * config/aarch64/arm_neon.h (vqshrn_high_n_s16): Adjust for the above.
4970 (vqshrn_high_n_s32): Likewise.
4971 (vqshrn_high_n_s64): Likewise.
4972 (vqshrn_high_n_u16): Likewise.
4973 (vqshrn_high_n_u32): Likewise.
4974 (vqshrn_high_n_u64): Likewise.
4975 (vshrn_high_n_s16): Likewise.
4976 (vshrn_high_n_s32): Likewise.
4977 (vshrn_high_n_s64): Likewise.
4978 (vshrn_high_n_u16): Likewise.
4979 (vshrn_high_n_u32): Likewise.
4980 (vshrn_high_n_u64): Likewise.
4981 * config/aarch64/aarch64-simd.md (aarch64_<shrn_op>shrn2_n<mode>_insn_le):
4983 (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_le): ... This.
4984 Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
4985 (aarch64_<shrn_op>shrn2_n<mode>_insn_be): Rename to...
4986 (aarch64_<shrn_op><sra_op>shrn2_n<mode>_insn_be): ... This.
4987 Use SHIFTRT iterator and AARCH64_VALID_SHRN_OP check.
4988 (aarch64_<shrn_op>shrn2_n<mode>): Rename to...
4989 (aarch64_<shrn_op><sra_op>shrn2_n<mode>): ... This.
4990 Update expander for the above.
4992 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4994 * config/aarch64/aarch64-simd-builtins.def (shrn2): Rename builtins to...
4995 (shrn2_n): ... This.
4996 (rshrn2): Rename builtins to...
4997 (rshrn2_n): ... This.
4998 * config/aarch64/arm_neon.h (vrshrn_high_n_s16): Adjust for the above.
4999 (vrshrn_high_n_s32): Likewise.
5000 (vrshrn_high_n_s64): Likewise.
5001 (vrshrn_high_n_u16): Likewise.
5002 (vrshrn_high_n_u32): Likewise.
5003 (vrshrn_high_n_u64): Likewise.
5004 (vshrn_high_n_s16): Likewise.
5005 (vshrn_high_n_s32): Likewise.
5006 (vshrn_high_n_s64): Likewise.
5007 (vshrn_high_n_u16): Likewise.
5008 (vshrn_high_n_u32): Likewise.
5009 (vshrn_high_n_u64): Likewise.
5010 * config/aarch64/aarch64-simd.md (*aarch64_<srn_op>shrn<mode>2_vect_le):
5012 (*aarch64_<srn_op>shrn<mode>2_vect_be): Likewise.
5013 (aarch64_shrn2<mode>_insn_le): Likewise.
5014 (aarch64_shrn2<mode>_insn_be): Likewise.
5015 (aarch64_shrn2<mode>): Likewise.
5016 (aarch64_rshrn2<mode>_insn_le): Likewise.
5017 (aarch64_rshrn2<mode>_insn_be): Likewise.
5018 (aarch64_rshrn2<mode>): Likewise.
5019 (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_le): Likewise.
5020 (aarch64_<shrn_op>shrn2_n<mode>_insn_le): New define_insn.
5021 (aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_be): Delete.
5022 (aarch64_<shrn_op>shrn2_n<mode>_insn_be): New define_insn.
5023 (aarch64_<sur>q<r>shr<u>n2_n<mode>): Delete.
5024 (aarch64_<shrn_op>shrn2_n<mode>): New define_expand.
5025 (aarch64_<shrn_op>rshrn2_n<mode>_insn_le): New define_insn.
5026 (aarch64_<shrn_op>rshrn2_n<mode>_insn_be): New define_insn.
5027 (aarch64_<shrn_op>rshrn2_n<mode>): New define_expand.
5028 (aarch64_sqshrun2_n<mode>_insn_le): New define_insn.
5029 (aarch64_sqshrun2_n<mode>_insn_be): New define_insn.
5030 (aarch64_sqshrun2_n<mode>): New define_expand.
5031 (aarch64_sqrshrun2_n<mode>_insn_le): New define_insn.
5032 (aarch64_sqrshrun2_n<mode>_insn_be): New define_insn.
5033 (aarch64_sqrshrun2_n<mode>): New define_expand.
5034 * config/aarch64/iterators.md (UNSPEC_SQSHRUN, UNSPEC_SQRSHRUN,
5035 UNSPEC_SQSHRN, UNSPEC_UQSHRN, UNSPEC_SQRSHRN, UNSPEC_UQRSHRN):
5036 Delete unspec values.
5037 (VQSHRN_N): Delete int iterator.
5039 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5041 * config/aarch64/aarch64.h (AARCH64_VALID_SHRN_OP): Define.
5042 * config/aarch64/aarch64-simd.md
5043 (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): Rename to...
5044 (*aarch64_<shrn_op><shrn_s>shrn_n<mode>_insn<vczle><vczbe>): ... This.
5045 Use SHIFTRT iterator and add AARCH64_VALID_SHRN_OP to condition.
5046 * config/aarch64/iterators.md (shrn_s): New code attribute.
5048 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5050 * config/aarch64/aarch64-simd.md (aarch64_<sur>q<r>shr<u>n_n<mode>):
5052 (aarch64_<shrn_op>shrn_n<mode>): ... This. Reimplement with RTL codes.
5053 (*aarch64_<shrn_op>rshrn_n<mode>_insn): New define_insn.
5054 (aarch64_sqrshrun_n<mode>_insn): Likewise.
5055 (aarch64_sqshrun_n<mode>_insn): Likewise.
5056 (aarch64_<shrn_op>rshrn_n<mode>): New define_expand.
5057 (aarch64_sqshrun_n<mode>): Likewise.
5058 (aarch64_sqrshrun_n<mode>): Likewise.
5059 * config/aarch64/iterators.md (V2XWIDE): Add HI and SI modes.
5061 2023-06-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5063 * config/aarch64/aarch64-simd-builtins.def (shrn): Rename builtins to...
5065 (rshrn): Rename builtins to...
5066 (rshrn_n): ... This.
5067 * config/aarch64/arm_neon.h (vshrn_n_s16): Adjust for the above.
5068 (vshrn_n_s32): Likewise.
5069 (vshrn_n_s64): Likewise.
5070 (vshrn_n_u16): Likewise.
5071 (vshrn_n_u32): Likewise.
5072 (vshrn_n_u64): Likewise.
5073 (vrshrn_n_s16): Likewise.
5074 (vrshrn_n_s32): Likewise.
5075 (vrshrn_n_s64): Likewise.
5076 (vrshrn_n_u16): Likewise.
5077 (vrshrn_n_u32): Likewise.
5078 (vrshrn_n_u64): Likewise.
5079 * config/aarch64/aarch64-simd.md
5080 (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): Delete.
5081 (aarch64_shrn<mode>): Likewise.
5082 (aarch64_rshrn<mode><vczle><vczbe>_insn): Likewise.
5083 (aarch64_rshrn<mode>): Likewise.
5084 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): Likewise.
5085 (aarch64_<sur>q<r>shr<u>n_n<mode>): Likewise.
5086 (*aarch64_<shrn_op>shrn_n<mode>_insn<vczle><vczbe>): New define_insn.
5087 (*aarch64_<shrn_op>rshrn_n<mode>_insn<vczle><vczbe>): Likewise.
5088 (*aarch64_sqshrun_n<mode>_insn<vczle><vczbe>): Likewise.
5089 (*aarch64_sqrshrun_n<mode>_insn<vczle><vczbe>): Likewise.
5090 (aarch64_<shrn_op>shrn_n<mode>): New define_expand.
5091 (aarch64_<shrn_op>rshrn_n<mode>): Likewise.
5092 (aarch64_sqshrun_n<mode>): Likewise.
5093 (aarch64_sqrshrun_n<mode>): Likewise.
5094 * config/aarch64/iterators.md (ALL_TRUNC): New code iterator.
5095 (TRUNCEXTEND): New code attribute.
5096 (TRUNC_SHIFT): Likewise.
5097 (shrn_op): Likewise.
5098 * config/aarch64/predicates.md (aarch64_simd_umax_quarter_mode):
5101 2023-06-16 Pan Li <pan2.li@intel.com>
5103 * config/riscv/riscv-vsetvl.cc
5104 (pass_vsetvl::global_eliminate_vsetvl_insn): Initialize var by NULL.
5106 2023-06-16 Richard Biener <rguenther@suse.de>
5108 PR tree-optimization/110278
5109 * match.pd (uns < (typeof uns)(uns != 0) -> false): New.
5110 (x != (typeof x)(x == 0) -> true): Likewise.
5112 2023-06-16 Pali Rohár <pali@kernel.org>
5114 * config/i386/mingw-w64.h (CPP_SPEC): Adjust for -mcrtdll=.
5115 (REAL_LIBGCC_SPEC): New define.
5116 * config/i386/mingw.opt: Add mcrtdll=
5117 * config/i386/mingw32.h (CPP_SPEC): Adjust for -mcrtdll=.
5118 (REAL_LIBGCC_SPEC): Adjust for -mcrtdll=.
5119 (STARTFILE_SPEC): Adjust for -mcrtdll=.
5120 * doc/invoke.texi: Add mcrtdll= documentation.
5122 2023-06-16 Simon Dardis <simon.dardis@imgtec.com>
5124 * config/mips/mips.cc (enum mips_code_readable_setting):New enmu.
5125 (mips_handle_code_readable_attr):New static function.
5126 (mips_get_code_readable_attr):New static enum function.
5127 (mips_set_current_function):Set the code_readable mode.
5128 (mips_option_override):Same as above.
5129 * doc/extend.texi:Document code_readable.
5131 2023-06-16 Richard Biener <rguenther@suse.de>
5133 PR tree-optimization/110269
5134 * fold-const.cc (fold_binary_loc): Merge x != 0 folding
5135 with tree_expr_nonzero_p ...
5136 * match.pd (cmp (convert? addr@0) integer_zerop): With this
5139 2023-06-15 Marek Polacek <polacek@redhat.com>
5141 * Makefile.in: Set LD_PICFLAG. Use it. Set enable_host_pie.
5142 Remove NO_PIE_CFLAGS and NO_PIE_FLAG. Pass LD_PICFLAG to
5143 ALL_LINKERFLAGS. Use the "pic" build of libiberty if --enable-host-pie.
5144 * configure.ac (--enable-host-shared): Don't set PICFLAG here.
5145 (--enable-host-pie): New check. Set PICFLAG and LD_PICFLAG after this
5147 * configure: Regenerate.
5148 * doc/install.texi: Document --enable-host-pie.
5150 2023-06-15 Manolis Tsamis <manolis.tsamis@vrull.eu>
5152 * regcprop.cc (maybe_mode_change): Enable stack pointer
5155 2023-06-15 Andrew MacLeod <amacleod@redhat.com>
5157 PR tree-optimization/110266
5158 * gimple-range-fold.cc (adjust_imagpart_expr): Check for integer
5160 (adjust_realpart_expr): Ditto.
5162 2023-06-15 Jan Beulich <jbeulich@suse.com>
5164 * config/i386/sse.md (<avx512>_vec_dup<mode><mask_name>): Use
5167 2023-06-15 Jan Beulich <jbeulich@suse.com>
5169 * config/i386/constraints.md: Mention k and r for B.
5171 2023-06-15 Lulu Cheng <chenglulu@loongson.cn>
5172 Andrew Pinski <apinski@marvell.com>
5175 * config/loongarch/loongarch.md: Modify the register constraints for template
5176 "jumptable" and "indirect_jump" from "r" to "e".
5178 2023-06-15 Xi Ruoyao <xry111@xry111.site>
5180 * config/loongarch/loongarch-tune.h (loongarch_align): New
5182 * config/loongarch/loongarch-def.h (loongarch_cpu_align): New
5184 * config/loongarch/loongarch-def.c (loongarch_cpu_align): Define
5186 * config/loongarch/loongarch.cc
5187 (loongarch_option_override_internal): Set the value of
5188 -falign-functions= if -falign-functions is enabled but no value
5189 is given. Likewise for -falign-labels=.
5191 2023-06-15 Jakub Jelinek <jakub@redhat.com>
5194 * internal-fn.def (UADDC, USUBC): New internal functions.
5195 * internal-fn.cc (expand_UADDC, expand_USUBC): New functions.
5196 (commutative_ternary_fn_p): Return true also for IFN_UADDC.
5197 * optabs.def (uaddc5_optab, usubc5_optab): New optabs.
5198 * tree-ssa-math-opts.cc (uaddc_cast, uaddc_ne0, uaddc_is_cplxpart,
5199 match_uaddc_usubc): New functions.
5200 (math_opts_dom_walker::after_dom_children): Call match_uaddc_usubc
5201 for PLUS_EXPR, MINUS_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR unless
5202 other optimizations have been successful for those.
5203 * gimple-fold.cc (gimple_fold_call): Handle IFN_UADDC and IFN_USUBC.
5204 * fold-const-call.cc (fold_const_call): Likewise.
5205 * gimple-range-fold.cc (adjust_imagpart_expr): Likewise.
5206 * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Likewise.
5207 * doc/md.texi (uaddc<mode>5, usubc<mode>5): Document new named
5209 * config/i386/i386.md (uaddc<mode>5, usubc<mode>5): New
5210 define_expand patterns.
5211 (*setcc_qi_addqi3_cconly_overflow_1_<mode>, *setccc): Split
5212 into NOTE_INSN_DELETED note rather than nop instruction.
5213 (*setcc_qi_negqi_ccc_1_<mode>, *setcc_qi_negqi_ccc_2_<mode>):
5216 2023-06-15 Jakub Jelinek <jakub@redhat.com>
5219 * config/i386/i386.md (subborrow<mode>): Add alternative with
5220 memory destination and add for it define_peephole2
5221 TARGET_READ_MODIFY_WRITE/-Os patterns to prefer using memory
5222 destination in these patterns.
5224 2023-06-15 Jakub Jelinek <jakub@redhat.com>
5227 * config/i386/i386.md (*sub<mode>_3, @add<mode>3_carry,
5228 addcarry<mode>, @sub<mode>3_carry, *add<mode>3_cc_overflow_1): Add
5229 define_peephole2 TARGET_READ_MODIFY_WRITE/-Os patterns to prefer
5230 using memory destination in these patterns.
5232 2023-06-15 Jakub Jelinek <jakub@redhat.com>
5234 * gimple-fold.cc (gimple_fold_call): Move handling of arg0
5235 as well as arg1 INTEGER_CSTs for .UBSAN_CHECK_{ADD,SUB,MUL}
5236 and .{ADD,SUB,MUL}_OVERFLOW calls from here...
5237 * fold-const-call.cc (fold_const_call): ... here.
5239 2023-06-15 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
5241 * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>):
5242 Rename to <su>abd<mode>3.
5243 * config/aarch64/aarch64-sve.md (<su>abd<mode>_3): Rename
5246 2023-06-15 Oluwatamilore Adebayo <oluwatamilore.adebayo@arm.com>
5248 * doc/md.texi (sabd, uabd): Document them.
5249 * internal-fn.def (ABD): Use new optab.
5250 * optabs.def (sabd_optab, uabd_optab): New optabs,
5251 * tree-vect-patterns.cc (vect_recog_absolute_difference):
5252 Recognize the following idiom abs (a - b).
5253 (vect_recog_sad_pattern): Refactor to use
5254 vect_recog_absolute_difference.
5255 (vect_recog_abd_pattern): Use patterns found by
5256 vect_recog_absolute_difference to build a new ABD
5259 2023-06-15 chenxiaolong <chenxl04200420@163.com>
5261 * config/loongarch/loongarch.h (LARCH_CALL_RATIO): Modify the value
5262 of macro LARCH_CALL_RATIO on LoongArch to make it perform optimally.
5264 2023-06-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5266 * config/riscv/riscv-v.cc (shuffle_merge_patterns): New pattern.
5267 (expand_vec_perm_const_1): Add merge optmization.
5269 2023-06-15 Lehua Ding <lehua.ding@rivai.ai>
5272 * config/riscv/riscv.cc (riscv_get_arg_info): Return NULL_RTX for vector mode
5273 (riscv_pass_by_reference): Return true for vector mode
5275 2023-06-15 Pan Li <pan2.li@intel.com>
5277 * config/riscv/autovec-opt.md: Align the predictor sytle.
5278 * config/riscv/autovec.md: Ditto.
5280 2023-06-15 Pan Li <pan2.li@intel.com>
5282 * config/riscv/riscv-v.cc (rvv_builder::get_merge_scalar_mask):
5283 Take elen instead of scalar BITS_PER_WORD.
5284 (expand_vector_init_merge_repeating_sequence): Use inner_bits_size
5285 instead of scaler BITS_PER_WORD.
5287 2023-06-14 Jivan Hakobyan <jivanhakobyan9@gmail.com>
5289 * config/moxie/uclinux.h (MFWRAP_SPEC): Remove
5291 2023-06-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5293 * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold):
5294 Fix signed comparison warning in loop from npats to enelts.
5296 2023-06-14 Thomas Schwinge <thomas@codesourcery.com>
5298 * gcc.cc (driver_handle_option): Forward host '-lgfortran', '-lm'
5299 to offloading compilation.
5300 * config/gcn/mkoffload.cc (main): Adjust.
5301 * config/nvptx/mkoffload.cc (main): Likewise.
5302 * doc/invoke.texi (foffload-options): Update example.
5304 2023-06-14 liuhongt <hongtao.liu@intel.com>
5307 * config/i386/sse.md (mov<mode>_internal>): Use x instead of v
5308 for alternative 2 since there's no evex version for vpcmpeqd
5311 2023-06-13 Jeff Law <jlaw@ventanamicro.com>
5313 * gcc.cc (LINK_COMMAND_SPEC): Remove mudflap spec handling.
5315 2023-06-13 Jeff Law <jlaw@ventanamicro.com>
5317 * config/sh/divtab.cc: Remove.
5319 2023-06-13 Jakub Jelinek <jakub@redhat.com>
5321 * config/i386/i386.cc (standard_sse_constant_opcode): Remove
5322 superfluous spaces around \t for vpcmpeqd.
5324 2023-06-13 Roger Sayle <roger@nextmovesoftware.com>
5326 * expr.cc (store_constructor) <case VECTOR_TYPE>: Don't bother
5327 clearing vectors with only a single element. Set CLEARED if the
5328 vector was initialized to zero.
5330 2023-06-13 Lehua Ding <lehua.ding@rivai.ai>
5332 * config/riscv/riscv-v.cc (struct mode_vtype_group): Remove duplicate
5335 (TUPLE_ENTRY): Undef.
5337 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5339 * config/riscv/riscv-v.cc (rvv_builder::single_step_npatterns_p): Add comment.
5340 (shuffle_generic_patterns): Ditto.
5341 (expand_vec_perm_const_1): Ditto.
5343 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5345 * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): Fix bug.
5346 (shuffle_decompress_patterns): Ditto.
5348 2023-06-13 Richard Biener <rguenther@suse.de>
5350 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Free loop BBs.
5352 2023-06-13 Yanzhang Wang <yanzhang.wang@intel.com>
5353 Kito Cheng <kito.cheng@sifive.com>
5355 * config/riscv/riscv-protos.h (riscv_init_cumulative_args): Set
5356 warning flag if func is not builtin
5357 * config/riscv/riscv.cc
5358 (riscv_scalable_vector_type_p): Determine whether the type is scalable vector.
5359 (riscv_arg_has_vector): Determine whether the arg is vector type.
5360 (riscv_pass_in_vector_p): Check the vector type param is passed by value.
5361 (riscv_init_cumulative_args): The same as header.
5362 (riscv_get_arg_info): Add the checking.
5363 (riscv_function_value): Check the func return and set warning flag
5364 * config/riscv/riscv.h (INIT_CUMULATIVE_ARGS): Add a flag to
5365 determine whether warning psabi or not.
5367 2023-06-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5369 * config/arm/arm-opts.h (enum arm_tp_type): Remove TP_CP15.
5370 Add TP_TPIDRURW, TP_TPIDRURO, TP_TPIDRPRW values.
5371 * config/arm/arm-protos.h (arm_output_load_tpidr): Declare prototype.
5372 * config/arm/arm.cc (arm_option_reconfigure_globals): Replace TP_CP15
5374 (arm_output_load_tpidr): Define.
5375 * config/arm/arm.h (TARGET_HARD_TP): Define in terms of TARGET_SOFT_TP.
5376 * config/arm/arm.md (load_tp_hard): Call arm_output_load_tpidr to output
5378 (reload_tp_hard): Likewise.
5379 * config/arm/arm.opt (tpidrurw, tpidruro, tpidrprw): New values for
5381 * doc/invoke.texi (Arm Options, mtp): Document new values.
5383 2023-06-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5386 * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Add
5387 AARCH64_TPIDRRO_EL0 value.
5388 * config/aarch64/aarch64.cc (aarch64_output_load_tp): Define.
5389 * config/aarch64/aarch64.opt (tpidr_el0, tpidr_el1, tpidr_el2,
5390 tpidr_el3, tpidrro_el3): New accepted values to -mtp=.
5391 * doc/invoke.texi (AArch64 Options): Document new -mtp= options.
5393 2023-06-13 Alexandre Oliva <oliva@adacore.com>
5395 * range-op-float.cc (frange_nextafter): Drop inline.
5396 (frelop_early_resolve): Add static.
5397 (frange_float): Likewise.
5399 2023-06-13 Richard Biener <rguenther@suse.de>
5401 PR middle-end/110232
5402 * fold-const.cc (native_interpret_vector): Use TYPE_SIZE_UNIT
5403 to check whether the buffer covers the whole vector.
5405 2023-06-13 Richard Biener <rguenther@suse.de>
5407 * tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): For
5408 .MASK_LOAD and friends set the size of the access to unknown.
5410 2023-06-13 Tejas Belagod <tbelagod@arm.com>
5413 * config/aarch64/aarch64-sve-builtins-base.cc (svlast_impl::fold): Fold sve
5414 calls that have a constant input predicate vector.
5415 (svlast_impl::is_lasta): Query to check if intrinsic is svlasta.
5416 (svlast_impl::is_lastb): Query to check if intrinsic is svlastb.
5417 (svlast_impl::vect_all_same): Check if all vector elements are equal.
5419 2023-06-13 Andi Kleen <ak@linux.intel.com>
5421 * config/i386/gcc-auto-profile: Regenerate.
5423 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5425 * config/riscv/vector-iterators.md: Fix requirement.
5427 2023-06-13 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5429 * config/riscv/riscv-v.cc (emit_vlmax_decompress_insn): New function.
5430 (shuffle_decompress_patterns): New function.
5431 (expand_vec_perm_const_1): Add decompress optimization.
5433 2023-06-12 Jeff Law <jlaw@ventanamicro.com>
5435 PR rtl-optimization/101188
5436 * postreload.cc (reload_cse_move2add_invalidate): New function,
5438 (reload_cse_move2add): Call reload_cse_move2add_invalidate.
5440 2023-06-12 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
5442 * config/aarch64/aarch64.cc (aarch64_expand_vector_init): Tweak condition
5443 if (n_var == n_elts && n_elts <= 16) to allow a single constant,
5444 and if maxv == 1, use constant element for duplicating into register.
5446 2023-06-12 Tobias Burnus <tobias@codesourcery.com>
5448 * gimplify.cc (gimplify_adjust_omp_clauses_1): Use
5449 GOMP_MAP_FORCE_PRESENT for 'present alloc' implicit mapping.
5450 (gimplify_adjust_omp_clauses): Change
5451 GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC} to the equivalent
5452 GOMP_MAP_FORCE_PRESENT.
5453 * omp-low.cc (lower_omp_target): Remove handling of no-longer valid
5454 GOMP_MAP_PRESENT_{TO,TOFROM,FROM,ALLOC}; update map kinds used for
5455 to/from clauses with present modifier.
5457 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5459 PR tree-optimization/110205
5460 * range-op-float.cc (range_operator::fold_range): Add default FII
5462 * range-op-mixed.h (class operator_gt): Add missing final overrides.
5463 * range-op.cc (range_op_handler::fold_range): Add RO_FII case.
5464 (operator_lshift ::update_bitmask): Add final override.
5465 (operator_rshift ::update_bitmask): Add final override.
5466 * range-op.h (range_operator::fold_range): Add FII prototype.
5468 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5470 * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
5471 Use range_op_handler directly.
5472 * range-op.cc (range_op_handler::range_op_handler): Unsigned
5473 param instead of tree-code.
5474 (ptr_op_widen_plus_signed): Delete.
5475 (ptr_op_widen_plus_unsigned): Delete.
5476 (ptr_op_widen_mult_signed): Delete.
5477 (ptr_op_widen_mult_unsigned): Delete.
5478 (range_op_table::initialize_integral_ops): Add new opcodes.
5479 * range-op.h (range_op_handler): Use unsigned.
5480 (OP_WIDEN_MULT_SIGNED): New.
5481 (OP_WIDEN_MULT_UNSIGNED): New.
5482 (OP_WIDEN_PLUS_SIGNED): New.
5483 (OP_WIDEN_PLUS_UNSIGNED): New.
5484 (RANGE_OP_TABLE_SIZE): New.
5485 (range_op_table::operator []): Use unsigned.
5486 (range_op_table::set): Use unsigned.
5487 (m_range_tree): Make unsigned.
5488 (ptr_op_widen_mult_signed): Remove.
5489 (ptr_op_widen_mult_unsigned): Remove.
5490 (ptr_op_widen_plus_signed): Remove.
5491 (ptr_op_widen_plus_unsigned): Remove.
5493 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5495 * gimple-range-op.cc (gimple_range_op_handler): Set m_operator
5496 manually as there is no access to the default operator.
5497 (cfn_copysign::fold_range): Don't check for validity.
5498 (cfn_ubsan::fold_range): Ditto.
5499 (gimple_range_op_handler::maybe_builtin_call): Don't set to NULL.
5500 * range-op.cc (default_operator): New.
5501 (range_op_handler::range_op_handler): Use default_operator
5503 (range_op_handler::operator bool): Move from header, compare
5504 against default operator.
5505 (range_op_handler::range_op): New.
5506 * range-op.h (range_op_handler::operator bool): Move.
5508 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5510 * range-op.cc (unified_table): Delete.
5511 (range_op_table operator_table): Instantiate.
5512 (range_op_table::range_op_table): Rename from unified_table.
5513 (range_op_handler::range_op_handler): Use range_op_table.
5514 * range-op.h (range_op_table::operator []): Inline.
5515 (range_op_table::set): Inline.
5517 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5519 * gimple-range-gori.cc (gori_compute::condexpr_adjust): Do not
5521 * gimple-range-op.cc (get_code): Rename from get_code_and_type
5523 (gimple_range_op_handler::supported_p): No need for type.
5524 (gimple_range_op_handler::gimple_range_op_handler): Ditto.
5525 (cfn_copysign::fold_range): Ditto.
5526 (cfn_ubsan::fold_range): Ditto.
5527 * ipa-cp.cc (ipa_vr_operation_and_type_effects): Ditto.
5528 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Ditto.
5529 * range-op-float.cc (operator_plus::op1_range): Ditto.
5530 (operator_mult::op1_range): Ditto.
5531 (range_op_float_tests): Ditto.
5532 * range-op.cc (get_op_handler): Remove.
5533 (range_op_handler::set_op_handler): Remove.
5534 (operator_plus::op1_range): No need for type.
5535 (operator_minus::op1_range): Ditto.
5536 (operator_mult::op1_range): Ditto.
5537 (operator_exact_divide::op1_range): Ditto.
5538 (operator_cast::op1_range): Ditto.
5539 (perator_bitwise_not::fold_range): Ditto.
5540 (operator_negate::fold_range): Ditto.
5541 * range-op.h (range_op_handler::range_op_handler): Remove type param.
5542 (range_cast): No need for type.
5543 (range_op_table::operator[]): Check for enum_code >= 0.
5544 * tree-data-ref.cc (compute_distributive_range): No need for type.
5545 * tree-ssa-loop-unswitch.cc (unswitch_predicate): Ditto.
5546 * value-query.cc (range_query::get_tree_range): Ditto.
5547 * value-relation.cc (relation_oracle::validate_relation): Ditto.
5548 * vr-values.cc (range_of_var_in_loop): Ditto.
5549 (simplify_using_ranges::fold_cond_with_ops): Ditto.
5551 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5553 * range-op-mixed.h (operator_max): Remove final.
5554 * range-op-ptr.cc (pointer_table::pointer_table): Remove MAX_EXPR.
5555 (pointer_table::pointer_table): Remove.
5556 (class hybrid_max_operator): New.
5557 (range_op_table::initialize_pointer_ops): Add hybrid_max_operator.
5558 * range-op.cc (pointer_tree_table): Remove.
5559 (unified_table::unified_table): Comment out MAX_EXPR.
5560 (get_op_handler): Remove check of pointer table.
5561 * range-op.h (class pointer_table): Remove.
5563 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5565 * range-op-mixed.h (operator_min): Remove final.
5566 * range-op-ptr.cc (pointer_table::pointer_table): Remove MIN_EXPR.
5567 (class hybrid_min_operator): New.
5568 (range_op_table::initialize_pointer_ops): Add hybrid_min_operator.
5569 * range-op.cc (unified_table::unified_table): Comment out MIN_EXPR.
5571 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5573 * range-op-mixed.h (operator_bitwise_or): Remove final.
5574 * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_IOR_EXPR.
5575 (class hybrid_or_operator): New.
5576 (range_op_table::initialize_pointer_ops): Add hybrid_or_operator.
5577 * range-op.cc (unified_table::unified_table): Comment out BIT_IOR_EXPR.
5579 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5581 * range-op-mixed.h (operator_bitwise_and): Remove final.
5582 * range-op-ptr.cc (pointer_table::pointer_table): Remove BIT_AND_EXPR.
5583 (class hybrid_and_operator): New.
5584 (range_op_table::initialize_pointer_ops): Add hybrid_and_operator.
5585 * range-op.cc (unified_table::unified_table): Comment out BIT_AND_EXPR.
5587 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5589 * Makefile.in (OBJS): Add range-op-ptr.o.
5590 * range-op-mixed.h (update_known_bitmask): Move prototype here.
5591 (minus_op1_op2_relation_effect): Move prototype here.
5592 (wi_includes_zero_p): Move function to here.
5594 * range-op.cc (update_known_bitmask): Remove static.
5595 (wi_includes_zero_p): Move to header.
5596 (wi_zero_p): Move to header.
5597 (minus_op1_op2_relation_effect): Remove static.
5598 (operator_pointer_diff): Move class and routines to range-op-ptr.cc.
5599 (pointer_plus_operator): Ditto.
5600 (pointer_min_max_operator): Ditto.
5601 (pointer_and_operator): Ditto.
5602 (pointer_or_operator): Ditto.
5603 (pointer_table): Ditto.
5604 (range_op_table::initialize_pointer_ops): Ditto.
5605 * range-op-ptr.cc: New.
5607 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5609 * range-op-mixed.h (class operator_max): Move from...
5610 * range-op.cc (unified_table::unified_table): Add MAX_EXPR.
5611 (get_op_handler): Remove the integral table.
5612 (class operator_max): Move from here.
5613 (integral_table::integral_table): Delete.
5614 * range-op.h (class integral_table): Delete.
5616 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5618 * range-op-mixed.h (class operator_min): Move from...
5619 * range-op.cc (unified_table::unified_table): Add MIN_EXPR.
5620 (class operator_min): Move from here.
5621 (integral_table::integral_table): Remove MIN_EXPR.
5623 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5625 * range-op-mixed.h (class operator_bitwise_or): Move from...
5626 * range-op.cc (unified_table::unified_table): Add BIT_IOR_EXPR.
5627 (class operator_bitwise_or): Move from here.
5628 (integral_table::integral_table): Remove BIT_IOR_EXPR.
5630 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5632 * range-op-mixed.h (class operator_bitwise_and): Move from...
5633 * range-op.cc (unified_table::unified_table): Add BIT_AND_EXPR.
5634 (get_op_handler): Check for a pointer table entry first.
5635 (class operator_bitwise_and): Move from here.
5636 (integral_table::integral_table): Remove BIT_AND_EXPR.
5638 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5640 * range-op-mixed.h (class operator_bitwise_xor): Move from...
5641 * range-op.cc (unified_table::unified_table): Add BIT_XOR_EXPR.
5642 (class operator_bitwise_xor): Move from here.
5643 (integral_table::integral_table): Remove BIT_XOR_EXPR.
5644 (pointer_table::pointer_table): Remove BIT_XOR_EXPR.
5646 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5648 * range-op-mixed.h (class operator_bitwise_not): Move from...
5649 * range-op.cc (unified_table::unified_table): Add BIT_NOT_EXPR.
5650 (class operator_bitwise_not): Move from here.
5651 (integral_table::integral_table): Remove BIT_NOT_EXPR.
5652 (pointer_table::pointer_table): Remove BIT_NOT_EXPR.
5654 2023-06-12 Andrew MacLeod <amacleod@redhat.com>
5656 * range-op-mixed.h (class operator_addr_expr): Move from...
5657 * range-op.cc (unified_table::unified_table): Add ADDR_EXPR.
5658 (class operator_addr_expr): Move from here.
5659 (integral_table::integral_table): Remove ADDR_EXPR.
5660 (pointer_table::pointer_table): Remove ADDR_EXPR.
5662 2023-06-12 Pan Li <pan2.li@intel.com>
5664 * config/riscv/riscv-vector-builtins-types.def
5665 (vfloat16m1_t): Add type to lmul1 ops.
5666 (vfloat16m2_t): Likewise.
5667 (vfloat16m4_t): Likewise.
5669 2023-06-12 Richard Biener <rguenther@suse.de>
5671 * tree-ssa-alias.cc (call_may_clobber_ref_p_1): For
5672 .MASK_STORE and friend set the size of the access to
5675 2023-06-12 Tamar Christina <tamar.christina@arm.com>
5677 * config.in: Regenerate.
5678 * configure: Regenerate.
5679 * configure.ac: Remove DEFAULT_MATCHPD_PARTITIONS.
5681 2023-06-12 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5683 * config/riscv/autovec-opt.md
5684 (*v<any_shiftrt:optab><any_extend:optab>trunc<mode>): New pattern.
5685 (*<any_shiftrt:optab>trunc<mode>): Ditto.
5686 * config/riscv/autovec.md (<optab><mode>3): Change to
5687 define_insn_and_split.
5688 (v<optab><mode>3): Ditto.
5689 (trunc<mode><v_double_trunc>2): Ditto.
5691 2023-06-12 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5693 * simplify-rtx.cc (simplify_const_unary_operation):
5694 Handle US_TRUNCATE, SS_TRUNCATE.
5696 2023-06-12 Eric Botcazou <ebotcazou@adacore.com>
5699 * doc/gm2.texi (Standard procedures): Fix Next link.
5701 2023-06-12 Tamar Christina <tamar.christina@arm.com>
5703 * config.in: Regenerate.
5705 2023-06-12 Andre Vieira <andre.simoesdiasvieira@arm.com>
5707 PR middle-end/110142
5708 * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Don't pass
5709 subtype to vect_widened_op_tree and remove subtype parameter, also
5710 remove superfluous overloaded function definition.
5711 (vect_recog_widen_plus_pattern): Remove subtype parameter and dont pass
5712 to call to vect_recog_widen_op_pattern.
5713 (vect_recog_widen_minus_pattern): Likewise.
5715 2023-06-12 liuhongt <hongtao.liu@intel.com>
5717 * config/i386/sse.md (vec_pack<floatprefix>_float_<mode>): New expander.
5718 (vec_unpack_<fixprefix>fix_trunc_lo_<mode>): Ditto.
5719 (vec_unpack_<fixprefix>fix_trunc_hi_<mode>): Ditto.
5720 (vec_unpacks_lo_<mode>): Ditto.
5721 (vec_unpacks_hi_<mode>): Ditto.
5722 (sse_movlhps_<mode>): New define_insn.
5723 (ssse3_palignr<mode>_perm): Extend to V_128H.
5724 (V_128H): New mode iterator.
5725 (ssepackPHmode): New mode attribute.
5726 (vunpck_extract_mode): Ditto.
5727 (vpckfloat_concat_mode): Extend to VxSI/VxSF for _Float16.
5728 (vpckfloat_temp_mode): Ditto.
5729 (vpckfloat_op_mode): Ditto.
5730 (vunpckfixt_mode): Extend to VxHF.
5731 (vunpckfixt_model): Ditto.
5732 (vunpckfixt_extract_mode): Ditto.
5734 2023-06-12 Richard Biener <rguenther@suse.de>
5736 PR middle-end/110200
5737 * genmatch.cc (expr::gen_transform): Put braces around
5738 the if arm for the (convert ...) short-cut.
5740 2023-06-12 Kewen Lin <linkw@linux.ibm.com>
5743 * config/rs6000/rs6000-builtins.def (__builtin_pack_vector_int128,
5744 __builtin_unpack_vector_int128): Move from stanza power7 to vsx.
5746 2023-06-12 Kewen Lin <linkw@linux.ibm.com>
5749 * config/rs6000/rs6000.cc (output_toc): Use the mode of the 128-bit
5750 floating constant itself for real_to_target call.
5752 2023-06-12 Pan Li <pan2.li@intel.com>
5754 * config/riscv/riscv-vector-builtins-types.def
5755 (vfloat16mf4_t): Add type to X2/X4/X8/X16/X32 vlmul ext ops.
5756 (vfloat16mf2_t): Ditto.
5757 (vfloat16m1_t): Ditto.
5758 (vfloat16m2_t): Ditto.
5759 (vfloat16m4_t): Ditto.
5761 2023-06-12 David Edelsohn <dje.gcc@gmail.com>
5763 * config/rs6000/rs6000-logue.cc (rs6000_stack_info):
5764 Do not require a stack frame when debugging is enabled for AIX.
5766 2023-06-11 Georg-Johann Lay <avr@gjlay.de>
5768 * config/avr/avr.md (adjust_len) [insv_notbit_0, insv_notbit_7]:
5769 Remove attribute values.
5770 (insv_notbit): New post-reload insn.
5771 (*insv.not-shiftrt_split, *insv.xor1-bit.0_split)
5772 (*insv.not-bit.0_split, *insv.not-bit.7_split)
5773 (*insv.xor-extract_split): Split to insv_notbit.
5774 (*insv.not-shiftrt, *insv.xor1-bit.0, *insv.not-bit.0, *insv.not-bit.7)
5775 (*insv.xor-extract): Remove post-reload insns.
5776 * config/avr/avr.cc (avr_out_insert_notbit) [bitno]: Remove parameter.
5777 (avr_adjust_insn_length): Adjust call of avr_out_insert_notbit.
5778 [ADJUST_LEN_INSV_NOTBIT_0, ADJUST_LEN_INSV_NOTBIT_7]: Remove cases.
5779 * config/avr/avr-protos.h (avr_out_insert_notbit): Adjust prototype.
5781 2023-06-11 Georg-Johann Lay <avr@gjlay.de>
5784 * config/avr/avr.md (adjust_len) [extr, extr_not]: New elements.
5785 (MSB, SIZE): New mode attributes.
5786 (any_shift): New code iterator.
5787 (*lshr<mode>3_split, *lshr<mode>3, lshr<mode>3)
5788 (*lshr<mode>3_const_split): Add constraint alternative for
5789 the case of shift-offset = MSB. Ditch "length" attribute.
5790 (extzv<mode): New. replaces extzv. Adjust following patterns.
5791 Use avr_out_extr, avr_out_extr_not to print asm.
5792 (*extzv.subreg.<mode>, *extzv.<mode>.subreg, *extzv.xor)
5793 (*extzv<mode>.ge, *neg.ashiftrt<mode>.msb, *extzv.io.lsr7): New.
5794 * config/avr/constraints.md (C15, C23, C31, Yil): New
5795 * config/avr/predicates.md (reg_or_low_io_operand)
5796 (const7_operand, reg_or_low_io_operand)
5797 (const15_operand, const_0_to_15_operand)
5798 (const23_operand, const_0_to_23_operand)
5799 (const31_operand, const_0_to_31_operand): New.
5800 * config/avr/avr-protos.h (avr_out_extr, avr_out_extr_not): New.
5801 * config/avr/avr.cc (avr_out_extr, avr_out_extr_not): New funcs.
5802 (lshrqi3_out, lshrhi3_out, lshrpsi3_out, lshrsi3_out): Adjust
5803 MSB case to new insn constraint "r" for operands[1].
5804 (avr_adjust_insn_length) [ADJUST_LEN_EXTR_NOT, ADJUST_LEN_EXTR]:
5806 (avr_rtx_costs_1): Adjust cost for a new pattern.
5808 2023-06-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5810 * config/riscv/riscv-vsetvl.cc (available_occurrence_p): Enhance user vsetvl optimization.
5811 (vector_insn_info::parse_insn): Add rtx_insn parse.
5812 (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance user vsetvl optimization.
5813 (get_first_vsetvl): New function.
5814 (pass_vsetvl::global_eliminate_vsetvl_insn): Ditto.
5815 (pass_vsetvl::cleanup_insns): Remove it.
5816 (pass_vsetvl::ssa_post_optimization): New function.
5817 (has_no_uses): Ditto.
5818 (pass_vsetvl::propagate_avl): Remove it.
5819 (pass_vsetvl::df_post_optimization): New function.
5820 (pass_vsetvl::lazy_vsetvl): Rework Phase 5 && Phase 6.
5821 * config/riscv/riscv-vsetvl.h: Adapt declaration.
5823 2023-06-10 Aldy Hernandez <aldyh@redhat.com>
5825 * ipa-cp.cc (ipcp_vr_lattice::init): Take type argument.
5826 (ipcp_vr_lattice::print): Call dump method.
5827 (ipcp_vr_lattice::meet_with): Adjust for m_vr being a
5829 (ipcp_vr_lattice::meet_with_1): Make argument a reference.
5830 (ipcp_vr_lattice::set_to_bottom): Set varying for an unsupported
5832 (initialize_node_lattices): Pass type when appropriate.
5833 (ipa_vr_operation_and_type_effects): Make type agnostic.
5834 (ipa_value_range_from_jfunc): Same.
5835 (propagate_vr_across_jump_function): Same.
5836 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
5837 (evaluate_properties_for_edge): Same.
5838 * ipa-prop.cc (ipa_vr::get_vrange): Same.
5839 (ipcp_update_vr): Same.
5840 * ipa-prop.h (ipa_value_range_from_jfunc): Same.
5841 (ipa_range_set_and_normalize): Same.
5843 2023-06-10 Georg-Johann Lay <avr@gjlay.de>
5847 * config/avr/avr-passes.def (avr_pass_ifelse): Insert new pass.
5848 * config/avr/avr.cc (avr_pass_ifelse): New RTL pass.
5849 (avr_pass_data_ifelse): New pass_data for it.
5850 (make_avr_pass_ifelse, avr_redundant_compare, avr_cbranch_cost)
5851 (avr_canonicalize_comparison, avr_out_plus_set_ZN)
5852 (avr_out_cmp_ext): New functions.
5853 (compare_condtition): Make sure REG_CC dies in the branch insn.
5854 (avr_rtx_costs_1): Add computation of cbranch costs.
5855 (avr_adjust_insn_length) [ADJUST_LEN_ADD_SET_ZN, ADJUST_LEN_CMP_ZEXT]:
5856 [ADJUST_LEN_CMP_SEXT]Handle them.
5857 (TARGET_CANONICALIZE_COMPARISON): New define.
5858 (avr_simplify_comparison_p, compare_diff_p, avr_compare_pattern)
5859 (avr_reorg_remove_redundant_compare, avr_reorg): Remove functions.
5860 (TARGET_MACHINE_DEPENDENT_REORG): Remove define.
5861 * config/avr/avr-protos.h (avr_simplify_comparison_p): Remove proto.
5862 (make_avr_pass_ifelse, avr_out_plus_set_ZN, cc_reg_rtx)
5863 (avr_out_cmp_zext): New Protos
5864 * config/avr/avr.md (branch, difficult_branch): Don't split insns.
5865 (*cbranchhi.zero-extend.0", *cbranchhi.zero-extend.1")
5866 (*swapped_tst<mode>, *add.for.eqne.<mode>): New insns.
5867 (*cbranch<mode>4): Rename to cbranch<mode>4_insn.
5868 (define_peephole): Add dead_or_set_regno_p(insn,REG_CC) as needed.
5869 (define_deephole2): Add peep2_regno_dead_p(*,REG_CC) as needed.
5870 Add new RTL peepholes for decrement-and-branch and *swapped_tst<mode>.
5871 Rework signtest-and-branch peepholes for *sbrx_branch<mode>.
5872 (adjust_len) [add_set_ZN, cmp_zext]: New.
5873 (QIPSI): New mode iterator.
5874 (ALLs1, ALLs2, ALLs4, ALLs234): New mode iterators.
5875 (gelt): New code iterator.
5876 (gelt_eqne): New code attribute.
5877 (rvbranch, *rvbranch, difficult_rvbranch, *difficult_rvbranch)
5878 (branch_unspec, *negated_tst<mode>, *reversed_tst<mode>)
5879 (*cmpqi_sign_extend): Remove insns.
5880 (define_c_enum "unspec") [UNSPEC_IDENTITY]: Remove.
5881 * config/avr/avr-dimode.md (cbranch<mode>4): Canonicalize comparisons.
5882 * config/avr/predicates.md (scratch_or_d_register_operand): New.
5883 * config/avr/constraints.md (Yxx): New constraint.
5885 2023-06-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
5887 * config/riscv/autovec.md (select_vl<mode>): New pattern.
5888 * config/riscv/riscv-protos.h (expand_select_vl): New function.
5889 * config/riscv/riscv-v.cc (expand_select_vl): Ditto.
5891 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
5893 * range-op-float.cc (foperator_mult_div_base): Delete.
5894 (foperator_mult_div_base::find_range): Make static local function.
5895 (foperator_mult): Remove. Move prototypes to range-op-mixed.h
5896 (operator_mult::op1_range): Rename from foperator_mult.
5897 (operator_mult::op2_range): Ditto.
5898 (operator_mult::rv_fold): Ditto.
5899 (float_table::float_table): Remove MULT_EXPR.
5900 (class foperator_div): Inherit from range_operator.
5901 (float_table::float_table): Delete.
5902 * range-op-mixed.h (class operator_mult): Combined from integer
5904 * range-op.cc (float_tree_table): Delete.
5905 (op_mult): New object.
5906 (unified_table::unified_table): Add MULT_EXPR.
5907 (get_op_handler): Do not check float table any longer.
5908 (class cross_product_operator): Move to range-op-mixed.h.
5909 (class operator_mult): Move to range-op-mixed.h.
5910 (integral_table::integral_table): Remove MULT_EXPR.
5911 (pointer_table::pointer_table): Remove MULT_EXPR.
5912 * range-op.h (float_table): Remove.
5914 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
5916 * range-op-float.cc (foperator_negate): Remove. Move prototypes
5918 (operator_negate::fold_range): Rename from foperator_negate.
5919 (operator_negate::op1_range): Ditto.
5920 (float_table::float_table): Remove NEGATE_EXPR.
5921 * range-op-mixed.h (class operator_negate): Combined from integer
5923 * range-op.cc (op_negate): New object.
5924 (unified_table::unified_table): Add NEGATE_EXPR.
5925 (class operator_negate): Move to range-op-mixed.h.
5926 (integral_table::integral_table): Remove NEGATE_EXPR.
5927 (pointer_table::pointer_table): Remove NEGATE_EXPR.
5929 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
5931 * range-op-float.cc (foperator_minus): Remove. Move prototypes
5933 (operator_minus::fold_range): Rename from foperator_minus.
5934 (operator_minus::op1_range): Ditto.
5935 (operator_minus::op2_range): Ditto.
5936 (operator_minus::rv_fold): Ditto.
5937 (float_table::float_table): Remove MINUS_EXPR.
5938 * range-op-mixed.h (class operator_minus): Combined from integer
5940 * range-op.cc (op_minus): New object.
5941 (unified_table::unified_table): Add MINUS_EXPR.
5942 (class operator_minus): Move to range-op-mixed.h.
5943 (integral_table::integral_table): Remove MINUS_EXPR.
5944 (pointer_table::pointer_table): Remove MINUS_EXPR.
5946 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
5948 * range-op-float.cc (foperator_abs): Remove. Move prototypes
5950 (operator_abs::fold_range): Rename from foperator_abs.
5951 (operator_abs::op1_range): Ditto.
5952 (float_table::float_table): Remove ABS_EXPR.
5953 * range-op-mixed.h (class operator_abs): Combined from integer
5955 * range-op.cc (op_abs): New object.
5956 (unified_table::unified_table): Add ABS_EXPR.
5957 (class operator_abs): Move to range-op-mixed.h.
5958 (integral_table::integral_table): Remove ABS_EXPR.
5959 (pointer_table::pointer_table): Remove ABS_EXPR.
5961 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
5963 * range-op-float.cc (foperator_plus): Remove. Move prototypes
5965 (operator_plus::fold_range): Rename from foperator_plus.
5966 (operator_plus::op1_range): Ditto.
5967 (operator_plus::op2_range): Ditto.
5968 (operator_plus::rv_fold): Ditto.
5969 (float_table::float_table): Remove PLUS_EXPR.
5970 * range-op-mixed.h (class operator_plus): Combined from integer
5972 * range-op.cc (op_plus): New object.
5973 (unified_table::unified_table): Add PLUS_EXPR.
5974 (class operator_plus): Move to range-op-mixed.h.
5975 (integral_table::integral_table): Remove PLUS_EXPR.
5976 (pointer_table::pointer_table): Remove PLUS_EXPR.
5978 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
5980 * range-op-mixed.h (class operator_cast): Combined from integer
5982 * range-op.cc (op_cast): New object.
5983 (unified_table::unified_table): Add op_cast
5984 (class operator_cast): Move to range-op-mixed.h.
5985 (integral_table::integral_table): Remove op_cast
5986 (pointer_table::pointer_table): Remove op_cast.
5988 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
5990 * range-op-float.cc (operator_cst::fold_range): New.
5991 * range-op-mixed.h (class operator_cst): Move from integer file.
5992 * range-op.cc (op_cst): New object.
5993 (unified_table::unified_table): Add op_cst. Also use for REAL_CST.
5994 (class operator_cst): Move to range-op-mixed.h.
5995 (integral_table::integral_table): Remove op_cst.
5996 (pointer_table::pointer_table): Remove op_cst.
5998 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
6000 * range-op-float.cc (foperator_identity): Remove. Move prototypes
6002 (operator_identity::fold_range): Rename from foperator_identity.
6003 (operator_identity::op1_range): Ditto.
6004 (float_table::float_table): Remove fop_identity.
6005 * range-op-mixed.h (class operator_identity): Combined from integer
6007 * range-op.cc (op_identity): New object.
6008 (unified_table::unified_table): Add op_identity.
6009 (class operator_identity): Move to range-op-mixed.h.
6010 (integral_table::integral_table): Remove identity.
6011 (pointer_table::pointer_table): Remove identity.
6013 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
6015 * range-op-float.cc (foperator_ge): Remove. Move prototypes
6017 (operator_ge::fold_range): Rename from foperator_ge.
6018 (operator_ge::op1_range): Ditto.
6019 (float_table::float_table): Remove GE_EXPR.
6020 * range-op-mixed.h (class operator_ge): Combined from integer
6022 * range-op.cc (op_ge): New object.
6023 (unified_table::unified_table): Add GE_EXPR.
6024 (class operator_ge): Move to range-op-mixed.h.
6025 (ge_op1_op2_relation): Fold into
6026 operator_ge::op1_op2_relation.
6027 (integral_table::integral_table): Remove GE_EXPR.
6028 (pointer_table::pointer_table): Remove GE_EXPR.
6029 * range-op.h (ge_op1_op2_relation): Delete.
6031 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
6033 * range-op-float.cc (foperator_gt): Remove. Move prototypes
6035 (operator_gt::fold_range): Rename from foperator_gt.
6036 (operator_gt::op1_range): Ditto.
6037 (float_table::float_table): Remove GT_EXPR.
6038 * range-op-mixed.h (class operator_gt): Combined from integer
6040 * range-op.cc (op_gt): New object.
6041 (unified_table::unified_table): Add GT_EXPR.
6042 (class operator_gt): Move to range-op-mixed.h.
6043 (gt_op1_op2_relation): Fold into
6044 operator_gt::op1_op2_relation.
6045 (integral_table::integral_table): Remove GT_EXPR.
6046 (pointer_table::pointer_table): Remove GT_EXPR.
6047 * range-op.h (gt_op1_op2_relation): Delete.
6049 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
6051 * range-op-float.cc (foperator_le): Remove. Move prototypes
6053 (operator_le::fold_range): Rename from foperator_le.
6054 (operator_le::op1_range): Ditto.
6055 (float_table::float_table): Remove LE_EXPR.
6056 * range-op-mixed.h (class operator_le): Combined from integer
6058 * range-op.cc (op_le): New object.
6059 (unified_table::unified_table): Add LE_EXPR.
6060 (class operator_le): Move to range-op-mixed.h.
6061 (le_op1_op2_relation): Fold into
6062 operator_le::op1_op2_relation.
6063 (integral_table::integral_table): Remove LE_EXPR.
6064 (pointer_table::pointer_table): Remove LE_EXPR.
6065 * range-op.h (le_op1_op2_relation): Delete.
6067 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
6069 * range-op-float.cc (foperator_lt): Remove. Move prototypes
6071 (operator_lt::fold_range): Rename from foperator_lt.
6072 (operator_lt::op1_range): Ditto.
6073 (float_table::float_table): Remove LT_EXPR.
6074 * range-op-mixed.h (class operator_lt): Combined from integer
6076 * range-op.cc (op_lt): New object.
6077 (unified_table::unified_table): Add LT_EXPR.
6078 (class operator_lt): Move to range-op-mixed.h.
6079 (lt_op1_op2_relation): Fold into
6080 operator_lt::op1_op2_relation.
6081 (integral_table::integral_table): Remove LT_EXPR.
6082 (pointer_table::pointer_table): Remove LT_EXPR.
6083 * range-op.h (lt_op1_op2_relation): Delete.
6085 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
6087 * range-op-float.cc (foperator_not_equal): Remove. Move prototypes
6089 (operator_equal::fold_range): Rename from foperator_not_equal.
6090 (operator_equal::op1_range): Ditto.
6091 (float_table::float_table): Remove NE_EXPR.
6092 * range-op-mixed.h (class operator_not_equal): Combined from integer
6094 * range-op.cc (op_equal): New object.
6095 (unified_table::unified_table): Add NE_EXPR.
6096 (class operator_not_equal): Move to range-op-mixed.h.
6097 (not_equal_op1_op2_relation): Fold into
6098 operator_not_equal::op1_op2_relation.
6099 (integral_table::integral_table): Remove NE_EXPR.
6100 (pointer_table::pointer_table): Remove NE_EXPR.
6101 * range-op.h (not_equal_op1_op2_relation): Delete.
6103 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
6105 * range-op-float.cc (foperator_equal): Remove. Move prototypes
6107 (operator_equal::fold_range): Rename from foperator_equal.
6108 (operator_equal::op1_range): Ditto.
6109 (float_table::float_table): Remove EQ_EXPR.
6110 * range-op-mixed.h (class operator_equal): Combined from integer
6112 * range-op.cc (op_equal): New object.
6113 (unified_table::unified_table): Add EQ_EXPR.
6114 (class operator_equal): Move to range-op-mixed.h.
6115 (equal_op1_op2_relation): Fold into
6116 operator_equal::op1_op2_relation.
6117 (integral_table::integral_table): Remove EQ_EXPR.
6118 (pointer_table::pointer_table): Remove EQ_EXPR.
6119 * range-op.h (equal_op1_op2_relation): Delete.
6121 2023-06-10 Andrew MacLeod <amacleod@redhat.com>
6123 * range-op-float.cc (class float_table): Move to header.
6124 (float_table::float_table): Move float only operators to...
6125 (range_op_table::initialize_float_ops): Here.
6126 * range-op-mixed.h: New.
6127 * range-op.cc (integral_tree_table, pointer_tree_table): Moved
6129 (float_tree_table): Moved from range-op-float.cc.
6130 (unified_tree_table): New.
6131 (unified_table::unified_table): New. Call initialize routines.
6132 (get_op_handler): Check unified table first.
6133 (range_op_handler::range_op_handler): Handle no type constructor.
6134 (integral_table::integral_table): Move integral only operators to...
6135 (range_op_table::initialize_integral_ops): Here.
6136 (pointer_table::pointer_table): Move pointer only operators to...
6137 (range_op_table::initialize_pointer_ops): Here.
6138 * range-op.h (enum bool_range_state): Move to range-op-mixed.h.
6139 (get_bool_state): Ditto.
6140 (empty_range_varying): Ditto.
6141 (relop_early_resolve): Ditto.
6142 (class range_op_table): Add new init methods for range types.
6143 (class integral_table): Move declaration to here.
6144 (class pointer_table): Move declaration to here.
6145 (class float_table): Move declaration to here.
6147 2023-06-09 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
6148 Richard Sandiford <richard.sandiford@arm.com>
6149 Richard Biener <rguenther@suse.de>
6151 * doc/md.texi: Add SELECT_VL support.
6152 * internal-fn.def (SELECT_VL): Ditto.
6153 * optabs.def (OPTAB_D): Ditto.
6154 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Ditto.
6155 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Ditto.
6156 * tree-vect-stmts.cc (get_select_vl_data_ref_ptr): Ditto.
6157 (vectorizable_store): Ditto.
6158 (vectorizable_load): Ditto.
6159 * tree-vectorizer.h (LOOP_VINFO_USING_SELECT_VL_P): Ditto.
6161 2023-06-09 Andrew MacLeod <amacleod@redhat.com>
6164 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Check param
6167 2023-06-09 Andrew MacLeod <amacleod@redhat.com>
6169 * range-op.cc (range_cast): Move to...
6170 * range-op.h (range_cast): Here and add generic a version.
6172 2023-06-09 Marek Polacek <polacek@redhat.com>
6176 * doc/invoke.texi: Clarify that -Wmissing-field-initializers doesn't
6177 warn about designated initializers in C only.
6179 2023-06-09 Andrew Pinski <apinski@marvell.com>
6181 PR tree-optimization/97711
6182 PR tree-optimization/110155
6183 * match.pd ((zero_one == 0) ? y : z <op> y): Add plus to the op.
6184 ((zero_one != 0) ? z <op> y : y): Likewise.
6186 2023-06-09 Andrew Pinski <apinski@marvell.com>
6188 * match.pd ((zero_one ==/!= 0) ? y : z <op> y): Use
6189 multiply rather than negation/bit_and.
6191 2023-06-09 Andrew Pinski <apinski@marvell.com>
6193 * match.pd (`X & -Y -> X * Y`): Allow for truncation
6194 and the same type for unsigned types.
6196 2023-06-09 Andrew Pinski <apinski@marvell.com>
6198 PR tree-optimization/110165
6199 PR tree-optimization/110166
6200 * match.pd (zero_one_valued_p): Don't accept
6201 signed 1-bit integers.
6203 2023-06-09 Richard Biener <rguenther@suse.de>
6205 * match.pd (two conversions in a row): Use element_precision
6206 to DTRT for VECTOR_TYPE.
6208 2023-06-09 Pan Li <pan2.li@intel.com>
6210 * config/riscv/riscv.md (enabled): Move to another place, and
6211 add fp_vector_disabled to the cond.
6212 (fp_vector_disabled): New attr defined for disabling fp.
6213 * config/riscv/vector-iterators.md: Fix V_WHOLE and V_FRACT.
6215 2023-06-09 Pan Li <pan2.li@intel.com>
6217 * config/riscv/riscv-protos.h (enum frm_field_enum): Adjust
6220 2023-06-09 liuhongt <hongtao.liu@intel.com>
6223 * config/i386/i386.cc (ix86_gimple_fold_builtin): Explicitly
6224 view_convert_expr mask to signed type when folding pblendvb
6227 2023-06-09 liuhongt <hongtao.liu@intel.com>
6230 * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
6231 _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} into gimple
6232 ABSU_EXPR + VCE, don't fold _mm_abs_{pi8,pi16,pi32} w/o
6234 * config/i386/i386-builtin.def: Replace CODE_FOR_nothing with
6235 real codename for __builtin_ia32_pabs{b,w,d}.
6237 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
6239 * gimple-range-op.cc
6240 (gimple_range_op_handler::gimple_range_op_handler): Adjust.
6241 (gimple_range_op_handler::maybe_builtin_call): Adjust.
6242 * gimple-range-op.h (operand1, operand2): Use m_operator.
6243 * range-op.cc (integral_table, pointer_table): Relocate.
6244 (get_op_handler): Rename from get_handler and handle all types.
6245 (range_op_handler::range_op_handler): Relocate.
6246 (range_op_handler::set_op_handler): Relocate and adjust.
6247 (range_op_handler::range_op_handler): Relocate.
6248 (dispatch_trio): New.
6249 (RO_III, RO_IFI, RO_IFF, RO_FFF, RO_FIF, RO_FII): New consts.
6250 (range_op_handler::dispatch_kind): New.
6251 (range_op_handler::fold_range): Relocate and Use new dispatch value.
6252 (range_op_handler::op1_range): Ditto.
6253 (range_op_handler::op2_range): Ditto.
6254 (range_op_handler::lhs_op1_relation): Ditto.
6255 (range_op_handler::lhs_op2_relation): Ditto.
6256 (range_op_handler::op1_op2_relation): Ditto.
6257 (range_op_handler::set_op_handler): Use m_operator member.
6258 * range-op.h (range_op_handler::operator bool): Use m_operator.
6259 (range_op_handler::dispatch_kind): New.
6260 (range_op_handler::m_valid): Delete.
6261 (range_op_handler::m_int): Delete
6262 (range_op_handler::m_float): Delete
6263 (range_op_handler::m_operator): New.
6264 (range_op_table::operator[]): Relocate from .cc file.
6265 (range_op_table::set): Ditto.
6266 * value-range.h (class vrange): Make range_op_handler a friend.
6268 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
6270 * gimple-range-op.cc (cfn_constant_float_p): Change base class.
6271 (cfn_pass_through_arg1): Adjust using statemenmt.
6272 (cfn_signbit): Change base class, adjust using statement.
6273 (cfn_copysign): Ditto.
6275 (cfn_sincos): Ditto.
6276 * range-op-float.cc (fold_range): Change class to range_operator.
6280 (lhs_op1_relation): Ditto.
6281 (lhs_op2_relation): Ditto.
6282 (op1_op2_relation): Ditto.
6283 (foperator_*): Ditto.
6284 (class float_table): New. Inherit from range_op_table.
6285 (floating_tree_table) Change to range_op_table pointer.
6286 (class floating_op_table): Delete.
6287 * range-op.cc (operator_equal): Adjust using statement.
6288 (operator_not_equal): Ditto.
6289 (operator_lt, operator_le, operator_gt, operator_ge): Ditto.
6290 (operator_minus, operator_cast): Ditto.
6291 (operator_bitwise_and, pointer_plus_operator): Ditto.
6292 (get_float_handle): Change return type.
6293 * range-op.h (range_operator_float): Delete. Relocate all methods
6294 into class range_operator.
6295 (range_op_handler::m_float): Change type to range_operator.
6296 (floating_op_table): Delete.
6297 (floating_tree_table): Change type.
6299 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
6301 * range-op.cc (range_operator::fold_range): Call virtual routine.
6302 (range_operator::update_bitmask): New.
6303 (operator_equal::update_bitmask): New.
6304 (operator_not_equal::update_bitmask): New.
6305 (operator_lt::update_bitmask): New.
6306 (operator_le::update_bitmask): New.
6307 (operator_gt::update_bitmask): New.
6308 (operator_ge::update_bitmask): New.
6309 (operator_ge::update_bitmask): New.
6310 (operator_plus::update_bitmask): New.
6311 (operator_minus::update_bitmask): New.
6312 (operator_pointer_diff::update_bitmask): New.
6313 (operator_min::update_bitmask): New.
6314 (operator_max::update_bitmask): New.
6315 (operator_mult::update_bitmask): New.
6316 (operator_div:operator_div):New.
6317 (operator_div::update_bitmask): New.
6318 (operator_div::m_code): New member.
6319 (operator_exact_divide::operator_exact_divide): New constructor.
6320 (operator_lshift::update_bitmask): New.
6321 (operator_rshift::update_bitmask): New.
6322 (operator_bitwise_and::update_bitmask): New.
6323 (operator_bitwise_or::update_bitmask): New.
6324 (operator_bitwise_xor::update_bitmask): New.
6325 (operator_trunc_mod::update_bitmask): New.
6326 (op_ident, op_unknown, op_ptr_min_max): New.
6327 (op_nop, op_convert): Delete.
6328 (op_ssa, op_paren, op_obj_type): Delete.
6329 (op_realpart, op_imagpart): Delete.
6330 (op_ptr_min, op_ptr_max): Delete.
6331 (pointer_plus_operator:update_bitmask): New.
6332 (range_op_table::set): Do not use m_code.
6333 (integral_table::integral_table): Adjust to single instances.
6334 * range-op.h (range_operator::range_operator): Delete.
6335 (range_operator::m_code): Delete.
6336 (range_operator::update_bitmask): New.
6338 2023-06-08 Andrew MacLeod <amacleod@redhat.com>
6340 * range-op-float.cc (range_operator_float::fold_range): Return
6341 NAN of the result type.
6343 2023-06-08 Jakub Jelinek <jakub@redhat.com>
6345 * optabs.cc (expand_ffs): Add forward declaration.
6346 (expand_doubleword_clz): Rename to ...
6347 (expand_doubleword_clz_ctz_ffs): ... this. Add UNOPTAB argument,
6348 handle also doubleword CTZ and FFS in addition to CLZ.
6349 (expand_unop): Adjust caller. Also call it for doubleword
6350 ctz_optab and ffs_optab.
6352 2023-06-08 Jakub Jelinek <jakub@redhat.com>
6355 * config/i386/i386-expand.cc (ix86_expand_vector_init_general): For
6356 n_words == 2 recurse with mmx_ok as first argument rather than false.
6358 2023-06-07 Roger Sayle <roger@nextmovesoftware.com>
6360 * wide-int.cc (wi::bitreverse_large): Use HOST_WIDE_INT_1U to
6361 avoid sign extension/undefined behaviour when setting each bit.
6363 2023-06-07 Roger Sayle <roger@nextmovesoftware.com>
6364 Uros Bizjak <ubizjak@gmail.com>
6366 * config/i386/i386-expand.cc (ix86_expand_builtin) <handlecarry>:
6367 Use new x86_stc instruction when the carry flag must be set.
6368 * config/i386/i386.cc (ix86_cc_mode): Use CCCmode for *x86_cmc.
6369 (ix86_rtx_costs): Provide accurate rtx_costs for *x86_cmc.
6370 * config/i386/i386.h (TARGET_SLOW_STC): New define.
6371 * config/i386/i386.md (UNSPEC_STC): New UNSPEC for stc.
6372 (x86_stc): New define_insn.
6373 (define_peephole2): Convert x86_stc into alternate implementation
6374 on pentium4 without -Os when a QImode register is available.
6375 (*x86_cmc): New define_insn.
6376 (define_peephole2): Convert *x86_cmc into alternate implementation
6377 on pentium4 without -Os when a QImode register is available.
6378 (*setccc): New define_insn_and_split for a no-op CCCmode move.
6379 (*setcc_qi_negqi_ccc_1_<mode>): New define_insn_and_split to
6380 recognize (and eliminate) the carry flag being copied to itself.
6381 (*setcc_qi_negqi_ccc_2_<mode>): Likewise.
6382 * config/i386/x86-tune.def (X86_TUNE_SLOW_STC): New tuning flag.
6384 2023-06-07 Andrew Pinski <apinski@marvell.com>
6386 * match.pd: Fix comment for the
6387 `(zero_one ==/!= 0) ? y : z <op> y` patterns.
6389 2023-06-07 Jeff Law <jlaw@ventanamicro.com>
6390 Jeff Law <jlaw@ventanamicro.com>
6392 * config/riscv/bitmanip.md (rotrdi3, rotrsi3, rotlsi3): New expanders.
6393 (rotrsi3_sext): Expose generator.
6394 (rotlsi3 pattern): Hide generator.
6395 * config/riscv/riscv-protos.h (riscv_emit_binary): New function
6397 * config/riscv/riscv.cc (riscv_emit_binary): Removed static
6398 * config/riscv/riscv.md (addsi3, subsi3, negsi2): Hide generator.
6399 (mulsi3, <optab>si3): Likewise.
6400 (addsi3, subsi3, negsi2, mulsi3, <optab>si3): New expanders.
6401 (addv<mode>4, subv<mode>4, mulv<mode>4): Use riscv_emit_binary.
6402 (<u>mulsidi3): Likewise.
6403 (addsi3_extended, subsi3_extended, negsi2_extended): Expose generator.
6404 (mulsi3_extended, <optab>si3_extended): Likewise.
6405 (splitter for shadd feeding divison): Update RTL pattern to account
6406 for changes in how 32 bit ops are expanded for TARGET_64BIT.
6407 * loop-iv.cc (get_biv_step_1): Process src of extension when it PLUS.
6409 2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu>
6412 * config/riscv/riscv.cc (riscv_print_operand): Calculate
6413 memmodel only when it is valid.
6415 2023-06-07 Dimitar Dimitrov <dimitar@dinux.eu>
6417 * config/riscv/riscv.cc (riscv_const_insns): Recursively call
6418 for constant element of a vector.
6420 2023-06-07 Jakub Jelinek <jakub@redhat.com>
6422 * match.pd (zero_one_valued_p): Don't handle integer_zerop specially,
6423 instead compare tree_nonzero_bits <= 1U rather than just == 1.
6425 2023-06-07 Alex Coplan <alex.coplan@arm.com>
6428 * config/aarch64/aarch64-builtins.cc (aarch64_general_simulate_builtin):
6430 (aarch64_init_ls64_builtins): ... here. Switch to declaring public ACLE
6432 (aarch64_general_init_builtins): Ensure we invoke the arm_acle.h
6433 setup if in_lto_p, just like we do for SVE.
6434 * config/aarch64/arm_acle.h: (__arm_ld64b): Delete.
6435 (__arm_st64b): Delete.
6436 (__arm_st64bv): Delete.
6437 (__arm_st64bv0): Delete.
6439 2023-06-07 Alex Coplan <alex.coplan@arm.com>
6442 * config/aarch64/aarch64-builtins.cc (aarch64_expand_builtin_ls64):
6443 Use input operand for the destination address.
6444 * config/aarch64/aarch64.md (st64b): Fix constraint on address
6447 2023-06-07 Alex Coplan <alex.coplan@arm.com>
6450 * config/aarch64/aarch64-builtins.cc (aarch64_init_ls64_builtins_types):
6451 Replace eight consecutive spaces with tabs.
6452 (aarch64_init_ls64_builtins): Likewise.
6453 (aarch64_expand_builtin_ls64): Likewise.
6454 * config/aarch64/aarch64.md (ld64b): Likewise.
6457 (st64bv0): Likewise.
6459 2023-06-07 Vladimir N. Makarov <vmakarov@redhat.com>
6461 * ira-costs.cc: (find_costs_and_classes): Constrain classes of pic
6462 offset table pseudo to a general reg subset.
6464 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6466 * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode><vczle><vczbe>):
6468 (*aarch64_sqmovun<mode>_insn<vczle><vczbe>): ... This. Reimplement
6470 (aarch64_sqmovun<mode> [SD_HSDI]): Reimplement with RTL codes.
6471 (aarch64_sqxtun2<mode>_le): Likewise.
6472 (aarch64_sqxtun2<mode>_be): Likewise.
6473 (aarch64_sqxtun2<mode>): Adjust for the above.
6474 (aarch64_sqmovun<mode>): New define_expand.
6475 * config/aarch64/iterators.md (UNSPEC_SQXTUN): Delete.
6476 (half_mask): New mode attribute.
6477 * config/aarch64/predicates.md (aarch64_simd_umax_half_mode):
6480 2023-06-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6482 * config/aarch64/aarch64-simd.md (aarch64_addp<mode><vczle><vczbe>):
6484 (aarch64_addp<mode>_insn): ... This...
6485 (aarch64_addp<mode><vczle><vczbe>_insn): ... And this.
6486 (aarch64_addp<mode>): New define_expand.
6488 2023-06-07 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6490 * config/riscv/riscv-protos.h (expand_vec_perm_const): New function.
6491 * config/riscv/riscv-v.cc
6492 (rvv_builder::can_duplicate_repeating_sequence_p): Support POLY
6494 (rvv_builder::single_step_npatterns_p): New function.
6495 (rvv_builder::npatterns_all_equal_p): Ditto.
6496 (const_vec_all_in_range_p): Support POLY handling.
6497 (gen_const_vector_dup): Ditto.
6498 (emit_vlmax_gather_insn): Add vrgatherei16.
6499 (emit_vlmax_masked_gather_mu_insn): Ditto.
6500 (expand_const_vector): Add VLA SLP const vector support.
6501 (expand_vec_perm): Support POLY.
6502 (struct expand_vec_perm_d): New struct.
6503 (shuffle_generic_patterns): New function.
6504 (expand_vec_perm_const_1): Ditto.
6505 (expand_vec_perm_const): Ditto.
6506 * config/riscv/riscv.cc (riscv_vectorize_vec_perm_const): Ditto.
6507 (TARGET_VECTORIZE_VEC_PERM_CONST): New targethook.
6509 2023-06-07 Andrew Pinski <apinski@marvell.com>
6511 PR middle-end/110117
6512 * expr.cc (expand_single_bit_test): Handle
6513 const_int from expand_expr.
6515 2023-06-07 Andrew Pinski <apinski@marvell.com>
6517 * expr.cc (do_store_flag): Rearrange the
6518 TER code so that it overrides the nonzero bits
6519 info if we had `a & POW2`.
6521 2023-06-07 Andrew Pinski <apinski@marvell.com>
6523 PR tree-optimization/110134
6524 * match.pd (-A CMP -B -> B CMP A): Allow EQ/NE for all integer
6526 (-A CMP CST -> B CMP (-CST)): Likewise.
6528 2023-06-07 Andrew Pinski <apinski@marvell.com>
6530 PR tree-optimization/89263
6531 PR tree-optimization/99069
6532 PR tree-optimization/20083
6533 PR tree-optimization/94898
6534 * match.pd: Add patterns to optimize `a ? onezero : onezero` with
6535 one of the operands are constant.
6537 2023-06-07 Andrew Pinski <apinski@marvell.com>
6539 * match.pd (zero_one_valued_p): Match 0 integer constant
6542 2023-06-07 Pan Li <pan2.li@intel.com>
6544 * config/riscv/riscv-vector-builtins-types.def
6545 (vfloat32mf2_t): Take RVV_REQUIRE_ELEN_FP_16 as requirement.
6546 (vfloat32m1_t): Ditto.
6547 (vfloat32m2_t): Ditto.
6548 (vfloat32m4_t): Ditto.
6549 (vfloat32m8_t): Ditto.
6550 (vint16mf4_t): Ditto.
6551 (vint16mf2_t): Ditto.
6552 (vint16m1_t): Ditto.
6553 (vint16m2_t): Ditto.
6554 (vint16m4_t): Ditto.
6555 (vint16m8_t): Ditto.
6556 (vuint16mf4_t): Ditto.
6557 (vuint16mf2_t): Ditto.
6558 (vuint16m1_t): Ditto.
6559 (vuint16m2_t): Ditto.
6560 (vuint16m4_t): Ditto.
6561 (vuint16m8_t): Ditto.
6562 (vint32mf2_t): Ditto.
6563 (vint32m1_t): Ditto.
6564 (vint32m2_t): Ditto.
6565 (vint32m4_t): Ditto.
6566 (vint32m8_t): Ditto.
6567 (vuint32mf2_t): Ditto.
6568 (vuint32m1_t): Ditto.
6569 (vuint32m2_t): Ditto.
6570 (vuint32m4_t): Ditto.
6571 (vuint32m8_t): Ditto.
6573 2023-06-07 Jason Merrill <jason@redhat.com>
6576 * doc/invoke.texi: Document it.
6578 2023-06-06 Roger Sayle <roger@nextmovesoftware.com>
6580 * doc/rtl.texi (bitreverse, copysign): Document new RTX codes.
6581 * rtl.def (BITREVERSE, COPYSIGN): Define new RTX codes.
6582 * simplify-rtx.cc (simplify_unary_operation_1): Optimize
6583 NOT (BITREVERSE x) as BITREVERSE (NOT x).
6584 Optimize POPCOUNT (BITREVERSE x) as POPCOUNT x.
6585 Optimize PARITY (BITREVERSE x) as PARITY x.
6586 Optimize BITREVERSE (BITREVERSE x) as x.
6587 (simplify_const_unary_operation) <case BITREVERSE>: Evaluate
6588 BITREVERSE of a constant integer at compile-time.
6589 (simplify_binary_operation_1) <case COPYSIGN>: Optimize
6590 COPY_SIGN (x, x) as x. Optimize COPYSIGN (x, C) as ABS x
6591 or NEG (ABS x) for constant C. Optimize COPYSIGN (ABS x, y)
6592 and COPYSIGN (NEG x, y) as COPYSIGN (x, y).
6593 Optimize COPYSIGN (x, ABS y) as ABS x.
6594 Optimize COPYSIGN (COPYSIGN (x, y), z) as COPYSIGN (x, z).
6595 Optimize COPYSIGN (x, COPYSIGN (y, z)) as COPYSIGN (x, z).
6596 (simplify_const_binary_operation): Evaluate COPYSIGN of constant
6597 arguments at compile-time.
6599 2023-06-06 Uros Bizjak <ubizjak@gmail.com>
6601 * rtl.h (function_invariant_p): Change return type from int to bool.
6602 * reload1.cc (function_invariant_p): Change return type from
6603 int to bool and adjust function body accordingly.
6605 2023-06-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6607 * config/riscv/autovec-opt.md (*<optab>_fma<mode>): New pattern.
6608 (*single_<optab>mult_plus<mode>): Ditto.
6609 (*double_<optab>mult_plus<mode>): Ditto.
6610 (*sign_zero_extend_fma): Ditto.
6611 (*zero_sign_extend_fma): Ditto.
6612 * config/riscv/riscv-protos.h (enum insn_type): New enum.
6614 2023-06-06 Kwok Cheung Yeung <kcy@codesourcery.com>
6615 Tobias Burnus <tobias@codesourcery.com>
6617 * gimplify.cc (omp_notice_variable): Apply GOVD_MAP_ALLOC_ONLY flag
6618 and defaultmap flags if the defaultmap has GOVD_MAP_FORCE_PRESENT flag
6620 (omp_get_attachment): Handle map clauses with 'present' modifier.
6621 (omp_group_base): Likewise.
6622 (gimplify_scan_omp_clauses): Reorder present maps to come first.
6623 Set GOVD flags for present defaultmaps.
6624 (gimplify_adjust_omp_clauses_1): Set map kind for present defaultmaps.
6625 * omp-low.cc (scan_sharing_clauses): Handle 'always, present' map
6627 (lower_omp_target): Handle map clauses with 'present' modifier.
6628 Handle 'to' and 'from' clauses with 'present'.
6629 * tree-core.h (enum omp_clause_defaultmap_kind): Add
6630 OMP_CLAUSE_DEFAULTMAP_PRESENT defaultmap kind.
6631 * tree-pretty-print.cc (dump_omp_clause): Handle 'map', 'to' and
6632 'from' clauses with 'present' modifier. Handle present defaultmap.
6633 * tree.h (OMP_CLAUSE_MOTION_PRESENT): New #define.
6635 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
6637 * config/rs6000/genfusion.pl: Delete some dead code.
6639 2023-06-06 Segher Boessenkool <segher@kernel.crashing.org>
6641 * config/rs6000/genfusion.pl (gen_ld_cmpi_p10_one): New, rewritten and
6643 (gen_ld_cmpi_p10): ... this.
6645 2023-06-06 Jeevitha Palanisamy <jeevitha@linux.ibm.com>
6648 * config/rs6000/rs6000.cc (vec_const_128bit_to_bytes): Remove
6649 duplicate expression.
6651 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6653 * config/aarch64/aarch64-builtins.cc (aarch64_general_gimple_fold_builtin):
6654 Handle unsigned reduc_plus_scal_ builtins.
6655 * config/aarch64/aarch64-simd-builtins.def (addp): Delete DImode instances.
6656 * config/aarch64/aarch64-simd.md (aarch64_addpdi): Delete.
6657 * config/aarch64/arm_neon.h (vpaddd_s64): Reimplement with
6658 __builtin_aarch64_reduc_plus_scal_v2di.
6659 (vpaddd_u64): Reimplement with __builtin_aarch64_reduc_plus_scal_v2di_uu.
6661 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6663 * config/aarch64/aarch64-simd.md (aarch64_<sur>shr_n<mode>): Delete.
6664 (aarch64_<sra_op>rshr_n<mode><vczle><vczbe>_insn): New define_insn.
6665 (aarch64_<sra_op>rshr_n<mode>): New define_expand.
6667 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6669 * config/aarch64/aarch64-simd.md (aarch64_shrn<mode>_insn_le): Delete.
6670 (aarch64_shrn<mode>_insn_be): Delete.
6671 (*aarch64_<srn_op>shrn<mode>_vect): Rename to...
6672 (*aarch64_<srn_op>shrn<mode><vczle><vczbe>): ... This.
6673 (aarch64_shrn<mode>): Remove reference to the above deleted patterns.
6674 (aarch64_rshrn<mode>_insn_le): Delete.
6675 (aarch64_rshrn<mode>_insn_be): Delete.
6676 (aarch64_rshrn<mode><vczle><vczbe>_insn): New define_insn.
6677 (aarch64_rshrn<mode>): Remove references to the above deleted patterns.
6679 2023-06-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
6681 * config/aarch64/aarch64-protos.h (aarch64_parallel_select_half_p):
6683 (aarch64_pars_overlap_p): Likewise.
6684 * config/aarch64/aarch64-simd.md (aarch64_<su>addlv<mode>):
6685 Express in terms of UNSPEC_ADDV.
6686 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): Likewise.
6687 (*aarch64_<su>addlv<mode>_reduction): Define.
6688 (*aarch64_uaddlv<mode>_reduction_2): Likewise.
6689 * config/aarch64/aarch64.cc (aarch64_parallel_select_half_p): Define.
6690 (aarch64_pars_overlap_p): Likewise.
6691 * config/aarch64/iterators.md (UNSPEC_SADDLV, UNSPEC_UADDLV): Delete.
6692 (VQUADW): New mode attribute.
6693 (VWIDE2X_S): Likewise.
6695 (su): Delete handling of UNSPEC_SADDLV, UNSPEC_UADDLV.
6696 * config/aarch64/predicates.md (vect_par_cnst_select_half): Define.
6698 2023-06-06 Richard Biener <rguenther@suse.de>
6700 PR middle-end/110055
6701 * gimplify.cc (gimplify_target_expr): Do not emit
6702 CLOBBERs for variables which have static storage duration
6703 after gimplifying their initializers.
6705 2023-06-06 Richard Biener <rguenther@suse.de>
6707 PR tree-optimization/109143
6708 * tree-ssa-structalias.cc (solution_set_expand): Avoid
6709 one bitmap iteration and optimize bit range setting.
6711 2023-06-06 Hans-Peter Nilsson <hp@axis.com>
6714 * postreload.cc (reload_cse_move2add, move2add_use_add2_insn): Use
6715 XVECEXP, not XEXP, to access first item of a PARALLEL.
6717 2023-06-06 Pan Li <pan2.li@intel.com>
6719 * config/riscv/riscv-vector-builtins-types.def
6720 (vfloat16mf4_t): Add vfloat16mf4_t to WF operations.
6721 (vfloat16mf2_t): Likewise.
6722 (vfloat16m1_t): Likewise.
6723 (vfloat16m2_t): Likewise.
6724 (vfloat16m4_t): Likewise.
6725 (vfloat16m8_t): Likewise.
6726 * config/riscv/vector-iterators.md: Add FP=16 to VWF, VWF_ZVE64,
6727 VWLMUL1, VWLMUL1_ZVE64, vwlmul1 and vwlmul1_zve64.
6729 2023-06-06 Fei Gao <gaofei@eswincomputing.com>
6731 * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Use Pmode
6732 for cfi reg/mem machmode
6733 (riscv_adjust_libcall_cfi_epilogue): Use Pmode for cfi reg machmode
6735 2023-06-06 Li Xu <xuli1@eswincomputing.com>
6737 * config/riscv/vector-iterators.md:
6738 Fix 'REQUIREMENT' for machine_mode 'MODE'.
6739 * config/riscv/vector.md (@pred_indexed_<order>store<VNX16_QHS:mode>
6740 <VNX16_QHSI:mode>): change VNX16_QHSI to VNX16_QHSDI.
6741 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSDI:mode>): Ditto.
6743 2023-06-06 Pan Li <pan2.li@intel.com>
6745 * config/riscv/vector-iterators.md: Fix typo in mode attr.
6747 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
6748 Joel Hutton <joel.hutton@arm.com>
6750 * doc/generic.texi: Remove old tree codes.
6751 * expr.cc (expand_expr_real_2): Remove old tree code cases.
6752 * gimple-pretty-print.cc (dump_binary_rhs): Likewise.
6753 * optabs-tree.cc (optab_for_tree_code): Likewise.
6754 (supportable_half_widening_operation): Likewise.
6755 * tree-cfg.cc (verify_gimple_assign_binary): Likewise.
6756 * tree-inline.cc (estimate_operator_cost): Likewise.
6757 (op_symbol_code): Likewise.
6758 * tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Likewise.
6759 (vect_analyze_data_ref_accesses): Likewise.
6760 * tree-vect-generic.cc (expand_vector_operations_1): Likewise.
6761 * cfgexpand.cc (expand_debug_expr): Likewise.
6762 * tree-vect-stmts.cc (vectorizable_conversion): Likewise.
6763 (supportable_widening_operation): Likewise.
6764 * gimple-range-op.cc (gimple_range_op_handler::maybe_non_standard):
6766 * optabs.def (vec_widen_ssubl_hi_optab, vec_widen_ssubl_lo_optab,
6767 vec_widen_saddl_hi_optab, vec_widen_saddl_lo_optab,
6768 vec_widen_usubl_hi_optab, vec_widen_usubl_lo_optab,
6769 vec_widen_uaddl_hi_optab, vec_widen_uaddl_lo_optab): Remove optabs.
6770 * tree-pretty-print.cc (dump_generic_node): Remove tree code definition.
6771 * tree.def (WIDEN_PLUS_EXPR, WIDEN_MINUS_EXPR, VEC_WIDEN_PLUS_HI_EXPR,
6772 VEC_WIDEN_PLUS_LO_EXPR, VEC_WIDEN_MINUS_HI_EXPR,
6773 VEC_WIDEN_MINUS_LO_EXPR): Likewise.
6775 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
6776 Joel Hutton <joel.hutton@arm.com>
6777 Tamar Christina <tamar.christina@arm.com>
6779 * config/aarch64/aarch64-simd.md (vec_widen_<su>addl_lo_<mode>): Rename
6781 (vec_widen_<su>add_lo_<mode>): ... to this.
6782 (vec_widen_<su>addl_hi_<mode>): Rename this ...
6783 (vec_widen_<su>add_hi_<mode>): ... to this.
6784 (vec_widen_<su>subl_lo_<mode>): Rename this ...
6785 (vec_widen_<su>sub_lo_<mode>): ... to this.
6786 (vec_widen_<su>subl_hi_<mode>): Rename this ...
6787 (vec_widen_<su>sub_hi_<mode>): ...to this.
6788 * doc/generic.texi: Document new IFN codes.
6789 * internal-fn.cc (lookup_hilo_internal_fn): Add lookup function.
6790 (commutative_binary_fn_p): Add widen_plus fn's.
6791 (widening_fn_p): New function.
6792 (narrowing_fn_p): New function.
6793 (direct_internal_fn_optab): Change visibility.
6794 * internal-fn.def (DEF_INTERNAL_WIDENING_OPTAB_FN): Macro to define an
6795 internal_fn that expands into multiple internal_fns for widening.
6796 (IFN_VEC_WIDEN_PLUS, IFN_VEC_WIDEN_PLUS_HI, IFN_VEC_WIDEN_PLUS_LO,
6797 IFN_VEC_WIDEN_PLUS_EVEN, IFN_VEC_WIDEN_PLUS_ODD,
6798 IFN_VEC_WIDEN_MINUS, IFN_VEC_WIDEN_MINUS_HI,
6799 IFN_VEC_WIDEN_MINUS_LO, IFN_VEC_WIDEN_MINUS_ODD,
6800 IFN_VEC_WIDEN_MINUS_EVEN): Define widening plus,minus functions.
6801 * internal-fn.h (direct_internal_fn_optab): Declare new prototype.
6802 (lookup_hilo_internal_fn): Likewise.
6803 (widening_fn_p): Likewise.
6804 (Narrowing_fn_p): Likewise.
6805 * optabs.cc (commutative_optab_p): Add widening plus optabs.
6806 * optabs.def (OPTAB_D): Define widen add, sub optabs.
6807 * tree-vect-patterns.cc (vect_recog_widen_op_pattern): Support
6808 patterns with a hi/lo or even/odd split.
6809 (vect_recog_sad_pattern): Refactor to use new IFN codes.
6810 (vect_recog_widen_plus_pattern): Likewise.
6811 (vect_recog_widen_minus_pattern): Likewise.
6812 (vect_recog_average_pattern): Likewise.
6813 * tree-vect-stmts.cc (vectorizable_conversion): Add support for
6815 (supportable_widening_operation): Likewise.
6816 * tree.def (WIDEN_SUM_EXPR): Update example to use new IFNs.
6818 2023-06-05 Andre Vieira <andre.simoesdiasvieira@arm.com>
6819 Joel Hutton <joel.hutton@arm.com>
6821 * tree-vect-patterns.cc: Add include for gimple-iterator.
6822 (vect_recog_widen_op_pattern): Refactor to use code_helper.
6823 (vect_gimple_build): New function.
6824 * tree-vect-stmts.cc (simple_integer_narrowing): Refactor to use
6826 (vectorizable_call): Likewise.
6827 (vect_gen_widened_results_half): Likewise.
6828 (vect_create_vectorized_demotion_stmts): Likewise.
6829 (vect_create_vectorized_promotion_stmts): Likewise.
6830 (vect_create_half_widening_stmts): Likewise.
6831 (vectorizable_conversion): Likewise.
6832 (supportable_widening_operation): Likewise.
6833 (supportable_narrowing_operation): Likewise.
6834 * tree-vectorizer.h (supportable_widening_operation): Change
6835 prototype to use code_helper.
6836 (supportable_narrowing_operation): Likewise.
6837 (vect_gimple_build): New function prototype.
6838 * tree.h (code_helper::safe_as_tree_code): New function.
6839 (code_helper::safe_as_fn_code): New function.
6841 2023-06-05 Roger Sayle <roger@nextmovesoftware.com>
6843 * wide-int.cc (wi::bitreverse_large): New function implementing
6844 bit reversal of an integer.
6845 * wide-int.h (wi::bitreverse): New (template) function prototype.
6846 (bitreverse_large): Prototype helper function/implementation.
6847 (wi::bitreverse): New template wrapper around bitreverse_large.
6849 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
6851 * rtl.h (print_rtl_single): Change return type from int to void.
6852 (print_rtl_single_with_indent): Ditto.
6853 * print-rtl.h (class rtx_writer): Ditto. Change m_sawclose to bool.
6854 * print-rtl.cc (rtx_writer::rtx_writer): Update for m_sawclose change.
6855 (rtx_writer::print_rtx_operand_code_0): Ditto.
6856 (rtx_writer::print_rtx_operand_codes_E_and_V): Ditto.
6857 (rtx_writer::print_rtx_operand_code_i): Ditto.
6858 (rtx_writer::print_rtx_operand_code_u): Ditto.
6859 (rtx_writer::print_rtx_operand): Ditto.
6860 (rtx_writer::print_rtx): Ditto.
6861 (rtx_writer::finish_directive): Ditto.
6862 (print_rtl_single): Change return type from int to void
6863 and adjust function body accordingly.
6864 (rtx_writer::print_rtl_single_with_indent): Ditto.
6866 2023-06-05 Uros Bizjak <ubizjak@gmail.com>
6868 * rtl.h (reg_classes_intersect_p): Change return type from int to bool.
6869 (reg_class_subset_p): Ditto.
6870 * reginfo.cc (reg_classes_intersect_p): Ditto.
6871 (reg_class_subset_p): Ditto.
6873 2023-06-05 Pan Li <pan2.li@intel.com>
6875 * config/riscv/riscv-vector-builtins-types.def
6876 (vfloat32mf2_t): New type for DEF_RVV_WEXTF_OPS.
6877 (vfloat32m1_t): Ditto.
6878 (vfloat32m2_t): Ditto.
6879 (vfloat32m4_t): Ditto.
6880 (vfloat32m8_t): Ditto.
6881 (vint16mf4_t): New type for DEF_RVV_CONVERT_I_OPS.
6882 (vint16mf2_t): Ditto.
6883 (vint16m1_t): Ditto.
6884 (vint16m2_t): Ditto.
6885 (vint16m4_t): Ditto.
6886 (vint16m8_t): Ditto.
6887 (vuint16mf4_t): New type for DEF_RVV_CONVERT_U_OPS.
6888 (vuint16mf2_t): Ditto.
6889 (vuint16m1_t): Ditto.
6890 (vuint16m2_t): Ditto.
6891 (vuint16m4_t): Ditto.
6892 (vuint16m8_t): Ditto.
6893 (vint32mf2_t): New type for DEF_RVV_WCONVERT_I_OPS.
6894 (vint32m1_t): Ditto.
6895 (vint32m2_t): Ditto.
6896 (vint32m4_t): Ditto.
6897 (vint32m8_t): Ditto.
6898 (vuint32mf2_t): New type for DEF_RVV_WCONVERT_U_OPS.
6899 (vuint32m1_t): Ditto.
6900 (vuint32m2_t): Ditto.
6901 (vuint32m4_t): Ditto.
6902 (vuint32m8_t): Ditto.
6903 * config/riscv/vector-iterators.md: Add FP=16 support for V,
6904 VWCONVERTI, VCONVERT, VNCONVERT, VMUL1 and vlmul1.
6906 2023-06-05 Andrew Pinski <apinski@marvell.com>
6909 * Makefile.in (clean): Remove the removing of
6910 MULTILIB_DIR/MULTILIB_OPTIONS directories.
6912 2023-06-05 YunQiang Su <yunqiang.su@cipunited.com>
6914 * config/mips/mips-protos.h (mips_emit_speculation_barrier): New
6916 * config/mips/mips.cc (speculation_barrier_libfunc): New static
6918 (mips_init_libfuncs): Initialize it.
6919 (mips_emit_speculation_barrier): New function.
6920 * config/mips/mips.md (speculation_barrier): Call
6921 mips_emit_speculation_barrier.
6923 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6925 * config/riscv/riscv-v.cc (class rvv_builder): Reorganize functions.
6926 (rvv_builder::can_duplicate_repeating_sequence_p): Ditto.
6927 (rvv_builder::repeating_sequence_use_merge_profitable_p): Ditto.
6928 (rvv_builder::get_merged_repeating_sequence): Ditto.
6929 (rvv_builder::get_merge_scalar_mask): Ditto.
6930 (emit_scalar_move_insn): Ditto.
6931 (emit_vlmax_integer_move_insn): Ditto.
6932 (emit_nonvlmax_integer_move_insn): Ditto.
6933 (emit_vlmax_gather_insn): Ditto.
6934 (emit_vlmax_masked_gather_mu_insn): Ditto.
6935 (get_repeating_sequence_dup_machine_mode): Ditto.
6937 2023-06-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6939 * config/riscv/autovec.md: Split arguments.
6940 * config/riscv/riscv-protos.h (expand_vec_perm): Ditto.
6941 * config/riscv/riscv-v.cc (expand_vec_perm): Ditto.
6943 2023-06-04 Andrew Pinski <apinski@marvell.com>
6945 * expr.cc (do_store_flag): Improve for single bit testing
6946 not against zero but against that single bit.
6948 2023-06-04 Andrew Pinski <apinski@marvell.com>
6950 * expr.cc (do_store_flag): Extend the one bit checking case
6951 to handle the case where we don't have an and but rather still
6952 one bit is known to be non-zero.
6954 2023-06-04 Jeff Law <jlaw@ventanamicro.com>
6956 * config/h8300/constraints.md (Zz): Make this a normal
6958 * config/h8300/h8300.cc (TARGET_LRA_P): Remove.
6959 * config/h8300/logical.md (H8/SX bit patterns): Remove.
6961 2023-06-04 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
6963 * config/xtensa/xtensa.md (*btrue_INT_MIN, *eqne_INT_MIN):
6964 New insn_and_split patterns.
6966 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6969 * config/riscv/riscv-vector-builtins-bases.cc: Change expand approach.
6970 * config/riscv/vector.md (@vlmul_extx2<mode>): Remove it.
6971 (@vlmul_extx4<mode>): Ditto.
6972 (@vlmul_extx8<mode>): Ditto.
6973 (@vlmul_extx16<mode>): Ditto.
6974 (@vlmul_extx32<mode>): Ditto.
6975 (@vlmul_extx64<mode>): Ditto.
6976 (*vlmul_extx2<mode>): Ditto.
6977 (*vlmul_extx4<mode>): Ditto.
6978 (*vlmul_extx8<mode>): Ditto.
6979 (*vlmul_extx16<mode>): Ditto.
6980 (*vlmul_extx32<mode>): Ditto.
6981 (*vlmul_extx64<mode>): Ditto.
6983 2023-06-04 Pan Li <pan2.li@intel.com>
6985 * config/riscv/riscv-vector-builtins-types.def
6986 (vfloat32mf2_t): Add vfloat32mf2_t type to vfncvt.f.f.w operations.
6987 (vfloat32m1_t): Likewise.
6988 (vfloat32m2_t): Likewise.
6989 (vfloat32m4_t): Likewise.
6990 (vfloat32m8_t): Likewise.
6991 * config/riscv/riscv-vector-builtins.def: Fix typo in comments.
6992 * config/riscv/vector-iterators.md: Add single to half machine
6995 2023-06-04 Juzhe-Zhong <juzhe.zhong@rivai.ai>
6997 * config/riscv/autovec-opt.md (*<optab>not<mode>): Move to autovec-opt.md.
6998 (*n<optab><mode>): Ditto.
6999 * config/riscv/autovec.md (*<optab>not<mode>): Ditto.
7000 (*n<optab><mode>): Ditto.
7001 * config/riscv/vector.md: Ditto.
7003 2023-06-04 Roger Sayle <roger@nextmovesoftware.com>
7006 * config/i386/i386-features.cc (scalar_chain::convert_compare):
7007 Update or delete REG_EQUAL notes, converting CONST_INT and
7008 CONST_WIDE_INT immediate operands to a suitable CONST_VECTOR.
7010 2023-06-04 Jason Merrill <jason@redhat.com>
7013 * tree-eh.cc (lower_resx): Pass the exception pointer to the
7015 * except.h: Tweak comment.
7017 2023-06-04 Hans-Peter Nilsson <hp@axis.com>
7019 * postreload.cc (move2add_use_add2_insn): Handle
7020 trivial single_sets. Rename variable PAT to SET.
7021 (move2add_use_add3_insn, reload_cse_move2add): Similar.
7023 2023-06-04 Pan Li <pan2.li@intel.com>
7025 * config/riscv/riscv-vector-builtins-types.def
7026 (vfloat16mf4_t): Add the float16 type to DEF_RVV_F_OPS.
7027 (vfloat16mf2_t): Likewise.
7028 (vfloat16m1_t): Likewise.
7029 (vfloat16m2_t): Likewise.
7030 (vfloat16m4_t): Likewise.
7031 (vfloat16m8_t): Likewise.
7032 * config/riscv/riscv.md: Add vfloat16*_t to attr mode.
7033 * config/riscv/vector-iterators.md: Add vfloat16*_t machine mode
7034 to V, V_WHOLE, V_FRACT, VINDEX, VM, VEL and sew.
7035 * config/riscv/vector.md: Add vfloat16*_t machine mode to sew,
7038 2023-06-03 Fei Gao <gaofei@eswincomputing.com>
7040 * config/riscv/riscv.cc (riscv_expand_epilogue): fix cfi issue with
7043 2023-06-03 Die Li <lidie@eswincomputing.com>
7045 * config/riscv/thead.md (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Delete.
7047 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7049 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
7051 2023-06-03 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7053 * config/riscv/vector.md: Add vector-opt.md.
7054 * config/riscv/autovec-opt.md: New file.
7056 2023-06-03 liuhongt <hongtao.liu@intel.com>
7058 PR tree-optimization/110067
7059 * gimple-ssa-store-merging.cc (find_bswap_or_nop): Don't try
7060 bswap + rotate when TYPE_PRECISION(n->type) > n->range.
7062 2023-06-03 liuhongt <hongtao.liu@intel.com>
7065 * config/i386/mmx.md (truncv2hiv2qi2): New define_insn.
7066 (truncv2si<mode>2): Ditto.
7068 2023-06-02 Andrew Pinski <apinski@marvell.com>
7070 PR rtl-optimization/102733
7071 * dse.cc (store_info): Add addrspace field.
7072 (record_store): Record the address space
7073 and check to make sure they are the same.
7075 2023-06-02 Andrew Pinski <apinski@marvell.com>
7077 PR rtl-optimization/110042
7078 * ifcvt.cc (bbs_ok_for_cmove_arith): Allow paradoxical subregs.
7079 (bb_valid_for_noce_process_p): Strip the subreg for the SET_DEST.
7081 2023-06-02 Iain Sandoe <iain@sandoe.co.uk>
7084 * config/rs6000/rs6000.cc (darwin_rs6000_special_round_type_align):
7085 Make sure that we do not have a cap on field alignment before altering
7086 the struct layout based on the type alignment of the first entry.
7088 2023-06-02 David Faust <david.faust@oracle.com>
7091 * btfout.cc (btf_absolute_func_id): New function.
7092 (btf_asm_func_type): Call it here. Change index parameter from
7093 size_t to ctf_id_t. Use PRIu64 formatter.
7095 2023-06-02 Alex Coplan <alex.coplan@arm.com>
7097 * btfout.cc (btf_asm_type): Use PRIu64 instead of %lu for uint64_t.
7098 (btf_asm_datasec_type): Likewise.
7100 2023-06-02 Carl Love <cel@us.ibm.com>
7102 * config/rs6000/rs6000-builtins.def (__builtin_altivec_tr_stxvrhx,
7103 __builtin_altivec_tr_stxvrwx): Fix type of third argument.
7105 2023-06-02 Jason Merrill <jason@redhat.com>
7109 * tree.h (DECL_MERGEABLE): New.
7110 * tree-core.h (struct tree_decl_common): Mention it.
7111 * gimplify.cc (gimplify_init_constructor): Check it.
7112 * cgraph.cc (symtab_node::address_can_be_compared_p): Likewise.
7113 * varasm.cc (categorize_decl_for_section): Likewise.
7115 2023-06-02 Uros Bizjak <ubizjak@gmail.com>
7117 * rtl.h (stack_regs_mentioned): Change return type from int to bool.
7118 * reg-stack.cc (struct_block_info_def): Change "done" to bool.
7119 (stack_regs_mentioned_p): Change return type from int to bool
7120 and adjust function body accordingly.
7121 (stack_regs_mentioned): Ditto.
7122 (check_asm_stack_operands): Ditto. Change "malformed_asm"
7124 (move_for_stack_reg): Recode handling of control_flow_insn_deleted.
7125 (swap_rtx_condition_1): Change return type from int to bool
7126 and adjust function body accordingly. Change "r" variable to bool.
7127 (swap_rtx_condition): Change return type from int to bool
7128 and adjust function body accordingly.
7129 (subst_stack_regs_pat): Recode handling of control_flow_insn_deleted.
7130 (subst_stack_regs): Ditto.
7131 (convert_regs_entry): Change return type from int to bool and adjust
7132 function body accordingly. Change "inserted" variable to bool.
7133 (convert_regs_1): Recode handling of control_flow_insn_deleted.
7134 (convert_regs_2): Recode handling of cfg_altered.
7135 (convert_regs): Ditto. Change "inserted" variable to bool.
7137 2023-06-02 Jason Merrill <jason@redhat.com>
7140 * varasm.cc (output_constant) [REAL_TYPE]: Check that sizes match.
7141 (initializer_constant_valid_p_1): Compare float precision.
7143 2023-06-02 Alexander Monakov <amonakov@ispras.ru>
7145 * doc/extend.texi (Vector Extensions): Clarify bitwise shift
7148 2023-06-02 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
7150 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly): Change decrement IV flow.
7151 (vect_set_loop_condition_partial_vectors): Ditto.
7153 2023-06-02 Georg-Johann Lay <avr@gjlay.de>
7156 * config/avr/avr.md: Add an RTL peephole to optimize operations on
7157 non-LD_REGS after a move from LD_REGS.
7158 (piaop): New code iterator.
7160 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
7163 * doc/install.texi: Document (optional) Perl usage for parallel
7166 2023-06-02 Thomas Schwinge <thomas@codesourcery.com>
7169 * doc/install.texi (Perl): Back to requiring "Perl version 5.6.1 (or
7172 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7173 KuanLin Chen <best124612@gmail.com>
7175 * config/riscv/riscv-vector-builtins-bases.cc: Add _mu overloaded intrinsics.
7176 * config/riscv/riscv-vector-builtins-shapes.cc (struct fault_load_def): Ditto.
7178 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7180 * config/riscv/riscv-v.cc (expand_vec_series): Optimize reverse series index vector.
7182 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7184 * config/riscv/predicates.md: Change INTVAL into UINTVAL.
7186 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7188 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_VXRM_ENUM): Add
7190 (DEF_RVV_FRM_ENUM): Ditto.
7192 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7194 * config/riscv/riscv-vector-builtins-bases.cc: Change vwadd.wv/vwsub.wv
7195 intrinsic API expander
7196 * config/riscv/vector.md
7197 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Remove it.
7198 (@pred_single_widen_sub<any_extend:su><mode>): New pattern.
7199 (@pred_single_widen_add<any_extend:su><mode>): New pattern.
7201 2023-06-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7203 * config/riscv/autovec.md (vec_perm<mode>): New pattern.
7204 * config/riscv/predicates.md (vector_perm_operand): New predicate.
7205 * config/riscv/riscv-protos.h (enum insn_type): New enum.
7206 (expand_vec_perm): New function.
7207 * config/riscv/riscv-v.cc (const_vec_all_in_range_p): Ditto.
7208 (gen_const_vector_dup): Ditto.
7209 (emit_vlmax_gather_insn): Ditto.
7210 (emit_vlmax_masked_gather_mu_insn): Ditto.
7211 (expand_vec_perm): Ditto.
7213 2023-06-01 Jason Merrill <jason@redhat.com>
7215 * doc/invoke.texi (-Wpedantic): Improve clarity.
7217 2023-06-01 Uros Bizjak <ubizjak@gmail.com>
7219 * rtl.h (exp_equiv_p): Change return type from int to bool.
7220 * cse.cc (mention_regs): Change return type from int to bool
7221 and adjust function body accordingly.
7222 (exp_equiv_p): Ditto.
7223 (insert_regs): Ditto. Change "modified" function argument to bool
7224 and update usage accordingly.
7225 (record_jump_cond): Remove always zero "reversed_nonequality"
7226 function argument and update usage accordingly.
7227 (fold_rtx): Change "changed" variable to bool.
7228 (record_jump_equiv): Remove unneeded "reversed_nonequality" variable.
7229 (is_dead_reg): Change return type from int to bool.
7231 2023-06-01 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
7233 * config/xtensa/xtensa.md (adddi3, subdi3):
7234 New RTL generation patterns implemented according to the instruc-
7235 tion idioms described in the Xtensa ISA reference manual (p. 600).
7237 2023-06-01 Roger Sayle <roger@nextmovesoftware.com>
7238 Uros Bizjak <ubizjak@gmail.com>
7241 * config/i386/i386-builtin.def (__builtin_ia32_ptestz128): Use new
7242 CODE_for_sse4_1_ptestzv2di.
7243 (__builtin_ia32_ptestc128): Use new CODE_for_sse4_1_ptestcv2di.
7244 (__builtin_ia32_ptestz256): Use new CODE_for_avx_ptestzv4di.
7245 (__builtin_ia32_ptestc256): Use new CODE_for_avx_ptestcv4di.
7246 * config/i386/i386-expand.cc (ix86_expand_branch): Use CCZmode
7247 when expanding UNSPEC_PTEST to compare against zero.
7248 * config/i386/i386-features.cc (scalar_chain::convert_compare):
7249 Likewise generate CCZmode UNSPEC_PTESTs when converting comparisons.
7250 (general_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
7251 (timode_scalar_chain::convert_insn): Use CCZmode for COMPARE result.
7252 * config/i386/i386-protos.h (ix86_match_ptest_ccmode): Prototype.
7253 * config/i386/i386.cc (ix86_match_ptest_ccmode): New predicate to
7254 check for suitable matching modes for the UNSPEC_PTEST pattern.
7255 * config/i386/sse.md (define_split): When splitting UNSPEC_MOVMSK
7256 to UNSPEC_PTEST, preserve the FLAG_REG mode as CCZ.
7257 (*<sse4_1>_ptest<mode>): Add asterisk to hide define_insn. Remove
7258 ":CC" mode of FLAGS_REG, instead use ix86_match_ptest_ccmode.
7259 (<sse4_1>_ptestz<mode>): New define_expand to specify CCZ.
7260 (<sse4_1>_ptestc<mode>): New define_expand to specify CCC.
7261 (<sse4_1>_ptest<mode>): A define_expand using CC to preserve the
7263 (*ptest<mode>_and): Specify CCZ to only perform this optimization
7264 when only the Z flag is required.
7266 2023-06-01 Jonathan Wakely <jwakely@redhat.com>
7269 * doc/invoke.texi (x86 Options): Fix description of -m32 option.
7271 2023-06-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7273 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>):
7274 Add =r,m and =r,m alternatives.
7275 (load_pair<DREG:mode><DREG2:mode>): Likewise.
7276 (vec_store_pair<DREG:mode><DREG2:mode>): Likewise.
7278 2023-06-01 Pan Li <pan2.li@intel.com>
7280 * common/config/riscv/riscv-common.cc: Add FP_16 mask to zvfhmin
7282 * config/riscv/genrvv-type-indexer.cc (valid_type): Allow FP16.
7283 (main): Disable FP16 tuple.
7284 * config/riscv/riscv-opts.h (MASK_VECTOR_ELEN_FP_16): New macro.
7285 (TARGET_VECTOR_ELEN_FP_16): Ditto.
7286 * config/riscv/riscv-vector-builtins.cc (check_required_extensions):
7288 * config/riscv/riscv-vector-builtins.def (vfloat16mf4_t): New type.
7289 (vfloat16mf2_t): Ditto.
7290 (vfloat16m1_t): Ditto.
7291 (vfloat16m2_t): Ditto.
7292 (vfloat16m4_t): Ditto.
7293 (vfloat16m8_t): Ditto.
7294 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ELEN_FP_16):
7296 * config/riscv/riscv-vector-switch.def (ENTRY): Allow FP16
7297 machine mode based on TARGET_VECTOR_ELEN_FP_16.
7299 2023-06-01 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7301 * config/riscv/riscv-vector-builtins.cc (register_frm): New function.
7302 (DEF_RVV_FRM_ENUM): New macro.
7303 (handle_pragma_vector): Add FRM enum
7304 * config/riscv/riscv-vector-builtins.def (DEF_RVV_FRM_ENUM): New macro.
7311 2023-05-31 Roger Sayle <roger@nextmovesoftware.com>
7312 Richard Sandiford <richard.sandiford@arm.com>
7314 * fold-const-call.cc (fold_const_call_ss) <CFN_BUILT_IN_BSWAP*>:
7315 Update call to wi::bswap.
7316 * simplify-rtx.cc (simplify_const_unary_operation) <case BSWAP>:
7317 Update call to wi::bswap.
7318 * tree-ssa-ccp.cc (evaluate_stmt) <case BUILT_IN_BSWAP*>:
7319 Update calls to wi::bswap.
7320 * wide-int.cc (wide_int_storage::bswap): Remove/rename to...
7321 (wi::bswap_large): New function, with revised API.
7322 * wide-int.h (wi::bswap): New (template) function prototype.
7323 (wide_int_storage::bswap): Remove method.
7324 (sext_large, zext_large): Consistent indentation/line wrapping.
7325 (bswap_large): Prototype helper function containing implementation.
7326 (wi::bswap): New template wrapper around bswap_large.
7328 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7331 * config/aarch64/aarch64-simd.md (<sur>dot_prod<vsi2qi>): Rename to...
7332 (<sur>dot_prod<vsi2qi><vczle><vczbe>): ... This.
7333 (usdot_prod<vsi2qi>): Rename to...
7334 (usdot_prod<vsi2qi><vczle><vczbe>): ... This.
7335 (aarch64_<sur>dot_lane<vsi2qi>): Rename to...
7336 (aarch64_<sur>dot_lane<vsi2qi><vczle><vczbe>): ... This.
7337 (aarch64_<sur>dot_laneq<vsi2qi>): Rename to...
7338 (aarch64_<sur>dot_laneq<vsi2qi><vczle><vczbe>): ... This.
7339 (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi>): Rename to...
7340 (aarch64_<DOTPROD_I8MM:sur>dot_lane<VB:isquadop><VS:vsi2qi><vczle><vczbe>):
7343 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7346 * config/aarch64/aarch64-simd.md (aarch64_sq<r>dmulh<mode>): Rename to...
7347 (aarch64_sq<r>dmulh<mode><vczle><vczbe>): ... This.
7348 (aarch64_sq<r>dmulh_n<mode>): Rename to...
7349 (aarch64_sq<r>dmulh_n<mode><vczle><vczbe>): ... This.
7350 (aarch64_sq<r>dmulh_lane<mode>): Rename to...
7351 (aarch64_sq<r>dmulh_lane<mode><vczle><vczbe>): ... This.
7352 (aarch64_sq<r>dmulh_laneq<mode>): Rename to...
7353 (aarch64_sq<r>dmulh_laneq<mode><vczle><vczbe>): ... This.
7354 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode>): Rename to...
7355 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h<mode><vczle><vczbe>): ... This.
7356 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Rename to...
7357 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode><vczle><vczbe>): ... This.
7358 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Rename to...
7359 (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode><vczle><vczbe>): ... This.
7361 2023-05-31 David Faust <david.faust@oracle.com>
7363 * btfout.cc (btf_kind_names): New.
7364 (btf_kind_name): New.
7365 (btf_absolute_var_id): New utility function.
7366 (btf_relative_var_id): Likewise.
7367 (btf_relative_func_id): Likewise.
7368 (btf_absolute_datasec_id): Likewise.
7369 (btf_asm_type_ref): New.
7370 (btf_asm_type): Update asm comments and use btf_asm_type_ref ().
7371 (btf_asm_array): Likewise. Accept ctf_container_ref parameter.
7372 (btf_asm_varent): Likewise.
7373 (btf_asm_func_arg): Likewise.
7374 (btf_asm_datasec_entry): Likewise.
7375 (btf_asm_datasec_type): Likewise.
7376 (btf_asm_func_type): Likewise. Add index parameter.
7377 (btf_asm_enum_const): Likewise.
7378 (btf_asm_sou_member): Likewise.
7379 (output_btf_vars): Update btf_asm_* call accordingly.
7380 (output_asm_btf_sou_fields): Likewise.
7381 (output_asm_btf_enum_list): Likewise.
7382 (output_asm_btf_func_args_list): Likewise.
7383 (output_asm_btf_vlen_bytes): Likewise.
7384 (output_btf_func_types): Add ctf_container_ref parameter.
7385 Pass it to btf_asm_func_type.
7386 (output_btf_datasec_types): Update btf_asm_datsec_type call similarly.
7387 (btf_output): Update output_btf_func_types call similarly.
7389 2023-05-31 David Faust <david.faust@oracle.com>
7391 * btfout.cc (btf_asm_type): Add dedicated cases for BTF_KIND_ARRAY
7392 and BTF_KIND_FWD which do not use the size/type field at all.
7394 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
7396 * rtl.h (subreg_lowpart_p): Change return type from int to bool.
7397 (active_insn_p): Ditto.
7398 (in_sequence_p): Ditto.
7399 (unshare_all_rtl): Change return type from int to void.
7400 * emit-rtl.h (mem_expr_equal_p): Change return type from int to bool.
7401 * emit-rtl.cc (subreg_lowpart_p): Change return type from int to bool
7402 and adjust function body accordingly.
7403 (mem_expr_equal_p): Ditto.
7404 (unshare_all_rtl): Change return type from int to void
7405 and adjust function body accordingly.
7406 (verify_rtx_sharing): Remove unneeded return.
7407 (active_insn_p): Change return type from int to bool
7408 and adjust function body accordingly.
7409 (in_sequence_p): Ditto.
7411 2023-05-31 Uros Bizjak <ubizjak@gmail.com>
7413 * rtl.h (true_dependence): Change return type from int to bool.
7414 (canon_true_dependence): Ditto.
7415 (read_dependence): Ditto.
7416 (anti_dependence): Ditto.
7417 (canon_anti_dependence): Ditto.
7418 (output_dependence): Ditto.
7419 (canon_output_dependence): Ditto.
7420 (may_alias_p): Ditto.
7421 * alias.h (alias_sets_conflict_p): Ditto.
7422 (alias_sets_must_conflict_p): Ditto.
7423 (objects_must_conflict_p): Ditto.
7424 (nonoverlapping_memrefs_p): Ditto.
7425 * alias.cc (rtx_equal_for_memref_p): Remove forward declaration.
7426 (record_set): Ditto.
7427 (base_alias_check): Ditto.
7428 (find_base_value): Ditto.
7429 (mems_in_disjoint_alias_sets_p): Ditto.
7430 (get_alias_set_entry): Ditto.
7431 (decl_for_component_ref): Ditto.
7432 (write_dependence_p): Ditto.
7433 (memory_modified_1): Ditto.
7434 (mems_in_disjoint_alias_set_p): Change return type from int to bool
7435 and adjust function body accordingly.
7436 (alias_sets_conflict_p): Ditto.
7437 (alias_sets_must_conflict_p): Ditto.
7438 (objects_must_conflict_p): Ditto.
7439 (rtx_equal_for_memref_p): Ditto.
7440 (base_alias_check): Ditto.
7441 (read_dependence): Ditto.
7442 (nonoverlapping_memrefs_p): Ditto.
7443 (true_dependence_1): Ditto.
7444 (true_dependence): Ditto.
7445 (canon_true_dependence): Ditto.
7446 (write_dependence_p): Ditto.
7447 (anti_dependence): Ditto.
7448 (canon_anti_dependence): Ditto.
7449 (output_dependence): Ditto.
7450 (canon_output_dependence): Ditto.
7451 (may_alias_p): Ditto.
7452 (init_alias_analysis): Change "changed" variable to bool.
7454 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7456 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): Change
7457 expand into define_insn_and_split.
7459 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7461 * config/riscv/vector.md: Remove FRM.
7463 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7465 * config/riscv/vector.md: Remove FRM.
7467 2023-05-31 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7469 * config/riscv/vector.md: Remove FRM.
7471 2023-05-31 Christophe Lyon <christophe.lyon@linaro.org>
7474 * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New
7477 2023-05-31 Richard Biener <rguenther@suse.de>
7480 PR tree-optimization/109143
7481 * tree-ssa-structalias.cc (struct topo_info): Remove.
7482 (init_topo_info): Likewise.
7483 (free_topo_info): Likewise.
7484 (compute_topo_order): Simplify API, put the component
7485 with ESCAPED last so it's processed first.
7486 (topo_visit): Adjust.
7487 (solve_graph): Likewise.
7489 2023-05-31 Richard Biener <rguenther@suse.de>
7491 * tree-ssa-structalias.cc (constraint_stats::num_avoided_edges):
7493 (add_graph_edge): Count redundant edges we avoid to create.
7494 (dump_sa_stats): Dump them.
7495 (ipa_pta_execute): Do not dump generating constraints when
7496 we are not dumping them.
7498 2023-05-31 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7500 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<VDMOV:mode>): Rewrite
7501 output template to avoid explicit switch on which_alternative.
7502 (*aarch64_simd_mov<VQMOV:mode>): Likewise.
7503 (and<mode>3): Likewise.
7504 (ior<mode>3): Likewise.
7505 * config/aarch64/aarch64.md (*mov<mode>_aarch64): Likewise.
7507 2023-05-31 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
7509 * config/xtensa/predicates.md (xtensa_bit_join_operator):
7511 * config/xtensa/xtensa.md (ior_op): Remove.
7512 (*shlrd_reg): Rename from "*shlrd_reg_<code>", and add the
7513 insn_and_split pattern of the same name to express and capture
7514 the bit-combining operation with both sides swapped.
7515 In addition, replace use of code iterator with new operator
7517 (*shlrd_const, *shlrd_per_byte):
7518 Likewise regarding the code iterator.
7520 2023-05-31 Cui, Lili <lili.cui@intel.com>
7522 PR tree-optimization/110038
7523 * params.opt: Add a limit on tree-reassoc-width.
7524 * tree-ssa-reassoc.cc
7525 (rewrite_expr_tree_parallel): Add width limit.
7527 2023-05-31 Pan Li <pan2.li@intel.com>
7529 * common/config/riscv/riscv-common.cc:
7530 (riscv_implied_info): Add zvfh item.
7531 (riscv_ext_version_table): Ditto.
7532 (riscv_ext_flag_table): Ditto.
7533 * config/riscv/riscv-opts.h (MASK_ZVFH): New macro.
7534 (TARGET_ZVFH): Ditto.
7536 2023-05-30 liuhongt <hongtao.liu@intel.com>
7538 PR tree-optimization/108804
7539 * tree-vect-patterns.cc (vect_get_range_info): Remove static.
7540 * tree-vect-stmts.cc (vect_create_vectorized_demotion_stmts):
7541 Add new parameter narrow_src_p.
7542 (vectorizable_conversion): Enhance NARROW FLOAT_EXPR
7543 vectorization by truncating to lower precision.
7544 * tree-vectorizer.h (vect_get_range_info): New declare.
7546 2023-05-30 Vladimir N. Makarov <vmakarov@redhat.com>
7548 * lra-int.h (lra_update_sp_offset): Add the prototype.
7549 * lra.cc (setup_sp_offset): Change the return type. Use
7550 lra_update_sp_offset.
7551 * lra-eliminations.cc (lra_update_sp_offset): New function.
7552 (lra_process_new_insns): Push the current insn to reprocess if the
7553 input reload changes sp offset.
7555 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
7558 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
7559 Fix misleading identation.
7561 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
7563 * rtl.h (comparison_dominates_p): Change return type from int to bool.
7564 (condjump_p): Ditto.
7565 (any_condjump_p): Ditto.
7566 (any_uncondjump_p): Ditto.
7567 (simplejump_p): Ditto.
7568 (returnjump_p): Ditto.
7569 (eh_returnjump_p): Ditto.
7570 (onlyjump_p): Ditto.
7571 (invert_jump_1): Ditto.
7572 (invert_jump): Ditto.
7573 (rtx_renumbered_equal_p): Ditto.
7574 (redirect_jump_1): Ditto.
7575 (redirect_jump): Ditto.
7576 (condjump_in_parallel_p): Ditto.
7577 * jump.cc (invert_exp_1): Adjust forward declaration.
7578 (comparison_dominates_p): Change return type from int to bool
7579 and adjust function body accordingly.
7580 (simplejump_p): Ditto.
7581 (condjump_p): Ditto.
7582 (condjump_in_parallel_p): Ditto.
7583 (any_uncondjump_p): Ditto.
7584 (any_condjump_p): Ditto.
7585 (returnjump_p): Ditto.
7586 (eh_returnjump_p): Ditto.
7587 (onlyjump_p): Ditto.
7588 (redirect_jump_1): Ditto.
7589 (redirect_jump): Ditto.
7590 (invert_exp_1): Ditto.
7591 (invert_jump_1): Ditto.
7592 (invert_jump): Ditto.
7593 (rtx_renumbered_equal_p): Ditto.
7595 2023-05-30 Andrew Pinski <apinski@marvell.com>
7597 * fold-const.cc (minmax_from_comparison): Add support for NE_EXPR.
7598 * match.pd ((cond (cmp (convert1? x) c1) (convert2? x) c2) pattern):
7599 Add ne as a possible cmp.
7600 ((a CMP b) ? minmax<a, c> : minmax<b, c> pattern): Likewise.
7602 2023-05-30 Andrew Pinski <apinski@marvell.com>
7604 * match.pd (`(a CMP CST1) ? max<a,CST2> : a`): New
7607 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
7609 * simplify-rtx.cc (simplify_binary_operation_1) <AND>: Use wide-int
7610 instead of HWI_COMPUTABLE_MODE_P and UINTVAL in transformation of
7611 (and (extend X) C) as (zero_extend (and X C)), to also optimize
7612 modes wider than HOST_WIDE_INT.
7614 2023-05-30 Roger Sayle <roger@nextmovesoftware.com>
7617 * simplify-rtx.cc (simplify_const_relational_operation): Return
7618 early if we have a MODE_CC comparison that isn't a COMPARE against
7621 2023-05-30 Robin Dapp <rdapp@ventanamicro.com>
7623 * config/riscv/riscv.cc (riscv_const_insns): Allow
7624 const_vec_duplicates.
7626 2023-05-30 liuhongt <hongtao.liu@intel.com>
7628 PR middle-end/108938
7629 * gimple-ssa-store-merging.cc (is_bswap_or_nop_p): New
7630 function, cut from original find_bswap_or_nop function.
7631 (find_bswap_or_nop): Add a new parameter, detect bswap +
7632 rotate and save rotate result in the new parameter.
7633 (bswap_replace): Add a new parameter to indicate rotate and
7634 generate rotate stmt if needed.
7635 (maybe_optimize_vector_constructor): Adjust for new rotate
7636 parameter in the upper 2 functions.
7637 (pass_optimize_bswap::execute): Ditto.
7638 (imm_store_chain_info::output_merged_store): Ditto.
7640 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7642 * config/aarch64/aarch64-simd.md (aarch64_<sur>adalp<mode>): Delete.
7643 (aarch64_<su>adalp<mode>): New define_expand.
7644 (*aarch64_<su>adalp<mode><vczle><vczbe>_insn): New define_insn.
7645 (aarch64_<su>addlp<mode>): Convert to define_expand.
7646 (*aarch64_<su>addlp<mode><vczle><vczbe>_insn): New define_insn.
7647 * config/aarch64/iterators.md (UNSPEC_SADDLP, UNSPEC_UADDLP): Delete.
7649 (USADDLP): Likewise.
7650 * config/aarch64/predicates.md (vect_par_cnst_even_or_odd_half): Define.
7652 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7654 * config/aarch64/aarch64-builtins.cc (VAR1): Move to after inclusion of
7655 aarch64-builtin-iterators.h. Add definition to remap shadd, uhadd,
7656 srhadd, urhadd builtin codes for standard optab ones.
7657 * config/aarch64/aarch64-simd.md (<u>avg<mode>3_floor): Rename to...
7658 (<su_optab>avg<mode>3_floor): ... This. Expand to RTL codes rather than
7660 (<u>avg<mode>3_ceil): Rename to...
7661 (<su_optab>avg<mode>3_ceil): ... This. Expand to RTL codes rather than
7663 (aarch64_<su>hsub<mode>): New define_expand.
7664 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): Split into...
7665 (*aarch64_<su>h<ADDSUB:optab><mode><vczle><vczbe>_insn): ... This...
7666 (*aarch64_<su>rhadd<mode><vczle><vczbe>_insn): ... And this.
7668 2023-05-30 Andreas Schwab <schwab@suse.de>
7671 * config/riscv/riscv.cc (riscv_asan_shadow_offset): Update to
7674 2023-05-30 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
7676 * config/aarch64/aarch64-modes.def (V16HI, V8SI, V4DI, V2TI): New modes.
7677 * config/aarch64/aarch64-protos.h (aarch64_const_vec_rnd_cst_p):
7679 (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
7680 * config/aarch64/aarch64-simd.md (*aarch64_simd_sra<mode>): Rename to...
7681 (aarch64_<sra_op>sra_n<mode>_insn): ... This.
7682 (aarch64_<sra_op>rsra_n<mode>_insn): New define_insn.
7683 (aarch64_<sra_op>sra_n<mode>): New define_expand.
7684 (aarch64_<sra_op>rsra_n<mode>): Likewise.
7685 (aarch64_<sur>sra_n<mode>): Rename to...
7686 (aarch64_<sur>sra_ndi): ... This.
7687 * config/aarch64/aarch64.cc (aarch64_classify_vector_mode): Add
7688 any_target_p argument.
7689 (aarch64_extract_vec_duplicate_wide_int): Define.
7690 (aarch64_const_vec_rsra_rnd_imm_p): Likewise.
7691 (aarch64_const_vec_rnd_cst_p): Likewise.
7692 (aarch64_vector_mode_supported_any_target_p): Likewise.
7693 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Likewise.
7694 * config/aarch64/iterators.md (UNSPEC_SRSRA, UNSPEC_URSRA): Delete.
7695 (VSRA): Adjust for the above.
7697 (V2XWIDE): New mode_attr.
7698 (vec_or_offset): Likewise.
7699 (SHIFTEXTEND): Likewise.
7700 * config/aarch64/predicates.md (aarch64_simd_rsra_rnd_imm_vec): New
7702 * doc/tm.texi (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
7703 clarify that it applies to current target options.
7704 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Document.
7705 * doc/tm.texi.in: Regenerate.
7706 * stor-layout.cc (mode_for_vector): Check
7707 vector_mode_supported_any_target_p when iterating through vector modes.
7708 * target.def (TARGET_VECTOR_MODE_SUPPORTED_P): Adjust description to
7709 clarify that it applies to current target options.
7710 (TARGET_VECTOR_MODE_SUPPORTED_ANY_TARGET_P): Define.
7712 2023-05-30 Lili Cui <lili.cui@intel.com>
7714 PR tree-optimization/98350
7715 * tree-ssa-reassoc.cc
7716 (rewrite_expr_tree_parallel): Rewrite this function.
7717 (rank_ops_for_fma): New.
7718 (reassociate_bb): Handle new function.
7720 2023-05-30 Uros Bizjak <ubizjak@gmail.com>
7722 * rtl.h (rtx_addr_can_trap_p): Change return type from int to bool.
7723 (rtx_unstable_p): Ditto.
7724 (reg_mentioned_p): Ditto.
7725 (reg_referenced_p): Ditto.
7726 (reg_used_between_p): Ditto.
7727 (reg_set_between_p): Ditto.
7728 (modified_between_p): Ditto.
7729 (no_labels_between_p): Ditto.
7730 (modified_in_p): Ditto.
7732 (multiple_sets): Ditto.
7733 (set_noop_p): Ditto.
7734 (noop_move_p): Ditto.
7735 (reg_overlap_mentioned_p): Ditto.
7736 (dead_or_set_p): Ditto.
7737 (dead_or_set_regno_p): Ditto.
7738 (find_reg_fusage): Ditto.
7739 (find_regno_fusage): Ditto.
7740 (side_effects_p): Ditto.
7741 (volatile_refs_p): Ditto.
7742 (volatile_insn_p): Ditto.
7743 (may_trap_p_1): Ditto.
7744 (may_trap_p): Ditto.
7745 (may_trap_or_fault_p): Ditto.
7746 (computed_jump_p): Ditto.
7747 (auto_inc_p): Ditto.
7748 (loc_mentioned_in_p): Ditto.
7749 * rtlanal.cc (computed_jump_p_1): Adjust forward declaration.
7750 (rtx_unstable_p): Change return type from int to bool
7751 and adjust function body accordingly.
7752 (rtx_addr_can_trap_p): Ditto.
7753 (reg_mentioned_p): Ditto.
7754 (no_labels_between_p): Ditto.
7755 (reg_used_between_p): Ditto.
7756 (reg_referenced_p): Ditto.
7757 (reg_set_between_p): Ditto.
7759 (modified_between_p): Ditto.
7760 (modified_in_p): Ditto.
7761 (multiple_sets): Ditto.
7762 (set_noop_p): Ditto.
7763 (noop_move_p): Ditto.
7764 (reg_overlap_mentioned_p): Ditto.
7765 (dead_or_set_p): Ditto.
7766 (dead_or_set_regno_p): Ditto.
7767 (find_reg_fusage): Ditto.
7768 (find_regno_fusage): Ditto.
7769 (remove_node_from_insn_list): Ditto.
7770 (volatile_insn_p): Ditto.
7771 (volatile_refs_p): Ditto.
7772 (side_effects_p): Ditto.
7773 (may_trap_p_1): Ditto.
7774 (may_trap_p): Ditto.
7775 (may_trap_or_fault_p): Ditto.
7776 (computed_jump_p): Ditto.
7777 (auto_inc_p): Ditto.
7778 (loc_mentioned_in_p): Ditto.
7779 * combine.cc (can_combine_p): Update indirect function.
7781 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7783 * config/riscv/autovec.md (<optab><mode><vconvert>2): New pattern.
7784 * config/riscv/iterators.md: New attribute.
7785 * config/riscv/vector-iterators.md: New attribute.
7787 2023-05-30 From: Juzhe-Zhong <juzhe.zhong@rivai.ai>
7789 * config/riscv/riscv.md: Fix signed and unsigned comparison
7792 2023-05-30 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7794 * config/riscv/autovec.md (fnma<mode>4): New pattern.
7795 (*fnma<mode>): Ditto.
7797 2023-05-29 Die Li <lidie@eswincomputing.com>
7799 * config/riscv/riscv.cc (riscv_expand_conditional_move_onesided):
7801 (riscv_expand_conditional_move): Reuse the TARGET_SFB_ALU expand
7802 process for TARGET_XTHEADCONDMOV
7804 2023-05-29 Uros Bizjak <ubizjak@gmail.com>
7807 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also require
7808 TARGET_AVX512BW to generate truncv16hiv16qi2.
7810 2023-05-29 Jivan Hakobyan <jivanhakobyan9@gmail.com>
7812 * config/riscv/riscv.md (and<mode>3): New expander.
7813 (*and<mode>3) New pattern.
7814 * config/riscv/predicates.md (arith_operand_or_mode_mask): New
7817 2023-05-29 Pan Li <pan2.li@intel.com>
7819 * config/riscv/riscv-v.cc (emit_vlmax_insn): Remove unnecessary
7820 comments and rename local variables.
7821 (emit_nonvlmax_insn): Diito.
7822 (emit_vlmax_merge_insn): Ditto.
7823 (emit_vlmax_cmp_insn): Ditto.
7824 (emit_vlmax_cmp_mu_insn): Ditto.
7825 (emit_scalar_move_insn): Ditto.
7827 2023-05-29 Pan Li <pan2.li@intel.com>
7829 * config/riscv/riscv-v.cc (emit_vlmax_insn): Eliminate the
7831 (emit_nonvlmax_insn): Ditto.
7832 (emit_vlmax_merge_insn): Ditto.
7833 (emit_vlmax_cmp_insn): Ditto.
7834 (emit_vlmax_cmp_mu_insn): Ditto.
7835 (expand_vec_series): Ditto.
7837 2023-05-29 Pan Li <pan2.li@intel.com>
7839 * config/riscv/riscv-protos.h (enum insn_type): New type.
7840 * config/riscv/riscv-v.cc (RVV_INSN_OPERANDS_MAX): New macro.
7841 (rvv_builder::can_duplicate_repeating_sequence_p): Align the referenced
7843 (rvv_builder::get_merged_repeating_sequence): Ditto.
7844 (rvv_builder::repeating_sequence_use_merge_profitable_p): New function
7845 to evaluate the optimization cost.
7846 (rvv_builder::get_merge_scalar_mask): New function to get the merge
7848 (emit_scalar_move_insn): New function to emit vmv.s.x.
7849 (emit_vlmax_integer_move_insn): New function to emit vlmax vmv.v.x.
7850 (emit_nonvlmax_integer_move_insn): New function to emit nonvlmax
7852 (get_repeating_sequence_dup_machine_mode): New function to get the dup
7854 (expand_vector_init_merge_repeating_sequence): New function to perform
7856 (expand_vec_init): Add this vector init optimization.
7857 * config/riscv/riscv.h (BITS_PER_WORD): New macro.
7859 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
7861 * tree-ssa-loop-manip.cc (create_iv): Try harder to find a SLOC to
7862 put onto the increment when it is inserted after the position.
7864 2023-05-29 Eric Botcazou <ebotcazou@adacore.com>
7866 * match.pd ((T)P - (T)(P + A) -> -(T) A): Avoid artificial overflow
7869 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7871 * config/riscv/riscv-vsetvl.cc (source_equal_p): Fix ICE.
7873 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7875 * config/riscv/autovec.md (fma<mode>4): New pattern.
7876 (*fma<mode>): Ditto.
7877 * config/riscv/riscv-protos.h (enum insn_type): New enum.
7878 (emit_vlmax_ternary_insn): New function.
7879 * config/riscv/riscv-v.cc (emit_vlmax_ternary_insn): Ditto.
7881 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7883 * config/riscv/vector.md: Fix vimuladd instruction bug.
7885 2023-05-29 Juzhe-Zhong <juzhe.zhong@rivai.ai>
7887 * config/riscv/riscv.cc (global_state_unknown_p): New function.
7888 (riscv_mode_after): Fix incorrect VXM.
7890 2023-05-29 Pan Li <pan2.li@intel.com>
7892 * common/config/riscv/riscv-common.cc:
7893 (riscv_implied_info): Add zvfhmin item.
7894 (riscv_ext_version_table): Ditto.
7895 (riscv_ext_flag_table): Ditto.
7896 * config/riscv/riscv-opts.h (MASK_ZVFHMIN): New macro.
7897 (TARGET_ZFHMIN): Align indent.
7898 (TARGET_ZFH): Ditto.
7899 (TARGET_ZVFHMIN): New macro.
7901 2023-05-27 liuhongt <hongtao.liu@intel.com>
7904 * config/i386/sse.md (*andnot<mode>3): Extend below splitter
7905 to VI_AVX2 to cover more modes.
7907 2023-05-27 liuhongt <hongtao.liu@intel.com>
7909 * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
7910 Remove ATOM and ICELAKE(and later) core processors.
7912 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
7914 * config/riscv/autovec.md (<optab><mode>2): Add vneg/vnot.
7916 * config/riscv/riscv-protos.h (emit_vlmax_masked_mu_insn):
7918 * config/riscv/riscv-v.cc (emit_vlmax_masked_mu_insn): New
7921 2023-05-26 Robin Dapp <rdapp@ventanamicro.com>
7922 Juzhe Zhong <juzhe.zhong@rivai.ai>
7924 * config/riscv/autovec.md (<optab><v_double_trunc><mode>2): New
7926 (<optab><v_quad_trunc><mode>2): Dito.
7927 (<optab><v_oct_trunc><mode>2): Dito.
7928 (trunc<mode><v_double_trunc>2): Dito.
7929 (trunc<mode><v_quad_trunc>2): Dito.
7930 (trunc<mode><v_oct_trunc>2): Dito.
7931 * config/riscv/riscv-protos.h (vectorize_related_mode): Define.
7932 (autovectorize_vector_modes): Define.
7933 * config/riscv/riscv-v.cc (vectorize_related_mode): Implement
7935 (autovectorize_vector_modes): Implement hook.
7936 * config/riscv/riscv.cc (riscv_autovectorize_vector_modes):
7937 Implement target hook.
7938 (riscv_vectorize_related_mode): Implement target hook.
7939 (TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): Define.
7940 (TARGET_VECTORIZE_RELATED_MODE): Define.
7941 * config/riscv/vector-iterators.md: Add lowercase versions of
7942 mode_attr iterators.
7944 2023-05-26 Andrew Stubbs <ams@codesourcery.com>
7945 Tobias Burnus <tobias@codesourcery.com>
7947 * config/gcn/gcn-hsa.h (XNACKOPT): New macro.
7948 (ASM_SPEC): Use XNACKOPT.
7949 * config/gcn/gcn-opts.h (enum sram_ecc_type): Rename to ...
7950 (enum hsaco_attr_type): ... this, and generalize the names.
7951 (TARGET_XNACK): New macro.
7952 * config/gcn/gcn.cc (gcn_option_override): Update to sorry for all
7954 (output_file_start): Update xnack handling.
7955 (gcn_hsa_declare_function_name): Use TARGET_XNACK.
7956 * config/gcn/gcn.opt (-mxnack): Add the "on/off/any" syntax.
7957 (sram_ecc_type): Rename to ...
7958 (hsaco_attr_type: ... this.)
7959 * config/gcn/mkoffload.cc (SET_XNACK_ANY): New macro.
7960 (TEST_XNACK): Delete.
7961 (TEST_XNACK_ANY): New macro.
7962 (TEST_XNACK_ON): New macro.
7963 (main): Support the new -mxnack=on/off/any syntax.
7964 * doc/invoke.texi (-mxnack): Update for new syntax.
7966 2023-05-26 Andrew Pinski <apinski@marvell.com>
7968 * genmatch.cc (emit_debug_printf): New function.
7969 (dt_simplify::gen_1): Emit printf into the code
7970 before the `return true` or returning the folded result
7971 instead of emitting it always.
7973 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
7975 * config/xtensa/xtensa-protos.h
7976 (xtensa_expand_block_set_unrolled_loop,
7977 xtensa_expand_block_set_small_loop): Remove.
7978 (xtensa_expand_block_set): New prototype.
7979 * config/xtensa/xtensa.cc
7980 (xtensa_expand_block_set_libcall): New subfunction.
7981 (xtensa_expand_block_set_unrolled_loop,
7982 xtensa_expand_block_set_small_loop): Rewrite as subfunctions.
7983 (xtensa_expand_block_set): New function that calls the above
7985 * config/xtensa/xtensa.md (memsetsi): Change to invoke only
7986 xtensa_expand_block_set().
7988 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
7990 * config/xtensa/xtensa-protos.h (xtensa_m1_or_1_thru_15):
7992 * config/xtensa/xtensa.cc (xtensa_m1_or_1_thru_15):
7994 * config/xtensa/constraints.md (O):
7995 Change to use the above function.
7996 * config/xtensa/xtensa.md (*subsi3_from_const):
7997 New insn_and_split pattern.
7999 2023-05-26 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
8001 * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3):
8002 Retract excessive line folding, and correct the value of
8003 the "length" insn attribute related to TARGET_DENSITY.
8004 (*extzvsi-1bit_addsubx): Ditto.
8006 2023-05-26 Uros Bizjak <ubizjak@gmail.com>
8008 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi):
8009 Do not disable call to ix86_expand_vecop_qihi2.
8011 2023-05-26 liuhongt <hongtao.liu@intel.com>
8015 * ira-costs.cc (scan_one_insn): Only use NO_REGS in cost
8016 calculation when !hard_regno_mode_ok for GENERAL_REGS and
8017 mode, otherwise still use GENERAL_REGS.
8019 2023-05-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8021 * config/riscv/riscv.cc (vector_zero_call_used_regs): Add
8022 explict VL and drop VL in ops.
8024 2023-05-25 Jin Ma <jinma@linux.alibaba.com>
8026 * sched-deps.cc (sched_macro_fuse_insns): Insns should not be fusion
8027 in different BB blocks.
8029 2023-05-25 Uros Bizjak <ubizjak@gmail.com>
8031 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
8032 Rewrite to expand to 2x-wider (e.g. V16QI -> V16HImode)
8033 instructions when available. Emulate truncation via
8034 ix86_expand_vec_perm_const_1 when native truncate insn
8036 (ix86_expand_vecop_qihi_partial) <case MULT>: Use pmovzx
8037 when available. Trivially rename some variables.
8038 (ix86_expand_vecop_qihi): Unconditionally call ix86_expand_vecop_qihi2.
8039 * config/i386/i386.cc (ix86_multiplication_cost): Rewrite cost
8040 calculation of V*QImode emulations to account for generation of
8041 2x-wider mode instructions.
8042 (ix86_shift_rotate_cost): Update cost calculation of V*QImode
8043 emulations to account for generation of 2x-wider mode instructions.
8045 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
8048 * config/avr/avr.cc (avr_can_inline_p): New static function.
8049 (TARGET_CAN_INLINE_P): Define to that function.
8051 2023-05-25 Georg-Johann Lay <avr@gjlay.de>
8054 * config/avr/avr.md (*movbitqi.0): Rename to *movbit<mode>.0-6.
8055 Handle any bit position and use mode QISI.
8056 * config/avr/avr.cc (avr_rtx_costs_1) [IOR]: Return a cost
8057 of 2 insns for bit-transfer of respective style.
8059 2023-05-25 Christophe Lyon <christophe.lyon@linaro.org>
8061 * config/arm/iterators.md (MVE_6): Remove.
8062 * config/arm/mve.md: Replace MVE_6 with MVE_5.
8064 2023-05-25 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
8065 Richard Sandiford <richard.sandiford@arm.com>
8067 * tree-vect-loop-manip.cc (vect_adjust_loop_lens_control): New
8069 (vect_set_loop_controls_directly): Add decrement IV support.
8070 (vect_set_loop_condition_partial_vectors): Ditto.
8071 * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): New
8073 * tree-vectorizer.h (LOOP_VINFO_USING_DECREMENTING_IV_P): New
8076 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8079 * config/aarch64/aarch64-simd.md (aarch64_fcadd<rot><mode>): Rename to...
8080 (aarch64_fcadd<rot><mode><vczle><vczbe>): ... This.
8081 Fix canonicalization of PLUS operands.
8082 (aarch64_fcmla<rot><mode>): Rename to...
8083 (aarch64_fcmla<rot><mode><vczle><vczbe>): ... This.
8084 Fix canonicalization of PLUS operands.
8085 (aarch64_fcmla_lane<rot><mode>): Rename to...
8086 (aarch64_fcmla_lane<rot><mode><vczle><vczbe>): ... This.
8087 Fix canonicalization of PLUS operands.
8088 (aarch64_fcmla_laneq<rot>v4hf): Rename to...
8089 (aarch64_fcmla_laneq<rot>v4hf<vczle><vczbe>): ... This.
8090 Fix canonicalization of PLUS operands.
8091 (aarch64_fcmlaq_lane<rot><mode>): Fix canonicalization of PLUS operands.
8093 2023-05-25 Chris Sidebottom <chris.sidebottom@arm.com>
8095 * config/arm/arm.md (rbitsi2): Rename to...
8096 (arm_rbit): ... This.
8097 (ctzsi2): Adjust for the above.
8098 (arm_rev16si2): Convert to define_expand.
8099 (arm_rev16si2_alt1): New pattern.
8100 (arm_rev16si2_alt): Rename to...
8101 (*arm_rev16si2_alt2): ... This.
8102 * config/arm/arm_acle.h (__ror, __rorl, __rorll, __clz, __clzl, __clzll,
8103 __cls, __clsl, __clsll, __revsh, __rev, __revl, __revll, __rev16,
8104 __rev16l, __rev16ll, __rbit, __rbitl, __rbitll): Define intrinsics.
8105 * config/arm/arm_acle_builtins.def (rbit, rev16si2): Define builtins.
8107 2023-05-25 Alex Coplan <alex.coplan@arm.com>
8110 * config/arm/arm.md (movdf): Generate temporary pseudo in DImode
8112 * config/arm/vfp.md (no_literal_pool_df_immediate): Rather than punning an
8113 lvalue DFmode pseudo into DImode, use a DImode pseudo and pun it into
8114 DFmode as an rvalue.
8116 2023-05-25 Richard Biener <rguenther@suse.de>
8119 * tree-vect-stmts.cc (vectorizable_condition): For
8120 embedded comparisons also handle the case when the target
8121 only provides vec_cmp and vcond_mask.
8123 2023-05-25 Claudiu Zissulescu <claziss@gmail.com>
8125 * config/arc/arc.cc (arc_call_tls_get_addr): Simplify access using
8128 2023-05-25 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
8130 * config/aarch64/aarch64.cc (scalar_move_insn_p): New function.
8131 (seq_cost_ignoring_scalar_moves): Likewise.
8132 (aarch64_expand_vector_init): Call seq_cost_ignoring_scalar_moves.
8134 2023-05-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8136 * config/aarch64/arm_neon.h (vcage_f64): Reimplement with builtins.
8137 (vcage_f32): Likewise.
8138 (vcages_f32): Likewise.
8139 (vcageq_f32): Likewise.
8140 (vcaged_f64): Likewise.
8141 (vcageq_f64): Likewise.
8142 (vcagts_f32): Likewise.
8143 (vcagt_f32): Likewise.
8144 (vcagt_f64): Likewise.
8145 (vcagtq_f32): Likewise.
8146 (vcagtd_f64): Likewise.
8147 (vcagtq_f64): Likewise.
8148 (vcale_f32): Likewise.
8149 (vcale_f64): Likewise.
8150 (vcaled_f64): Likewise.
8151 (vcales_f32): Likewise.
8152 (vcaleq_f32): Likewise.
8153 (vcaleq_f64): Likewise.
8154 (vcalt_f32): Likewise.
8155 (vcalt_f64): Likewise.
8156 (vcaltd_f64): Likewise.
8157 (vcaltq_f32): Likewise.
8158 (vcaltq_f64): Likewise.
8159 (vcalts_f32): Likewise.
8161 2023-05-25 Hu, Lin1 <lin1.hu@intel.com>
8165 * config/i386/avx512bwintrin.h (_mm512_srli_epi16): Change type from
8166 int to const int or const int to const unsigned int.
8167 (_mm512_mask_srli_epi16): Ditto.
8168 (_mm512_slli_epi16): Ditto.
8169 (_mm512_mask_slli_epi16): Ditto.
8170 (_mm512_maskz_slli_epi16): Ditto.
8171 (_mm512_srai_epi16): Ditto.
8172 (_mm512_mask_srai_epi16): Ditto.
8173 (_mm512_maskz_srai_epi16): Ditto.
8174 * config/i386/avx512fintrin.h (_mm512_slli_epi64): Ditto.
8175 (_mm512_mask_slli_epi64): Ditto.
8176 (_mm512_maskz_slli_epi64): Ditto.
8177 (_mm512_srli_epi64): Ditto.
8178 (_mm512_mask_srli_epi64): Ditto.
8179 (_mm512_maskz_srli_epi64): Ditto.
8180 (_mm512_srai_epi64): Ditto.
8181 (_mm512_mask_srai_epi64): Ditto.
8182 (_mm512_maskz_srai_epi64): Ditto.
8183 (_mm512_slli_epi32): Ditto.
8184 (_mm512_mask_slli_epi32): Ditto.
8185 (_mm512_maskz_slli_epi32): Ditto.
8186 (_mm512_srli_epi32): Ditto.
8187 (_mm512_mask_srli_epi32): Ditto.
8188 (_mm512_maskz_srli_epi32): Ditto.
8189 (_mm512_srai_epi32): Ditto.
8190 (_mm512_mask_srai_epi32): Ditto.
8191 (_mm512_maskz_srai_epi32): Ditto.
8192 * config/i386/avx512vlbwintrin.h (_mm256_mask_srai_epi16): Ditto.
8193 (_mm256_maskz_srai_epi16): Ditto.
8194 (_mm_mask_srai_epi16): Ditto.
8195 (_mm_maskz_srai_epi16): Ditto.
8196 (_mm256_mask_slli_epi16): Ditto.
8197 (_mm256_maskz_slli_epi16): Ditto.
8198 (_mm_mask_slli_epi16): Ditto.
8199 (_mm_maskz_slli_epi16): Ditto.
8200 (_mm_maskz_srli_epi16): Ditto.
8201 * config/i386/avx512vlintrin.h (_mm256_mask_srli_epi32): Ditto.
8202 (_mm256_maskz_srli_epi32): Ditto.
8203 (_mm_mask_srli_epi32): Ditto.
8204 (_mm_maskz_srli_epi32): Ditto.
8205 (_mm256_mask_srli_epi64): Ditto.
8206 (_mm256_maskz_srli_epi64): Ditto.
8207 (_mm_mask_srli_epi64): Ditto.
8208 (_mm_maskz_srli_epi64): Ditto.
8209 (_mm256_mask_srai_epi32): Ditto.
8210 (_mm256_maskz_srai_epi32): Ditto.
8211 (_mm_mask_srai_epi32): Ditto.
8212 (_mm_maskz_srai_epi32): Ditto.
8213 (_mm256_srai_epi64): Ditto.
8214 (_mm256_mask_srai_epi64): Ditto.
8215 (_mm256_maskz_srai_epi64): Ditto.
8216 (_mm_srai_epi64): Ditto.
8217 (_mm_mask_srai_epi64): Ditto.
8218 (_mm_maskz_srai_epi64): Ditto.
8219 (_mm_mask_slli_epi32): Ditto.
8220 (_mm_maskz_slli_epi32): Ditto.
8221 (_mm_mask_slli_epi64): Ditto.
8222 (_mm_maskz_slli_epi64): Ditto.
8223 (_mm256_mask_slli_epi32): Ditto.
8224 (_mm256_maskz_slli_epi32): Ditto.
8225 (_mm256_mask_slli_epi64): Ditto.
8226 (_mm256_maskz_slli_epi64): Ditto.
8228 2023-05-25 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8230 * config/riscv/vector.md: Remove FRM_REGNUM dependency in rtz
8233 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
8235 * data-streamer-in.cc (streamer_read_value_range): Handle NANs.
8236 * data-streamer-out.cc (streamer_write_vrange): Same.
8237 * value-range.h (class vrange): Make streamer_write_vrange a friend.
8239 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
8241 * value-query.cc (range_query::get_tree_range): Set NAN directly
8243 * value-range.cc (frange::set): Assert that bounds are not NAN.
8245 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
8247 * value-range.cc (add_vrange): Handle known NANs.
8249 2023-05-25 Aldy Hernandez <aldyh@redhat.com>
8251 * value-range.h (frange::set_nan): New.
8253 2023-05-25 Alexandre Oliva <oliva@adacore.com>
8256 * emit-rtl.cc (validate_subreg): Reject a SUBREG of a MEM that
8257 requires stricter alignment than MEM's.
8259 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
8261 PR tree-optimization/107822
8262 PR tree-optimization/107986
8263 * Makefile.in (OBJS): Add gimple-range-phi.o.
8264 * gimple-range-cache.h (ranger_cache::m_estimate): New
8265 phi_analyzer pointer member.
8266 * gimple-range-fold.cc (fold_using_range::range_of_phi): Use
8267 phi_analyzer if no loop info is available.
8268 * gimple-range-phi.cc: New file.
8269 * gimple-range-phi.h: New file.
8270 * tree-vrp.cc (execute_ranger_vrp): Utililze a phi_analyzer.
8272 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
8274 * gimple-range-fold.cc (fur_list::fur_list): Add range_query param
8276 (fold_range): Add range_query parameter.
8277 (fur_relation::fur_relation): New.
8278 (fur_relation::trio): New.
8279 (fur_relation::register_relation): New.
8280 (fold_relations): New.
8281 * gimple-range-fold.h (fold_range): Adjust prototypes.
8282 (fold_relations): New.
8284 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
8286 * gimple-range-cache.cc (ssa_cache::range_of_expr): New.
8287 * gimple-range-cache.h (class ssa_cache): Inherit from range_query.
8288 (ranger_cache::const_query): New.
8289 * gimple-range.cc (gimple_ranger::const_query): New.
8290 * gimple-range.h (gimple_ranger::const_query): New prototype.
8292 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
8294 * gimple-range-cache.cc (ssa_cache::dump): Use get_range.
8295 (ssa_cache::dump_range_query): Delete.
8296 (ssa_lazy_cache::dump_range_query): Delete.
8297 (ssa_lazy_cache::get_range): Move from header file.
8298 (ssa_lazy_cache::clear_range): ditto.
8299 (ssa_lazy_cache::clear): Ditto.
8300 * gimple-range-cache.h (class ssa_cache): Virtualize.
8301 (class ssa_lazy_cache): Inherit and virtualize.
8303 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
8305 * value-range.h (vrange::kind): Remove.
8307 2023-05-24 Roger Sayle <roger@nextmovesoftware.com>
8309 PR middle-end/109840
8310 * match.pd <popcount optimizations>: Preserve zero-extension when
8311 optimizing popcount((T)bswap(x)) and popcount((T)rotate(x,y)) as
8312 popcount((T)x), so the popcount's argument keeps the same type.
8313 <parity optimizations>: Likewise preserve extensions when
8314 simplifying parity((T)bswap(x)) and parity((T)rotate(x,y)) as
8315 parity((T)x), so that the parity's argument type is the same.
8317 2023-05-24 Aldy Hernandez <aldyh@redhat.com>
8319 * ipa-cp.cc (ipa_value_range_from_jfunc): Use new ipa_vr API.
8320 (ipcp_store_vr_results): Same.
8321 * ipa-prop.cc (ipa_vr::ipa_vr): New.
8322 (ipa_vr::get_vrange): New.
8323 (ipa_vr::set_unknown): New.
8324 (ipa_vr::streamer_read): New.
8325 (ipa_vr::streamer_write): New.
8326 (write_ipcp_transformation_info): Use new ipa_vr API.
8327 (read_ipcp_transformation_info): Same.
8328 (ipa_vr::nonzero_p): Delete.
8329 (ipcp_update_vr): Use new ipa_vr API.
8330 * ipa-prop.h (class ipa_vr): Provide an API and hide internals.
8331 * ipa-sra.cc (zap_useless_ipcp_results): Use new ipa_vr API.
8333 2023-05-24 Jan-Benedict Glaw <jbglaw@lug-owl.de>
8335 * config/mcore/mcore.cc (output_inline_const) Make buffer smaller to
8336 silence overflow warnings later on.
8338 2023-05-24 Uros Bizjak <ubizjak@gmail.com>
8340 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2):
8341 Remove handling of V8QImode.
8342 * config/i386/mmx.md (v<insn>v8qi3): Move from sse.md.
8343 Call ix86_expand_vecop_qihi_partial. Enable for TARGET_MMX_WITH_SSE.
8344 (v<insn>v4qi3): Ditto.
8345 * config/i386/sse.md (v<insn>v8qi3): Remove.
8347 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8350 * config/aarch64/aarch64-simd.md (aarch64_simd_lshr<mode>): Rename to...
8351 (aarch64_simd_lshr<mode><vczle><vczbe>): ... This.
8352 (aarch64_simd_ashr<mode>): Rename to...
8353 (aarch64_simd_ashr<mode><vczle><vczbe>): ... This.
8354 (aarch64_simd_imm_shl<mode>): Rename to...
8355 (aarch64_simd_imm_shl<mode><vczle><vczbe>): ... This.
8356 (aarch64_simd_reg_sshl<mode>): Rename to...
8357 (aarch64_simd_reg_sshl<mode><vczle><vczbe>): ... This.
8358 (aarch64_simd_reg_shl<mode>_unsigned): Rename to...
8359 (aarch64_simd_reg_shl<mode>_unsigned<vczle><vczbe>): ... This.
8360 (aarch64_simd_reg_shl<mode>_signed): Rename to...
8361 (aarch64_simd_reg_shl<mode>_signed<vczle><vczbe>): ... This.
8362 (vec_shr_<mode>): Rename to...
8363 (vec_shr_<mode><vczle><vczbe>): ... This.
8364 (aarch64_<sur>shl<mode>): Rename to...
8365 (aarch64_<sur>shl<mode><vczle><vczbe>): ... This.
8366 (aarch64_<sur>q<r>shl<mode>): Rename to...
8367 (aarch64_<sur>q<r>shl<mode><vczle><vczbe>): ... This.
8369 2023-05-24 Richard Biener <rguenther@suse.de>
8372 * config/i386/i386-expand.cc (ix86_expand_vector_init_general):
8373 Perform final vector composition using
8374 ix86_expand_vector_init_general instead of setting
8375 the highpart and lowpart which causes spilling.
8377 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
8379 PR tree-optimization/109695
8380 * gimple-range-cache.cc (ranger_cache::get_global_range): Add
8382 * gimple-range-cache.h (ranger_cache::get_global_range): Ditto.
8383 * gimple-range.cc (gimple_ranger::range_of_stmt): Pass changed
8384 flag to set_global_range.
8385 (gimple_ranger::prefill_stmt_dependencies): Ditto.
8387 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
8389 PR tree-optimization/109695
8390 * gimple-range-cache.cc (temporal_cache::temporal_value): Return
8392 (temporal_cache::current_p): Check always_current method.
8393 (temporal_cache::set_always_current): Add param and set value
8395 (temporal_cache::always_current_p): New.
8396 (ranger_cache::get_global_range): Adjust.
8397 (ranger_cache::set_global_range): set always current first.
8399 2023-05-24 Andrew MacLeod <amacleod@redhat.com>
8401 PR tree-optimization/109695
8402 * gimple-range-cache.cc (ranger_cache::get_global_range): Call
8403 fold_range with global query to choose an initial value.
8405 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8407 * config/riscv/riscv-protos.h (enum frm_field_enum): Add FRM_
8410 2023-05-24 Richard Biener <rguenther@suse.de>
8412 PR tree-optimization/109849
8413 * tree-ssa-pre.cc (do_hoist_insertion): Do not intersect
8414 expressions but take the first sets.
8416 2023-05-24 Gaius Mulley <gaiusmod2@gmail.com>
8419 * doc/gm2.texi (High procedure function): New node.
8420 (Using): New menu entry for High procedure function.
8422 2023-05-24 Richard Sandiford <richard.sandiford@arm.com>
8424 PR rtl-optimization/109940
8425 * early-remat.cc (postorder_index): Rename to...
8426 (rpo_index): ...this.
8427 (compare_candidates): Sort by decreasing rpo_index rather than
8428 increasing postorder_index.
8429 (early_remat::sort_candidates): Calculate the forward RPO from
8431 (early_remat::local_phase): Follow forward RPO using DF_FORWARD,
8432 rather than DF_BACKWARD in reverse.
8434 2023-05-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8437 * config/arm/arm-builtins.cc (SAT_BINOP_UNSIGNED_IMM_QUALIFIERS): Use
8438 qualifier_none for the return operand.
8440 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8442 * config/riscv/autovec.md (<optab><mode>3): New pattern.
8443 (one_cmpl<mode>2): Ditto.
8444 (*<optab>not<mode>): Ditto.
8445 (*n<optab><mode>): Ditto.
8446 * config/riscv/riscv-v.cc (expand_vec_cmp_float): Change to
8449 2023-05-24 Kewen Lin <linkw@linux.ibm.com>
8451 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Adjust the
8452 calculation on n_perms by considering nvectors_per_build.
8454 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8455 Richard Sandiford <richard.sandiford@arm.com>
8457 * config/riscv/autovec.md (@vcond_mask_<mode><vm>): New pattern.
8458 (vec_cmp<mode><vm>): New pattern.
8459 (vec_cmpu<mode><vm>): New pattern.
8460 (vcond<V:mode><VI:mode>): New pattern.
8461 (vcondu<V:mode><VI:mode>): New pattern.
8462 * config/riscv/riscv-protos.h (enum insn_type): Add new enum.
8463 (emit_vlmax_merge_insn): New function.
8464 (emit_vlmax_cmp_insn): Ditto.
8465 (emit_vlmax_cmp_mu_insn): Ditto.
8466 (expand_vec_cmp): Ditto.
8467 (expand_vec_cmp_float): Ditto.
8468 (expand_vcond): Ditto.
8469 * config/riscv/riscv-v.cc (emit_vlmax_merge_insn): Ditto.
8470 (emit_vlmax_cmp_insn): Ditto.
8471 (emit_vlmax_cmp_mu_insn): Ditto.
8472 (get_cmp_insn_code): Ditto.
8473 (expand_vec_cmp): Ditto.
8474 (expand_vec_cmp_float): Ditto.
8475 (expand_vcond): Ditto.
8477 2023-05-24 Pan Li <pan2.li@intel.com>
8479 * config/riscv/genrvv-type-indexer.cc (main): Add
8480 unsigned_eew*_lmul1_interpret for indexer.
8481 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
8482 Register vuint*m1_t interpret function.
8483 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
8484 New macro for vuint8m1_t.
8485 (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
8486 (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
8487 (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
8488 (vbool1_t): Add to unsigned_eew*_interpret_ops.
8489 (vbool2_t): Likewise.
8490 (vbool4_t): Likewise.
8491 (vbool8_t): Likewise.
8492 (vbool16_t): Likewise.
8493 (vbool32_t): Likewise.
8494 (vbool64_t): Likewise.
8495 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_UNSIGNED_EEW8_LMUL1_INTERPRET_OPS):
8496 New macro for vuint*m1_t.
8497 (DEF_RVV_UNSIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
8498 (DEF_RVV_UNSIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
8499 (DEF_RVV_UNSIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
8500 (required_extensions_p): Add vuint*m1_t interpret case.
8501 * config/riscv/riscv-vector-builtins.def (unsigned_eew8_lmul1_interpret):
8502 Add vuint*m1_t interpret to base type.
8503 (unsigned_eew16_lmul1_interpret): Likewise.
8504 (unsigned_eew32_lmul1_interpret): Likewise.
8505 (unsigned_eew64_lmul1_interpret): Likewise.
8507 2023-05-24 Pan Li <pan2.li@intel.com>
8509 * config/riscv/genrvv-type-indexer.cc (EEW_SIZE_LIST): New macro
8510 for the eew size list.
8511 (LMUL1_LOG2): New macro for the log2 value of lmul=1.
8512 (main): Add signed_eew*_lmul1_interpret for indexer.
8513 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
8514 Register vint*m1_t interpret function.
8515 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
8516 New macro for vint8m1_t.
8517 (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
8518 (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
8519 (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
8520 (vbool1_t): Add to signed_eew*_interpret_ops.
8521 (vbool2_t): Likewise.
8522 (vbool4_t): Likewise.
8523 (vbool8_t): Likewise.
8524 (vbool16_t): Likewise.
8525 (vbool32_t): Likewise.
8526 (vbool64_t): Likewise.
8527 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_SIGNED_EEW8_LMUL1_INTERPRET_OPS):
8528 New macro for vint*m1_t.
8529 (DEF_RVV_SIGNED_EEW16_LMUL1_INTERPRET_OPS): Likewise.
8530 (DEF_RVV_SIGNED_EEW32_LMUL1_INTERPRET_OPS): Likewise.
8531 (DEF_RVV_SIGNED_EEW64_LMUL1_INTERPRET_OPS): Likewise.
8532 (required_extensions_p): Add vint8m1_t interpret case.
8533 * config/riscv/riscv-vector-builtins.def (signed_eew8_lmul1_interpret):
8534 Add vint*m1_t interpret to base type.
8535 (signed_eew16_lmul1_interpret): Likewise.
8536 (signed_eew32_lmul1_interpret): Likewise.
8537 (signed_eew64_lmul1_interpret): Likewise.
8539 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8541 * config/riscv/autovec.md: Adjust for new interface.
8542 * config/riscv/riscv-protos.h (emit_vlmax_insn): Add VL operand.
8543 (emit_nonvlmax_insn): Add AVL operand.
8544 * config/riscv/riscv-v.cc (emit_vlmax_insn): Add VL operand.
8545 (emit_nonvlmax_insn): Add AVL operand.
8546 (sew64_scalar_helper): Adjust for new interface.
8547 (expand_tuple_move): Ditto.
8548 * config/riscv/vector.md: Ditto.
8550 2023-05-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8552 * config/riscv/riscv-v.cc (expand_vec_series): Remove magic number.
8553 (expand_const_vector): Ditto.
8554 (legitimize_move): Ditto.
8555 (sew64_scalar_helper): Ditto.
8556 (expand_tuple_move): Ditto.
8557 (expand_vector_init_insert_elems): Ditto.
8558 * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
8560 2023-05-24 liuhongt <hongtao.liu@intel.com>
8563 * config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
8564 _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} and
8565 _mm_abs_{pi8,pi16,pi32} into gimple ABS_EXPR.
8566 (ix86_masked_all_ones): Handle 64-bit mask.
8567 * config/i386/i386-builtin.def: Replace icode of related
8568 non-mask simd abs builtins with CODE_FOR_nothing.
8570 2023-05-23 Martin Uecker <uecker@tugraz.at>
8573 * function.cc (gimplify_parm_type): Remove function.
8574 (gimplify_parameters): Call gimplify_type_sizes.
8576 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
8578 * config/xtensa/xtensa.md (*addsubx): Rename from '*addx',
8579 and change to also accept '*subx' pattern.
8582 2023-05-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
8584 * config/xtensa/predicates.md (addsub_operator): New.
8585 * config/xtensa/xtensa.md (*extzvsi-1bit_ashlsi3,
8586 *extzvsi-1bit_addsubx): New insn_and_split patterns.
8587 * config/xtensa/xtensa.cc (xtensa_rtx_costs):
8588 Add a special case about ifcvt 'noce_try_cmove()' to handle
8589 constant loads that do not fit into signed 12 bits in the
8590 patterns added above.
8592 2023-05-23 Richard Biener <rguenther@suse.de>
8594 PR tree-optimization/109747
8595 * tree-vect-slp.cc (vect_prologue_cost_for_slp): Pass down
8596 the SLP node only once to the cost hook.
8598 2023-05-23 Georg-Johann Lay <avr@gjlay.de>
8600 * config/avr/avr.cc (avr_insn_cost): New static function.
8601 (TARGET_INSN_COST): Define to that function.
8603 2023-05-23 Richard Biener <rguenther@suse.de>
8606 * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
8607 For vector construction or splats apply GPR->XMM move
8608 costing. QImode memory can be handled directly only
8611 2023-05-23 Richard Biener <rguenther@suse.de>
8613 PR tree-optimization/108752
8614 * tree-vect-stmts.cc (vectorizable_operation): For bit
8615 operations with generic word_mode vectors do not cost
8616 an extra stmt. For plus, minus and negate also cost the
8617 constant materialization.
8619 2023-05-23 Uros Bizjak <ubizjak@gmail.com>
8621 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial):
8622 Call ix86_expand_vec_shift_qihi_constant for shifts
8623 with constant count operand.
8624 * config/i386/i386.cc (ix86_shift_rotate_cost):
8625 Handle V4QImode and V8QImode.
8626 * config/i386/mmx.md (<insn>v8qi3): New insn pattern.
8627 (<insn>v4qi3): Ditto.
8629 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8631 * config/riscv/vector.md: Add mode.
8633 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
8635 PR tree-optimization/109934
8636 * value-range.cc (irange::invert): Remove buggy special case.
8638 2023-05-23 Richard Biener <rguenther@suse.de>
8640 * tree-ssa-pre.cc (compute_antic_aux): Dump the correct
8643 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
8646 * config/aarch64/aarch64.cc (aarch64_modes_tieable_p): Allow
8647 subregs between any scalars that are 64 bits or smaller.
8648 * config/aarch64/iterators.md (SUBDI_BITS): New int iterator.
8649 (bits_etype): New int attribute.
8650 * config/aarch64/aarch64.md (*insv_reg<mode>_<SUBDI_BITS>)
8651 (*aarch64_bfi<GPI:mode><ALLX:mode>_<SUBDI_BITS>): New patterns.
8652 (*aarch64_bfidi<ALLX:mode>_subreg_<SUBDI_BITS>): Likewise.
8654 2023-05-23 Richard Sandiford <richard.sandiford@arm.com>
8656 * doc/md.texi: Document that <FOO> can be used to refer to the
8657 numerical value of an int iterator FOO. Tweak other parts of
8658 the int iterator documentation.
8659 * read-rtl.cc (iterator_group::has_self_attr): New field.
8660 (map_attr_string): When has_self_attr is true, make <FOO>
8661 expand to the current value of iterator FOO.
8662 (initialize_iterators): Set has_self_attr for int iterators.
8664 2023-05-23 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8666 * config/riscv/autovec.md: Refactor the framework of RVV auto-vectorization.
8667 * config/riscv/riscv-protos.h (RVV_MISC_OP_NUM): Ditto.
8668 (RVV_UNOP_NUM): New macro.
8669 (RVV_BINOP_NUM): Ditto.
8670 (legitimize_move): Refactor the framework of RVV auto-vectorization.
8671 (emit_vlmax_op): Ditto.
8672 (emit_vlmax_reg_op): Ditto.
8673 (emit_len_op): Ditto.
8674 (emit_len_binop): Ditto.
8675 (emit_vlmax_tany_many): Ditto.
8676 (emit_nonvlmax_tany_many): Ditto.
8677 (sew64_scalar_helper): Ditto.
8678 (expand_tuple_move): Ditto.
8679 * config/riscv/riscv-v.cc (emit_pred_op): Ditto.
8680 (emit_pred_binop): Ditto.
8681 (emit_vlmax_op): Ditto.
8682 (emit_vlmax_tany_many): New function.
8683 (emit_len_op): Remove.
8684 (emit_nonvlmax_tany_many): New function.
8685 (emit_vlmax_reg_op): Remove.
8686 (emit_len_binop): Ditto.
8687 (emit_index_op): Ditto.
8688 (expand_vec_series): Refactor the framework of RVV auto-vectorization.
8689 (expand_const_vector): Ditto.
8690 (legitimize_move): Ditto.
8691 (sew64_scalar_helper): Ditto.
8692 (expand_tuple_move): Ditto.
8693 (expand_vector_init_insert_elems): Ditto.
8694 * config/riscv/riscv.cc (vector_zero_call_used_regs): Ditto.
8695 * config/riscv/vector.md: Ditto.
8697 2023-05-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8700 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Add predicate
8701 and constraint for operand 0.
8702 (add_vec_concat_subst_be): Likewise.
8704 2023-05-23 Richard Biener <rguenther@suse.de>
8706 PR tree-optimization/109849
8707 * tree-ssa-pre.cc (do_hoist_insertion): Compute ANTIC_OUT
8708 and use that to determine what to hoist.
8710 2023-05-23 Eric Botcazou <ebotcazou@adacore.com>
8712 * fold-const.cc (native_encode_initializer) <CONSTRUCTOR>: Apply the
8713 specific treatment for bit-fields only if they have an integral type
8714 and filter out non-integral bit-fields that do not start and end on
8717 2023-05-23 Aldy Hernandez <aldyh@redhat.com>
8719 PR tree-optimization/109920
8720 * value-range.h (RESIZABLE>::~int_range): Use delete[].
8722 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
8724 * config/i386/i386.cc (ix86_shift_rotate_cost): Correct
8725 calcuation of integer vector mode costs to reflect generated
8726 instruction sequences of different integer vector modes and
8727 different target ABIs. Remove "speed" function argument.
8728 (ix86_rtx_costs): Update call for removed function argument.
8729 (ix86_vector_costs::add_stmt_cost): Ditto.
8731 2023-05-22 Aldy Hernandez <aldyh@redhat.com>
8733 * value-range.h (class Value_Range): Implement set_zero,
8734 set_nonzero, and nonzero_p.
8736 2023-05-22 Uros Bizjak <ubizjak@gmail.com>
8738 * config/i386/i386.cc (ix86_multiplication_cost): Add
8739 the cost of a memory read to the cost of V?QImode sequences.
8741 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8743 * config/riscv/riscv-v.cc: Add "m_" prefix.
8745 2023-05-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
8747 * tree-vect-loop.cc (vect_get_loop_len): Fix issue for
8748 multiple-rgroup of length.
8749 * tree-vect-stmts.cc (vectorizable_store): Ditto.
8750 (vectorizable_load): Ditto.
8751 * tree-vectorizer.h (vect_get_loop_len): Ditto.
8753 2023-05-22 Juzhe-Zhong <juzhe.zhong@rivai.ai>
8755 * config/riscv/riscv.cc (riscv_const_insns): Reorganize the
8758 2023-05-22 Kewen Lin <linkw@linux.ibm.com>
8760 * tree-vect-slp.cc (vect_transform_slp_perm_load_1): Refactor the
8761 handling for the case index == count.
8763 2023-05-21 Georg-Johann Lay <avr@gjlay.de>
8766 * config/avr/avr.cc (avr_fold_builtin) [AVR_BUILTIN_INSERT_BITS]:
8767 Don't fold to XOR / AND / XOR if just one bit is copied to the
8770 2023-05-21 Roger Sayle <roger@nextmovesoftware.com>
8772 * config/nvptx/nvptx.cc (nvptx_expand_brev): Expand target
8773 builtin for bit reversal using brev instruction.
8774 (enum nvptx_builtins): Add NVPTX_BUILTIN_BREV and
8775 NVPTX_BUILTIN_BREVLL.
8776 (nvptx_init_builtins): Define "brev" and "brevll".
8777 (nvptx_expand_builtin): Expand NVPTX_BUILTIN_BREV and
8778 NVPTX_BUILTIN_BREVLL via nvptx_expand_brev function.
8779 * doc/extend.texi (Nvidia PTX Builtin-in Functions): New
8780 section, document __builtin_nvptx_brev{,ll}.
8782 2023-05-21 Jakub Jelinek <jakub@redhat.com>
8784 PR tree-optimization/109505
8785 * match.pd ((x | CST1) & CST2 -> (x & CST2) | (CST1 & CST2),
8786 Combine successive equal operations with constants,
8787 (A +- CST1) +- CST2 -> A + CST3, (CST1 - A) +- CST2 -> CST3 - A,
8788 CST1 - (CST2 - A) -> CST3 + A): Use ! on ops with 2 CONSTANT_CLASS_P
8791 2023-05-21 Andrew Pinski <apinski@marvell.com>
8793 * expr.cc (expand_single_bit_test): Correct bitpos for big-endian.
8795 2023-05-21 Pan Li <pan2.li@intel.com>
8797 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): Add the
8798 rest bool size, aka 2, 4, 8, 16, 32, 64.
8799 * config/riscv/riscv-vector-builtins-functions.def (vreinterpret):
8800 Register vbool[2|4|8|16|32|64] interpret function.
8801 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_BOOL2_INTERPRET_OPS):
8802 New macro for vbool2_t.
8803 (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
8804 (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
8805 (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
8806 (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
8807 (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
8808 (vint8m1_t): Add the type to bool[2|4|8|16|32|64]_interpret_ops.
8809 (vint16m1_t): Likewise.
8810 (vint32m1_t): Likewise.
8811 (vint64m1_t): Likewise.
8812 (vuint8m1_t): Likewise.
8813 (vuint16m1_t): Likewise.
8814 (vuint32m1_t): Likewise.
8815 (vuint64m1_t): Likewise.
8816 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_BOOL2_INTERPRET_OPS):
8817 New macro for vbool2_t.
8818 (DEF_RVV_BOOL4_INTERPRET_OPS): Likewise.
8819 (DEF_RVV_BOOL8_INTERPRET_OPS): Likewise.
8820 (DEF_RVV_BOOL16_INTERPRET_OPS): Likewise.
8821 (DEF_RVV_BOOL32_INTERPRET_OPS): Likewise.
8822 (DEF_RVV_BOOL64_INTERPRET_OPS): Likewise.
8823 (required_extensions_p): Add vbool[2|4|8|16|32|64] interpret case.
8824 * config/riscv/riscv-vector-builtins.def (bool2_interpret): Add
8825 vbool2_t interprect to base type.
8826 (bool4_interpret): Likewise.
8827 (bool8_interpret): Likewise.
8828 (bool16_interpret): Likewise.
8829 (bool32_interpret): Likewise.
8830 (bool64_interpret): Likewise.
8832 2023-05-21 Andrew Pinski <apinski@marvell.com>
8834 PR middle-end/109919
8835 * expr.cc (expand_single_bit_test): Don't use the
8836 target for expand_expr.
8838 2023-05-20 Gerald Pfeifer <gerald@pfeifer.com>
8840 * doc/install.texi (Specific): Remove de facto empty alpha*-*-*
8843 2023-05-20 Pan Li <pan2.li@intel.com>
8845 * mode-switching.cc (entity_map): Initialize the array to zero.
8848 2023-05-20 Triffid Hunter <triffid.hunter@gmail.com>
8851 * config/avr/avr.md (divmodpsi, udivmodpsi, divmodsi, udivmodsi):
8852 Remove superfluous "parallel" in insn pattern.
8853 ([u]divmod<mode>4): Tidy code. Use gcc_unreachable() instead of
8854 printing error text to assembly.
8856 2023-05-20 Andrew Pinski <apinski@marvell.com>
8858 * expr.cc (fold_single_bit_test): Rename to ...
8859 (expand_single_bit_test): This and expand directly.
8860 (do_store_flag): Update for the rename function.
8862 2023-05-20 Andrew Pinski <apinski@marvell.com>
8864 * expr.cc (fold_single_bit_test): Use BIT_FIELD_REF
8865 instead of shift/and.
8867 2023-05-20 Andrew Pinski <apinski@marvell.com>
8869 * expr.cc (fold_single_bit_test): Add an assert
8870 and simplify based on code being NE_EXPR or EQ_EXPR.
8872 2023-05-20 Andrew Pinski <apinski@marvell.com>
8874 * expr.cc (fold_single_bit_test): Take inner and bitnum
8875 instead of arg0 and arg1. Update the code.
8876 (do_store_flag): Don't create a tree when calling
8877 fold_single_bit_test instead just call it with the bitnum
8880 2023-05-20 Andrew Pinski <apinski@marvell.com>
8882 * expr.cc (fold_single_bit_test): Use get_def_for_expr
8883 instead of checking the inner's code.
8885 2023-05-20 Andrew Pinski <apinski@marvell.com>
8887 * expr.cc (fold_single_bit_test_into_sign_test): Inline into ...
8888 (fold_single_bit_test): This and simplify.
8890 2023-05-20 Andrew Pinski <apinski@marvell.com>
8892 * fold-const.cc (fold_single_bit_test_into_sign_test): Move to
8894 (fold_single_bit_test): Likewise.
8895 * expr.cc (fold_single_bit_test_into_sign_test): Move from fold-const.cc
8896 (fold_single_bit_test): Likewise and make static.
8897 * fold-const.h (fold_single_bit_test): Remove declaration.
8899 2023-05-20 Die Li <lidie@eswincomputing.com>
8901 * config/riscv/riscv.cc (riscv_expand_conditional_move): Fix mode
8904 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
8906 * config/riscv/bitmanip.md (branch<X:mode>_bext): New split pattern.
8908 2023-05-20 Raphael Moreira Zinsly <rzinsly@ventanamicro.com>
8911 * config/riscv/bitmanip.md
8912 (<bitmanip_optab>disi2): Match with any_extend.
8913 (<bitmanip_optab>disi2_sext): New pattern to match
8914 with sign extend using an ANDI instruction.
8916 2023-05-19 Nathan Sidwell <nathan@acm.org>
8919 * opts.h (handle_deferred_dump_options): Declare.
8920 * opts-global.cc (handle_common_deferred_options): Do not handle
8922 (handle_deferred_dump_options): New.
8923 * toplev.cc (toplev::main): Call it after plugin init.
8925 2023-05-19 Joern Rennecke <joern.rennecke@embecosm.com>
8927 * config/riscv/constraints.md (DsS, DsD): Restore agreement
8928 with shiftm1 mode attribute.
8930 2023-05-19 Andrew Pinski <apinski@marvell.com>
8933 * gcc.cc (default_compilers["@c-header"]): Add %w
8934 after the --output-pch.
8936 2023-05-19 Vineet Gupta <vineetg@rivosinc.com>
8938 * config/riscv/riscv.cc (riscv_split_integer): if loval is equal
8939 to hival, ASHIFT the corresponding regs.
8941 2023-05-19 Robin Dapp <rdapp@ventanamicro.com>
8943 * config/riscv/riscv.cc (riscv_const_insns): Remove else.
8945 2023-05-19 Jakub Jelinek <jakub@redhat.com>
8947 PR tree-optimization/105776
8948 * tree-ssa-math-opts.cc (arith_overflow_check_p): If cast_stmt is
8949 non-NULL, allow division statement to have a cast as single imm use
8950 rather than comparison/condition.
8951 (match_arith_overflow): In that case remove the cast stmt in addition
8952 to the division statement.
8954 2023-05-19 Jakub Jelinek <jakub@redhat.com>
8956 PR tree-optimization/101856
8957 * tree-ssa-math-opts.cc (match_arith_overflow): Pattern detect
8958 unsigned __builtin_mul_overflow_p even when umulv4_optab doesn't
8959 support it but umul_highpart_optab does.
8961 2023-05-19 Eric Botcazou <ebotcazou@adacore.com>
8963 * varasm.cc (output_constructor_bitfield): Call tree_to_uhwi instead
8964 of tree_to_shwi on array indices. Minor tweaks.
8966 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
8968 * alias.cc (ref_all_alias_ptr_type_p): Use _P() defines from tree.h.
8969 * attribs.cc (diag_attr_exclusions): Ditto.
8970 (decl_attributes): Ditto.
8971 (build_type_attribute_qual_variant): Ditto.
8972 * builtins.cc (fold_builtin_carg): Ditto.
8973 (fold_builtin_next_arg): Ditto.
8974 (do_mpc_arg2): Ditto.
8975 * cfgexpand.cc (expand_return): Ditto.
8976 * cgraph.h (decl_in_symtab_p): Ditto.
8977 (symtab_node::get_create): Ditto.
8978 * dwarf2out.cc (base_type_die): Ditto.
8979 (implicit_ptr_descriptor): Ditto.
8980 (gen_array_type_die): Ditto.
8981 (gen_type_die_with_usage): Ditto.
8982 (optimize_location_into_implicit_ptr): Ditto.
8983 * expr.cc (do_store_flag): Ditto.
8984 * fold-const.cc (negate_expr_p): Ditto.
8985 (fold_negate_expr_1): Ditto.
8986 (fold_convert_const): Ditto.
8987 (fold_convert_loc): Ditto.
8988 (constant_boolean_node): Ditto.
8989 (fold_binary_op_with_conditional_arg): Ditto.
8990 (build_fold_addr_expr_with_type_loc): Ditto.
8991 (fold_comparison): Ditto.
8992 (fold_checksum_tree): Ditto.
8993 (tree_unary_nonnegative_warnv_p): Ditto.
8994 (integer_valued_real_unary_p): Ditto.
8995 (fold_read_from_constant_string): Ditto.
8996 * gcc-rich-location.cc (maybe_range_label_for_tree_type_mismatch::get_text): Ditto.
8997 * gimple-expr.cc (useless_type_conversion_p): Ditto.
8998 (is_gimple_reg): Ditto.
8999 (is_gimple_asm_val): Ditto.
9000 (mark_addressable): Ditto.
9001 * gimple-expr.h (is_gimple_variable): Ditto.
9002 (virtual_operand_p): Ditto.
9003 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores): Ditto.
9004 * gimplify.cc (gimplify_bind_expr): Ditto.
9005 (gimplify_return_expr): Ditto.
9006 (gimple_add_padding_init_for_auto_var): Ditto.
9007 (gimplify_addr_expr): Ditto.
9008 (omp_add_variable): Ditto.
9009 (omp_notice_variable): Ditto.
9010 (omp_get_base_pointer): Ditto.
9011 (omp_strip_components_and_deref): Ditto.
9012 (omp_strip_indirections): Ditto.
9013 (omp_accumulate_sibling_list): Ditto.
9014 (omp_build_struct_sibling_lists): Ditto.
9015 (gimplify_adjust_omp_clauses_1): Ditto.
9016 (gimplify_adjust_omp_clauses): Ditto.
9017 (gimplify_omp_for): Ditto.
9018 (goa_lhs_expr_p): Ditto.
9019 (gimplify_one_sizepos): Ditto.
9020 * graphite-scop-detection.cc (scop_detection::graphite_can_represent_scev): Ditto.
9021 * ipa-devirt.cc (odr_types_equivalent_p): Ditto.
9022 * ipa-prop.cc (ipa_set_jf_constant): Ditto.
9023 (propagate_controlled_uses): Ditto.
9024 * ipa-sra.cc (type_prevails_p): Ditto.
9025 (scan_expr_access): Ditto.
9026 * optabs-tree.cc (optab_for_tree_code): Ditto.
9027 * toplev.cc (wrapup_global_declaration_1): Ditto.
9028 * trans-mem.cc (transaction_invariant_address_p): Ditto.
9029 * tree-cfg.cc (verify_types_in_gimple_reference): Ditto.
9030 (verify_gimple_comparison): Ditto.
9031 (verify_gimple_assign_binary): Ditto.
9032 (verify_gimple_assign_single): Ditto.
9033 * tree-complex.cc (get_component_ssa_name): Ditto.
9034 * tree-emutls.cc (lower_emutls_2): Ditto.
9035 * tree-inline.cc (copy_tree_body_r): Ditto.
9036 (estimate_move_cost): Ditto.
9037 (copy_decl_for_dup_finish): Ditto.
9038 * tree-nested.cc (convert_nonlocal_omp_clauses): Ditto.
9039 (note_nonlocal_vla_type): Ditto.
9040 (convert_local_omp_clauses): Ditto.
9041 (remap_vla_decls): Ditto.
9042 (fixup_vla_decls): Ditto.
9043 * tree-parloops.cc (loop_has_vector_phi_nodes): Ditto.
9044 * tree-pretty-print.cc (print_declaration): Ditto.
9045 (print_call_name): Ditto.
9046 * tree-sra.cc (compare_access_positions): Ditto.
9047 * tree-ssa-alias.cc (compare_type_sizes): Ditto.
9048 * tree-ssa-ccp.cc (get_default_value): Ditto.
9049 * tree-ssa-coalesce.cc (populate_coalesce_list_for_outofssa): Ditto.
9050 * tree-ssa-dom.cc (reduce_vector_comparison_to_scalar_comparison): Ditto.
9051 * tree-ssa-forwprop.cc (can_propagate_from): Ditto.
9052 * tree-ssa-propagate.cc (may_propagate_copy): Ditto.
9053 * tree-ssa-sccvn.cc (fully_constant_vn_reference_p): Ditto.
9054 * tree-ssa-sink.cc (statement_sink_location): Ditto.
9055 * tree-ssa-structalias.cc (type_must_have_pointers): Ditto.
9056 * tree-ssa-ter.cc (find_replaceable_in_bb): Ditto.
9057 * tree-ssa-uninit.cc (warn_uninit): Ditto.
9058 * tree-ssa.cc (maybe_rewrite_mem_ref_base): Ditto.
9059 (non_rewritable_mem_ref_base): Ditto.
9060 * tree-streamer-in.cc (lto_input_ts_type_non_common_tree_pointers): Ditto.
9061 * tree-streamer-out.cc (write_ts_type_non_common_tree_pointers): Ditto.
9062 * tree-vect-generic.cc (do_binop): Ditto.
9064 * tree-vect-stmts.cc (vect_init_vector): Ditto.
9065 * tree-vector-builder.h (tree_vector_builder::note_representative): Ditto.
9066 * tree.cc (sign_mask_for): Ditto.
9067 (verify_type_variant): Ditto.
9068 (gimple_canonical_types_compatible_p): Ditto.
9069 (verify_type): Ditto.
9070 * ubsan.cc (get_ubsan_type_info_for_type): Ditto.
9071 * var-tracking.cc (prepare_call_arguments): Ditto.
9072 (vt_add_function_parameters): Ditto.
9073 * varasm.cc (decode_addr_const): Ditto.
9075 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
9077 * omp-low.cc (scan_sharing_clauses): Use _P() defines from tree.h.
9078 (lower_reduction_clauses): Ditto.
9079 (lower_send_clauses): Ditto.
9080 (lower_omp_task_reductions): Ditto.
9081 * omp-oacc-neuter-broadcast.cc (install_var_field): Ditto.
9082 (worker_single_copy): Ditto.
9083 * omp-offload.cc (oacc_rewrite_var_decl): Ditto.
9084 * omp-simd-clone.cc (plausible_type_for_simd_clone): Ditto.
9086 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
9088 * lto-streamer-in.cc (lto_input_var_decl_ref): Use _P defines from
9090 (lto_read_body_or_constructor): Ditto.
9091 * lto-streamer-out.cc (tree_is_indexable): Ditto.
9092 (lto_output_var_decl_ref): Ditto.
9093 (DFS::DFS_write_tree_body): Ditto.
9095 (write_symbol_extension_info): Ditto.
9097 2023-05-18 Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
9099 * config/aarch64/aarch64.cc (aarch64_short_vector_p): Use _P
9100 defines from tree.h.
9101 (aarch64_mangle_type): Ditto.
9102 * config/alpha/alpha.cc (alpha_in_small_data_p): Ditto.
9103 (alpha_gimplify_va_arg_1): Ditto.
9104 * config/arc/arc.cc (arc_encode_section_info): Ditto.
9105 (arc_is_aux_reg_p): Ditto.
9106 (arc_is_uncached_mem_p): Ditto.
9107 (arc_handle_aux_attribute): Ditto.
9108 * config/arm/arm.cc (arm_handle_isr_attribute): Ditto.
9109 (arm_handle_cmse_nonsecure_call): Ditto.
9110 (arm_set_default_type_attributes): Ditto.
9111 (arm_is_segment_info_known): Ditto.
9112 (arm_mangle_type): Ditto.
9113 * config/arm/unknown-elf.h (IN_NAMED_SECTION_P): Ditto.
9114 * config/avr/avr.cc (avr_lookup_function_attribute1): Ditto.
9115 (avr_decl_absdata_p): Ditto.
9116 (avr_insert_attributes): Ditto.
9117 (avr_section_type_flags): Ditto.
9118 (avr_encode_section_info): Ditto.
9119 * config/bfin/bfin.cc (bfin_handle_l2_attribute): Ditto.
9120 * config/bpf/bpf.cc (bpf_core_compute): Ditto.
9121 * config/c6x/c6x.cc (c6x_in_small_data_p): Ditto.
9122 * config/csky/csky.cc (csky_handle_isr_attribute): Ditto.
9123 (csky_mangle_type): Ditto.
9124 * config/darwin-c.cc (darwin_pragma_unused): Ditto.
9125 * config/darwin.cc (is_objc_metadata): Ditto.
9126 * config/epiphany/epiphany.cc (epiphany_function_ok_for_sibcall): Ditto.
9127 * config/epiphany/epiphany.h (ROUND_TYPE_ALIGN): Ditto.
9128 * config/frv/frv.cc (frv_emit_movsi): Ditto.
9129 * config/gcn/gcn-tree.cc (gcn_lockless_update): Ditto.
9130 * config/gcn/gcn.cc (gcn_asm_output_symbol_ref): Ditto.
9131 * config/h8300/h8300.cc (h8300_encode_section_info): Ditto.
9132 * config/i386/i386-expand.cc: Ditto.
9133 * config/i386/i386.cc (type_natural_mode): Ditto.
9134 (ix86_function_arg): Ditto.
9135 (ix86_data_alignment): Ditto.
9136 (ix86_local_alignment): Ditto.
9137 (ix86_simd_clone_compute_vecsize_and_simdlen): Ditto.
9138 * config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Ditto.
9139 (i386_pe_type_dllexport_p): Ditto.
9140 (i386_pe_adjust_class_at_definition): Ditto.
9141 * config/i386/winnt.cc (i386_pe_determine_dllimport_p): Ditto.
9142 (i386_pe_binds_local_p): Ditto.
9143 (i386_pe_section_type_flags): Ditto.
9144 * config/ia64/ia64.cc (ia64_encode_section_info): Ditto.
9145 (ia64_gimplify_va_arg): Ditto.
9146 (ia64_in_small_data_p): Ditto.
9147 * config/iq2000/iq2000.cc (iq2000_function_arg): Ditto.
9148 * config/lm32/lm32.cc (lm32_in_small_data_p): Ditto.
9149 * config/loongarch/loongarch.cc (loongarch_handle_model_attribute): Ditto.
9150 * config/m32c/m32c.cc (m32c_insert_attributes): Ditto.
9151 * config/mcore/mcore.cc (mcore_mark_dllimport): Ditto.
9152 (mcore_encode_section_info): Ditto.
9153 * config/microblaze/microblaze.cc (microblaze_elf_in_small_data_p): Ditto.
9154 * config/mips/mips.cc (mips_output_aligned_decl_common): Ditto.
9155 * config/mmix/mmix.cc (mmix_encode_section_info): Ditto.
9156 * config/nvptx/nvptx.cc (nvptx_encode_section_info): Ditto.
9157 (pass_in_memory): Ditto.
9158 (nvptx_generate_vector_shuffle): Ditto.
9159 (nvptx_lockless_update): Ditto.
9160 * config/pa/pa.cc (pa_function_arg_padding): Ditto.
9161 (pa_function_value): Ditto.
9162 (pa_function_arg): Ditto.
9163 * config/pa/pa.h (IN_NAMED_SECTION_P): Ditto.
9164 (TEXT_SPACE_P): Ditto.
9165 * config/pa/som.h (MAKE_DECL_ONE_ONLY): Ditto.
9166 * config/pdp11/pdp11.cc (pdp11_return_in_memory): Ditto.
9167 * config/riscv/riscv.cc (riscv_in_small_data_p): Ditto.
9168 (riscv_mangle_type): Ditto.
9169 * config/rl78/rl78.cc (rl78_insert_attributes): Ditto.
9170 (rl78_addsi3_internal): Ditto.
9171 * config/rs6000/aix.h (ROUND_TYPE_ALIGN): Ditto.
9172 * config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Ditto.
9173 * config/rs6000/freebsd64.h (ROUND_TYPE_ALIGN): Ditto.
9174 * config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Ditto.
9175 * config/rs6000/rs6000-call.cc (rs6000_function_arg_boundary): Ditto.
9176 (rs6000_function_arg_advance_1): Ditto.
9177 (rs6000_function_arg): Ditto.
9178 (rs6000_pass_by_reference): Ditto.
9179 * config/rs6000/rs6000-logue.cc (rs6000_function_ok_for_sibcall): Ditto.
9180 * config/rs6000/rs6000.cc (rs6000_data_alignment): Ditto.
9181 (rs6000_set_default_type_attributes): Ditto.
9182 (rs6000_elf_in_small_data_p): Ditto.
9183 (IN_NAMED_SECTION): Ditto.
9184 (rs6000_xcoff_encode_section_info): Ditto.
9185 (rs6000_function_value): Ditto.
9186 (invalid_arg_for_unprototyped_fn): Ditto.
9187 * config/s390/s390-c.cc (s390_fn_types_compatible): Ditto.
9188 (s390_vec_n_elem): Ditto.
9189 * config/s390/s390.cc (s390_check_type_for_vector_abi): Ditto.
9190 (s390_function_arg_integer): Ditto.
9191 (s390_return_in_memory): Ditto.
9192 (s390_encode_section_info): Ditto.
9193 * config/sh/sh.cc (sh_gimplify_va_arg_expr): Ditto.
9194 (sh_function_value): Ditto.
9195 * config/sol2.cc (solaris_insert_attributes): Ditto.
9196 * config/sparc/sparc.cc (function_arg_slotno): Ditto.
9197 * config/sparc/sparc.h (ROUND_TYPE_ALIGN): Ditto.
9198 * config/stormy16/stormy16.cc (xstormy16_encode_section_info): Ditto.
9199 (xstormy16_handle_below100_attribute): Ditto.
9200 * config/v850/v850.cc (v850_encode_section_info): Ditto.
9201 (v850_insert_attributes): Ditto.
9202 * config/visium/visium.cc (visium_pass_by_reference): Ditto.
9203 (visium_return_in_memory): Ditto.
9204 * config/xtensa/xtensa.cc (xtensa_multibss_section_type_flags): Ditto.
9206 2023-05-18 Uros Bizjak <ubizjak@gmail.com>
9208 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi_partial): New.
9209 (ix86_expand_vecop_qihi): Add op2vec bool variable.
9210 Do not set REG_EQUAL note.
9211 * config/i386/i386-protos.h (ix86_expand_vecop_qihi_partial):
9213 * config/i386/i386.cc (ix86_multiplication_cost): Handle
9214 V4QImode and V8QImode.
9215 * config/i386/mmx.md (mulv8qi3): New expander.
9217 * config/i386/sse.md (mulv8qi3): Remove.
9219 2023-05-18 Georg-Johann Lay <avr@gjlay.de>
9221 * config/avr/gen-avr-mmcu-specs.cc: Remove stale */ after // comment.
9223 2023-05-18 Jonathan Wakely <jwakely@redhat.com>
9226 * config.gcc: Use = operator instead of ==.
9228 2023-05-18 Michael Bäuerle <micha@NetBSD.org>
9231 * config/nvptx/gen-opt.sh: Use = operator instead of ==.
9232 * configure.ac: Likewise.
9233 * configure: Regenerate.
9235 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
9237 * config/arm/arm_mve.h: (__ARM_mve_typeid): Add more pointer types.
9238 (__ARM_mve_coerce1): Remove.
9239 (__ARM_mve_coerce2): Remove.
9240 (__ARM_mve_coerce3): Remove.
9241 (__ARM_mve_coerce_i_scalar): New.
9242 (__ARM_mve_coerce_s8_ptr): New.
9243 (__ARM_mve_coerce_u8_ptr): New.
9244 (__ARM_mve_coerce_s16_ptr): New.
9245 (__ARM_mve_coerce_u16_ptr): New.
9246 (__ARM_mve_coerce_s32_ptr): New.
9247 (__ARM_mve_coerce_u32_ptr): New.
9248 (__ARM_mve_coerce_s64_ptr): New.
9249 (__ARM_mve_coerce_u64_ptr): New.
9250 (__ARM_mve_coerce_f_scalar): New.
9251 (__ARM_mve_coerce_f16_ptr): New.
9252 (__ARM_mve_coerce_f32_ptr): New.
9253 (__arm_vst4q): Change _coerce_ overloads.
9254 (__arm_vbicq): Change _coerce_ overloads.
9255 (__arm_vld1q): Change _coerce_ overloads.
9256 (__arm_vld1q_z): Change _coerce_ overloads.
9257 (__arm_vld2q): Change _coerce_ overloads.
9258 (__arm_vld4q): Change _coerce_ overloads.
9259 (__arm_vldrhq_gather_offset): Change _coerce_ overloads.
9260 (__arm_vldrhq_gather_offset_z): Change _coerce_ overloads.
9261 (__arm_vldrhq_gather_shifted_offset): Change _coerce_ overloads.
9262 (__arm_vldrhq_gather_shifted_offset_z): Change _coerce_ overloads.
9263 (__arm_vldrwq_gather_offset): Change _coerce_ overloads.
9264 (__arm_vldrwq_gather_offset_z): Change _coerce_ overloads.
9265 (__arm_vldrwq_gather_shifted_offset): Change _coerce_ overloads.
9266 (__arm_vldrwq_gather_shifted_offset_z): Change _coerce_ overloads.
9267 (__arm_vst1q_p): Change _coerce_ overloads.
9268 (__arm_vst2q): Change _coerce_ overloads.
9269 (__arm_vst1q): Change _coerce_ overloads.
9270 (__arm_vstrhq): Change _coerce_ overloads.
9271 (__arm_vstrhq_p): Change _coerce_ overloads.
9272 (__arm_vstrhq_scatter_offset_p): Change _coerce_ overloads.
9273 (__arm_vstrhq_scatter_offset): Change _coerce_ overloads.
9274 (__arm_vstrhq_scatter_shifted_offset_p): Change _coerce_ overloads.
9275 (__arm_vstrhq_scatter_shifted_offset): Change _coerce_ overloads.
9276 (__arm_vstrwq_p): Change _coerce_ overloads.
9277 (__arm_vstrwq): Change _coerce_ overloads.
9278 (__arm_vstrwq_scatter_offset): Change _coerce_ overloads.
9279 (__arm_vstrwq_scatter_offset_p): Change _coerce_ overloads.
9280 (__arm_vstrwq_scatter_shifted_offset): Change _coerce_ overloads.
9281 (__arm_vstrwq_scatter_shifted_offset_p): Change _coerce_ overloads.
9282 (__arm_vsetq_lane): Change _coerce_ overloads.
9283 (__arm_vldrbq_gather_offset): Change _coerce_ overloads.
9284 (__arm_vdwdupq_x_u8): Change _coerce_ overloads.
9285 (__arm_vdwdupq_x_u16): Change _coerce_ overloads.
9286 (__arm_vdwdupq_x_u32): Change _coerce_ overloads.
9287 (__arm_viwdupq_x_u8): Change _coerce_ overloads.
9288 (__arm_viwdupq_x_u16): Change _coerce_ overloads.
9289 (__arm_viwdupq_x_u32): Change _coerce_ overloads.
9290 (__arm_vidupq_x_u8): Change _coerce_ overloads.
9291 (__arm_vddupq_x_u8): Change _coerce_ overloads.
9292 (__arm_vidupq_x_u16): Change _coerce_ overloads.
9293 (__arm_vddupq_x_u16): Change _coerce_ overloads.
9294 (__arm_vidupq_x_u32): Change _coerce_ overloads.
9295 (__arm_vddupq_x_u32): Change _coerce_ overloads.
9296 (__arm_vldrdq_gather_offset): Change _coerce_ overloads.
9297 (__arm_vldrdq_gather_offset_z): Change _coerce_ overloads.
9298 (__arm_vldrdq_gather_shifted_offset): Change _coerce_ overloads.
9299 (__arm_vldrdq_gather_shifted_offset_z): Change _coerce_ overloads.
9300 (__arm_vldrbq_gather_offset_z): Change _coerce_ overloads.
9301 (__arm_vidupq_u16): Change _coerce_ overloads.
9302 (__arm_vidupq_u32): Change _coerce_ overloads.
9303 (__arm_vidupq_u8): Change _coerce_ overloads.
9304 (__arm_vddupq_u16): Change _coerce_ overloads.
9305 (__arm_vddupq_u32): Change _coerce_ overloads.
9306 (__arm_vddupq_u8): Change _coerce_ overloads.
9307 (__arm_viwdupq_m): Change _coerce_ overloads.
9308 (__arm_viwdupq_u16): Change _coerce_ overloads.
9309 (__arm_viwdupq_u32): Change _coerce_ overloads.
9310 (__arm_viwdupq_u8): Change _coerce_ overloads.
9311 (__arm_vdwdupq_m): Change _coerce_ overloads.
9312 (__arm_vdwdupq_u16): Change _coerce_ overloads.
9313 (__arm_vdwdupq_u32): Change _coerce_ overloads.
9314 (__arm_vdwdupq_u8): Change _coerce_ overloads.
9315 (__arm_vstrbq): Change _coerce_ overloads.
9316 (__arm_vstrbq_p): Change _coerce_ overloads.
9317 (__arm_vstrbq_scatter_offset_p): Change _coerce_ overloads.
9318 (__arm_vstrdq_scatter_offset_p): Change _coerce_ overloads.
9319 (__arm_vstrdq_scatter_offset): Change _coerce_ overloads.
9320 (__arm_vstrdq_scatter_shifted_offset_p): Change _coerce_ overloads.
9321 (__arm_vstrdq_scatter_shifted_offset): Change _coerce_ overloads.
9323 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
9325 * config/arm/arm_mve.h (__arm_vbicq): Change coerce on
9328 2023-05-18 Stam Markianos-Wright <stam.markianos-wright@arm.com>
9330 * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic.
9331 (__arm_vadcq_u32): Likewise.
9332 (__arm_vadcq_m_s32): Likewise.
9333 (__arm_vadcq_m_u32): Likewise.
9334 (__arm_vsbcq_s32): Likewise.
9335 (__arm_vsbcq_u32): Likewise.
9336 (__arm_vsbcq_m_s32): Likewise.
9337 (__arm_vsbcq_m_u32): Likewise.
9338 * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile.
9340 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
9342 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrev64q_f<mode>)
9343 (mve_vrev32q_fv8hf, mve_vcvttq_f32_f16v4sf)
9344 (mve_vcvtbq_f32_f16v4sf, mve_vcvtq_to_f_<supf><mode>)
9345 (mve_vrev64q_<supf><mode>, mve_vcvtq_from_f_<supf><mode>)
9346 (mve_vmovltq_<supf><mode>, mve_vmovlbq_<supf><mode>)
9347 (mve_vcvtpq_<supf><mode>, mve_vcvtnq_<supf><mode>)
9348 (mve_vcvtmq_<supf><mode>, mve_vcvtaq_<supf><mode>)
9349 (mve_vmvnq_n_<supf><mode>, mve_vrev16q_<supf>v16qi)
9350 (mve_vctp<MVE_vctp>q<MVE_vpred>, mve_vbrsrq_n_f<mode>)
9351 (mve_vbrsrq_n_<supf><mode>, mve_vandq_f<mode>, mve_vbicq_f<mode>)
9352 (mve_vctp<MVE_vctp>q_m<MVE_vpred>, mve_vcvtbq_f16_f32v8hf)
9353 (mve_vcvttq_f16_f32v8hf, mve_veorq_f<mode>)
9354 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
9355 (mve_vmlsldavxq_s<mode>, mve_vornq_f<mode>, mve_vorrq_f<mode>)
9356 (mve_vrmlaldavhxq_sv4si, mve_vcvtq_m_to_f_<supf><mode>)
9357 (mve_vshlcq_<supf><mode>, mve_vmvnq_m_<supf><mode>)
9358 (mve_vpselq_<supf><mode>, mve_vcvtbq_m_f16_f32v8hf)
9359 (mve_vcvtbq_m_f32_f16v4sf, mve_vcvttq_m_f16_f32v8hf)
9360 (mve_vcvttq_m_f32_f16v4sf, mve_vmlaldavq_p_<supf><mode>)
9361 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
9362 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>)
9363 (mve_vmvnq_m_n_<supf><mode>, mve_vorrq_m_n_<supf><mode>)
9364 (mve_vpselq_f<mode>, mve_vrev32q_m_fv8hf)
9365 (mve_vrev32q_m_<supf><mode>, mve_vrev64q_m_f<mode>)
9366 (mve_vrmlaldavhaxq_sv4si, mve_vrmlaldavhxq_p_sv4si)
9367 (mve_vrmlsldavhaxq_sv4si, mve_vrmlsldavhq_p_sv4si)
9368 (mve_vrmlsldavhxq_p_sv4si, mve_vrev16q_m_<supf>v16qi)
9369 (mve_vrmlaldavhq_p_<supf>v4si, mve_vrmlsldavhaq_sv4si)
9370 (mve_vandq_m_<supf><mode>, mve_vbicq_m_<supf><mode>)
9371 (mve_veorq_m_<supf><mode>, mve_vornq_m_<supf><mode>)
9372 (mve_vorrq_m_<supf><mode>, mve_vandq_m_f<mode>)
9373 (mve_vbicq_m_f<mode>, mve_veorq_m_f<mode>, mve_vornq_m_f<mode>)
9374 (mve_vorrq_m_f<mode>)
9375 (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn)
9376 (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn)
9377 (mve_vstrdq_scatter_base_wb_p_<supf>v2di) : Fix spacing and
9378 capitalization in the emitted asm.
9380 2023-05-18 Andrea Corallo <andrea.corallo@arm.com>
9382 * config/arm/constraints.md (mve_vldrd_immediate): Move it to
9384 (Ri): Move constraint definition from predicates.md.
9385 (Rl): Define new constraint.
9386 * config/arm/mve.md (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Add
9388 (mve_vstrwq_scatter_base_wb_p_fv4sf): Add missing Up constraint
9389 for op 1, use mve_vstrw_immediate predicate and Rl constraint for
9390 op 2. Fix asm output spacing.
9391 (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Add missing constraint.
9392 * config/arm/predicates.md (Ri) Move constraint to constraints.md
9393 (mve_vldrd_immediate): Move it from
9395 (mve_vstrw_immediate): New predicate.
9397 2023-05-18 Pan Li <pan2.li@intel.com>
9398 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
9399 Kito Cheng <kito.cheng@sifive.com>
9400 Richard Biener <rguenther@suse.de>
9401 Richard Sandiford <richard.sandiford@arm.com>
9403 * combine.cc (struct reg_stat_type): Extend machine_mode to 16 bits.
9404 * cse.cc (struct qty_table_elem): Extend machine_mode to 16 bits
9405 (struct table_elt): Extend machine_mode to 16 bits.
9406 (struct set): Ditto.
9407 * genmodes.cc (emit_mode_wider): Extend type from char to short.
9408 (emit_mode_complex): Ditto.
9409 (emit_mode_inner): Ditto.
9410 (emit_class_narrowest_mode): Ditto.
9411 * genopinit.cc (main): Extend the machine_mode limit.
9412 * ira-int.h (struct ira_allocno): Extend machine_mode to 16 bits and
9413 re-ordered the struct fields for padding.
9414 * machmode.h (MACHINE_MODE_BITSIZE): New macro.
9415 (GET_MODE_2XWIDER_MODE): Extend type from char to short.
9416 (get_mode_alignment): Extend type from char to short.
9417 * ree.cc (struct ext_modified): Extend machine_mode to 16 bits and
9418 removed the ATTRIBUTE_PACKED.
9419 * rtl-ssa/accesses.h: Extend machine_mode to 16 bits, narrow
9420 * rtl-ssa/internals.inl (rtl_ssa::access_info): Adjust the assignment.
9421 m_kind to 2 bits and remove m_spare.
9422 * rtl.h (RTX_CODE_BITSIZE): New macro.
9423 (struct rtx_def): Swap both the bit size and location between the
9424 rtx_code and the machine_mode.
9425 (subreg_shape::unique_id): Extend the machine_mode limit.
9426 * rtlanal.h: Extend machine_mode to 16 bits.
9427 * tree-core.h (struct tree_type_common): Extend machine_mode to 16
9428 bits and re-ordered the struct fields for padding.
9429 (struct tree_decl_common): Extend machine_mode to 16 bits.
9431 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
9433 * genrecog.cc (print_nonbool_test): Fix type error of
9434 switch (SUBREG_BYTE (op))'.
9436 2023-05-17 Jin Ma <jinma@linux.alibaba.com>
9438 * common/config/riscv/riscv-common.cc: Remove
9439 trailing spaces on lines.
9440 * config/riscv/riscv.cc (riscv_legitimize_move): Likewise.
9441 * config/riscv/riscv.h (enum reg_class): Likewise.
9442 * config/riscv/riscv.md: Likewise.
9444 2023-05-17 John David Anglin <danglin@gcc.gnu.org>
9446 * config/pa/pa.md (clear_cache): New.
9448 2023-05-17 Arsen Arsenović <arsen@aarsen.me>
9450 * doc/extend.texi (C++ Concepts) <forall>: Remove extraneous
9451 parenthesis. Fix misnamed index entry.
9452 <concept>: Fix misnamed index entry.
9454 2023-05-17 Jivan Hakobyan <jivanhakobyan9@gmail.com>
9456 * config/riscv/riscv.md (*<optab><GPR:mode>3_mask): New pattern,
9458 (*<optab>si3_mask, *<optab>di3_mask): Here.
9459 (*<optab>si3_mask_1, *<optab>di3_mask_1): And here.
9460 * config/riscv/bitmanip.md (*<bitmanip_optab><GPR:mode>3_mask): New
9462 (*<bitmanip_optab>si3_sext_mask): Likewise.
9463 * config/riscv/iterators.md (shiftm1): Use const_si_mask_operand
9464 and const_di_mask_operand.
9465 (bitmanip_rotate): New iterator.
9466 (bitmanip_optab): Add rotates.
9467 * config/riscv/predicates.md (const_si_mask_operand): Renamed
9468 from const31_operand. Generalize to handle more mask constants.
9469 (const_di_mask_operand): Similarly.
9471 2023-05-17 Jakub Jelinek <jakub@redhat.com>
9474 * config/i386/i386-builtin-types.def (FLOAT128): Use
9475 float128t_type_node rather than float128_type_node.
9477 2023-05-17 Alexander Monakov <amonakov@ispras.ru>
9479 * tree-ssa-math-opts.cc (convert_mult_to_fma): Enable only for
9480 FP_CONTRACT_FAST (no functional change).
9482 2023-05-17 Uros Bizjak <ubizjak@gmail.com>
9484 * config/i386/i386.cc (ix86_multiplication_cost): Correct
9485 calcuation of integer vector mode costs to reflect generated
9486 instruction sequences of different integer vector modes and
9487 different target ABIs.
9489 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9491 * config/riscv/riscv-opts.h (enum riscv_entity): New enum.
9492 * config/riscv/riscv.cc (riscv_emit_mode_set): New function.
9493 (riscv_mode_needed): Ditto.
9494 (riscv_mode_after): Ditto.
9495 (riscv_mode_entry): Ditto.
9496 (riscv_mode_exit): Ditto.
9497 (riscv_mode_priority): Ditto.
9498 (TARGET_MODE_EMIT): New target hook.
9499 (TARGET_MODE_NEEDED): Ditto.
9500 (TARGET_MODE_AFTER): Ditto.
9501 (TARGET_MODE_ENTRY): Ditto.
9502 (TARGET_MODE_EXIT): Ditto.
9503 (TARGET_MODE_PRIORITY): Ditto.
9504 * config/riscv/riscv.h (OPTIMIZE_MODE_SWITCHING): Ditto.
9505 (NUM_MODES_FOR_MODE_SWITCHING): Ditto.
9506 * config/riscv/riscv.md: Add csrwvxrm.
9507 * config/riscv/vector.md (rnu,rne,rdn,rod,none): New attribute.
9508 (vxrmsi): New pattern.
9510 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9512 * config/riscv/riscv-vector-builtins-bases.cc: Introduce rounding mode.
9513 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
9514 (struct narrow_alu_def): Ditto.
9515 * config/riscv/riscv-vector-builtins.cc (function_builder::apply_predication): Ditto.
9516 (function_expander::use_exact_insn): Ditto.
9517 * config/riscv/riscv-vector-builtins.h (function_checker::arg_num): New function.
9518 (function_base::has_rounding_mode_operand_p): New function.
9520 2023-05-17 Andrew Pinski <apinski@marvell.com>
9522 * tree-ssa-forwprop.cc (simplify_builtin_call): Check
9523 against 0 instead of calling integer_zerop.
9525 2023-05-17 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9527 * config/riscv/riscv-vector-builtins.cc (register_vxrm): New function.
9528 (DEF_RVV_VXRM_ENUM): New macro.
9529 (handle_pragma_vector): Add vxrm enum register.
9530 * config/riscv/riscv-vector-builtins.def (DEF_RVV_VXRM_ENUM): New macro.
9536 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
9538 * value-range.h (Value_Range::operator=): New.
9540 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
9542 * value-range.cc (vrange::operator=): Add a stub to copy
9544 * value-range.h (is_a <unsupported_range>): New.
9545 (Value_Range::operator=): Support copying unsupported ranges.
9547 2023-05-17 Aldy Hernandez <aldyh@redhat.com>
9549 * data-streamer-in.cc (streamer_read_real_value): New.
9550 (streamer_read_value_range): New.
9551 * data-streamer-out.cc (streamer_write_real_value): New.
9552 (streamer_write_vrange): New.
9553 * data-streamer.h (streamer_write_vrange): New.
9554 (streamer_read_value_range): New.
9556 2023-05-17 Jonathan Wakely <jwakely@redhat.com>
9559 * doc/invoke.texi (Code Gen Options): Note that -fshort-enums
9560 is ignored for a fixed underlying type.
9561 (C++ Dialect Options): Likewise for -fstrict-enums.
9563 2023-05-17 Tobias Burnus <tobias@codesourcery.com>
9565 * gimplify.cc (gimplify_scan_omp_clauses): Remove Fortran
9568 2023-05-17 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
9570 * config/s390/s390.cc (TARGET_ATOMIC_ALIGN_FOR_MODE):
9572 (s390_atomic_align_for_mode): New.
9574 2023-05-17 Jakub Jelinek <jakub@redhat.com>
9576 * wide-int.cc (wi::from_array): Add missing closing paren in function
9579 2023-05-17 Kewen Lin <linkw@linux.ibm.com>
9581 * tree-vect-loop.cc (vect_analyze_loop_1): Don't retry analysis with
9582 suggested unroll factor once the previous analysis fails.
9584 2023-05-17 Pan Li <pan2.li@intel.com>
9586 * config/riscv/genrvv-type-indexer.cc (BOOL_SIZE_LIST): New
9588 (main): Add bool1 to the type indexer.
9589 * config/riscv/riscv-vector-builtins-functions.def
9590 (vreinterpret): Register vbool1 interpret function.
9591 * config/riscv/riscv-vector-builtins-types.def
9592 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
9593 (vint8m1_t): Add the type to bool1_interpret_ops.
9594 (vint16m1_t): Ditto.
9595 (vint32m1_t): Ditto.
9596 (vint64m1_t): Ditto.
9597 (vuint8m1_t): Ditto.
9598 (vuint16m1_t): Ditto.
9599 (vuint32m1_t): Ditto.
9600 (vuint64m1_t): Ditto.
9601 * config/riscv/riscv-vector-builtins.cc
9602 (DEF_RVV_BOOL1_INTERPRET_OPS): New macro.
9603 (required_extensions_p): Add bool1 interpret case.
9604 * config/riscv/riscv-vector-builtins.def
9605 (bool1_interpret): Add bool1 interpret to base type.
9606 * config/riscv/vector.md (@vreinterpret<mode>): Add new expand
9607 with VB dest for vreinterpret.
9609 2023-05-17 Jiufu Guo <guojiufu@linux.ibm.com>
9612 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Support building
9613 constants through "lis; xoris".
9615 2023-05-16 Ajit Kumar Agarwal <aagarwa1@linux.ibm.com>
9617 * common/config/rs6000/rs6000-common.cc: Add REE pass as a
9618 default rs6000 target pass for O2 and above.
9619 * doc/invoke.texi: Document -free
9621 2023-05-16 Kito Cheng <kito.cheng@sifive.com>
9623 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
9624 Fix wrong select_kind...
9626 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
9628 * config/s390/s390-protos.h (s390_expand_setmem): Change
9630 * config/s390/s390.cc (s390_expand_setmem): For memset's less
9631 than or equal to 256 byte do not perform a libc call.
9632 * config/s390/s390.md: Change expander into a version which
9635 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
9637 * config/s390/s390-protos.h (s390_expand_movmem): New.
9638 * config/s390/s390.cc (s390_expand_movmem): New.
9639 * config/s390/s390.md (movmem<mode>): New.
9643 2023-05-16 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
9645 * config/s390/s390-protos.h (s390_expand_cpymem): Change
9647 * config/s390/s390.cc (s390_expand_cpymem): For memcpy's less
9648 than or equal to 256 byte do not perform a libc call.
9649 (s390_expand_insv): Adapt new function signature of
9651 * config/s390/s390.md: Change expander into a version which
9654 2023-05-16 Andrew Pinski <apinski@marvell.com>
9656 PR tree-optimization/109424
9657 * match.pd: Add patterns for min/max of zero_one_valued
9660 2023-05-16 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9662 * config/riscv/riscv-protos.h (enum frm_field_enum): New enum.
9663 * config/riscv/riscv-vector-builtins.cc
9664 (function_expander::use_ternop_insn): Add default rounding mode.
9665 (function_expander::use_widen_ternop_insn): Ditto.
9666 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add FRM REGNUM.
9667 (riscv_hard_regno_mode_ok): Ditto.
9668 (riscv_conditional_register_usage): Ditto.
9669 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
9671 (RISCV_DWARF_FRM): Ditto.
9672 * config/riscv/riscv.md: Ditto.
9673 * config/riscv/vector-iterators.md: split no frm and has frm operations.
9674 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
9675 (@pred_<optab><mode>): Ditto.
9677 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
9679 PR tree-optimization/109695
9680 * value-range.cc (irange::operator=): Resize range.
9681 (irange::union_): Same.
9682 (irange::intersect): Same.
9683 (irange::invert): Same.
9684 (int_range_max): Default to 3 sub-ranges and resize as needed.
9685 * value-range.h (irange::maybe_resize): New.
9687 (int_range::int_range): Adjust for resizing.
9688 (int_range::operator=): Same.
9690 2023-05-15 Aldy Hernandez <aldyh@redhat.com>
9692 * ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Avoid unnecessary
9694 * value-range.cc (irange::union_nonzero_bits): Return TRUE only
9697 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9699 * config/riscv/riscv-protos.h (enum vxrm_field_enum): New enum.
9700 * config/riscv/riscv-vector-builtins.cc
9701 (function_expander::use_exact_insn): Add default rounding mode operand.
9702 * config/riscv/riscv.cc (riscv_hard_regno_nregs): Add VXRM_REGNUM.
9703 (riscv_hard_regno_mode_ok): Ditto.
9704 (riscv_conditional_register_usage): Ditto.
9705 * config/riscv/riscv.h (DWARF_FRAME_REGNUM): Ditto.
9706 (VXRM_REG_P): Ditto.
9707 (RISCV_DWARF_VXRM): Ditto.
9708 * config/riscv/riscv.md: Ditto.
9709 * config/riscv/vector.md: Ditto
9711 2023-05-15 Pan Li <pan2.li@intel.com>
9713 * optabs.cc (maybe_gen_insn): Add case to generate instruction
9714 that has 11 operands.
9716 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9718 * config/aarch64/aarch64.cc (aarch64_rtx_costs, NEG case): Add costing
9719 logic for vector modes.
9721 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9724 * config/aarch64/aarch64-simd.md (aarch64_cm<optab><mode>): Rename to...
9725 (aarch64_cm<optab><mode><vczle><vczbe>): ... This.
9726 (aarch64_cmtst<mode>): Rename to...
9727 (aarch64_cmtst<mode><vczle><vczbe>): ... This.
9728 (*aarch64_cmtst_same_<mode>): Rename to...
9729 (*aarch64_cmtst_same_<mode><vczle><vczbe>): ... This.
9730 (*aarch64_cmtstdi): Rename to...
9731 (*aarch64_cmtstdi<vczle><vczbe>): ... This.
9732 (aarch64_fac<optab><mode>): Rename to...
9733 (aarch64_fac<optab><mode><vczle><vczbe>): ... This.
9735 2023-05-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9738 * config/aarch64/aarch64-simd.md (aarch64_s<optab><mode>): Rename to...
9739 (aarch64_s<optab><mode><vczle><vczbe>): ... This.
9741 2023-05-15 Pan Li <pan2.li@intel.com>
9742 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9743 kito-cheng <kito.cheng@sifive.com>
9745 * config/riscv/riscv-v.cc (const_vlmax_p): New function for
9746 deciding the mode is constant or not.
9747 (set_len_and_policy): Optimize VLS-VLMAX code gen to vsetivli.
9749 2023-05-15 Richard Biener <rguenther@suse.de>
9751 PR tree-optimization/109848
9752 * tree-ssa-forwprop.cc (pass_forwprop::execute): Put the
9753 TARGET_MEM_REF address preparation before the store, not
9756 2023-05-15 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9758 * config/riscv/riscv.cc
9759 (riscv_vectorize_preferred_vector_alignment): New function.
9760 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New target hook.
9762 2023-05-14 Andrew Pinski <apinski@marvell.com>
9764 PR tree-optimization/109829
9765 * match.pd: Add pattern for `signbit(x) !=/== 0 ? x : -x`.
9767 2023-05-14 Uros Bizjak <ubizjak@gmail.com>
9770 * config/i386/i386.cc: Revert the 2023-05-11 change.
9771 (ix86_widen_mult_cost): Return high value instead of
9772 ICEing for unsupported modes.
9774 2023-05-14 Ard Biesheuvel <ardb@kernel.org>
9776 * config/i386/i386.cc (x86_function_profiler): Take
9777 ix86_direct_extern_access into account when generating calls
9780 2023-05-14 Pan Li <pan2.li@intel.com>
9782 * config/riscv/riscv-vector-builtins.cc (required_extensions_p):
9783 Refactor the or pattern to switch cases.
9785 2023-05-13 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
9787 * config/aarch64/aarch64.cc (aarch64_expand_vector_init_fallback): Rename
9788 aarch64_expand_vector_init to this, and remove interleaving case.
9789 Recursively call aarch64_expand_vector_init_fallback, instead of
9790 aarch64_expand_vector_init.
9791 (aarch64_unzip_vector_init): New function.
9792 (aarch64_expand_vector_init): Likewise.
9794 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
9796 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns):
9797 Pull out function call from the gcc_assert.
9799 2023-05-13 Kito Cheng <kito.cheng@sifive.com>
9801 * config/riscv/riscv-vsetvl.cc (vlmul_to_str): New.
9802 (policy_to_str): New.
9803 (vector_insn_info::dump): Use vlmul_to_str and policy_to_str.
9805 2023-05-13 Andrew Pinski <apinski@marvell.com>
9807 PR tree-optimization/109834
9808 * match.pd (popcount(bswap(x))->popcount(x)): Fix up unsigned type checking.
9809 (popcount(rotate(x,y))->popcount(x)): Likewise.
9811 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
9813 * config/i386/i386-expand.cc (ix86_expand_vecop_qihi2): Also
9814 reject ymm instructions for TARGET_PREFER_AVX128. Use generic
9815 gen_extend_insn to generate zero/sign extension instructions.
9817 (ix86_expand_vecop_qihi): Initialize interleave functions
9818 for MULT code only. Fix comments.
9820 2023-05-12 Uros Bizjak <ubizjak@gmail.com>
9823 * config/i386/mmx.md (mulv2si3): Remove expander.
9824 (mulv2si3): Rename insn pattern from *mulv2si.
9826 2023-05-12 Tobias Burnus <tobias@codesourcery.com>
9829 * lto-cgraph.cc (output_symtab): Guard lto_output_toplevel_asms by
9830 '!lto_stream_offload_p'.
9832 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
9833 Juzhe-Zhong <juzhe.zhong@rivai.ai>
9836 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vsetvl_at_end): New.
9837 (local_avl_compatible_p): New.
9838 (pass_vsetvl::local_eliminate_vsetvl_insn): Enhance local optimizations
9839 for LCM, rewrite as a backward algorithm.
9840 (pass_vsetvl::cleanup_insns): Use new local_eliminate_vsetvl_insn
9841 interface, handle a BB at once.
9843 2023-05-12 Richard Biener <rguenther@suse.de>
9845 PR tree-optimization/64731
9846 * tree-ssa-forwprop.cc (pass_forwprop::execute): Also
9847 handle TARGET_MEM_REF destinations of stores from vector
9850 2023-05-12 Richard Biener <rguenther@suse.de>
9852 PR tree-optimization/109791
9853 * match.pd (minus (convert ADDR_EXPR@0) (convert (pointer_plus @1 @2))):
9855 (minus (convert (pointer_plus @1 @2)) (convert ADDR_EXPR@0)):
9858 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
9860 * config/arm/arm-mve-builtins-base.cc (vsriq): New.
9861 * config/arm/arm-mve-builtins-base.def (vsriq): New.
9862 * config/arm/arm-mve-builtins-base.h (vsriq): New.
9863 * config/arm/arm-mve-builtins.cc
9864 (function_instance::has_inactive_argument): Handle vsriq.
9865 * config/arm/arm_mve.h (vsriq): Remove.
9867 (vsriq_n_u8): Remove.
9868 (vsriq_n_s8): Remove.
9869 (vsriq_n_u16): Remove.
9870 (vsriq_n_s16): Remove.
9871 (vsriq_n_u32): Remove.
9872 (vsriq_n_s32): Remove.
9873 (vsriq_m_n_s8): Remove.
9874 (vsriq_m_n_u8): Remove.
9875 (vsriq_m_n_s16): Remove.
9876 (vsriq_m_n_u16): Remove.
9877 (vsriq_m_n_s32): Remove.
9878 (vsriq_m_n_u32): Remove.
9879 (__arm_vsriq_n_u8): Remove.
9880 (__arm_vsriq_n_s8): Remove.
9881 (__arm_vsriq_n_u16): Remove.
9882 (__arm_vsriq_n_s16): Remove.
9883 (__arm_vsriq_n_u32): Remove.
9884 (__arm_vsriq_n_s32): Remove.
9885 (__arm_vsriq_m_n_s8): Remove.
9886 (__arm_vsriq_m_n_u8): Remove.
9887 (__arm_vsriq_m_n_s16): Remove.
9888 (__arm_vsriq_m_n_u16): Remove.
9889 (__arm_vsriq_m_n_s32): Remove.
9890 (__arm_vsriq_m_n_u32): Remove.
9891 (__arm_vsriq): Remove.
9892 (__arm_vsriq_m): Remove.
9894 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
9896 * config/arm/iterators.md (mve_insn): Add vsri.
9897 * config/arm/mve.md (mve_vsriq_n_<supf><mode>): Rename into ...
9898 (@mve_<mve_insn>q_n_<supf><mode>): .,. this.
9899 (mve_vsriq_m_n_<supf><mode>): Rename into ...
9900 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9902 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
9904 * config/arm/arm-mve-builtins-shapes.cc (ternary_rshift): New.
9905 * config/arm/arm-mve-builtins-shapes.h (ternary_rshift): New.
9907 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
9909 * config/arm/arm-mve-builtins-base.cc (vsliq): New.
9910 * config/arm/arm-mve-builtins-base.def (vsliq): New.
9911 * config/arm/arm-mve-builtins-base.h (vsliq): New.
9912 * config/arm/arm-mve-builtins.cc
9913 (function_instance::has_inactive_argument): Handle vsliq.
9914 * config/arm/arm_mve.h (vsliq): Remove.
9916 (vsliq_n_u8): Remove.
9917 (vsliq_n_s8): Remove.
9918 (vsliq_n_u16): Remove.
9919 (vsliq_n_s16): Remove.
9920 (vsliq_n_u32): Remove.
9921 (vsliq_n_s32): Remove.
9922 (vsliq_m_n_s8): Remove.
9923 (vsliq_m_n_s32): Remove.
9924 (vsliq_m_n_s16): Remove.
9925 (vsliq_m_n_u8): Remove.
9926 (vsliq_m_n_u32): Remove.
9927 (vsliq_m_n_u16): Remove.
9928 (__arm_vsliq_n_u8): Remove.
9929 (__arm_vsliq_n_s8): Remove.
9930 (__arm_vsliq_n_u16): Remove.
9931 (__arm_vsliq_n_s16): Remove.
9932 (__arm_vsliq_n_u32): Remove.
9933 (__arm_vsliq_n_s32): Remove.
9934 (__arm_vsliq_m_n_s8): Remove.
9935 (__arm_vsliq_m_n_s32): Remove.
9936 (__arm_vsliq_m_n_s16): Remove.
9937 (__arm_vsliq_m_n_u8): Remove.
9938 (__arm_vsliq_m_n_u32): Remove.
9939 (__arm_vsliq_m_n_u16): Remove.
9940 (__arm_vsliq): Remove.
9941 (__arm_vsliq_m): Remove.
9943 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
9945 * config/arm/iterators.md (mve_insn>): Add vsli.
9946 * config/arm/mve.md (mve_vsliq_n_<supf><mode>): Rename into ...
9947 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
9948 (mve_vsliq_m_n_<supf><mode>): Rename into ...
9949 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
9951 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
9953 * config/arm/arm-mve-builtins-shapes.cc (ternary_lshift): New.
9954 * config/arm/arm-mve-builtins-shapes.h (ternary_lshift): New.
9956 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
9958 * config/arm/arm-mve-builtins-base.cc (vpselq): New.
9959 * config/arm/arm-mve-builtins-base.def (vpselq): New.
9960 * config/arm/arm-mve-builtins-base.h (vpselq): New.
9961 * config/arm/arm_mve.h (vpselq): Remove.
9962 (vpselq_u8): Remove.
9963 (vpselq_s8): Remove.
9964 (vpselq_u16): Remove.
9965 (vpselq_s16): Remove.
9966 (vpselq_u32): Remove.
9967 (vpselq_s32): Remove.
9968 (vpselq_u64): Remove.
9969 (vpselq_s64): Remove.
9970 (vpselq_f16): Remove.
9971 (vpselq_f32): Remove.
9972 (__arm_vpselq_u8): Remove.
9973 (__arm_vpselq_s8): Remove.
9974 (__arm_vpselq_u16): Remove.
9975 (__arm_vpselq_s16): Remove.
9976 (__arm_vpselq_u32): Remove.
9977 (__arm_vpselq_s32): Remove.
9978 (__arm_vpselq_u64): Remove.
9979 (__arm_vpselq_s64): Remove.
9980 (__arm_vpselq_f16): Remove.
9981 (__arm_vpselq_f32): Remove.
9982 (__arm_vpselq): Remove.
9984 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
9986 * config/arm/arm-mve-builtins-shapes.cc (vpsel): New.
9987 * config/arm/arm-mve-builtins-shapes.h (vpsel): New.
9989 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
9991 * config/arm/arm.cc (arm_expand_vcond): Use gen_mve_q instead of
9993 * config/arm/iterators.md (MVE_VPSELQ_F): New.
9994 (mve_insn): Add vpsel.
9995 * config/arm/mve.md (@mve_vpselq_<supf><mode>): Rename into ...
9996 (@mve_<mve_insn>q_<supf><mode>): ... this.
9997 (@mve_vpselq_f<mode>): Rename into ...
9998 (@mve_<mve_insn>q_f<mode>): ... this.
10000 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10002 * config/arm/arm-mve-builtins-base.cc (vfmaq, vfmasq, vfmsq): New.
10003 * config/arm/arm-mve-builtins-base.def (vfmaq, vfmasq, vfmsq): New.
10004 * config/arm/arm-mve-builtins-base.h (vfmaq, vfmasq, vfmsq): New.
10005 * config/arm/arm-mve-builtins.cc
10006 (function_instance::has_inactive_argument): Handle vfmaq, vfmasq,
10008 * config/arm/arm_mve.h (vfmaq): Remove.
10012 (vfmasq_m): Remove.
10014 (vfmaq_f16): Remove.
10015 (vfmaq_n_f16): Remove.
10016 (vfmasq_n_f16): Remove.
10017 (vfmsq_f16): Remove.
10018 (vfmaq_f32): Remove.
10019 (vfmaq_n_f32): Remove.
10020 (vfmasq_n_f32): Remove.
10021 (vfmsq_f32): Remove.
10022 (vfmaq_m_f32): Remove.
10023 (vfmaq_m_f16): Remove.
10024 (vfmaq_m_n_f32): Remove.
10025 (vfmaq_m_n_f16): Remove.
10026 (vfmasq_m_n_f32): Remove.
10027 (vfmasq_m_n_f16): Remove.
10028 (vfmsq_m_f32): Remove.
10029 (vfmsq_m_f16): Remove.
10030 (__arm_vfmaq_f16): Remove.
10031 (__arm_vfmaq_n_f16): Remove.
10032 (__arm_vfmasq_n_f16): Remove.
10033 (__arm_vfmsq_f16): Remove.
10034 (__arm_vfmaq_f32): Remove.
10035 (__arm_vfmaq_n_f32): Remove.
10036 (__arm_vfmasq_n_f32): Remove.
10037 (__arm_vfmsq_f32): Remove.
10038 (__arm_vfmaq_m_f32): Remove.
10039 (__arm_vfmaq_m_f16): Remove.
10040 (__arm_vfmaq_m_n_f32): Remove.
10041 (__arm_vfmaq_m_n_f16): Remove.
10042 (__arm_vfmasq_m_n_f32): Remove.
10043 (__arm_vfmasq_m_n_f16): Remove.
10044 (__arm_vfmsq_m_f32): Remove.
10045 (__arm_vfmsq_m_f16): Remove.
10046 (__arm_vfmaq): Remove.
10047 (__arm_vfmasq): Remove.
10048 (__arm_vfmsq): Remove.
10049 (__arm_vfmaq_m): Remove.
10050 (__arm_vfmasq_m): Remove.
10051 (__arm_vfmsq_m): Remove.
10053 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10055 * config/arm/iterators.md (MVE_FP_M_BINARY): Add VFMAQ_M_F,
10057 (MVE_FP_M_N_BINARY): Add VFMAQ_M_N_F, VFMASQ_M_N_F.
10058 (MVE_VFMxQ_F, MVE_VFMAxQ_N_F): New.
10059 (mve_insn): Add vfma, vfmas, vfms.
10060 * config/arm/mve.md (mve_vfmaq_f<mode>, mve_vfmsq_f<mode>): Merge
10062 (@mve_<mve_insn>q_f<mode>): ... this.
10063 (mve_vfmaq_n_f<mode>, mve_vfmasq_n_f<mode>): Merge into ...
10064 (@mve_<mve_insn>q_n_f<mode>): ... this.
10065 (mve_vfmaq_m_f<mode>, mve_vfmsq_m_f<mode>): Merge into
10066 @mve_<mve_insn>q_m_f<mode>.
10067 (mve_vfmaq_m_n_f<mode>, mve_vfmasq_m_n_f<mode>): Merge into
10068 @mve_<mve_insn>q_m_n_f<mode>.
10070 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10072 * config/arm/arm-mve-builtins-shapes.cc (ternary_opt_n): New.
10073 * config/arm/arm-mve-builtins-shapes.h (ternary_opt_n): New.
10075 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10077 * config/arm/arm-mve-builtins-base.cc
10078 (FUNCTION_WITH_RTX_M_N_NO_F): New.
10080 * config/arm/arm-mve-builtins-base.def (vmvnq): New.
10081 * config/arm/arm-mve-builtins-base.h (vmvnq): New.
10082 * config/arm/arm_mve.h (vmvnq): Remove.
10085 (vmvnq_s8): Remove.
10086 (vmvnq_s16): Remove.
10087 (vmvnq_s32): Remove.
10088 (vmvnq_n_s16): Remove.
10089 (vmvnq_n_s32): Remove.
10090 (vmvnq_u8): Remove.
10091 (vmvnq_u16): Remove.
10092 (vmvnq_u32): Remove.
10093 (vmvnq_n_u16): Remove.
10094 (vmvnq_n_u32): Remove.
10095 (vmvnq_m_u8): Remove.
10096 (vmvnq_m_s8): Remove.
10097 (vmvnq_m_u16): Remove.
10098 (vmvnq_m_s16): Remove.
10099 (vmvnq_m_u32): Remove.
10100 (vmvnq_m_s32): Remove.
10101 (vmvnq_m_n_s16): Remove.
10102 (vmvnq_m_n_u16): Remove.
10103 (vmvnq_m_n_s32): Remove.
10104 (vmvnq_m_n_u32): Remove.
10105 (vmvnq_x_s8): Remove.
10106 (vmvnq_x_s16): Remove.
10107 (vmvnq_x_s32): Remove.
10108 (vmvnq_x_u8): Remove.
10109 (vmvnq_x_u16): Remove.
10110 (vmvnq_x_u32): Remove.
10111 (vmvnq_x_n_s16): Remove.
10112 (vmvnq_x_n_s32): Remove.
10113 (vmvnq_x_n_u16): Remove.
10114 (vmvnq_x_n_u32): Remove.
10115 (__arm_vmvnq_s8): Remove.
10116 (__arm_vmvnq_s16): Remove.
10117 (__arm_vmvnq_s32): Remove.
10118 (__arm_vmvnq_n_s16): Remove.
10119 (__arm_vmvnq_n_s32): Remove.
10120 (__arm_vmvnq_u8): Remove.
10121 (__arm_vmvnq_u16): Remove.
10122 (__arm_vmvnq_u32): Remove.
10123 (__arm_vmvnq_n_u16): Remove.
10124 (__arm_vmvnq_n_u32): Remove.
10125 (__arm_vmvnq_m_u8): Remove.
10126 (__arm_vmvnq_m_s8): Remove.
10127 (__arm_vmvnq_m_u16): Remove.
10128 (__arm_vmvnq_m_s16): Remove.
10129 (__arm_vmvnq_m_u32): Remove.
10130 (__arm_vmvnq_m_s32): Remove.
10131 (__arm_vmvnq_m_n_s16): Remove.
10132 (__arm_vmvnq_m_n_u16): Remove.
10133 (__arm_vmvnq_m_n_s32): Remove.
10134 (__arm_vmvnq_m_n_u32): Remove.
10135 (__arm_vmvnq_x_s8): Remove.
10136 (__arm_vmvnq_x_s16): Remove.
10137 (__arm_vmvnq_x_s32): Remove.
10138 (__arm_vmvnq_x_u8): Remove.
10139 (__arm_vmvnq_x_u16): Remove.
10140 (__arm_vmvnq_x_u32): Remove.
10141 (__arm_vmvnq_x_n_s16): Remove.
10142 (__arm_vmvnq_x_n_s32): Remove.
10143 (__arm_vmvnq_x_n_u16): Remove.
10144 (__arm_vmvnq_x_n_u32): Remove.
10145 (__arm_vmvnq): Remove.
10146 (__arm_vmvnq_m): Remove.
10147 (__arm_vmvnq_x): Remove.
10149 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10151 * config/arm/iterators.md (mve_insn): Add vmvn.
10152 * config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Rename into ...
10153 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10154 (mve_vmvnq_m_<supf><mode>): Rename into ...
10155 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
10156 (mve_vmvnq_m_n_<supf><mode>): Rename into ...
10157 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10159 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10161 * config/arm/arm-mve-builtins-shapes.cc (mvn): New.
10162 * config/arm/arm-mve-builtins-shapes.h (mvn): New.
10164 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10166 * config/arm/arm-mve-builtins-base.cc (vbrsrq): New.
10167 * config/arm/arm-mve-builtins-base.def (vbrsrq): New.
10168 * config/arm/arm-mve-builtins-base.h (vbrsrq): New.
10169 * config/arm/arm_mve.h (vbrsrq): Remove.
10170 (vbrsrq_m): Remove.
10171 (vbrsrq_x): Remove.
10172 (vbrsrq_n_f16): Remove.
10173 (vbrsrq_n_f32): Remove.
10174 (vbrsrq_n_u8): Remove.
10175 (vbrsrq_n_s8): Remove.
10176 (vbrsrq_n_u16): Remove.
10177 (vbrsrq_n_s16): Remove.
10178 (vbrsrq_n_u32): Remove.
10179 (vbrsrq_n_s32): Remove.
10180 (vbrsrq_m_n_s8): Remove.
10181 (vbrsrq_m_n_s32): Remove.
10182 (vbrsrq_m_n_s16): Remove.
10183 (vbrsrq_m_n_u8): Remove.
10184 (vbrsrq_m_n_u32): Remove.
10185 (vbrsrq_m_n_u16): Remove.
10186 (vbrsrq_m_n_f32): Remove.
10187 (vbrsrq_m_n_f16): Remove.
10188 (vbrsrq_x_n_s8): Remove.
10189 (vbrsrq_x_n_s16): Remove.
10190 (vbrsrq_x_n_s32): Remove.
10191 (vbrsrq_x_n_u8): Remove.
10192 (vbrsrq_x_n_u16): Remove.
10193 (vbrsrq_x_n_u32): Remove.
10194 (vbrsrq_x_n_f16): Remove.
10195 (vbrsrq_x_n_f32): Remove.
10196 (__arm_vbrsrq_n_u8): Remove.
10197 (__arm_vbrsrq_n_s8): Remove.
10198 (__arm_vbrsrq_n_u16): Remove.
10199 (__arm_vbrsrq_n_s16): Remove.
10200 (__arm_vbrsrq_n_u32): Remove.
10201 (__arm_vbrsrq_n_s32): Remove.
10202 (__arm_vbrsrq_m_n_s8): Remove.
10203 (__arm_vbrsrq_m_n_s32): Remove.
10204 (__arm_vbrsrq_m_n_s16): Remove.
10205 (__arm_vbrsrq_m_n_u8): Remove.
10206 (__arm_vbrsrq_m_n_u32): Remove.
10207 (__arm_vbrsrq_m_n_u16): Remove.
10208 (__arm_vbrsrq_x_n_s8): Remove.
10209 (__arm_vbrsrq_x_n_s16): Remove.
10210 (__arm_vbrsrq_x_n_s32): Remove.
10211 (__arm_vbrsrq_x_n_u8): Remove.
10212 (__arm_vbrsrq_x_n_u16): Remove.
10213 (__arm_vbrsrq_x_n_u32): Remove.
10214 (__arm_vbrsrq_n_f16): Remove.
10215 (__arm_vbrsrq_n_f32): Remove.
10216 (__arm_vbrsrq_m_n_f32): Remove.
10217 (__arm_vbrsrq_m_n_f16): Remove.
10218 (__arm_vbrsrq_x_n_f16): Remove.
10219 (__arm_vbrsrq_x_n_f32): Remove.
10220 (__arm_vbrsrq): Remove.
10221 (__arm_vbrsrq_m): Remove.
10222 (__arm_vbrsrq_x): Remove.
10224 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10226 * config/arm/iterators.md (MVE_VBRSR_M_N_FP, MVE_VBRSR_N_FP): New.
10227 (mve_insn): Add vbrsr.
10228 * config/arm/mve.md (mve_vbrsrq_n_f<mode>): Rename into ...
10229 (@mve_<mve_insn>q_n_f<mode>): ... this.
10230 (mve_vbrsrq_n_<supf><mode>): Rename into ...
10231 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10232 (mve_vbrsrq_m_n_<supf><mode>): Rename into ...
10233 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10234 (mve_vbrsrq_m_n_f<mode>): Rename into ...
10235 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
10237 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10239 * config/arm/arm-mve-builtins-shapes.cc (binary_imm32): New.
10240 * config/arm/arm-mve-builtins-shapes.h (binary_imm32): New.
10242 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10244 * config/arm/arm-mve-builtins-base.cc (vqshluq): New.
10245 * config/arm/arm-mve-builtins-base.def (vqshluq): New.
10246 * config/arm/arm-mve-builtins-base.h (vqshluq): New.
10247 * config/arm/arm_mve.h (vqshluq): Remove.
10248 (vqshluq_m): Remove.
10249 (vqshluq_n_s8): Remove.
10250 (vqshluq_n_s16): Remove.
10251 (vqshluq_n_s32): Remove.
10252 (vqshluq_m_n_s8): Remove.
10253 (vqshluq_m_n_s16): Remove.
10254 (vqshluq_m_n_s32): Remove.
10255 (__arm_vqshluq_n_s8): Remove.
10256 (__arm_vqshluq_n_s16): Remove.
10257 (__arm_vqshluq_n_s32): Remove.
10258 (__arm_vqshluq_m_n_s8): Remove.
10259 (__arm_vqshluq_m_n_s16): Remove.
10260 (__arm_vqshluq_m_n_s32): Remove.
10261 (__arm_vqshluq): Remove.
10262 (__arm_vqshluq_m): Remove.
10264 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10266 * config/arm/iterators.md (mve_insn): Add vqshlu.
10267 (supf): Add VQSHLUQ_M_N_S, VQSHLUQ_N_S.
10268 (VQSHLUQ_M_N, VQSHLUQ_N): New.
10269 * config/arm/mve.md (mve_vqshluq_n_s<mode>): Change name into ...
10270 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10271 (mve_vqshluq_m_n_s<mode>): Change name into ...
10272 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10274 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10276 * config/arm/arm-mve-builtins-shapes.cc
10277 (binary_lshift_unsigned): New.
10278 * config/arm/arm-mve-builtins-shapes.h
10279 (binary_lshift_unsigned): New.
10281 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10283 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhaq)
10284 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
10285 * config/arm/arm-mve-builtins-base.def (vrmlaldavhaq)
10286 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
10287 * config/arm/arm-mve-builtins-base.h (vrmlaldavhaq)
10288 (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New.
10289 * config/arm/arm-mve-builtins-functions.h: Handle vrmlaldavhaq,
10290 vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq.
10291 * config/arm/arm_mve.h (vrmlaldavhaq): Remove.
10292 (vrmlaldavhaxq): Remove.
10293 (vrmlsldavhaq): Remove.
10294 (vrmlsldavhaxq): Remove.
10295 (vrmlaldavhaq_p): Remove.
10296 (vrmlaldavhaxq_p): Remove.
10297 (vrmlsldavhaq_p): Remove.
10298 (vrmlsldavhaxq_p): Remove.
10299 (vrmlaldavhaq_s32): Remove.
10300 (vrmlaldavhaq_u32): Remove.
10301 (vrmlaldavhaxq_s32): Remove.
10302 (vrmlsldavhaq_s32): Remove.
10303 (vrmlsldavhaxq_s32): Remove.
10304 (vrmlaldavhaq_p_s32): Remove.
10305 (vrmlaldavhaq_p_u32): Remove.
10306 (vrmlaldavhaxq_p_s32): Remove.
10307 (vrmlsldavhaq_p_s32): Remove.
10308 (vrmlsldavhaxq_p_s32): Remove.
10309 (__arm_vrmlaldavhaq_s32): Remove.
10310 (__arm_vrmlaldavhaq_u32): Remove.
10311 (__arm_vrmlaldavhaxq_s32): Remove.
10312 (__arm_vrmlsldavhaq_s32): Remove.
10313 (__arm_vrmlsldavhaxq_s32): Remove.
10314 (__arm_vrmlaldavhaq_p_s32): Remove.
10315 (__arm_vrmlaldavhaq_p_u32): Remove.
10316 (__arm_vrmlaldavhaxq_p_s32): Remove.
10317 (__arm_vrmlsldavhaq_p_s32): Remove.
10318 (__arm_vrmlsldavhaxq_p_s32): Remove.
10319 (__arm_vrmlaldavhaq): Remove.
10320 (__arm_vrmlaldavhaxq): Remove.
10321 (__arm_vrmlsldavhaq): Remove.
10322 (__arm_vrmlsldavhaxq): Remove.
10323 (__arm_vrmlaldavhaq_p): Remove.
10324 (__arm_vrmlaldavhaxq_p): Remove.
10325 (__arm_vrmlsldavhaq_p): Remove.
10326 (__arm_vrmlsldavhaxq_p): Remove.
10328 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10330 * config/arm/iterators.md (MVE_VRMLxLDAVHAxQ)
10331 (MVE_VRMLxLDAVHAxQ_P): New.
10332 (mve_insn): Add vrmlaldavha, vrmlaldavhax, vrmlsldavha,
10334 (supf): Add VRMLALDAVHAXQ_P_S, VRMLALDAVHAXQ_S, VRMLSLDAVHAQ_P_S,
10335 VRMLSLDAVHAQ_S, VRMLSLDAVHAXQ_P_S, VRMLSLDAVHAXQ_S,
10337 * config/arm/mve.md (mve_vrmlaldavhaq_<supf>v4si)
10338 (mve_vrmlaldavhaxq_sv4si, mve_vrmlsldavhaxq_sv4si)
10339 (mve_vrmlsldavhaq_sv4si): Merge into ...
10340 (@mve_<mve_insn>q_<supf>v4si): ... this.
10341 (mve_vrmlaldavhaq_p_sv4si, mve_vrmlaldavhaq_p_uv4si)
10342 (mve_vrmlaldavhaxq_p_sv4si, mve_vrmlsldavhaq_p_sv4si)
10343 (mve_vrmlsldavhaxq_p_sv4si): Merge into ...
10344 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
10346 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10348 * config/arm/arm-mve-builtins-base.cc (vqdmullbq, vqdmulltq): New.
10349 * config/arm/arm-mve-builtins-base.def (vqdmullbq, vqdmulltq):
10351 * config/arm/arm-mve-builtins-base.h (vqdmullbq, vqdmulltq): New.
10352 * config/arm/arm_mve.h (vqdmulltq): Remove.
10353 (vqdmullbq): Remove.
10354 (vqdmullbq_m): Remove.
10355 (vqdmulltq_m): Remove.
10356 (vqdmulltq_s16): Remove.
10357 (vqdmulltq_n_s16): Remove.
10358 (vqdmullbq_s16): Remove.
10359 (vqdmullbq_n_s16): Remove.
10360 (vqdmulltq_s32): Remove.
10361 (vqdmulltq_n_s32): Remove.
10362 (vqdmullbq_s32): Remove.
10363 (vqdmullbq_n_s32): Remove.
10364 (vqdmullbq_m_n_s32): Remove.
10365 (vqdmullbq_m_n_s16): Remove.
10366 (vqdmullbq_m_s32): Remove.
10367 (vqdmullbq_m_s16): Remove.
10368 (vqdmulltq_m_n_s32): Remove.
10369 (vqdmulltq_m_n_s16): Remove.
10370 (vqdmulltq_m_s32): Remove.
10371 (vqdmulltq_m_s16): Remove.
10372 (__arm_vqdmulltq_s16): Remove.
10373 (__arm_vqdmulltq_n_s16): Remove.
10374 (__arm_vqdmullbq_s16): Remove.
10375 (__arm_vqdmullbq_n_s16): Remove.
10376 (__arm_vqdmulltq_s32): Remove.
10377 (__arm_vqdmulltq_n_s32): Remove.
10378 (__arm_vqdmullbq_s32): Remove.
10379 (__arm_vqdmullbq_n_s32): Remove.
10380 (__arm_vqdmullbq_m_n_s32): Remove.
10381 (__arm_vqdmullbq_m_n_s16): Remove.
10382 (__arm_vqdmullbq_m_s32): Remove.
10383 (__arm_vqdmullbq_m_s16): Remove.
10384 (__arm_vqdmulltq_m_n_s32): Remove.
10385 (__arm_vqdmulltq_m_n_s16): Remove.
10386 (__arm_vqdmulltq_m_s32): Remove.
10387 (__arm_vqdmulltq_m_s16): Remove.
10388 (__arm_vqdmulltq): Remove.
10389 (__arm_vqdmullbq): Remove.
10390 (__arm_vqdmullbq_m): Remove.
10391 (__arm_vqdmulltq_m): Remove.
10393 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10395 * config/arm/iterators.md (MVE_VQDMULLxQ, MVE_VQDMULLxQ_M)
10396 (MVE_VQDMULLxQ_M_N, MVE_VQDMULLxQ_N): New.
10397 (mve_insn): Add vqdmullb, vqdmullt.
10398 (supf): Add VQDMULLBQ_S, VQDMULLBQ_M_S, VQDMULLBQ_M_N_S,
10399 VQDMULLBQ_N_S, VQDMULLTQ_S, VQDMULLTQ_M_S, VQDMULLTQ_M_N_S,
10401 * config/arm/mve.md (mve_vqdmullbq_n_s<mode>)
10402 (mve_vqdmulltq_n_s<mode>): Merge into ...
10403 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10404 (mve_vqdmullbq_s<mode>, mve_vqdmulltq_s<mode>): Merge into ...
10405 (@mve_<mve_insn>q_<supf><mode>): ... this.
10406 (mve_vqdmullbq_m_n_s<mode>, mve_vqdmulltq_m_n_s<mode>): Merge into
10408 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
10409 (mve_vqdmullbq_m_s<mode>, mve_vqdmulltq_m_s<mode>): Merge into ...
10410 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
10412 2023-05-12 Christophe Lyon <christophe.lyon@arm.com>
10414 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_opt_n): New.
10415 * config/arm/arm-mve-builtins-shapes.h (binary_widen_opt_n): New.
10417 2023-05-12 Kito Cheng <kito.cheng@sifive.com>
10419 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi):
10420 Drop unused parameter.
10421 (riscv_select_multilib): Ditto.
10422 (riscv_compute_multilib): Update call site of
10423 riscv_select_multilib_by_abi and riscv_select_multilib_by_abi.
10425 2023-05-12 Juzhe Zhong <juzhe.zhong@rivai.ai>
10427 * config/riscv/autovec.md (vec_init<mode><vel>): New pattern.
10428 * config/riscv/riscv-protos.h (expand_vec_init): New function.
10429 * config/riscv/riscv-v.cc (class rvv_builder): New class.
10430 (rvv_builder::can_duplicate_repeating_sequence_p): New function.
10431 (rvv_builder::get_merged_repeating_sequence): Ditto.
10432 (expand_vector_init_insert_elems): Ditto.
10433 (expand_vec_init): Ditto.
10434 * config/riscv/vector-iterators.md: New attribute.
10436 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
10438 * config/rs6000/rs6000-builtins.def
10439 (__builtin_vsx_scalar_insert_exp): Replace bif-pattern from xsiexpdp
10441 (__builtin_vsx_scalar_insert_exp_dp): Replace bif-pattern from
10442 xsiexpdpf to xsiexpdpf_di.
10443 * config/rs6000/vsx.md (xsiexpdp): Rename to...
10444 (xsiexpdp_<mode>): ..., set the mode of second operand to GPR and
10445 replace TARGET_64BIT with TARGET_POWERPC64.
10446 (xsiexpdpf): Rename to...
10447 (xsiexpdpf_<mode>): ..., set the mode of second operand to GPR and
10448 replace TARGET_64BIT with TARGET_POWERPC64.
10450 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
10452 * config/rs6000/rs6000-builtins.def
10453 (__builtin_vsx_scalar_extract_sig): Set return type to const signed
10455 * config/rs6000/vsx.md (xsxsigdp): Replace TARGET_64BIT with
10458 2023-05-12 Haochen Gui <guihaoc@gcc.gnu.org>
10460 * config/rs6000/rs6000-builtins.def
10461 (__builtin_vsx_scalar_extract_exp): Set return type to const signed
10462 int and set its bif-pattern to xsxexpdp_si, move it from power9-64
10464 * config/rs6000/vsx.md (xsxexpdp): Rename to ...
10465 (xsxexpdp_<mode>): ..., set mode of operand 0 to GPR and remove
10466 TARGET_64BIT check.
10467 * doc/extend.texi (scalar_extract_exp): Remove 64-bit environment
10468 requirement when it has a 64-bit argument.
10470 2023-05-12 Pan Li <pan2.li@intel.com>
10471 Richard Sandiford <richard.sandiford@arm.com>
10472 Richard Biener <rguenther@suse.de>
10473 Jakub Jelinek <jakub@redhat.com>
10475 * mux-utils.h: Add overload operator == and != for pointer_mux.
10476 * var-tracking.cc: Included mux-utils.h for pointer_tmux.
10477 (decl_or_value): Changed from void * to pointer_mux<tree_node, rtx_def>.
10478 (dv_is_decl_p): Reconciled to the new type, aka pointer_mux.
10479 (dv_as_decl): Ditto.
10480 (dv_as_opaque): Removed due to unnecessary.
10481 (struct variable_hasher): Take decl_or_value as compare_type.
10482 (variable_hasher::equal): Diito.
10483 (dv_from_decl): Reconciled to the new type, aka pointer_mux.
10484 (dv_from_value): Ditto.
10485 (attrs_list_member): Ditto.
10486 (vars_copy): Ditto.
10487 (var_reg_decl_set): Ditto.
10488 (var_reg_delete_and_set): Ditto.
10489 (find_loc_in_1pdv): Ditto.
10490 (canonicalize_values_star): Ditto.
10491 (variable_post_merge_new_vals): Ditto.
10492 (dump_onepart_variable_differences): Ditto.
10493 (variable_different_p): Ditto.
10494 (set_slot_part): Ditto.
10495 (clobber_slot_part): Ditto.
10496 (clobber_variable_part): Ditto.
10498 2023-05-11 mtsamis <manolis.tsamis@vrull.eu>
10500 * match.pd: simplify vector shift + bit_and + multiply.
10502 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10504 * config/arm/arm-mve-builtins-base.cc (vmlaq, vmlasq, vqdmlahq)
10505 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
10506 * config/arm/arm-mve-builtins-base.def (vmlaq, vmlasq, vqdmlahq)
10507 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
10508 * config/arm/arm-mve-builtins-base.h (vmlaq, vmlasq, vqdmlahq)
10509 (vqdmlashq, vqrdmlahq, vqrdmlashq): New.
10510 * config/arm/arm-mve-builtins.cc
10511 (function_instance::has_inactive_argument): Handle vmlaq, vmlasq,
10512 vqdmlahq, vqdmlashq, vqrdmlahq, vqrdmlashq.
10513 * config/arm/arm_mve.h (vqrdmlashq): Remove.
10514 (vqrdmlahq): Remove.
10515 (vqdmlashq): Remove.
10516 (vqdmlahq): Remove.
10520 (vmlasq_m): Remove.
10521 (vqdmlashq_m): Remove.
10522 (vqdmlahq_m): Remove.
10523 (vqrdmlahq_m): Remove.
10524 (vqrdmlashq_m): Remove.
10525 (vmlasq_n_u8): Remove.
10526 (vmlaq_n_u8): Remove.
10527 (vqrdmlashq_n_s8): Remove.
10528 (vqrdmlahq_n_s8): Remove.
10529 (vqdmlahq_n_s8): Remove.
10530 (vqdmlashq_n_s8): Remove.
10531 (vmlasq_n_s8): Remove.
10532 (vmlaq_n_s8): Remove.
10533 (vmlasq_n_u16): Remove.
10534 (vmlaq_n_u16): Remove.
10535 (vqrdmlashq_n_s16): Remove.
10536 (vqrdmlahq_n_s16): Remove.
10537 (vqdmlashq_n_s16): Remove.
10538 (vqdmlahq_n_s16): Remove.
10539 (vmlasq_n_s16): Remove.
10540 (vmlaq_n_s16): Remove.
10541 (vmlasq_n_u32): Remove.
10542 (vmlaq_n_u32): Remove.
10543 (vqrdmlashq_n_s32): Remove.
10544 (vqrdmlahq_n_s32): Remove.
10545 (vqdmlashq_n_s32): Remove.
10546 (vqdmlahq_n_s32): Remove.
10547 (vmlasq_n_s32): Remove.
10548 (vmlaq_n_s32): Remove.
10549 (vmlaq_m_n_s8): Remove.
10550 (vmlaq_m_n_s32): Remove.
10551 (vmlaq_m_n_s16): Remove.
10552 (vmlaq_m_n_u8): Remove.
10553 (vmlaq_m_n_u32): Remove.
10554 (vmlaq_m_n_u16): Remove.
10555 (vmlasq_m_n_s8): Remove.
10556 (vmlasq_m_n_s32): Remove.
10557 (vmlasq_m_n_s16): Remove.
10558 (vmlasq_m_n_u8): Remove.
10559 (vmlasq_m_n_u32): Remove.
10560 (vmlasq_m_n_u16): Remove.
10561 (vqdmlashq_m_n_s8): Remove.
10562 (vqdmlashq_m_n_s32): Remove.
10563 (vqdmlashq_m_n_s16): Remove.
10564 (vqdmlahq_m_n_s8): Remove.
10565 (vqdmlahq_m_n_s32): Remove.
10566 (vqdmlahq_m_n_s16): Remove.
10567 (vqrdmlahq_m_n_s8): Remove.
10568 (vqrdmlahq_m_n_s32): Remove.
10569 (vqrdmlahq_m_n_s16): Remove.
10570 (vqrdmlashq_m_n_s8): Remove.
10571 (vqrdmlashq_m_n_s32): Remove.
10572 (vqrdmlashq_m_n_s16): Remove.
10573 (__arm_vmlasq_n_u8): Remove.
10574 (__arm_vmlaq_n_u8): Remove.
10575 (__arm_vqrdmlashq_n_s8): Remove.
10576 (__arm_vqdmlashq_n_s8): Remove.
10577 (__arm_vqrdmlahq_n_s8): Remove.
10578 (__arm_vqdmlahq_n_s8): Remove.
10579 (__arm_vmlasq_n_s8): Remove.
10580 (__arm_vmlaq_n_s8): Remove.
10581 (__arm_vmlasq_n_u16): Remove.
10582 (__arm_vmlaq_n_u16): Remove.
10583 (__arm_vqrdmlashq_n_s16): Remove.
10584 (__arm_vqdmlashq_n_s16): Remove.
10585 (__arm_vqrdmlahq_n_s16): Remove.
10586 (__arm_vqdmlahq_n_s16): Remove.
10587 (__arm_vmlasq_n_s16): Remove.
10588 (__arm_vmlaq_n_s16): Remove.
10589 (__arm_vmlasq_n_u32): Remove.
10590 (__arm_vmlaq_n_u32): Remove.
10591 (__arm_vqrdmlashq_n_s32): Remove.
10592 (__arm_vqdmlashq_n_s32): Remove.
10593 (__arm_vqrdmlahq_n_s32): Remove.
10594 (__arm_vqdmlahq_n_s32): Remove.
10595 (__arm_vmlasq_n_s32): Remove.
10596 (__arm_vmlaq_n_s32): Remove.
10597 (__arm_vmlaq_m_n_s8): Remove.
10598 (__arm_vmlaq_m_n_s32): Remove.
10599 (__arm_vmlaq_m_n_s16): Remove.
10600 (__arm_vmlaq_m_n_u8): Remove.
10601 (__arm_vmlaq_m_n_u32): Remove.
10602 (__arm_vmlaq_m_n_u16): Remove.
10603 (__arm_vmlasq_m_n_s8): Remove.
10604 (__arm_vmlasq_m_n_s32): Remove.
10605 (__arm_vmlasq_m_n_s16): Remove.
10606 (__arm_vmlasq_m_n_u8): Remove.
10607 (__arm_vmlasq_m_n_u32): Remove.
10608 (__arm_vmlasq_m_n_u16): Remove.
10609 (__arm_vqdmlahq_m_n_s8): Remove.
10610 (__arm_vqdmlahq_m_n_s32): Remove.
10611 (__arm_vqdmlahq_m_n_s16): Remove.
10612 (__arm_vqrdmlahq_m_n_s8): Remove.
10613 (__arm_vqrdmlahq_m_n_s32): Remove.
10614 (__arm_vqrdmlahq_m_n_s16): Remove.
10615 (__arm_vqrdmlashq_m_n_s8): Remove.
10616 (__arm_vqrdmlashq_m_n_s32): Remove.
10617 (__arm_vqrdmlashq_m_n_s16): Remove.
10618 (__arm_vqdmlashq_m_n_s8): Remove.
10619 (__arm_vqdmlashq_m_n_s16): Remove.
10620 (__arm_vqdmlashq_m_n_s32): Remove.
10621 (__arm_vmlasq): Remove.
10622 (__arm_vmlaq): Remove.
10623 (__arm_vqrdmlashq): Remove.
10624 (__arm_vqdmlashq): Remove.
10625 (__arm_vqrdmlahq): Remove.
10626 (__arm_vqdmlahq): Remove.
10627 (__arm_vmlaq_m): Remove.
10628 (__arm_vmlasq_m): Remove.
10629 (__arm_vqdmlahq_m): Remove.
10630 (__arm_vqrdmlahq_m): Remove.
10631 (__arm_vqrdmlashq_m): Remove.
10632 (__arm_vqdmlashq_m): Remove.
10634 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10636 * config/arm/iterators.md (MVE_VMLxQ_N): New.
10637 (mve_insn): Add vmla, vmlas, vqdmlah, vqdmlash, vqrdmlah,
10639 (supf): Add VQDMLAHQ_N_S, VQDMLASHQ_N_S, VQRDMLAHQ_N_S,
10641 * config/arm/mve.md (mve_vmlaq_n_<supf><mode>)
10642 (mve_vmlasq_n_<supf><mode>, mve_vqdmlahq_n_<supf><mode>)
10643 (mve_vqdmlashq_n_<supf><mode>, mve_vqrdmlahq_n_<supf><mode>)
10644 (mve_vqrdmlashq_n_<supf><mode>): Merge into ...
10645 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
10647 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10649 * config/arm/arm-mve-builtins-shapes.cc (ternary_n): New.
10650 * config/arm/arm-mve-builtins-shapes.h (ternary_n): New.
10652 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10654 * config/arm/arm-mve-builtins-base.cc (vqdmladhq, vqdmladhxq)
10655 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
10656 (vqrdmlsdhxq): New.
10657 * config/arm/arm-mve-builtins-base.def (vqdmladhq, vqdmladhxq)
10658 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
10659 (vqrdmlsdhxq): New.
10660 * config/arm/arm-mve-builtins-base.h (vqdmladhq, vqdmladhxq)
10661 (vqdmlsdhq, vqdmlsdhxq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq)
10662 (vqrdmlsdhxq): New.
10663 * config/arm/arm-mve-builtins.cc
10664 (function_instance::has_inactive_argument): Handle vqrdmladhq,
10665 vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq vqdmladhq, vqdmladhxq,
10666 vqdmlsdhq, vqdmlsdhxq.
10667 * config/arm/arm_mve.h (vqrdmlsdhxq): Remove.
10668 (vqrdmlsdhq): Remove.
10669 (vqrdmladhxq): Remove.
10670 (vqrdmladhq): Remove.
10671 (vqdmlsdhxq): Remove.
10672 (vqdmlsdhq): Remove.
10673 (vqdmladhxq): Remove.
10674 (vqdmladhq): Remove.
10675 (vqdmladhq_m): Remove.
10676 (vqdmladhxq_m): Remove.
10677 (vqdmlsdhq_m): Remove.
10678 (vqdmlsdhxq_m): Remove.
10679 (vqrdmladhq_m): Remove.
10680 (vqrdmladhxq_m): Remove.
10681 (vqrdmlsdhq_m): Remove.
10682 (vqrdmlsdhxq_m): Remove.
10683 (vqrdmlsdhxq_s8): Remove.
10684 (vqrdmlsdhq_s8): Remove.
10685 (vqrdmladhxq_s8): Remove.
10686 (vqrdmladhq_s8): Remove.
10687 (vqdmlsdhxq_s8): Remove.
10688 (vqdmlsdhq_s8): Remove.
10689 (vqdmladhxq_s8): Remove.
10690 (vqdmladhq_s8): Remove.
10691 (vqrdmlsdhxq_s16): Remove.
10692 (vqrdmlsdhq_s16): Remove.
10693 (vqrdmladhxq_s16): Remove.
10694 (vqrdmladhq_s16): Remove.
10695 (vqdmlsdhxq_s16): Remove.
10696 (vqdmlsdhq_s16): Remove.
10697 (vqdmladhxq_s16): Remove.
10698 (vqdmladhq_s16): Remove.
10699 (vqrdmlsdhxq_s32): Remove.
10700 (vqrdmlsdhq_s32): Remove.
10701 (vqrdmladhxq_s32): Remove.
10702 (vqrdmladhq_s32): Remove.
10703 (vqdmlsdhxq_s32): Remove.
10704 (vqdmlsdhq_s32): Remove.
10705 (vqdmladhxq_s32): Remove.
10706 (vqdmladhq_s32): Remove.
10707 (vqdmladhq_m_s8): Remove.
10708 (vqdmladhq_m_s32): Remove.
10709 (vqdmladhq_m_s16): Remove.
10710 (vqdmladhxq_m_s8): Remove.
10711 (vqdmladhxq_m_s32): Remove.
10712 (vqdmladhxq_m_s16): Remove.
10713 (vqdmlsdhq_m_s8): Remove.
10714 (vqdmlsdhq_m_s32): Remove.
10715 (vqdmlsdhq_m_s16): Remove.
10716 (vqdmlsdhxq_m_s8): Remove.
10717 (vqdmlsdhxq_m_s32): Remove.
10718 (vqdmlsdhxq_m_s16): Remove.
10719 (vqrdmladhq_m_s8): Remove.
10720 (vqrdmladhq_m_s32): Remove.
10721 (vqrdmladhq_m_s16): Remove.
10722 (vqrdmladhxq_m_s8): Remove.
10723 (vqrdmladhxq_m_s32): Remove.
10724 (vqrdmladhxq_m_s16): Remove.
10725 (vqrdmlsdhq_m_s8): Remove.
10726 (vqrdmlsdhq_m_s32): Remove.
10727 (vqrdmlsdhq_m_s16): Remove.
10728 (vqrdmlsdhxq_m_s8): Remove.
10729 (vqrdmlsdhxq_m_s32): Remove.
10730 (vqrdmlsdhxq_m_s16): Remove.
10731 (__arm_vqrdmlsdhxq_s8): Remove.
10732 (__arm_vqrdmlsdhq_s8): Remove.
10733 (__arm_vqrdmladhxq_s8): Remove.
10734 (__arm_vqrdmladhq_s8): Remove.
10735 (__arm_vqdmlsdhxq_s8): Remove.
10736 (__arm_vqdmlsdhq_s8): Remove.
10737 (__arm_vqdmladhxq_s8): Remove.
10738 (__arm_vqdmladhq_s8): Remove.
10739 (__arm_vqrdmlsdhxq_s16): Remove.
10740 (__arm_vqrdmlsdhq_s16): Remove.
10741 (__arm_vqrdmladhxq_s16): Remove.
10742 (__arm_vqrdmladhq_s16): Remove.
10743 (__arm_vqdmlsdhxq_s16): Remove.
10744 (__arm_vqdmlsdhq_s16): Remove.
10745 (__arm_vqdmladhxq_s16): Remove.
10746 (__arm_vqdmladhq_s16): Remove.
10747 (__arm_vqrdmlsdhxq_s32): Remove.
10748 (__arm_vqrdmlsdhq_s32): Remove.
10749 (__arm_vqrdmladhxq_s32): Remove.
10750 (__arm_vqrdmladhq_s32): Remove.
10751 (__arm_vqdmlsdhxq_s32): Remove.
10752 (__arm_vqdmlsdhq_s32): Remove.
10753 (__arm_vqdmladhxq_s32): Remove.
10754 (__arm_vqdmladhq_s32): Remove.
10755 (__arm_vqdmladhq_m_s8): Remove.
10756 (__arm_vqdmladhq_m_s32): Remove.
10757 (__arm_vqdmladhq_m_s16): Remove.
10758 (__arm_vqdmladhxq_m_s8): Remove.
10759 (__arm_vqdmladhxq_m_s32): Remove.
10760 (__arm_vqdmladhxq_m_s16): Remove.
10761 (__arm_vqdmlsdhq_m_s8): Remove.
10762 (__arm_vqdmlsdhq_m_s32): Remove.
10763 (__arm_vqdmlsdhq_m_s16): Remove.
10764 (__arm_vqdmlsdhxq_m_s8): Remove.
10765 (__arm_vqdmlsdhxq_m_s32): Remove.
10766 (__arm_vqdmlsdhxq_m_s16): Remove.
10767 (__arm_vqrdmladhq_m_s8): Remove.
10768 (__arm_vqrdmladhq_m_s32): Remove.
10769 (__arm_vqrdmladhq_m_s16): Remove.
10770 (__arm_vqrdmladhxq_m_s8): Remove.
10771 (__arm_vqrdmladhxq_m_s32): Remove.
10772 (__arm_vqrdmladhxq_m_s16): Remove.
10773 (__arm_vqrdmlsdhq_m_s8): Remove.
10774 (__arm_vqrdmlsdhq_m_s32): Remove.
10775 (__arm_vqrdmlsdhq_m_s16): Remove.
10776 (__arm_vqrdmlsdhxq_m_s8): Remove.
10777 (__arm_vqrdmlsdhxq_m_s32): Remove.
10778 (__arm_vqrdmlsdhxq_m_s16): Remove.
10779 (__arm_vqrdmlsdhxq): Remove.
10780 (__arm_vqrdmlsdhq): Remove.
10781 (__arm_vqrdmladhxq): Remove.
10782 (__arm_vqrdmladhq): Remove.
10783 (__arm_vqdmlsdhxq): Remove.
10784 (__arm_vqdmlsdhq): Remove.
10785 (__arm_vqdmladhxq): Remove.
10786 (__arm_vqdmladhq): Remove.
10787 (__arm_vqdmladhq_m): Remove.
10788 (__arm_vqdmladhxq_m): Remove.
10789 (__arm_vqdmlsdhq_m): Remove.
10790 (__arm_vqdmlsdhxq_m): Remove.
10791 (__arm_vqrdmladhq_m): Remove.
10792 (__arm_vqrdmladhxq_m): Remove.
10793 (__arm_vqrdmlsdhq_m): Remove.
10794 (__arm_vqrdmlsdhxq_m): Remove.
10796 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10798 * config/arm/iterators.md (MVE_VQxDMLxDHxQ_S): New.
10799 (mve_insn): Add vqdmladh, vqdmladhx, vqdmlsdh, vqdmlsdhx,
10800 vqrdmladh, vqrdmladhx, vqrdmlsdh, vqrdmlsdhx.
10801 (supf): Add VQDMLADHQ_S, VQDMLADHXQ_S, VQDMLSDHQ_S, VQDMLSDHXQ_S,
10802 VQRDMLADHQ_S,VQRDMLADHXQ_S, VQRDMLSDHQ_S, VQRDMLSDHXQ_S.
10803 * config/arm/mve.md (mve_vqrdmladhq_s<mode>)
10804 (mve_vqrdmladhxq_s<mode>, mve_vqrdmlsdhq_s<mode>)
10805 (mve_vqrdmlsdhxq_s<mode>, mve_vqdmlsdhxq_s<mode>)
10806 (mve_vqdmlsdhq_s<mode>, mve_vqdmladhxq_s<mode>)
10807 (mve_vqdmladhq_s<mode>): Merge into ...
10808 (@mve_<mve_insn>q_<supf><mode>): ... this.
10810 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10812 * config/arm/arm-mve-builtins-shapes.cc (ternary): New.
10813 * config/arm/arm-mve-builtins-shapes.h (ternary): New.
10815 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10817 * config/arm/arm-mve-builtins-base.cc (vmlaldavaq, vmlaldavaxq)
10818 (vmlsldavaq, vmlsldavaxq): New.
10819 * config/arm/arm-mve-builtins-base.def (vmlaldavaq, vmlaldavaxq)
10820 (vmlsldavaq, vmlsldavaxq): New.
10821 * config/arm/arm-mve-builtins-base.h (vmlaldavaq, vmlaldavaxq)
10822 (vmlsldavaq, vmlsldavaxq): New.
10823 * config/arm/arm_mve.h (vmlaldavaq): Remove.
10824 (vmlaldavaxq): Remove.
10825 (vmlsldavaq): Remove.
10826 (vmlsldavaxq): Remove.
10827 (vmlaldavaq_p): Remove.
10828 (vmlaldavaxq_p): Remove.
10829 (vmlsldavaq_p): Remove.
10830 (vmlsldavaxq_p): Remove.
10831 (vmlaldavaq_s16): Remove.
10832 (vmlaldavaxq_s16): Remove.
10833 (vmlsldavaq_s16): Remove.
10834 (vmlsldavaxq_s16): Remove.
10835 (vmlaldavaq_u16): Remove.
10836 (vmlaldavaq_s32): Remove.
10837 (vmlaldavaxq_s32): Remove.
10838 (vmlsldavaq_s32): Remove.
10839 (vmlsldavaxq_s32): Remove.
10840 (vmlaldavaq_u32): Remove.
10841 (vmlaldavaq_p_s32): Remove.
10842 (vmlaldavaq_p_s16): Remove.
10843 (vmlaldavaq_p_u32): Remove.
10844 (vmlaldavaq_p_u16): Remove.
10845 (vmlaldavaxq_p_s32): Remove.
10846 (vmlaldavaxq_p_s16): Remove.
10847 (vmlsldavaq_p_s32): Remove.
10848 (vmlsldavaq_p_s16): Remove.
10849 (vmlsldavaxq_p_s32): Remove.
10850 (vmlsldavaxq_p_s16): Remove.
10851 (__arm_vmlaldavaq_s16): Remove.
10852 (__arm_vmlaldavaxq_s16): Remove.
10853 (__arm_vmlsldavaq_s16): Remove.
10854 (__arm_vmlsldavaxq_s16): Remove.
10855 (__arm_vmlaldavaq_u16): Remove.
10856 (__arm_vmlaldavaq_s32): Remove.
10857 (__arm_vmlaldavaxq_s32): Remove.
10858 (__arm_vmlsldavaq_s32): Remove.
10859 (__arm_vmlsldavaxq_s32): Remove.
10860 (__arm_vmlaldavaq_u32): Remove.
10861 (__arm_vmlaldavaq_p_s32): Remove.
10862 (__arm_vmlaldavaq_p_s16): Remove.
10863 (__arm_vmlaldavaq_p_u32): Remove.
10864 (__arm_vmlaldavaq_p_u16): Remove.
10865 (__arm_vmlaldavaxq_p_s32): Remove.
10866 (__arm_vmlaldavaxq_p_s16): Remove.
10867 (__arm_vmlsldavaq_p_s32): Remove.
10868 (__arm_vmlsldavaq_p_s16): Remove.
10869 (__arm_vmlsldavaxq_p_s32): Remove.
10870 (__arm_vmlsldavaxq_p_s16): Remove.
10871 (__arm_vmlaldavaq): Remove.
10872 (__arm_vmlaldavaxq): Remove.
10873 (__arm_vmlsldavaq): Remove.
10874 (__arm_vmlsldavaxq): Remove.
10875 (__arm_vmlaldavaq_p): Remove.
10876 (__arm_vmlaldavaxq_p): Remove.
10877 (__arm_vmlsldavaq_p): Remove.
10878 (__arm_vmlsldavaxq_p): Remove.
10880 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10882 * config/arm/iterators.md (MVE_VMLxLDAVAxQ, MVE_VMLxLDAVAxQ_P):
10884 (mve_insn): Add vmlaldava, vmlaldavax, vmlsldava, vmlsldavax.
10885 (supf): Add VMLALDAVAXQ_P_S, VMLALDAVAXQ_S, VMLSLDAVAQ_P_S,
10886 VMLSLDAVAQ_S, VMLSLDAVAXQ_P_S, VMLSLDAVAXQ_S.
10887 * config/arm/mve.md (mve_vmlaldavaq_<supf><mode>)
10888 (mve_vmlsldavaq_s<mode>, mve_vmlsldavaxq_s<mode>)
10889 (mve_vmlaldavaxq_s<mode>): Merge into ...
10890 (@mve_<mve_insn>q_<supf><mode>): ... this.
10891 (mve_vmlaldavaq_p_<supf><mode>, mve_vmlaldavaxq_p_<supf><mode>)
10892 (mve_vmlsldavaq_p_s<mode>, mve_vmlsldavaxq_p_s<mode>): Merge into
10894 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
10896 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10898 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int64): New.
10899 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int64): New.
10901 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10903 * config/arm/arm-mve-builtins-base.cc (vrmlaldavhq, vrmlaldavhxq)
10904 (vrmlsldavhq, vrmlsldavhxq): New.
10905 * config/arm/arm-mve-builtins-base.def (vrmlaldavhq, vrmlaldavhxq)
10906 (vrmlsldavhq, vrmlsldavhxq): New.
10907 * config/arm/arm-mve-builtins-base.h (vrmlaldavhq, vrmlaldavhxq)
10908 (vrmlsldavhq, vrmlsldavhxq): New.
10909 * config/arm/arm-mve-builtins-functions.h
10910 (unspec_mve_function_exact_insn_pred_p): Handle vrmlaldavhq,
10911 vrmlaldavhxq, vrmlsldavhq, vrmlsldavhxq.
10912 * config/arm/arm_mve.h (vrmlaldavhq): Remove.
10913 (vrmlsldavhxq): Remove.
10914 (vrmlsldavhq): Remove.
10915 (vrmlaldavhxq): Remove.
10916 (vrmlaldavhq_p): Remove.
10917 (vrmlaldavhxq_p): Remove.
10918 (vrmlsldavhq_p): Remove.
10919 (vrmlsldavhxq_p): Remove.
10920 (vrmlaldavhq_u32): Remove.
10921 (vrmlsldavhxq_s32): Remove.
10922 (vrmlsldavhq_s32): Remove.
10923 (vrmlaldavhxq_s32): Remove.
10924 (vrmlaldavhq_s32): Remove.
10925 (vrmlaldavhq_p_s32): Remove.
10926 (vrmlaldavhxq_p_s32): Remove.
10927 (vrmlsldavhq_p_s32): Remove.
10928 (vrmlsldavhxq_p_s32): Remove.
10929 (vrmlaldavhq_p_u32): Remove.
10930 (__arm_vrmlaldavhq_u32): Remove.
10931 (__arm_vrmlsldavhxq_s32): Remove.
10932 (__arm_vrmlsldavhq_s32): Remove.
10933 (__arm_vrmlaldavhxq_s32): Remove.
10934 (__arm_vrmlaldavhq_s32): Remove.
10935 (__arm_vrmlaldavhq_p_s32): Remove.
10936 (__arm_vrmlaldavhxq_p_s32): Remove.
10937 (__arm_vrmlsldavhq_p_s32): Remove.
10938 (__arm_vrmlsldavhxq_p_s32): Remove.
10939 (__arm_vrmlaldavhq_p_u32): Remove.
10940 (__arm_vrmlaldavhq): Remove.
10941 (__arm_vrmlsldavhxq): Remove.
10942 (__arm_vrmlsldavhq): Remove.
10943 (__arm_vrmlaldavhxq): Remove.
10944 (__arm_vrmlaldavhq_p): Remove.
10945 (__arm_vrmlaldavhxq_p): Remove.
10946 (__arm_vrmlsldavhq_p): Remove.
10947 (__arm_vrmlsldavhxq_p): Remove.
10949 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10951 * config/arm/iterators.md (MVE_VRMLxLDAVxQ, MVE_VRMLxLDAVHxQ_P):
10953 (mve_insn): Add vrmlaldavh, vrmlaldavhx, vrmlsldavh, vrmlsldavhx.
10954 (supf): Add VRMLALDAVHXQ_P_S, VRMLALDAVHXQ_S, VRMLSLDAVHQ_P_S,
10955 VRMLSLDAVHQ_S, VRMLSLDAVHXQ_P_S, VRMLSLDAVHXQ_S.
10956 * config/arm/mve.md (mve_vrmlaldavhxq_sv4si)
10957 (mve_vrmlsldavhq_sv4si, mve_vrmlsldavhxq_sv4si)
10958 (mve_vrmlaldavhq_<supf>v4si): Merge into ...
10959 (@mve_<mve_insn>q_<supf>v4si): ... this.
10960 (mve_vrmlaldavhxq_p_sv4si, mve_vrmlsldavhq_p_sv4si)
10961 (mve_vrmlsldavhxq_p_sv4si, mve_vrmlaldavhq_p_<supf>v4si): Merge
10963 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
10965 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
10967 * config/arm/arm-mve-builtins-base.cc (vmlaldavq, vmlaldavxq)
10968 (vmlsldavq, vmlsldavxq): New.
10969 * config/arm/arm-mve-builtins-base.def (vmlaldavq, vmlaldavxq)
10970 (vmlsldavq, vmlsldavxq): New.
10971 * config/arm/arm-mve-builtins-base.h (vmlaldavq, vmlaldavxq)
10972 (vmlsldavq, vmlsldavxq): New.
10973 * config/arm/arm_mve.h (vmlaldavq): Remove.
10974 (vmlsldavxq): Remove.
10975 (vmlsldavq): Remove.
10976 (vmlaldavxq): Remove.
10977 (vmlaldavq_p): Remove.
10978 (vmlaldavxq_p): Remove.
10979 (vmlsldavq_p): Remove.
10980 (vmlsldavxq_p): Remove.
10981 (vmlaldavq_u16): Remove.
10982 (vmlsldavxq_s16): Remove.
10983 (vmlsldavq_s16): Remove.
10984 (vmlaldavxq_s16): Remove.
10985 (vmlaldavq_s16): Remove.
10986 (vmlaldavq_u32): Remove.
10987 (vmlsldavxq_s32): Remove.
10988 (vmlsldavq_s32): Remove.
10989 (vmlaldavxq_s32): Remove.
10990 (vmlaldavq_s32): Remove.
10991 (vmlaldavq_p_s16): Remove.
10992 (vmlaldavxq_p_s16): Remove.
10993 (vmlsldavq_p_s16): Remove.
10994 (vmlsldavxq_p_s16): Remove.
10995 (vmlaldavq_p_u16): Remove.
10996 (vmlaldavq_p_s32): Remove.
10997 (vmlaldavxq_p_s32): Remove.
10998 (vmlsldavq_p_s32): Remove.
10999 (vmlsldavxq_p_s32): Remove.
11000 (vmlaldavq_p_u32): Remove.
11001 (__arm_vmlaldavq_u16): Remove.
11002 (__arm_vmlsldavxq_s16): Remove.
11003 (__arm_vmlsldavq_s16): Remove.
11004 (__arm_vmlaldavxq_s16): Remove.
11005 (__arm_vmlaldavq_s16): Remove.
11006 (__arm_vmlaldavq_u32): Remove.
11007 (__arm_vmlsldavxq_s32): Remove.
11008 (__arm_vmlsldavq_s32): Remove.
11009 (__arm_vmlaldavxq_s32): Remove.
11010 (__arm_vmlaldavq_s32): Remove.
11011 (__arm_vmlaldavq_p_s16): Remove.
11012 (__arm_vmlaldavxq_p_s16): Remove.
11013 (__arm_vmlsldavq_p_s16): Remove.
11014 (__arm_vmlsldavxq_p_s16): Remove.
11015 (__arm_vmlaldavq_p_u16): Remove.
11016 (__arm_vmlaldavq_p_s32): Remove.
11017 (__arm_vmlaldavxq_p_s32): Remove.
11018 (__arm_vmlsldavq_p_s32): Remove.
11019 (__arm_vmlsldavxq_p_s32): Remove.
11020 (__arm_vmlaldavq_p_u32): Remove.
11021 (__arm_vmlaldavq): Remove.
11022 (__arm_vmlsldavxq): Remove.
11023 (__arm_vmlsldavq): Remove.
11024 (__arm_vmlaldavxq): Remove.
11025 (__arm_vmlaldavq_p): Remove.
11026 (__arm_vmlaldavxq_p): Remove.
11027 (__arm_vmlsldavq_p): Remove.
11028 (__arm_vmlsldavxq_p): Remove.
11030 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11032 * config/arm/iterators.md (MVE_VMLxLDAVxQ, MVE_VMLxLDAVxQ_P): New.
11033 (mve_insn): Add vmlaldav, vmlaldavx, vmlsldav, vmlsldavx.
11034 (supf): Add VMLALDAVXQ_S, VMLSLDAVQ_S, VMLSLDAVXQ_S,
11035 VMLALDAVXQ_P_S, VMLSLDAVQ_P_S, VMLSLDAVXQ_P_S.
11036 * config/arm/mve.md (mve_vmlaldavq_<supf><mode>)
11037 (mve_vmlaldavxq_s<mode>, mve_vmlsldavq_s<mode>)
11038 (mve_vmlsldavxq_s<mode>): Merge into ...
11039 (@mve_<mve_insn>q_<supf><mode>): ... this.
11040 (mve_vmlaldavq_p_<supf><mode>, mve_vmlaldavxq_p_s<mode>)
11041 (mve_vmlsldavq_p_s<mode>, mve_vmlsldavxq_p_s<mode>): Merge into
11043 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
11045 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11047 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int64): New.
11048 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int64): New.
11050 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11052 * config/arm/arm-mve-builtins-base.cc (vabavq): New.
11053 * config/arm/arm-mve-builtins-base.def (vabavq): New.
11054 * config/arm/arm-mve-builtins-base.h (vabavq): New.
11055 * config/arm/arm_mve.h (vabavq): Remove.
11056 (vabavq_p): Remove.
11057 (vabavq_s8): Remove.
11058 (vabavq_s16): Remove.
11059 (vabavq_s32): Remove.
11060 (vabavq_u8): Remove.
11061 (vabavq_u16): Remove.
11062 (vabavq_u32): Remove.
11063 (vabavq_p_s8): Remove.
11064 (vabavq_p_u8): Remove.
11065 (vabavq_p_s16): Remove.
11066 (vabavq_p_u16): Remove.
11067 (vabavq_p_s32): Remove.
11068 (vabavq_p_u32): Remove.
11069 (__arm_vabavq_s8): Remove.
11070 (__arm_vabavq_s16): Remove.
11071 (__arm_vabavq_s32): Remove.
11072 (__arm_vabavq_u8): Remove.
11073 (__arm_vabavq_u16): Remove.
11074 (__arm_vabavq_u32): Remove.
11075 (__arm_vabavq_p_s8): Remove.
11076 (__arm_vabavq_p_u8): Remove.
11077 (__arm_vabavq_p_s16): Remove.
11078 (__arm_vabavq_p_u16): Remove.
11079 (__arm_vabavq_p_s32): Remove.
11080 (__arm_vabavq_p_u32): Remove.
11081 (__arm_vabavq): Remove.
11082 (__arm_vabavq_p): Remove.
11084 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11086 * config/arm/iterators.md (mve_insn): Add vabav.
11087 * config/arm/mve.md (mve_vabavq_<supf><mode>): Rename into ...
11088 (@mve_<mve_insn>q_<supf><mode>): ... this,.
11089 (mve_vabavq_p_<supf><mode>): Rename into ...
11090 (@mve_<mve_insn>q_p_<supf><mode>): ... this,.
11092 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11094 * config/arm/arm-mve-builtins-base.cc (vmladavaxq, vmladavaq)
11095 (vmlsdavaq, vmlsdavaxq): New.
11096 * config/arm/arm-mve-builtins-base.def (vmladavaxq, vmladavaq)
11097 (vmlsdavaq, vmlsdavaxq): New.
11098 * config/arm/arm-mve-builtins-base.h (vmladavaxq, vmladavaq)
11099 (vmlsdavaq, vmlsdavaxq): New.
11100 * config/arm/arm_mve.h (vmladavaq): Remove.
11101 (vmlsdavaxq): Remove.
11102 (vmlsdavaq): Remove.
11103 (vmladavaxq): Remove.
11104 (vmladavaq_p): Remove.
11105 (vmladavaxq_p): Remove.
11106 (vmlsdavaq_p): Remove.
11107 (vmlsdavaxq_p): Remove.
11108 (vmladavaq_u8): Remove.
11109 (vmlsdavaxq_s8): Remove.
11110 (vmlsdavaq_s8): Remove.
11111 (vmladavaxq_s8): Remove.
11112 (vmladavaq_s8): Remove.
11113 (vmladavaq_u16): Remove.
11114 (vmlsdavaxq_s16): Remove.
11115 (vmlsdavaq_s16): Remove.
11116 (vmladavaxq_s16): Remove.
11117 (vmladavaq_s16): Remove.
11118 (vmladavaq_u32): Remove.
11119 (vmlsdavaxq_s32): Remove.
11120 (vmlsdavaq_s32): Remove.
11121 (vmladavaxq_s32): Remove.
11122 (vmladavaq_s32): Remove.
11123 (vmladavaq_p_s8): Remove.
11124 (vmladavaq_p_s32): Remove.
11125 (vmladavaq_p_s16): Remove.
11126 (vmladavaq_p_u8): Remove.
11127 (vmladavaq_p_u32): Remove.
11128 (vmladavaq_p_u16): Remove.
11129 (vmladavaxq_p_s8): Remove.
11130 (vmladavaxq_p_s32): Remove.
11131 (vmladavaxq_p_s16): Remove.
11132 (vmlsdavaq_p_s8): Remove.
11133 (vmlsdavaq_p_s32): Remove.
11134 (vmlsdavaq_p_s16): Remove.
11135 (vmlsdavaxq_p_s8): Remove.
11136 (vmlsdavaxq_p_s32): Remove.
11137 (vmlsdavaxq_p_s16): Remove.
11138 (__arm_vmladavaq_u8): Remove.
11139 (__arm_vmlsdavaxq_s8): Remove.
11140 (__arm_vmlsdavaq_s8): Remove.
11141 (__arm_vmladavaxq_s8): Remove.
11142 (__arm_vmladavaq_s8): Remove.
11143 (__arm_vmladavaq_u16): Remove.
11144 (__arm_vmlsdavaxq_s16): Remove.
11145 (__arm_vmlsdavaq_s16): Remove.
11146 (__arm_vmladavaxq_s16): Remove.
11147 (__arm_vmladavaq_s16): Remove.
11148 (__arm_vmladavaq_u32): Remove.
11149 (__arm_vmlsdavaxq_s32): Remove.
11150 (__arm_vmlsdavaq_s32): Remove.
11151 (__arm_vmladavaxq_s32): Remove.
11152 (__arm_vmladavaq_s32): Remove.
11153 (__arm_vmladavaq_p_s8): Remove.
11154 (__arm_vmladavaq_p_s32): Remove.
11155 (__arm_vmladavaq_p_s16): Remove.
11156 (__arm_vmladavaq_p_u8): Remove.
11157 (__arm_vmladavaq_p_u32): Remove.
11158 (__arm_vmladavaq_p_u16): Remove.
11159 (__arm_vmladavaxq_p_s8): Remove.
11160 (__arm_vmladavaxq_p_s32): Remove.
11161 (__arm_vmladavaxq_p_s16): Remove.
11162 (__arm_vmlsdavaq_p_s8): Remove.
11163 (__arm_vmlsdavaq_p_s32): Remove.
11164 (__arm_vmlsdavaq_p_s16): Remove.
11165 (__arm_vmlsdavaxq_p_s8): Remove.
11166 (__arm_vmlsdavaxq_p_s32): Remove.
11167 (__arm_vmlsdavaxq_p_s16): Remove.
11168 (__arm_vmladavaq): Remove.
11169 (__arm_vmlsdavaxq): Remove.
11170 (__arm_vmlsdavaq): Remove.
11171 (__arm_vmladavaxq): Remove.
11172 (__arm_vmladavaq_p): Remove.
11173 (__arm_vmladavaxq_p): Remove.
11174 (__arm_vmlsdavaq_p): Remove.
11175 (__arm_vmlsdavaxq_p): Remove.
11177 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11179 * config/arm/arm-mve-builtins-shapes.cc (binary_acca_int32): New.
11180 * config/arm/arm-mve-builtins-shapes.h (binary_acca_int32): New.
11182 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11184 * config/arm/arm-mve-builtins-base.cc (vmladavq, vmladavxq)
11185 (vmlsdavq, vmlsdavxq): New.
11186 * config/arm/arm-mve-builtins-base.def (vmladavq, vmladavxq)
11187 (vmlsdavq, vmlsdavxq): New.
11188 * config/arm/arm-mve-builtins-base.h (vmladavq, vmladavxq)
11189 (vmlsdavq, vmlsdavxq): New.
11190 * config/arm/arm_mve.h (vmladavq): Remove.
11191 (vmlsdavxq): Remove.
11192 (vmlsdavq): Remove.
11193 (vmladavxq): Remove.
11194 (vmladavq_p): Remove.
11195 (vmlsdavxq_p): Remove.
11196 (vmlsdavq_p): Remove.
11197 (vmladavxq_p): Remove.
11198 (vmladavq_u8): Remove.
11199 (vmlsdavxq_s8): Remove.
11200 (vmlsdavq_s8): Remove.
11201 (vmladavxq_s8): Remove.
11202 (vmladavq_s8): Remove.
11203 (vmladavq_u16): Remove.
11204 (vmlsdavxq_s16): Remove.
11205 (vmlsdavq_s16): Remove.
11206 (vmladavxq_s16): Remove.
11207 (vmladavq_s16): Remove.
11208 (vmladavq_u32): Remove.
11209 (vmlsdavxq_s32): Remove.
11210 (vmlsdavq_s32): Remove.
11211 (vmladavxq_s32): Remove.
11212 (vmladavq_s32): Remove.
11213 (vmladavq_p_u8): Remove.
11214 (vmlsdavxq_p_s8): Remove.
11215 (vmlsdavq_p_s8): Remove.
11216 (vmladavxq_p_s8): Remove.
11217 (vmladavq_p_s8): Remove.
11218 (vmladavq_p_u16): Remove.
11219 (vmlsdavxq_p_s16): Remove.
11220 (vmlsdavq_p_s16): Remove.
11221 (vmladavxq_p_s16): Remove.
11222 (vmladavq_p_s16): Remove.
11223 (vmladavq_p_u32): Remove.
11224 (vmlsdavxq_p_s32): Remove.
11225 (vmlsdavq_p_s32): Remove.
11226 (vmladavxq_p_s32): Remove.
11227 (vmladavq_p_s32): Remove.
11228 (__arm_vmladavq_u8): Remove.
11229 (__arm_vmlsdavxq_s8): Remove.
11230 (__arm_vmlsdavq_s8): Remove.
11231 (__arm_vmladavxq_s8): Remove.
11232 (__arm_vmladavq_s8): Remove.
11233 (__arm_vmladavq_u16): Remove.
11234 (__arm_vmlsdavxq_s16): Remove.
11235 (__arm_vmlsdavq_s16): Remove.
11236 (__arm_vmladavxq_s16): Remove.
11237 (__arm_vmladavq_s16): Remove.
11238 (__arm_vmladavq_u32): Remove.
11239 (__arm_vmlsdavxq_s32): Remove.
11240 (__arm_vmlsdavq_s32): Remove.
11241 (__arm_vmladavxq_s32): Remove.
11242 (__arm_vmladavq_s32): Remove.
11243 (__arm_vmladavq_p_u8): Remove.
11244 (__arm_vmlsdavxq_p_s8): Remove.
11245 (__arm_vmlsdavq_p_s8): Remove.
11246 (__arm_vmladavxq_p_s8): Remove.
11247 (__arm_vmladavq_p_s8): Remove.
11248 (__arm_vmladavq_p_u16): Remove.
11249 (__arm_vmlsdavxq_p_s16): Remove.
11250 (__arm_vmlsdavq_p_s16): Remove.
11251 (__arm_vmladavxq_p_s16): Remove.
11252 (__arm_vmladavq_p_s16): Remove.
11253 (__arm_vmladavq_p_u32): Remove.
11254 (__arm_vmlsdavxq_p_s32): Remove.
11255 (__arm_vmlsdavq_p_s32): Remove.
11256 (__arm_vmladavxq_p_s32): Remove.
11257 (__arm_vmladavq_p_s32): Remove.
11258 (__arm_vmladavq): Remove.
11259 (__arm_vmlsdavxq): Remove.
11260 (__arm_vmlsdavq): Remove.
11261 (__arm_vmladavxq): Remove.
11262 (__arm_vmladavq_p): Remove.
11263 (__arm_vmlsdavxq_p): Remove.
11264 (__arm_vmlsdavq_p): Remove.
11265 (__arm_vmladavxq_p): Remove.
11267 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11269 * config/arm/iterators.md (MVE_VMLxDAVQ, MVE_VMLxDAVQ_P)
11270 (MVE_VMLxDAVAQ, MVE_VMLxDAVAQ_P): New.
11271 (mve_insn): Add vmladava, vmladavax, vmladav, vmladavx, vmlsdava,
11272 vmlsdavax, vmlsdav, vmlsdavx.
11273 (supf): Add VMLADAVAXQ_P_S, VMLADAVAXQ_S, VMLADAVXQ_P_S,
11274 VMLADAVXQ_S, VMLSDAVAQ_P_S, VMLSDAVAQ_S, VMLSDAVAXQ_P_S,
11275 VMLSDAVAXQ_S, VMLSDAVQ_P_S, VMLSDAVQ_S, VMLSDAVXQ_P_S,
11277 * config/arm/mve.md (mve_vmladavq_<supf><mode>)
11278 (mve_vmladavxq_s<mode>, mve_vmlsdavq_s<mode>)
11279 (mve_vmlsdavxq_s<mode>): Merge into ...
11280 (@mve_<mve_insn>q_<supf><mode>): ... this.
11281 (mve_vmlsdavaq_s<mode>, mve_vmladavaxq_s<mode>)
11282 (mve_vmlsdavaxq_s<mode>, mve_vmladavaq_<supf><mode>): Merge into
11284 (@mve_<mve_insn>q_<supf><mode>): ... this.
11285 (mve_vmladavq_p_<supf><mode>, mve_vmladavxq_p_s<mode>)
11286 (mve_vmlsdavq_p_s<mode>, mve_vmlsdavxq_p_s<mode>): Merge into ...
11287 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
11288 (mve_vmladavaq_p_<supf><mode>, mve_vmladavaxq_p_s<mode>)
11289 (mve_vmlsdavaq_p_s<mode>, mve_vmlsdavaxq_p_s<mode>): Merge into
11291 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
11293 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11295 * config/arm/arm-mve-builtins-shapes.cc (binary_acc_int32): New.
11296 * config/arm/arm-mve-builtins-shapes.h (binary_acc_int32): New.
11298 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11300 * config/arm/arm-mve-builtins-base.cc (vaddlvaq): New.
11301 * config/arm/arm-mve-builtins-base.def (vaddlvaq): New.
11302 * config/arm/arm-mve-builtins-base.h (vaddlvaq): New.
11303 * config/arm/arm_mve.h (vaddlvaq): Remove.
11304 (vaddlvaq_p): Remove.
11305 (vaddlvaq_u32): Remove.
11306 (vaddlvaq_s32): Remove.
11307 (vaddlvaq_p_s32): Remove.
11308 (vaddlvaq_p_u32): Remove.
11309 (__arm_vaddlvaq_u32): Remove.
11310 (__arm_vaddlvaq_s32): Remove.
11311 (__arm_vaddlvaq_p_s32): Remove.
11312 (__arm_vaddlvaq_p_u32): Remove.
11313 (__arm_vaddlvaq): Remove.
11314 (__arm_vaddlvaq_p): Remove.
11316 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11318 * config/arm/arm-mve-builtins-shapes.cc (unary_widen_acc): New.
11319 * config/arm/arm-mve-builtins-shapes.h (unary_widen_acc): New.
11321 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11323 * config/arm/iterators.md (mve_insn): Add vaddlva.
11324 * config/arm/mve.md (mve_vaddlvaq_<supf>v4si): Rename into ...
11325 (@mve_<mve_insn>q_<supf>v4si): ... this.
11326 (mve_vaddlvaq_p_<supf>v4si): Rename into ...
11327 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
11329 2023-05-11 Uros Bizjak <ubizjak@gmail.com>
11332 * config/i386/i386.cc (ix86_widen_mult_cost):
11333 Handle V4HImode and V2SImode.
11335 2023-05-11 Andrew Pinski <apinski@marvell.com>
11337 * tree-ssa-dce.cc (simple_dce_from_worklist): For ssa names
11338 defined by a phi node with more than one uses, allow for the
11339 only uses are in that same defining statement.
11341 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
11343 * config/riscv/riscv.cc (riscv_const_insns): Add permissible
11346 2023-05-11 Pan Li <pan2.li@intel.com>
11348 * config/riscv/vector.md: Add comments for simplifying to vmset.
11350 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
11352 * config/riscv/autovec.md (<optab><mode>3): Add scalar shift
11354 (v<optab><mode>3): Add vector shift pattern.
11355 * config/riscv/vector-iterators.md: New iterator.
11357 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
11359 * config/riscv/autovec.md: Use renamed functions.
11360 * config/riscv/riscv-protos.h (emit_vlmax_op): Rename.
11361 (emit_vlmax_reg_op): To this.
11362 (emit_nonvlmax_op): Rename.
11363 (emit_len_op): To this.
11364 (emit_nonvlmax_binop): Rename.
11365 (emit_len_binop): To this.
11366 * config/riscv/riscv-v.cc (emit_pred_op): Add default parameter.
11367 (emit_pred_binop): Remove vlmax_p.
11368 (emit_vlmax_op): Rename.
11369 (emit_vlmax_reg_op): To this.
11370 (emit_nonvlmax_op): Rename.
11371 (emit_len_op): To this.
11372 (emit_nonvlmax_binop): Rename.
11373 (emit_len_binop): To this.
11374 (sew64_scalar_helper): Use renamed functions.
11375 (expand_tuple_move): Use renamed functions.
11376 * config/riscv/riscv.cc (vector_zero_call_used_regs): Use
11378 * config/riscv/vector.md: Use renamed functions.
11380 2023-05-11 Robin Dapp <rdapp@ventanamicro.com>
11381 Michael Collison <collison@rivosinc.com>
11383 * config/riscv/autovec.md (<optab><mode>3): Add integer binops.
11384 * config/riscv/riscv-protos.h (emit_nonvlmax_binop): Declare.
11385 * config/riscv/riscv-v.cc (emit_pred_op): New function.
11386 (set_expander_dest_and_mask): New function.
11387 (emit_pred_binop): New function.
11388 (emit_nonvlmax_binop): New function.
11390 2023-05-11 Pan Li <pan2.li@intel.com>
11392 * cfgloopmanip.cc (create_empty_loop_on_edge): Add PLUS_EXPR.
11393 * gimple-loop-interchange.cc
11394 (tree_loop_interchange::map_inductions_to_loop): Ditto.
11395 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Ditto.
11396 * tree-ssa-loop-ivopts.cc (create_new_iv): Ditto.
11397 * tree-ssa-loop-manip.cc (create_iv): Ditto.
11398 (tree_transform_and_unroll_loop): Ditto.
11399 (canonicalize_loop_ivs): Ditto.
11400 * tree-ssa-loop-manip.h (create_iv): Ditto.
11401 * tree-vect-data-refs.cc (vect_create_data_ref_ptr): Ditto.
11402 * tree-vect-loop-manip.cc (vect_set_loop_controls_directly):
11404 (vect_set_loop_condition_normal): Ditto.
11405 * tree-vect-loop.cc (vect_create_epilog_for_reduction): Ditto.
11406 * tree-vect-stmts.cc (vectorizable_store): Ditto.
11407 (vectorizable_load): Ditto.
11409 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11411 * config/arm/arm-mve-builtins-base.cc (vmovlbq, vmovltq): New.
11412 * config/arm/arm-mve-builtins-base.def (vmovlbq, vmovltq): New.
11413 * config/arm/arm-mve-builtins-base.h (vmovlbq, vmovltq): New.
11414 * config/arm/arm_mve.h (vmovlbq): Remove.
11416 (vmovlbq_m): Remove.
11417 (vmovltq_m): Remove.
11418 (vmovlbq_x): Remove.
11419 (vmovltq_x): Remove.
11420 (vmovlbq_s8): Remove.
11421 (vmovlbq_s16): Remove.
11422 (vmovltq_s8): Remove.
11423 (vmovltq_s16): Remove.
11424 (vmovltq_u8): Remove.
11425 (vmovltq_u16): Remove.
11426 (vmovlbq_u8): Remove.
11427 (vmovlbq_u16): Remove.
11428 (vmovlbq_m_s8): Remove.
11429 (vmovltq_m_s8): Remove.
11430 (vmovlbq_m_u8): Remove.
11431 (vmovltq_m_u8): Remove.
11432 (vmovlbq_m_s16): Remove.
11433 (vmovltq_m_s16): Remove.
11434 (vmovlbq_m_u16): Remove.
11435 (vmovltq_m_u16): Remove.
11436 (vmovlbq_x_s8): Remove.
11437 (vmovlbq_x_s16): Remove.
11438 (vmovlbq_x_u8): Remove.
11439 (vmovlbq_x_u16): Remove.
11440 (vmovltq_x_s8): Remove.
11441 (vmovltq_x_s16): Remove.
11442 (vmovltq_x_u8): Remove.
11443 (vmovltq_x_u16): Remove.
11444 (__arm_vmovlbq_s8): Remove.
11445 (__arm_vmovlbq_s16): Remove.
11446 (__arm_vmovltq_s8): Remove.
11447 (__arm_vmovltq_s16): Remove.
11448 (__arm_vmovltq_u8): Remove.
11449 (__arm_vmovltq_u16): Remove.
11450 (__arm_vmovlbq_u8): Remove.
11451 (__arm_vmovlbq_u16): Remove.
11452 (__arm_vmovlbq_m_s8): Remove.
11453 (__arm_vmovltq_m_s8): Remove.
11454 (__arm_vmovlbq_m_u8): Remove.
11455 (__arm_vmovltq_m_u8): Remove.
11456 (__arm_vmovlbq_m_s16): Remove.
11457 (__arm_vmovltq_m_s16): Remove.
11458 (__arm_vmovlbq_m_u16): Remove.
11459 (__arm_vmovltq_m_u16): Remove.
11460 (__arm_vmovlbq_x_s8): Remove.
11461 (__arm_vmovlbq_x_s16): Remove.
11462 (__arm_vmovlbq_x_u8): Remove.
11463 (__arm_vmovlbq_x_u16): Remove.
11464 (__arm_vmovltq_x_s8): Remove.
11465 (__arm_vmovltq_x_s16): Remove.
11466 (__arm_vmovltq_x_u8): Remove.
11467 (__arm_vmovltq_x_u16): Remove.
11468 (__arm_vmovlbq): Remove.
11469 (__arm_vmovltq): Remove.
11470 (__arm_vmovlbq_m): Remove.
11471 (__arm_vmovltq_m): Remove.
11472 (__arm_vmovlbq_x): Remove.
11473 (__arm_vmovltq_x): Remove.
11475 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11477 * config/arm/arm-mve-builtins-shapes.cc (unary_widen): New.
11478 * config/arm/arm-mve-builtins-shapes.h (unary_widen): New.
11480 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11482 * config/arm/iterators.md (mve_insn): Add vmovlb, vmovlt.
11483 (VMOVLBQ, VMOVLTQ): Merge into ...
11484 (VMOVLxQ): ... this.
11485 (VMOVLTQ_M, VMOVLBQ_M): Merge into ...
11486 (VMOVLxQ_M): ... this.
11487 * config/arm/mve.md (mve_vmovltq_<supf><mode>)
11488 (mve_vmovlbq_<supf><mode>): Merge into ...
11489 (@mve_<mve_insn>q_<supf><mode>): ... this.
11490 (mve_vmovlbq_m_<supf><mode>, mve_vmovltq_m_<supf><mode>): Merge
11492 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
11494 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11496 * config/arm/arm-mve-builtins-base.cc (vaddlvq): New.
11497 * config/arm/arm-mve-builtins-base.def (vaddlvq): New.
11498 * config/arm/arm-mve-builtins-base.h (vaddlvq): New.
11499 * config/arm/arm-mve-builtins-functions.h
11500 (unspec_mve_function_exact_insn_pred_p): Handle vaddlvq.
11501 * config/arm/arm_mve.h (vaddlvq): Remove.
11502 (vaddlvq_p): Remove.
11503 (vaddlvq_s32): Remove.
11504 (vaddlvq_u32): Remove.
11505 (vaddlvq_p_s32): Remove.
11506 (vaddlvq_p_u32): Remove.
11507 (__arm_vaddlvq_s32): Remove.
11508 (__arm_vaddlvq_u32): Remove.
11509 (__arm_vaddlvq_p_s32): Remove.
11510 (__arm_vaddlvq_p_u32): Remove.
11511 (__arm_vaddlvq): Remove.
11512 (__arm_vaddlvq_p): Remove.
11514 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11516 * config/arm/iterators.md (mve_insn): Add vaddlv.
11517 * config/arm/mve.md (mve_vaddlvq_<supf>v4si): Rename into ...
11518 (@mve_<mve_insn>q_<supf>v4si): ... this.
11519 (mve_vaddlvq_p_<supf>v4si): Rename into ...
11520 (@mve_<mve_insn>q_p_<supf>v4si): ... this.
11522 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11524 * config/arm/arm-mve-builtins-shapes.cc (unary_acc): New.
11525 * config/arm/arm-mve-builtins-shapes.h (unary_acc): New.
11527 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11529 * config/arm/arm-mve-builtins-base.cc (vaddvaq): New.
11530 * config/arm/arm-mve-builtins-base.def (vaddvaq): New.
11531 * config/arm/arm-mve-builtins-base.h (vaddvaq): New.
11532 * config/arm/arm_mve.h (vaddvaq): Remove.
11533 (vaddvaq_p): Remove.
11534 (vaddvaq_u8): Remove.
11535 (vaddvaq_s8): Remove.
11536 (vaddvaq_u16): Remove.
11537 (vaddvaq_s16): Remove.
11538 (vaddvaq_u32): Remove.
11539 (vaddvaq_s32): Remove.
11540 (vaddvaq_p_u8): Remove.
11541 (vaddvaq_p_s8): Remove.
11542 (vaddvaq_p_u16): Remove.
11543 (vaddvaq_p_s16): Remove.
11544 (vaddvaq_p_u32): Remove.
11545 (vaddvaq_p_s32): Remove.
11546 (__arm_vaddvaq_u8): Remove.
11547 (__arm_vaddvaq_s8): Remove.
11548 (__arm_vaddvaq_u16): Remove.
11549 (__arm_vaddvaq_s16): Remove.
11550 (__arm_vaddvaq_u32): Remove.
11551 (__arm_vaddvaq_s32): Remove.
11552 (__arm_vaddvaq_p_u8): Remove.
11553 (__arm_vaddvaq_p_s8): Remove.
11554 (__arm_vaddvaq_p_u16): Remove.
11555 (__arm_vaddvaq_p_s16): Remove.
11556 (__arm_vaddvaq_p_u32): Remove.
11557 (__arm_vaddvaq_p_s32): Remove.
11558 (__arm_vaddvaq): Remove.
11559 (__arm_vaddvaq_p): Remove.
11561 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11563 * config/arm/arm-mve-builtins-shapes.cc (unary_int32_acc): New.
11564 * config/arm/arm-mve-builtins-shapes.h (unary_int32_acc): New.
11566 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11568 * config/arm/iterators.md (mve_insn): Add vaddva.
11569 * config/arm/mve.md (mve_vaddvaq_<supf><mode>): Rename into ...
11570 (@mve_<mve_insn>q_<supf><mode>): ... this.
11571 (mve_vaddvaq_p_<supf><mode>): Rename into ...
11572 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
11574 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11576 * config/arm/arm-mve-builtins-base.cc (vaddvq): New.
11577 * config/arm/arm-mve-builtins-base.def (vaddvq): New.
11578 * config/arm/arm-mve-builtins-base.h (vaddvq): New.
11579 * config/arm/arm_mve.h (vaddvq): Remove.
11580 (vaddvq_p): Remove.
11581 (vaddvq_s8): Remove.
11582 (vaddvq_s16): Remove.
11583 (vaddvq_s32): Remove.
11584 (vaddvq_u8): Remove.
11585 (vaddvq_u16): Remove.
11586 (vaddvq_u32): Remove.
11587 (vaddvq_p_u8): Remove.
11588 (vaddvq_p_s8): Remove.
11589 (vaddvq_p_u16): Remove.
11590 (vaddvq_p_s16): Remove.
11591 (vaddvq_p_u32): Remove.
11592 (vaddvq_p_s32): Remove.
11593 (__arm_vaddvq_s8): Remove.
11594 (__arm_vaddvq_s16): Remove.
11595 (__arm_vaddvq_s32): Remove.
11596 (__arm_vaddvq_u8): Remove.
11597 (__arm_vaddvq_u16): Remove.
11598 (__arm_vaddvq_u32): Remove.
11599 (__arm_vaddvq_p_u8): Remove.
11600 (__arm_vaddvq_p_s8): Remove.
11601 (__arm_vaddvq_p_u16): Remove.
11602 (__arm_vaddvq_p_s16): Remove.
11603 (__arm_vaddvq_p_u32): Remove.
11604 (__arm_vaddvq_p_s32): Remove.
11605 (__arm_vaddvq): Remove.
11606 (__arm_vaddvq_p): Remove.
11608 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11610 * config/arm/arm-mve-builtins-shapes.cc (unary_int32): New.
11611 * config/arm/arm-mve-builtins-shapes.h (unary_int32): New.
11613 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11615 * config/arm/iterators.md (mve_insn): Add vaddv.
11616 * config/arm/mve.md (@mve_vaddvq_<supf><mode>): Rename into ...
11617 (@mve_<mve_insn>q_<supf><mode>): ... this.
11618 (mve_vaddvq_p_<supf><mode>): Rename into ...
11619 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
11620 * config/arm/vec-common.md: Use gen_mve_q instead of
11623 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11625 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New.
11627 * config/arm/arm-mve-builtins-base.def (vdupq): New.
11628 * config/arm/arm-mve-builtins-base.h: (vdupq): New.
11629 * config/arm/arm_mve.h (vdupq_n): Remove.
11631 (vdupq_n_f16): Remove.
11632 (vdupq_n_f32): Remove.
11633 (vdupq_n_s8): Remove.
11634 (vdupq_n_s16): Remove.
11635 (vdupq_n_s32): Remove.
11636 (vdupq_n_u8): Remove.
11637 (vdupq_n_u16): Remove.
11638 (vdupq_n_u32): Remove.
11639 (vdupq_m_n_u8): Remove.
11640 (vdupq_m_n_s8): Remove.
11641 (vdupq_m_n_u16): Remove.
11642 (vdupq_m_n_s16): Remove.
11643 (vdupq_m_n_u32): Remove.
11644 (vdupq_m_n_s32): Remove.
11645 (vdupq_m_n_f16): Remove.
11646 (vdupq_m_n_f32): Remove.
11647 (vdupq_x_n_s8): Remove.
11648 (vdupq_x_n_s16): Remove.
11649 (vdupq_x_n_s32): Remove.
11650 (vdupq_x_n_u8): Remove.
11651 (vdupq_x_n_u16): Remove.
11652 (vdupq_x_n_u32): Remove.
11653 (vdupq_x_n_f16): Remove.
11654 (vdupq_x_n_f32): Remove.
11655 (__arm_vdupq_n_s8): Remove.
11656 (__arm_vdupq_n_s16): Remove.
11657 (__arm_vdupq_n_s32): Remove.
11658 (__arm_vdupq_n_u8): Remove.
11659 (__arm_vdupq_n_u16): Remove.
11660 (__arm_vdupq_n_u32): Remove.
11661 (__arm_vdupq_m_n_u8): Remove.
11662 (__arm_vdupq_m_n_s8): Remove.
11663 (__arm_vdupq_m_n_u16): Remove.
11664 (__arm_vdupq_m_n_s16): Remove.
11665 (__arm_vdupq_m_n_u32): Remove.
11666 (__arm_vdupq_m_n_s32): Remove.
11667 (__arm_vdupq_x_n_s8): Remove.
11668 (__arm_vdupq_x_n_s16): Remove.
11669 (__arm_vdupq_x_n_s32): Remove.
11670 (__arm_vdupq_x_n_u8): Remove.
11671 (__arm_vdupq_x_n_u16): Remove.
11672 (__arm_vdupq_x_n_u32): Remove.
11673 (__arm_vdupq_n_f16): Remove.
11674 (__arm_vdupq_n_f32): Remove.
11675 (__arm_vdupq_m_n_f16): Remove.
11676 (__arm_vdupq_m_n_f32): Remove.
11677 (__arm_vdupq_x_n_f16): Remove.
11678 (__arm_vdupq_x_n_f32): Remove.
11679 (__arm_vdupq_n): Remove.
11680 (__arm_vdupq_m): Remove.
11682 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11684 * config/arm/arm-mve-builtins-shapes.cc (unary_n): New.
11685 * config/arm/arm-mve-builtins-shapes.h (unary_n): New.
11687 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11689 * config/arm/iterators.md (MVE_FP_M_N_VDUPQ_ONLY)
11690 (MVE_FP_N_VDUPQ_ONLY): New.
11691 (mve_insn): Add vdupq.
11692 * config/arm/mve.md (mve_vdupq_n_f<mode>): Rename into ...
11693 (@mve_<mve_insn>q_n_f<mode>): ... this.
11694 (mve_vdupq_n_<supf><mode>): Rename into ...
11695 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
11696 (mve_vdupq_m_n_<supf><mode>): Rename into ...
11697 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
11698 (mve_vdupq_m_n_f<mode>): Rename into ...
11699 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
11701 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11703 * config/arm/arm-mve-builtins-base.cc (vrev16q, vrev32q, vrev64q):
11705 * config/arm/arm-mve-builtins-base.def (vrev16q, vrev32q)
11707 * config/arm/arm-mve-builtins-base.h (vrev16q, vrev32q)
11709 * config/arm/arm_mve.h (vrev16q): Remove.
11712 (vrev64q_m): Remove.
11713 (vrev16q_m): Remove.
11714 (vrev32q_m): Remove.
11715 (vrev16q_x): Remove.
11716 (vrev32q_x): Remove.
11717 (vrev64q_x): Remove.
11718 (vrev64q_f16): Remove.
11719 (vrev64q_f32): Remove.
11720 (vrev32q_f16): Remove.
11721 (vrev16q_s8): Remove.
11722 (vrev32q_s8): Remove.
11723 (vrev32q_s16): Remove.
11724 (vrev64q_s8): Remove.
11725 (vrev64q_s16): Remove.
11726 (vrev64q_s32): Remove.
11727 (vrev64q_u8): Remove.
11728 (vrev64q_u16): Remove.
11729 (vrev64q_u32): Remove.
11730 (vrev32q_u8): Remove.
11731 (vrev32q_u16): Remove.
11732 (vrev16q_u8): Remove.
11733 (vrev64q_m_u8): Remove.
11734 (vrev64q_m_s8): Remove.
11735 (vrev64q_m_u16): Remove.
11736 (vrev64q_m_s16): Remove.
11737 (vrev64q_m_u32): Remove.
11738 (vrev64q_m_s32): Remove.
11739 (vrev16q_m_s8): Remove.
11740 (vrev32q_m_f16): Remove.
11741 (vrev16q_m_u8): Remove.
11742 (vrev32q_m_s8): Remove.
11743 (vrev64q_m_f16): Remove.
11744 (vrev32q_m_u8): Remove.
11745 (vrev32q_m_s16): Remove.
11746 (vrev64q_m_f32): Remove.
11747 (vrev32q_m_u16): Remove.
11748 (vrev16q_x_s8): Remove.
11749 (vrev16q_x_u8): Remove.
11750 (vrev32q_x_s8): Remove.
11751 (vrev32q_x_s16): Remove.
11752 (vrev32q_x_u8): Remove.
11753 (vrev32q_x_u16): Remove.
11754 (vrev64q_x_s8): Remove.
11755 (vrev64q_x_s16): Remove.
11756 (vrev64q_x_s32): Remove.
11757 (vrev64q_x_u8): Remove.
11758 (vrev64q_x_u16): Remove.
11759 (vrev64q_x_u32): Remove.
11760 (vrev32q_x_f16): Remove.
11761 (vrev64q_x_f16): Remove.
11762 (vrev64q_x_f32): Remove.
11763 (__arm_vrev16q_s8): Remove.
11764 (__arm_vrev32q_s8): Remove.
11765 (__arm_vrev32q_s16): Remove.
11766 (__arm_vrev64q_s8): Remove.
11767 (__arm_vrev64q_s16): Remove.
11768 (__arm_vrev64q_s32): Remove.
11769 (__arm_vrev64q_u8): Remove.
11770 (__arm_vrev64q_u16): Remove.
11771 (__arm_vrev64q_u32): Remove.
11772 (__arm_vrev32q_u8): Remove.
11773 (__arm_vrev32q_u16): Remove.
11774 (__arm_vrev16q_u8): Remove.
11775 (__arm_vrev64q_m_u8): Remove.
11776 (__arm_vrev64q_m_s8): Remove.
11777 (__arm_vrev64q_m_u16): Remove.
11778 (__arm_vrev64q_m_s16): Remove.
11779 (__arm_vrev64q_m_u32): Remove.
11780 (__arm_vrev64q_m_s32): Remove.
11781 (__arm_vrev16q_m_s8): Remove.
11782 (__arm_vrev16q_m_u8): Remove.
11783 (__arm_vrev32q_m_s8): Remove.
11784 (__arm_vrev32q_m_u8): Remove.
11785 (__arm_vrev32q_m_s16): Remove.
11786 (__arm_vrev32q_m_u16): Remove.
11787 (__arm_vrev16q_x_s8): Remove.
11788 (__arm_vrev16q_x_u8): Remove.
11789 (__arm_vrev32q_x_s8): Remove.
11790 (__arm_vrev32q_x_s16): Remove.
11791 (__arm_vrev32q_x_u8): Remove.
11792 (__arm_vrev32q_x_u16): Remove.
11793 (__arm_vrev64q_x_s8): Remove.
11794 (__arm_vrev64q_x_s16): Remove.
11795 (__arm_vrev64q_x_s32): Remove.
11796 (__arm_vrev64q_x_u8): Remove.
11797 (__arm_vrev64q_x_u16): Remove.
11798 (__arm_vrev64q_x_u32): Remove.
11799 (__arm_vrev64q_f16): Remove.
11800 (__arm_vrev64q_f32): Remove.
11801 (__arm_vrev32q_f16): Remove.
11802 (__arm_vrev32q_m_f16): Remove.
11803 (__arm_vrev64q_m_f16): Remove.
11804 (__arm_vrev64q_m_f32): Remove.
11805 (__arm_vrev32q_x_f16): Remove.
11806 (__arm_vrev64q_x_f16): Remove.
11807 (__arm_vrev64q_x_f32): Remove.
11808 (__arm_vrev16q): Remove.
11809 (__arm_vrev32q): Remove.
11810 (__arm_vrev64q): Remove.
11811 (__arm_vrev64q_m): Remove.
11812 (__arm_vrev16q_m): Remove.
11813 (__arm_vrev32q_m): Remove.
11814 (__arm_vrev16q_x): Remove.
11815 (__arm_vrev32q_x): Remove.
11816 (__arm_vrev64q_x): Remove.
11818 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11820 * config/arm/iterators.md (MVE_V8HF, MVE_V16QI)
11821 (MVE_FP_VREV64Q_ONLY, MVE_FP_M_VREV64Q_ONLY, MVE_FP_VREV32Q_ONLY)
11822 (MVE_FP_M_VREV32Q_ONLY): New iterators.
11823 (mve_insn): Add vrev16q, vrev32q, vrev64q.
11824 * config/arm/mve.md (mve_vrev64q_f<mode>): Rename into ...
11825 (@mve_<mve_insn>q_f<mode>): ... this
11826 (mve_vrev32q_fv8hf): Rename into @mve_<mve_insn>q_f<mode>.
11827 (mve_vrev64q_<supf><mode>): Rename into ...
11828 (@mve_<mve_insn>q_<supf><mode>): ... this.
11829 (mve_vrev32q_<supf><mode>): Rename into
11830 @mve_<mve_insn>q_<supf><mode>.
11831 (mve_vrev16q_<supf>v16qi): Rename into
11832 @mve_<mve_insn>q_<supf><mode>.
11833 (mve_vrev64q_m_<supf><mode>): Rename into
11834 @mve_<mve_insn>q_m_<supf><mode>.
11835 (mve_vrev32q_m_fv8hf): Rename into @mve_<mve_insn>q_m_f<mode>.
11836 (mve_vrev32q_m_<supf><mode>): Rename into
11837 @mve_<mve_insn>q_m_<supf><mode>.
11838 (mve_vrev64q_m_f<mode>): Rename into @mve_<mve_insn>q_m_f<mode>.
11839 (mve_vrev16q_m_<supf>v16qi): Rename into
11840 @mve_<mve_insn>q_m_<supf><mode>.
11842 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
11844 * config/arm/arm-mve-builtins-base.cc (vcmpeqq, vcmpneq, vcmpgeq)
11845 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
11846 * config/arm/arm-mve-builtins-base.def (vcmpeqq, vcmpneq, vcmpgeq)
11847 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
11848 * config/arm/arm-mve-builtins-base.h (vcmpeqq, vcmpneq, vcmpgeq)
11849 (vcmpgtq, vcmpleq, vcmpltq, vcmpcsq, vcmphiq): New.
11850 * config/arm/arm-mve-builtins-functions.h (class
11851 unspec_based_mve_function_exact_insn_vcmp): New.
11852 * config/arm/arm-mve-builtins.cc
11853 (function_instance::has_inactive_argument): Handle vcmp.
11854 * config/arm/arm_mve.h (vcmpneq): Remove.
11862 (vcmpneq_m): Remove.
11863 (vcmphiq_m): Remove.
11864 (vcmpeqq_m): Remove.
11865 (vcmpcsq_m): Remove.
11866 (vcmpcsq_m_n): Remove.
11867 (vcmpltq_m): Remove.
11868 (vcmpleq_m): Remove.
11869 (vcmpgtq_m): Remove.
11870 (vcmpgeq_m): Remove.
11871 (vcmpneq_s8): Remove.
11872 (vcmpneq_s16): Remove.
11873 (vcmpneq_s32): Remove.
11874 (vcmpneq_u8): Remove.
11875 (vcmpneq_u16): Remove.
11876 (vcmpneq_u32): Remove.
11877 (vcmpneq_n_u8): Remove.
11878 (vcmphiq_u8): Remove.
11879 (vcmphiq_n_u8): Remove.
11880 (vcmpeqq_u8): Remove.
11881 (vcmpeqq_n_u8): Remove.
11882 (vcmpcsq_u8): Remove.
11883 (vcmpcsq_n_u8): Remove.
11884 (vcmpneq_n_s8): Remove.
11885 (vcmpltq_s8): Remove.
11886 (vcmpltq_n_s8): Remove.
11887 (vcmpleq_s8): Remove.
11888 (vcmpleq_n_s8): Remove.
11889 (vcmpgtq_s8): Remove.
11890 (vcmpgtq_n_s8): Remove.
11891 (vcmpgeq_s8): Remove.
11892 (vcmpgeq_n_s8): Remove.
11893 (vcmpeqq_s8): Remove.
11894 (vcmpeqq_n_s8): Remove.
11895 (vcmpneq_n_u16): Remove.
11896 (vcmphiq_u16): Remove.
11897 (vcmphiq_n_u16): Remove.
11898 (vcmpeqq_u16): Remove.
11899 (vcmpeqq_n_u16): Remove.
11900 (vcmpcsq_u16): Remove.
11901 (vcmpcsq_n_u16): Remove.
11902 (vcmpneq_n_s16): Remove.
11903 (vcmpltq_s16): Remove.
11904 (vcmpltq_n_s16): Remove.
11905 (vcmpleq_s16): Remove.
11906 (vcmpleq_n_s16): Remove.
11907 (vcmpgtq_s16): Remove.
11908 (vcmpgtq_n_s16): Remove.
11909 (vcmpgeq_s16): Remove.
11910 (vcmpgeq_n_s16): Remove.
11911 (vcmpeqq_s16): Remove.
11912 (vcmpeqq_n_s16): Remove.
11913 (vcmpneq_n_u32): Remove.
11914 (vcmphiq_u32): Remove.
11915 (vcmphiq_n_u32): Remove.
11916 (vcmpeqq_u32): Remove.
11917 (vcmpeqq_n_u32): Remove.
11918 (vcmpcsq_u32): Remove.
11919 (vcmpcsq_n_u32): Remove.
11920 (vcmpneq_n_s32): Remove.
11921 (vcmpltq_s32): Remove.
11922 (vcmpltq_n_s32): Remove.
11923 (vcmpleq_s32): Remove.
11924 (vcmpleq_n_s32): Remove.
11925 (vcmpgtq_s32): Remove.
11926 (vcmpgtq_n_s32): Remove.
11927 (vcmpgeq_s32): Remove.
11928 (vcmpgeq_n_s32): Remove.
11929 (vcmpeqq_s32): Remove.
11930 (vcmpeqq_n_s32): Remove.
11931 (vcmpneq_n_f16): Remove.
11932 (vcmpneq_f16): Remove.
11933 (vcmpltq_n_f16): Remove.
11934 (vcmpltq_f16): Remove.
11935 (vcmpleq_n_f16): Remove.
11936 (vcmpleq_f16): Remove.
11937 (vcmpgtq_n_f16): Remove.
11938 (vcmpgtq_f16): Remove.
11939 (vcmpgeq_n_f16): Remove.
11940 (vcmpgeq_f16): Remove.
11941 (vcmpeqq_n_f16): Remove.
11942 (vcmpeqq_f16): Remove.
11943 (vcmpneq_n_f32): Remove.
11944 (vcmpneq_f32): Remove.
11945 (vcmpltq_n_f32): Remove.
11946 (vcmpltq_f32): Remove.
11947 (vcmpleq_n_f32): Remove.
11948 (vcmpleq_f32): Remove.
11949 (vcmpgtq_n_f32): Remove.
11950 (vcmpgtq_f32): Remove.
11951 (vcmpgeq_n_f32): Remove.
11952 (vcmpgeq_f32): Remove.
11953 (vcmpeqq_n_f32): Remove.
11954 (vcmpeqq_f32): Remove.
11955 (vcmpeqq_m_f16): Remove.
11956 (vcmpeqq_m_f32): Remove.
11957 (vcmpneq_m_u8): Remove.
11958 (vcmpneq_m_n_u8): Remove.
11959 (vcmphiq_m_u8): Remove.
11960 (vcmphiq_m_n_u8): Remove.
11961 (vcmpeqq_m_u8): Remove.
11962 (vcmpeqq_m_n_u8): Remove.
11963 (vcmpcsq_m_u8): Remove.
11964 (vcmpcsq_m_n_u8): Remove.
11965 (vcmpneq_m_s8): Remove.
11966 (vcmpneq_m_n_s8): Remove.
11967 (vcmpltq_m_s8): Remove.
11968 (vcmpltq_m_n_s8): Remove.
11969 (vcmpleq_m_s8): Remove.
11970 (vcmpleq_m_n_s8): Remove.
11971 (vcmpgtq_m_s8): Remove.
11972 (vcmpgtq_m_n_s8): Remove.
11973 (vcmpgeq_m_s8): Remove.
11974 (vcmpgeq_m_n_s8): Remove.
11975 (vcmpeqq_m_s8): Remove.
11976 (vcmpeqq_m_n_s8): Remove.
11977 (vcmpneq_m_u16): Remove.
11978 (vcmpneq_m_n_u16): Remove.
11979 (vcmphiq_m_u16): Remove.
11980 (vcmphiq_m_n_u16): Remove.
11981 (vcmpeqq_m_u16): Remove.
11982 (vcmpeqq_m_n_u16): Remove.
11983 (vcmpcsq_m_u16): Remove.
11984 (vcmpcsq_m_n_u16): Remove.
11985 (vcmpneq_m_s16): Remove.
11986 (vcmpneq_m_n_s16): Remove.
11987 (vcmpltq_m_s16): Remove.
11988 (vcmpltq_m_n_s16): Remove.
11989 (vcmpleq_m_s16): Remove.
11990 (vcmpleq_m_n_s16): Remove.
11991 (vcmpgtq_m_s16): Remove.
11992 (vcmpgtq_m_n_s16): Remove.
11993 (vcmpgeq_m_s16): Remove.
11994 (vcmpgeq_m_n_s16): Remove.
11995 (vcmpeqq_m_s16): Remove.
11996 (vcmpeqq_m_n_s16): Remove.
11997 (vcmpneq_m_u32): Remove.
11998 (vcmpneq_m_n_u32): Remove.
11999 (vcmphiq_m_u32): Remove.
12000 (vcmphiq_m_n_u32): Remove.
12001 (vcmpeqq_m_u32): Remove.
12002 (vcmpeqq_m_n_u32): Remove.
12003 (vcmpcsq_m_u32): Remove.
12004 (vcmpcsq_m_n_u32): Remove.
12005 (vcmpneq_m_s32): Remove.
12006 (vcmpneq_m_n_s32): Remove.
12007 (vcmpltq_m_s32): Remove.
12008 (vcmpltq_m_n_s32): Remove.
12009 (vcmpleq_m_s32): Remove.
12010 (vcmpleq_m_n_s32): Remove.
12011 (vcmpgtq_m_s32): Remove.
12012 (vcmpgtq_m_n_s32): Remove.
12013 (vcmpgeq_m_s32): Remove.
12014 (vcmpgeq_m_n_s32): Remove.
12015 (vcmpeqq_m_s32): Remove.
12016 (vcmpeqq_m_n_s32): Remove.
12017 (vcmpeqq_m_n_f16): Remove.
12018 (vcmpgeq_m_f16): Remove.
12019 (vcmpgeq_m_n_f16): Remove.
12020 (vcmpgtq_m_f16): Remove.
12021 (vcmpgtq_m_n_f16): Remove.
12022 (vcmpleq_m_f16): Remove.
12023 (vcmpleq_m_n_f16): Remove.
12024 (vcmpltq_m_f16): Remove.
12025 (vcmpltq_m_n_f16): Remove.
12026 (vcmpneq_m_f16): Remove.
12027 (vcmpneq_m_n_f16): Remove.
12028 (vcmpeqq_m_n_f32): Remove.
12029 (vcmpgeq_m_f32): Remove.
12030 (vcmpgeq_m_n_f32): Remove.
12031 (vcmpgtq_m_f32): Remove.
12032 (vcmpgtq_m_n_f32): Remove.
12033 (vcmpleq_m_f32): Remove.
12034 (vcmpleq_m_n_f32): Remove.
12035 (vcmpltq_m_f32): Remove.
12036 (vcmpltq_m_n_f32): Remove.
12037 (vcmpneq_m_f32): Remove.
12038 (vcmpneq_m_n_f32): Remove.
12039 (__arm_vcmpneq_s8): Remove.
12040 (__arm_vcmpneq_s16): Remove.
12041 (__arm_vcmpneq_s32): Remove.
12042 (__arm_vcmpneq_u8): Remove.
12043 (__arm_vcmpneq_u16): Remove.
12044 (__arm_vcmpneq_u32): Remove.
12045 (__arm_vcmpneq_n_u8): Remove.
12046 (__arm_vcmphiq_u8): Remove.
12047 (__arm_vcmphiq_n_u8): Remove.
12048 (__arm_vcmpeqq_u8): Remove.
12049 (__arm_vcmpeqq_n_u8): Remove.
12050 (__arm_vcmpcsq_u8): Remove.
12051 (__arm_vcmpcsq_n_u8): Remove.
12052 (__arm_vcmpneq_n_s8): Remove.
12053 (__arm_vcmpltq_s8): Remove.
12054 (__arm_vcmpltq_n_s8): Remove.
12055 (__arm_vcmpleq_s8): Remove.
12056 (__arm_vcmpleq_n_s8): Remove.
12057 (__arm_vcmpgtq_s8): Remove.
12058 (__arm_vcmpgtq_n_s8): Remove.
12059 (__arm_vcmpgeq_s8): Remove.
12060 (__arm_vcmpgeq_n_s8): Remove.
12061 (__arm_vcmpeqq_s8): Remove.
12062 (__arm_vcmpeqq_n_s8): Remove.
12063 (__arm_vcmpneq_n_u16): Remove.
12064 (__arm_vcmphiq_u16): Remove.
12065 (__arm_vcmphiq_n_u16): Remove.
12066 (__arm_vcmpeqq_u16): Remove.
12067 (__arm_vcmpeqq_n_u16): Remove.
12068 (__arm_vcmpcsq_u16): Remove.
12069 (__arm_vcmpcsq_n_u16): Remove.
12070 (__arm_vcmpneq_n_s16): Remove.
12071 (__arm_vcmpltq_s16): Remove.
12072 (__arm_vcmpltq_n_s16): Remove.
12073 (__arm_vcmpleq_s16): Remove.
12074 (__arm_vcmpleq_n_s16): Remove.
12075 (__arm_vcmpgtq_s16): Remove.
12076 (__arm_vcmpgtq_n_s16): Remove.
12077 (__arm_vcmpgeq_s16): Remove.
12078 (__arm_vcmpgeq_n_s16): Remove.
12079 (__arm_vcmpeqq_s16): Remove.
12080 (__arm_vcmpeqq_n_s16): Remove.
12081 (__arm_vcmpneq_n_u32): Remove.
12082 (__arm_vcmphiq_u32): Remove.
12083 (__arm_vcmphiq_n_u32): Remove.
12084 (__arm_vcmpeqq_u32): Remove.
12085 (__arm_vcmpeqq_n_u32): Remove.
12086 (__arm_vcmpcsq_u32): Remove.
12087 (__arm_vcmpcsq_n_u32): Remove.
12088 (__arm_vcmpneq_n_s32): Remove.
12089 (__arm_vcmpltq_s32): Remove.
12090 (__arm_vcmpltq_n_s32): Remove.
12091 (__arm_vcmpleq_s32): Remove.
12092 (__arm_vcmpleq_n_s32): Remove.
12093 (__arm_vcmpgtq_s32): Remove.
12094 (__arm_vcmpgtq_n_s32): Remove.
12095 (__arm_vcmpgeq_s32): Remove.
12096 (__arm_vcmpgeq_n_s32): Remove.
12097 (__arm_vcmpeqq_s32): Remove.
12098 (__arm_vcmpeqq_n_s32): Remove.
12099 (__arm_vcmpneq_m_u8): Remove.
12100 (__arm_vcmpneq_m_n_u8): Remove.
12101 (__arm_vcmphiq_m_u8): Remove.
12102 (__arm_vcmphiq_m_n_u8): Remove.
12103 (__arm_vcmpeqq_m_u8): Remove.
12104 (__arm_vcmpeqq_m_n_u8): Remove.
12105 (__arm_vcmpcsq_m_u8): Remove.
12106 (__arm_vcmpcsq_m_n_u8): Remove.
12107 (__arm_vcmpneq_m_s8): Remove.
12108 (__arm_vcmpneq_m_n_s8): Remove.
12109 (__arm_vcmpltq_m_s8): Remove.
12110 (__arm_vcmpltq_m_n_s8): Remove.
12111 (__arm_vcmpleq_m_s8): Remove.
12112 (__arm_vcmpleq_m_n_s8): Remove.
12113 (__arm_vcmpgtq_m_s8): Remove.
12114 (__arm_vcmpgtq_m_n_s8): Remove.
12115 (__arm_vcmpgeq_m_s8): Remove.
12116 (__arm_vcmpgeq_m_n_s8): Remove.
12117 (__arm_vcmpeqq_m_s8): Remove.
12118 (__arm_vcmpeqq_m_n_s8): Remove.
12119 (__arm_vcmpneq_m_u16): Remove.
12120 (__arm_vcmpneq_m_n_u16): Remove.
12121 (__arm_vcmphiq_m_u16): Remove.
12122 (__arm_vcmphiq_m_n_u16): Remove.
12123 (__arm_vcmpeqq_m_u16): Remove.
12124 (__arm_vcmpeqq_m_n_u16): Remove.
12125 (__arm_vcmpcsq_m_u16): Remove.
12126 (__arm_vcmpcsq_m_n_u16): Remove.
12127 (__arm_vcmpneq_m_s16): Remove.
12128 (__arm_vcmpneq_m_n_s16): Remove.
12129 (__arm_vcmpltq_m_s16): Remove.
12130 (__arm_vcmpltq_m_n_s16): Remove.
12131 (__arm_vcmpleq_m_s16): Remove.
12132 (__arm_vcmpleq_m_n_s16): Remove.
12133 (__arm_vcmpgtq_m_s16): Remove.
12134 (__arm_vcmpgtq_m_n_s16): Remove.
12135 (__arm_vcmpgeq_m_s16): Remove.
12136 (__arm_vcmpgeq_m_n_s16): Remove.
12137 (__arm_vcmpeqq_m_s16): Remove.
12138 (__arm_vcmpeqq_m_n_s16): Remove.
12139 (__arm_vcmpneq_m_u32): Remove.
12140 (__arm_vcmpneq_m_n_u32): Remove.
12141 (__arm_vcmphiq_m_u32): Remove.
12142 (__arm_vcmphiq_m_n_u32): Remove.
12143 (__arm_vcmpeqq_m_u32): Remove.
12144 (__arm_vcmpeqq_m_n_u32): Remove.
12145 (__arm_vcmpcsq_m_u32): Remove.
12146 (__arm_vcmpcsq_m_n_u32): Remove.
12147 (__arm_vcmpneq_m_s32): Remove.
12148 (__arm_vcmpneq_m_n_s32): Remove.
12149 (__arm_vcmpltq_m_s32): Remove.
12150 (__arm_vcmpltq_m_n_s32): Remove.
12151 (__arm_vcmpleq_m_s32): Remove.
12152 (__arm_vcmpleq_m_n_s32): Remove.
12153 (__arm_vcmpgtq_m_s32): Remove.
12154 (__arm_vcmpgtq_m_n_s32): Remove.
12155 (__arm_vcmpgeq_m_s32): Remove.
12156 (__arm_vcmpgeq_m_n_s32): Remove.
12157 (__arm_vcmpeqq_m_s32): Remove.
12158 (__arm_vcmpeqq_m_n_s32): Remove.
12159 (__arm_vcmpneq_n_f16): Remove.
12160 (__arm_vcmpneq_f16): Remove.
12161 (__arm_vcmpltq_n_f16): Remove.
12162 (__arm_vcmpltq_f16): Remove.
12163 (__arm_vcmpleq_n_f16): Remove.
12164 (__arm_vcmpleq_f16): Remove.
12165 (__arm_vcmpgtq_n_f16): Remove.
12166 (__arm_vcmpgtq_f16): Remove.
12167 (__arm_vcmpgeq_n_f16): Remove.
12168 (__arm_vcmpgeq_f16): Remove.
12169 (__arm_vcmpeqq_n_f16): Remove.
12170 (__arm_vcmpeqq_f16): Remove.
12171 (__arm_vcmpneq_n_f32): Remove.
12172 (__arm_vcmpneq_f32): Remove.
12173 (__arm_vcmpltq_n_f32): Remove.
12174 (__arm_vcmpltq_f32): Remove.
12175 (__arm_vcmpleq_n_f32): Remove.
12176 (__arm_vcmpleq_f32): Remove.
12177 (__arm_vcmpgtq_n_f32): Remove.
12178 (__arm_vcmpgtq_f32): Remove.
12179 (__arm_vcmpgeq_n_f32): Remove.
12180 (__arm_vcmpgeq_f32): Remove.
12181 (__arm_vcmpeqq_n_f32): Remove.
12182 (__arm_vcmpeqq_f32): Remove.
12183 (__arm_vcmpeqq_m_f16): Remove.
12184 (__arm_vcmpeqq_m_f32): Remove.
12185 (__arm_vcmpeqq_m_n_f16): Remove.
12186 (__arm_vcmpgeq_m_f16): Remove.
12187 (__arm_vcmpgeq_m_n_f16): Remove.
12188 (__arm_vcmpgtq_m_f16): Remove.
12189 (__arm_vcmpgtq_m_n_f16): Remove.
12190 (__arm_vcmpleq_m_f16): Remove.
12191 (__arm_vcmpleq_m_n_f16): Remove.
12192 (__arm_vcmpltq_m_f16): Remove.
12193 (__arm_vcmpltq_m_n_f16): Remove.
12194 (__arm_vcmpneq_m_f16): Remove.
12195 (__arm_vcmpneq_m_n_f16): Remove.
12196 (__arm_vcmpeqq_m_n_f32): Remove.
12197 (__arm_vcmpgeq_m_f32): Remove.
12198 (__arm_vcmpgeq_m_n_f32): Remove.
12199 (__arm_vcmpgtq_m_f32): Remove.
12200 (__arm_vcmpgtq_m_n_f32): Remove.
12201 (__arm_vcmpleq_m_f32): Remove.
12202 (__arm_vcmpleq_m_n_f32): Remove.
12203 (__arm_vcmpltq_m_f32): Remove.
12204 (__arm_vcmpltq_m_n_f32): Remove.
12205 (__arm_vcmpneq_m_f32): Remove.
12206 (__arm_vcmpneq_m_n_f32): Remove.
12207 (__arm_vcmpneq): Remove.
12208 (__arm_vcmphiq): Remove.
12209 (__arm_vcmpeqq): Remove.
12210 (__arm_vcmpcsq): Remove.
12211 (__arm_vcmpltq): Remove.
12212 (__arm_vcmpleq): Remove.
12213 (__arm_vcmpgtq): Remove.
12214 (__arm_vcmpgeq): Remove.
12215 (__arm_vcmpneq_m): Remove.
12216 (__arm_vcmphiq_m): Remove.
12217 (__arm_vcmpeqq_m): Remove.
12218 (__arm_vcmpcsq_m): Remove.
12219 (__arm_vcmpltq_m): Remove.
12220 (__arm_vcmpleq_m): Remove.
12221 (__arm_vcmpgtq_m): Remove.
12222 (__arm_vcmpgeq_m): Remove.
12224 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
12226 * config/arm/arm-mve-builtins-shapes.cc (cmp): New.
12227 * config/arm/arm-mve-builtins-shapes.h (cmp): New.
12229 2023-05-11 Christophe Lyon <christophe.lyon@arm.com>
12231 * config/arm/iterators.md (MVE_CMP_M, MVE_CMP_M_F, MVE_CMP_M_N)
12232 (MVE_CMP_M_N_F, mve_cmp_op1): New.
12235 * config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>): Rename into ...
12236 (@mve_vcmp<mve_cmp_op>q_n_<mode>): ... this.
12237 (mve_vcmpeqq_m_f<mode>, mve_vcmpgeq_m_f<mode>)
12238 (mve_vcmpgtq_m_f<mode>, mve_vcmpleq_m_f<mode>)
12239 (mve_vcmpltq_m_f<mode>, mve_vcmpneq_m_f<mode>): Merge into ...
12240 (@mve_vcmp<mve_cmp_op1>q_m_f<mode>): ... this.
12241 (mve_vcmpcsq_m_u<mode>, mve_vcmpeqq_m_<supf><mode>)
12242 (mve_vcmpgeq_m_s<mode>, mve_vcmpgtq_m_s<mode>)
12243 (mve_vcmphiq_m_u<mode>, mve_vcmpleq_m_s<mode>)
12244 (mve_vcmpltq_m_s<mode>, mve_vcmpneq_m_<supf><mode>): Merge into
12246 (@mve_vcmp<mve_cmp_op1>q_m_<supf><mode>): ... this.
12247 (mve_vcmpcsq_m_n_u<mode>, mve_vcmpeqq_m_n_<supf><mode>)
12248 (mve_vcmpgeq_m_n_s<mode>, mve_vcmpgtq_m_n_s<mode>)
12249 (mve_vcmphiq_m_n_u<mode>, mve_vcmpleq_m_n_s<mode>)
12250 (mve_vcmpltq_m_n_s<mode>, mve_vcmpneq_m_n_<supf><mode>): Merge
12252 (@mve_vcmp<mve_cmp_op1>q_m_n_<supf><mode>): ... this.
12253 (mve_vcmpeqq_m_n_f<mode>, mve_vcmpgeq_m_n_f<mode>)
12254 (mve_vcmpgtq_m_n_f<mode>, mve_vcmpleq_m_n_f<mode>)
12255 (mve_vcmpltq_m_n_f<mode>, mve_vcmpneq_m_n_f<mode>): Merge into ...
12256 (@mve_vcmp<mve_cmp_op1>q_m_n_f<mode>): ... this.
12258 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
12260 * match.pd <popcount optimizations>: Simplify popcount(X|Y) +
12261 popcount(X&Y) as popcount(X)+popcount(Y). Likewise, simplify
12262 popcount(X)+popcount(Y)-popcount(X&Y) as popcount(X|Y), and
12265 2023-05-11 Roger Sayle <roger@nextmovesoftware.com>
12267 * match.pd <popcount optimizations>: Simplify popcount(bswap(x))
12268 as popcount(x). Simplify popcount(rotate(x,y)) as popcount(x).
12269 <parity optimizations>: Simplify parity(bswap(x)) as parity(x).
12270 Simplify parity(rotate(x,y)) as parity(x).
12272 2023-05-11 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12274 * config/riscv/autovec.md (@vec_series<mode>): New pattern
12275 * config/riscv/riscv-protos.h (expand_vec_series): New function.
12276 * config/riscv/riscv-v.cc (emit_binop): Ditto.
12277 (emit_index_op): Ditto.
12278 (expand_vec_series): Ditto.
12279 (expand_const_vector): Add series vector handling.
12280 * config/riscv/riscv.cc (riscv_const_insns): Enable series vector for testing.
12282 2023-05-10 Roger Sayle <roger@nextmovesoftware.com>
12284 * config/i386/i386.md (*concat<mode><dwi>3_1): Use preferred
12285 [(const_int 0)] idiom, instead of [(clobber (const_int 0))].
12286 (*concat<mode><dwi>3_2): Likewise.
12287 (*concat<mode><dwi>3_3): Likewise.
12288 (*concat<mode><dwi>3_4): Likewise.
12289 (*concat<mode><dwi>3_5): Likewise.
12290 (*concat<mode><dwi>3_6): Likewise.
12291 (*concat<mode><dwi>3_7): Likewise.
12293 2023-05-10 Uros Bizjak <ubizjak@gmail.com>
12296 * config/i386/mmx.md (sse4_1_<code>v2qiv2si2): New insn pattern.
12297 (<insn>v4qiv4hi2): New expander.
12298 (<insn>v2hiv2si2): Ditto.
12299 (<insn>v2qiv2si2): Ditto.
12300 (<insn>v2qiv2hi2): Ditto.
12302 2023-05-10 Jeff Law <jlaw@ventanamicro>
12304 * config/h8300/constraints.md (Q): Make this a special memory
12308 2023-05-10 Jakub Jelinek <jakub@redhat.com>
12311 * ipa-prop.cc (ipa_get_callee_param_type): Don't return TREE_VALUE (t)
12312 if t is void_list_node.
12314 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12316 * config/aarch64/aarch64-simd.md (aarch64_sqmovun<mode>_insn_le): Delete.
12317 (aarch64_sqmovun<mode>_insn_be): Delete.
12318 (aarch64_sqmovun<mode><vczle><vczbe>): New define_insn.
12319 (aarch64_sqmovun<mode>): Delete expander.
12321 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12324 * config/aarch64/aarch64-simd.md (aarch64_<PERMUTE:perm_insn><mode>):
12326 (aarch64_<PERMUTE:perm_insn><mode><vczle><vczbe>): ... This.
12327 (aarch64_rev<REVERSE:rev_op><mode>): Rename to...
12328 (aarch64_rev<REVERSE:rev_op><mode><vczle><vczbe>): ... This.
12330 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12333 * config/aarch64/aarch64-simd.md (aarch64_<su_optab>q<addsub><mode>):
12335 (aarch64_<su_optab>q<addsub><mode><vczle><vczbe>): ... This.
12336 (aarch64_<sur>qadd<mode>): Rename to...
12337 (aarch64_<sur>qadd<mode><vczle><vczbe>): ... This.
12339 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12341 * config/aarch64/aarch64-simd.md
12342 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): Delete.
12343 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): Delete.
12344 (aarch64_<sur>q<r>shr<u>n_n<mode>_insn<vczle><vczbe>): New define_insn.
12345 (aarch64_<sur>q<r>shr<u>n_n<mode>): Simplify expander.
12347 2023-05-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
12350 * config/aarch64/aarch64-simd.md (aarch64_xtn<mode>_insn_le): Delete.
12351 (aarch64_xtn<mode>_insn_be): Likewise.
12352 (trunc<mode><Vnarrowq>2): Rename to...
12353 (trunc<mode><Vnarrowq>2<vczle><vczbe>): ... This.
12354 (aarch64_xtn<mode>): Move under the above. Just emit the truncate RTL.
12355 (aarch64_<su>qmovn<mode>): Likewise.
12356 (aarch64_<su>qmovn<mode><vczle><vczbe>): New define_insn.
12357 (aarch64_<su>qmovn<mode>_insn_le): Delete.
12358 (aarch64_<su>qmovn<mode>_insn_be): Likewise.
12360 2023-05-10 Li Xu <xuli1@eswincomputing.com>
12362 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): For vfmv.f.s/vmv.x.s
12363 intruction replace null avl with (const_int 0).
12365 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12367 * config/riscv/riscv.cc (riscv_support_vector_misalignment): Fix
12370 2023-05-10 Juzhe-Zhong <juzhe.zhong@rivai.ai>
12373 * config/riscv/riscv-vsetvl.cc (avl_source_has_vsetvl_p): New function.
12374 (source_equal_p): Fix dead loop in vsetvl avl checking.
12376 2023-05-10 Hans-Peter Nilsson <hp@axis.com>
12378 * config/cris/cris.cc (cris_postdbr_cmpelim): Correct mode
12379 of modeadjusted_dccr.
12381 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12383 * config/arm/arm-mve-builtins-base.cc (vmaxaq, vminaq): New.
12384 * config/arm/arm-mve-builtins-base.def (vmaxaq, vminaq): New.
12385 * config/arm/arm-mve-builtins-base.h (vmaxaq, vminaq): New.
12386 * config/arm/arm-mve-builtins.cc
12387 (function_instance::has_inactive_argument): Handle vmaxaq and
12389 * config/arm/arm_mve.h (vminaq): Remove.
12391 (vminaq_m): Remove.
12392 (vmaxaq_m): Remove.
12393 (vminaq_s8): Remove.
12394 (vmaxaq_s8): Remove.
12395 (vminaq_s16): Remove.
12396 (vmaxaq_s16): Remove.
12397 (vminaq_s32): Remove.
12398 (vmaxaq_s32): Remove.
12399 (vminaq_m_s8): Remove.
12400 (vmaxaq_m_s8): Remove.
12401 (vminaq_m_s16): Remove.
12402 (vmaxaq_m_s16): Remove.
12403 (vminaq_m_s32): Remove.
12404 (vmaxaq_m_s32): Remove.
12405 (__arm_vminaq_s8): Remove.
12406 (__arm_vmaxaq_s8): Remove.
12407 (__arm_vminaq_s16): Remove.
12408 (__arm_vmaxaq_s16): Remove.
12409 (__arm_vminaq_s32): Remove.
12410 (__arm_vmaxaq_s32): Remove.
12411 (__arm_vminaq_m_s8): Remove.
12412 (__arm_vmaxaq_m_s8): Remove.
12413 (__arm_vminaq_m_s16): Remove.
12414 (__arm_vmaxaq_m_s16): Remove.
12415 (__arm_vminaq_m_s32): Remove.
12416 (__arm_vmaxaq_m_s32): Remove.
12417 (__arm_vminaq): Remove.
12418 (__arm_vmaxaq): Remove.
12419 (__arm_vminaq_m): Remove.
12420 (__arm_vmaxaq_m): Remove.
12422 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12424 * config/arm/iterators.md (MVE_VMAXAVMINAQ, MVE_VMAXAVMINAQ_M):
12426 (mve_insn): Add vmaxa, vmina.
12427 (supf): Add VMAXAQ_S, VMAXAQ_M_S, VMINAQ_S, VMINAQ_M_S.
12428 * config/arm/mve.md (mve_vmaxaq_s<mode>, mve_vminaq_s<mode>):
12430 (@mve_<mve_insn>q_<supf><mode>): ... this.
12431 (mve_vmaxaq_m_s<mode>, mve_vminaq_m_s<mode>): Merge into ...
12432 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
12434 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12436 * config/arm/arm-mve-builtins-shapes.cc (binary_maxamina): New.
12437 * config/arm/arm-mve-builtins-shapes.h (binary_maxamina): New.
12439 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12441 * config/arm/arm-mve-builtins-base.cc (vmaxnmaq, vminnmaq): New.
12442 * config/arm/arm-mve-builtins-base.def (vmaxnmaq, vminnmaq): New.
12443 * config/arm/arm-mve-builtins-base.h (vmaxnmaq, vminnmaq): New.
12444 * config/arm/arm-mve-builtins.cc
12445 (function_instance::has_inactive_argument): Handle vmaxnmaq and
12447 * config/arm/arm_mve.h (vminnmaq): Remove.
12448 (vmaxnmaq): Remove.
12449 (vmaxnmaq_m): Remove.
12450 (vminnmaq_m): Remove.
12451 (vminnmaq_f16): Remove.
12452 (vmaxnmaq_f16): Remove.
12453 (vminnmaq_f32): Remove.
12454 (vmaxnmaq_f32): Remove.
12455 (vmaxnmaq_m_f16): Remove.
12456 (vminnmaq_m_f16): Remove.
12457 (vmaxnmaq_m_f32): Remove.
12458 (vminnmaq_m_f32): Remove.
12459 (__arm_vminnmaq_f16): Remove.
12460 (__arm_vmaxnmaq_f16): Remove.
12461 (__arm_vminnmaq_f32): Remove.
12462 (__arm_vmaxnmaq_f32): Remove.
12463 (__arm_vmaxnmaq_m_f16): Remove.
12464 (__arm_vminnmaq_m_f16): Remove.
12465 (__arm_vmaxnmaq_m_f32): Remove.
12466 (__arm_vminnmaq_m_f32): Remove.
12467 (__arm_vminnmaq): Remove.
12468 (__arm_vmaxnmaq): Remove.
12469 (__arm_vmaxnmaq_m): Remove.
12470 (__arm_vminnmaq_m): Remove.
12472 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12474 * config/arm/iterators.md (MVE_VMAXNMA_VMINNMAQ)
12475 (MVE_VMAXNMA_VMINNMAQ_M): New.
12476 (mve_insn): Add vmaxnma, vminnma.
12477 * config/arm/mve.md (mve_vmaxnmaq_f<mode>, mve_vminnmaq_f<mode>):
12479 (@mve_<mve_insn>q_f<mode>): ... this.
12480 (mve_vmaxnmaq_m_f<mode>, mve_vminnmaq_m_f<mode>): Merge into ...
12481 (@mve_<mve_insn>q_m_f<mode>): ... this.
12483 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12485 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_F): New.
12486 (vmaxnmavq, vmaxnmvq, vminnmavq, vminnmvq): New.
12487 * config/arm/arm-mve-builtins-base.def (vmaxnmavq, vmaxnmvq)
12488 (vminnmavq, vminnmvq): New.
12489 * config/arm/arm-mve-builtins-base.h (vmaxnmavq, vmaxnmvq)
12490 (vminnmavq, vminnmvq): New.
12491 * config/arm/arm_mve.h (vminnmvq): Remove.
12492 (vminnmavq): Remove.
12493 (vmaxnmvq): Remove.
12494 (vmaxnmavq): Remove.
12495 (vmaxnmavq_p): Remove.
12496 (vmaxnmvq_p): Remove.
12497 (vminnmavq_p): Remove.
12498 (vminnmvq_p): Remove.
12499 (vminnmvq_f16): Remove.
12500 (vminnmavq_f16): Remove.
12501 (vmaxnmvq_f16): Remove.
12502 (vmaxnmavq_f16): Remove.
12503 (vminnmvq_f32): Remove.
12504 (vminnmavq_f32): Remove.
12505 (vmaxnmvq_f32): Remove.
12506 (vmaxnmavq_f32): Remove.
12507 (vmaxnmavq_p_f16): Remove.
12508 (vmaxnmvq_p_f16): Remove.
12509 (vminnmavq_p_f16): Remove.
12510 (vminnmvq_p_f16): Remove.
12511 (vmaxnmavq_p_f32): Remove.
12512 (vmaxnmvq_p_f32): Remove.
12513 (vminnmavq_p_f32): Remove.
12514 (vminnmvq_p_f32): Remove.
12515 (__arm_vminnmvq_f16): Remove.
12516 (__arm_vminnmavq_f16): Remove.
12517 (__arm_vmaxnmvq_f16): Remove.
12518 (__arm_vmaxnmavq_f16): Remove.
12519 (__arm_vminnmvq_f32): Remove.
12520 (__arm_vminnmavq_f32): Remove.
12521 (__arm_vmaxnmvq_f32): Remove.
12522 (__arm_vmaxnmavq_f32): Remove.
12523 (__arm_vmaxnmavq_p_f16): Remove.
12524 (__arm_vmaxnmvq_p_f16): Remove.
12525 (__arm_vminnmavq_p_f16): Remove.
12526 (__arm_vminnmvq_p_f16): Remove.
12527 (__arm_vmaxnmavq_p_f32): Remove.
12528 (__arm_vmaxnmvq_p_f32): Remove.
12529 (__arm_vminnmavq_p_f32): Remove.
12530 (__arm_vminnmvq_p_f32): Remove.
12531 (__arm_vminnmvq): Remove.
12532 (__arm_vminnmavq): Remove.
12533 (__arm_vmaxnmvq): Remove.
12534 (__arm_vmaxnmavq): Remove.
12535 (__arm_vmaxnmavq_p): Remove.
12536 (__arm_vmaxnmvq_p): Remove.
12537 (__arm_vminnmavq_p): Remove.
12538 (__arm_vminnmvq_p): Remove.
12539 (__arm_vmaxnmavq_m): Remove.
12540 (__arm_vmaxnmvq_m): Remove.
12542 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12544 * config/arm/arm-mve-builtins-functions.h
12545 (unspec_mve_function_exact_insn_pred_p): Use code_for_mve_q_p_f.
12547 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12549 * config/arm/iterators.md (MVE_VMAXNMxV_MINNMxVQ)
12550 (MVE_VMAXNMxV_MINNMxVQ_P): New.
12551 (mve_insn): Add vmaxnmav, vmaxnmv, vminnmav, vminnmv.
12552 * config/arm/mve.md (mve_vmaxnmavq_f<mode>, mve_vmaxnmvq_f<mode>)
12553 (mve_vminnmavq_f<mode>, mve_vminnmvq_f<mode>): Merge into ...
12554 (@mve_<mve_insn>q_f<mode>): ... this.
12555 (mve_vmaxnmavq_p_f<mode>, mve_vmaxnmvq_p_f<mode>)
12556 (mve_vminnmavq_p_f<mode>, mve_vminnmvq_p_f<mode>): Merge into ...
12557 (@mve_<mve_insn>q_p_f<mode>): ... this.
12559 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12561 * config/arm/arm-mve-builtins-base.cc (vmaxnmq, vminnmq): New.
12562 * config/arm/arm-mve-builtins-base.def (vmaxnmq, vminnmq): New.
12563 * config/arm/arm-mve-builtins-base.h (vmaxnmq, vminnmq): New.
12564 * config/arm/arm_mve.h (vminnmq): Remove.
12566 (vmaxnmq_m): Remove.
12567 (vminnmq_m): Remove.
12568 (vminnmq_x): Remove.
12569 (vmaxnmq_x): Remove.
12570 (vminnmq_f16): Remove.
12571 (vmaxnmq_f16): Remove.
12572 (vminnmq_f32): Remove.
12573 (vmaxnmq_f32): Remove.
12574 (vmaxnmq_m_f32): Remove.
12575 (vmaxnmq_m_f16): Remove.
12576 (vminnmq_m_f32): Remove.
12577 (vminnmq_m_f16): Remove.
12578 (vminnmq_x_f16): Remove.
12579 (vminnmq_x_f32): Remove.
12580 (vmaxnmq_x_f16): Remove.
12581 (vmaxnmq_x_f32): Remove.
12582 (__arm_vminnmq_f16): Remove.
12583 (__arm_vmaxnmq_f16): Remove.
12584 (__arm_vminnmq_f32): Remove.
12585 (__arm_vmaxnmq_f32): Remove.
12586 (__arm_vmaxnmq_m_f32): Remove.
12587 (__arm_vmaxnmq_m_f16): Remove.
12588 (__arm_vminnmq_m_f32): Remove.
12589 (__arm_vminnmq_m_f16): Remove.
12590 (__arm_vminnmq_x_f16): Remove.
12591 (__arm_vminnmq_x_f32): Remove.
12592 (__arm_vmaxnmq_x_f16): Remove.
12593 (__arm_vmaxnmq_x_f32): Remove.
12594 (__arm_vminnmq): Remove.
12595 (__arm_vmaxnmq): Remove.
12596 (__arm_vmaxnmq_m): Remove.
12597 (__arm_vminnmq_m): Remove.
12598 (__arm_vminnmq_x): Remove.
12599 (__arm_vmaxnmq_x): Remove.
12601 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12603 * config/arm/iterators.md (MAX_MIN_F): New.
12604 (MVE_FP_M_BINARY): Add VMAXNMQ_M_F, VMINNMQ_M_F.
12605 (mve_insn): Add vmaxnm, vminnm.
12606 (max_min_f_str): New.
12607 * config/arm/mve.md (mve_vmaxnmq_f<mode>, mve_vminnmq_f<mode>):
12609 (@mve_<max_min_f_str>q_f<mode>): ... this.
12610 (mve_vmaxnmq_m_f<mode>, mve_vminnmq_m_f<mode>): Merge into ...
12611 (@mve_<mve_insn>q_m_f<mode>): ... this.
12613 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12615 * config/arm/vec-common.md (smin<mode>3): Use VDQWH iterator.
12616 (smax<mode>3): Likewise.
12618 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12620 * config/arm/arm-mve-builtins-base.cc (FUNCTION_PRED_P_S_U)
12621 (FUNCTION_PRED_P_S): New.
12622 (vmaxavq, vminavq, vmaxvq, vminvq): New.
12623 * config/arm/arm-mve-builtins-base.def (vmaxavq, vminavq, vmaxvq)
12625 * config/arm/arm-mve-builtins-base.h (vmaxavq, vminavq, vmaxvq)
12627 * config/arm/arm_mve.h (vminvq): Remove.
12629 (vminvq_p): Remove.
12630 (vmaxvq_p): Remove.
12631 (vminvq_u8): Remove.
12632 (vmaxvq_u8): Remove.
12633 (vminvq_s8): Remove.
12634 (vmaxvq_s8): Remove.
12635 (vminvq_u16): Remove.
12636 (vmaxvq_u16): Remove.
12637 (vminvq_s16): Remove.
12638 (vmaxvq_s16): Remove.
12639 (vminvq_u32): Remove.
12640 (vmaxvq_u32): Remove.
12641 (vminvq_s32): Remove.
12642 (vmaxvq_s32): Remove.
12643 (vminvq_p_u8): Remove.
12644 (vmaxvq_p_u8): Remove.
12645 (vminvq_p_s8): Remove.
12646 (vmaxvq_p_s8): Remove.
12647 (vminvq_p_u16): Remove.
12648 (vmaxvq_p_u16): Remove.
12649 (vminvq_p_s16): Remove.
12650 (vmaxvq_p_s16): Remove.
12651 (vminvq_p_u32): Remove.
12652 (vmaxvq_p_u32): Remove.
12653 (vminvq_p_s32): Remove.
12654 (vmaxvq_p_s32): Remove.
12655 (__arm_vminvq_u8): Remove.
12656 (__arm_vmaxvq_u8): Remove.
12657 (__arm_vminvq_s8): Remove.
12658 (__arm_vmaxvq_s8): Remove.
12659 (__arm_vminvq_u16): Remove.
12660 (__arm_vmaxvq_u16): Remove.
12661 (__arm_vminvq_s16): Remove.
12662 (__arm_vmaxvq_s16): Remove.
12663 (__arm_vminvq_u32): Remove.
12664 (__arm_vmaxvq_u32): Remove.
12665 (__arm_vminvq_s32): Remove.
12666 (__arm_vmaxvq_s32): Remove.
12667 (__arm_vminvq_p_u8): Remove.
12668 (__arm_vmaxvq_p_u8): Remove.
12669 (__arm_vminvq_p_s8): Remove.
12670 (__arm_vmaxvq_p_s8): Remove.
12671 (__arm_vminvq_p_u16): Remove.
12672 (__arm_vmaxvq_p_u16): Remove.
12673 (__arm_vminvq_p_s16): Remove.
12674 (__arm_vmaxvq_p_s16): Remove.
12675 (__arm_vminvq_p_u32): Remove.
12676 (__arm_vmaxvq_p_u32): Remove.
12677 (__arm_vminvq_p_s32): Remove.
12678 (__arm_vmaxvq_p_s32): Remove.
12679 (__arm_vminvq): Remove.
12680 (__arm_vmaxvq): Remove.
12681 (__arm_vminvq_p): Remove.
12682 (__arm_vmaxvq_p): Remove.
12685 (vminavq_p): Remove.
12686 (vmaxavq_p): Remove.
12687 (vminavq_s8): Remove.
12688 (vmaxavq_s8): Remove.
12689 (vminavq_s16): Remove.
12690 (vmaxavq_s16): Remove.
12691 (vminavq_s32): Remove.
12692 (vmaxavq_s32): Remove.
12693 (vminavq_p_s8): Remove.
12694 (vmaxavq_p_s8): Remove.
12695 (vminavq_p_s16): Remove.
12696 (vmaxavq_p_s16): Remove.
12697 (vminavq_p_s32): Remove.
12698 (vmaxavq_p_s32): Remove.
12699 (__arm_vminavq_s8): Remove.
12700 (__arm_vmaxavq_s8): Remove.
12701 (__arm_vminavq_s16): Remove.
12702 (__arm_vmaxavq_s16): Remove.
12703 (__arm_vminavq_s32): Remove.
12704 (__arm_vmaxavq_s32): Remove.
12705 (__arm_vminavq_p_s8): Remove.
12706 (__arm_vmaxavq_p_s8): Remove.
12707 (__arm_vminavq_p_s16): Remove.
12708 (__arm_vmaxavq_p_s16): Remove.
12709 (__arm_vminavq_p_s32): Remove.
12710 (__arm_vmaxavq_p_s32): Remove.
12711 (__arm_vminavq): Remove.
12712 (__arm_vmaxavq): Remove.
12713 (__arm_vminavq_p): Remove.
12714 (__arm_vmaxavq_p): Remove.
12716 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12718 * config/arm/iterators.md (MVE_VMAXVQ_VMINVQ, MVE_VMAXVQ_VMINVQ_P): New.
12719 (mve_insn): Add vmaxav, vmaxv, vminav, vminv.
12720 (supf): Add VMAXAVQ_S, VMAXAVQ_P_S, VMINAVQ_S, VMINAVQ_P_S.
12721 * config/arm/mve.md (mve_vmaxavq_s<mode>, mve_vmaxvq_<supf><mode>)
12722 (mve_vminavq_s<mode>, mve_vminvq_<supf><mode>): Merge into ...
12723 (@mve_<mve_insn>q_<supf><mode>): ... this.
12724 (mve_vmaxavq_p_s<mode>, mve_vmaxvq_p_<supf><mode>)
12725 (mve_vminavq_p_s<mode>, mve_vminvq_p_<supf><mode>): Merge into ...
12726 (@mve_<mve_insn>q_p_<supf><mode>): ... this.
12728 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12730 * config/arm/arm-mve-builtins-functions.h (class
12731 unspec_mve_function_exact_insn_pred_p): New.
12733 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12735 * config/arm/arm-mve-builtins-shapes.cc (binary_maxavminav): New.
12736 * config/arm/arm-mve-builtins-shapes.h (binary_maxavminav): New.
12738 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12740 * config/arm/arm-mve-builtins-shapes.cc (binary_maxvminv): New.
12741 * config/arm/arm-mve-builtins-shapes.h (binary_maxvminv): New.
12743 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
12745 * config/aarch64/aarch64-protos.h (aarch64_adjust_reg_alloc_order):
12747 * config/aarch64/aarch64.h (REG_ALLOC_ORDER): Define.
12748 (ADJUST_REG_ALLOC_ORDER): Likewise.
12749 * config/aarch64/aarch64.cc (aarch64_adjust_reg_alloc_order): New
12751 * config/aarch64/aarch64-sve.md (*vcond_mask_<mode><vpred>): Use
12752 Upa rather than Upl for unpredicated movprfx alternatives.
12754 2023-05-09 Jeff Law <jlaw@ventanamicro>
12756 * config/h8300/testcompare.md: Add peephole2 which uses a memory
12757 load to set flags, thus eliminating a compare against zero.
12759 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12761 * config/arm/arm-mve-builtins-base.cc (vshllbq, vshlltq): New.
12762 * config/arm/arm-mve-builtins-base.def (vshllbq, vshlltq): New.
12763 * config/arm/arm-mve-builtins-base.h (vshllbq, vshlltq): New.
12764 * config/arm/arm_mve.h (vshlltq): Remove.
12766 (vshllbq_m): Remove.
12767 (vshlltq_m): Remove.
12768 (vshllbq_x): Remove.
12769 (vshlltq_x): Remove.
12770 (vshlltq_n_u8): Remove.
12771 (vshllbq_n_u8): Remove.
12772 (vshlltq_n_s8): Remove.
12773 (vshllbq_n_s8): Remove.
12774 (vshlltq_n_u16): Remove.
12775 (vshllbq_n_u16): Remove.
12776 (vshlltq_n_s16): Remove.
12777 (vshllbq_n_s16): Remove.
12778 (vshllbq_m_n_s8): Remove.
12779 (vshllbq_m_n_s16): Remove.
12780 (vshllbq_m_n_u8): Remove.
12781 (vshllbq_m_n_u16): Remove.
12782 (vshlltq_m_n_s8): Remove.
12783 (vshlltq_m_n_s16): Remove.
12784 (vshlltq_m_n_u8): Remove.
12785 (vshlltq_m_n_u16): Remove.
12786 (vshllbq_x_n_s8): Remove.
12787 (vshllbq_x_n_s16): Remove.
12788 (vshllbq_x_n_u8): Remove.
12789 (vshllbq_x_n_u16): Remove.
12790 (vshlltq_x_n_s8): Remove.
12791 (vshlltq_x_n_s16): Remove.
12792 (vshlltq_x_n_u8): Remove.
12793 (vshlltq_x_n_u16): Remove.
12794 (__arm_vshlltq_n_u8): Remove.
12795 (__arm_vshllbq_n_u8): Remove.
12796 (__arm_vshlltq_n_s8): Remove.
12797 (__arm_vshllbq_n_s8): Remove.
12798 (__arm_vshlltq_n_u16): Remove.
12799 (__arm_vshllbq_n_u16): Remove.
12800 (__arm_vshlltq_n_s16): Remove.
12801 (__arm_vshllbq_n_s16): Remove.
12802 (__arm_vshllbq_m_n_s8): Remove.
12803 (__arm_vshllbq_m_n_s16): Remove.
12804 (__arm_vshllbq_m_n_u8): Remove.
12805 (__arm_vshllbq_m_n_u16): Remove.
12806 (__arm_vshlltq_m_n_s8): Remove.
12807 (__arm_vshlltq_m_n_s16): Remove.
12808 (__arm_vshlltq_m_n_u8): Remove.
12809 (__arm_vshlltq_m_n_u16): Remove.
12810 (__arm_vshllbq_x_n_s8): Remove.
12811 (__arm_vshllbq_x_n_s16): Remove.
12812 (__arm_vshllbq_x_n_u8): Remove.
12813 (__arm_vshllbq_x_n_u16): Remove.
12814 (__arm_vshlltq_x_n_s8): Remove.
12815 (__arm_vshlltq_x_n_s16): Remove.
12816 (__arm_vshlltq_x_n_u8): Remove.
12817 (__arm_vshlltq_x_n_u16): Remove.
12818 (__arm_vshlltq): Remove.
12819 (__arm_vshllbq): Remove.
12820 (__arm_vshllbq_m): Remove.
12821 (__arm_vshlltq_m): Remove.
12822 (__arm_vshllbq_x): Remove.
12823 (__arm_vshlltq_x): Remove.
12825 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12827 * config/arm/iterators.md (mve_insn): Add vshllb, vshllt.
12828 (VSHLLBQ_N, VSHLLTQ_N): Remove.
12830 (VSHLLBQ_M_N, VSHLLTQ_M_N): Remove.
12831 (VSHLLxQ_M_N): New.
12832 * config/arm/mve.md (mve_vshllbq_n_<supf><mode>)
12833 (mve_vshlltq_n_<supf><mode>): Merge into ...
12834 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
12835 (mve_vshllbq_m_n_<supf><mode>, mve_vshlltq_m_n_<supf><mode>):
12837 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
12839 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12841 * config/arm/arm-mve-builtins-shapes.cc (binary_widen_n): New.
12842 * config/arm/arm-mve-builtins-shapes.h (binary_widen_n): New.
12844 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12846 * config/arm/arm-mve-builtins-base.cc (vmovnbq, vmovntq, vqmovnbq)
12847 (vqmovntq, vqmovunbq, vqmovuntq): New.
12848 * config/arm/arm-mve-builtins-base.def (vmovnbq, vmovntq)
12849 (vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq): New.
12850 * config/arm/arm-mve-builtins-base.h (vmovnbq, vmovntq, vqmovnbq)
12851 (vqmovntq, vqmovunbq, vqmovuntq): New.
12852 * config/arm/arm-mve-builtins.cc
12853 (function_instance::has_inactive_argument): Handle vmovnbq,
12854 vmovntq, vqmovnbq, vqmovntq, vqmovunbq, vqmovuntq.
12855 * config/arm/arm_mve.h (vqmovntq): Remove.
12856 (vqmovnbq): Remove.
12857 (vqmovnbq_m): Remove.
12858 (vqmovntq_m): Remove.
12859 (vqmovntq_u16): Remove.
12860 (vqmovnbq_u16): Remove.
12861 (vqmovntq_s16): Remove.
12862 (vqmovnbq_s16): Remove.
12863 (vqmovntq_u32): Remove.
12864 (vqmovnbq_u32): Remove.
12865 (vqmovntq_s32): Remove.
12866 (vqmovnbq_s32): Remove.
12867 (vqmovnbq_m_s16): Remove.
12868 (vqmovntq_m_s16): Remove.
12869 (vqmovnbq_m_u16): Remove.
12870 (vqmovntq_m_u16): Remove.
12871 (vqmovnbq_m_s32): Remove.
12872 (vqmovntq_m_s32): Remove.
12873 (vqmovnbq_m_u32): Remove.
12874 (vqmovntq_m_u32): Remove.
12875 (__arm_vqmovntq_u16): Remove.
12876 (__arm_vqmovnbq_u16): Remove.
12877 (__arm_vqmovntq_s16): Remove.
12878 (__arm_vqmovnbq_s16): Remove.
12879 (__arm_vqmovntq_u32): Remove.
12880 (__arm_vqmovnbq_u32): Remove.
12881 (__arm_vqmovntq_s32): Remove.
12882 (__arm_vqmovnbq_s32): Remove.
12883 (__arm_vqmovnbq_m_s16): Remove.
12884 (__arm_vqmovntq_m_s16): Remove.
12885 (__arm_vqmovnbq_m_u16): Remove.
12886 (__arm_vqmovntq_m_u16): Remove.
12887 (__arm_vqmovnbq_m_s32): Remove.
12888 (__arm_vqmovntq_m_s32): Remove.
12889 (__arm_vqmovnbq_m_u32): Remove.
12890 (__arm_vqmovntq_m_u32): Remove.
12891 (__arm_vqmovntq): Remove.
12892 (__arm_vqmovnbq): Remove.
12893 (__arm_vqmovnbq_m): Remove.
12894 (__arm_vqmovntq_m): Remove.
12897 (vmovnbq_m): Remove.
12898 (vmovntq_m): Remove.
12899 (vmovntq_u16): Remove.
12900 (vmovnbq_u16): Remove.
12901 (vmovntq_s16): Remove.
12902 (vmovnbq_s16): Remove.
12903 (vmovntq_u32): Remove.
12904 (vmovnbq_u32): Remove.
12905 (vmovntq_s32): Remove.
12906 (vmovnbq_s32): Remove.
12907 (vmovnbq_m_s16): Remove.
12908 (vmovntq_m_s16): Remove.
12909 (vmovnbq_m_u16): Remove.
12910 (vmovntq_m_u16): Remove.
12911 (vmovnbq_m_s32): Remove.
12912 (vmovntq_m_s32): Remove.
12913 (vmovnbq_m_u32): Remove.
12914 (vmovntq_m_u32): Remove.
12915 (__arm_vmovntq_u16): Remove.
12916 (__arm_vmovnbq_u16): Remove.
12917 (__arm_vmovntq_s16): Remove.
12918 (__arm_vmovnbq_s16): Remove.
12919 (__arm_vmovntq_u32): Remove.
12920 (__arm_vmovnbq_u32): Remove.
12921 (__arm_vmovntq_s32): Remove.
12922 (__arm_vmovnbq_s32): Remove.
12923 (__arm_vmovnbq_m_s16): Remove.
12924 (__arm_vmovntq_m_s16): Remove.
12925 (__arm_vmovnbq_m_u16): Remove.
12926 (__arm_vmovntq_m_u16): Remove.
12927 (__arm_vmovnbq_m_s32): Remove.
12928 (__arm_vmovntq_m_s32): Remove.
12929 (__arm_vmovnbq_m_u32): Remove.
12930 (__arm_vmovntq_m_u32): Remove.
12931 (__arm_vmovntq): Remove.
12932 (__arm_vmovnbq): Remove.
12933 (__arm_vmovnbq_m): Remove.
12934 (__arm_vmovntq_m): Remove.
12935 (vqmovuntq): Remove.
12936 (vqmovunbq): Remove.
12937 (vqmovunbq_m): Remove.
12938 (vqmovuntq_m): Remove.
12939 (vqmovuntq_s16): Remove.
12940 (vqmovunbq_s16): Remove.
12941 (vqmovuntq_s32): Remove.
12942 (vqmovunbq_s32): Remove.
12943 (vqmovunbq_m_s16): Remove.
12944 (vqmovuntq_m_s16): Remove.
12945 (vqmovunbq_m_s32): Remove.
12946 (vqmovuntq_m_s32): Remove.
12947 (__arm_vqmovuntq_s16): Remove.
12948 (__arm_vqmovunbq_s16): Remove.
12949 (__arm_vqmovuntq_s32): Remove.
12950 (__arm_vqmovunbq_s32): Remove.
12951 (__arm_vqmovunbq_m_s16): Remove.
12952 (__arm_vqmovuntq_m_s16): Remove.
12953 (__arm_vqmovunbq_m_s32): Remove.
12954 (__arm_vqmovuntq_m_s32): Remove.
12955 (__arm_vqmovuntq): Remove.
12956 (__arm_vqmovunbq): Remove.
12957 (__arm_vqmovunbq_m): Remove.
12958 (__arm_vqmovuntq_m): Remove.
12960 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12962 * config/arm/iterators.md (MVE_MOVN, MVE_MOVN_M): New.
12963 (mve_insn): Add vmovnb, vmovnt, vqmovnb, vqmovnt, vqmovunb,
12966 (supf): Add VQMOVUNBQ_M_S, VQMOVUNBQ_S, VQMOVUNTQ_M_S,
12968 * config/arm/mve.md (mve_vmovnbq_<supf><mode>)
12969 (mve_vmovntq_<supf><mode>, mve_vqmovnbq_<supf><mode>)
12970 (mve_vqmovntq_<supf><mode>, mve_vqmovunbq_s<mode>)
12971 (mve_vqmovuntq_s<mode>): Merge into ...
12972 (@mve_<mve_insn>q_<supf><mode>): ... this.
12973 (mve_vmovnbq_m_<supf><mode>, mve_vmovntq_m_<supf><mode>)
12974 (mve_vqmovnbq_m_<supf><mode>, mve_vqmovntq_m_<supf><mode>)
12975 (mve_vqmovunbq_m_s<mode>, mve_vqmovuntq_m_s<mode>): Merge into ...
12976 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
12978 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12980 * config/arm/arm-mve-builtins-shapes.cc (binary_move_narrow): New.
12981 (binary_move_narrow_unsigned): New.
12982 * config/arm/arm-mve-builtins-shapes.h (binary_move_narrow): New.
12983 (binary_move_narrow_unsigned): New.
12985 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
12987 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_F): New.
12988 (vrndaq, vrndmq, vrndnq, vrndpq, vrndq, vrndxq): New.
12989 * config/arm/arm-mve-builtins-base.def (vrndaq, vrndmq, vrndnq)
12990 (vrndpq, vrndq, vrndxq): New.
12991 * config/arm/arm-mve-builtins-base.h (vrndaq, vrndmq, vrndnq)
12992 (vrndpq, vrndq, vrndxq): New.
12993 * config/arm/arm_mve.h (vrndxq): Remove.
12999 (vrndaq_m): Remove.
13000 (vrndmq_m): Remove.
13001 (vrndnq_m): Remove.
13002 (vrndpq_m): Remove.
13004 (vrndxq_m): Remove.
13006 (vrndnq_x): Remove.
13007 (vrndmq_x): Remove.
13008 (vrndpq_x): Remove.
13009 (vrndaq_x): Remove.
13010 (vrndxq_x): Remove.
13011 (vrndxq_f16): Remove.
13012 (vrndxq_f32): Remove.
13013 (vrndq_f16): Remove.
13014 (vrndq_f32): Remove.
13015 (vrndpq_f16): Remove.
13016 (vrndpq_f32): Remove.
13017 (vrndnq_f16): Remove.
13018 (vrndnq_f32): Remove.
13019 (vrndmq_f16): Remove.
13020 (vrndmq_f32): Remove.
13021 (vrndaq_f16): Remove.
13022 (vrndaq_f32): Remove.
13023 (vrndaq_m_f16): Remove.
13024 (vrndmq_m_f16): Remove.
13025 (vrndnq_m_f16): Remove.
13026 (vrndpq_m_f16): Remove.
13027 (vrndq_m_f16): Remove.
13028 (vrndxq_m_f16): Remove.
13029 (vrndaq_m_f32): Remove.
13030 (vrndmq_m_f32): Remove.
13031 (vrndnq_m_f32): Remove.
13032 (vrndpq_m_f32): Remove.
13033 (vrndq_m_f32): Remove.
13034 (vrndxq_m_f32): Remove.
13035 (vrndq_x_f16): Remove.
13036 (vrndq_x_f32): Remove.
13037 (vrndnq_x_f16): Remove.
13038 (vrndnq_x_f32): Remove.
13039 (vrndmq_x_f16): Remove.
13040 (vrndmq_x_f32): Remove.
13041 (vrndpq_x_f16): Remove.
13042 (vrndpq_x_f32): Remove.
13043 (vrndaq_x_f16): Remove.
13044 (vrndaq_x_f32): Remove.
13045 (vrndxq_x_f16): Remove.
13046 (vrndxq_x_f32): Remove.
13047 (__arm_vrndxq_f16): Remove.
13048 (__arm_vrndxq_f32): Remove.
13049 (__arm_vrndq_f16): Remove.
13050 (__arm_vrndq_f32): Remove.
13051 (__arm_vrndpq_f16): Remove.
13052 (__arm_vrndpq_f32): Remove.
13053 (__arm_vrndnq_f16): Remove.
13054 (__arm_vrndnq_f32): Remove.
13055 (__arm_vrndmq_f16): Remove.
13056 (__arm_vrndmq_f32): Remove.
13057 (__arm_vrndaq_f16): Remove.
13058 (__arm_vrndaq_f32): Remove.
13059 (__arm_vrndaq_m_f16): Remove.
13060 (__arm_vrndmq_m_f16): Remove.
13061 (__arm_vrndnq_m_f16): Remove.
13062 (__arm_vrndpq_m_f16): Remove.
13063 (__arm_vrndq_m_f16): Remove.
13064 (__arm_vrndxq_m_f16): Remove.
13065 (__arm_vrndaq_m_f32): Remove.
13066 (__arm_vrndmq_m_f32): Remove.
13067 (__arm_vrndnq_m_f32): Remove.
13068 (__arm_vrndpq_m_f32): Remove.
13069 (__arm_vrndq_m_f32): Remove.
13070 (__arm_vrndxq_m_f32): Remove.
13071 (__arm_vrndq_x_f16): Remove.
13072 (__arm_vrndq_x_f32): Remove.
13073 (__arm_vrndnq_x_f16): Remove.
13074 (__arm_vrndnq_x_f32): Remove.
13075 (__arm_vrndmq_x_f16): Remove.
13076 (__arm_vrndmq_x_f32): Remove.
13077 (__arm_vrndpq_x_f16): Remove.
13078 (__arm_vrndpq_x_f32): Remove.
13079 (__arm_vrndaq_x_f16): Remove.
13080 (__arm_vrndaq_x_f32): Remove.
13081 (__arm_vrndxq_x_f16): Remove.
13082 (__arm_vrndxq_x_f32): Remove.
13083 (__arm_vrndxq): Remove.
13084 (__arm_vrndq): Remove.
13085 (__arm_vrndpq): Remove.
13086 (__arm_vrndnq): Remove.
13087 (__arm_vrndmq): Remove.
13088 (__arm_vrndaq): Remove.
13089 (__arm_vrndaq_m): Remove.
13090 (__arm_vrndmq_m): Remove.
13091 (__arm_vrndnq_m): Remove.
13092 (__arm_vrndpq_m): Remove.
13093 (__arm_vrndq_m): Remove.
13094 (__arm_vrndxq_m): Remove.
13095 (__arm_vrndq_x): Remove.
13096 (__arm_vrndnq_x): Remove.
13097 (__arm_vrndmq_x): Remove.
13098 (__arm_vrndpq_x): Remove.
13099 (__arm_vrndaq_x): Remove.
13100 (__arm_vrndxq_x): Remove.
13102 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
13104 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N_NO_U_F): New.
13105 (vabsq, vnegq, vclsq, vclzq, vqabsq, vqnegq): New.
13106 * config/arm/arm-mve-builtins-base.def (vabsq, vnegq, vclsq)
13107 (vclzq, vqabsq, vqnegq): New.
13108 * config/arm/arm-mve-builtins-base.h (vabsq, vnegq, vclsq, vclzq)
13109 (vqabsq, vqnegq): New.
13110 * config/arm/arm_mve.h (vabsq): Remove.
13113 (vabsq_f16): Remove.
13114 (vabsq_f32): Remove.
13115 (vabsq_s8): Remove.
13116 (vabsq_s16): Remove.
13117 (vabsq_s32): Remove.
13118 (vabsq_m_s8): Remove.
13119 (vabsq_m_s16): Remove.
13120 (vabsq_m_s32): Remove.
13121 (vabsq_m_f16): Remove.
13122 (vabsq_m_f32): Remove.
13123 (vabsq_x_s8): Remove.
13124 (vabsq_x_s16): Remove.
13125 (vabsq_x_s32): Remove.
13126 (vabsq_x_f16): Remove.
13127 (vabsq_x_f32): Remove.
13128 (__arm_vabsq_s8): Remove.
13129 (__arm_vabsq_s16): Remove.
13130 (__arm_vabsq_s32): Remove.
13131 (__arm_vabsq_m_s8): Remove.
13132 (__arm_vabsq_m_s16): Remove.
13133 (__arm_vabsq_m_s32): Remove.
13134 (__arm_vabsq_x_s8): Remove.
13135 (__arm_vabsq_x_s16): Remove.
13136 (__arm_vabsq_x_s32): Remove.
13137 (__arm_vabsq_f16): Remove.
13138 (__arm_vabsq_f32): Remove.
13139 (__arm_vabsq_m_f16): Remove.
13140 (__arm_vabsq_m_f32): Remove.
13141 (__arm_vabsq_x_f16): Remove.
13142 (__arm_vabsq_x_f32): Remove.
13143 (__arm_vabsq): Remove.
13144 (__arm_vabsq_m): Remove.
13145 (__arm_vabsq_x): Remove.
13149 (vnegq_f16): Remove.
13150 (vnegq_f32): Remove.
13151 (vnegq_s8): Remove.
13152 (vnegq_s16): Remove.
13153 (vnegq_s32): Remove.
13154 (vnegq_m_s8): Remove.
13155 (vnegq_m_s16): Remove.
13156 (vnegq_m_s32): Remove.
13157 (vnegq_m_f16): Remove.
13158 (vnegq_m_f32): Remove.
13159 (vnegq_x_s8): Remove.
13160 (vnegq_x_s16): Remove.
13161 (vnegq_x_s32): Remove.
13162 (vnegq_x_f16): Remove.
13163 (vnegq_x_f32): Remove.
13164 (__arm_vnegq_s8): Remove.
13165 (__arm_vnegq_s16): Remove.
13166 (__arm_vnegq_s32): Remove.
13167 (__arm_vnegq_m_s8): Remove.
13168 (__arm_vnegq_m_s16): Remove.
13169 (__arm_vnegq_m_s32): Remove.
13170 (__arm_vnegq_x_s8): Remove.
13171 (__arm_vnegq_x_s16): Remove.
13172 (__arm_vnegq_x_s32): Remove.
13173 (__arm_vnegq_f16): Remove.
13174 (__arm_vnegq_f32): Remove.
13175 (__arm_vnegq_m_f16): Remove.
13176 (__arm_vnegq_m_f32): Remove.
13177 (__arm_vnegq_x_f16): Remove.
13178 (__arm_vnegq_x_f32): Remove.
13179 (__arm_vnegq): Remove.
13180 (__arm_vnegq_m): Remove.
13181 (__arm_vnegq_x): Remove.
13185 (vclsq_s8): Remove.
13186 (vclsq_s16): Remove.
13187 (vclsq_s32): Remove.
13188 (vclsq_m_s8): Remove.
13189 (vclsq_m_s16): Remove.
13190 (vclsq_m_s32): Remove.
13191 (vclsq_x_s8): Remove.
13192 (vclsq_x_s16): Remove.
13193 (vclsq_x_s32): Remove.
13194 (__arm_vclsq_s8): Remove.
13195 (__arm_vclsq_s16): Remove.
13196 (__arm_vclsq_s32): Remove.
13197 (__arm_vclsq_m_s8): Remove.
13198 (__arm_vclsq_m_s16): Remove.
13199 (__arm_vclsq_m_s32): Remove.
13200 (__arm_vclsq_x_s8): Remove.
13201 (__arm_vclsq_x_s16): Remove.
13202 (__arm_vclsq_x_s32): Remove.
13203 (__arm_vclsq): Remove.
13204 (__arm_vclsq_m): Remove.
13205 (__arm_vclsq_x): Remove.
13209 (vclzq_s8): Remove.
13210 (vclzq_s16): Remove.
13211 (vclzq_s32): Remove.
13212 (vclzq_u8): Remove.
13213 (vclzq_u16): Remove.
13214 (vclzq_u32): Remove.
13215 (vclzq_m_u8): Remove.
13216 (vclzq_m_s8): Remove.
13217 (vclzq_m_u16): Remove.
13218 (vclzq_m_s16): Remove.
13219 (vclzq_m_u32): Remove.
13220 (vclzq_m_s32): Remove.
13221 (vclzq_x_s8): Remove.
13222 (vclzq_x_s16): Remove.
13223 (vclzq_x_s32): Remove.
13224 (vclzq_x_u8): Remove.
13225 (vclzq_x_u16): Remove.
13226 (vclzq_x_u32): Remove.
13227 (__arm_vclzq_s8): Remove.
13228 (__arm_vclzq_s16): Remove.
13229 (__arm_vclzq_s32): Remove.
13230 (__arm_vclzq_u8): Remove.
13231 (__arm_vclzq_u16): Remove.
13232 (__arm_vclzq_u32): Remove.
13233 (__arm_vclzq_m_u8): Remove.
13234 (__arm_vclzq_m_s8): Remove.
13235 (__arm_vclzq_m_u16): Remove.
13236 (__arm_vclzq_m_s16): Remove.
13237 (__arm_vclzq_m_u32): Remove.
13238 (__arm_vclzq_m_s32): Remove.
13239 (__arm_vclzq_x_s8): Remove.
13240 (__arm_vclzq_x_s16): Remove.
13241 (__arm_vclzq_x_s32): Remove.
13242 (__arm_vclzq_x_u8): Remove.
13243 (__arm_vclzq_x_u16): Remove.
13244 (__arm_vclzq_x_u32): Remove.
13245 (__arm_vclzq): Remove.
13246 (__arm_vclzq_m): Remove.
13247 (__arm_vclzq_x): Remove.
13250 (vqnegq_m): Remove.
13251 (vqabsq_m): Remove.
13252 (vqabsq_s8): Remove.
13253 (vqabsq_s16): Remove.
13254 (vqabsq_s32): Remove.
13255 (vqnegq_s8): Remove.
13256 (vqnegq_s16): Remove.
13257 (vqnegq_s32): Remove.
13258 (vqnegq_m_s8): Remove.
13259 (vqabsq_m_s8): Remove.
13260 (vqnegq_m_s16): Remove.
13261 (vqabsq_m_s16): Remove.
13262 (vqnegq_m_s32): Remove.
13263 (vqabsq_m_s32): Remove.
13264 (__arm_vqabsq_s8): Remove.
13265 (__arm_vqabsq_s16): Remove.
13266 (__arm_vqabsq_s32): Remove.
13267 (__arm_vqnegq_s8): Remove.
13268 (__arm_vqnegq_s16): Remove.
13269 (__arm_vqnegq_s32): Remove.
13270 (__arm_vqnegq_m_s8): Remove.
13271 (__arm_vqabsq_m_s8): Remove.
13272 (__arm_vqnegq_m_s16): Remove.
13273 (__arm_vqabsq_m_s16): Remove.
13274 (__arm_vqnegq_m_s32): Remove.
13275 (__arm_vqabsq_m_s32): Remove.
13276 (__arm_vqabsq): Remove.
13277 (__arm_vqnegq): Remove.
13278 (__arm_vqnegq_m): Remove.
13279 (__arm_vqabsq_m): Remove.
13281 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
13283 * config/arm/iterators.md (MVE_INT_M_UNARY, MVE_INT_UNARY)
13284 (MVE_FP_UNARY, MVE_FP_M_UNARY): New.
13285 (mve_insn): Add vabs, vcls, vclz, vneg, vqabs, vqneg, vrnda,
13286 vrndm, vrndn, vrndp, vrnd, vrndx.
13287 (isu): Add VABSQ_M_S, VCLSQ_M_S, VCLZQ_M_S, VCLZQ_M_U, VNEGQ_M_S,
13288 VQABSQ_M_S, VQNEGQ_M_S.
13290 * config/arm/mve.md (mve_vrndq_m_f<mode>, mve_vrndxq_f<mode>)
13291 (mve_vrndq_f<mode>, mve_vrndpq_f<mode>, mve_vrndnq_f<mode>)
13292 (mve_vrndmq_f<mode>, mve_vrndaq_f<mode>): Merge into ...
13293 (@mve_<mve_insn>q_f<mode>): ... this.
13294 (mve_vnegq_f<mode>, mve_vabsq_f<mode>): Merge into ...
13295 (mve_v<absneg_str>q_f<mode>): ... this.
13296 (mve_vnegq_s<mode>, mve_vabsq_s<mode>): Merge into ...
13297 (mve_v<absneg_str>q_s<mode>): ... this.
13298 (mve_vclsq_s<mode>, mve_vqnegq_s<mode>, mve_vqabsq_s<mode>): Merge into ...
13299 (@mve_<mve_insn>q_<supf><mode>): ... this.
13300 (mve_vabsq_m_s<mode>, mve_vclsq_m_s<mode>)
13301 (mve_vclzq_m_<supf><mode>, mve_vnegq_m_s<mode>)
13302 (mve_vqabsq_m_s<mode>, mve_vqnegq_m_s<mode>): Merge into ...
13303 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
13304 (mve_vabsq_m_f<mode>, mve_vnegq_m_f<mode>, mve_vrndaq_m_f<mode>)
13305 (mve_vrndmq_m_f<mode>, mve_vrndnq_m_f<mode>, mve_vrndpq_m_f<mode>)
13306 (mve_vrndxq_m_f<mode>): Merge into ...
13307 (@mve_<mve_insn>q_m_f<mode>): ... this.
13309 2023-05-09 Christophe Lyon <christophe.lyon@arm.com>
13311 * config/arm/arm-mve-builtins-shapes.cc (unary): New.
13312 * config/arm/arm-mve-builtins-shapes.h (unary): New.
13314 2023-05-09 Jakub Jelinek <jakub@redhat.com>
13316 * mux-utils.h: Fix comment typo, avoides -> avoids.
13318 2023-05-09 Jakub Jelinek <jakub@redhat.com>
13320 PR tree-optimization/109778
13321 * wide-int.h (wi::lrotate, wi::rrotate): Call wi::lrshift on
13322 wi::zext (x, width) rather than x if width != precision, rather
13323 than using wi::zext (right, width) after the shift.
13324 * tree-ssa-ccp.cc (bit_value_binop): Call wi::ext on the results
13325 of wi::lrotate or wi::rrotate.
13327 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
13329 * genmatch.cc (get_out_file): Make static and rename to ...
13330 (choose_output): ... this. Reimplement. Update all uses ...
13331 (decision_tree::gen): ... here and ...
13334 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
13336 * genmatch.cc (showUsage): Reimplement as ...
13337 (usage): ...this. Adjust all uses.
13338 (main): Print usage when no arguments. Add missing 'return 1'.
13340 2023-05-09 Alexander Monakov <amonakov@ispras.ru>
13342 * genmatch.cc (header_file): Make static.
13343 (emit_func): Rename to...
13344 (fp_decl): ... this. Adjust all uses.
13345 (fp_decl_done): New function. Use it...
13346 (decision_tree::gen): ... here and...
13347 (write_predicate): ... here.
13350 2023-05-09 Richard Sandiford <richard.sandiford@arm.com>
13352 * ira-conflicts.cc (can_use_same_reg_p): Skip over non-matching
13355 2023-05-08 Roger Sayle <roger@nextmovesoftware.com>
13356 Uros Bizjak <ubizjak@gmail.com>
13358 * config/i386/i386.md (any_or_plus): Move definition earlier.
13359 (*insvti_highpart_1): New define_insn_and_split to overwrite
13360 (insv) the highpart of a TImode register/memory.
13362 2023-05-08 Eugene Rozenfeld <erozen@microsoft.com>
13364 * auto-profile.cc (auto_profile): Check todo from early_inline
13365 to see if cleanup_tree_vfg needs to be called.
13366 (early_inline): Return todo from early_inliner.
13368 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
13370 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::get_vector_info):
13372 (pass_vsetvl::get_block_info): New.
13373 (pass_vsetvl::update_vector_info): New.
13374 (pass_vsetvl::simple_vsetvl): Use get_vector_info.
13375 (pass_vsetvl::compute_local_backward_infos): Ditto.
13376 (pass_vsetvl::transfer_before): Ditto.
13377 (pass_vsetvl::transfer_after): Ditto.
13378 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
13379 (pass_vsetvl::local_eliminate_vsetvl_insn): Ditto.
13380 (pass_vsetvl::cleanup_insns): Ditto.
13381 (pass_vsetvl::compute_local_backward_infos): Use
13382 update_vector_info.
13384 2023-05-08 Jeff Law <jlaw@ventanamicro>
13386 * config/stormy16/stormy16.md (zero_extendhisi2): Fix length.
13388 2023-05-08 Richard Biener <rguenther@suse.de>
13389 Michael Meissner <meissner@linux.ibm.com>
13391 PR middle-end/108623
13392 * tree-core.h (tree_type_common): Bump up precision field to 16 bits.
13393 Align bit fields > 1 bit to at least an 8-bit boundary.
13395 2023-05-08 Andrew Pinski <apinski@marvell.com>
13397 PR tree-optimization/109424
13398 PR tree-optimization/59424
13399 * tree-ssa-phiopt.cc (factor_out_conditional_conversion): Rename to ...
13400 (factor_out_conditional_operation): This and add support for all unary
13402 (pass_phiopt::execute): Update call to factor_out_conditional_conversion
13403 to call factor_out_conditional_operation instead.
13405 2023-05-08 Andrew Pinski <apinski@marvell.com>
13407 * tree-ssa-phiopt.cc (pass_phiopt::execute): Loop
13408 over factor_out_conditional_conversion.
13410 2023-05-08 Andrew Pinski <apinski@marvell.com>
13412 PR tree-optimization/49959
13413 PR tree-optimization/103771
13414 * tree-ssa-phiopt.cc (pass_phiopt::execute): Support
13415 Diamond shapped bb form for factor_out_conditional_conversion.
13417 2023-05-08 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13419 * config/riscv/autovec.md (movmisalign<mode>): New pattern.
13420 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): Delete.
13421 (riscv_vector_get_mask_mode): Ditto.
13422 (get_mask_policy_no_pred): Ditto.
13423 (get_tail_policy_no_pred): Ditto.
13424 (get_mask_mode): New function.
13425 * config/riscv/riscv-v.cc (get_mask_policy_no_pred): Delete.
13426 (get_tail_policy_no_pred): Ditto.
13427 (riscv_vector_mask_mode_p): Ditto.
13428 (riscv_vector_get_mask_mode): Ditto.
13429 (get_mask_mode): New function.
13430 * config/riscv/riscv-vector-builtins.cc (use_real_merge_p): Remove
13432 (get_tail_policy_for_pred): Ditto.
13433 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred): Ditto.
13434 (get_mask_policy_for_pred): Ditto
13435 * config/riscv/riscv.cc (riscv_get_mask_mode): Refine codes.
13437 2023-05-08 Kito Cheng <kito.cheng@sifive.com>
13439 * common/config/riscv/riscv-common.cc (riscv_select_multilib_by_abi): New.
13440 (riscv_select_multilib): New.
13441 (riscv_compute_multilib): Extract logic to riscv_select_multilib and
13442 also handle select_by_abi.
13443 * config/riscv/elf.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Change it
13444 to select_by_abi_arch_cmodel from 1.
13445 * config/riscv/linux.h (RISCV_USE_CUSTOMISED_MULTI_LIB): Define.
13446 * config/riscv/riscv-opts.h (enum riscv_multilib_select_kind): New.
13448 2023-05-08 Alexander Monakov <amonakov@ispras.ru>
13450 * Makefile.in: (gimple-match-head.o-warn): Remove.
13451 (GIMPLE_MATCH_PD_SEQ_SRC): Do not depend on
13452 gimple-match-exports.cc.
13453 (gimple-match-auto.h): Only depend on s-gimple-match.
13454 (generic-match-auto.h): Likewise.
13456 2023-05-08 Andrew Pinski <apinski@marvell.com>
13458 PR tree-optimization/109691
13459 * tree-ssa-dce.cc (simple_dce_from_worklist): Add need_eh_cleanup
13461 If the removed statement can throw, have need_eh_cleanup
13462 include the bb of that statement.
13463 * tree-ssa-dce.h (simple_dce_from_worklist): Update declaration.
13464 * tree-ssa-propagate.cc (struct prop_stats_d): Remove
13466 (substitute_and_fold_dom_walker::substitute_and_fold_dom_walker):
13467 Initialize dceworklist instead of stmts_to_remove.
13468 (substitute_and_fold_dom_walker::~substitute_and_fold_dom_walker):
13469 Destore dceworklist instead of stmts_to_remove.
13470 (substitute_and_fold_dom_walker::before_dom_children):
13471 Set dceworklist instead of adding to stmts_to_remove.
13472 (substitute_and_fold_engine::substitute_and_fold):
13473 Call simple_dce_from_worklist instead of poping
13475 Don't update the stat on removal statements.
13477 2023-05-07 Andrew Pinski <apinski@marvell.com>
13480 * config/aarch64/aarch64-builtins.cc (aarch64_simd_switcher::aarch64_simd_switcher):
13481 Change argument type to aarch64_feature_flags.
13482 * config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Change
13483 constructor argument type to aarch64_feature_flags.
13484 Change m_old_asm_isa_flags to be aarch64_feature_flags.
13486 2023-05-07 Jiufu Guo <guojiufu@linux.ibm.com>
13488 * config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Generate
13489 more parallel code if can_create_pseudo_p.
13491 2023-05-07 Roger Sayle <roger@nextmovesoftware.com>
13494 * lower-subreg.cc (resolve_simple_move): Don't emit a clobber
13495 immediately before moving a multi-word register by parts.
13497 2023-05-06 Jeff Law <jlaw@ventanamicro>
13499 * config/riscv/riscv-v.cc (riscv_vector_preferred_simd_mode): Delete.
13501 2023-05-06 Michael Collison <collison@rivosinc.com>
13503 * tree-vect-slp.cc (can_duplicate_and_interleave_p):
13504 Check that GET_MODE_NUNITS is a multiple of 2.
13506 2023-05-06 Michael Collison <collison@rivosinc.com>
13508 * config/riscv/riscv.cc
13509 (riscv_estimated_poly_value): Implement
13510 TARGET_ESTIMATED_POLY_VALUE.
13511 (riscv_preferred_simd_mode): Implement
13512 TARGET_VECTORIZE_PREFERRED_SIMD_MODE.
13513 (riscv_get_mask_mode): Implement TARGET_VECTORIZE_GET_MASK_MODE.
13514 (riscv_empty_mask_is_expensive): Implement
13515 TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE.
13516 (riscv_vectorize_create_costs): Implement
13517 TARGET_VECTORIZE_CREATE_COSTS.
13518 (riscv_support_vector_misalignment): Implement
13519 TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT.
13520 (TARGET_ESTIMATED_POLY_VALUE): Register target macro.
13521 (TARGET_VECTORIZE_GET_MASK_MODE): Ditto.
13522 (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Ditto.
13523 (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): Ditto.
13525 2023-05-06 Jeff Law <jlaw@ventanamicro>
13527 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Remove
13528 duplicate definition.
13530 2023-05-06 Michael Collison <collison@rivosinc.com>
13532 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): New function.
13533 (riscv_vector_preferred_simd_mode): Ditto.
13534 (get_mask_policy_no_pred): Ditto.
13535 (get_tail_policy_no_pred): Ditto.
13536 (riscv_vector_mask_mode_p): Ditto.
13537 (riscv_vector_get_mask_mode): Ditto.
13539 2023-05-06 Michael Collison <collison@rivosinc.com>
13541 * config/riscv/riscv-vector-builtins.cc (get_tail_policy_for_pred):
13542 Remove static declaration to to make externally visible.
13543 (get_mask_policy_for_pred): Ditto.
13544 * config/riscv/riscv-vector-builtins.h (get_tail_policy_for_pred):
13545 New external declaration.
13546 (get_mask_policy_for_pred): Ditto.
13548 2023-05-06 Michael Collison <collison@rivosinc.com>
13550 * config/riscv/riscv-protos.h (riscv_vector_mask_mode_p): New.
13551 (riscv_vector_get_mask_mode): Ditto.
13552 (get_mask_policy_no_pred): Ditto.
13553 (get_tail_policy_no_pred): Ditto.
13555 2023-05-06 Xi Ruoyao <xry111@xry111.site>
13557 * config/loongarch/loongarch.h (struct machine_function): Add
13558 reg_is_wrapped_separately array for register wrapping
13560 * config/loongarch/loongarch.cc
13561 (loongarch_get_separate_components): New function.
13562 (loongarch_components_for_bb): Likewise.
13563 (loongarch_disqualify_components): Likewise.
13564 (loongarch_process_components): Likewise.
13565 (loongarch_emit_prologue_components): Likewise.
13566 (loongarch_emit_epilogue_components): Likewise.
13567 (loongarch_set_handled_components): Likewise.
13568 (TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define.
13569 (TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise.
13570 (TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise.
13571 (TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise.
13572 (TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise.
13573 (TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise.
13574 (loongarch_for_each_saved_reg): Skip registers that are wrapped
13577 2023-05-06 Xi Ruoyao <xry111@xry111.site>
13580 * Makefile.in (s-macro_list): Pass -nostdinc to
13583 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13585 * config/riscv/riscv-protos.h (preferred_simd_mode): New function.
13586 * config/riscv/riscv-v.cc (autovec_use_vlmax_p): Ditto.
13587 (preferred_simd_mode): Ditto.
13588 * config/riscv/riscv.cc (riscv_get_arg_info): Handle RVV type in function arg.
13589 (riscv_convert_vector_bits): Adjust for RVV auto-vectorization.
13590 (riscv_preferred_simd_mode): New function.
13591 (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): New target hook support.
13592 * config/riscv/vector.md: Add autovec.md.
13593 * config/riscv/autovec.md: New file.
13595 2023-05-06 Jakub Jelinek <jakub@redhat.com>
13597 * real.h (dconst_pi): Define.
13598 (dconst_e_ptr): Formatting fix.
13599 (dconst_pi_ptr): Declare.
13600 * real.cc (dconst_pi_ptr): New function.
13601 * gimple-range-op.cc (cfn_sincos::fold_range): Intersect the generic
13602 boundaries range with range computed from sin/cos of the particular
13603 bounds if the argument range is shorter than 2*pi.
13604 (cfn_sincos::op1_range): Take bulps into account when determining
13605 which result ranges are always invalid or behave like known NAN.
13607 2023-05-06 Aldy Hernandez <aldyh@redhat.com>
13609 * gimple-range-cache.cc (sbr_sparse_bitmap::set_bb_range): Do not
13610 pass type to vrange_storage::equal_p.
13611 * value-range-storage.cc (vrange_storage::equal_p): Remove type.
13612 (irange_storage::equal_p): Same.
13613 (frange_storage::equal_p): Same.
13614 * value-range-storage.h (class frange_storage): Same.
13616 2023-05-06 Juzhe-Zhong <juzhe.zhong@rivai.ai>
13619 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): Remove it.
13620 (pass_vsetvl::local_eliminate_vsetvl_insn): New function.
13622 2023-05-06 liuhongt <hongtao.liu@intel.com>
13624 * combine.cc (maybe_swap_commutative_operands): Canonicalize
13625 vec_merge when mask is constant.
13626 * doc/md.texi: Document vec_merge canonicalization.
13628 2023-05-06 Jakub Jelinek <jakub@redhat.com>
13630 * value-range.h (frange_arithmetic): Declare.
13631 * range-op-float.cc (frange_arithmetic): No longer static.
13632 * gimple-range-op.cc (frange_mpfr_arg1): New function.
13633 (cfn_sqrt::fold_range): Intersect the generic boundaries range
13634 with range computed from sqrt of the particular bounds.
13635 (cfn_sqrt::op1_range): Intersect the generic boundaries range
13636 with range computed from squared particular bounds.
13638 2023-05-06 Jakub Jelinek <jakub@redhat.com>
13640 * Makefile.in (check_p_numbers): Rename to one_to_9999, move
13641 earlier with helper variables also renamed.
13642 (MATCH_SPLUT_SEQ): Use $(wordlist 1,$(NUM_MATCH_SPLITS),$(one_to_9999))
13643 instead of $(shell seq 1 $(NUM_MATCH_SPLITS)).
13644 (check_p_subdirs): Use $(one_to_9999) instead of $(check_p_numbers).
13646 2023-05-06 Hans-Peter Nilsson <hp@axis.com>
13648 * config/cris/cris.md (splitop): Add PLUS.
13649 * config/cris/cris.cc (cris_split_constant): Also handle
13650 PLUS when a split into two insns may be useful.
13652 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
13654 * config/cris/cris.md (movandsplit1): New define_peephole2.
13656 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
13658 * config/cris/cris.md (lsrandsplit1): New define_peephole2.
13660 2023-05-05 Hans-Peter Nilsson <hp@axis.com>
13662 * doc/md.texi (define_peephole2): Document order of scanning.
13664 2023-05-05 Pan Li <pan2.li@intel.com>
13665 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
13667 * config/riscv/vector.md: Allow const as the operand of RVV
13668 indexed load/store.
13670 2023-05-05 Pan Li <pan2.li@intel.com>
13672 * config/riscv/riscv.h (VECTOR_STORE_FLAG_VALUE): Add new macro
13673 consumed by simplify_rtx.
13675 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
13677 * config/arm/arm-mve-builtins-base.cc (vrshrq, vshrq): New.
13678 * config/arm/arm-mve-builtins-base.def (vrshrq, vshrq): New.
13679 * config/arm/arm-mve-builtins-base.h (vrshrq, vshrq): New.
13680 * config/arm/arm_mve.h (vshrq): Remove.
13682 (vrshrq_m): Remove.
13684 (vrshrq_x): Remove.
13686 (vshrq_n_s8): Remove.
13687 (vshrq_n_s16): Remove.
13688 (vshrq_n_s32): Remove.
13689 (vshrq_n_u8): Remove.
13690 (vshrq_n_u16): Remove.
13691 (vshrq_n_u32): Remove.
13692 (vrshrq_n_u8): Remove.
13693 (vrshrq_n_s8): Remove.
13694 (vrshrq_n_u16): Remove.
13695 (vrshrq_n_s16): Remove.
13696 (vrshrq_n_u32): Remove.
13697 (vrshrq_n_s32): Remove.
13698 (vrshrq_m_n_s8): Remove.
13699 (vrshrq_m_n_s32): Remove.
13700 (vrshrq_m_n_s16): Remove.
13701 (vrshrq_m_n_u8): Remove.
13702 (vrshrq_m_n_u32): Remove.
13703 (vrshrq_m_n_u16): Remove.
13704 (vshrq_m_n_s8): Remove.
13705 (vshrq_m_n_s32): Remove.
13706 (vshrq_m_n_s16): Remove.
13707 (vshrq_m_n_u8): Remove.
13708 (vshrq_m_n_u32): Remove.
13709 (vshrq_m_n_u16): Remove.
13710 (vrshrq_x_n_s8): Remove.
13711 (vrshrq_x_n_s16): Remove.
13712 (vrshrq_x_n_s32): Remove.
13713 (vrshrq_x_n_u8): Remove.
13714 (vrshrq_x_n_u16): Remove.
13715 (vrshrq_x_n_u32): Remove.
13716 (vshrq_x_n_s8): Remove.
13717 (vshrq_x_n_s16): Remove.
13718 (vshrq_x_n_s32): Remove.
13719 (vshrq_x_n_u8): Remove.
13720 (vshrq_x_n_u16): Remove.
13721 (vshrq_x_n_u32): Remove.
13722 (__arm_vshrq_n_s8): Remove.
13723 (__arm_vshrq_n_s16): Remove.
13724 (__arm_vshrq_n_s32): Remove.
13725 (__arm_vshrq_n_u8): Remove.
13726 (__arm_vshrq_n_u16): Remove.
13727 (__arm_vshrq_n_u32): Remove.
13728 (__arm_vrshrq_n_u8): Remove.
13729 (__arm_vrshrq_n_s8): Remove.
13730 (__arm_vrshrq_n_u16): Remove.
13731 (__arm_vrshrq_n_s16): Remove.
13732 (__arm_vrshrq_n_u32): Remove.
13733 (__arm_vrshrq_n_s32): Remove.
13734 (__arm_vrshrq_m_n_s8): Remove.
13735 (__arm_vrshrq_m_n_s32): Remove.
13736 (__arm_vrshrq_m_n_s16): Remove.
13737 (__arm_vrshrq_m_n_u8): Remove.
13738 (__arm_vrshrq_m_n_u32): Remove.
13739 (__arm_vrshrq_m_n_u16): Remove.
13740 (__arm_vshrq_m_n_s8): Remove.
13741 (__arm_vshrq_m_n_s32): Remove.
13742 (__arm_vshrq_m_n_s16): Remove.
13743 (__arm_vshrq_m_n_u8): Remove.
13744 (__arm_vshrq_m_n_u32): Remove.
13745 (__arm_vshrq_m_n_u16): Remove.
13746 (__arm_vrshrq_x_n_s8): Remove.
13747 (__arm_vrshrq_x_n_s16): Remove.
13748 (__arm_vrshrq_x_n_s32): Remove.
13749 (__arm_vrshrq_x_n_u8): Remove.
13750 (__arm_vrshrq_x_n_u16): Remove.
13751 (__arm_vrshrq_x_n_u32): Remove.
13752 (__arm_vshrq_x_n_s8): Remove.
13753 (__arm_vshrq_x_n_s16): Remove.
13754 (__arm_vshrq_x_n_s32): Remove.
13755 (__arm_vshrq_x_n_u8): Remove.
13756 (__arm_vshrq_x_n_u16): Remove.
13757 (__arm_vshrq_x_n_u32): Remove.
13758 (__arm_vshrq): Remove.
13759 (__arm_vrshrq): Remove.
13760 (__arm_vrshrq_m): Remove.
13761 (__arm_vshrq_m): Remove.
13762 (__arm_vrshrq_x): Remove.
13763 (__arm_vshrq_x): Remove.
13765 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
13767 * config/arm/iterators.md (MVE_VSHRQ_M_N, MVE_VSHRQ_N): New.
13768 (mve_insn): Add vrshr, vshr.
13769 * config/arm/mve.md (mve_vshrq_n_<supf><mode>)
13770 (mve_vrshrq_n_<supf><mode>): Merge into ...
13771 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
13772 (mve_vrshrq_m_n_<supf><mode>, mve_vshrq_m_n_<supf><mode>): Merge
13774 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
13776 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
13778 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift): New.
13779 * config/arm/arm-mve-builtins-shapes.h (binary_rshift): New.
13781 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
13783 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_U_F): New.
13784 (vqshrunbq, vqshruntq, vqrshrunbq, vqrshruntq): New.
13785 * config/arm/arm-mve-builtins-base.def (vqshrunbq, vqshruntq)
13786 (vqrshrunbq, vqrshruntq): New.
13787 * config/arm/arm-mve-builtins-base.h (vqshrunbq, vqshruntq)
13788 (vqrshrunbq, vqrshruntq): New.
13789 * config/arm/arm-mve-builtins.cc
13790 (function_instance::has_inactive_argument): Handle vqshrunbq,
13791 vqshruntq, vqrshrunbq, vqrshruntq.
13792 * config/arm/arm_mve.h (vqrshrunbq): Remove.
13793 (vqrshruntq): Remove.
13794 (vqrshrunbq_m): Remove.
13795 (vqrshruntq_m): Remove.
13796 (vqrshrunbq_n_s16): Remove.
13797 (vqrshrunbq_n_s32): Remove.
13798 (vqrshruntq_n_s16): Remove.
13799 (vqrshruntq_n_s32): Remove.
13800 (vqrshrunbq_m_n_s32): Remove.
13801 (vqrshrunbq_m_n_s16): Remove.
13802 (vqrshruntq_m_n_s32): Remove.
13803 (vqrshruntq_m_n_s16): Remove.
13804 (__arm_vqrshrunbq_n_s16): Remove.
13805 (__arm_vqrshrunbq_n_s32): Remove.
13806 (__arm_vqrshruntq_n_s16): Remove.
13807 (__arm_vqrshruntq_n_s32): Remove.
13808 (__arm_vqrshrunbq_m_n_s32): Remove.
13809 (__arm_vqrshrunbq_m_n_s16): Remove.
13810 (__arm_vqrshruntq_m_n_s32): Remove.
13811 (__arm_vqrshruntq_m_n_s16): Remove.
13812 (__arm_vqrshrunbq): Remove.
13813 (__arm_vqrshruntq): Remove.
13814 (__arm_vqrshrunbq_m): Remove.
13815 (__arm_vqrshruntq_m): Remove.
13816 (vqshrunbq): Remove.
13817 (vqshruntq): Remove.
13818 (vqshrunbq_m): Remove.
13819 (vqshruntq_m): Remove.
13820 (vqshrunbq_n_s16): Remove.
13821 (vqshruntq_n_s16): Remove.
13822 (vqshrunbq_n_s32): Remove.
13823 (vqshruntq_n_s32): Remove.
13824 (vqshrunbq_m_n_s32): Remove.
13825 (vqshrunbq_m_n_s16): Remove.
13826 (vqshruntq_m_n_s32): Remove.
13827 (vqshruntq_m_n_s16): Remove.
13828 (__arm_vqshrunbq_n_s16): Remove.
13829 (__arm_vqshruntq_n_s16): Remove.
13830 (__arm_vqshrunbq_n_s32): Remove.
13831 (__arm_vqshruntq_n_s32): Remove.
13832 (__arm_vqshrunbq_m_n_s32): Remove.
13833 (__arm_vqshrunbq_m_n_s16): Remove.
13834 (__arm_vqshruntq_m_n_s32): Remove.
13835 (__arm_vqshruntq_m_n_s16): Remove.
13836 (__arm_vqshrunbq): Remove.
13837 (__arm_vqshruntq): Remove.
13838 (__arm_vqshrunbq_m): Remove.
13839 (__arm_vqshruntq_m): Remove.
13841 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
13843 * config/arm/iterators.md (MVE_SHRN_N): Add VQRSHRUNBQ,
13844 VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
13845 (MVE_SHRN_M_N): Likewise.
13846 (mve_insn): Add vqrshrunb, vqrshrunt, vqshrunb, vqshrunt.
13847 (isu): Add VQRSHRUNBQ, VQRSHRUNTQ, VQSHRUNBQ, VQSHRUNTQ.
13849 * config/arm/mve.md (mve_vqrshrunbq_n_s<mode>): Remove.
13850 (mve_vqrshruntq_n_s<mode>): Remove.
13851 (mve_vqshrunbq_n_s<mode>): Remove.
13852 (mve_vqshruntq_n_s<mode>): Remove.
13853 (mve_vqrshrunbq_m_n_s<mode>): Remove.
13854 (mve_vqrshruntq_m_n_s<mode>): Remove.
13855 (mve_vqshrunbq_m_n_s<mode>): Remove.
13856 (mve_vqshruntq_m_n_s<mode>): Remove.
13858 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
13860 * config/arm/arm-mve-builtins-shapes.cc
13861 (binary_rshift_narrow_unsigned): New.
13862 * config/arm/arm-mve-builtins-shapes.h
13863 (binary_rshift_narrow_unsigned): New.
13865 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
13867 * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N_NO_F): New.
13868 (vshrnbq, vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq)
13869 (vqrshrnbq, vqrshrntq): New.
13870 * config/arm/arm-mve-builtins-base.def (vshrnbq, vshrntq)
13871 (vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq):
13873 * config/arm/arm-mve-builtins-base.h (vshrnbq, vshrntq, vrshrnbq)
13874 (vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq, vqrshrntq): New.
13875 * config/arm/arm-mve-builtins.cc
13876 (function_instance::has_inactive_argument): Handle vshrnbq,
13877 vshrntq, vrshrnbq, vrshrntq, vqshrnbq, vqshrntq, vqrshrnbq,
13879 * config/arm/arm_mve.h (vshrnbq): Remove.
13881 (vshrnbq_m): Remove.
13882 (vshrntq_m): Remove.
13883 (vshrnbq_n_s16): Remove.
13884 (vshrntq_n_s16): Remove.
13885 (vshrnbq_n_u16): Remove.
13886 (vshrntq_n_u16): Remove.
13887 (vshrnbq_n_s32): Remove.
13888 (vshrntq_n_s32): Remove.
13889 (vshrnbq_n_u32): Remove.
13890 (vshrntq_n_u32): Remove.
13891 (vshrnbq_m_n_s32): Remove.
13892 (vshrnbq_m_n_s16): Remove.
13893 (vshrnbq_m_n_u32): Remove.
13894 (vshrnbq_m_n_u16): Remove.
13895 (vshrntq_m_n_s32): Remove.
13896 (vshrntq_m_n_s16): Remove.
13897 (vshrntq_m_n_u32): Remove.
13898 (vshrntq_m_n_u16): Remove.
13899 (__arm_vshrnbq_n_s16): Remove.
13900 (__arm_vshrntq_n_s16): Remove.
13901 (__arm_vshrnbq_n_u16): Remove.
13902 (__arm_vshrntq_n_u16): Remove.
13903 (__arm_vshrnbq_n_s32): Remove.
13904 (__arm_vshrntq_n_s32): Remove.
13905 (__arm_vshrnbq_n_u32): Remove.
13906 (__arm_vshrntq_n_u32): Remove.
13907 (__arm_vshrnbq_m_n_s32): Remove.
13908 (__arm_vshrnbq_m_n_s16): Remove.
13909 (__arm_vshrnbq_m_n_u32): Remove.
13910 (__arm_vshrnbq_m_n_u16): Remove.
13911 (__arm_vshrntq_m_n_s32): Remove.
13912 (__arm_vshrntq_m_n_s16): Remove.
13913 (__arm_vshrntq_m_n_u32): Remove.
13914 (__arm_vshrntq_m_n_u16): Remove.
13915 (__arm_vshrnbq): Remove.
13916 (__arm_vshrntq): Remove.
13917 (__arm_vshrnbq_m): Remove.
13918 (__arm_vshrntq_m): Remove.
13919 (vrshrnbq): Remove.
13920 (vrshrntq): Remove.
13921 (vrshrnbq_m): Remove.
13922 (vrshrntq_m): Remove.
13923 (vrshrnbq_n_s16): Remove.
13924 (vrshrntq_n_s16): Remove.
13925 (vrshrnbq_n_u16): Remove.
13926 (vrshrntq_n_u16): Remove.
13927 (vrshrnbq_n_s32): Remove.
13928 (vrshrntq_n_s32): Remove.
13929 (vrshrnbq_n_u32): Remove.
13930 (vrshrntq_n_u32): Remove.
13931 (vrshrnbq_m_n_s32): Remove.
13932 (vrshrnbq_m_n_s16): Remove.
13933 (vrshrnbq_m_n_u32): Remove.
13934 (vrshrnbq_m_n_u16): Remove.
13935 (vrshrntq_m_n_s32): Remove.
13936 (vrshrntq_m_n_s16): Remove.
13937 (vrshrntq_m_n_u32): Remove.
13938 (vrshrntq_m_n_u16): Remove.
13939 (__arm_vrshrnbq_n_s16): Remove.
13940 (__arm_vrshrntq_n_s16): Remove.
13941 (__arm_vrshrnbq_n_u16): Remove.
13942 (__arm_vrshrntq_n_u16): Remove.
13943 (__arm_vrshrnbq_n_s32): Remove.
13944 (__arm_vrshrntq_n_s32): Remove.
13945 (__arm_vrshrnbq_n_u32): Remove.
13946 (__arm_vrshrntq_n_u32): Remove.
13947 (__arm_vrshrnbq_m_n_s32): Remove.
13948 (__arm_vrshrnbq_m_n_s16): Remove.
13949 (__arm_vrshrnbq_m_n_u32): Remove.
13950 (__arm_vrshrnbq_m_n_u16): Remove.
13951 (__arm_vrshrntq_m_n_s32): Remove.
13952 (__arm_vrshrntq_m_n_s16): Remove.
13953 (__arm_vrshrntq_m_n_u32): Remove.
13954 (__arm_vrshrntq_m_n_u16): Remove.
13955 (__arm_vrshrnbq): Remove.
13956 (__arm_vrshrntq): Remove.
13957 (__arm_vrshrnbq_m): Remove.
13958 (__arm_vrshrntq_m): Remove.
13959 (vqshrnbq): Remove.
13960 (vqshrntq): Remove.
13961 (vqshrnbq_m): Remove.
13962 (vqshrntq_m): Remove.
13963 (vqshrnbq_n_s16): Remove.
13964 (vqshrntq_n_s16): Remove.
13965 (vqshrnbq_n_u16): Remove.
13966 (vqshrntq_n_u16): Remove.
13967 (vqshrnbq_n_s32): Remove.
13968 (vqshrntq_n_s32): Remove.
13969 (vqshrnbq_n_u32): Remove.
13970 (vqshrntq_n_u32): Remove.
13971 (vqshrnbq_m_n_s32): Remove.
13972 (vqshrnbq_m_n_s16): Remove.
13973 (vqshrnbq_m_n_u32): Remove.
13974 (vqshrnbq_m_n_u16): Remove.
13975 (vqshrntq_m_n_s32): Remove.
13976 (vqshrntq_m_n_s16): Remove.
13977 (vqshrntq_m_n_u32): Remove.
13978 (vqshrntq_m_n_u16): Remove.
13979 (__arm_vqshrnbq_n_s16): Remove.
13980 (__arm_vqshrntq_n_s16): Remove.
13981 (__arm_vqshrnbq_n_u16): Remove.
13982 (__arm_vqshrntq_n_u16): Remove.
13983 (__arm_vqshrnbq_n_s32): Remove.
13984 (__arm_vqshrntq_n_s32): Remove.
13985 (__arm_vqshrnbq_n_u32): Remove.
13986 (__arm_vqshrntq_n_u32): Remove.
13987 (__arm_vqshrnbq_m_n_s32): Remove.
13988 (__arm_vqshrnbq_m_n_s16): Remove.
13989 (__arm_vqshrnbq_m_n_u32): Remove.
13990 (__arm_vqshrnbq_m_n_u16): Remove.
13991 (__arm_vqshrntq_m_n_s32): Remove.
13992 (__arm_vqshrntq_m_n_s16): Remove.
13993 (__arm_vqshrntq_m_n_u32): Remove.
13994 (__arm_vqshrntq_m_n_u16): Remove.
13995 (__arm_vqshrnbq): Remove.
13996 (__arm_vqshrntq): Remove.
13997 (__arm_vqshrnbq_m): Remove.
13998 (__arm_vqshrntq_m): Remove.
13999 (vqrshrnbq): Remove.
14000 (vqrshrntq): Remove.
14001 (vqrshrnbq_m): Remove.
14002 (vqrshrntq_m): Remove.
14003 (vqrshrnbq_n_s16): Remove.
14004 (vqrshrnbq_n_u16): Remove.
14005 (vqrshrnbq_n_s32): Remove.
14006 (vqrshrnbq_n_u32): Remove.
14007 (vqrshrntq_n_s16): Remove.
14008 (vqrshrntq_n_u16): Remove.
14009 (vqrshrntq_n_s32): Remove.
14010 (vqrshrntq_n_u32): Remove.
14011 (vqrshrnbq_m_n_s32): Remove.
14012 (vqrshrnbq_m_n_s16): Remove.
14013 (vqrshrnbq_m_n_u32): Remove.
14014 (vqrshrnbq_m_n_u16): Remove.
14015 (vqrshrntq_m_n_s32): Remove.
14016 (vqrshrntq_m_n_s16): Remove.
14017 (vqrshrntq_m_n_u32): Remove.
14018 (vqrshrntq_m_n_u16): Remove.
14019 (__arm_vqrshrnbq_n_s16): Remove.
14020 (__arm_vqrshrnbq_n_u16): Remove.
14021 (__arm_vqrshrnbq_n_s32): Remove.
14022 (__arm_vqrshrnbq_n_u32): Remove.
14023 (__arm_vqrshrntq_n_s16): Remove.
14024 (__arm_vqrshrntq_n_u16): Remove.
14025 (__arm_vqrshrntq_n_s32): Remove.
14026 (__arm_vqrshrntq_n_u32): Remove.
14027 (__arm_vqrshrnbq_m_n_s32): Remove.
14028 (__arm_vqrshrnbq_m_n_s16): Remove.
14029 (__arm_vqrshrnbq_m_n_u32): Remove.
14030 (__arm_vqrshrnbq_m_n_u16): Remove.
14031 (__arm_vqrshrntq_m_n_s32): Remove.
14032 (__arm_vqrshrntq_m_n_s16): Remove.
14033 (__arm_vqrshrntq_m_n_u32): Remove.
14034 (__arm_vqrshrntq_m_n_u16): Remove.
14035 (__arm_vqrshrnbq): Remove.
14036 (__arm_vqrshrntq): Remove.
14037 (__arm_vqrshrnbq_m): Remove.
14038 (__arm_vqrshrntq_m): Remove.
14040 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14042 * config/arm/iterators.md (MVE_SHRN_N, MVE_SHRN_M_N): New.
14043 (mve_insn): Add vqrshrnb, vqrshrnt, vqshrnb, vqshrnt, vrshrnb,
14044 vrshrnt, vshrnb, vshrnt.
14046 * config/arm/mve.md (mve_vqrshrnbq_n_<supf><mode>)
14047 (mve_vqrshrntq_n_<supf><mode>, mve_vqshrnbq_n_<supf><mode>)
14048 (mve_vqshrntq_n_<supf><mode>, mve_vrshrnbq_n_<supf><mode>)
14049 (mve_vrshrntq_n_<supf><mode>, mve_vshrnbq_n_<supf><mode>)
14050 (mve_vshrntq_n_<supf><mode>): Merge into ...
14051 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
14052 (mve_vqrshrnbq_m_n_<supf><mode>, mve_vqrshrntq_m_n_<supf><mode>)
14053 (mve_vqshrnbq_m_n_<supf><mode>, mve_vqshrntq_m_n_<supf><mode>)
14054 (mve_vrshrnbq_m_n_<supf><mode>, mve_vrshrntq_m_n_<supf><mode>)
14055 (mve_vshrnbq_m_n_<supf><mode>, mve_vshrntq_m_n_<supf><mode>):
14057 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14059 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14061 * config/arm/arm-mve-builtins-shapes.cc (binary_rshift_narrow):
14063 * config/arm/arm-mve-builtins-shapes.h (binary_rshift_narrow): New.
14065 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14067 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_NO_F): New.
14068 (vmaxq, vminq): New.
14069 * config/arm/arm-mve-builtins-base.def (vmaxq, vminq): New.
14070 * config/arm/arm-mve-builtins-base.h (vmaxq, vminq): New.
14071 * config/arm/arm_mve.h (vminq): Remove.
14077 (vminq_u8): Remove.
14078 (vmaxq_u8): Remove.
14079 (vminq_s8): Remove.
14080 (vmaxq_s8): Remove.
14081 (vminq_u16): Remove.
14082 (vmaxq_u16): Remove.
14083 (vminq_s16): Remove.
14084 (vmaxq_s16): Remove.
14085 (vminq_u32): Remove.
14086 (vmaxq_u32): Remove.
14087 (vminq_s32): Remove.
14088 (vmaxq_s32): Remove.
14089 (vmaxq_m_s8): Remove.
14090 (vmaxq_m_s32): Remove.
14091 (vmaxq_m_s16): Remove.
14092 (vmaxq_m_u8): Remove.
14093 (vmaxq_m_u32): Remove.
14094 (vmaxq_m_u16): Remove.
14095 (vminq_m_s8): Remove.
14096 (vminq_m_s32): Remove.
14097 (vminq_m_s16): Remove.
14098 (vminq_m_u8): Remove.
14099 (vminq_m_u32): Remove.
14100 (vminq_m_u16): Remove.
14101 (vminq_x_s8): Remove.
14102 (vminq_x_s16): Remove.
14103 (vminq_x_s32): Remove.
14104 (vminq_x_u8): Remove.
14105 (vminq_x_u16): Remove.
14106 (vminq_x_u32): Remove.
14107 (vmaxq_x_s8): Remove.
14108 (vmaxq_x_s16): Remove.
14109 (vmaxq_x_s32): Remove.
14110 (vmaxq_x_u8): Remove.
14111 (vmaxq_x_u16): Remove.
14112 (vmaxq_x_u32): Remove.
14113 (__arm_vminq_u8): Remove.
14114 (__arm_vmaxq_u8): Remove.
14115 (__arm_vminq_s8): Remove.
14116 (__arm_vmaxq_s8): Remove.
14117 (__arm_vminq_u16): Remove.
14118 (__arm_vmaxq_u16): Remove.
14119 (__arm_vminq_s16): Remove.
14120 (__arm_vmaxq_s16): Remove.
14121 (__arm_vminq_u32): Remove.
14122 (__arm_vmaxq_u32): Remove.
14123 (__arm_vminq_s32): Remove.
14124 (__arm_vmaxq_s32): Remove.
14125 (__arm_vmaxq_m_s8): Remove.
14126 (__arm_vmaxq_m_s32): Remove.
14127 (__arm_vmaxq_m_s16): Remove.
14128 (__arm_vmaxq_m_u8): Remove.
14129 (__arm_vmaxq_m_u32): Remove.
14130 (__arm_vmaxq_m_u16): Remove.
14131 (__arm_vminq_m_s8): Remove.
14132 (__arm_vminq_m_s32): Remove.
14133 (__arm_vminq_m_s16): Remove.
14134 (__arm_vminq_m_u8): Remove.
14135 (__arm_vminq_m_u32): Remove.
14136 (__arm_vminq_m_u16): Remove.
14137 (__arm_vminq_x_s8): Remove.
14138 (__arm_vminq_x_s16): Remove.
14139 (__arm_vminq_x_s32): Remove.
14140 (__arm_vminq_x_u8): Remove.
14141 (__arm_vminq_x_u16): Remove.
14142 (__arm_vminq_x_u32): Remove.
14143 (__arm_vmaxq_x_s8): Remove.
14144 (__arm_vmaxq_x_s16): Remove.
14145 (__arm_vmaxq_x_s32): Remove.
14146 (__arm_vmaxq_x_u8): Remove.
14147 (__arm_vmaxq_x_u16): Remove.
14148 (__arm_vmaxq_x_u32): Remove.
14149 (__arm_vminq): Remove.
14150 (__arm_vmaxq): Remove.
14151 (__arm_vmaxq_m): Remove.
14152 (__arm_vminq_m): Remove.
14153 (__arm_vminq_x): Remove.
14154 (__arm_vmaxq_x): Remove.
14156 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14158 * config/arm/iterators.md (MAX_MIN_SU): New.
14159 (max_min_su_str): New.
14160 (max_min_supf): New.
14161 * config/arm/mve.md (mve_vmaxq_s<mode>, mve_vmaxq_u<mode>)
14162 (mve_vminq_s<mode>, mve_vminq_u<mode>): Merge into ...
14163 (mve_<max_min_su_str>q_<max_min_supf><mode>): ... this.
14165 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14167 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_R): New.
14168 (vqshlq, vshlq): New.
14169 * config/arm/arm-mve-builtins-base.def (vqshlq, vshlq): New.
14170 * config/arm/arm-mve-builtins-base.h (vqshlq, vshlq): New.
14171 * config/arm/arm_mve.h (vshlq): Remove.
14174 (vshlq_m_r): Remove.
14176 (vshlq_m_n): Remove.
14178 (vshlq_x_n): Remove.
14179 (vshlq_s8): Remove.
14180 (vshlq_s16): Remove.
14181 (vshlq_s32): Remove.
14182 (vshlq_u8): Remove.
14183 (vshlq_u16): Remove.
14184 (vshlq_u32): Remove.
14185 (vshlq_r_u8): Remove.
14186 (vshlq_n_u8): Remove.
14187 (vshlq_r_s8): Remove.
14188 (vshlq_n_s8): Remove.
14189 (vshlq_r_u16): Remove.
14190 (vshlq_n_u16): Remove.
14191 (vshlq_r_s16): Remove.
14192 (vshlq_n_s16): Remove.
14193 (vshlq_r_u32): Remove.
14194 (vshlq_n_u32): Remove.
14195 (vshlq_r_s32): Remove.
14196 (vshlq_n_s32): Remove.
14197 (vshlq_m_r_u8): Remove.
14198 (vshlq_m_r_s8): Remove.
14199 (vshlq_m_r_u16): Remove.
14200 (vshlq_m_r_s16): Remove.
14201 (vshlq_m_r_u32): Remove.
14202 (vshlq_m_r_s32): Remove.
14203 (vshlq_m_u8): Remove.
14204 (vshlq_m_s8): Remove.
14205 (vshlq_m_u16): Remove.
14206 (vshlq_m_s16): Remove.
14207 (vshlq_m_u32): Remove.
14208 (vshlq_m_s32): Remove.
14209 (vshlq_m_n_s8): Remove.
14210 (vshlq_m_n_s32): Remove.
14211 (vshlq_m_n_s16): Remove.
14212 (vshlq_m_n_u8): Remove.
14213 (vshlq_m_n_u32): Remove.
14214 (vshlq_m_n_u16): Remove.
14215 (vshlq_x_s8): Remove.
14216 (vshlq_x_s16): Remove.
14217 (vshlq_x_s32): Remove.
14218 (vshlq_x_u8): Remove.
14219 (vshlq_x_u16): Remove.
14220 (vshlq_x_u32): Remove.
14221 (vshlq_x_n_s8): Remove.
14222 (vshlq_x_n_s16): Remove.
14223 (vshlq_x_n_s32): Remove.
14224 (vshlq_x_n_u8): Remove.
14225 (vshlq_x_n_u16): Remove.
14226 (vshlq_x_n_u32): Remove.
14227 (__arm_vshlq_s8): Remove.
14228 (__arm_vshlq_s16): Remove.
14229 (__arm_vshlq_s32): Remove.
14230 (__arm_vshlq_u8): Remove.
14231 (__arm_vshlq_u16): Remove.
14232 (__arm_vshlq_u32): Remove.
14233 (__arm_vshlq_r_u8): Remove.
14234 (__arm_vshlq_n_u8): Remove.
14235 (__arm_vshlq_r_s8): Remove.
14236 (__arm_vshlq_n_s8): Remove.
14237 (__arm_vshlq_r_u16): Remove.
14238 (__arm_vshlq_n_u16): Remove.
14239 (__arm_vshlq_r_s16): Remove.
14240 (__arm_vshlq_n_s16): Remove.
14241 (__arm_vshlq_r_u32): Remove.
14242 (__arm_vshlq_n_u32): Remove.
14243 (__arm_vshlq_r_s32): Remove.
14244 (__arm_vshlq_n_s32): Remove.
14245 (__arm_vshlq_m_r_u8): Remove.
14246 (__arm_vshlq_m_r_s8): Remove.
14247 (__arm_vshlq_m_r_u16): Remove.
14248 (__arm_vshlq_m_r_s16): Remove.
14249 (__arm_vshlq_m_r_u32): Remove.
14250 (__arm_vshlq_m_r_s32): Remove.
14251 (__arm_vshlq_m_u8): Remove.
14252 (__arm_vshlq_m_s8): Remove.
14253 (__arm_vshlq_m_u16): Remove.
14254 (__arm_vshlq_m_s16): Remove.
14255 (__arm_vshlq_m_u32): Remove.
14256 (__arm_vshlq_m_s32): Remove.
14257 (__arm_vshlq_m_n_s8): Remove.
14258 (__arm_vshlq_m_n_s32): Remove.
14259 (__arm_vshlq_m_n_s16): Remove.
14260 (__arm_vshlq_m_n_u8): Remove.
14261 (__arm_vshlq_m_n_u32): Remove.
14262 (__arm_vshlq_m_n_u16): Remove.
14263 (__arm_vshlq_x_s8): Remove.
14264 (__arm_vshlq_x_s16): Remove.
14265 (__arm_vshlq_x_s32): Remove.
14266 (__arm_vshlq_x_u8): Remove.
14267 (__arm_vshlq_x_u16): Remove.
14268 (__arm_vshlq_x_u32): Remove.
14269 (__arm_vshlq_x_n_s8): Remove.
14270 (__arm_vshlq_x_n_s16): Remove.
14271 (__arm_vshlq_x_n_s32): Remove.
14272 (__arm_vshlq_x_n_u8): Remove.
14273 (__arm_vshlq_x_n_u16): Remove.
14274 (__arm_vshlq_x_n_u32): Remove.
14275 (__arm_vshlq): Remove.
14276 (__arm_vshlq_r): Remove.
14277 (__arm_vshlq_n): Remove.
14278 (__arm_vshlq_m_r): Remove.
14279 (__arm_vshlq_m): Remove.
14280 (__arm_vshlq_m_n): Remove.
14281 (__arm_vshlq_x): Remove.
14282 (__arm_vshlq_x_n): Remove.
14284 (vqshlq_r): Remove.
14285 (vqshlq_n): Remove.
14286 (vqshlq_m_r): Remove.
14287 (vqshlq_m_n): Remove.
14288 (vqshlq_m): Remove.
14289 (vqshlq_u8): Remove.
14290 (vqshlq_r_u8): Remove.
14291 (vqshlq_n_u8): Remove.
14292 (vqshlq_s8): Remove.
14293 (vqshlq_r_s8): Remove.
14294 (vqshlq_n_s8): Remove.
14295 (vqshlq_u16): Remove.
14296 (vqshlq_r_u16): Remove.
14297 (vqshlq_n_u16): Remove.
14298 (vqshlq_s16): Remove.
14299 (vqshlq_r_s16): Remove.
14300 (vqshlq_n_s16): Remove.
14301 (vqshlq_u32): Remove.
14302 (vqshlq_r_u32): Remove.
14303 (vqshlq_n_u32): Remove.
14304 (vqshlq_s32): Remove.
14305 (vqshlq_r_s32): Remove.
14306 (vqshlq_n_s32): Remove.
14307 (vqshlq_m_r_u8): Remove.
14308 (vqshlq_m_r_s8): Remove.
14309 (vqshlq_m_r_u16): Remove.
14310 (vqshlq_m_r_s16): Remove.
14311 (vqshlq_m_r_u32): Remove.
14312 (vqshlq_m_r_s32): Remove.
14313 (vqshlq_m_n_s8): Remove.
14314 (vqshlq_m_n_s32): Remove.
14315 (vqshlq_m_n_s16): Remove.
14316 (vqshlq_m_n_u8): Remove.
14317 (vqshlq_m_n_u32): Remove.
14318 (vqshlq_m_n_u16): Remove.
14319 (vqshlq_m_s8): Remove.
14320 (vqshlq_m_s32): Remove.
14321 (vqshlq_m_s16): Remove.
14322 (vqshlq_m_u8): Remove.
14323 (vqshlq_m_u32): Remove.
14324 (vqshlq_m_u16): Remove.
14325 (__arm_vqshlq_u8): Remove.
14326 (__arm_vqshlq_r_u8): Remove.
14327 (__arm_vqshlq_n_u8): Remove.
14328 (__arm_vqshlq_s8): Remove.
14329 (__arm_vqshlq_r_s8): Remove.
14330 (__arm_vqshlq_n_s8): Remove.
14331 (__arm_vqshlq_u16): Remove.
14332 (__arm_vqshlq_r_u16): Remove.
14333 (__arm_vqshlq_n_u16): Remove.
14334 (__arm_vqshlq_s16): Remove.
14335 (__arm_vqshlq_r_s16): Remove.
14336 (__arm_vqshlq_n_s16): Remove.
14337 (__arm_vqshlq_u32): Remove.
14338 (__arm_vqshlq_r_u32): Remove.
14339 (__arm_vqshlq_n_u32): Remove.
14340 (__arm_vqshlq_s32): Remove.
14341 (__arm_vqshlq_r_s32): Remove.
14342 (__arm_vqshlq_n_s32): Remove.
14343 (__arm_vqshlq_m_r_u8): Remove.
14344 (__arm_vqshlq_m_r_s8): Remove.
14345 (__arm_vqshlq_m_r_u16): Remove.
14346 (__arm_vqshlq_m_r_s16): Remove.
14347 (__arm_vqshlq_m_r_u32): Remove.
14348 (__arm_vqshlq_m_r_s32): Remove.
14349 (__arm_vqshlq_m_n_s8): Remove.
14350 (__arm_vqshlq_m_n_s32): Remove.
14351 (__arm_vqshlq_m_n_s16): Remove.
14352 (__arm_vqshlq_m_n_u8): Remove.
14353 (__arm_vqshlq_m_n_u32): Remove.
14354 (__arm_vqshlq_m_n_u16): Remove.
14355 (__arm_vqshlq_m_s8): Remove.
14356 (__arm_vqshlq_m_s32): Remove.
14357 (__arm_vqshlq_m_s16): Remove.
14358 (__arm_vqshlq_m_u8): Remove.
14359 (__arm_vqshlq_m_u32): Remove.
14360 (__arm_vqshlq_m_u16): Remove.
14361 (__arm_vqshlq): Remove.
14362 (__arm_vqshlq_r): Remove.
14363 (__arm_vqshlq_n): Remove.
14364 (__arm_vqshlq_m_r): Remove.
14365 (__arm_vqshlq_m_n): Remove.
14366 (__arm_vqshlq_m): Remove.
14368 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14370 * config/arm/arm-mve-builtins-functions.h (class
14371 unspec_mve_function_exact_insn_vshl): New.
14373 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14375 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift_r): New.
14376 * config/arm/arm-mve-builtins-shapes.h (binary_lshift_r): New.
14378 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14380 * config/arm/arm-mve-builtins.cc (has_inactive_argument)
14381 (finish_opt_n_resolution): Handle MODE_r.
14382 * config/arm/arm-mve-builtins.def (r): New mode.
14384 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14386 * config/arm/arm-mve-builtins-shapes.cc (binary_lshift): New.
14387 * config/arm/arm-mve-builtins-shapes.h (binary_lshift): New.
14389 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14391 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_N): New.
14393 * config/arm/arm-mve-builtins-base.def (vabdq): New.
14394 * config/arm/arm-mve-builtins-base.h (vabdq): New.
14395 * config/arm/arm_mve.h (vabdq): Remove.
14398 (vabdq_u8): Remove.
14399 (vabdq_s8): Remove.
14400 (vabdq_u16): Remove.
14401 (vabdq_s16): Remove.
14402 (vabdq_u32): Remove.
14403 (vabdq_s32): Remove.
14404 (vabdq_f16): Remove.
14405 (vabdq_f32): Remove.
14406 (vabdq_m_s8): Remove.
14407 (vabdq_m_s32): Remove.
14408 (vabdq_m_s16): Remove.
14409 (vabdq_m_u8): Remove.
14410 (vabdq_m_u32): Remove.
14411 (vabdq_m_u16): Remove.
14412 (vabdq_m_f32): Remove.
14413 (vabdq_m_f16): Remove.
14414 (vabdq_x_s8): Remove.
14415 (vabdq_x_s16): Remove.
14416 (vabdq_x_s32): Remove.
14417 (vabdq_x_u8): Remove.
14418 (vabdq_x_u16): Remove.
14419 (vabdq_x_u32): Remove.
14420 (vabdq_x_f16): Remove.
14421 (vabdq_x_f32): Remove.
14422 (__arm_vabdq_u8): Remove.
14423 (__arm_vabdq_s8): Remove.
14424 (__arm_vabdq_u16): Remove.
14425 (__arm_vabdq_s16): Remove.
14426 (__arm_vabdq_u32): Remove.
14427 (__arm_vabdq_s32): Remove.
14428 (__arm_vabdq_m_s8): Remove.
14429 (__arm_vabdq_m_s32): Remove.
14430 (__arm_vabdq_m_s16): Remove.
14431 (__arm_vabdq_m_u8): Remove.
14432 (__arm_vabdq_m_u32): Remove.
14433 (__arm_vabdq_m_u16): Remove.
14434 (__arm_vabdq_x_s8): Remove.
14435 (__arm_vabdq_x_s16): Remove.
14436 (__arm_vabdq_x_s32): Remove.
14437 (__arm_vabdq_x_u8): Remove.
14438 (__arm_vabdq_x_u16): Remove.
14439 (__arm_vabdq_x_u32): Remove.
14440 (__arm_vabdq_f16): Remove.
14441 (__arm_vabdq_f32): Remove.
14442 (__arm_vabdq_m_f32): Remove.
14443 (__arm_vabdq_m_f16): Remove.
14444 (__arm_vabdq_x_f16): Remove.
14445 (__arm_vabdq_x_f32): Remove.
14446 (__arm_vabdq): Remove.
14447 (__arm_vabdq_m): Remove.
14448 (__arm_vabdq_x): Remove.
14450 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14452 * config/arm/iterators.md (MVE_FP_M_BINARY): Add vabdq.
14453 (MVE_FP_VABDQ_ONLY): New.
14454 (mve_insn): Add vabd.
14455 * config/arm/mve.md (mve_vabdq_f<mode>): Move into ...
14456 (@mve_<mve_insn>q_f<mode>): ... this.
14457 (mve_vabdq_m_f<mode>): Remove.
14459 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14461 * config/arm/arm-mve-builtins-base.cc (vqrdmulhq): New.
14462 * config/arm/arm-mve-builtins-base.def (vqrdmulhq): New.
14463 * config/arm/arm-mve-builtins-base.h (vqrdmulhq): New.
14464 * config/arm/arm_mve.h (vqrdmulhq): Remove.
14465 (vqrdmulhq_m): Remove.
14466 (vqrdmulhq_s8): Remove.
14467 (vqrdmulhq_n_s8): Remove.
14468 (vqrdmulhq_s16): Remove.
14469 (vqrdmulhq_n_s16): Remove.
14470 (vqrdmulhq_s32): Remove.
14471 (vqrdmulhq_n_s32): Remove.
14472 (vqrdmulhq_m_n_s8): Remove.
14473 (vqrdmulhq_m_n_s32): Remove.
14474 (vqrdmulhq_m_n_s16): Remove.
14475 (vqrdmulhq_m_s8): Remove.
14476 (vqrdmulhq_m_s32): Remove.
14477 (vqrdmulhq_m_s16): Remove.
14478 (__arm_vqrdmulhq_s8): Remove.
14479 (__arm_vqrdmulhq_n_s8): Remove.
14480 (__arm_vqrdmulhq_s16): Remove.
14481 (__arm_vqrdmulhq_n_s16): Remove.
14482 (__arm_vqrdmulhq_s32): Remove.
14483 (__arm_vqrdmulhq_n_s32): Remove.
14484 (__arm_vqrdmulhq_m_n_s8): Remove.
14485 (__arm_vqrdmulhq_m_n_s32): Remove.
14486 (__arm_vqrdmulhq_m_n_s16): Remove.
14487 (__arm_vqrdmulhq_m_s8): Remove.
14488 (__arm_vqrdmulhq_m_s32): Remove.
14489 (__arm_vqrdmulhq_m_s16): Remove.
14490 (__arm_vqrdmulhq): Remove.
14491 (__arm_vqrdmulhq_m): Remove.
14493 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14495 * config/arm/iterators.md (MVE_SHIFT_M_R, MVE_SHIFT_M_N)
14496 (MVE_SHIFT_N, MVE_SHIFT_R): New.
14497 (mve_insn): Add vqshl, vshl.
14498 * config/arm/mve.md (mve_vqshlq_n_<supf><mode>)
14499 (mve_vshlq_n_<supf><mode>): Merge into ...
14500 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
14501 (mve_vqshlq_r_<supf><mode>, mve_vshlq_r_<supf><mode>): Merge into
14503 (@mve_<mve_insn>q_r_<supf><mode>): ... this.
14504 (mve_vqshlq_m_r_<supf><mode>, mve_vshlq_m_r_<supf><mode>): Merge
14506 (@mve_<mve_insn>q_m_r_<supf><mode>): ... this.
14507 (mve_vqshlq_m_n_<supf><mode>, mve_vshlq_m_n_<supf><mode>): Merge
14509 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14510 * config/arm/vec-common.md (mve_vshlq_<supf><mode>): Transform
14512 (@mve_<mve_insn>q_<supf><mode>): ... this.
14514 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14516 * config/arm/arm-mve-builtins-base.cc (vqrshlq, vrshlq): New.
14517 * config/arm/arm-mve-builtins-base.def (vqrshlq, vrshlq): New.
14518 * config/arm/arm-mve-builtins-base.h (vqrshlq, vrshlq): New.
14519 * config/arm/arm-mve-builtins.cc (has_inactive_argument): Handle
14521 * config/arm/arm_mve.h (vrshlq): Remove.
14522 (vrshlq_m_n): Remove.
14523 (vrshlq_m): Remove.
14524 (vrshlq_x): Remove.
14525 (vrshlq_u8): Remove.
14526 (vrshlq_n_u8): Remove.
14527 (vrshlq_s8): Remove.
14528 (vrshlq_n_s8): Remove.
14529 (vrshlq_u16): Remove.
14530 (vrshlq_n_u16): Remove.
14531 (vrshlq_s16): Remove.
14532 (vrshlq_n_s16): Remove.
14533 (vrshlq_u32): Remove.
14534 (vrshlq_n_u32): Remove.
14535 (vrshlq_s32): Remove.
14536 (vrshlq_n_s32): Remove.
14537 (vrshlq_m_n_u8): Remove.
14538 (vrshlq_m_n_s8): Remove.
14539 (vrshlq_m_n_u16): Remove.
14540 (vrshlq_m_n_s16): Remove.
14541 (vrshlq_m_n_u32): Remove.
14542 (vrshlq_m_n_s32): Remove.
14543 (vrshlq_m_s8): Remove.
14544 (vrshlq_m_s32): Remove.
14545 (vrshlq_m_s16): Remove.
14546 (vrshlq_m_u8): Remove.
14547 (vrshlq_m_u32): Remove.
14548 (vrshlq_m_u16): Remove.
14549 (vrshlq_x_s8): Remove.
14550 (vrshlq_x_s16): Remove.
14551 (vrshlq_x_s32): Remove.
14552 (vrshlq_x_u8): Remove.
14553 (vrshlq_x_u16): Remove.
14554 (vrshlq_x_u32): Remove.
14555 (__arm_vrshlq_u8): Remove.
14556 (__arm_vrshlq_n_u8): Remove.
14557 (__arm_vrshlq_s8): Remove.
14558 (__arm_vrshlq_n_s8): Remove.
14559 (__arm_vrshlq_u16): Remove.
14560 (__arm_vrshlq_n_u16): Remove.
14561 (__arm_vrshlq_s16): Remove.
14562 (__arm_vrshlq_n_s16): Remove.
14563 (__arm_vrshlq_u32): Remove.
14564 (__arm_vrshlq_n_u32): Remove.
14565 (__arm_vrshlq_s32): Remove.
14566 (__arm_vrshlq_n_s32): Remove.
14567 (__arm_vrshlq_m_n_u8): Remove.
14568 (__arm_vrshlq_m_n_s8): Remove.
14569 (__arm_vrshlq_m_n_u16): Remove.
14570 (__arm_vrshlq_m_n_s16): Remove.
14571 (__arm_vrshlq_m_n_u32): Remove.
14572 (__arm_vrshlq_m_n_s32): Remove.
14573 (__arm_vrshlq_m_s8): Remove.
14574 (__arm_vrshlq_m_s32): Remove.
14575 (__arm_vrshlq_m_s16): Remove.
14576 (__arm_vrshlq_m_u8): Remove.
14577 (__arm_vrshlq_m_u32): Remove.
14578 (__arm_vrshlq_m_u16): Remove.
14579 (__arm_vrshlq_x_s8): Remove.
14580 (__arm_vrshlq_x_s16): Remove.
14581 (__arm_vrshlq_x_s32): Remove.
14582 (__arm_vrshlq_x_u8): Remove.
14583 (__arm_vrshlq_x_u16): Remove.
14584 (__arm_vrshlq_x_u32): Remove.
14585 (__arm_vrshlq): Remove.
14586 (__arm_vrshlq_m_n): Remove.
14587 (__arm_vrshlq_m): Remove.
14588 (__arm_vrshlq_x): Remove.
14590 (vqrshlq_m_n): Remove.
14591 (vqrshlq_m): Remove.
14592 (vqrshlq_u8): Remove.
14593 (vqrshlq_n_u8): Remove.
14594 (vqrshlq_s8): Remove.
14595 (vqrshlq_n_s8): Remove.
14596 (vqrshlq_u16): Remove.
14597 (vqrshlq_n_u16): Remove.
14598 (vqrshlq_s16): Remove.
14599 (vqrshlq_n_s16): Remove.
14600 (vqrshlq_u32): Remove.
14601 (vqrshlq_n_u32): Remove.
14602 (vqrshlq_s32): Remove.
14603 (vqrshlq_n_s32): Remove.
14604 (vqrshlq_m_n_u8): Remove.
14605 (vqrshlq_m_n_s8): Remove.
14606 (vqrshlq_m_n_u16): Remove.
14607 (vqrshlq_m_n_s16): Remove.
14608 (vqrshlq_m_n_u32): Remove.
14609 (vqrshlq_m_n_s32): Remove.
14610 (vqrshlq_m_s8): Remove.
14611 (vqrshlq_m_s32): Remove.
14612 (vqrshlq_m_s16): Remove.
14613 (vqrshlq_m_u8): Remove.
14614 (vqrshlq_m_u32): Remove.
14615 (vqrshlq_m_u16): Remove.
14616 (__arm_vqrshlq_u8): Remove.
14617 (__arm_vqrshlq_n_u8): Remove.
14618 (__arm_vqrshlq_s8): Remove.
14619 (__arm_vqrshlq_n_s8): Remove.
14620 (__arm_vqrshlq_u16): Remove.
14621 (__arm_vqrshlq_n_u16): Remove.
14622 (__arm_vqrshlq_s16): Remove.
14623 (__arm_vqrshlq_n_s16): Remove.
14624 (__arm_vqrshlq_u32): Remove.
14625 (__arm_vqrshlq_n_u32): Remove.
14626 (__arm_vqrshlq_s32): Remove.
14627 (__arm_vqrshlq_n_s32): Remove.
14628 (__arm_vqrshlq_m_n_u8): Remove.
14629 (__arm_vqrshlq_m_n_s8): Remove.
14630 (__arm_vqrshlq_m_n_u16): Remove.
14631 (__arm_vqrshlq_m_n_s16): Remove.
14632 (__arm_vqrshlq_m_n_u32): Remove.
14633 (__arm_vqrshlq_m_n_s32): Remove.
14634 (__arm_vqrshlq_m_s8): Remove.
14635 (__arm_vqrshlq_m_s32): Remove.
14636 (__arm_vqrshlq_m_s16): Remove.
14637 (__arm_vqrshlq_m_u8): Remove.
14638 (__arm_vqrshlq_m_u32): Remove.
14639 (__arm_vqrshlq_m_u16): Remove.
14640 (__arm_vqrshlq): Remove.
14641 (__arm_vqrshlq_m_n): Remove.
14642 (__arm_vqrshlq_m): Remove.
14644 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14646 * config/arm/iterators.md (MVE_RSHIFT_M_N, MVE_RSHIFT_N): New.
14647 (mve_insn): Add vqrshl, vrshl.
14648 * config/arm/mve.md (mve_vqrshlq_n_<supf><mode>)
14649 (mve_vrshlq_n_<supf><mode>): Merge into ...
14650 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
14651 (mve_vqrshlq_m_n_<supf><mode>, mve_vrshlq_m_n_<supf><mode>): Merge
14653 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
14655 2023-05-05 Christophe Lyon <christophe.lyon@arm.com>
14657 * config/arm/arm-mve-builtins-shapes.cc (binary_round_lshift): New.
14658 * config/arm/arm-mve-builtins-shapes.h (binary_round_lshift): New.
14660 2023-05-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
14663 * config/riscv/riscv-vsetvl.cc (avl_info::multiple_source_equal_p): Add
14664 denegrate PHI optmization.
14666 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
14668 * config/i386/predicates.md (register_no_SP_operand):
14669 Rename from index_register_operand.
14670 (call_register_operand): Update for rename.
14671 * config/i386/i386.md (*lea<mode>_general_[1234]): Update for rename.
14673 2023-05-05 Tamar Christina <tamar.christina@arm.com>
14676 * Makefile.in (NUM_MATCH_SPLITS, MATCH_SPLITS_SEQ,
14677 GIMPLE_MATCH_PD_SEQ_SRC, GIMPLE_MATCH_PD_SEQ_O,
14678 GENERIC_MATCH_PD_SEQ_SRC, GENERIC_MATCH_PD_SEQ_O): New.
14679 (OBJS, MOSTLYCLEANFILES, .PRECIOUS): Use them.
14680 (s-match): Split into s-generic-match and s-gimple-match.
14681 * configure.ac (with-matchpd-partitions,
14682 DEFAULT_MATCHPD_PARTITIONS): New.
14683 * configure: Regenerate.
14685 2023-05-05 Tamar Christina <tamar.christina@arm.com>
14688 * genmatch.cc (emit_func, SIZED_BASED_CHUNKS, get_out_file): New.
14689 (decision_tree::gen): Accept list of files instead of single and update
14690 to write function definition to header and main file.
14691 (write_predicate): Likewise.
14692 (write_header): Emit pragmas and new includes.
14693 (main): Create file buffers and cleanup.
14694 (showUsage, write_header_includes): New.
14696 2023-05-05 Tamar Christina <tamar.christina@arm.com>
14699 * Makefile.in (OBJS): Add gimple-match-exports.o.
14700 * genmatch.cc (decision_tree::gen): Export gimple_gimplify helpers.
14701 * gimple-match-head.cc (gimple_simplify, gimple_resimplify1,
14702 gimple_resimplify2, gimple_resimplify3, gimple_resimplify4,
14703 gimple_resimplify5, constant_for_folding, convert_conditional_op,
14704 maybe_resimplify_conditional_op, gimple_match_op::resimplify,
14705 maybe_build_generic_op, build_call_internal, maybe_push_res_to_seq,
14706 do_valueize, try_conditional_simplification, gimple_extract,
14707 gimple_extract_op, canonicalize_code, commutative_binary_op_p,
14708 commutative_ternary_op_p, first_commutative_argument,
14709 associative_binary_op_p, directly_supported_p,
14710 get_conditional_internal_fn): Moved to gimple-match-exports.cc
14711 * gimple-match-exports.cc: New file.
14713 2023-05-05 Tamar Christina <tamar.christina@arm.com>
14716 * genmatch.cc (decision_tree::gen, write_predicate): Generate new
14718 (dt_simplify::gen_1): Use it.
14720 2023-05-05 Tamar Christina <tamar.christina@arm.com>
14723 * genmatch.cc (output_line_directive): Only emit commented directive
14726 2023-05-05 Tamar Christina <tamar.christina@arm.com>
14729 * genmatch.cc (dt_simplify::gen_1): Only emit labels if used.
14731 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
14733 * config/gcn/gcn.cc (gcn_vectorize_builtin_vectorized_function): Remove
14734 unused in_mode/in_n variables.
14736 2023-05-05 Richard Biener <rguenther@suse.de>
14738 PR tree-optimization/109735
14739 * tree-vect-stmts.cc (vectorizable_operation): Perform
14740 conversion for POINTER_DIFF_EXPR unconditionally.
14742 2023-05-05 Uros Bizjak <ubizjak@gmail.com>
14744 * config/i386/mmx.md (mulv2si3): New expander.
14745 (*mulv2si3): New insn pattern.
14747 2023-05-05 Tobias Burnus <tobias@codesourcery.com>
14748 Thomas Schwinge <thomas@codesourcery.com>
14751 * config/nvptx/mkoffload.cc (process): Emit dummy procedure
14752 alongside reverse-offload function table to prevent NULL values
14753 of the function addresses.
14755 2023-05-05 Jakub Jelinek <jakub@redhat.com>
14757 * builtins.cc (do_mpfr_ckconv, do_mpc_ckconv): Fix comment typo,
14759 * fold-const-call.cc (do_mpfr_ckconv, do_mpc_ckconv): Likewise.
14761 2023-05-05 Andrew Pinski <apinski@marvell.com>
14763 PR tree-optimization/109732
14764 * tree-ssa-phiopt.cc (match_simplify_replacement): Fix the selection
14765 of the argtrue/argfalse.
14767 2023-05-05 Andrew Pinski <apinski@marvell.com>
14769 PR tree-optimization/109722
14770 * match.pd: Extend the `ABS<a> == 0` pattern
14771 to cover `ABSU<a> == 0` too.
14773 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
14776 * config/i386/predicates.md (index_reg_operand): New predicate.
14777 * config/i386/i386.md (ashift to lea spliter): Use
14778 general_reg_operand and index_reg_operand predicates.
14780 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14782 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn2<mode>_insn_le):
14783 Rename and reimplement with RTL codes to...
14784 (aarch64_<optab>hn2<mode>_insn_le): .. This.
14785 (aarch64_r<optab>hn2<mode>_insn_le): New pattern.
14786 (aarch64_<sur><addsub>hn2<mode>_insn_be): Rename and reimplement with RTL
14788 (aarch64_<optab>hn2<mode>_insn_be): ... This.
14789 (aarch64_r<optab>hn2<mode>_insn_be): New pattern.
14790 (aarch64_<sur><addsub>hn2<mode>): Rename and adjust expander to...
14791 (aarch64_<optab>hn2<mode>): ... This.
14792 (aarch64_r<optab>hn2<mode>): New expander.
14793 * config/aarch64/iterators.md (UNSPEC_ADDHN, UNSPEC_RADDHN,
14794 UNSPEC_SUBHN, UNSPEC_RSUBHN): Delete unspecs.
14795 (ADDSUBHN): Delete.
14796 (sur): Remove handling of the above.
14797 (addsub): Likewise.
14799 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14801 * config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn<mode>_insn_le):
14803 (aarch64_<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
14804 (aarch64_<sur><addsub>hn<mode>_insn_be): Delete.
14805 (aarch64_r<optab>hn<mode>_insn<vczle><vczbe>): New define_insn.
14806 (aarch64_<sur><addsub>hn<mode>): Delete.
14807 (aarch64_<optab>hn<mode>): New define_expand.
14808 (aarch64_r<optab>hn<mode>): Likewise.
14809 * config/aarch64/predicates.md (aarch64_simd_raddsubhn_imm_vec):
14812 2023-05-04 Andrew Pinski <apinski@marvell.com>
14814 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Handle
14815 diamond form bb with forwarder only empty blocks better.
14817 2023-05-04 Andrew Pinski <apinski@marvell.com>
14819 * tree-ssa-threadupdate.cc (copy_phi_arg_into_existing_phi): Move to ...
14820 * tree-cfg.cc (copy_phi_arg_into_existing_phi): Here and remove static.
14821 (gimple_duplicate_sese_tail): Use copy_phi_arg_into_existing_phi instead
14822 of an inline version of it.
14823 * tree-cfgcleanup.cc (remove_forwarder_block): Likewise.
14824 * tree-cfg.h (copy_phi_arg_into_existing_phi): New declaration.
14826 2023-05-04 Andrew Pinski <apinski@marvell.com>
14828 * tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Change
14829 the default argument value for dce_ssa_names to nullptr.
14830 Check to make sure dce_ssa_names is a non-nullptr before
14831 calling simple_dce_from_worklist.
14833 2023-05-04 Uros Bizjak <ubizjak@gmail.com>
14835 * config/i386/predicates.md (index_register_operand): Reject
14836 arg_pointer_rtx, frame_pointer_rtx, stack_pointer_rtx and
14837 VIRTUAL_REGISTER_P operands. Allow subregs of memory before reload.
14838 (call_register_no_elim_operand): Rewrite as ...
14839 (call_register_operand): ... this.
14840 (call_insn_operand): Use call_register_operand predicate.
14842 2023-05-04 Richard Biener <rguenther@suse.de>
14844 PR tree-optimization/109721
14845 * tree-vect-stmts.cc (vectorizable_operation): Make sure
14846 to test word_mode for all !target_support_p operations.
14848 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14851 * config/aarch64/aarch64-simd.md (aarch64_<su>aba<mode>): Rename to...
14852 (aarch64_<su>aba<mode><vczle><vczbe>): ... This.
14853 (aarch64_mla<mode>): Rename to...
14854 (aarch64_mla<mode><vczle><vczbe>): ... This.
14855 (*aarch64_mla_elt<mode>): Rename to...
14856 (*aarch64_mla_elt<mode><vczle><vczbe>): ... This.
14857 (*aarch64_mla_elt_<vswap_width_name><mode>): Rename to...
14858 (*aarch64_mla_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
14859 (aarch64_mla_n<mode>): Rename to...
14860 (aarch64_mla_n<mode><vczle><vczbe>): ... This.
14861 (aarch64_mls<mode>): Rename to...
14862 (aarch64_mls<mode><vczle><vczbe>): ... This.
14863 (*aarch64_mls_elt<mode>): Rename to...
14864 (*aarch64_mls_elt<mode><vczle><vczbe>): ... This.
14865 (*aarch64_mls_elt_<vswap_width_name><mode>): Rename to...
14866 (*aarch64_mls_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
14867 (aarch64_mls_n<mode>): Rename to...
14868 (aarch64_mls_n<mode><vczle><vczbe>): ... This.
14869 (fma<mode>4): Rename to...
14870 (fma<mode>4<vczle><vczbe>): ... This.
14871 (*aarch64_fma4_elt<mode>): Rename to...
14872 (*aarch64_fma4_elt<mode><vczle><vczbe>): ... This.
14873 (*aarch64_fma4_elt_<vswap_width_name><mode>): Rename to...
14874 (*aarch64_fma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
14875 (*aarch64_fma4_elt_from_dup<mode>): Rename to...
14876 (*aarch64_fma4_elt_from_dup<mode><vczle><vczbe>): ... This.
14877 (fnma<mode>4): Rename to...
14878 (fnma<mode>4<vczle><vczbe>): ... This.
14879 (*aarch64_fnma4_elt<mode>): Rename to...
14880 (*aarch64_fnma4_elt<mode><vczle><vczbe>): ... This.
14881 (*aarch64_fnma4_elt_<vswap_width_name><mode>): Rename to...
14882 (*aarch64_fnma4_elt_<vswap_width_name><mode><vczle><vczbe>): ... This.
14883 (*aarch64_fnma4_elt_from_dup<mode>): Rename to...
14884 (*aarch64_fnma4_elt_from_dup<mode><vczle><vczbe>): ... This.
14885 (aarch64_simd_bsl<mode>_internal): Rename to...
14886 (aarch64_simd_bsl<mode>_internal<vczle><vczbe>): ... This.
14887 (*aarch64_simd_bsl<mode>_alt): Rename to...
14888 (*aarch64_simd_bsl<mode>_alt<vczle><vczbe>): ... This.
14890 2023-05-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
14893 * config/aarch64/aarch64-simd.md (aarch64_<su>abd<mode>): Rename to...
14894 (aarch64_<su>abd<mode><vczle><vczbe>): ... This.
14895 (fabd<mode>3): Rename to...
14896 (fabd<mode>3<vczle><vczbe>): ... This.
14897 (aarch64_<optab>p<mode>): Rename to...
14898 (aarch64_<optab>p<mode><vczle><vczbe>): ... This.
14899 (aarch64_faddp<mode>): Rename to...
14900 (aarch64_faddp<mode><vczle><vczbe>): ... This.
14902 2023-05-04 Martin Liska <mliska@suse.cz>
14904 * gcov.cc (GCOV_JSON_FORMAT_VERSION): New definition.
14905 (print_version): Use it.
14906 (generate_results): Likewise.
14908 2023-05-04 Richard Biener <rguenther@suse.de>
14910 * tree-cfg.h (last_stmt): Rename to ...
14911 (last_nondebug_stmt): ... this.
14912 * tree-cfg.cc (last_stmt): Rename to ...
14913 (last_nondebug_stmt): ... this.
14914 (assign_discriminators): Adjust.
14915 (group_case_labels_stmt): Likewise.
14916 (gimple_can_duplicate_bb_p): Likewise.
14917 (execute_fixup_cfg): Likewise.
14918 * auto-profile.cc (afdo_propagate_circuit): Likewise.
14919 * gimple-range.cc (gimple_ranger::range_on_exit): Likewise.
14920 * omp-expand.cc (workshare_safe_to_combine_p): Likewise.
14921 (determine_parallel_type): Likewise.
14922 (adjust_context_and_scope): Likewise.
14923 (expand_task_call): Likewise.
14924 (remove_exit_barrier): Likewise.
14925 (expand_omp_taskreg): Likewise.
14926 (expand_omp_for_init_counts): Likewise.
14927 (expand_omp_for_init_vars): Likewise.
14928 (expand_omp_for_static_chunk): Likewise.
14929 (expand_omp_simd): Likewise.
14930 (expand_oacc_for): Likewise.
14931 (expand_omp_for): Likewise.
14932 (expand_omp_sections): Likewise.
14933 (expand_omp_atomic_fetch_op): Likewise.
14934 (expand_omp_atomic_cas): Likewise.
14935 (expand_omp_atomic): Likewise.
14936 (expand_omp_target): Likewise.
14937 (expand_omp): Likewise.
14938 (omp_make_gimple_edges): Likewise.
14939 * trans-mem.cc (tm_region_init): Likewise.
14940 * tree-inline.cc (redirect_all_calls): Likewise.
14941 * tree-parloops.cc (gen_parallel_loop): Likewise.
14942 * tree-ssa-loop-ch.cc (do_while_loop_p): Likewise.
14943 * tree-ssa-loop-ivcanon.cc (canonicalize_loop_induction_variables):
14945 * tree-ssa-loop-ivopts.cc (stmt_after_ip_normal_pos): Likewise.
14946 (may_eliminate_iv): Likewise.
14947 * tree-ssa-loop-manip.cc (standard_iv_increment_position): Likewise.
14948 * tree-ssa-loop-niter.cc (do_warn_aggressive_loop_optimizations):
14950 (estimate_numbers_of_iterations): Likewise.
14951 * tree-ssa-loop-split.cc (compute_added_num_insns): Likewise.
14952 * tree-ssa-loop-unswitch.cc (get_predicates_for_bb): Likewise.
14953 (set_predicates_for_bb): Likewise.
14954 (init_loop_unswitch_info): Likewise.
14955 (hoist_guard): Likewise.
14956 * tree-ssa-phiopt.cc (match_simplify_replacement): Likewise.
14957 (minmax_replacement): Likewise.
14958 * tree-ssa-reassoc.cc (update_range_test): Likewise.
14959 (optimize_range_tests_to_bit_test): Likewise.
14960 (optimize_range_tests_var_bound): Likewise.
14961 (optimize_range_tests): Likewise.
14962 (no_side_effect_bb): Likewise.
14963 (suitable_cond_bb): Likewise.
14964 (maybe_optimize_range_tests): Likewise.
14965 (reassociate_bb): Likewise.
14966 * tree-vrp.cc (rvrp_folder::pre_fold_bb): Likewise.
14968 2023-05-04 Jakub Jelinek <jakub@redhat.com>
14971 * config/i386/i386-features.cc (timode_scalar_chain::convert_insn):
14972 If src is REG, change its mode to V1TImode and call fix_debug_reg_uses
14973 for it only if it still has TImode. Don't decide whether to call
14974 fix_debug_reg_uses based on whether SRC is ever set or not.
14976 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
14978 * config/cris/cris.cc (cris_split_constant): New function.
14979 * config/cris/cris.md (splitop): New iterator.
14980 (opsplit1): New define_peephole2.
14981 * config/cris/cris-protos.h (cris_split_constant): Declare.
14982 (cris_splittable_constant_p): New macro.
14984 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
14986 * config/cris/cris.cc (TARGET_SPILL_CLASS): Define
14989 2023-05-04 Hans-Peter Nilsson <hp@axis.com>
14991 * config/cris/cris.cc (cris_side_effect_mode_ok): Use
14992 lra_in_progress, not reload_in_progress.
14993 * config/cris/cris.md ("movdi", "*addi_reload"): Ditto.
14994 * config/cris/constraints.md ("Q"): Ditto.
14996 2023-05-03 Andrew Pinski <apinski@marvell.com>
14998 * tree-ssa-dce.cc (simple_dce_from_worklist): Record
14999 stats on removed number of statements and phis.
15001 2023-05-03 Aldy Hernandez <aldyh@redhat.com>
15003 PR tree-optimization/109711
15004 * value-range.cc (irange::verify_range): Allow types of
15007 2023-05-03 Alexander Monakov <amonakov@ispras.ru>
15010 * calls.cc (can_implement_as_sibling_call_p): Reject calls
15011 to __sanitizer_cov_trace_pc.
15013 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
15016 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Add
15017 a new ABI break parameter for GCC 14. Set it to the alignment
15018 of enums that have an underlying type. Take the true alignment
15019 of such enums from the TYPE_ALIGN of the underlying type's
15021 (aarch64_function_arg_boundary): Update accordingly.
15022 (aarch64_layout_arg, aarch64_gimplify_va_arg_expr): Likewise.
15023 Warn about ABI differences.
15025 2023-05-03 Richard Sandiford <richard.sandiford@arm.com>
15028 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Rename
15029 ABI break variables to abi_break_gcc_9 and abi_break_gcc_13.
15030 (aarch64_layout_arg, aarch64_function_arg_boundary): Likewise.
15031 (aarch64_gimplify_va_arg_expr): Likewise.
15033 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15035 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_M_N_NO_F)
15036 (FUNCTION_WITHOUT_N_NO_F, FUNCTION_WITH_M_N_NO_U_F): New.
15037 (vhaddq, vhsubq, vmulhq, vqaddq, vqsubq, vqdmulhq, vrhaddq)
15039 * config/arm/arm-mve-builtins-base.def (vhaddq, vhsubq, vmulhq)
15040 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
15041 * config/arm/arm-mve-builtins-base.h (vhaddq, vhsubq, vmulhq)
15042 (vqaddq, vqsubq, vqdmulhq, vrhaddq, vrmulhq): New.
15043 * config/arm/arm_mve.h (vhsubq): Remove.
15045 (vhaddq_m): Remove.
15046 (vhsubq_m): Remove.
15047 (vhaddq_x): Remove.
15048 (vhsubq_x): Remove.
15049 (vhsubq_u8): Remove.
15050 (vhsubq_n_u8): Remove.
15051 (vhaddq_u8): Remove.
15052 (vhaddq_n_u8): Remove.
15053 (vhsubq_s8): Remove.
15054 (vhsubq_n_s8): Remove.
15055 (vhaddq_s8): Remove.
15056 (vhaddq_n_s8): Remove.
15057 (vhsubq_u16): Remove.
15058 (vhsubq_n_u16): Remove.
15059 (vhaddq_u16): Remove.
15060 (vhaddq_n_u16): Remove.
15061 (vhsubq_s16): Remove.
15062 (vhsubq_n_s16): Remove.
15063 (vhaddq_s16): Remove.
15064 (vhaddq_n_s16): Remove.
15065 (vhsubq_u32): Remove.
15066 (vhsubq_n_u32): Remove.
15067 (vhaddq_u32): Remove.
15068 (vhaddq_n_u32): Remove.
15069 (vhsubq_s32): Remove.
15070 (vhsubq_n_s32): Remove.
15071 (vhaddq_s32): Remove.
15072 (vhaddq_n_s32): Remove.
15073 (vhaddq_m_n_s8): Remove.
15074 (vhaddq_m_n_s32): Remove.
15075 (vhaddq_m_n_s16): Remove.
15076 (vhaddq_m_n_u8): Remove.
15077 (vhaddq_m_n_u32): Remove.
15078 (vhaddq_m_n_u16): Remove.
15079 (vhaddq_m_s8): Remove.
15080 (vhaddq_m_s32): Remove.
15081 (vhaddq_m_s16): Remove.
15082 (vhaddq_m_u8): Remove.
15083 (vhaddq_m_u32): Remove.
15084 (vhaddq_m_u16): Remove.
15085 (vhsubq_m_n_s8): Remove.
15086 (vhsubq_m_n_s32): Remove.
15087 (vhsubq_m_n_s16): Remove.
15088 (vhsubq_m_n_u8): Remove.
15089 (vhsubq_m_n_u32): Remove.
15090 (vhsubq_m_n_u16): Remove.
15091 (vhsubq_m_s8): Remove.
15092 (vhsubq_m_s32): Remove.
15093 (vhsubq_m_s16): Remove.
15094 (vhsubq_m_u8): Remove.
15095 (vhsubq_m_u32): Remove.
15096 (vhsubq_m_u16): Remove.
15097 (vhaddq_x_n_s8): Remove.
15098 (vhaddq_x_n_s16): Remove.
15099 (vhaddq_x_n_s32): Remove.
15100 (vhaddq_x_n_u8): Remove.
15101 (vhaddq_x_n_u16): Remove.
15102 (vhaddq_x_n_u32): Remove.
15103 (vhaddq_x_s8): Remove.
15104 (vhaddq_x_s16): Remove.
15105 (vhaddq_x_s32): Remove.
15106 (vhaddq_x_u8): Remove.
15107 (vhaddq_x_u16): Remove.
15108 (vhaddq_x_u32): Remove.
15109 (vhsubq_x_n_s8): Remove.
15110 (vhsubq_x_n_s16): Remove.
15111 (vhsubq_x_n_s32): Remove.
15112 (vhsubq_x_n_u8): Remove.
15113 (vhsubq_x_n_u16): Remove.
15114 (vhsubq_x_n_u32): Remove.
15115 (vhsubq_x_s8): Remove.
15116 (vhsubq_x_s16): Remove.
15117 (vhsubq_x_s32): Remove.
15118 (vhsubq_x_u8): Remove.
15119 (vhsubq_x_u16): Remove.
15120 (vhsubq_x_u32): Remove.
15121 (__arm_vhsubq_u8): Remove.
15122 (__arm_vhsubq_n_u8): Remove.
15123 (__arm_vhaddq_u8): Remove.
15124 (__arm_vhaddq_n_u8): Remove.
15125 (__arm_vhsubq_s8): Remove.
15126 (__arm_vhsubq_n_s8): Remove.
15127 (__arm_vhaddq_s8): Remove.
15128 (__arm_vhaddq_n_s8): Remove.
15129 (__arm_vhsubq_u16): Remove.
15130 (__arm_vhsubq_n_u16): Remove.
15131 (__arm_vhaddq_u16): Remove.
15132 (__arm_vhaddq_n_u16): Remove.
15133 (__arm_vhsubq_s16): Remove.
15134 (__arm_vhsubq_n_s16): Remove.
15135 (__arm_vhaddq_s16): Remove.
15136 (__arm_vhaddq_n_s16): Remove.
15137 (__arm_vhsubq_u32): Remove.
15138 (__arm_vhsubq_n_u32): Remove.
15139 (__arm_vhaddq_u32): Remove.
15140 (__arm_vhaddq_n_u32): Remove.
15141 (__arm_vhsubq_s32): Remove.
15142 (__arm_vhsubq_n_s32): Remove.
15143 (__arm_vhaddq_s32): Remove.
15144 (__arm_vhaddq_n_s32): Remove.
15145 (__arm_vhaddq_m_n_s8): Remove.
15146 (__arm_vhaddq_m_n_s32): Remove.
15147 (__arm_vhaddq_m_n_s16): Remove.
15148 (__arm_vhaddq_m_n_u8): Remove.
15149 (__arm_vhaddq_m_n_u32): Remove.
15150 (__arm_vhaddq_m_n_u16): Remove.
15151 (__arm_vhaddq_m_s8): Remove.
15152 (__arm_vhaddq_m_s32): Remove.
15153 (__arm_vhaddq_m_s16): Remove.
15154 (__arm_vhaddq_m_u8): Remove.
15155 (__arm_vhaddq_m_u32): Remove.
15156 (__arm_vhaddq_m_u16): Remove.
15157 (__arm_vhsubq_m_n_s8): Remove.
15158 (__arm_vhsubq_m_n_s32): Remove.
15159 (__arm_vhsubq_m_n_s16): Remove.
15160 (__arm_vhsubq_m_n_u8): Remove.
15161 (__arm_vhsubq_m_n_u32): Remove.
15162 (__arm_vhsubq_m_n_u16): Remove.
15163 (__arm_vhsubq_m_s8): Remove.
15164 (__arm_vhsubq_m_s32): Remove.
15165 (__arm_vhsubq_m_s16): Remove.
15166 (__arm_vhsubq_m_u8): Remove.
15167 (__arm_vhsubq_m_u32): Remove.
15168 (__arm_vhsubq_m_u16): Remove.
15169 (__arm_vhaddq_x_n_s8): Remove.
15170 (__arm_vhaddq_x_n_s16): Remove.
15171 (__arm_vhaddq_x_n_s32): Remove.
15172 (__arm_vhaddq_x_n_u8): Remove.
15173 (__arm_vhaddq_x_n_u16): Remove.
15174 (__arm_vhaddq_x_n_u32): Remove.
15175 (__arm_vhaddq_x_s8): Remove.
15176 (__arm_vhaddq_x_s16): Remove.
15177 (__arm_vhaddq_x_s32): Remove.
15178 (__arm_vhaddq_x_u8): Remove.
15179 (__arm_vhaddq_x_u16): Remove.
15180 (__arm_vhaddq_x_u32): Remove.
15181 (__arm_vhsubq_x_n_s8): Remove.
15182 (__arm_vhsubq_x_n_s16): Remove.
15183 (__arm_vhsubq_x_n_s32): Remove.
15184 (__arm_vhsubq_x_n_u8): Remove.
15185 (__arm_vhsubq_x_n_u16): Remove.
15186 (__arm_vhsubq_x_n_u32): Remove.
15187 (__arm_vhsubq_x_s8): Remove.
15188 (__arm_vhsubq_x_s16): Remove.
15189 (__arm_vhsubq_x_s32): Remove.
15190 (__arm_vhsubq_x_u8): Remove.
15191 (__arm_vhsubq_x_u16): Remove.
15192 (__arm_vhsubq_x_u32): Remove.
15193 (__arm_vhsubq): Remove.
15194 (__arm_vhaddq): Remove.
15195 (__arm_vhaddq_m): Remove.
15196 (__arm_vhsubq_m): Remove.
15197 (__arm_vhaddq_x): Remove.
15198 (__arm_vhsubq_x): Remove.
15200 (vmulhq_m): Remove.
15201 (vmulhq_x): Remove.
15202 (vmulhq_u8): Remove.
15203 (vmulhq_s8): Remove.
15204 (vmulhq_u16): Remove.
15205 (vmulhq_s16): Remove.
15206 (vmulhq_u32): Remove.
15207 (vmulhq_s32): Remove.
15208 (vmulhq_m_s8): Remove.
15209 (vmulhq_m_s32): Remove.
15210 (vmulhq_m_s16): Remove.
15211 (vmulhq_m_u8): Remove.
15212 (vmulhq_m_u32): Remove.
15213 (vmulhq_m_u16): Remove.
15214 (vmulhq_x_s8): Remove.
15215 (vmulhq_x_s16): Remove.
15216 (vmulhq_x_s32): Remove.
15217 (vmulhq_x_u8): Remove.
15218 (vmulhq_x_u16): Remove.
15219 (vmulhq_x_u32): Remove.
15220 (__arm_vmulhq_u8): Remove.
15221 (__arm_vmulhq_s8): Remove.
15222 (__arm_vmulhq_u16): Remove.
15223 (__arm_vmulhq_s16): Remove.
15224 (__arm_vmulhq_u32): Remove.
15225 (__arm_vmulhq_s32): Remove.
15226 (__arm_vmulhq_m_s8): Remove.
15227 (__arm_vmulhq_m_s32): Remove.
15228 (__arm_vmulhq_m_s16): Remove.
15229 (__arm_vmulhq_m_u8): Remove.
15230 (__arm_vmulhq_m_u32): Remove.
15231 (__arm_vmulhq_m_u16): Remove.
15232 (__arm_vmulhq_x_s8): Remove.
15233 (__arm_vmulhq_x_s16): Remove.
15234 (__arm_vmulhq_x_s32): Remove.
15235 (__arm_vmulhq_x_u8): Remove.
15236 (__arm_vmulhq_x_u16): Remove.
15237 (__arm_vmulhq_x_u32): Remove.
15238 (__arm_vmulhq): Remove.
15239 (__arm_vmulhq_m): Remove.
15240 (__arm_vmulhq_x): Remove.
15243 (vqaddq_m): Remove.
15244 (vqsubq_m): Remove.
15245 (vqsubq_u8): Remove.
15246 (vqsubq_n_u8): Remove.
15247 (vqaddq_u8): Remove.
15248 (vqaddq_n_u8): Remove.
15249 (vqsubq_s8): Remove.
15250 (vqsubq_n_s8): Remove.
15251 (vqaddq_s8): Remove.
15252 (vqaddq_n_s8): Remove.
15253 (vqsubq_u16): Remove.
15254 (vqsubq_n_u16): Remove.
15255 (vqaddq_u16): Remove.
15256 (vqaddq_n_u16): Remove.
15257 (vqsubq_s16): Remove.
15258 (vqsubq_n_s16): Remove.
15259 (vqaddq_s16): Remove.
15260 (vqaddq_n_s16): Remove.
15261 (vqsubq_u32): Remove.
15262 (vqsubq_n_u32): Remove.
15263 (vqaddq_u32): Remove.
15264 (vqaddq_n_u32): Remove.
15265 (vqsubq_s32): Remove.
15266 (vqsubq_n_s32): Remove.
15267 (vqaddq_s32): Remove.
15268 (vqaddq_n_s32): Remove.
15269 (vqaddq_m_n_s8): Remove.
15270 (vqaddq_m_n_s32): Remove.
15271 (vqaddq_m_n_s16): Remove.
15272 (vqaddq_m_n_u8): Remove.
15273 (vqaddq_m_n_u32): Remove.
15274 (vqaddq_m_n_u16): Remove.
15275 (vqaddq_m_s8): Remove.
15276 (vqaddq_m_s32): Remove.
15277 (vqaddq_m_s16): Remove.
15278 (vqaddq_m_u8): Remove.
15279 (vqaddq_m_u32): Remove.
15280 (vqaddq_m_u16): Remove.
15281 (vqsubq_m_n_s8): Remove.
15282 (vqsubq_m_n_s32): Remove.
15283 (vqsubq_m_n_s16): Remove.
15284 (vqsubq_m_n_u8): Remove.
15285 (vqsubq_m_n_u32): Remove.
15286 (vqsubq_m_n_u16): Remove.
15287 (vqsubq_m_s8): Remove.
15288 (vqsubq_m_s32): Remove.
15289 (vqsubq_m_s16): Remove.
15290 (vqsubq_m_u8): Remove.
15291 (vqsubq_m_u32): Remove.
15292 (vqsubq_m_u16): Remove.
15293 (__arm_vqsubq_u8): Remove.
15294 (__arm_vqsubq_n_u8): Remove.
15295 (__arm_vqaddq_u8): Remove.
15296 (__arm_vqaddq_n_u8): Remove.
15297 (__arm_vqsubq_s8): Remove.
15298 (__arm_vqsubq_n_s8): Remove.
15299 (__arm_vqaddq_s8): Remove.
15300 (__arm_vqaddq_n_s8): Remove.
15301 (__arm_vqsubq_u16): Remove.
15302 (__arm_vqsubq_n_u16): Remove.
15303 (__arm_vqaddq_u16): Remove.
15304 (__arm_vqaddq_n_u16): Remove.
15305 (__arm_vqsubq_s16): Remove.
15306 (__arm_vqsubq_n_s16): Remove.
15307 (__arm_vqaddq_s16): Remove.
15308 (__arm_vqaddq_n_s16): Remove.
15309 (__arm_vqsubq_u32): Remove.
15310 (__arm_vqsubq_n_u32): Remove.
15311 (__arm_vqaddq_u32): Remove.
15312 (__arm_vqaddq_n_u32): Remove.
15313 (__arm_vqsubq_s32): Remove.
15314 (__arm_vqsubq_n_s32): Remove.
15315 (__arm_vqaddq_s32): Remove.
15316 (__arm_vqaddq_n_s32): Remove.
15317 (__arm_vqaddq_m_n_s8): Remove.
15318 (__arm_vqaddq_m_n_s32): Remove.
15319 (__arm_vqaddq_m_n_s16): Remove.
15320 (__arm_vqaddq_m_n_u8): Remove.
15321 (__arm_vqaddq_m_n_u32): Remove.
15322 (__arm_vqaddq_m_n_u16): Remove.
15323 (__arm_vqaddq_m_s8): Remove.
15324 (__arm_vqaddq_m_s32): Remove.
15325 (__arm_vqaddq_m_s16): Remove.
15326 (__arm_vqaddq_m_u8): Remove.
15327 (__arm_vqaddq_m_u32): Remove.
15328 (__arm_vqaddq_m_u16): Remove.
15329 (__arm_vqsubq_m_n_s8): Remove.
15330 (__arm_vqsubq_m_n_s32): Remove.
15331 (__arm_vqsubq_m_n_s16): Remove.
15332 (__arm_vqsubq_m_n_u8): Remove.
15333 (__arm_vqsubq_m_n_u32): Remove.
15334 (__arm_vqsubq_m_n_u16): Remove.
15335 (__arm_vqsubq_m_s8): Remove.
15336 (__arm_vqsubq_m_s32): Remove.
15337 (__arm_vqsubq_m_s16): Remove.
15338 (__arm_vqsubq_m_u8): Remove.
15339 (__arm_vqsubq_m_u32): Remove.
15340 (__arm_vqsubq_m_u16): Remove.
15341 (__arm_vqsubq): Remove.
15342 (__arm_vqaddq): Remove.
15343 (__arm_vqaddq_m): Remove.
15344 (__arm_vqsubq_m): Remove.
15345 (vqdmulhq): Remove.
15346 (vqdmulhq_m): Remove.
15347 (vqdmulhq_s8): Remove.
15348 (vqdmulhq_n_s8): Remove.
15349 (vqdmulhq_s16): Remove.
15350 (vqdmulhq_n_s16): Remove.
15351 (vqdmulhq_s32): Remove.
15352 (vqdmulhq_n_s32): Remove.
15353 (vqdmulhq_m_n_s8): Remove.
15354 (vqdmulhq_m_n_s32): Remove.
15355 (vqdmulhq_m_n_s16): Remove.
15356 (vqdmulhq_m_s8): Remove.
15357 (vqdmulhq_m_s32): Remove.
15358 (vqdmulhq_m_s16): Remove.
15359 (__arm_vqdmulhq_s8): Remove.
15360 (__arm_vqdmulhq_n_s8): Remove.
15361 (__arm_vqdmulhq_s16): Remove.
15362 (__arm_vqdmulhq_n_s16): Remove.
15363 (__arm_vqdmulhq_s32): Remove.
15364 (__arm_vqdmulhq_n_s32): Remove.
15365 (__arm_vqdmulhq_m_n_s8): Remove.
15366 (__arm_vqdmulhq_m_n_s32): Remove.
15367 (__arm_vqdmulhq_m_n_s16): Remove.
15368 (__arm_vqdmulhq_m_s8): Remove.
15369 (__arm_vqdmulhq_m_s32): Remove.
15370 (__arm_vqdmulhq_m_s16): Remove.
15371 (__arm_vqdmulhq): Remove.
15372 (__arm_vqdmulhq_m): Remove.
15374 (vrhaddq_m): Remove.
15375 (vrhaddq_x): Remove.
15376 (vrhaddq_u8): Remove.
15377 (vrhaddq_s8): Remove.
15378 (vrhaddq_u16): Remove.
15379 (vrhaddq_s16): Remove.
15380 (vrhaddq_u32): Remove.
15381 (vrhaddq_s32): Remove.
15382 (vrhaddq_m_s8): Remove.
15383 (vrhaddq_m_s32): Remove.
15384 (vrhaddq_m_s16): Remove.
15385 (vrhaddq_m_u8): Remove.
15386 (vrhaddq_m_u32): Remove.
15387 (vrhaddq_m_u16): Remove.
15388 (vrhaddq_x_s8): Remove.
15389 (vrhaddq_x_s16): Remove.
15390 (vrhaddq_x_s32): Remove.
15391 (vrhaddq_x_u8): Remove.
15392 (vrhaddq_x_u16): Remove.
15393 (vrhaddq_x_u32): Remove.
15394 (__arm_vrhaddq_u8): Remove.
15395 (__arm_vrhaddq_s8): Remove.
15396 (__arm_vrhaddq_u16): Remove.
15397 (__arm_vrhaddq_s16): Remove.
15398 (__arm_vrhaddq_u32): Remove.
15399 (__arm_vrhaddq_s32): Remove.
15400 (__arm_vrhaddq_m_s8): Remove.
15401 (__arm_vrhaddq_m_s32): Remove.
15402 (__arm_vrhaddq_m_s16): Remove.
15403 (__arm_vrhaddq_m_u8): Remove.
15404 (__arm_vrhaddq_m_u32): Remove.
15405 (__arm_vrhaddq_m_u16): Remove.
15406 (__arm_vrhaddq_x_s8): Remove.
15407 (__arm_vrhaddq_x_s16): Remove.
15408 (__arm_vrhaddq_x_s32): Remove.
15409 (__arm_vrhaddq_x_u8): Remove.
15410 (__arm_vrhaddq_x_u16): Remove.
15411 (__arm_vrhaddq_x_u32): Remove.
15412 (__arm_vrhaddq): Remove.
15413 (__arm_vrhaddq_m): Remove.
15414 (__arm_vrhaddq_x): Remove.
15416 (vrmulhq_m): Remove.
15417 (vrmulhq_x): Remove.
15418 (vrmulhq_u8): Remove.
15419 (vrmulhq_s8): Remove.
15420 (vrmulhq_u16): Remove.
15421 (vrmulhq_s16): Remove.
15422 (vrmulhq_u32): Remove.
15423 (vrmulhq_s32): Remove.
15424 (vrmulhq_m_s8): Remove.
15425 (vrmulhq_m_s32): Remove.
15426 (vrmulhq_m_s16): Remove.
15427 (vrmulhq_m_u8): Remove.
15428 (vrmulhq_m_u32): Remove.
15429 (vrmulhq_m_u16): Remove.
15430 (vrmulhq_x_s8): Remove.
15431 (vrmulhq_x_s16): Remove.
15432 (vrmulhq_x_s32): Remove.
15433 (vrmulhq_x_u8): Remove.
15434 (vrmulhq_x_u16): Remove.
15435 (vrmulhq_x_u32): Remove.
15436 (__arm_vrmulhq_u8): Remove.
15437 (__arm_vrmulhq_s8): Remove.
15438 (__arm_vrmulhq_u16): Remove.
15439 (__arm_vrmulhq_s16): Remove.
15440 (__arm_vrmulhq_u32): Remove.
15441 (__arm_vrmulhq_s32): Remove.
15442 (__arm_vrmulhq_m_s8): Remove.
15443 (__arm_vrmulhq_m_s32): Remove.
15444 (__arm_vrmulhq_m_s16): Remove.
15445 (__arm_vrmulhq_m_u8): Remove.
15446 (__arm_vrmulhq_m_u32): Remove.
15447 (__arm_vrmulhq_m_u16): Remove.
15448 (__arm_vrmulhq_x_s8): Remove.
15449 (__arm_vrmulhq_x_s16): Remove.
15450 (__arm_vrmulhq_x_s32): Remove.
15451 (__arm_vrmulhq_x_u8): Remove.
15452 (__arm_vrmulhq_x_u16): Remove.
15453 (__arm_vrmulhq_x_u32): Remove.
15454 (__arm_vrmulhq): Remove.
15455 (__arm_vrmulhq_m): Remove.
15456 (__arm_vrmulhq_x): Remove.
15458 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15460 * config/arm/iterators.md (MVE_INT_SU_BINARY): New.
15461 (mve_insn): Add vabdq, vhaddq, vhsubq, vmulhq, vqaddq, vqdmulhq,
15462 vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq.
15463 (supf): Add VQDMULHQ_S, VQRDMULHQ_S.
15464 * config/arm/mve.md (mve_vabdq_<supf><mode>)
15465 (@mve_vhaddq_<supf><mode>, mve_vhsubq_<supf><mode>)
15466 (mve_vmulhq_<supf><mode>, mve_vqaddq_<supf><mode>)
15467 (mve_vqdmulhq_s<mode>, mve_vqrdmulhq_s<mode>)
15468 (mve_vqrshlq_<supf><mode>, mve_vqshlq_<supf><mode>)
15469 (mve_vqsubq_<supf><mode>, @mve_vrhaddq_<supf><mode>)
15470 (mve_vrmulhq_<supf><mode>, mve_vrshlq_<supf><mode>): Merge into
15472 (@mve_<mve_insn>q_<supf><mode>): ... this.
15473 * config/arm/vec-common.md (avg<mode>3_floor, uavg<mode>3_floor)
15474 (avg<mode>3_ceil, uavg<mode>3_ceil): Use gen_mve_q instead of
15475 gen_mve_vhaddq / gen_mve_vrhaddq.
15477 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15479 * config/arm/iterators.md (MVE_INT_SU_M_N_BINARY): New.
15480 (mve_insn): Add vhaddq, vhsubq, vmlaq, vmlasq, vqaddq, vqdmlahq,
15481 vqdmlashq, vqdmulhq, vqrdmlahq, vqrdmlashq, vqrdmulhq, vqsubq.
15482 (supf): Add VQDMLAHQ_M_N_S, VQDMLASHQ_M_N_S, VQRDMLAHQ_M_N_S,
15483 VQRDMLASHQ_M_N_S, VQDMULHQ_M_N_S, VQRDMULHQ_M_N_S.
15484 * config/arm/mve.md (mve_vhaddq_m_n_<supf><mode>)
15485 (mve_vhsubq_m_n_<supf><mode>, mve_vmlaq_m_n_<supf><mode>)
15486 (mve_vmlasq_m_n_<supf><mode>, mve_vqaddq_m_n_<supf><mode>)
15487 (mve_vqdmlahq_m_n_s<mode>, mve_vqdmlashq_m_n_s<mode>)
15488 (mve_vqrdmlahq_m_n_s<mode>, mve_vqrdmlashq_m_n_s<mode>)
15489 (mve_vqsubq_m_n_<supf><mode>, mve_vqdmulhq_m_n_s<mode>)
15490 (mve_vqrdmulhq_m_n_s<mode>): Merge into ...
15491 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
15493 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15495 * config/arm/iterators.md (MVE_INT_SU_N_BINARY): New.
15496 (mve_insn): Add vhaddq, vhsubq, vqaddq, vqdmulhq, vqrdmulhq,
15498 (supf): Add VQDMULHQ_N_S, VQRDMULHQ_N_S.
15499 * config/arm/mve.md (mve_vhaddq_n_<supf><mode>)
15500 (mve_vhsubq_n_<supf><mode>, mve_vqaddq_n_<supf><mode>)
15501 (mve_vqdmulhq_n_s<mode>, mve_vqrdmulhq_n_s<mode>)
15502 (mve_vqsubq_n_<supf><mode>): Merge into ...
15503 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
15505 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15507 * config/arm/iterators.md (MVE_INT_SU_M_BINARY): New.
15508 (mve_insn): Add vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq,
15509 vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq,
15510 vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq,
15511 vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq.
15512 (supf): Add VQDMLADHQ_M_S, VQDMLADHXQ_M_S, VQDMLSDHQ_M_S,
15513 VQDMLSDHXQ_M_S, VQDMULHQ_M_S, VQRDMLADHQ_M_S, VQRDMLADHXQ_M_S,
15514 VQRDMLSDHQ_M_S, VQRDMLSDHXQ_M_S, VQRDMULHQ_M_S.
15515 * config/arm/mve.md (@mve_<mve_insn>q_m_<supf><mode>): New.
15516 (mve_vshlq_m_<supf><mode>): Merged into
15517 @mve_<mve_insn>q_m_<supf><mode>.
15518 (mve_vabdq_m_<supf><mode>): Likewise.
15519 (mve_vhaddq_m_<supf><mode>): Likewise.
15520 (mve_vhsubq_m_<supf><mode>): Likewise.
15521 (mve_vmaxq_m_<supf><mode>): Likewise.
15522 (mve_vminq_m_<supf><mode>): Likewise.
15523 (mve_vmulhq_m_<supf><mode>): Likewise.
15524 (mve_vqaddq_m_<supf><mode>): Likewise.
15525 (mve_vqrshlq_m_<supf><mode>): Likewise.
15526 (mve_vqshlq_m_<supf><mode>): Likewise.
15527 (mve_vqsubq_m_<supf><mode>): Likewise.
15528 (mve_vrhaddq_m_<supf><mode>): Likewise.
15529 (mve_vrmulhq_m_<supf><mode>): Likewise.
15530 (mve_vrshlq_m_<supf><mode>): Likewise.
15531 (mve_vqdmladhq_m_s<mode>): Likewise.
15532 (mve_vqdmladhxq_m_s<mode>): Likewise.
15533 (mve_vqdmlsdhq_m_s<mode>): Likewise.
15534 (mve_vqdmlsdhxq_m_s<mode>): Likewise.
15535 (mve_vqdmulhq_m_s<mode>): Likewise.
15536 (mve_vqrdmladhq_m_s<mode>): Likewise.
15537 (mve_vqrdmladhxq_m_s<mode>): Likewise.
15538 (mve_vqrdmlsdhq_m_s<mode>): Likewise.
15539 (mve_vqrdmlsdhxq_m_s<mode>): Likewise.
15540 (mve_vqrdmulhq_m_s<mode>): Likewise.
15542 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15544 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITHOUT_M_N): New. (vcreateq): New.
15545 * config/arm/arm-mve-builtins-base.def (vcreateq): New.
15546 * config/arm/arm-mve-builtins-base.h (vcreateq): New.
15547 * config/arm/arm_mve.h (vcreateq_f16): Remove.
15548 (vcreateq_f32): Remove.
15549 (vcreateq_u8): Remove.
15550 (vcreateq_u16): Remove.
15551 (vcreateq_u32): Remove.
15552 (vcreateq_u64): Remove.
15553 (vcreateq_s8): Remove.
15554 (vcreateq_s16): Remove.
15555 (vcreateq_s32): Remove.
15556 (vcreateq_s64): Remove.
15557 (__arm_vcreateq_u8): Remove.
15558 (__arm_vcreateq_u16): Remove.
15559 (__arm_vcreateq_u32): Remove.
15560 (__arm_vcreateq_u64): Remove.
15561 (__arm_vcreateq_s8): Remove.
15562 (__arm_vcreateq_s16): Remove.
15563 (__arm_vcreateq_s32): Remove.
15564 (__arm_vcreateq_s64): Remove.
15565 (__arm_vcreateq_f16): Remove.
15566 (__arm_vcreateq_f32): Remove.
15568 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15570 * config/arm/iterators.md (MVE_FP_CREATE_ONLY): New.
15571 (mve_insn): Add VCREATEQ_S, VCREATEQ_U, VCREATEQ_F.
15572 * config/arm/mve.md (mve_vcreateq_f<mode>): Rename into ...
15573 (@mve_<mve_insn>q_f<mode>): ... this.
15574 (mve_vcreateq_<supf><mode>): Rename into ...
15575 (@mve_<mve_insn>q_<supf><mode>): ... this.
15577 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15579 * config/arm/arm-mve-builtins-shapes.cc (create): New.
15580 * config/arm/arm-mve-builtins-shapes.h: (create): New.
15582 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15584 * config/arm/arm-mve-builtins-functions.h (class
15585 unspec_mve_function_exact_insn): New.
15587 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15589 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N_NO_N_F): New.
15591 * config/arm/arm-mve-builtins-base.def (vorrq): New.
15592 * config/arm/arm-mve-builtins-base.h (vorrq): New.
15593 * config/arm/arm-mve-builtins.cc
15594 (function_instance::has_inactive_argument): Handle vorrq.
15595 * config/arm/arm_mve.h (vorrq): Remove.
15596 (vorrq_m_n): Remove.
15599 (vorrq_u8): Remove.
15600 (vorrq_s8): Remove.
15601 (vorrq_u16): Remove.
15602 (vorrq_s16): Remove.
15603 (vorrq_u32): Remove.
15604 (vorrq_s32): Remove.
15605 (vorrq_n_u16): Remove.
15606 (vorrq_f16): Remove.
15607 (vorrq_n_s16): Remove.
15608 (vorrq_n_u32): Remove.
15609 (vorrq_f32): Remove.
15610 (vorrq_n_s32): Remove.
15611 (vorrq_m_n_s16): Remove.
15612 (vorrq_m_n_u16): Remove.
15613 (vorrq_m_n_s32): Remove.
15614 (vorrq_m_n_u32): Remove.
15615 (vorrq_m_s8): Remove.
15616 (vorrq_m_s32): Remove.
15617 (vorrq_m_s16): Remove.
15618 (vorrq_m_u8): Remove.
15619 (vorrq_m_u32): Remove.
15620 (vorrq_m_u16): Remove.
15621 (vorrq_m_f32): Remove.
15622 (vorrq_m_f16): Remove.
15623 (vorrq_x_s8): Remove.
15624 (vorrq_x_s16): Remove.
15625 (vorrq_x_s32): Remove.
15626 (vorrq_x_u8): Remove.
15627 (vorrq_x_u16): Remove.
15628 (vorrq_x_u32): Remove.
15629 (vorrq_x_f16): Remove.
15630 (vorrq_x_f32): Remove.
15631 (__arm_vorrq_u8): Remove.
15632 (__arm_vorrq_s8): Remove.
15633 (__arm_vorrq_u16): Remove.
15634 (__arm_vorrq_s16): Remove.
15635 (__arm_vorrq_u32): Remove.
15636 (__arm_vorrq_s32): Remove.
15637 (__arm_vorrq_n_u16): Remove.
15638 (__arm_vorrq_n_s16): Remove.
15639 (__arm_vorrq_n_u32): Remove.
15640 (__arm_vorrq_n_s32): Remove.
15641 (__arm_vorrq_m_n_s16): Remove.
15642 (__arm_vorrq_m_n_u16): Remove.
15643 (__arm_vorrq_m_n_s32): Remove.
15644 (__arm_vorrq_m_n_u32): Remove.
15645 (__arm_vorrq_m_s8): Remove.
15646 (__arm_vorrq_m_s32): Remove.
15647 (__arm_vorrq_m_s16): Remove.
15648 (__arm_vorrq_m_u8): Remove.
15649 (__arm_vorrq_m_u32): Remove.
15650 (__arm_vorrq_m_u16): Remove.
15651 (__arm_vorrq_x_s8): Remove.
15652 (__arm_vorrq_x_s16): Remove.
15653 (__arm_vorrq_x_s32): Remove.
15654 (__arm_vorrq_x_u8): Remove.
15655 (__arm_vorrq_x_u16): Remove.
15656 (__arm_vorrq_x_u32): Remove.
15657 (__arm_vorrq_f16): Remove.
15658 (__arm_vorrq_f32): Remove.
15659 (__arm_vorrq_m_f32): Remove.
15660 (__arm_vorrq_m_f16): Remove.
15661 (__arm_vorrq_x_f16): Remove.
15662 (__arm_vorrq_x_f32): Remove.
15663 (__arm_vorrq): Remove.
15664 (__arm_vorrq_m_n): Remove.
15665 (__arm_vorrq_m): Remove.
15666 (__arm_vorrq_x): Remove.
15668 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15670 * config/arm/arm-mve-builtins-shapes.cc (binary_orrq): New.
15671 * config/arm/arm-mve-builtins-shapes.h (binary_orrq): New.
15672 * config/arm/arm-mve-builtins.cc (preds_m_or_none): Remove static.
15673 * config/arm/arm-mve-builtins.h (preds_m_or_none): Declare.
15675 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15677 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M): New.
15678 (vandq,veorq): New.
15679 * config/arm/arm-mve-builtins-base.def (vandq, veorq): New.
15680 * config/arm/arm-mve-builtins-base.h (vandq, veorq): New.
15681 * config/arm/arm_mve.h (vandq): Remove.
15684 (vandq_u8): Remove.
15685 (vandq_s8): Remove.
15686 (vandq_u16): Remove.
15687 (vandq_s16): Remove.
15688 (vandq_u32): Remove.
15689 (vandq_s32): Remove.
15690 (vandq_f16): Remove.
15691 (vandq_f32): Remove.
15692 (vandq_m_s8): Remove.
15693 (vandq_m_s32): Remove.
15694 (vandq_m_s16): Remove.
15695 (vandq_m_u8): Remove.
15696 (vandq_m_u32): Remove.
15697 (vandq_m_u16): Remove.
15698 (vandq_m_f32): Remove.
15699 (vandq_m_f16): Remove.
15700 (vandq_x_s8): Remove.
15701 (vandq_x_s16): Remove.
15702 (vandq_x_s32): Remove.
15703 (vandq_x_u8): Remove.
15704 (vandq_x_u16): Remove.
15705 (vandq_x_u32): Remove.
15706 (vandq_x_f16): Remove.
15707 (vandq_x_f32): Remove.
15708 (__arm_vandq_u8): Remove.
15709 (__arm_vandq_s8): Remove.
15710 (__arm_vandq_u16): Remove.
15711 (__arm_vandq_s16): Remove.
15712 (__arm_vandq_u32): Remove.
15713 (__arm_vandq_s32): Remove.
15714 (__arm_vandq_m_s8): Remove.
15715 (__arm_vandq_m_s32): Remove.
15716 (__arm_vandq_m_s16): Remove.
15717 (__arm_vandq_m_u8): Remove.
15718 (__arm_vandq_m_u32): Remove.
15719 (__arm_vandq_m_u16): Remove.
15720 (__arm_vandq_x_s8): Remove.
15721 (__arm_vandq_x_s16): Remove.
15722 (__arm_vandq_x_s32): Remove.
15723 (__arm_vandq_x_u8): Remove.
15724 (__arm_vandq_x_u16): Remove.
15725 (__arm_vandq_x_u32): Remove.
15726 (__arm_vandq_f16): Remove.
15727 (__arm_vandq_f32): Remove.
15728 (__arm_vandq_m_f32): Remove.
15729 (__arm_vandq_m_f16): Remove.
15730 (__arm_vandq_x_f16): Remove.
15731 (__arm_vandq_x_f32): Remove.
15732 (__arm_vandq): Remove.
15733 (__arm_vandq_m): Remove.
15734 (__arm_vandq_x): Remove.
15737 (veorq_u8): Remove.
15738 (veorq_s8): Remove.
15739 (veorq_u16): Remove.
15740 (veorq_s16): Remove.
15741 (veorq_u32): Remove.
15742 (veorq_s32): Remove.
15743 (veorq_f16): Remove.
15744 (veorq_f32): Remove.
15745 (veorq_m_s8): Remove.
15746 (veorq_m_s32): Remove.
15747 (veorq_m_s16): Remove.
15748 (veorq_m_u8): Remove.
15749 (veorq_m_u32): Remove.
15750 (veorq_m_u16): Remove.
15751 (veorq_m_f32): Remove.
15752 (veorq_m_f16): Remove.
15753 (veorq_x_s8): Remove.
15754 (veorq_x_s16): Remove.
15755 (veorq_x_s32): Remove.
15756 (veorq_x_u8): Remove.
15757 (veorq_x_u16): Remove.
15758 (veorq_x_u32): Remove.
15759 (veorq_x_f16): Remove.
15760 (veorq_x_f32): Remove.
15761 (__arm_veorq_u8): Remove.
15762 (__arm_veorq_s8): Remove.
15763 (__arm_veorq_u16): Remove.
15764 (__arm_veorq_s16): Remove.
15765 (__arm_veorq_u32): Remove.
15766 (__arm_veorq_s32): Remove.
15767 (__arm_veorq_m_s8): Remove.
15768 (__arm_veorq_m_s32): Remove.
15769 (__arm_veorq_m_s16): Remove.
15770 (__arm_veorq_m_u8): Remove.
15771 (__arm_veorq_m_u32): Remove.
15772 (__arm_veorq_m_u16): Remove.
15773 (__arm_veorq_x_s8): Remove.
15774 (__arm_veorq_x_s16): Remove.
15775 (__arm_veorq_x_s32): Remove.
15776 (__arm_veorq_x_u8): Remove.
15777 (__arm_veorq_x_u16): Remove.
15778 (__arm_veorq_x_u32): Remove.
15779 (__arm_veorq_f16): Remove.
15780 (__arm_veorq_f32): Remove.
15781 (__arm_veorq_m_f32): Remove.
15782 (__arm_veorq_m_f16): Remove.
15783 (__arm_veorq_x_f16): Remove.
15784 (__arm_veorq_x_f32): Remove.
15785 (__arm_veorq): Remove.
15786 (__arm_veorq_m): Remove.
15787 (__arm_veorq_x): Remove.
15789 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15791 * config/arm/iterators.md (MVE_INT_M_BINARY_LOGIC)
15792 (MVE_FP_M_BINARY_LOGIC): New.
15793 (MVE_INT_M_N_BINARY_LOGIC): New.
15794 (MVE_INT_N_BINARY_LOGIC): New.
15795 (mve_insn): Add vand, veor, vorr, vbic.
15796 * config/arm/mve.md (mve_vandq_m_<supf><mode>)
15797 (mve_veorq_m_<supf><mode>, mve_vorrq_m_<supf><mode>)
15798 (mve_vbicq_m_<supf><mode>): Merge into ...
15799 (@mve_<mve_insn>q_m_<supf><mode>): ... this.
15800 (mve_vandq_m_f<mode>, mve_veorq_m_f<mode>, mve_vorrq_m_f<mode>)
15801 (mve_vbicq_m_f<mode>): Merge into ...
15802 (@mve_<mve_insn>q_m_f<mode>): ... this.
15803 (mve_vorrq_n_<supf><mode>)
15804 (mve_vbicq_n_<supf><mode>): Merge into ...
15805 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
15806 (mve_vorrq_m_n_<supf><mode>, mve_vbicq_m_n_<supf><mode>): Merge
15808 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
15810 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15812 * config/arm/arm-mve-builtins-shapes.cc (binary): New.
15813 * config/arm/arm-mve-builtins-shapes.h (binary): New.
15815 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
15817 * config/arm/arm-mve-builtins-base.cc (FUNCTION_WITH_RTX_M_N):
15819 (vaddq, vmulq, vsubq): New.
15820 * config/arm/arm-mve-builtins-base.def (vaddq, vmulq, vsubq): New.
15821 * config/arm/arm-mve-builtins-base.h (vaddq, vmulq, vsubq): New.
15822 * config/arm/arm_mve.h (vaddq): Remove.
15825 (vaddq_n_u8): Remove.
15826 (vaddq_n_s8): Remove.
15827 (vaddq_n_u16): Remove.
15828 (vaddq_n_s16): Remove.
15829 (vaddq_n_u32): Remove.
15830 (vaddq_n_s32): Remove.
15831 (vaddq_n_f16): Remove.
15832 (vaddq_n_f32): Remove.
15833 (vaddq_m_n_s8): Remove.
15834 (vaddq_m_n_s32): Remove.
15835 (vaddq_m_n_s16): Remove.
15836 (vaddq_m_n_u8): Remove.
15837 (vaddq_m_n_u32): Remove.
15838 (vaddq_m_n_u16): Remove.
15839 (vaddq_m_s8): Remove.
15840 (vaddq_m_s32): Remove.
15841 (vaddq_m_s16): Remove.
15842 (vaddq_m_u8): Remove.
15843 (vaddq_m_u32): Remove.
15844 (vaddq_m_u16): Remove.
15845 (vaddq_m_f32): Remove.
15846 (vaddq_m_f16): Remove.
15847 (vaddq_m_n_f32): Remove.
15848 (vaddq_m_n_f16): Remove.
15849 (vaddq_s8): Remove.
15850 (vaddq_s16): Remove.
15851 (vaddq_s32): Remove.
15852 (vaddq_u8): Remove.
15853 (vaddq_u16): Remove.
15854 (vaddq_u32): Remove.
15855 (vaddq_f16): Remove.
15856 (vaddq_f32): Remove.
15857 (vaddq_x_s8): Remove.
15858 (vaddq_x_s16): Remove.
15859 (vaddq_x_s32): Remove.
15860 (vaddq_x_n_s8): Remove.
15861 (vaddq_x_n_s16): Remove.
15862 (vaddq_x_n_s32): Remove.
15863 (vaddq_x_u8): Remove.
15864 (vaddq_x_u16): Remove.
15865 (vaddq_x_u32): Remove.
15866 (vaddq_x_n_u8): Remove.
15867 (vaddq_x_n_u16): Remove.
15868 (vaddq_x_n_u32): Remove.
15869 (vaddq_x_f16): Remove.
15870 (vaddq_x_f32): Remove.
15871 (vaddq_x_n_f16): Remove.
15872 (vaddq_x_n_f32): Remove.
15873 (__arm_vaddq_n_u8): Remove.
15874 (__arm_vaddq_n_s8): Remove.
15875 (__arm_vaddq_n_u16): Remove.
15876 (__arm_vaddq_n_s16): Remove.
15877 (__arm_vaddq_n_u32): Remove.
15878 (__arm_vaddq_n_s32): Remove.
15879 (__arm_vaddq_m_n_s8): Remove.
15880 (__arm_vaddq_m_n_s32): Remove.
15881 (__arm_vaddq_m_n_s16): Remove.
15882 (__arm_vaddq_m_n_u8): Remove.
15883 (__arm_vaddq_m_n_u32): Remove.
15884 (__arm_vaddq_m_n_u16): Remove.
15885 (__arm_vaddq_m_s8): Remove.
15886 (__arm_vaddq_m_s32): Remove.
15887 (__arm_vaddq_m_s16): Remove.
15888 (__arm_vaddq_m_u8): Remove.
15889 (__arm_vaddq_m_u32): Remove.
15890 (__arm_vaddq_m_u16): Remove.
15891 (__arm_vaddq_s8): Remove.
15892 (__arm_vaddq_s16): Remove.
15893 (__arm_vaddq_s32): Remove.
15894 (__arm_vaddq_u8): Remove.
15895 (__arm_vaddq_u16): Remove.
15896 (__arm_vaddq_u32): Remove.
15897 (__arm_vaddq_x_s8): Remove.
15898 (__arm_vaddq_x_s16): Remove.
15899 (__arm_vaddq_x_s32): Remove.
15900 (__arm_vaddq_x_n_s8): Remove.
15901 (__arm_vaddq_x_n_s16): Remove.
15902 (__arm_vaddq_x_n_s32): Remove.
15903 (__arm_vaddq_x_u8): Remove.
15904 (__arm_vaddq_x_u16): Remove.
15905 (__arm_vaddq_x_u32): Remove.
15906 (__arm_vaddq_x_n_u8): Remove.
15907 (__arm_vaddq_x_n_u16): Remove.
15908 (__arm_vaddq_x_n_u32): Remove.
15909 (__arm_vaddq_n_f16): Remove.
15910 (__arm_vaddq_n_f32): Remove.
15911 (__arm_vaddq_m_f32): Remove.
15912 (__arm_vaddq_m_f16): Remove.
15913 (__arm_vaddq_m_n_f32): Remove.
15914 (__arm_vaddq_m_n_f16): Remove.
15915 (__arm_vaddq_f16): Remove.
15916 (__arm_vaddq_f32): Remove.
15917 (__arm_vaddq_x_f16): Remove.
15918 (__arm_vaddq_x_f32): Remove.
15919 (__arm_vaddq_x_n_f16): Remove.
15920 (__arm_vaddq_x_n_f32): Remove.
15921 (__arm_vaddq): Remove.
15922 (__arm_vaddq_m): Remove.
15923 (__arm_vaddq_x): Remove.
15927 (vmulq_u8): Remove.
15928 (vmulq_n_u8): Remove.
15929 (vmulq_s8): Remove.
15930 (vmulq_n_s8): Remove.
15931 (vmulq_u16): Remove.
15932 (vmulq_n_u16): Remove.
15933 (vmulq_s16): Remove.
15934 (vmulq_n_s16): Remove.
15935 (vmulq_u32): Remove.
15936 (vmulq_n_u32): Remove.
15937 (vmulq_s32): Remove.
15938 (vmulq_n_s32): Remove.
15939 (vmulq_n_f16): Remove.
15940 (vmulq_f16): Remove.
15941 (vmulq_n_f32): Remove.
15942 (vmulq_f32): Remove.
15943 (vmulq_m_n_s8): Remove.
15944 (vmulq_m_n_s32): Remove.
15945 (vmulq_m_n_s16): Remove.
15946 (vmulq_m_n_u8): Remove.
15947 (vmulq_m_n_u32): Remove.
15948 (vmulq_m_n_u16): Remove.
15949 (vmulq_m_s8): Remove.
15950 (vmulq_m_s32): Remove.
15951 (vmulq_m_s16): Remove.
15952 (vmulq_m_u8): Remove.
15953 (vmulq_m_u32): Remove.
15954 (vmulq_m_u16): Remove.
15955 (vmulq_m_f32): Remove.
15956 (vmulq_m_f16): Remove.
15957 (vmulq_m_n_f32): Remove.
15958 (vmulq_m_n_f16): Remove.
15959 (vmulq_x_s8): Remove.
15960 (vmulq_x_s16): Remove.
15961 (vmulq_x_s32): Remove.
15962 (vmulq_x_n_s8): Remove.
15963 (vmulq_x_n_s16): Remove.
15964 (vmulq_x_n_s32): Remove.
15965 (vmulq_x_u8): Remove.
15966 (vmulq_x_u16): Remove.
15967 (vmulq_x_u32): Remove.
15968 (vmulq_x_n_u8): Remove.
15969 (vmulq_x_n_u16): Remove.
15970 (vmulq_x_n_u32): Remove.
15971 (vmulq_x_f16): Remove.
15972 (vmulq_x_f32): Remove.
15973 (vmulq_x_n_f16): Remove.
15974 (vmulq_x_n_f32): Remove.
15975 (__arm_vmulq_u8): Remove.
15976 (__arm_vmulq_n_u8): Remove.
15977 (__arm_vmulq_s8): Remove.
15978 (__arm_vmulq_n_s8): Remove.
15979 (__arm_vmulq_u16): Remove.
15980 (__arm_vmulq_n_u16): Remove.
15981 (__arm_vmulq_s16): Remove.
15982 (__arm_vmulq_n_s16): Remove.
15983 (__arm_vmulq_u32): Remove.
15984 (__arm_vmulq_n_u32): Remove.
15985 (__arm_vmulq_s32): Remove.
15986 (__arm_vmulq_n_s32): Remove.
15987 (__arm_vmulq_m_n_s8): Remove.
15988 (__arm_vmulq_m_n_s32): Remove.
15989 (__arm_vmulq_m_n_s16): Remove.
15990 (__arm_vmulq_m_n_u8): Remove.
15991 (__arm_vmulq_m_n_u32): Remove.
15992 (__arm_vmulq_m_n_u16): Remove.
15993 (__arm_vmulq_m_s8): Remove.
15994 (__arm_vmulq_m_s32): Remove.
15995 (__arm_vmulq_m_s16): Remove.
15996 (__arm_vmulq_m_u8): Remove.
15997 (__arm_vmulq_m_u32): Remove.
15998 (__arm_vmulq_m_u16): Remove.
15999 (__arm_vmulq_x_s8): Remove.
16000 (__arm_vmulq_x_s16): Remove.
16001 (__arm_vmulq_x_s32): Remove.
16002 (__arm_vmulq_x_n_s8): Remove.
16003 (__arm_vmulq_x_n_s16): Remove.
16004 (__arm_vmulq_x_n_s32): Remove.
16005 (__arm_vmulq_x_u8): Remove.
16006 (__arm_vmulq_x_u16): Remove.
16007 (__arm_vmulq_x_u32): Remove.
16008 (__arm_vmulq_x_n_u8): Remove.
16009 (__arm_vmulq_x_n_u16): Remove.
16010 (__arm_vmulq_x_n_u32): Remove.
16011 (__arm_vmulq_n_f16): Remove.
16012 (__arm_vmulq_f16): Remove.
16013 (__arm_vmulq_n_f32): Remove.
16014 (__arm_vmulq_f32): Remove.
16015 (__arm_vmulq_m_f32): Remove.
16016 (__arm_vmulq_m_f16): Remove.
16017 (__arm_vmulq_m_n_f32): Remove.
16018 (__arm_vmulq_m_n_f16): Remove.
16019 (__arm_vmulq_x_f16): Remove.
16020 (__arm_vmulq_x_f32): Remove.
16021 (__arm_vmulq_x_n_f16): Remove.
16022 (__arm_vmulq_x_n_f32): Remove.
16023 (__arm_vmulq): Remove.
16024 (__arm_vmulq_m): Remove.
16025 (__arm_vmulq_x): Remove.
16029 (vsubq_n_f16): Remove.
16030 (vsubq_n_f32): Remove.
16031 (vsubq_u8): Remove.
16032 (vsubq_n_u8): Remove.
16033 (vsubq_s8): Remove.
16034 (vsubq_n_s8): Remove.
16035 (vsubq_u16): Remove.
16036 (vsubq_n_u16): Remove.
16037 (vsubq_s16): Remove.
16038 (vsubq_n_s16): Remove.
16039 (vsubq_u32): Remove.
16040 (vsubq_n_u32): Remove.
16041 (vsubq_s32): Remove.
16042 (vsubq_n_s32): Remove.
16043 (vsubq_f16): Remove.
16044 (vsubq_f32): Remove.
16045 (vsubq_m_s8): Remove.
16046 (vsubq_m_u8): Remove.
16047 (vsubq_m_s16): Remove.
16048 (vsubq_m_u16): Remove.
16049 (vsubq_m_s32): Remove.
16050 (vsubq_m_u32): Remove.
16051 (vsubq_m_n_s8): Remove.
16052 (vsubq_m_n_s32): Remove.
16053 (vsubq_m_n_s16): Remove.
16054 (vsubq_m_n_u8): Remove.
16055 (vsubq_m_n_u32): Remove.
16056 (vsubq_m_n_u16): Remove.
16057 (vsubq_m_f32): Remove.
16058 (vsubq_m_f16): Remove.
16059 (vsubq_m_n_f32): Remove.
16060 (vsubq_m_n_f16): Remove.
16061 (vsubq_x_s8): Remove.
16062 (vsubq_x_s16): Remove.
16063 (vsubq_x_s32): Remove.
16064 (vsubq_x_n_s8): Remove.
16065 (vsubq_x_n_s16): Remove.
16066 (vsubq_x_n_s32): Remove.
16067 (vsubq_x_u8): Remove.
16068 (vsubq_x_u16): Remove.
16069 (vsubq_x_u32): Remove.
16070 (vsubq_x_n_u8): Remove.
16071 (vsubq_x_n_u16): Remove.
16072 (vsubq_x_n_u32): Remove.
16073 (vsubq_x_f16): Remove.
16074 (vsubq_x_f32): Remove.
16075 (vsubq_x_n_f16): Remove.
16076 (vsubq_x_n_f32): Remove.
16077 (__arm_vsubq_u8): Remove.
16078 (__arm_vsubq_n_u8): Remove.
16079 (__arm_vsubq_s8): Remove.
16080 (__arm_vsubq_n_s8): Remove.
16081 (__arm_vsubq_u16): Remove.
16082 (__arm_vsubq_n_u16): Remove.
16083 (__arm_vsubq_s16): Remove.
16084 (__arm_vsubq_n_s16): Remove.
16085 (__arm_vsubq_u32): Remove.
16086 (__arm_vsubq_n_u32): Remove.
16087 (__arm_vsubq_s32): Remove.
16088 (__arm_vsubq_n_s32): Remove.
16089 (__arm_vsubq_m_s8): Remove.
16090 (__arm_vsubq_m_u8): Remove.
16091 (__arm_vsubq_m_s16): Remove.
16092 (__arm_vsubq_m_u16): Remove.
16093 (__arm_vsubq_m_s32): Remove.
16094 (__arm_vsubq_m_u32): Remove.
16095 (__arm_vsubq_m_n_s8): Remove.
16096 (__arm_vsubq_m_n_s32): Remove.
16097 (__arm_vsubq_m_n_s16): Remove.
16098 (__arm_vsubq_m_n_u8): Remove.
16099 (__arm_vsubq_m_n_u32): Remove.
16100 (__arm_vsubq_m_n_u16): Remove.
16101 (__arm_vsubq_x_s8): Remove.
16102 (__arm_vsubq_x_s16): Remove.
16103 (__arm_vsubq_x_s32): Remove.
16104 (__arm_vsubq_x_n_s8): Remove.
16105 (__arm_vsubq_x_n_s16): Remove.
16106 (__arm_vsubq_x_n_s32): Remove.
16107 (__arm_vsubq_x_u8): Remove.
16108 (__arm_vsubq_x_u16): Remove.
16109 (__arm_vsubq_x_u32): Remove.
16110 (__arm_vsubq_x_n_u8): Remove.
16111 (__arm_vsubq_x_n_u16): Remove.
16112 (__arm_vsubq_x_n_u32): Remove.
16113 (__arm_vsubq_n_f16): Remove.
16114 (__arm_vsubq_n_f32): Remove.
16115 (__arm_vsubq_f16): Remove.
16116 (__arm_vsubq_f32): Remove.
16117 (__arm_vsubq_m_f32): Remove.
16118 (__arm_vsubq_m_f16): Remove.
16119 (__arm_vsubq_m_n_f32): Remove.
16120 (__arm_vsubq_m_n_f16): Remove.
16121 (__arm_vsubq_x_f16): Remove.
16122 (__arm_vsubq_x_f32): Remove.
16123 (__arm_vsubq_x_n_f16): Remove.
16124 (__arm_vsubq_x_n_f32): Remove.
16125 (__arm_vsubq): Remove.
16126 (__arm_vsubq_m): Remove.
16127 (__arm_vsubq_x): Remove.
16128 * config/arm/arm_mve_builtins.def (vsubq_u, vsubq_s, vsubq_f):
16130 (vmulq_u, vmulq_s, vmulq_f): Remove.
16131 * config/arm/mve.md (mve_vsubq_<supf><mode>): Remove.
16132 (mve_vmulq_<supf><mode>): Remove.
16134 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
16136 * config/arm/iterators.md (MVE_INT_BINARY_RTX, MVE_INT_M_BINARY)
16137 (MVE_INT_M_N_BINARY, MVE_INT_N_BINARY, MVE_FP_M_BINARY)
16138 (MVE_FP_M_N_BINARY, MVE_FP_N_BINARY, mve_addsubmul, mve_insn): New
16140 * config/arm/mve.md
16141 (mve_vsubq_n_f<mode>, mve_vaddq_n_f<mode>, mve_vmulq_n_f<mode>):
16143 (@mve_<mve_insn>q_n_f<mode>): ... this.
16144 (mve_vaddq_n_<supf><mode>, mve_vmulq_n_<supf><mode>)
16145 (mve_vsubq_n_<supf><mode>): Factorize into ...
16146 (@mve_<mve_insn>q_n_<supf><mode>): ... this.
16147 (mve_vaddq<mode>, mve_vmulq<mode>, mve_vsubq<mode>): Factorize
16149 (mve_<mve_addsubmul>q<mode>): ... this.
16150 (mve_vaddq_f<mode>, mve_vmulq_f<mode>, mve_vsubq_f<mode>):
16152 (mve_<mve_addsubmul>q_f<mode>): ... this.
16153 (mve_vaddq_m_<supf><mode>, mve_vmulq_m_<supf><mode>)
16154 (mve_vsubq_m_<supf><mode>): Factorize into ...
16155 (@mve_<mve_insn>q_m_<supf><mode>): ... this,
16156 (mve_vaddq_m_n_<supf><mode>, mve_vmulq_m_n_<supf><mode>)
16157 (mve_vsubq_m_n_<supf><mode>): Factorize into ...
16158 (@mve_<mve_insn>q_m_n_<supf><mode>): ... this.
16159 (mve_vaddq_m_f<mode>, mve_vmulq_m_f<mode>, mve_vsubq_m_f<mode>):
16161 (@mve_<mve_insn>q_m_f<mode>): ... this.
16162 (mve_vaddq_m_n_f<mode>, mve_vmulq_m_n_f<mode>)
16163 (mve_vsubq_m_n_f<mode>): Factorize into ...
16164 (@mve_<mve_insn>q_m_n_f<mode>): ... this.
16166 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
16168 * config/arm/arm-mve-builtins-functions.h (class
16169 unspec_based_mve_function_base): New.
16170 (class unspec_based_mve_function_exact_insn): New.
16172 2023-05-03 Christophe Lyon <christophe.lyon@arm.com>
16174 * config/arm/arm-mve-builtins-shapes.cc (binary_opt_n): New.
16175 * config/arm/arm-mve-builtins-shapes.h (binary_opt_n): New.
16177 2023-05-03 Murray Steele <murray.steele@arm.com>
16178 Christophe Lyon <christophe.lyon@arm.com>
16180 * config/arm/arm-mve-builtins-base.cc (class
16181 vuninitializedq_impl): New.
16182 * config/arm/arm-mve-builtins-base.def (vuninitializedq): New.
16183 * config/arm/arm-mve-builtins-base.h (vuninitializedq): New
16185 * config/arm/arm-mve-builtins-shapes.cc (inherent): New.
16186 * config/arm/arm-mve-builtins-shapes.h (inherent): New
16188 * config/arm/arm_mve_types.h (__arm_vuninitializedq): Move to ...
16189 * config/arm/arm_mve.h (__arm_vuninitializedq): ... here.
16190 (__arm_vuninitializedq_u8): Remove.
16191 (__arm_vuninitializedq_u16): Remove.
16192 (__arm_vuninitializedq_u32): Remove.
16193 (__arm_vuninitializedq_u64): Remove.
16194 (__arm_vuninitializedq_s8): Remove.
16195 (__arm_vuninitializedq_s16): Remove.
16196 (__arm_vuninitializedq_s32): Remove.
16197 (__arm_vuninitializedq_s64): Remove.
16198 (__arm_vuninitializedq_f16): Remove.
16199 (__arm_vuninitializedq_f32): Remove.
16201 2023-05-03 Murray Steele <murray.steele@arm.com>
16202 Christophe Lyon <christophe.lyon@arm.com>
16204 * config/arm/arm-mve-builtins-base.cc (vreinterpretq_impl): New class.
16205 * config/arm/arm-mve-builtins-base.def: Define vreinterpretq.
16206 * config/arm/arm-mve-builtins-base.h (vreinterpretq): New declaration.
16207 * config/arm/arm-mve-builtins-shapes.cc (parse_element_type): New function.
16208 (parse_type): Likewise.
16209 (parse_signature): Likewise.
16210 (build_one): Likewise.
16211 (build_all): Likewise.
16212 (overloaded_base): New struct.
16213 (unary_convert_def): Likewise.
16214 * config/arm/arm-mve-builtins-shapes.h (unary_convert): Declare.
16215 * config/arm/arm-mve-builtins.cc (TYPES_reinterpret_signed1): New
16217 (TYPES_reinterpret_unsigned1): Likewise.
16218 (TYPES_reinterpret_integer): Likewise.
16219 (TYPES_reinterpret_integer1): Likewise.
16220 (TYPES_reinterpret_float1): Likewise.
16221 (TYPES_reinterpret_float): Likewise.
16222 (reinterpret_integer): New.
16223 (reinterpret_float): New.
16224 (handle_arm_mve_h): Register builtins.
16225 * config/arm/arm_mve.h (vreinterpretq_s16): Remove.
16226 (vreinterpretq_s32): Likewise.
16227 (vreinterpretq_s64): Likewise.
16228 (vreinterpretq_s8): Likewise.
16229 (vreinterpretq_u16): Likewise.
16230 (vreinterpretq_u32): Likewise.
16231 (vreinterpretq_u64): Likewise.
16232 (vreinterpretq_u8): Likewise.
16233 (vreinterpretq_f16): Likewise.
16234 (vreinterpretq_f32): Likewise.
16235 (vreinterpretq_s16_s32): Likewise.
16236 (vreinterpretq_s16_s64): Likewise.
16237 (vreinterpretq_s16_s8): Likewise.
16238 (vreinterpretq_s16_u16): Likewise.
16239 (vreinterpretq_s16_u32): Likewise.
16240 (vreinterpretq_s16_u64): Likewise.
16241 (vreinterpretq_s16_u8): Likewise.
16242 (vreinterpretq_s32_s16): Likewise.
16243 (vreinterpretq_s32_s64): Likewise.
16244 (vreinterpretq_s32_s8): Likewise.
16245 (vreinterpretq_s32_u16): Likewise.
16246 (vreinterpretq_s32_u32): Likewise.
16247 (vreinterpretq_s32_u64): Likewise.
16248 (vreinterpretq_s32_u8): Likewise.
16249 (vreinterpretq_s64_s16): Likewise.
16250 (vreinterpretq_s64_s32): Likewise.
16251 (vreinterpretq_s64_s8): Likewise.
16252 (vreinterpretq_s64_u16): Likewise.
16253 (vreinterpretq_s64_u32): Likewise.
16254 (vreinterpretq_s64_u64): Likewise.
16255 (vreinterpretq_s64_u8): Likewise.
16256 (vreinterpretq_s8_s16): Likewise.
16257 (vreinterpretq_s8_s32): Likewise.
16258 (vreinterpretq_s8_s64): Likewise.
16259 (vreinterpretq_s8_u16): Likewise.
16260 (vreinterpretq_s8_u32): Likewise.
16261 (vreinterpretq_s8_u64): Likewise.
16262 (vreinterpretq_s8_u8): Likewise.
16263 (vreinterpretq_u16_s16): Likewise.
16264 (vreinterpretq_u16_s32): Likewise.
16265 (vreinterpretq_u16_s64): Likewise.
16266 (vreinterpretq_u16_s8): Likewise.
16267 (vreinterpretq_u16_u32): Likewise.
16268 (vreinterpretq_u16_u64): Likewise.
16269 (vreinterpretq_u16_u8): Likewise.
16270 (vreinterpretq_u32_s16): Likewise.
16271 (vreinterpretq_u32_s32): Likewise.
16272 (vreinterpretq_u32_s64): Likewise.
16273 (vreinterpretq_u32_s8): Likewise.
16274 (vreinterpretq_u32_u16): Likewise.
16275 (vreinterpretq_u32_u64): Likewise.
16276 (vreinterpretq_u32_u8): Likewise.
16277 (vreinterpretq_u64_s16): Likewise.
16278 (vreinterpretq_u64_s32): Likewise.
16279 (vreinterpretq_u64_s64): Likewise.
16280 (vreinterpretq_u64_s8): Likewise.
16281 (vreinterpretq_u64_u16): Likewise.
16282 (vreinterpretq_u64_u32): Likewise.
16283 (vreinterpretq_u64_u8): Likewise.
16284 (vreinterpretq_u8_s16): Likewise.
16285 (vreinterpretq_u8_s32): Likewise.
16286 (vreinterpretq_u8_s64): Likewise.
16287 (vreinterpretq_u8_s8): Likewise.
16288 (vreinterpretq_u8_u16): Likewise.
16289 (vreinterpretq_u8_u32): Likewise.
16290 (vreinterpretq_u8_u64): Likewise.
16291 (vreinterpretq_s32_f16): Likewise.
16292 (vreinterpretq_s32_f32): Likewise.
16293 (vreinterpretq_u16_f16): Likewise.
16294 (vreinterpretq_u16_f32): Likewise.
16295 (vreinterpretq_u32_f16): Likewise.
16296 (vreinterpretq_u32_f32): Likewise.
16297 (vreinterpretq_u64_f16): Likewise.
16298 (vreinterpretq_u64_f32): Likewise.
16299 (vreinterpretq_u8_f16): Likewise.
16300 (vreinterpretq_u8_f32): Likewise.
16301 (vreinterpretq_f16_f32): Likewise.
16302 (vreinterpretq_f16_s16): Likewise.
16303 (vreinterpretq_f16_s32): Likewise.
16304 (vreinterpretq_f16_s64): Likewise.
16305 (vreinterpretq_f16_s8): Likewise.
16306 (vreinterpretq_f16_u16): Likewise.
16307 (vreinterpretq_f16_u32): Likewise.
16308 (vreinterpretq_f16_u64): Likewise.
16309 (vreinterpretq_f16_u8): Likewise.
16310 (vreinterpretq_f32_f16): Likewise.
16311 (vreinterpretq_f32_s16): Likewise.
16312 (vreinterpretq_f32_s32): Likewise.
16313 (vreinterpretq_f32_s64): Likewise.
16314 (vreinterpretq_f32_s8): Likewise.
16315 (vreinterpretq_f32_u16): Likewise.
16316 (vreinterpretq_f32_u32): Likewise.
16317 (vreinterpretq_f32_u64): Likewise.
16318 (vreinterpretq_f32_u8): Likewise.
16319 (vreinterpretq_s16_f16): Likewise.
16320 (vreinterpretq_s16_f32): Likewise.
16321 (vreinterpretq_s64_f16): Likewise.
16322 (vreinterpretq_s64_f32): Likewise.
16323 (vreinterpretq_s8_f16): Likewise.
16324 (vreinterpretq_s8_f32): Likewise.
16325 (__arm_vreinterpretq_f16): Likewise.
16326 (__arm_vreinterpretq_f32): Likewise.
16327 (__arm_vreinterpretq_s16): Likewise.
16328 (__arm_vreinterpretq_s32): Likewise.
16329 (__arm_vreinterpretq_s64): Likewise.
16330 (__arm_vreinterpretq_s8): Likewise.
16331 (__arm_vreinterpretq_u16): Likewise.
16332 (__arm_vreinterpretq_u32): Likewise.
16333 (__arm_vreinterpretq_u64): Likewise.
16334 (__arm_vreinterpretq_u8): Likewise.
16335 * config/arm/arm_mve_types.h (__arm_vreinterpretq_s16_s32): Remove.
16336 (__arm_vreinterpretq_s16_s64): Likewise.
16337 (__arm_vreinterpretq_s16_s8): Likewise.
16338 (__arm_vreinterpretq_s16_u16): Likewise.
16339 (__arm_vreinterpretq_s16_u32): Likewise.
16340 (__arm_vreinterpretq_s16_u64): Likewise.
16341 (__arm_vreinterpretq_s16_u8): Likewise.
16342 (__arm_vreinterpretq_s32_s16): Likewise.
16343 (__arm_vreinterpretq_s32_s64): Likewise.
16344 (__arm_vreinterpretq_s32_s8): Likewise.
16345 (__arm_vreinterpretq_s32_u16): Likewise.
16346 (__arm_vreinterpretq_s32_u32): Likewise.
16347 (__arm_vreinterpretq_s32_u64): Likewise.
16348 (__arm_vreinterpretq_s32_u8): Likewise.
16349 (__arm_vreinterpretq_s64_s16): Likewise.
16350 (__arm_vreinterpretq_s64_s32): Likewise.
16351 (__arm_vreinterpretq_s64_s8): Likewise.
16352 (__arm_vreinterpretq_s64_u16): Likewise.
16353 (__arm_vreinterpretq_s64_u32): Likewise.
16354 (__arm_vreinterpretq_s64_u64): Likewise.
16355 (__arm_vreinterpretq_s64_u8): Likewise.
16356 (__arm_vreinterpretq_s8_s16): Likewise.
16357 (__arm_vreinterpretq_s8_s32): Likewise.
16358 (__arm_vreinterpretq_s8_s64): Likewise.
16359 (__arm_vreinterpretq_s8_u16): Likewise.
16360 (__arm_vreinterpretq_s8_u32): Likewise.
16361 (__arm_vreinterpretq_s8_u64): Likewise.
16362 (__arm_vreinterpretq_s8_u8): Likewise.
16363 (__arm_vreinterpretq_u16_s16): Likewise.
16364 (__arm_vreinterpretq_u16_s32): Likewise.
16365 (__arm_vreinterpretq_u16_s64): Likewise.
16366 (__arm_vreinterpretq_u16_s8): Likewise.
16367 (__arm_vreinterpretq_u16_u32): Likewise.
16368 (__arm_vreinterpretq_u16_u64): Likewise.
16369 (__arm_vreinterpretq_u16_u8): Likewise.
16370 (__arm_vreinterpretq_u32_s16): Likewise.
16371 (__arm_vreinterpretq_u32_s32): Likewise.
16372 (__arm_vreinterpretq_u32_s64): Likewise.
16373 (__arm_vreinterpretq_u32_s8): Likewise.
16374 (__arm_vreinterpretq_u32_u16): Likewise.
16375 (__arm_vreinterpretq_u32_u64): Likewise.
16376 (__arm_vreinterpretq_u32_u8): Likewise.
16377 (__arm_vreinterpretq_u64_s16): Likewise.
16378 (__arm_vreinterpretq_u64_s32): Likewise.
16379 (__arm_vreinterpretq_u64_s64): Likewise.
16380 (__arm_vreinterpretq_u64_s8): Likewise.
16381 (__arm_vreinterpretq_u64_u16): Likewise.
16382 (__arm_vreinterpretq_u64_u32): Likewise.
16383 (__arm_vreinterpretq_u64_u8): Likewise.
16384 (__arm_vreinterpretq_u8_s16): Likewise.
16385 (__arm_vreinterpretq_u8_s32): Likewise.
16386 (__arm_vreinterpretq_u8_s64): Likewise.
16387 (__arm_vreinterpretq_u8_s8): Likewise.
16388 (__arm_vreinterpretq_u8_u16): Likewise.
16389 (__arm_vreinterpretq_u8_u32): Likewise.
16390 (__arm_vreinterpretq_u8_u64): Likewise.
16391 (__arm_vreinterpretq_s32_f16): Likewise.
16392 (__arm_vreinterpretq_s32_f32): Likewise.
16393 (__arm_vreinterpretq_s16_f16): Likewise.
16394 (__arm_vreinterpretq_s16_f32): Likewise.
16395 (__arm_vreinterpretq_s64_f16): Likewise.
16396 (__arm_vreinterpretq_s64_f32): Likewise.
16397 (__arm_vreinterpretq_s8_f16): Likewise.
16398 (__arm_vreinterpretq_s8_f32): Likewise.
16399 (__arm_vreinterpretq_u16_f16): Likewise.
16400 (__arm_vreinterpretq_u16_f32): Likewise.
16401 (__arm_vreinterpretq_u32_f16): Likewise.
16402 (__arm_vreinterpretq_u32_f32): Likewise.
16403 (__arm_vreinterpretq_u64_f16): Likewise.
16404 (__arm_vreinterpretq_u64_f32): Likewise.
16405 (__arm_vreinterpretq_u8_f16): Likewise.
16406 (__arm_vreinterpretq_u8_f32): Likewise.
16407 (__arm_vreinterpretq_f16_f32): Likewise.
16408 (__arm_vreinterpretq_f16_s16): Likewise.
16409 (__arm_vreinterpretq_f16_s32): Likewise.
16410 (__arm_vreinterpretq_f16_s64): Likewise.
16411 (__arm_vreinterpretq_f16_s8): Likewise.
16412 (__arm_vreinterpretq_f16_u16): Likewise.
16413 (__arm_vreinterpretq_f16_u32): Likewise.
16414 (__arm_vreinterpretq_f16_u64): Likewise.
16415 (__arm_vreinterpretq_f16_u8): Likewise.
16416 (__arm_vreinterpretq_f32_f16): Likewise.
16417 (__arm_vreinterpretq_f32_s16): Likewise.
16418 (__arm_vreinterpretq_f32_s32): Likewise.
16419 (__arm_vreinterpretq_f32_s64): Likewise.
16420 (__arm_vreinterpretq_f32_s8): Likewise.
16421 (__arm_vreinterpretq_f32_u16): Likewise.
16422 (__arm_vreinterpretq_f32_u32): Likewise.
16423 (__arm_vreinterpretq_f32_u64): Likewise.
16424 (__arm_vreinterpretq_f32_u8): Likewise.
16425 (__arm_vreinterpretq_s16): Likewise.
16426 (__arm_vreinterpretq_s32): Likewise.
16427 (__arm_vreinterpretq_s64): Likewise.
16428 (__arm_vreinterpretq_s8): Likewise.
16429 (__arm_vreinterpretq_u16): Likewise.
16430 (__arm_vreinterpretq_u32): Likewise.
16431 (__arm_vreinterpretq_u64): Likewise.
16432 (__arm_vreinterpretq_u8): Likewise.
16433 (__arm_vreinterpretq_f16): Likewise.
16434 (__arm_vreinterpretq_f32): Likewise.
16435 * config/arm/mve.md (@arm_mve_reinterpret<mode>): New pattern.
16436 * config/arm/unspecs.md: (REINTERPRET): New unspec.
16438 2023-05-03 Murray Steele <murray.steele@arm.com>
16439 Christophe Lyon <christophe.lyon@arm.com>
16440 Christophe Lyon <christophe.lyon@arm.com
16442 * config.gcc: Add arm-mve-builtins-base.o and
16443 arm-mve-builtins-shapes.o to extra_objs.
16444 * config/arm/arm-builtins.cc (arm_builtin_decl): Handle MVE builtin
16446 (arm_expand_builtin): Likewise
16447 (arm_check_builtin_call): Likewise
16448 (arm_describe_resolver): Likewise.
16449 * config/arm/arm-builtins.h (enum resolver_ident): Add
16451 * config/arm/arm-c.cc (arm_pragma_arm): Handle new pragma.
16452 (arm_resolve_overloaded_builtin): Handle MVE builtins.
16453 (arm_register_target_pragmas): Register arm_check_builtin_call.
16454 * config/arm/arm-mve-builtins.cc (class registered_function): New
16456 (struct registered_function_hasher): New struct.
16457 (pred_suffixes): New table.
16458 (mode_suffixes): New table.
16459 (type_suffix_info): New table.
16460 (TYPES_float16): New.
16461 (TYPES_all_float): New.
16462 (TYPES_integer_8): New.
16463 (TYPES_integer_8_16): New.
16464 (TYPES_integer_16_32): New.
16465 (TYPES_integer_32): New.
16466 (TYPES_signed_16_32): New.
16467 (TYPES_signed_32): New.
16468 (TYPES_all_signed): New.
16469 (TYPES_all_unsigned): New.
16470 (TYPES_all_integer): New.
16471 (TYPES_all_integer_with_64): New.
16472 (DEF_VECTOR_TYPE): New.
16473 (DEF_DOUBLE_TYPE): New.
16474 (DEF_MVE_TYPES_ARRAY): New.
16475 (all_integer): New.
16476 (all_integer_with_64): New.
16480 (all_unsigned): New.
16482 (integer_8_16): New.
16483 (integer_16_32): New.
16485 (signed_16_32): New.
16487 (register_vector_type): Use void_type_node for mve.fp-only types when
16488 mve.fp is not enabled.
16489 (register_builtin_tuple_types): Likewise.
16490 (handle_arm_mve_h): New function..
16491 (matches_type_p): Likewise..
16492 (report_out_of_range): Likewise.
16493 (report_not_enum): Likewise.
16494 (report_missing_float): Likewise.
16495 (report_non_ice): Likewise.
16496 (check_requires_float): Likewise.
16497 (function_instance::hash): Likewise
16498 (function_instance::call_properties): Likewise.
16499 (function_instance::reads_global_state_p): Likewise.
16500 (function_instance::modifies_global_state_p): Likewise.
16501 (function_instance::could_trap_p): Likewise.
16502 (function_instance::has_inactive_argument): Likewise.
16503 (registered_function_hasher::hash): Likewise.
16504 (registered_function_hasher::equal): Likewise.
16505 (function_builder::function_builder): Likewise.
16506 (function_builder::~function_builder): Likewise.
16507 (function_builder::append_name): Likewise.
16508 (function_builder::finish_name): Likewise.
16509 (function_builder::get_name): Likewise.
16510 (add_attribute): Likewise.
16511 (function_builder::get_attributes): Likewise.
16512 (function_builder::add_function): Likewise.
16513 (function_builder::add_unique_function): Likewise.
16514 (function_builder::add_overloaded_function): Likewise.
16515 (function_builder::add_overloaded_functions): Likewise.
16516 (function_builder::register_function_group): Likewise.
16517 (function_call_info::function_call_info): Likewise.
16518 (function_resolver::function_resolver): Likewise.
16519 (function_resolver::get_vector_type): Likewise.
16520 (function_resolver::get_scalar_type_name): Likewise.
16521 (function_resolver::get_argument_type): Likewise.
16522 (function_resolver::scalar_argument_p): Likewise.
16523 (function_resolver::report_no_such_form): Likewise.
16524 (function_resolver::lookup_form): Likewise.
16525 (function_resolver::resolve_to): Likewise.
16526 (function_resolver::infer_vector_or_tuple_type): Likewise.
16527 (function_resolver::infer_vector_type): Likewise.
16528 (function_resolver::require_vector_or_scalar_type): Likewise.
16529 (function_resolver::require_vector_type): Likewise.
16530 (function_resolver::require_matching_vector_type): Likewise.
16531 (function_resolver::require_derived_vector_type): Likewise.
16532 (function_resolver::require_derived_scalar_type): Likewise.
16533 (function_resolver::require_integer_immediate): Likewise.
16534 (function_resolver::require_scalar_type): Likewise.
16535 (function_resolver::check_num_arguments): Likewise.
16536 (function_resolver::check_gp_argument): Likewise.
16537 (function_resolver::finish_opt_n_resolution): Likewise.
16538 (function_resolver::resolve_unary): Likewise.
16539 (function_resolver::resolve_unary_n): Likewise.
16540 (function_resolver::resolve_uniform): Likewise.
16541 (function_resolver::resolve_uniform_opt_n): Likewise.
16542 (function_resolver::resolve): Likewise.
16543 (function_checker::function_checker): Likewise.
16544 (function_checker::argument_exists_p): Likewise.
16545 (function_checker::require_immediate): Likewise.
16546 (function_checker::require_immediate_enum): Likewise.
16547 (function_checker::require_immediate_range): Likewise.
16548 (function_checker::check): Likewise.
16549 (gimple_folder::gimple_folder): Likewise.
16550 (gimple_folder::fold): Likewise.
16551 (function_expander::function_expander): Likewise.
16552 (function_expander::direct_optab_handler): Likewise.
16553 (function_expander::get_fallback_value): Likewise.
16554 (function_expander::get_reg_target): Likewise.
16555 (function_expander::add_output_operand): Likewise.
16556 (function_expander::add_input_operand): Likewise.
16557 (function_expander::add_integer_operand): Likewise.
16558 (function_expander::generate_insn): Likewise.
16559 (function_expander::use_exact_insn): Likewise.
16560 (function_expander::use_unpred_insn): Likewise.
16561 (function_expander::use_pred_x_insn): Likewise.
16562 (function_expander::use_cond_insn): Likewise.
16563 (function_expander::map_to_rtx_codes): Likewise.
16564 (function_expander::expand): Likewise.
16565 (resolve_overloaded_builtin): Likewise.
16566 (check_builtin_call): Likewise.
16567 (gimple_fold_builtin): Likewise.
16568 (expand_builtin): Likewise.
16569 (gt_ggc_mx): Likewise.
16570 (gt_pch_nx): Likewise.
16571 (gt_pch_nx): Likewise.
16572 * config/arm/arm-mve-builtins.def(s8): Define new type suffix.
16583 (offset): New mode.
16584 * config/arm/arm-mve-builtins.h (MAX_TUPLE_SIZE): New constant.
16585 (CP_READ_FPCR): Likewise.
16586 (CP_RAISE_FP_EXCEPTIONS): Likewise.
16587 (CP_READ_MEMORY): Likewise.
16588 (CP_WRITE_MEMORY): Likewise.
16589 (enum units_index): New enum.
16590 (enum predication_index): New.
16591 (enum type_class_index): New.
16592 (enum mode_suffix_index): New enum.
16593 (enum type_suffix_index): New.
16594 (struct mode_suffix_info): New struct.
16595 (struct type_suffix_info): New.
16596 (struct function_group_info): Likewise.
16597 (class function_instance): Likewise.
16598 (class registered_function): Likewise.
16599 (class function_builder): Likewise.
16600 (class function_call_info): Likewise.
16601 (class function_resolver): Likewise.
16602 (class function_checker): Likewise.
16603 (class gimple_folder): Likewise.
16604 (class function_expander): Likewise.
16605 (get_mve_pred16_t): Likewise.
16606 (find_mode_suffix): New function.
16607 (class function_base): Likewise.
16608 (class function_shape): Likewise.
16609 (function_instance::operator==): New function.
16610 (function_instance::operator!=): Likewise.
16611 (function_instance::vectors_per_tuple): Likewise.
16612 (function_instance::mode_suffix): Likewise.
16613 (function_instance::type_suffix): Likewise.
16614 (function_instance::scalar_type): Likewise.
16615 (function_instance::vector_type): Likewise.
16616 (function_instance::tuple_type): Likewise.
16617 (function_instance::vector_mode): Likewise.
16618 (function_call_info::function_returns_void_p): Likewise.
16619 (function_base::call_properties): Likewise.
16620 * config/arm/arm-protos.h (enum arm_builtin_class): Add
16622 (handle_arm_mve_h): New.
16623 (resolve_overloaded_builtin): New.
16624 (check_builtin_call): New.
16625 (gimple_fold_builtin): New.
16626 (expand_builtin): New.
16627 * config/arm/arm.cc (TARGET_GIMPLE_FOLD_BUILTIN): Define as
16628 arm_gimple_fold_builtin.
16629 (arm_gimple_fold_builtin): New function.
16630 * config/arm/arm_mve.h: Use new arm_mve.h pragma.
16631 * config/arm/predicates.md (arm_any_register_operand): New predicate.
16632 * config/arm/t-arm: (arm-mve-builtins.o): Add includes.
16633 (arm-mve-builtins-shapes.o): New target.
16634 (arm-mve-builtins-base.o): New target.
16635 * config/arm/arm-mve-builtins-base.cc: New file.
16636 * config/arm/arm-mve-builtins-base.def: New file.
16637 * config/arm/arm-mve-builtins-base.h: New file.
16638 * config/arm/arm-mve-builtins-functions.h: New file.
16639 * config/arm/arm-mve-builtins-shapes.cc: New file.
16640 * config/arm/arm-mve-builtins-shapes.h: New file.
16642 2023-05-03 Murray Steele <murray.steele@arm.com>
16643 Christophe Lyon <christophe.lyon@arm.com>
16644 Christophe Lyon <christophe.lyon@arm.com>
16646 * config/arm/arm-builtins.cc (arm_general_add_builtin_function):
16648 (arm_init_builtin): Use arm_general_add_builtin_function instead
16649 of arm_add_builtin_function.
16650 (arm_init_acle_builtins): Likewise.
16651 (arm_init_mve_builtins): Likewise.
16652 (arm_init_crypto_builtins): Likewise.
16653 (arm_init_builtins): Likewise.
16654 (arm_general_builtin_decl): New function.
16655 (arm_builtin_decl): Defer to numberspace-specialized functions.
16656 (arm_expand_builtin_args): Rename into arm_general_expand_builtin_args.
16657 (arm_expand_builtin_1): Rename into arm_general_expand_builtin_1 and ...
16658 (arm_general_expand_builtin_1): ... specialize for general builtins.
16659 (arm_expand_acle_builtin): Use arm_general_expand_builtin
16660 instead of arm_expand_builtin.
16661 (arm_expand_mve_builtin): Likewise.
16662 (arm_expand_neon_builtin): Likewise.
16663 (arm_expand_vfp_builtin): Likewise.
16664 (arm_general_expand_builtin): New function.
16665 (arm_expand_builtin): Specialize for general builtins.
16666 (arm_general_check_builtin_call): New function.
16667 (arm_check_builtin_call): Specialize for general builtins.
16668 (arm_describe_resolver): Validate numberspace.
16669 (arm_cde_end_args): Likewise.
16670 * config/arm/arm-protos.h (enum arm_builtin_class): New enum.
16671 (ARM_BUILTIN_SHIFT, ARM_BUILTIN_CLASS): New constants.
16673 2023-05-03 Martin Liska <mliska@suse.cz>
16676 * config/riscv/sync.md: Add gcc_unreachable to a switch.
16678 2023-05-03 Richard Biener <rguenther@suse.de>
16680 * tree-ssa-loop-split.cc (split_at_bb_p): Avoid last_stmt.
16681 (patch_loop_exit): Likewise.
16682 (connect_loops): Likewise.
16683 (split_loop): Likewise.
16684 (control_dep_semi_invariant_p): Likewise.
16685 (do_split_loop_on_cond): Likewise.
16686 (split_loop_on_cond): Likewise.
16687 * tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
16689 (simplify_loop_version): Likewise.
16690 (evaluate_bbs): Likewise.
16691 (find_loop_guard): Likewise.
16692 (clean_up_after_unswitching): Likewise.
16693 * tree-ssa-math-opts.cc (maybe_optimize_guarding_check):
16695 (optimize_spaceship): Take a gcond * argument, avoid
16697 (math_opts_dom_walker::after_dom_children): Adjust call to
16698 optimize_spaceship.
16699 * tree-vrp.cc (maybe_set_nonzero_bits): Avoid last_stmt.
16700 * value-pointer-equiv.cc (pointer_equiv_analyzer::visit_edge):
16703 2023-05-03 Andreas Schwab <schwab@suse.de>
16705 * config/riscv/linux.h (LIB_SPEC): Don't redefine.
16707 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16709 * config/riscv/riscv-vector-builtins-bases.cc (fold_fault_load):
16711 (class vlseg): New class.
16712 (class vsseg): Ditto.
16713 (class vlsseg): Ditto.
16714 (class vssseg): Ditto.
16715 (class seg_indexed_load): Ditto.
16716 (class seg_indexed_store): Ditto.
16717 (class vlsegff): Ditto.
16719 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
16720 * config/riscv/riscv-vector-builtins-functions.def (vlseg):
16730 * config/riscv/riscv-vector-builtins-shapes.cc (struct
16731 seg_loadstore_def): Ditto.
16732 (struct seg_indexed_loadstore_def): Ditto.
16733 (struct seg_fault_load_def): Ditto.
16735 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
16736 * config/riscv/riscv-vector-builtins.cc
16737 (function_builder::append_nf): New function.
16738 * config/riscv/riscv-vector-builtins.def (vfloat32m1x2_t):
16739 Change ptr from double into float.
16740 (vfloat32m1x3_t): Ditto.
16741 (vfloat32m1x4_t): Ditto.
16742 (vfloat32m1x5_t): Ditto.
16743 (vfloat32m1x6_t): Ditto.
16744 (vfloat32m1x7_t): Ditto.
16745 (vfloat32m1x8_t): Ditto.
16746 (vfloat32m2x2_t): Ditto.
16747 (vfloat32m2x3_t): Ditto.
16748 (vfloat32m2x4_t): Ditto.
16749 (vfloat32m4x2_t): Ditto.
16750 * config/riscv/riscv-vector-builtins.h: Add segment intrinsics.
16751 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Adapt for
16753 * config/riscv/riscv.md: Add segment instructions.
16754 * config/riscv/vector-iterators.md: Support segment intrinsics.
16755 * config/riscv/vector.md (@pred_unit_strided_load<mode>): New
16757 (@pred_unit_strided_store<mode>): Ditto.
16758 (@pred_strided_load<mode>): Ditto.
16759 (@pred_strided_store<mode>): Ditto.
16760 (@pred_fault_load<mode>): Ditto.
16761 (@pred_indexed_<order>load<V1T:mode><V1I:mode>): Ditto.
16762 (@pred_indexed_<order>load<V2T:mode><V2I:mode>): Ditto.
16763 (@pred_indexed_<order>load<V4T:mode><V4I:mode>): Ditto.
16764 (@pred_indexed_<order>load<V8T:mode><V8I:mode>): Ditto.
16765 (@pred_indexed_<order>load<V16T:mode><V16I:mode>): Ditto.
16766 (@pred_indexed_<order>load<V32T:mode><V32I:mode>): Ditto.
16767 (@pred_indexed_<order>load<V64T:mode><V64I:mode>): Ditto.
16768 (@pred_indexed_<order>store<V1T:mode><V1I:mode>): Ditto.
16769 (@pred_indexed_<order>store<V2T:mode><V2I:mode>): Ditto.
16770 (@pred_indexed_<order>store<V4T:mode><V4I:mode>): Ditto.
16771 (@pred_indexed_<order>store<V8T:mode><V8I:mode>): Ditto.
16772 (@pred_indexed_<order>store<V16T:mode><V16I:mode>): Ditto.
16773 (@pred_indexed_<order>store<V32T:mode><V32I:mode>): Ditto.
16774 (@pred_indexed_<order>store<V64T:mode><V64I:mode>): Ditto.
16776 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
16778 * config/riscv/genrvv-type-indexer.cc (valid_type): Adapt for
16779 tuple type support.
16781 (floattype): Ditto.
16783 * config/riscv/riscv-vector-builtins-bases.cc: Ditto.
16784 * config/riscv/riscv-vector-builtins-functions.def (vset): Add
16786 (vget): Add tuple type vget.
16787 * config/riscv/riscv-vector-builtins-types.def
16788 (DEF_RVV_TUPLE_OPS): New macro.
16789 (vint8mf8x2_t): Ditto.
16790 (vuint8mf8x2_t): Ditto.
16791 (vint8mf8x3_t): Ditto.
16792 (vuint8mf8x3_t): Ditto.
16793 (vint8mf8x4_t): Ditto.
16794 (vuint8mf8x4_t): Ditto.
16795 (vint8mf8x5_t): Ditto.
16796 (vuint8mf8x5_t): Ditto.
16797 (vint8mf8x6_t): Ditto.
16798 (vuint8mf8x6_t): Ditto.
16799 (vint8mf8x7_t): Ditto.
16800 (vuint8mf8x7_t): Ditto.
16801 (vint8mf8x8_t): Ditto.
16802 (vuint8mf8x8_t): Ditto.
16803 (vint8mf4x2_t): Ditto.
16804 (vuint8mf4x2_t): Ditto.
16805 (vint8mf4x3_t): Ditto.
16806 (vuint8mf4x3_t): Ditto.
16807 (vint8mf4x4_t): Ditto.
16808 (vuint8mf4x4_t): Ditto.
16809 (vint8mf4x5_t): Ditto.
16810 (vuint8mf4x5_t): Ditto.
16811 (vint8mf4x6_t): Ditto.
16812 (vuint8mf4x6_t): Ditto.
16813 (vint8mf4x7_t): Ditto.
16814 (vuint8mf4x7_t): Ditto.
16815 (vint8mf4x8_t): Ditto.
16816 (vuint8mf4x8_t): Ditto.
16817 (vint8mf2x2_t): Ditto.
16818 (vuint8mf2x2_t): Ditto.
16819 (vint8mf2x3_t): Ditto.
16820 (vuint8mf2x3_t): Ditto.
16821 (vint8mf2x4_t): Ditto.
16822 (vuint8mf2x4_t): Ditto.
16823 (vint8mf2x5_t): Ditto.
16824 (vuint8mf2x5_t): Ditto.
16825 (vint8mf2x6_t): Ditto.
16826 (vuint8mf2x6_t): Ditto.
16827 (vint8mf2x7_t): Ditto.
16828 (vuint8mf2x7_t): Ditto.
16829 (vint8mf2x8_t): Ditto.
16830 (vuint8mf2x8_t): Ditto.
16831 (vint8m1x2_t): Ditto.
16832 (vuint8m1x2_t): Ditto.
16833 (vint8m1x3_t): Ditto.
16834 (vuint8m1x3_t): Ditto.
16835 (vint8m1x4_t): Ditto.
16836 (vuint8m1x4_t): Ditto.
16837 (vint8m1x5_t): Ditto.
16838 (vuint8m1x5_t): Ditto.
16839 (vint8m1x6_t): Ditto.
16840 (vuint8m1x6_t): Ditto.
16841 (vint8m1x7_t): Ditto.
16842 (vuint8m1x7_t): Ditto.
16843 (vint8m1x8_t): Ditto.
16844 (vuint8m1x8_t): Ditto.
16845 (vint8m2x2_t): Ditto.
16846 (vuint8m2x2_t): Ditto.
16847 (vint8m2x3_t): Ditto.
16848 (vuint8m2x3_t): Ditto.
16849 (vint8m2x4_t): Ditto.
16850 (vuint8m2x4_t): Ditto.
16851 (vint8m4x2_t): Ditto.
16852 (vuint8m4x2_t): Ditto.
16853 (vint16mf4x2_t): Ditto.
16854 (vuint16mf4x2_t): Ditto.
16855 (vint16mf4x3_t): Ditto.
16856 (vuint16mf4x3_t): Ditto.
16857 (vint16mf4x4_t): Ditto.
16858 (vuint16mf4x4_t): Ditto.
16859 (vint16mf4x5_t): Ditto.
16860 (vuint16mf4x5_t): Ditto.
16861 (vint16mf4x6_t): Ditto.
16862 (vuint16mf4x6_t): Ditto.
16863 (vint16mf4x7_t): Ditto.
16864 (vuint16mf4x7_t): Ditto.
16865 (vint16mf4x8_t): Ditto.
16866 (vuint16mf4x8_t): Ditto.
16867 (vint16mf2x2_t): Ditto.
16868 (vuint16mf2x2_t): Ditto.
16869 (vint16mf2x3_t): Ditto.
16870 (vuint16mf2x3_t): Ditto.
16871 (vint16mf2x4_t): Ditto.
16872 (vuint16mf2x4_t): Ditto.
16873 (vint16mf2x5_t): Ditto.
16874 (vuint16mf2x5_t): Ditto.
16875 (vint16mf2x6_t): Ditto.
16876 (vuint16mf2x6_t): Ditto.
16877 (vint16mf2x7_t): Ditto.
16878 (vuint16mf2x7_t): Ditto.
16879 (vint16mf2x8_t): Ditto.
16880 (vuint16mf2x8_t): Ditto.
16881 (vint16m1x2_t): Ditto.
16882 (vuint16m1x2_t): Ditto.
16883 (vint16m1x3_t): Ditto.
16884 (vuint16m1x3_t): Ditto.
16885 (vint16m1x4_t): Ditto.
16886 (vuint16m1x4_t): Ditto.
16887 (vint16m1x5_t): Ditto.
16888 (vuint16m1x5_t): Ditto.
16889 (vint16m1x6_t): Ditto.
16890 (vuint16m1x6_t): Ditto.
16891 (vint16m1x7_t): Ditto.
16892 (vuint16m1x7_t): Ditto.
16893 (vint16m1x8_t): Ditto.
16894 (vuint16m1x8_t): Ditto.
16895 (vint16m2x2_t): Ditto.
16896 (vuint16m2x2_t): Ditto.
16897 (vint16m2x3_t): Ditto.
16898 (vuint16m2x3_t): Ditto.
16899 (vint16m2x4_t): Ditto.
16900 (vuint16m2x4_t): Ditto.
16901 (vint16m4x2_t): Ditto.
16902 (vuint16m4x2_t): Ditto.
16903 (vint32mf2x2_t): Ditto.
16904 (vuint32mf2x2_t): Ditto.
16905 (vint32mf2x3_t): Ditto.
16906 (vuint32mf2x3_t): Ditto.
16907 (vint32mf2x4_t): Ditto.
16908 (vuint32mf2x4_t): Ditto.
16909 (vint32mf2x5_t): Ditto.
16910 (vuint32mf2x5_t): Ditto.
16911 (vint32mf2x6_t): Ditto.
16912 (vuint32mf2x6_t): Ditto.
16913 (vint32mf2x7_t): Ditto.
16914 (vuint32mf2x7_t): Ditto.
16915 (vint32mf2x8_t): Ditto.
16916 (vuint32mf2x8_t): Ditto.
16917 (vint32m1x2_t): Ditto.
16918 (vuint32m1x2_t): Ditto.
16919 (vint32m1x3_t): Ditto.
16920 (vuint32m1x3_t): Ditto.
16921 (vint32m1x4_t): Ditto.
16922 (vuint32m1x4_t): Ditto.
16923 (vint32m1x5_t): Ditto.
16924 (vuint32m1x5_t): Ditto.
16925 (vint32m1x6_t): Ditto.
16926 (vuint32m1x6_t): Ditto.
16927 (vint32m1x7_t): Ditto.
16928 (vuint32m1x7_t): Ditto.
16929 (vint32m1x8_t): Ditto.
16930 (vuint32m1x8_t): Ditto.
16931 (vint32m2x2_t): Ditto.
16932 (vuint32m2x2_t): Ditto.
16933 (vint32m2x3_t): Ditto.
16934 (vuint32m2x3_t): Ditto.
16935 (vint32m2x4_t): Ditto.
16936 (vuint32m2x4_t): Ditto.
16937 (vint32m4x2_t): Ditto.
16938 (vuint32m4x2_t): Ditto.
16939 (vint64m1x2_t): Ditto.
16940 (vuint64m1x2_t): Ditto.
16941 (vint64m1x3_t): Ditto.
16942 (vuint64m1x3_t): Ditto.
16943 (vint64m1x4_t): Ditto.
16944 (vuint64m1x4_t): Ditto.
16945 (vint64m1x5_t): Ditto.
16946 (vuint64m1x5_t): Ditto.
16947 (vint64m1x6_t): Ditto.
16948 (vuint64m1x6_t): Ditto.
16949 (vint64m1x7_t): Ditto.
16950 (vuint64m1x7_t): Ditto.
16951 (vint64m1x8_t): Ditto.
16952 (vuint64m1x8_t): Ditto.
16953 (vint64m2x2_t): Ditto.
16954 (vuint64m2x2_t): Ditto.
16955 (vint64m2x3_t): Ditto.
16956 (vuint64m2x3_t): Ditto.
16957 (vint64m2x4_t): Ditto.
16958 (vuint64m2x4_t): Ditto.
16959 (vint64m4x2_t): Ditto.
16960 (vuint64m4x2_t): Ditto.
16961 (vfloat32mf2x2_t): Ditto.
16962 (vfloat32mf2x3_t): Ditto.
16963 (vfloat32mf2x4_t): Ditto.
16964 (vfloat32mf2x5_t): Ditto.
16965 (vfloat32mf2x6_t): Ditto.
16966 (vfloat32mf2x7_t): Ditto.
16967 (vfloat32mf2x8_t): Ditto.
16968 (vfloat32m1x2_t): Ditto.
16969 (vfloat32m1x3_t): Ditto.
16970 (vfloat32m1x4_t): Ditto.
16971 (vfloat32m1x5_t): Ditto.
16972 (vfloat32m1x6_t): Ditto.
16973 (vfloat32m1x7_t): Ditto.
16974 (vfloat32m1x8_t): Ditto.
16975 (vfloat32m2x2_t): Ditto.
16976 (vfloat32m2x3_t): Ditto.
16977 (vfloat32m2x4_t): Ditto.
16978 (vfloat32m4x2_t): Ditto.
16979 (vfloat64m1x2_t): Ditto.
16980 (vfloat64m1x3_t): Ditto.
16981 (vfloat64m1x4_t): Ditto.
16982 (vfloat64m1x5_t): Ditto.
16983 (vfloat64m1x6_t): Ditto.
16984 (vfloat64m1x7_t): Ditto.
16985 (vfloat64m1x8_t): Ditto.
16986 (vfloat64m2x2_t): Ditto.
16987 (vfloat64m2x3_t): Ditto.
16988 (vfloat64m2x4_t): Ditto.
16989 (vfloat64m4x2_t): Ditto.
16990 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_OPS):
16992 (DEF_RVV_TYPE_INDEX): Ditto.
16993 (rvv_arg_type_info::get_tuple_subpart_type): New function.
16994 (DEF_RVV_TUPLE_TYPE): New macro.
16995 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE_INDEX):
16996 Adapt for tuple vget/vset support.
16997 (vint8mf4_t): Ditto.
16998 (vuint8mf4_t): Ditto.
16999 (vint8mf2_t): Ditto.
17000 (vuint8mf2_t): Ditto.
17001 (vint8m1_t): Ditto.
17002 (vuint8m1_t): Ditto.
17003 (vint8m2_t): Ditto.
17004 (vuint8m2_t): Ditto.
17005 (vint8m4_t): Ditto.
17006 (vuint8m4_t): Ditto.
17007 (vint8m8_t): Ditto.
17008 (vuint8m8_t): Ditto.
17009 (vint16mf4_t): Ditto.
17010 (vuint16mf4_t): Ditto.
17011 (vint16mf2_t): Ditto.
17012 (vuint16mf2_t): Ditto.
17013 (vint16m1_t): Ditto.
17014 (vuint16m1_t): Ditto.
17015 (vint16m2_t): Ditto.
17016 (vuint16m2_t): Ditto.
17017 (vint16m4_t): Ditto.
17018 (vuint16m4_t): Ditto.
17019 (vint16m8_t): Ditto.
17020 (vuint16m8_t): Ditto.
17021 (vint32mf2_t): Ditto.
17022 (vuint32mf2_t): Ditto.
17023 (vint32m1_t): Ditto.
17024 (vuint32m1_t): Ditto.
17025 (vint32m2_t): Ditto.
17026 (vuint32m2_t): Ditto.
17027 (vint32m4_t): Ditto.
17028 (vuint32m4_t): Ditto.
17029 (vint32m8_t): Ditto.
17030 (vuint32m8_t): Ditto.
17031 (vint64m1_t): Ditto.
17032 (vuint64m1_t): Ditto.
17033 (vint64m2_t): Ditto.
17034 (vuint64m2_t): Ditto.
17035 (vint64m4_t): Ditto.
17036 (vuint64m4_t): Ditto.
17037 (vint64m8_t): Ditto.
17038 (vuint64m8_t): Ditto.
17039 (vfloat32mf2_t): Ditto.
17040 (vfloat32m1_t): Ditto.
17041 (vfloat32m2_t): Ditto.
17042 (vfloat32m4_t): Ditto.
17043 (vfloat32m8_t): Ditto.
17044 (vfloat64m1_t): Ditto.
17045 (vfloat64m2_t): Ditto.
17046 (vfloat64m4_t): Ditto.
17047 (vfloat64m8_t): Ditto.
17048 (tuple_subpart): Add tuple subpart base type.
17049 * config/riscv/riscv-vector-builtins.h (struct
17050 rvv_arg_type_info): Ditto.
17051 (tuple_type_field): New function.
17053 2023-05-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
17055 * config/riscv/riscv-modes.def (RVV_TUPLE_MODES): New macro.
17056 (RVV_TUPLE_PARTIAL_MODES): Ditto.
17057 * config/riscv/riscv-protos.h (riscv_v_ext_tuple_mode_p): New
17060 (get_subpart_mode): Ditto.
17061 (get_tuple_mode): Ditto.
17062 (expand_tuple_move): Ditto.
17063 * config/riscv/riscv-v.cc (ENTRY): New macro.
17064 (TUPLE_ENTRY): Ditto.
17065 (get_nf): New function.
17066 (get_subpart_mode): Ditto.
17067 (get_tuple_mode): Ditto.
17068 (expand_tuple_move): Ditto.
17069 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TUPLE_TYPE):
17071 (register_tuple_type): New function
17072 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TUPLE_TYPE):
17074 (vint8mf8x2_t): New macro.
17075 (vuint8mf8x2_t): Ditto.
17076 (vint8mf8x3_t): Ditto.
17077 (vuint8mf8x3_t): Ditto.
17078 (vint8mf8x4_t): Ditto.
17079 (vuint8mf8x4_t): Ditto.
17080 (vint8mf8x5_t): Ditto.
17081 (vuint8mf8x5_t): Ditto.
17082 (vint8mf8x6_t): Ditto.
17083 (vuint8mf8x6_t): Ditto.
17084 (vint8mf8x7_t): Ditto.
17085 (vuint8mf8x7_t): Ditto.
17086 (vint8mf8x8_t): Ditto.
17087 (vuint8mf8x8_t): Ditto.
17088 (vint8mf4x2_t): Ditto.
17089 (vuint8mf4x2_t): Ditto.
17090 (vint8mf4x3_t): Ditto.
17091 (vuint8mf4x3_t): Ditto.
17092 (vint8mf4x4_t): Ditto.
17093 (vuint8mf4x4_t): Ditto.
17094 (vint8mf4x5_t): Ditto.
17095 (vuint8mf4x5_t): Ditto.
17096 (vint8mf4x6_t): Ditto.
17097 (vuint8mf4x6_t): Ditto.
17098 (vint8mf4x7_t): Ditto.
17099 (vuint8mf4x7_t): Ditto.
17100 (vint8mf4x8_t): Ditto.
17101 (vuint8mf4x8_t): Ditto.
17102 (vint8mf2x2_t): Ditto.
17103 (vuint8mf2x2_t): Ditto.
17104 (vint8mf2x3_t): Ditto.
17105 (vuint8mf2x3_t): Ditto.
17106 (vint8mf2x4_t): Ditto.
17107 (vuint8mf2x4_t): Ditto.
17108 (vint8mf2x5_t): Ditto.
17109 (vuint8mf2x5_t): Ditto.
17110 (vint8mf2x6_t): Ditto.
17111 (vuint8mf2x6_t): Ditto.
17112 (vint8mf2x7_t): Ditto.
17113 (vuint8mf2x7_t): Ditto.
17114 (vint8mf2x8_t): Ditto.
17115 (vuint8mf2x8_t): Ditto.
17116 (vint8m1x2_t): Ditto.
17117 (vuint8m1x2_t): Ditto.
17118 (vint8m1x3_t): Ditto.
17119 (vuint8m1x3_t): Ditto.
17120 (vint8m1x4_t): Ditto.
17121 (vuint8m1x4_t): Ditto.
17122 (vint8m1x5_t): Ditto.
17123 (vuint8m1x5_t): Ditto.
17124 (vint8m1x6_t): Ditto.
17125 (vuint8m1x6_t): Ditto.
17126 (vint8m1x7_t): Ditto.
17127 (vuint8m1x7_t): Ditto.
17128 (vint8m1x8_t): Ditto.
17129 (vuint8m1x8_t): Ditto.
17130 (vint8m2x2_t): Ditto.
17131 (vuint8m2x2_t): Ditto.
17132 (vint8m2x3_t): Ditto.
17133 (vuint8m2x3_t): Ditto.
17134 (vint8m2x4_t): Ditto.
17135 (vuint8m2x4_t): Ditto.
17136 (vint8m4x2_t): Ditto.
17137 (vuint8m4x2_t): Ditto.
17138 (vint16mf4x2_t): Ditto.
17139 (vuint16mf4x2_t): Ditto.
17140 (vint16mf4x3_t): Ditto.
17141 (vuint16mf4x3_t): Ditto.
17142 (vint16mf4x4_t): Ditto.
17143 (vuint16mf4x4_t): Ditto.
17144 (vint16mf4x5_t): Ditto.
17145 (vuint16mf4x5_t): Ditto.
17146 (vint16mf4x6_t): Ditto.
17147 (vuint16mf4x6_t): Ditto.
17148 (vint16mf4x7_t): Ditto.
17149 (vuint16mf4x7_t): Ditto.
17150 (vint16mf4x8_t): Ditto.
17151 (vuint16mf4x8_t): Ditto.
17152 (vint16mf2x2_t): Ditto.
17153 (vuint16mf2x2_t): Ditto.
17154 (vint16mf2x3_t): Ditto.
17155 (vuint16mf2x3_t): Ditto.
17156 (vint16mf2x4_t): Ditto.
17157 (vuint16mf2x4_t): Ditto.
17158 (vint16mf2x5_t): Ditto.
17159 (vuint16mf2x5_t): Ditto.
17160 (vint16mf2x6_t): Ditto.
17161 (vuint16mf2x6_t): Ditto.
17162 (vint16mf2x7_t): Ditto.
17163 (vuint16mf2x7_t): Ditto.
17164 (vint16mf2x8_t): Ditto.
17165 (vuint16mf2x8_t): Ditto.
17166 (vint16m1x2_t): Ditto.
17167 (vuint16m1x2_t): Ditto.
17168 (vint16m1x3_t): Ditto.
17169 (vuint16m1x3_t): Ditto.
17170 (vint16m1x4_t): Ditto.
17171 (vuint16m1x4_t): Ditto.
17172 (vint16m1x5_t): Ditto.
17173 (vuint16m1x5_t): Ditto.
17174 (vint16m1x6_t): Ditto.
17175 (vuint16m1x6_t): Ditto.
17176 (vint16m1x7_t): Ditto.
17177 (vuint16m1x7_t): Ditto.
17178 (vint16m1x8_t): Ditto.
17179 (vuint16m1x8_t): Ditto.
17180 (vint16m2x2_t): Ditto.
17181 (vuint16m2x2_t): Ditto.
17182 (vint16m2x3_t): Ditto.
17183 (vuint16m2x3_t): Ditto.
17184 (vint16m2x4_t): Ditto.
17185 (vuint16m2x4_t): Ditto.
17186 (vint16m4x2_t): Ditto.
17187 (vuint16m4x2_t): Ditto.
17188 (vint32mf2x2_t): Ditto.
17189 (vuint32mf2x2_t): Ditto.
17190 (vint32mf2x3_t): Ditto.
17191 (vuint32mf2x3_t): Ditto.
17192 (vint32mf2x4_t): Ditto.
17193 (vuint32mf2x4_t): Ditto.
17194 (vint32mf2x5_t): Ditto.
17195 (vuint32mf2x5_t): Ditto.
17196 (vint32mf2x6_t): Ditto.
17197 (vuint32mf2x6_t): Ditto.
17198 (vint32mf2x7_t): Ditto.
17199 (vuint32mf2x7_t): Ditto.
17200 (vint32mf2x8_t): Ditto.
17201 (vuint32mf2x8_t): Ditto.
17202 (vint32m1x2_t): Ditto.
17203 (vuint32m1x2_t): Ditto.
17204 (vint32m1x3_t): Ditto.
17205 (vuint32m1x3_t): Ditto.
17206 (vint32m1x4_t): Ditto.
17207 (vuint32m1x4_t): Ditto.
17208 (vint32m1x5_t): Ditto.
17209 (vuint32m1x5_t): Ditto.
17210 (vint32m1x6_t): Ditto.
17211 (vuint32m1x6_t): Ditto.
17212 (vint32m1x7_t): Ditto.
17213 (vuint32m1x7_t): Ditto.
17214 (vint32m1x8_t): Ditto.
17215 (vuint32m1x8_t): Ditto.
17216 (vint32m2x2_t): Ditto.
17217 (vuint32m2x2_t): Ditto.
17218 (vint32m2x3_t): Ditto.
17219 (vuint32m2x3_t): Ditto.
17220 (vint32m2x4_t): Ditto.
17221 (vuint32m2x4_t): Ditto.
17222 (vint32m4x2_t): Ditto.
17223 (vuint32m4x2_t): Ditto.
17224 (vint64m1x2_t): Ditto.
17225 (vuint64m1x2_t): Ditto.
17226 (vint64m1x3_t): Ditto.
17227 (vuint64m1x3_t): Ditto.
17228 (vint64m1x4_t): Ditto.
17229 (vuint64m1x4_t): Ditto.
17230 (vint64m1x5_t): Ditto.
17231 (vuint64m1x5_t): Ditto.
17232 (vint64m1x6_t): Ditto.
17233 (vuint64m1x6_t): Ditto.
17234 (vint64m1x7_t): Ditto.
17235 (vuint64m1x7_t): Ditto.
17236 (vint64m1x8_t): Ditto.
17237 (vuint64m1x8_t): Ditto.
17238 (vint64m2x2_t): Ditto.
17239 (vuint64m2x2_t): Ditto.
17240 (vint64m2x3_t): Ditto.
17241 (vuint64m2x3_t): Ditto.
17242 (vint64m2x4_t): Ditto.
17243 (vuint64m2x4_t): Ditto.
17244 (vint64m4x2_t): Ditto.
17245 (vuint64m4x2_t): Ditto.
17246 (vfloat32mf2x2_t): Ditto.
17247 (vfloat32mf2x3_t): Ditto.
17248 (vfloat32mf2x4_t): Ditto.
17249 (vfloat32mf2x5_t): Ditto.
17250 (vfloat32mf2x6_t): Ditto.
17251 (vfloat32mf2x7_t): Ditto.
17252 (vfloat32mf2x8_t): Ditto.
17253 (vfloat32m1x2_t): Ditto.
17254 (vfloat32m1x3_t): Ditto.
17255 (vfloat32m1x4_t): Ditto.
17256 (vfloat32m1x5_t): Ditto.
17257 (vfloat32m1x6_t): Ditto.
17258 (vfloat32m1x7_t): Ditto.
17259 (vfloat32m1x8_t): Ditto.
17260 (vfloat32m2x2_t): Ditto.
17261 (vfloat32m2x3_t): Ditto.
17262 (vfloat32m2x4_t): Ditto.
17263 (vfloat32m4x2_t): Ditto.
17264 (vfloat64m1x2_t): Ditto.
17265 (vfloat64m1x3_t): Ditto.
17266 (vfloat64m1x4_t): Ditto.
17267 (vfloat64m1x5_t): Ditto.
17268 (vfloat64m1x6_t): Ditto.
17269 (vfloat64m1x7_t): Ditto.
17270 (vfloat64m1x8_t): Ditto.
17271 (vfloat64m2x2_t): Ditto.
17272 (vfloat64m2x3_t): Ditto.
17273 (vfloat64m2x4_t): Ditto.
17274 (vfloat64m4x2_t): Ditto.
17275 * config/riscv/riscv-vector-builtins.h (DEF_RVV_TUPLE_TYPE):
17277 * config/riscv/riscv-vector-switch.def (TUPLE_ENTRY): Ditto.
17278 * config/riscv/riscv.cc (riscv_v_ext_tuple_mode_p): New
17280 (TUPLE_ENTRY): Ditto.
17281 (riscv_v_ext_mode_p): New function.
17282 (riscv_v_adjust_nunits): Add tuple mode adjustment.
17283 (riscv_classify_address): Ditto.
17284 (riscv_binary_cost): Ditto.
17285 (riscv_rtx_costs): Ditto.
17286 (riscv_secondary_memory_needed): Ditto.
17287 (riscv_hard_regno_nregs): Ditto.
17288 (riscv_hard_regno_mode_ok): Ditto.
17289 (riscv_vector_mode_supported_p): Ditto.
17290 (riscv_regmode_natural_size): Ditto.
17291 (riscv_array_mode): New function.
17292 (TARGET_ARRAY_MODE): New target hook.
17293 * config/riscv/riscv.md: Add tuple modes.
17294 * config/riscv/vector-iterators.md: Ditto.
17295 * config/riscv/vector.md (mov<mode>): Add tuple modes data
17297 (*mov<VT:mode>_<P:mode>): Ditto.
17299 2023-05-03 Richard Biener <rguenther@suse.de>
17301 * cse.cc (cse_insn): Track an equivalence to the destination
17302 separately and delay using src_related for it.
17304 2023-05-03 Richard Biener <rguenther@suse.de>
17306 * cse.cc (HASH): Turn into inline function and mix
17307 in another HASH_SHIFT bits.
17308 (SAFE_HASH): Likewise.
17310 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17313 * config/aarch64/aarch64-simd.md (aarch64_<sur>h<addsub><mode>): Rename to...
17314 (aarch64_<sur>h<addsub><mode><vczle><vczbe>): ... This.
17316 2023-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
17319 * config/aarch64/aarch64-simd.md (add<mode>3): Rename to...
17320 (add<mode>3<vczle><vczbe>): ... This.
17321 (sub<mode>3): Rename to...
17322 (sub<mode>3<vczle><vczbe>): ... This.
17323 (mul<mode>3): Rename to...
17324 (mul<mode>3<vczle><vczbe>): ... This.
17325 (*div<mode>3): Rename to...
17326 (*div<mode>3<vczle><vczbe>): ... This.
17327 (neg<mode>2): Rename to...
17328 (neg<mode>2<vczle><vczbe>): ... This.
17329 (abs<mode>2): Rename to...
17330 (abs<mode>2<vczle><vczbe>): ... This.
17331 (<frint_pattern><mode>2): Rename to...
17332 (<frint_pattern><mode>2<vczle><vczbe>): ... This.
17333 (<fmaxmin><mode>3): Rename to...
17334 (<fmaxmin><mode>3<vczle><vczbe>): ... This.
17335 (*sqrt<mode>2): Rename to...
17336 (*sqrt<mode>2<vczle><vczbe>): ... This.
17338 2023-05-03 Kito Cheng <kito.cheng@sifive.com>
17340 * doc/md.texi (RISC-V): Add vr, vm, vd constarint.
17342 2023-05-03 Martin Liska <mliska@suse.cz>
17344 PR tree-optimization/109693
17345 * value-range-storage.cc (vrange_allocator::vrange_allocator):
17346 Remove unused field.
17347 * value-range-storage.h: Likewise.
17349 2023-05-02 Andrew Pinski <apinski@marvell.com>
17351 * tree-ssa-phiopt.cc (move_stmt): New function.
17352 (match_simplify_replacement): Use move_stmt instead
17353 of the inlined version.
17355 2023-05-02 Andrew Pinski <apinski@marvell.com>
17357 * match.pd (a != 0 ? CLRSB(a) : CST -> CLRSB(a)): New
17360 2023-05-02 Andrew Pinski <apinski@marvell.com>
17362 PR tree-optimization/109702
17363 * match.pd: Fix "a != 0 ? FUNC(a) : CST" patterns
17364 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
17366 2023-05-02 Andrew Pinski <apinski@marvell.com>
17369 * config/aarch64/aarch64.md (*cmov<mode>_insn_m1): New
17370 insn_and_split pattern.
17372 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
17374 * config/riscv/sync.md (atomic_load<mode>): Implement atomic
17377 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
17379 * config/riscv/sync.md (mem_thread_fence_1): Change fence
17380 depending on the given memory model.
17382 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
17384 * config/riscv/riscv-protos.h (riscv_union_memmodels): Expose
17385 riscv_union_memmodels function to sync.md.
17386 * config/riscv/riscv.cc (riscv_union_memmodels): Add function to
17387 get the union of two memmodels in sync.md.
17388 (riscv_print_operand): Add %I and %J flags that output the
17389 optimal LR/SC flag bits for a given memory model.
17390 * config/riscv/sync.md: Remove static .aqrl bits on LR op/.rl
17391 bits on SC op and replace with optimized %I, %J flags.
17393 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
17395 * config/riscv/riscv.cc
17396 (riscv_memmodel_needs_amo_release): Change function name.
17397 (riscv_print_operand): Remove unneeded %F case.
17398 * config/riscv/sync.md: Remove unneeded fences.
17400 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
17403 * config/riscv/sync.md (atomic_store<mode>): Use simple store
17404 instruction in combination with fence(s).
17406 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
17408 * config/riscv/riscv.cc (riscv_print_operand): Change behavior
17409 of %A to include release bits.
17411 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
17413 * config/riscv/sync.md (atomic_cas_value_strong<mode>): Change
17414 FENCE/LR.aq/SC.aq into sequentially consistent LR.aqrl/SC.rl
17417 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
17419 * config/riscv/sync.md: Change LR.aq/SC.rl pairs into
17420 sequentially consistent LR.aqrl/SC.rl pairs.
17422 2023-05-02 Patrick O'Neill <patrick@rivosinc.com>
17424 * config/riscv/riscv.cc: Remove MEMMODEL_SYNC_* cases and
17425 sanitize memmodel input with memmodel_base.
17427 2023-05-02 Yanzhang Wang <yanzhang.wang@intel.com>
17428 Pan Li <pan2.li@intel.com>
17431 * config/riscv/vector-iterators.md: Support VNx2HI and VNX4DI when MIN_VLEN >= 128.
17433 2023-05-02 Romain Naour <romain.naour@gmail.com>
17435 * config/riscv/genrvv-type-indexer.cc: Use log2 from the C header, without
17438 2023-05-02 Martin Liska <mliska@suse.cz>
17440 * doc/invoke.texi: Update documentation based on param.opt file.
17442 2023-05-02 Richard Biener <rguenther@suse.de>
17444 PR tree-optimization/109672
17445 * tree-vect-stmts.cc (vectorizable_operation): For plus,
17446 minus and negate always check the vector mode is word mode.
17448 2023-05-01 Andrew Pinski <apinski@marvell.com>
17450 * tree-ssa-phiopt.cc: Update comment about
17451 how the transformation are implemented.
17453 2023-05-01 Jeff Law <jlaw@ventanamicro>
17455 * config/stormy16/stormy16.cc (TARGET_LRA_P): Remove defintion.
17457 2023-05-01 Jeff Law <jlaw@ventanamicro>
17459 * config/cris/cris.cc (TARGET_LRA_P): Remove.
17460 * config/epiphany/epiphany.cc (TARGET_LRA_P): Remove.
17461 * config/iq2000/iq2000.cc (TARGET_LRA_P): Remove.
17462 * config/m32r/m32r.cc (TARGET_LRA_P): Remove.
17463 * config/microblaze/microblaze.cc (TARGET_LRA_P): Remove.
17464 * config/mmix/mmix.cc (TARGET_LRA_P): Remove.
17466 2023-05-01 Rasmus Villemoes <rasmus.villemoes@prevas.dk>
17468 * print-tree.h (PRINT_DECL_REMAP_DEBUG): New flag.
17469 * print-tree.cc (print_decl_identifier): Implement it.
17470 * toplev.cc (output_stack_usage_1): Use it.
17472 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17474 * value-range.h (class int_range): Remove gt_ggc_mx and gt_pch_nx
17477 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17479 * value-range.h (irange::set_nonzero): Inline.
17481 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17483 * gimple-range-op.cc (cfn_ffs::fold_range): Use the correct
17485 * gimple-ssa-warn-alloca.cc (alloca_call_type): Use <2> for
17486 invalid_range, as it is an inverse range.
17487 * tree-vrp.cc (find_case_label_range): Avoid trees.
17488 * value-range.cc (irange::irange_set): Delete.
17489 (irange::irange_set_1bit_anti_range): Delete.
17490 (irange::irange_set_anti_range): Delete.
17491 (irange::set): Cleanup.
17492 * value-range.h (class irange): Remove irange_set,
17493 irange_set_anti_range, irange_set_1bit_anti_range.
17494 (irange::set_undefined): Remove set to m_type.
17496 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17498 * range-op.cc (update_known_bitmask): Adjust for irange containing
17499 wide_ints internally.
17500 * tree-ssanames.cc (set_nonzero_bits): Same.
17501 * tree-ssanames.h (set_nonzero_bits): Same.
17502 * value-range-storage.cc (irange_storage::set_irange): Same.
17503 (irange_storage::get_irange): Same.
17504 * value-range.cc (irange::operator=): Same.
17505 (irange::irange_set): Same.
17506 (irange::irange_set_1bit_anti_range): Same.
17507 (irange::irange_set_anti_range): Same.
17508 (irange::set): Same.
17509 (irange::verify_range): Same.
17510 (irange::contains_p): Same.
17511 (irange::irange_single_pair_union): Same.
17512 (irange::union_): Same.
17513 (irange::irange_contains_p): Same.
17514 (irange::intersect): Same.
17515 (irange::invert): Same.
17516 (irange::set_range_from_nonzero_bits): Same.
17517 (irange::set_nonzero_bits): Same.
17518 (mask_to_wi): Same.
17519 (irange::intersect_nonzero_bits): Same.
17520 (irange::union_nonzero_bits): Same.
17523 (tree_range): Same.
17524 (range_tests_strict_enum): Same.
17525 (range_tests_misc): Same.
17526 (range_tests_nonzero_bits): Same.
17527 * value-range.h (irange::type): Same.
17528 (irange::varying_compatible_p): Same.
17529 (irange::irange): Same.
17530 (int_range::int_range): Same.
17531 (irange::set_undefined): Same.
17532 (irange::set_varying): Same.
17533 (irange::lower_bound): Same.
17534 (irange::upper_bound): Same.
17536 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17538 * gimple-range-fold.cc (tree_lower_bound): Delete.
17539 (tree_upper_bound): Delete.
17540 (vrp_val_max): Delete.
17541 (vrp_val_min): Delete.
17542 (fold_using_range::range_of_ssa_name_with_loop_info): Call
17543 range_of_var_in_loop.
17544 * vr-values.cc (valid_value_p): Delete.
17545 (fix_overflow): Delete.
17546 (get_scev_info): New.
17547 (bounds_of_var_in_loop): Refactor into...
17548 (induction_variable_may_overflow_p): ...this,
17549 (range_from_loop_direction): ...and this,
17550 (range_of_var_in_loop): ...and this.
17551 * vr-values.h (bounds_of_var_in_loop): Delete.
17552 (range_of_var_in_loop): New.
17554 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17556 * gimple-range-fold.cc (adjust_pointer_diff_expr): Rewrite with
17558 (vrp_val_max): New.
17559 (vrp_val_min): New.
17560 * gimple-range-op.cc (cfn_strlen::fold_range): Use irange_val_*.
17561 * range-op.cc (max_limit): Same.
17563 (plus_minus_ranges): Same.
17564 (operator_rshift::op1_range): Same.
17565 (operator_cast::inside_domain_p): Same.
17566 * value-range.cc (vrp_val_is_max): Delete.
17567 (vrp_val_is_min): Delete.
17568 (range_tests_misc): Use irange_val_*.
17569 * value-range.h (vrp_val_is_min): Delete.
17570 (vrp_val_is_max): Delete.
17571 (vrp_val_max): Delete.
17572 (irange_val_min): New.
17573 (vrp_val_min): Delete.
17574 (irange_val_max): New.
17575 * vr-values.cc (check_for_binary_op_overflow): Use irange_val_*.
17577 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17579 * fold-const.cc (expr_not_equal_to): Convert to irange wide_int API.
17580 * gimple-fold.cc (size_must_be_zero_p): Same.
17581 * gimple-loop-versioning.cc
17582 (loop_versioning::prune_loop_conditions): Same.
17583 * gimple-range-edge.cc (gcond_edge_range): Same.
17584 (gimple_outgoing_range::calc_switch_ranges): Same.
17585 * gimple-range-fold.cc (adjust_imagpart_expr): Same.
17586 (adjust_realpart_expr): Same.
17587 (fold_using_range::range_of_address): Same.
17588 (fold_using_range::relation_fold_and_or): Same.
17589 * gimple-range-gori.cc (gori_compute::gori_compute): Same.
17590 (range_is_either_true_or_false): Same.
17591 * gimple-range-op.cc (cfn_toupper_tolower::get_letter_range): Same.
17592 (cfn_clz::fold_range): Same.
17593 (cfn_ctz::fold_range): Same.
17594 * gimple-range-tests.cc (class test_expr_eval): Same.
17595 * gimple-ssa-warn-alloca.cc (alloca_call_type): Same.
17596 * ipa-cp.cc (ipa_value_range_from_jfunc): Same.
17597 (propagate_vr_across_jump_function): Same.
17598 (decide_whether_version_node): Same.
17599 * ipa-prop.cc (ipa_get_value_range): Same.
17600 * ipa-prop.h (ipa_range_set_and_normalize): Same.
17601 * range-op.cc (get_shift_range): Same.
17602 (value_range_from_overflowed_bounds): Same.
17603 (value_range_with_overflow): Same.
17604 (create_possibly_reversed_range): Same.
17605 (equal_op1_op2_relation): Same.
17606 (not_equal_op1_op2_relation): Same.
17607 (lt_op1_op2_relation): Same.
17608 (le_op1_op2_relation): Same.
17609 (gt_op1_op2_relation): Same.
17610 (ge_op1_op2_relation): Same.
17611 (operator_mult::op1_range): Same.
17612 (operator_exact_divide::op1_range): Same.
17613 (operator_lshift::op1_range): Same.
17614 (operator_rshift::op1_range): Same.
17615 (operator_cast::op1_range): Same.
17616 (operator_logical_and::fold_range): Same.
17617 (set_nonzero_range_from_mask): Same.
17618 (operator_bitwise_or::op1_range): Same.
17619 (operator_bitwise_xor::op1_range): Same.
17620 (operator_addr_expr::fold_range): Same.
17621 (pointer_plus_operator::wi_fold): Same.
17622 (pointer_or_operator::op1_range): Same.
17629 (range_op_cast_tests): Same.
17630 (range_op_lshift_tests): Same.
17631 (range_op_rshift_tests): Same.
17632 (range_op_bitwise_and_tests): Same.
17633 (range_relational_tests): Same.
17634 * range.cc (range_zero): Same.
17635 (range_nonzero): Same.
17636 * range.h (range_true): Same.
17637 (range_false): Same.
17638 (range_true_and_false): Same.
17639 * tree-data-ref.cc (split_constant_offset_1): Same.
17640 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Same.
17641 * tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Same.
17642 (find_unswitching_predicates_for_bb): Same.
17643 * tree-ssa-phiopt.cc (value_replacement): Same.
17644 * tree-ssa-threadbackward.cc
17645 (back_threader::find_taken_edge_cond): Same.
17646 * tree-ssanames.cc (ssa_name_has_boolean_range): Same.
17647 * tree-vrp.cc (find_case_label_range): Same.
17648 * value-query.cc (range_query::get_tree_range): Same.
17649 * value-range.cc (irange::set_nonnegative): Same.
17650 (frange::contains_p): Same.
17651 (frange::singleton_p): Same.
17652 (frange::internal_singleton_p): Same.
17653 (irange::irange_set): Same.
17654 (irange::irange_set_1bit_anti_range): Same.
17655 (irange::irange_set_anti_range): Same.
17656 (irange::set): Same.
17657 (irange::operator==): Same.
17658 (irange::singleton_p): Same.
17659 (irange::contains_p): Same.
17660 (irange::set_range_from_nonzero_bits): Same.
17661 (DEFINE_INT_RANGE_INSTANCE): Same.
17671 (range_uint128): New.
17672 (range_uchar): New.
17674 (build_range3): Convert to irange wide_int API.
17675 (range_tests_irange3): Same.
17676 (range_tests_int_range_max): Same.
17677 (range_tests_strict_enum): Same.
17678 (range_tests_misc): Same.
17679 (range_tests_nonzero_bits): Same.
17680 (range_tests_nan): Same.
17681 (range_tests_signed_zeros): Same.
17682 * value-range.h (Value_Range::Value_Range): Same.
17683 (irange::set): Same.
17684 (irange::nonzero_p): Same.
17685 (irange::contains_p): Same.
17686 (range_includes_zero_p): Same.
17687 (irange::set_nonzero): Same.
17688 (irange::set_zero): Same.
17689 (contains_zero_p): Same.
17690 (frange::contains_p): Same.
17692 (simplify_using_ranges::op_with_boolean_value_range_p): Same.
17693 (bounds_of_var_in_loop): Same.
17694 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
17696 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17698 * value-range.cc (irange::irange_union): Rename to...
17699 (irange::union_): ...this.
17700 (irange::irange_intersect): Rename to...
17701 (irange::intersect): ...this.
17702 * value-range.h (irange::union_): Delete.
17703 (irange::intersect): Delete.
17705 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17707 * vr-values.cc (bounds_of_var_in_loop): Convert to irange API.
17709 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17711 * vr-values.cc (check_for_binary_op_overflow): Tidy up by using
17713 (compare_ranges): Delete.
17714 (compare_range_with_value): Delete.
17715 (bounds_of_var_in_loop): Tidy up by using ranger API.
17716 (simplify_using_ranges::fold_cond_with_ops): Cleanup and rename
17717 from vrp_evaluate_conditional_warnv_with_ops_using_ranges.
17718 (simplify_using_ranges::legacy_fold_cond_overflow): Remove
17719 strict_overflow_p and only_ranges.
17720 (simplify_using_ranges::legacy_fold_cond): Adjust call to
17721 legacy_fold_cond_overflow.
17722 (simplify_using_ranges::simplify_abs_using_ranges): Adjust for
17724 (range_fits_type_p): Rename value_range to irange.
17725 * vr-values.h (range_fits_type_p): Adjust prototype.
17727 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17729 * value-range.cc (irange::irange_set_anti_range): Remove uses of
17730 tree_lower_bound and tree_upper_bound.
17731 (irange::verify_range): Same.
17732 (irange::operator==): Same.
17733 (irange::singleton_p): Same.
17734 * value-range.h (irange::tree_lower_bound): Delete.
17735 (irange::tree_upper_bound): Delete.
17736 (irange::lower_bound): Delete.
17737 (irange::upper_bound): Delete.
17738 (irange::zero_p): Remove uses of tree_lower_bound and
17741 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17743 * tree-ssa-loop-niter.cc (refine_value_range_using_guard): Remove
17745 (determine_value_range): Same.
17746 (record_nonwrapping_iv): Same.
17747 (infer_loop_bounds_from_signedness): Same.
17748 (scev_var_range_cant_overflow): Same.
17749 * tree-vrp.cc (operand_less_p): Delete.
17750 * tree-vrp.h (operand_less_p): Delete.
17751 * value-range.cc (get_legacy_range): Remove uses of deprecated API.
17752 (irange::value_inside_range): Delete.
17753 * value-range.h (vrange::kind): Delete.
17754 (irange::num_pairs): Remove check of m_kind.
17755 (irange::min): Delete.
17756 (irange::max): Delete.
17758 2023-05-01 Aldy Hernandez <aldyh@redhat.com>
17760 * gimple-fold.cc (maybe_fold_comparisons_from_match_pd): Adjust
17761 for vrange_storage.
17762 * gimple-range-cache.cc (sbr_vector::sbr_vector): Same.
17763 (sbr_vector::grow): Same.
17764 (sbr_vector::set_bb_range): Same.
17765 (sbr_vector::get_bb_range): Same.
17766 (sbr_sparse_bitmap::sbr_sparse_bitmap): Same.
17767 (sbr_sparse_bitmap::set_bb_range): Same.
17768 (sbr_sparse_bitmap::get_bb_range): Same.
17769 (block_range_cache::block_range_cache): Same.
17770 (ssa_global_cache::ssa_global_cache): Same.
17771 (ssa_global_cache::get_global_range): Same.
17772 (ssa_global_cache::set_global_range): Same.
17773 * gimple-range-cache.h: Same.
17774 * gimple-range-edge.cc
17775 (gimple_outgoing_range::gimple_outgoing_range): Same.
17776 (gimple_outgoing_range::switch_edge_range): Same.
17777 (gimple_outgoing_range::calc_switch_ranges): Same.
17778 * gimple-range-edge.h: Same.
17779 * gimple-range-infer.cc
17780 (infer_range_manager::infer_range_manager): Same.
17781 (infer_range_manager::get_nonzero): Same.
17782 (infer_range_manager::maybe_adjust_range): Same.
17783 (infer_range_manager::add_range): Same.
17784 * gimple-range-infer.h: Rename obstack_vrange_allocator to
17786 * tree-core.h (struct irange_storage_slot): Remove.
17787 (struct tree_ssa_name): Remove irange_info and frange_info. Make
17788 range_info a pointer to vrange_storage.
17789 * tree-ssanames.cc (range_info_fits_p): Adjust for vrange_storage.
17790 (range_info_alloc): Same.
17791 (range_info_free): Same.
17792 (range_info_get_range): Same.
17793 (range_info_set_range): Same.
17794 (get_nonzero_bits): Same.
17795 * value-query.cc (get_ssa_name_range_info): Same.
17796 * value-range-storage.cc (class vrange_internal_alloc): New.
17797 (class vrange_obstack_alloc): New.
17798 (class vrange_ggc_alloc): New.
17799 (vrange_allocator::vrange_allocator): New.
17800 (vrange_allocator::~vrange_allocator): New.
17801 (vrange_storage::alloc_slot): New.
17802 (vrange_allocator::alloc): New.
17803 (vrange_allocator::free): New.
17804 (vrange_allocator::clone): New.
17805 (vrange_allocator::clone_varying): New.
17806 (vrange_allocator::clone_undefined): New.
17807 (vrange_storage::alloc): New.
17808 (vrange_storage::set_vrange): Remove slot argument.
17809 (vrange_storage::get_vrange): Same.
17810 (vrange_storage::fits_p): Same.
17811 (vrange_storage::equal_p): New.
17812 (irange_storage::write_lengths_address): New.
17813 (irange_storage::lengths_address): New.
17814 (irange_storage_slot::alloc_slot): Remove.
17815 (irange_storage::alloc): New.
17816 (irange_storage_slot::irange_storage_slot): Remove.
17817 (irange_storage::irange_storage): New.
17818 (write_wide_int): New.
17819 (irange_storage_slot::set_irange): Remove.
17820 (irange_storage::set_irange): New.
17821 (read_wide_int): New.
17822 (irange_storage_slot::get_irange): Remove.
17823 (irange_storage::get_irange): New.
17824 (irange_storage_slot::size): Remove.
17825 (irange_storage::equal_p): New.
17826 (irange_storage_slot::num_wide_ints_needed): Remove.
17827 (irange_storage::size): New.
17828 (irange_storage_slot::fits_p): Remove.
17829 (irange_storage::fits_p): New.
17830 (irange_storage_slot::dump): Remove.
17831 (irange_storage::dump): New.
17832 (frange_storage_slot::alloc_slot): Remove.
17833 (frange_storage::alloc): New.
17834 (frange_storage_slot::set_frange): Remove.
17835 (frange_storage::set_frange): New.
17836 (frange_storage_slot::get_frange): Remove.
17837 (frange_storage::get_frange): New.
17838 (frange_storage_slot::fits_p): Remove.
17839 (frange_storage::equal_p): New.
17840 (frange_storage::fits_p): New.
17841 (ggc_vrange_allocator): New.
17842 (ggc_alloc_vrange_storage): New.
17843 * value-range-storage.h (class vrange_storage): Rewrite.
17844 (class irange_storage): Rewrite.
17845 (class frange_storage): Rewrite.
17846 (class obstack_vrange_allocator): Remove.
17847 (class ggc_vrange_allocator): Remove.
17848 (vrange_allocator::alloc_vrange): Remove.
17849 (vrange_allocator::alloc_irange): Remove.
17850 (vrange_allocator::alloc_frange): Remove.
17851 (ggc_alloc_vrange_storage): New.
17852 * value-range.h (class irange): Rename vrange_allocator to
17854 (class frange): Same.
17856 2023-04-30 Roger Sayle <roger@nextmovesoftware.com>
17858 * config/stormy16/stormy16.md (neghi2): Rewrite pattern using
17859 inc to avoid clobbering the carry flag.
17861 2023-04-30 Andrew Pinski <apinski@marvell.com>
17863 * match.pd: Add patterns for "a != 0 ? FUNC(a) : CST"
17864 for FUNC of POPCOUNT BSWAP FFS PARITY CLZ and CTZ.
17866 2023-04-30 Andrew Pinski <apinski@marvell.com>
17868 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
17869 Allow some builtin/internal function calls which
17870 are known not to trap/throw.
17871 (phiopt_worker::match_simplify_replacement):
17872 Use name instead of getting the lhs again.
17874 2023-04-30 Joakim Nohlgård <joakim@nohlgard.se>
17876 * configure: Regenerate.
17877 * configure.ac: Use ld -r in the check for HAVE_LD_RO_RW_SECTION_MIXING
17879 2023-04-29 Hans-Peter Nilsson <hp@axis.com>
17881 * reload1.cc (emit_insn_if_valid_for_reload_1): Rename from
17882 emit_insn_if_valid_for_reload.
17883 (emit_insn_if_valid_for_reload): Call new helper, and if a SET fails
17884 to be recognized, also try emitting a parallel that clobbers
17885 TARGET_FLAGS_REGNUM, as applicable.
17887 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
17889 * config/stormy16/stormy16.md (neghi2): Convert from a define_expand
17891 (*rotatehi_1): New define_insn for efficient 2 insn sequence.
17892 (*rotatehi_8, *rotaterthi_8): New define_insn to emit a swpb.
17894 2023-04-29 Roger Sayle <roger@nextmovesoftware.com>
17896 * config/stormy16/stormy16.md (any_lshift): New code iterator.
17897 (any_or_plus): Likewise.
17898 (any_rotate): Likewise.
17899 (*<any_lshift>_and_internal): New define_insn_and_split to
17900 recognize a logical shift followed by an AND, and split it
17901 again after reload.
17902 (*swpn): New define_insn matching xstormy16's swpn.
17903 (*swpn_zext): New define_insn recognizing swpn followed by
17904 zero_extendqihi2, i.e. with the high byte set to zero.
17905 (*swpn_sext): Likewise, for swpn followed by cbw.
17906 (*swpn_sext_2): Likewise, for an alternate RTL form.
17907 (*swpn_zext_ior): A pre-reload splitter so that an swpn+zext+ior
17908 sequence is split in the correct place to recognize the *swpn_zext
17909 followed by any_or_plus (ior, xor or plus) instruction.
17911 2023-04-29 Mikael Pettersson <mikpelinux@gmail.com>
17914 * config.gcc (vax-*-linux*): Add glibc-stdint.h.
17915 (lm32-*-uclinux*): Likewise.
17917 2023-04-29 Fei Gao <gaofei@eswincomputing.com>
17919 * config/riscv/riscv.cc (riscv_avoid_save_libcall): helper function
17920 for riscv_use_save_libcall.
17921 (riscv_use_save_libcall): call riscv_avoid_save_libcall.
17922 (riscv_compute_frame_info): restructure to decouple stack allocation
17923 for rv32e w/o save-restore.
17925 2023-04-28 Eugene Rozenfeld <erozen@microsoft.com>
17927 * doc/install.texi: Fix documentation typo
17929 2023-04-28 Matevos Mehrabyan <matevosmehrabyan@gmail.com>
17931 * config/riscv/iterators.md (only_div, paired_mod): New iterators.
17932 (u): Add div/udiv cases.
17933 * config/riscv/riscv-protos.h (riscv_use_divmod_expander): Prototype.
17934 * config/riscv/riscv.cc (struct riscv_tune_param): Add field for
17936 (rocket_tune_info, sifive_7_tune_info): Initialize new field.
17937 (thead_c906_tune_info): Likewise.
17938 (optimize_size_tune_info): Likewise.
17939 (riscv_use_divmod_expander): New function.
17940 * config/riscv/riscv.md (<u>divmod<mode>4): New expander.
17942 2023-04-28 Karen Sargsyan <karen1999411@gmail.com>
17944 * config/riscv/bitmanip.md: Added clmulr instruction.
17945 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
17946 * config/riscv/riscv.md: (UNSPEC_CLMULR): Add new unspec type.
17948 * config/riscv/riscv-cmo.def: Added built-in function for clmulr.
17949 * config/riscv/crypto.md: Move clmul[h] instructions to bitmanip.md.
17950 * config/riscv/riscv-scalar-crypto.def: Move clmul[h] built-in
17951 functions to riscv-cmo.def.
17952 * config/riscv/generic.md: Add clmul to list of instructions
17953 using the generic_imul reservation.
17955 2023-04-28 Jivan Hakobyan <jivanhakobyan9@gmail.com>
17957 * config/riscv/bitmanip.md: Added expanders for minu/maxu instructions
17959 2023-04-28 Andrew Pinski <apinski@marvell.com>
17961 PR tree-optimization/100958
17962 * tree-ssa-phiopt.cc (two_value_replacement): Remove.
17963 (pass_phiopt::execute): Don't call two_value_replacement.
17964 * match.pd (a !=/== CST1 ? CST2 : CST3): Add pattern to
17965 handle what two_value_replacement did.
17967 2023-04-28 Andrew Pinski <apinski@marvell.com>
17969 * match.pd: Add patterns for
17970 "(A CMP B) ? MIN/MAX<A, C> : MIN/MAX <B, C>".
17972 2023-04-28 Andrew Pinski <apinski@marvell.com>
17974 * match.pd: Factor out the deciding the min/max from
17975 the "(cond (cmp (convert1? x) c1) (convert2? x) c2)"
17977 * fold-const.cc (minmax_from_comparison): this new function.
17978 * fold-const.h (minmax_from_comparison): New prototype.
17980 2023-04-28 Roger Sayle <roger@nextmovesoftware.com>
17982 PR rtl-optimization/109476
17983 * lower-subreg.cc: Include explow.h for force_reg.
17984 (find_decomposable_shift_zext): Pass an additional SPEED_P argument.
17985 If decomposing a suitable LSHIFTRT and we're not splitting
17986 ZERO_EXTEND (based on the current SPEED_P), then use a ZERO_EXTEND
17987 instead of setting a high part SUBREG to zero, which helps combine.
17988 (decompose_multiword_subregs): Update call to resolve_shift_zext.
17990 2023-04-28 Richard Biener <rguenther@suse.de>
17992 * tree-vect-data-refs.cc (vect_analyze_data_refs): Always
17994 * tree-vect-stmts.cc (vect_model_store_cost): Pass in the
17995 gather-scatter info and cost emulated scatters accordingly.
17996 (get_load_store_type): Support emulated scatters.
17997 (vectorizable_store): Likewise. Emulate them by extracting
17998 scalar offsets and data, doing scalar stores.
18000 2023-04-28 Richard Biener <rguenther@suse.de>
18002 * config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
18003 Tame down element extracts and scalar loads for gather/scatter
18004 similar to elementwise strided accesses.
18006 2023-04-28 Pan Li <pan2.li@intel.com>
18007 kito-cheng <kito.cheng@sifive.com>
18009 * config/riscv/vector.md: Add new define split to perform
18010 the simplification.
18012 2023-04-28 Richard Biener <rguenther@suse.de>
18015 * ipa-param-manipulation.cc
18016 (ipa_param_body_adjustments::modify_expression): Allow
18017 conversion of a register to a non-register type. Elide
18018 conversions inside BIT_FIELD_REFs.
18020 2023-04-28 Richard Biener <rguenther@suse.de>
18022 PR tree-optimization/109644
18023 * tree-cfg.cc (verify_types_in_gimple_reference): Check
18024 register constraints on the outermost VIEW_CONVERT_EXPR
18025 only. Do not allow register or invariant bases on
18026 multi-level or possibly variable index handled components.
18028 2023-04-28 Richard Biener <rguenther@suse.de>
18030 * gimplify.cc (gimplify_compound_lval): When there's a
18031 non-register type produced by one of the handled component
18032 operations make sure we get a non-register base.
18034 2023-04-28 Richard Biener <rguenther@suse.de>
18036 PR tree-optimization/108752
18037 * tree-vect-generic.cc (build_replicated_const): Rename
18038 to build_replicated_int_cst and move to tree.{h,cc}.
18039 (do_plus_minus): Adjust.
18040 (do_negate): Likewise.
18041 * tree-vect-stmts.cc (vectorizable_operation): Emit emulated
18042 arithmetic vector operations in lowered form.
18043 * tree.h (build_replicated_int_cst): Declare.
18044 * tree.cc (build_replicated_int_cst): Moved from
18045 tree-vect-generic.cc build_replicated_const.
18047 2023-04-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18050 * config/aarch64/aarch64-simd.md (aarch64_rbit<mode>): Rename to...
18051 (aarch64_rbit<mode><vczle><vczbe>): ... This.
18052 (neg<mode>2): Rename to...
18053 (neg<mode>2<vczle><vczbe>): ... This.
18054 (abs<mode>2): Rename to...
18055 (abs<mode>2<vczle><vczbe>): ... This.
18056 (aarch64_abs<mode>): Rename to...
18057 (aarch64_abs<mode><vczle><vczbe>): ... This.
18058 (one_cmpl<mode>2): Rename to...
18059 (one_cmpl<mode>2<vczle><vczbe>): ... This.
18060 (clrsb<mode>2): Rename to...
18061 (clrsb<mode>2<vczle><vczbe>): ... This.
18062 (clz<mode>2): Rename to...
18063 (clz<mode>2<vczle><vczbe>): ... This.
18064 (popcount<mode>2): Rename to...
18065 (popcount<mode>2<vczle><vczbe>): ... This.
18067 2023-04-28 Jakub Jelinek <jakub@redhat.com>
18069 * gimple-range-op.cc (class cfn_sqrt): New type.
18070 (op_cfn_sqrt): New variable.
18071 (gimple_range_op_handler::maybe_builtin_call): Handle
18072 CASE_CFN_SQRT{,_FN}.
18074 2023-04-28 Aldy Hernandez <aldyh@redhat.com>
18075 Jakub Jelinek <jakub@redhat.com>
18077 * value-range.h (frange_nextafter): Declare.
18078 * gimple-range-op.cc (class cfn_sincos): New.
18079 (op_cfn_sin, op_cfn_cos): New variables.
18080 (gimple_range_op_handler::maybe_builtin_call): Handle
18081 CASE_CFN_{SIN,COS}{,_FN}.
18083 2023-04-28 Jakub Jelinek <jakub@redhat.com>
18085 * target.def (libm_function_max_error): New target hook.
18086 * doc/tm.texi.in (TARGET_LIBM_FUNCTION_MAX_ERROR): Add.
18087 * doc/tm.texi: Regenerated.
18088 * targhooks.h (default_libm_function_max_error,
18089 glibc_linux_libm_function_max_error): Declare.
18090 * targhooks.cc: Include case-cfn-macros.h.
18091 (default_libm_function_max_error,
18092 glibc_linux_libm_function_max_error): New functions.
18093 * config/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
18094 * config/linux-protos.h (linux_libm_function_max_error): Declare.
18095 * config/linux.cc: Include target.h and targhooks.h.
18096 (linux_libm_function_max_error): New function.
18097 * config/arc/arc.cc: Include targhooks.h and case-cfn-macros.h.
18098 (arc_libm_function_max_error): New function.
18099 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
18100 * config/i386/i386.cc (ix86_libc_has_fast_function): Formatting fix.
18101 (ix86_libm_function_max_error): New function.
18102 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
18103 * config/rs6000/rs6000-protos.h
18104 (rs6000_linux_libm_function_max_error): Declare.
18105 * config/rs6000/rs6000-linux.cc: Include target.h, targhooks.h, tree.h
18106 and case-cfn-macros.h.
18107 (rs6000_linux_libm_function_max_error): New function.
18108 * config/rs6000/linux.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
18109 * config/rs6000/linux64.h (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
18110 * config/or1k/or1k.cc: Include targhooks.h and case-cfn-macros.h.
18111 (or1k_libm_function_max_error): New function.
18112 (TARGET_LIBM_FUNCTION_MAX_ERROR): Redefine.
18114 2023-04-28 Alexandre Oliva <oliva@adacore.com>
18116 * gimple-harden-conditionals.cc (insert_edge_check_and_trap):
18117 Move detach value calls...
18118 (pass_harden_conditional_branches::execute): ... here.
18119 (pass_harden_compares::execute): Detach values before
18122 2023-04-27 Andrew Stubbs <ams@codesourcery.com>
18124 * config/gcn/gcn-valu.md (cmul<conj_op><mode>3): Use gcn_gen_undef.
18125 (cml<addsub_as><mode>4): Likewise.
18126 (vec_addsub<mode>3): Likewise.
18127 (cadd<rot><mode>3): Likewise.
18128 (vec_fmaddsub<mode>4): Likewise.
18129 (vec_fmsubadd<mode>4): Likewise, and use sub for the odd lanes.
18131 2023-04-27 Andrew Pinski <apinski@marvell.com>
18133 * tree-ssa-phiopt.cc (phiopt_early_allow): Allow for
18134 up to 2 min/max expressions in the sequence/match code.
18136 2023-04-27 Andrew Pinski <apinski@marvell.com>
18138 * rtlanal.cc (may_trap_p_1): Treat SMIN/SMAX similar as
18140 * tree-eh.cc (operation_could_trap_helper_p): Treate
18141 MIN_EXPR/MAX_EXPR similar as other comparisons.
18143 2023-04-27 Andrew Pinski <apinski@marvell.com>
18145 * tree-ssa-phiopt.cc (cond_store_replacement): Remove
18147 (cond_if_else_store_replacement): Likewise.
18148 (get_non_trapping): Likewise.
18149 (store_elim_worker): Move into ...
18150 (pass_cselim::execute): This.
18152 2023-04-27 Andrew Pinski <apinski@marvell.com>
18154 * tree-ssa-phiopt.cc (two_value_replacement): Remove
18156 (match_simplify_replacement): Likewise.
18157 (factor_out_conditional_conversion): Likewise.
18158 (value_replacement): Likewise.
18159 (minmax_replacement): Likewise.
18160 (spaceship_replacement): Likewise.
18161 (cond_removal_in_builtin_zero_pattern): Likewise.
18162 (hoist_adjacent_loads): Likewise.
18163 (tree_ssa_phiopt_worker): Move into ...
18164 (pass_phiopt::execute): this.
18166 2023-04-27 Andrew Pinski <apinski@marvell.com>
18168 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove
18169 do_store_elim argument and split that part out to ...
18170 (store_elim_worker): This new function.
18171 (pass_cselim::execute): Call store_elim_worker.
18172 (pass_phiopt::execute): Update call to tree_ssa_phiopt_worker.
18174 2023-04-27 Jan Hubicka <jh@suse.cz>
18176 * cfgloopmanip.h (unloop_loops): Export.
18177 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Unloop loops
18178 that no longer loop.
18179 * tree-ssa-loop-ivcanon.cc (unloop_loops): Export; do not free
18180 vectors of loops to unloop.
18181 (canonicalize_induction_variables): Free vectors here.
18182 (tree_unroll_loops_completely): Free vectors here.
18184 2023-04-27 Richard Biener <rguenther@suse.de>
18186 PR tree-optimization/109170
18187 * gimple-range-op.cc (gimple_range_op_handler::maybe_builtin_call):
18188 Handle __builtin_expect and similar via cfn_pass_through_arg1
18189 and inspecting the calls fnspec.
18190 * builtins.cc (builtin_fnspec): Handle BUILT_IN_EXPECT
18191 and BUILT_IN_EXPECT_WITH_PROBABILITY.
18193 2023-04-27 Alexandre Oliva <oliva@adacore.com>
18195 * genmultilib: Use CONFIG_SHELL to run sub-scripts.
18197 2023-04-27 Aldy Hernandez <aldyh@redhat.com>
18199 PR tree-optimization/109639
18200 * ipa-cp.cc (ipa_value_range_from_jfunc): Normalize range.
18201 (propagate_vr_across_jump_function): Same.
18202 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
18203 * ipa-prop.h (ipa_range_set_and_normalize): New.
18204 * value-range.cc (irange::set): Assert min and max are INTEGER_CST.
18206 2023-04-27 Richard Biener <rguenther@suse.de>
18208 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
18209 create a CTOR operand in the result when simplifying GIMPLE.
18211 2023-04-27 Richard Biener <rguenther@suse.de>
18213 * gimplify.cc (gimplify_compound_lval): When the base
18214 gimplified to a register make sure to split up chains
18217 2023-04-27 Richard Biener <rguenther@suse.de>
18220 * ipa-param-manipulation.h
18221 (ipa_param_body_adjustments::modify_expression): Add extra_stmts
18223 * ipa-param-manipulation.cc
18224 (ipa_param_body_adjustments::modify_expression): Likewise.
18225 When we need a conversion and the replacement is a register
18226 split the conversion out.
18227 (ipa_param_body_adjustments::modify_assignment): Pass
18228 extra_stmts to RHS modify_expression.
18230 2023-04-27 Jonathan Wakely <jwakely@redhat.com>
18232 * doc/extend.texi (Zero Length): Describe example.
18234 2023-04-27 Richard Biener <rguenther@suse.de>
18236 PR tree-optimization/109594
18237 * tree-ssa.cc (non_rewritable_mem_ref_base): Constrain
18238 what we rewrite to a register based on the above.
18240 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
18242 * config/riscv/riscv.cc: Fix whitespace.
18243 * config/riscv/sync.md: Fix whitespace.
18245 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
18247 PR tree-optimization/108697
18248 * gimple-range-cache.cc (ssa_global_cache::clear_range): Do
18249 not clear the vector on an out of range query.
18250 (ssa_cache::dump): Use dump_range_query instead of get_range.
18251 (ssa_cache::dump_range_query): New.
18252 (ssa_lazy_cache::dump_range_query): New.
18253 (ssa_lazy_cache::set_range): New.
18254 * gimple-range-cache.h (ssa_cache::dump_range_query): New.
18255 (class ssa_lazy_cache): New.
18256 (ssa_lazy_cache::ssa_lazy_cache): New.
18257 (ssa_lazy_cache::~ssa_lazy_cache): New.
18258 (ssa_lazy_cache::get_range): New.
18259 (ssa_lazy_cache::clear_range): New.
18260 (ssa_lazy_cache::clear): New.
18261 (ssa_lazy_cache::dump): New.
18262 * gimple-range-path.cc (path_range_query::path_range_query): Do
18263 not allocate a ssa_cache object nor has_cache bitmap.
18264 (path_range_query::~path_range_query): Do not free objects.
18265 (path_range_query::clear_cache): Remove.
18266 (path_range_query::get_cache): Adjust.
18267 (path_range_query::set_cache): Remove.
18268 (path_range_query::dump): Don't call through a pointer.
18269 (path_range_query::internal_range_of_expr): Set cache directly.
18270 (path_range_query::reset_path): Clear cache directly.
18271 (path_range_query::ssa_range_in_phi): Fold with globals only.
18272 (path_range_query::compute_ranges_in_phis): Simply set range.
18273 (path_range_query::compute_ranges_in_block): Call cache directly.
18274 * gimple-range-path.h (class path_range_query): Replace bitmap
18275 and cache pointer with lazy cache object.
18276 * gimple-range.h (class assume_query): Use ssa_lazy_cache.
18278 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
18280 * gimple-range-cache.cc (ssa_cache::ssa_cache): Rename.
18281 (ssa_cache::~ssa_cache): Rename.
18282 (ssa_cache::has_range): New.
18283 (ssa_cache::get_range): Rename.
18284 (ssa_cache::set_range): Rename.
18285 (ssa_cache::clear_range): Rename.
18286 (ssa_cache::clear): Rename.
18287 (ssa_cache::dump): Rename and use get_range.
18288 (ranger_cache::get_global_range): Use get_range and set_range.
18289 (ranger_cache::range_of_def): Use get_range.
18290 * gimple-range-cache.h (class ssa_cache): Rename class and methods.
18291 (class ranger_cache): Use ssa_cache.
18292 * gimple-range-path.cc (path_range_query::path_range_query): Use
18294 (path_range_query::get_cache): Use get_range.
18295 (path_range_query::set_cache): Use set_range.
18296 * gimple-range-path.h (class path_range_query): Use ssa_cache.
18297 * gimple-range.cc (assume_query::assume_range_p): Use get_range.
18298 (assume_query::range_of_expr): Use get_range.
18299 (assume_query::assume_query): Use set_range.
18300 (assume_query::calculate_op): Use get_range and set_range.
18301 * gimple-range.h (class assume_query): Use ssa_cache.
18303 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
18305 * gimple-range-cache.cc (sbr_vector::sbr_vector): Add parameter
18306 and local to optionally zero memory.
18307 (br_vector::grow): Only zero memory if flag is set.
18308 (class sbr_lazy_vector): New.
18309 (sbr_lazy_vector::sbr_lazy_vector): New.
18310 (sbr_lazy_vector::set_bb_range): New.
18311 (sbr_lazy_vector::get_bb_range): New.
18312 (sbr_lazy_vector::bb_range_p): New.
18313 (block_range_cache::set_bb_range): Check flags and Use sbr_lazy_vector.
18314 * gimple-range-gori.cc (gori_map::calculate_gori): Use
18315 param_vrp_switch_limit.
18316 (gori_compute::gori_compute): Use param_vrp_switch_limit.
18317 * params.opt (vrp_sparse_threshold): Rename from evrp_sparse_threshold.
18318 (vrp_switch_limit): Rename from evrp_switch_limit.
18319 (vrp_vector_threshold): New.
18321 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
18323 * value-relation.cc (dom_oracle::query_relation): Check early for lack
18325 * value-relation.h (equiv_oracle::has_equiv_p): New.
18327 2023-04-26 Andrew MacLeod <amacleod@redhat.com>
18329 PR tree-optimization/109417
18330 * gimple-range-gori.cc (range_def_chain::register_dependency):
18331 Save the ssa version number, not the pointer.
18332 (gori_compute::may_recompute_p): No need to check if a dependency
18333 is in the free list.
18334 * gimple-range-gori.h (class range_def_chain): Change ssa1 and ssa2
18335 fields to be unsigned int instead of trees.
18336 (ange_def_chain::depend1): Adjust.
18337 (ange_def_chain::depend2): Adjust.
18338 * gimple-range.h: Include "ssa.h" to inline ssa_name().
18340 2023-04-26 David Edelsohn <dje.gcc@gmail.com>
18342 * config/rs6000/aix72.h (TARGET_DEFAULT): Use ISA_2_6_MASKS_SERVER.
18343 * config/rs6000/aix73.h (TARGET_DEFAULT): Use ISA_2_7_MASKS_SERVER.
18344 (PROCESSOR_DEFAULT): Use PROCESSOR_POWER8.
18346 2023-04-26 Patrick O'Neill <patrick@rivosinc.com>
18349 * config/riscv/riscv-protos.h: Add helper function stubs.
18350 * config/riscv/riscv.cc: Add helper functions for subword masking.
18351 * config/riscv/riscv.opt: Add command-line flags -minline-atomics and
18352 -mno-inline-atomics.
18353 * config/riscv/sync.md: Add masking logic and inline asm for fetch_and_op,
18354 fetch_and_nand, CAS, and exchange ops.
18355 * doc/invoke.texi: Add blurb regarding new command-line flags
18356 -minline-atomics and -mno-inline-atomics.
18358 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18360 * config/aarch64/aarch64-simd.md (aarch64_rshrn2<mode>_insn_le):
18361 Reimplement using standard RTL codes instead of unspec.
18362 (aarch64_rshrn2<mode>_insn_be): Likewise.
18363 (aarch64_rshrn2<mode>): Adjust for the above.
18364 * config/aarch64/aarch64.md (UNSPEC_RSHRN): Delete.
18366 2023-04-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18368 * config/aarch64/aarch64-simd.md (aarch64_rshrn<mode>_insn_le): Reimplement
18369 with standard RTL codes instead of an UNSPEC.
18370 (aarch64_rshrn<mode>_insn_be): Likewise.
18371 (aarch64_rshrn<mode>): Adjust for the above.
18372 * config/aarch64/predicates.md (aarch64_simd_rshrn_imm_vec): Define.
18374 2023-04-26 Pan Li <pan2.li@intel.com>
18375 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18377 * config/riscv/riscv.cc (riscv_classify_address): Allow
18378 const0_rtx for the RVV load/store.
18380 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18382 * range-op.cc (range_op_cast_tests): Remove legacy support.
18383 * value-range-storage.h (vrange_allocator::alloc_irange): Same.
18384 * value-range.cc (irange::operator=): Same.
18385 (get_legacy_range): Same.
18386 (irange::copy_legacy_to_multi_range): Delete.
18387 (irange::copy_to_legacy): Delete.
18388 (irange::irange_set_anti_range): Delete.
18389 (irange::set): Remove legacy support.
18390 (irange::verify_range): Same.
18391 (irange::legacy_lower_bound): Delete.
18392 (irange::legacy_upper_bound): Delete.
18393 (irange::legacy_equal_p): Delete.
18394 (irange::operator==): Remove legacy support.
18395 (irange::singleton_p): Same.
18396 (irange::value_inside_range): Same.
18397 (irange::contains_p): Same.
18398 (intersect_ranges): Delete.
18399 (irange::legacy_intersect): Delete.
18400 (union_ranges): Delete.
18401 (irange::legacy_union): Delete.
18402 (irange::legacy_verbose_union_): Delete.
18403 (irange::legacy_verbose_intersect): Delete.
18404 (irange::irange_union): Remove legacy support.
18405 (irange::irange_intersect): Same.
18406 (irange::intersect): Same.
18407 (irange::invert): Same.
18408 (ranges_from_anti_range): Delete.
18409 (gt_pch_nx): Adjust for legacy removal.
18411 (range_tests_legacy): Delete.
18412 (range_tests_misc): Adjust for legacy removal.
18413 (range_tests): Same.
18414 * value-range.h (class irange): Same.
18415 (irange::legacy_mode_p): Delete.
18416 (ranges_from_anti_range): Delete.
18417 (irange::nonzero_p): Adjust for legacy removal.
18418 (irange::lower_bound): Same.
18419 (irange::upper_bound): Same.
18420 (irange::union_): Same.
18421 (irange::intersect): Same.
18422 (irange::set_nonzero): Same.
18423 (irange::set_zero): Same.
18424 * vr-values.cc (simplify_using_ranges::legacy_fold_cond_overflow): Same.
18426 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18428 * value-range.cc (irange::copy_legacy_to_multi_range): Rewrite use
18429 of range_has_numeric_bounds_p with irange API.
18430 (range_has_numeric_bounds_p): Delete.
18431 * value-range.h (range_has_numeric_bounds_p): Delete.
18433 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18435 * tree-data-ref.cc (compute_distributive_range): Replace uses of
18436 range_int_cst_p with irange API.
18437 * tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.
18438 * tree-vrp.h (range_int_cst_p): Delete.
18439 * vr-values.cc (check_for_binary_op_overflow): Replace usees of
18440 range_int_cst_p with irange API.
18441 (vr_set_zero_nonzero_bits): Same.
18442 (range_fits_type_p): Same.
18443 (simplify_using_ranges::simplify_casted_cond): Same.
18444 * tree-vrp.cc (range_int_cst_p): Remove.
18446 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18448 * tree-ssa-strlen.cc (compare_nonzero_chars): Convert to wide_ints.
18450 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18452 * builtins.cc (expand_builtin_strnlen): Rewrite deprecated irange
18453 API uses to new API.
18454 * gimple-predicate-analysis.cc (find_var_cmp_const): Same.
18455 * internal-fn.cc (get_min_precision): Same.
18457 * tree-affine.cc (expr_to_aff_combination): Same.
18458 * tree-data-ref.cc (dr_step_indicator): Same.
18459 * tree-dfa.cc (get_ref_base_and_extent): Same.
18460 * tree-scalar-evolution.cc (iv_can_overflow_p): Same.
18461 * tree-ssa-phiopt.cc (two_value_replacement): Same.
18462 * tree-ssa-pre.cc (insert_into_preds_of_block): Same.
18463 * tree-ssa-reassoc.cc (optimize_range_tests_to_bit_test): Same.
18464 * tree-ssa-strlen.cc (compare_nonzero_chars): Same.
18465 * tree-switch-conversion.cc (bit_test_cluster::emit): Same.
18466 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Same.
18467 * tree.cc (get_range_pos_neg): Same.
18469 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18471 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Use
18472 vrange::dump instead of ad-hoc dumper.
18473 * tree-ssa-strlen.cc (dump_strlen_info): Same.
18474 * value-range-pretty-print.cc (visit): Pass TDF_NOUID to
18477 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18479 * range-op.cc (operator_cast::op1_range): Use
18480 create_possibly_reversed_range.
18481 (operator_bitwise_and::simple_op1_range_solver): Same.
18482 * value-range.cc (swap_out_of_order_endpoints): Delete.
18483 (irange::set): Remove call to swap_out_of_order_endpoints.
18485 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18487 * builtins.cc (determine_block_size): Convert use of legacy API to
18489 * gimple-array-bounds.cc (check_out_of_bounds_and_warn): Same.
18490 (array_bounds_checker::check_array_ref): Same.
18491 * gimple-ssa-warn-restrict.cc
18492 (builtin_memref::extend_offset_range): Same.
18493 * ipa-cp.cc (ipcp_store_vr_results): Same.
18494 * ipa-fnsummary.cc (set_switch_stmt_execution_predicate): Same.
18495 * ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Same.
18496 (ipa_write_jump_function): Same.
18497 * pointer-query.cc (get_size_range): Same.
18498 * tree-data-ref.cc (split_constant_offset): Same.
18499 * tree-ssa-strlen.cc (get_range): Same.
18500 (maybe_diag_stxncpy_trunc): Same.
18501 (strlen_pass::get_len_or_size): Same.
18502 (strlen_pass::count_nonzero_bytes_addr): Same.
18503 * tree-vect-patterns.cc (vect_get_range_info): Same.
18504 * value-range.cc (irange::maybe_anti_range): Remove.
18505 (get_legacy_range): New.
18506 (irange::copy_to_legacy): Use get_legacy_range.
18507 (ranges_from_anti_range): Same.
18508 * value-range.h (class irange): Remove maybe_anti_range.
18509 (get_legacy_range): New.
18510 * vr-values.cc (check_for_binary_op_overflow): Convert use of
18511 legacy API to get_legacy_range.
18512 (compare_ranges): Same.
18513 (compare_range_with_value): Same.
18514 (bounds_of_var_in_loop): Same.
18515 (find_case_label_ranges): Same.
18516 (simplify_using_ranges::simplify_switch_using_ranges): Same.
18518 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18520 * value-range-pretty-print.cc (vrange_printer::visit): Remove
18522 * value-range.cc (irange::constant_p): Remove.
18523 (irange::get_nonzero_bits_from_range): Remove constant_p use.
18524 * value-range.h (class irange): Remove constant_p.
18525 (irange::num_pairs): Remove constant_p use.
18527 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18529 * value-range.cc (irange::copy_legacy_to_multi_range): Remove
18531 (irange::set): Same.
18532 (irange::legacy_lower_bound): Same.
18533 (irange::legacy_upper_bound): Same.
18534 (irange::contains_p): Same.
18535 (range_tests_legacy): Same.
18536 (irange::normalize_addresses): Remove.
18537 (irange::normalize_symbolics): Remove.
18538 (irange::symbolic_p): Remove.
18539 * value-range.h (class irange): Remove symbolic_p,
18540 normalize_symbolics, and normalize_addresses.
18541 * vr-values.cc (simplify_using_ranges::two_valued_val_range_p):
18542 Remove symbolics support.
18544 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18546 * value-range.cc (irange::may_contain_p): Remove.
18547 * value-range.h (range_includes_zero_p): Rewrite may_contain_p
18548 usage with contains_p.
18549 * vr-values.cc (compare_range_with_value): Same.
18551 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18553 * tree-vrp.cc (supported_types_p): Remove.
18554 (defined_ranges_p): Remove.
18555 (range_fold_binary_expr): Remove.
18556 (range_fold_unary_expr): Remove.
18557 * tree-vrp.h (range_fold_unary_expr): Remove.
18558 (range_fold_binary_expr): Remove.
18560 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18562 * ipa-cp.cc (ipa_vr_operation_and_type_effects): Convert to ranger API.
18563 (ipa_value_range_from_jfunc): Same.
18564 (propagate_vr_across_jump_function): Same.
18565 * ipa-fnsummary.cc (evaluate_conditions_for_known_args): Same.
18566 * ipa-prop.cc (ipa_compute_jump_functions_for_edge): Same.
18567 * vr-values.cc (bounds_of_var_in_loop): Same.
18569 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18571 * gimple-array-bounds.cc (array_bounds_checker::get_value_range):
18572 Add irange argument.
18573 (check_out_of_bounds_and_warn): Remove check for vr.
18574 (array_bounds_checker::check_array_ref): Remove pointer qualifier
18575 for vr and adjust accordingly.
18576 * gimple-array-bounds.h (get_value_range): Add irange argument.
18577 * value-query.cc (class equiv_allocator): Delete.
18578 (range_query::get_value_range): Delete.
18579 (range_query::range_query): Remove allocator access.
18580 (range_query::~range_query): Same.
18581 * value-query.h (get_value_range): Delete.
18583 (simplify_using_ranges::op_with_boolean_value_range_p): Remove
18584 call to get_value_range.
18585 (check_for_binary_op_overflow): Same.
18586 (simplify_using_ranges::legacy_fold_cond_overflow): Same.
18587 (simplify_using_ranges::simplify_abs_using_ranges): Same.
18588 (simplify_using_ranges::simplify_cond_using_ranges_1): Same.
18589 (simplify_using_ranges::simplify_casted_cond): Same.
18590 (simplify_using_ranges::simplify_switch_using_ranges): Same.
18591 (simplify_using_ranges::two_valued_val_range_p): Same.
18593 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18596 (simplify_using_ranges::vrp_evaluate_conditional_warnv_with_ops):
18598 (simplify_using_ranges::legacy_fold_cond_overflow): ...this.
18599 (simplify_using_ranges::vrp_visit_cond_stmt): Rename to...
18600 (simplify_using_ranges::legacy_fold_cond): ...this.
18601 (simplify_using_ranges::fold_cond): Rename
18602 vrp_evaluate_conditional_warnv_with_ops to
18603 legacy_fold_cond_overflow.
18604 * vr-values.h (class vr_values): Replace vrp_visit_cond_stmt and
18605 vrp_evaluate_conditional_warnv_with_ops with legacy_fold_cond and
18606 legacy_fold_cond_overflow respectively.
18608 2023-04-26 Aldy Hernandez <aldyh@redhat.com>
18610 * vr-values.cc (get_vr_for_comparison): Remove.
18611 (compare_name_with_value): Same.
18612 (vrp_evaluate_conditional_warnv_with_ops): Remove calls to
18613 compare_name_with_value.
18614 * vr-values.h: Remove compare_name_with_value.
18615 Remove get_vr_for_comparison.
18617 2023-04-26 Roger Sayle <roger@nextmovesoftware.com>
18619 * config/stormy16/stormy16.md (bswaphi2): New define_insn.
18620 (bswapsi2): New define_insn.
18621 (swaphi): New define_insn to exchange two registers (swpw).
18622 (define_peephole2): Recognize exchange of registers as swaphi.
18624 2023-04-26 Richard Biener <rguenther@suse.de>
18626 * gimple-range-path.cc (path_range_query::compute_outgoing_relations):
18628 * ipa-pure-const.cc (pass_nothrow::execute): Likewise.
18629 * predict.cc (apply_return_prediction): Likewise.
18630 * sese.cc (set_ifsese_condition): Likewise. Simplify.
18631 * tree-cfg.cc (assert_unreachable_fallthru_edge_p): Avoid last_stmt.
18632 (make_edges_bb): Likewise.
18633 (make_cond_expr_edges): Likewise.
18634 (end_recording_case_labels): Likewise.
18635 (make_gimple_asm_edges): Likewise.
18636 (cleanup_dead_labels): Likewise.
18637 (group_case_labels): Likewise.
18638 (gimple_can_merge_blocks_p): Likewise.
18639 (gimple_merge_blocks): Likewise.
18640 (find_taken_edge): Likewise. Also handle empty fallthru blocks.
18641 (gimple_duplicate_sese_tail): Avoid last_stmt.
18642 (find_loop_dist_alias): Likewise.
18643 (gimple_block_ends_with_condjump_p): Likewise.
18644 (gimple_purge_dead_eh_edges): Likewise.
18645 (gimple_purge_dead_abnormal_call_edges): Likewise.
18646 (pass_warn_function_return::execute): Likewise.
18647 (execute_fixup_cfg): Likewise.
18648 * tree-eh.cc (redirect_eh_edge_1): Likewise.
18649 (pass_lower_resx::execute): Likewise.
18650 (pass_lower_eh_dispatch::execute): Likewise.
18651 (cleanup_empty_eh): Likewise.
18652 * tree-if-conv.cc (if_convertible_bb_p): Likewise.
18653 (predicate_bbs): Likewise.
18654 (ifcvt_split_critical_edges): Likewise.
18655 * tree-loop-distribution.cc (create_edge_for_control_dependence):
18657 (loop_distribution::transform_reduction_loop): Likewise.
18658 * tree-parloops.cc (transform_to_exit_first_loop_alt): Likewise.
18659 (try_transform_to_exit_first_loop_alt): Likewise.
18660 (transform_to_exit_first_loop): Likewise.
18661 (create_parallel_loop): Likewise.
18662 * tree-scalar-evolution.cc (get_loop_exit_condition): Likewise.
18663 * tree-ssa-dce.cc (mark_last_stmt_necessary): Likewise.
18664 (eliminate_unnecessary_stmts): Likewise.
18666 (dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
18668 * tree-ssa-ifcombine.cc (ifcombine_ifandif): Likewise.
18669 (pass_tree_ifcombine::execute): Likewise.
18670 * tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Likewise.
18671 (should_duplicate_loop_header_p): Likewise.
18672 * tree-ssa-loop-ivcanon.cc (create_canonical_iv): Likewise.
18673 (tree_estimate_loop_size): Likewise.
18674 (try_unroll_loop_completely): Likewise.
18675 * tree-ssa-loop-ivopts.cc (tree_ssa_iv_optimize_loop): Likewise.
18676 * tree-ssa-loop-manip.cc (ip_normal_pos): Likewise.
18677 (canonicalize_loop_ivs): Likewise.
18678 * tree-ssa-loop-niter.cc (determine_value_range): Likewise.
18679 (bound_difference): Likewise.
18680 (number_of_iterations_popcount): Likewise.
18681 (number_of_iterations_cltz): Likewise.
18682 (number_of_iterations_cltz_complement): Likewise.
18683 (simplify_using_initial_conditions): Likewise.
18684 (number_of_iterations_exit_assumptions): Likewise.
18685 (loop_niter_by_eval): Likewise.
18686 (estimate_numbers_of_iterations): Likewise.
18688 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18690 * config/riscv/vector.md: Refine vmadc/vmsbc RA constraint.
18692 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
18695 * config/rs6000/rs6000-builtins.def
18696 (__builtin_vsx_scalar_cmp_exp_qp_eq, __builtin_vsx_scalar_cmp_exp_qp_gt
18697 __builtin_vsx_scalar_cmp_exp_qp_lt,
18698 __builtin_vsx_scalar_cmp_exp_qp_unordered): Move from stanza ieee128-hw
18701 2023-04-26 Kewen Lin <linkw@linux.ibm.com>
18704 * config/rs6000/altivec.md (sldoi_to_mov<mode>): Replace predicate
18705 easy_vector_constant with const_vector_each_byte_same, add
18706 handlings in preparation for !easy_vector_constant, and update
18707 VECTOR_UNIT_ALTIVEC_OR_VSX_P with VECTOR_MEM_ALTIVEC_OR_VSX_P.
18708 * config/rs6000/predicates.md (const_vector_each_byte_same): New
18711 2023-04-26 Juzhe-Zhong <juzhe.zhong@rivai.ai>
18713 * config/riscv/vector.md (*pred_cmp<mode>_merge_tie_mask): New pattern.
18714 (*pred_ltge<mode>_merge_tie_mask): Ditto.
18715 (*pred_cmp<mode>_scalar_merge_tie_mask): Ditto.
18716 (*pred_eqne<mode>_scalar_merge_tie_mask): Ditto.
18717 (*pred_cmp<mode>_extended_scalar_merge_tie_mask): Ditto.
18718 (*pred_eqne<mode>_extended_scalar_merge_tie_mask): Ditto.
18719 (*pred_cmp<mode>_narrow_merge_tie_mask): Ditto.
18721 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18723 * config/riscv/vector.md: Fix redundant vmv1r.v.
18725 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18727 * config/riscv/vector.md: Fix RA constraint.
18729 2023-04-26 Pan Li <pan2.li@intel.com>
18732 * tree-ssa-sccvn.cc (vn_reference_eq): add type vector subparts
18733 check for vn_reference equal.
18735 2023-04-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
18737 * config/riscv/riscv-opts.h (enum riscv_autovec_preference_enum): Add enum for
18738 auto-vectorization preference.
18739 (enum riscv_autovec_lmul_enum): Add enum for choosing LMUL of RVV
18740 auto-vectorization.
18741 * config/riscv/riscv.opt: Add compile option for RVV auto-vectorization.
18743 2023-04-26 Jivan Hakobyan <jivanhakobyan9@gmail.com>
18745 * config/riscv/bitmanip.md: Updated predicates of bclri<mode>_nottwobits
18746 and bclridisi_nottwobits patterns.
18747 * config/riscv/predicates.md: (not_uimm_extra_bit_or_nottwobits): Adjust
18748 predicate to avoid splitting arith constants.
18749 (const_nottwobits_not_arith_operand): New predicate.
18751 2023-04-25 Hans-Peter Nilsson <hp@axis.com>
18753 * recog.cc (peep2_attempt, peep2_update_life): Correct
18754 head-comment description of parameter match_len.
18756 2023-04-25 Vineet Gupta <vineetg@rivosinc.com>
18758 * config/riscv/riscv.md: riscv_move_integer() drop in_splitter arg.
18759 riscv_split_symbol() drop in_splitter arg.
18760 * config/riscv/riscv.cc: riscv_move_integer() drop in_splitter arg.
18761 riscv_split_symbol() drop in_splitter arg.
18762 riscv_force_temporary() drop in_splitter arg.
18763 * config/riscv/riscv-protos.h: riscv_move_integer() drop in_splitter arg.
18764 riscv_split_symbol() drop in_splitter arg.
18766 2023-04-25 Eric Botcazou <ebotcazou@adacore.com>
18768 * tree-ssa.cc (insert_debug_temp_for_var_def): Do not create
18769 superfluous debug temporaries for single GIMPLE assignments.
18771 2023-04-25 Richard Biener <rguenther@suse.de>
18773 PR tree-optimization/109609
18774 * attr-fnspec.h (arg_max_access_size_given_by_arg_p):
18776 * tree-ssa-alias.cc (check_fnspec): Correctly interpret
18777 the size given by arg_max_access_size_given_by_arg_p as
18778 maximum, not exact, size.
18780 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18783 * config/aarch64/aarch64-simd.md (orn<mode>3): Rename to...
18784 (orn<mode>3<vczle><vczbe>): ... This.
18785 (bic<mode>3): Rename to...
18786 (bic<mode>3<vczle><vczbe>): ... This.
18787 (<su><maxmin><mode>3): Rename to...
18788 (<su><maxmin><mode>3<vczle><vczbe>): ... This.
18790 2023-04-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18792 * config/aarch64/aarch64-simd.md (<su_optab>div<mode>3): New define_expand.
18793 * config/aarch64/iterators.md (VQDIV): New mode iterator.
18794 (vnx2di): New mode attribute.
18796 2023-04-25 Richard Biener <rguenther@suse.de>
18798 PR rtl-optimization/109585
18799 * tree-ssa-alias.cc (aliasing_component_refs_p): Fix typo.
18801 2023-04-25 Jakub Jelinek <jakub@redhat.com>
18804 * config/rs6000/rs6000.cc (rs6000_is_valid_rotate_dot_mask): For
18805 !TARGET_64BIT, don't return true if UINTVAL (mask) << (63 - nb)
18806 is larger than signed int maximum.
18808 2023-04-25 Martin Liska <mliska@suse.cz>
18810 * doc/gcov.texi: Document the new "calls" field and document
18811 the API bump. Mention also "block_ids" for lines.
18812 * gcov.cc (output_intermediate_json_line): Output info about
18813 calls and extend branches as well.
18814 (generate_results): Bump version to 2.
18815 (output_line_details): Use block ID instead of a non-sensual
18818 2023-04-25 Roger Sayle <roger@nextmovesoftware.com>
18820 * config/stormy16/stormy16.md (zero_extendqihi2): Restore/fix
18821 length attribute for the first (memory operand) alternative.
18823 2023-04-25 Victor Do Nascimento <victor.donascimento@arm.com>
18825 * config/aarch64/aarch64-simd.md(aarch64_simd_stp<mode>): New.
18826 * config/aarch64/constraints.md: Make "Umn" relaxed memory
18828 * config/aarch64/iterators.md(ldpstp_vel_sz): New.
18830 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
18832 * value-range.cc (frange::set): Adjust constructor.
18833 * value-range.h (nan_state::nan_state): Replace default
18834 constructor with one taking an argument.
18836 2023-04-25 Aldy Hernandez <aldyh@redhat.com>
18838 * ipa-cp.cc (ipa_range_contains_p): New.
18839 (decide_whether_version_node): Use it.
18841 2023-04-24 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
18843 * tree-ssa-forwprop.cc (is_combined_permutation_identity): Try to
18844 simplify two successive VEC_PERM_EXPRs with same VLA mask,
18845 where mask chooses elements in reverse order.
18847 2023-04-24 Andrew Pinski <apinski@marvell.com>
18849 * tree-ssa-phiopt.cc (match_simplify_replacement): Add new arguments
18850 and support diamond shaped basic block form.
18851 (tree_ssa_phiopt_worker): Update call to match_simplify_replacement
18853 2023-04-24 Andrew Pinski <apinski@marvell.com>
18855 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
18856 Instead of calling last_and_only_stmt, look for the last statement
18859 2023-04-24 Andrew Pinski <apinski@marvell.com>
18861 * tree-ssa-phiopt.cc (empty_bb_or_one_feeding_into_p):
18863 (match_simplify_replacement): Call
18864 empty_bb_or_one_feeding_into_p instead of doing it inline.
18866 2023-04-24 Andrew Pinski <apinski@marvell.com>
18868 PR tree-optimization/68894
18869 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove the
18870 continue for the do_hoist_loads diamond case.
18872 2023-04-24 Andrew Pinski <apinski@marvell.com>
18874 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Rearrange
18875 code for better code readability.
18877 2023-04-24 Andrew Pinski <apinski@marvell.com>
18879 PR tree-optimization/109604
18880 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Move the
18881 diamond form check from ...
18882 (minmax_replacement): Here.
18884 2023-04-24 Patrick Palka <ppalka@redhat.com>
18886 * tree.cc (strip_array_types): Don't define here.
18887 (is_typedef_decl): Don't define here.
18888 (typedef_variant_p): Don't define here.
18889 * tree.h (strip_array_types): Define here.
18890 (is_typedef_decl): Define here.
18891 (typedef_variant_p): Define here.
18893 2023-04-24 Frederik Harwath <frederik@codesourcery.com>
18895 * doc/generic.texi (OpenMP): Add != to allowed
18896 conditions and state that vars can be unsigned.
18897 * tree.def (OMP_FOR): Likewise.
18899 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18901 * config/aarch64/aarch64-simd.md (mulv2di3): New expander.
18903 2023-04-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
18905 * doc/install.texi: Consistently use Solaris rather than Solaris 2.
18906 Remove explicit Solaris 11 references.
18908 (Options specification, --with-gnu-as): as and gas always differ
18910 Remove /usr/ccs/bin reference.
18911 (Installing GCC: Binaries, Solaris (SPARC, Intel)): Remove.
18912 (i?86-*-solaris2*): Merge assembler, linker recommendations ...
18913 (*-*-solaris2*): ... here.
18914 Update bundled GCC versions.
18915 Don't refer to pre-built binaries.
18916 Remove /bin/sh warning.
18917 Update assembler, linker recommendations.
18918 Document GNAT bootstrap compiler.
18919 (sparc-sun-solaris2*): Remove non-UltraSPARC reference.
18920 (sparc64-*-solaris2*): Move content...
18921 (sparcv9-*-solaris2*): ...here.
18922 Add GDC for 64-bit bootstrap compilers.
18924 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18927 * config/aarch64/aarch64-sve.md (<optab><mode>3): Handle TARGET_SVE2 MUL
18929 * config/aarch64/aarch64-sve2.md (*aarch64_mul_unpredicated_<mode>): New
18932 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18934 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal2<mode>): Rename to...
18935 (aarch64_<su>abal2<mode>_insn): ... This. Use RTL codes instead of unspec.
18936 (aarch64_<su>abal2<mode>): New define_expand.
18937 * config/aarch64/aarch64.cc (aarch64_abd_rtx_p): New function.
18938 (aarch64_rtx_costs): Handle ABD rtxes.
18939 * config/aarch64/aarch64.md (UNSPEC_SABAL2, UNSPEC_UABAL2): Delete.
18940 * config/aarch64/iterators.md (ABAL2): Delete.
18941 (sur): Remove handling of UNSPEC_UABAL2 and UNSPEC_SABAL2.
18943 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18945 * config/aarch64/aarch64-simd.md (aarch64_<sur>abal<mode>): Rename to...
18946 (aarch64_<su>abal<mode>): ... This. Use RTL codes instead of unspec.
18947 (<sur>sadv16qi): Rename to...
18948 (<su>sadv16qi): ... This. Adjust for the above.
18949 * config/aarch64/aarch64-sve.md (<sur>sad<vsi2qi>): Rename to...
18950 (<su>sad<vsi2qi>): ... This. Adjust for the above.
18951 * config/aarch64/aarch64.md (UNSPEC_SABAL, UNSPEC_UABAL): Delete.
18952 * config/aarch64/iterators.md (ABAL): Delete.
18953 (sur): Remove handling of UNSPEC_SABAL and UNSPEC_UABAL.
18955 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18957 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>): Rename to...
18958 (aarch64_<su>abdl2<mode>_insn): ... This. Use RTL codes instead of unspec.
18959 (aarch64_<su>abdl2<mode>): New define_expand.
18960 * config/aarch64/aarch64.md (UNSPEC_SABDL2, UNSPEC_UABDL2): Delete.
18961 * config/aarch64/iterators.md (ABDL2): Delete.
18962 (sur): Remove handling of UNSPEC_SABDL2 and UNSPEC_UABDL2.
18964 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18966 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl<mode>): Rename to...
18967 (aarch64_<su>abdl<mode>): ... This. Use standard RTL ops instead of
18969 * config/aarch64/aarch64.md (UNSPEC_SABDL, UNSPEC_UABDL): Delete.
18970 * config/aarch64/iterators.md (ABDL): Delete.
18971 (sur): Remove handling of UNSPEC_SABDL and UNSPEC_UABDL.
18973 2023-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
18975 * config/aarch64/aarch64-simd.md
18976 (*aarch64_<su>addlv<VDQV_L:mode>_ze<GPI:mode>): New pattern.
18978 2023-04-24 Richard Biener <rguenther@suse.de>
18980 * gimple-ssa-split-paths.cc (is_feasible_trace): Avoid
18982 * graphite-scop-detection.cc (single_pred_cond_non_loop_exit):
18984 * ipa-fnsummary.cc (set_cond_stmt_execution_predicate): Likewise.
18985 (set_switch_stmt_execution_predicate): Likewise.
18986 (phi_result_unknown_predicate): Likewise.
18987 * ipa-prop.cc (compute_complex_ancestor_jump_func): Likewise.
18988 (ipa_analyze_indirect_call_uses): Likewise.
18989 * predict.cc (predict_iv_comparison): Likewise.
18990 (predict_extra_loop_exits): Likewise.
18991 (predict_loops): Likewise.
18992 (tree_predict_by_opcode): Likewise.
18993 * gimple-predicate-analysis.cc (predicate::init_from_control_deps):
18995 * gimple-pretty-print.cc (dump_implicit_edges): Likewise.
18996 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Likewise.
18997 (replace_phi_edge_with_variable): Likewise.
18998 (two_value_replacement): Likewise.
18999 (value_replacement): Likewise.
19000 (minmax_replacement): Likewise.
19001 (spaceship_replacement): Likewise.
19002 (cond_removal_in_builtin_zero_pattern): Likewise.
19003 * tree-ssa-reassoc.cc (maybe_optimize_range_tests): Likewise.
19004 * tree-ssa-sccvn.cc (vn_phi_eq): Likewise.
19005 (vn_phi_lookup): Likewise.
19006 (vn_phi_insert): Likewise.
19007 * tree-ssa-structalias.cc (compute_points_to_sets): Likewise.
19008 * tree-ssa-threadbackward.cc (back_threader::maybe_thread_block):
19010 (back_threader_profitability::possibly_profitable_path_p):
19012 * tree-ssa-threadedge.cc (jump_threader::thread_outgoing_edges):
19014 * tree-switch-conversion.cc (pass_convert_switch::execute):
19016 (pass_lower_switch<O0>::execute): Likewise.
19017 * tree-tailcall.cc (tree_optimize_tail_calls_1): Likewise.
19018 * tree-vect-loop-manip.cc (vect_loop_versioning): Likewise.
19019 * tree-vect-slp.cc (vect_slp_function): Likewise.
19020 * tree-vect-stmts.cc (cfun_returns): Likewise.
19021 * tree-vectorizer.cc (vect_loop_vectorized_call): Likewise.
19022 (vect_loop_dist_alias_call): Likewise.
19024 2023-04-24 Richard Biener <rguenther@suse.de>
19026 * cfgcleanup.cc (outgoing_edges_match): Use FORWARDER_BLOCK_P.
19028 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
19030 * config/riscv/riscv-vsetvl.cc
19031 (vector_infos_manager::all_avail_in_compatible_p): New function.
19032 (pass_vsetvl::refine_vsetvls): Optimize vsetvls.
19033 * config/riscv/riscv-vsetvl.h: New function.
19035 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
19037 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::pre_vsetvl): Add function
19038 comment for cleanup_insns.
19040 2023-04-24 Juzhe-Zhong <juzhe.zhong@rivai.ai>
19042 * config/riscv/vector-iterators.md: New unspec to refine fault first load pattern.
19043 * config/riscv/vector.md: Refine fault first load pattern to erase avl from instructions
19044 with the fault first load property.
19046 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19048 * config/aarch64/aarch64-simd.md (aarch64_float_truncate_lo_): Rename to...
19049 (aarch64_float_truncate_lo_<mode><vczle><vczbe>): ... This.
19051 2023-04-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19054 * config/aarch64/aarch64-simd.md (aarch64_addp<mode>): Rename to...
19055 (aarch64_addp<mode><vczle><vczbe>): ... This.
19057 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
19059 * config/stormy16/stormy16.cc (xstormy16_rtx_costs): Rewrite to
19060 provide reasonable values for common arithmetic operations and
19061 immediate operands (in several machine modes).
19063 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
19065 * config/stormy16/stormy16.cc (xstormy16_print_operand): Add %h
19066 format specifier to output high_part register name of SImode reg.
19067 * config/stormy16/stormy16.md (extendhisi2): New define_insn.
19068 (zero_extendqihi2): Fix lengths, consistent formatting and add
19069 "and Rx,#255" alternative, for documentation purposes.
19070 (zero_extendhisi2): New define_insn.
19072 2023-04-23 Roger Sayle <roger@nextmovesoftware.com>
19074 * config/stormy16/stormy16.cc (xstormy16_output_shift): Implement
19075 SImode shifts by two by performing a single bit SImode shift twice.
19077 2023-04-23 Aldy Hernandez <aldyh@redhat.com>
19079 PR tree-optimization/109593
19080 * value-range.cc (frange::operator==): Handle NANs.
19082 2023-04-23 liuhongt <hongtao.liu@intel.com>
19084 PR rtl-optimization/108707
19085 * ira-costs.cc (scan_one_insn): Use NO_REGS instead of
19086 GENERAL_REGS when preferred reg_class is not known.
19088 2023-04-22 Andrew Pinski <apinski@marvell.com>
19090 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
19091 Change the code around slightly to move diamond
19092 handling for do_store_elim/do_hoist_loads out of
19095 2023-04-22 Andrew Pinski <apinski@marvell.com>
19097 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker):
19098 Remove check on empty_block_p.
19100 2023-04-22 Jakub Jelinek <jakub@redhat.com>
19102 PR bootstrap/109589
19103 * system.h (class auto_mpz): Workaround PR62101 bug in GCC 4.8 and 4.9.
19104 * realmpfr.h (class auto_mpfr): Likewise.
19106 2023-04-22 Jakub Jelinek <jakub@redhat.com>
19108 PR tree-optimization/109583
19109 * match.pd (fneg/fadd simplify): Don't call related_vector_mode
19110 if vec_mode is not VECTOR_MODE_P.
19112 2023-04-22 Jan Hubicka <hubicka@ucw.cz>
19113 Ondrej Kubanek <kubanek0ondrej@gmail.com>
19115 * cfgloopmanip.h (adjust_loop_info_after_peeling): Declare.
19116 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix updating of
19117 loop profile and bounds after header duplication.
19118 * tree-ssa-loop-ivcanon.cc (adjust_loop_info_after_peeling):
19119 Break out from try_peel_loop; fix handling of 0 iterations.
19120 (try_peel_loop): Use adjust_loop_info_after_peeling.
19122 2023-04-21 Andrew MacLeod <amacleod@redhat.com>
19124 PR tree-optimization/109546
19125 * tree-vrp.cc (remove_unreachable::remove_and_update_globals): Do
19126 not fold conditions with ADDR_EXPR early.
19128 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19130 * config/aarch64/aarch64.md (aarch64_umax<mode>3_insn): Delete.
19131 (umax<mode>3): Emit raw UMAX RTL instead of going through gen_ function
19133 (<optab><mode>3): New define_expand for MAXMIN_NOUMAX codes.
19134 (*aarch64_<optab><mode>3_zero): Define.
19135 (*aarch64_<optab><mode>3_cssc): Likewise.
19136 * config/aarch64/iterators.md (maxminand): New code attribute.
19138 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19141 * config/aarch64/aarch64-opts.h (enum aarch64_tp_reg): Define.
19142 * config/aarch64/aarch64-protos.h (aarch64_output_load_tp):
19144 * config/aarch64/aarch64.cc (aarch64_tpidr_register): Declare.
19145 (aarch64_override_options_internal): Handle the above.
19146 (aarch64_output_load_tp): New function.
19147 * config/aarch64/aarch64.md (aarch64_load_tp_hard): Call
19148 aarch64_output_load_tp.
19149 * config/aarch64/aarch64.opt (aarch64_tp_reg): Define enum.
19150 (mtp=): New option.
19151 * doc/invoke.texi (AArch64 Options): Document -mtp=.
19153 2023-04-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19156 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Define.
19157 (add_vec_concat_subst_be): Likewise.
19160 (add<mode>3): Rename to...
19161 (add<mode>3<vczle><vczbe>): ... This.
19162 (sub<mode>3): Rename to...
19163 (sub<mode>3<vczle><vczbe>): ... This.
19164 (mul<mode>3): Rename to...
19165 (mul<mode>3<vczle><vczbe>): ... This.
19166 (and<mode>3): Rename to...
19167 (and<mode>3<vczle><vczbe>): ... This.
19168 (ior<mode>3): Rename to...
19169 (ior<mode>3<vczle><vczbe>): ... This.
19170 (xor<mode>3): Rename to...
19171 (xor<mode>3<vczle><vczbe>): ... This.
19172 * config/aarch64/iterators.md (VDZ): Define.
19174 2023-04-21 Patrick Palka <ppalka@redhat.com>
19176 * tree.cc (walk_tree_1): Avoid repeatedly dereferencing tp
19179 2023-04-21 Jan Hubicka <jh@suse.cz>
19181 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Fix previous
19184 2023-04-21 Vineet Gupta <vineetg@rivosinc.com>
19186 * expmed.h (x_shift*_cost): convert to int [speed][mode][shift].
19187 (shift*_cost_ptr ()): Access x_shift*_cost array directly.
19189 2023-04-21 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
19191 * config/aarch64/aarch64.cc (aarch64_simd_dup_constant): Use
19192 force_reg instead of copy_to_mode_reg.
19193 (aarch64_expand_vector_init): Likewise.
19195 2023-04-21 Uroš Bizjak <ubizjak@gmail.com>
19197 * config/i386/i386.h (REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Remove.
19198 (REG_OK_FOR_INDEX_NONSTRICT_P, REG_OK_FOR_BASE_NONSTRICT_P): Ditto.
19199 (REG_OK_FOR_INDEX_STRICT_P, REG_OK_FOR_BASE_STRICT_P): Ditto.
19200 (FIRST_INDEX_REG, LAST_INDEX_REG): New defines.
19201 (LEGACY_INDEX_REG_P, LEGACY_INDEX_REGNO_P): New macros.
19202 (INDEX_REG_P, INDEX_REGNO_P): Ditto.
19203 (REGNO_OK_FOR_INDEX_P): Use INDEX_REGNO_P predicates.
19204 (REGNO_OK_FOR_INDEX_NONSTRICT_P): New macro.
19205 (EG_OK_FOR_BASE_NONSTRICT_P): Ditto.
19206 * config/i386/predicates.md (index_register_operand):
19207 Use REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
19208 * config/i386/i386.cc (ix86_legitimate_address_p): Use
19209 REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_BASE_NONSTRICT_P,
19210 REGNO_OK_FOR_INDEX_P and REGNO_OK_FOR_INDEX_NONSTRICT_P macros.
19212 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
19213 Ondrej Kubanek <kubanek0ondrej@gmail.com>
19215 * tree-ssa-loop-ch.cc (ch_base::copy_headers): Update loop header and
19218 2023-04-21 Richard Biener <rguenther@suse.de>
19220 * is-a.h (safe_is_a): New.
19222 2023-04-21 Richard Biener <rguenther@suse.de>
19224 * gimple-iterator.h (gimple_stmt_iterator::operator*): Add.
19225 (gphi_iterator::operator*): Likewise.
19227 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
19228 Michal Jires <michal@jires.eu>
19230 * ipa-inline.cc (class inline_badness): New class.
19231 (edge_heap_t, edge_heap_node_t): Use inline_badness for badness instead
19233 (update_edge_key): Update.
19234 (lookup_recursive_calls): Likewise.
19235 (recursive_inlining): Likewise.
19236 (add_new_edges_to_heap): Likewise.
19237 (inline_small_functions): Likewise.
19239 2023-04-21 Jan Hubicka <hubicka@ucw.cz>
19241 * ipa-devirt.cc (odr_types_equivalent_p): Cleanup warned checks.
19243 2023-04-21 Richard Biener <rguenther@suse.de>
19245 PR tree-optimization/109573
19246 * tree-vect-loop.cc (vectorizable_live_operation): Allow
19247 unhandled SSA copy as well. Demote assert to checking only.
19249 2023-04-21 Richard Biener <rguenther@suse.de>
19251 * df-core.cc (df_analyze): Compute RPO on the reverse graph
19252 for DF_BACKWARD problems.
19253 (loop_post_order_compute): Rename to ...
19254 (loop_rev_post_order_compute): ... this, compute a RPO.
19255 (loop_inverted_post_order_compute): Rename to ...
19256 (loop_inverted_rev_post_order_compute): ... this, compute a RPO.
19257 (df_analyze_loop): Use RPO on the forward graph for DF_FORWARD
19258 problems, RPO on the inverted graph for DF_BACKWARD.
19260 2023-04-21 Richard Biener <rguenther@suse.de>
19262 * cfganal.h (inverted_rev_post_order_compute): Rename
19264 (inverted_post_order_compute): ... this. Add struct function
19265 argument, change allocation to a C array.
19266 * cfganal.cc (inverted_rev_post_order_compute): Likewise.
19267 * lcm.cc (compute_antinout_edge): Adjust.
19268 * lra-lives.cc (lra_create_live_ranges_1): Likewise.
19269 * tree-ssa-dce.cc (remove_dead_stmt): Likewise.
19270 * tree-ssa-pre.cc (compute_antic): Likewise.
19272 2023-04-21 Richard Biener <rguenther@suse.de>
19274 * df.h (df_d::postorder_inverted): Change back to int *,
19276 * df-core.cc (rest_of_handle_df_finish): Adjust.
19277 (df_analyze_1): Likewise.
19278 (df_analyze): For DF_FORWARD problems use RPO on the forward
19280 (loop_inverted_post_order_compute): Adjust API.
19281 (df_analyze_loop): Adjust.
19282 (df_get_n_blocks): Likewise.
19283 (df_get_postorder): Likewise.
19285 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
19288 * config/riscv/riscv-vsetvl.cc
19289 (vector_infos_manager::all_empty_predecessor_p): New function.
19290 (pass_vsetvl::backward_demand_fusion): Ditto.
19291 * config/riscv/riscv-vsetvl.h: Ditto.
19293 2023-04-21 Robin Dapp <rdapp@ventanamicro.com>
19296 * config/riscv/generic.md: Change standard names to insn names.
19298 2023-04-21 Richard Biener <rguenther@suse.de>
19300 * lcm.cc (compute_antinout_edge): Use RPO on the inverted graph.
19301 (compute_laterin): Use RPO.
19302 (compute_available): Likewise.
19304 2023-04-21 Peng Fan <fanpeng@loongson.cn>
19306 * config/loongarch/gnu-user.h (MUSL_DYNAMIC_LINKER): Redefine.
19308 2023-04-21 Juzhe-Zhong <juzhe.zhong@rivai.ai>
19311 * config/riscv/riscv-vsetvl.cc (local_eliminate_vsetvl_insn): New function.
19312 (vector_insn_info::skip_avl_compatible_p): Ditto.
19313 (vector_insn_info::merge): Remove default value.
19314 (pass_vsetvl::compute_local_backward_infos): Ditto.
19315 (pass_vsetvl::cleanup_insns): Add local vsetvl elimination.
19316 * config/riscv/riscv-vsetvl.h: Ditto.
19318 2023-04-20 Alejandro Colomar <alx.manpages@gmail.com>
19320 * doc/extend.texi (Common Function Attributes): Remove duplicate
19323 2023-04-20 Andrew MacLeod <amacleod@redhat.com>
19325 PR tree-optimization/109564
19326 * gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore
19327 UNDEFINED range names when deciding if all PHI arguments are the same,
19329 2023-04-20 Jakub Jelinek <jakub@redhat.com>
19331 PR tree-optimization/109011
19332 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): Use
19333 .CTZ (X) = .POPCOUNT ((X - 1) & ~X) in preference to
19334 .CTZ (X) = PREC - .POPCOUNT (X | -X).
19336 2023-04-20 Vladimir N. Makarov <vmakarov@redhat.com>
19338 * lra-constraints.cc (match_reload): Exclude some hard regs for
19339 multi-reg inout reload pseudos used in asm in different mode.
19341 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
19343 * config/arm/arm.cc (thumb1_legitimate_address_p):
19344 Use VIRTUAL_REGISTER_P predicate.
19345 (arm_eliminable_register): Ditto.
19346 * config/avr/avr.md (push<mode>_1): Ditto.
19347 * config/bfin/predicates.md (register_no_elim_operand): Ditto.
19348 * config/h8300/predicates.md (register_no_sp_elim_operand): Ditto.
19349 * config/i386/predicates.md (register_no_elim_operand): Ditto.
19350 * config/iq2000/predicates.md (call_insn_operand): Ditto.
19351 * config/microblaze/microblaze.h (CALL_INSN_OP): Ditto.
19353 2023-04-20 Uros Bizjak <ubizjak@gmail.com>
19356 * config/i386/predicates.md (extract_operator): New predicate.
19357 * config/i386/i386.md (any_extract): Remove code iterator.
19358 (*cmpqi_ext<mode>_1_mem_rex64): Use extract_operator predicate.
19359 (*cmpqi_ext<mode>_1): Ditto.
19360 (*cmpqi_ext<mode>_2): Ditto.
19361 (*cmpqi_ext<mode>_3_mem_rex64): Ditto.
19362 (*cmpqi_ext<mode>_3): Ditto.
19363 (*cmpqi_ext<mode>_4): Ditto.
19364 (*extzvqi_mem_rex64): Ditto.
19366 (*insvqi_2): Ditto.
19367 (*extendqi<SWI24:mode>_ext_1): Ditto.
19368 (*addqi_ext<mode>_0): Ditto.
19369 (*addqi_ext<mode>_1): Ditto.
19370 (*addqi_ext<mode>_2): Ditto.
19371 (*subqi_ext<mode>_0): Ditto.
19372 (*subqi_ext<mode>_2): Ditto.
19373 (*testqi_ext<mode>_1): Ditto.
19374 (*testqi_ext<mode>_2): Ditto.
19375 (*andqi_ext<mode>_0): Ditto.
19376 (*andqi_ext<mode>_1): Ditto.
19377 (*andqi_ext<mode>_1_cc): Ditto.
19378 (*andqi_ext<mode>_2): Ditto.
19379 (*<any_or:code>qi_ext<mode>_0): Ditto.
19380 (*<any_or:code>qi_ext<mode>_1): Ditto.
19381 (*<any_or:code>qi_ext<mode>_2): Ditto.
19382 (*xorqi_ext<mode>_1_cc): Ditto.
19383 (*negqi_ext<mode>_2): Ditto.
19384 (*ashlqi_ext<mode>_2): Ditto.
19385 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
19387 2023-04-20 Raphael Zinsly <rzinsly@ventanamicro.com>
19390 * config/riscv/bitmanip.md (clz, ctz, pcnt, min, max patterns): Use
19391 <bitmanip_insn> as the type to allow for fine grained control of
19392 scheduling these insns.
19393 * config/riscv/generic.md (generic_alu): Add bitmanip, clz, ctz, pcnt,
19395 * config/riscv/riscv.md (type attribute): Add types for clz, ctz,
19396 pcnt, signed and unsigned min/max.
19398 2023-04-20 Juzhe-Zhong <juzhe.zhong@rivai.ai>
19399 kito-cheng <kito.cheng@sifive.com>
19401 * config/riscv/riscv.h (enum reg_class): Fix RVV register order.
19403 2023-04-20 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
19404 kito-cheng <kito.cheng@sifive.com>
19407 * config/riscv/riscv-vsetvl.cc (count_regno_occurrences): New function.
19408 (pass_vsetvl::cleanup_insns): Fix bug.
19410 2023-04-20 Andrew Stubbs <ams@codesourcery.com>
19412 * config/gcn/gcn-valu.md (vnsi, VnSI): Add scalar modes.
19413 (ldexp<mode>3): Delete.
19414 (ldexp<mode>3<exec>): Change "B" to "A".
19416 2023-04-20 Jakub Jelinek <jakub@redhat.com>
19417 Jonathan Wakely <jwakely@redhat.com>
19419 * tree.h (built_in_function_equal_p): New helper function.
19420 (fndecl_built_in_p): Turn into variadic template to support
19421 1 or more built_in_function arguments.
19422 * builtins.cc (fold_builtin_expect): Use 3 argument fndecl_built_in_p.
19423 * gimplify.cc (goa_stabilize_expr): Likewise.
19424 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
19425 * ipa-fnsummary.cc (compute_fn_summary): Likewise.
19426 * omp-low.cc (setjmp_or_longjmp_p): Likewise.
19427 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
19428 cgraph_update_edges_for_call_stmt_node,
19429 cgraph_edge::verify_corresponds_to_fndecl,
19430 cgraph_node::verify_node): Likewise.
19431 * tree-stdarg.cc (optimize_va_list_gpr_fpr_size): Likewise.
19432 * gimple-ssa-warn-access.cc (matching_alloc_calls_p): Likewise.
19433 * ipa-prop.cc (try_make_edge_direct_virtual_call): Likewise.
19435 2023-04-20 Jakub Jelinek <jakub@redhat.com>
19437 PR tree-optimization/109011
19438 * tree-vect-patterns.cc (vect_recog_ctz_ffs_pattern): New function.
19439 (vect_recog_popcount_clz_ctz_ffs_pattern): Move vect_pattern_detected
19440 call later. Don't punt for IFN_CTZ or IFN_FFS if it doesn't have
19441 direct optab support, but has instead IFN_CLZ, IFN_POPCOUNT or
19442 for IFN_FFS IFN_CTZ support, use vect_recog_ctz_ffs_pattern for that
19444 (vect_vect_recog_func_ptrs): Add ctz_ffs entry.
19446 2023-04-20 Richard Biener <rguenther@suse.de>
19448 * df-core.cc (rest_of_handle_df_initialize): Remove
19449 computation of df->postorder, df->postorder_inverted and
19452 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
19454 * common/config/i386/i386-common.cc
19455 (OPTION_MASK_ISA2_AVX_UNSET): Add OPTION_MASK_ISA2_VAES_UNSET.
19456 (ix86_handle_option): Set AVX flag for VAES.
19457 * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins):
19458 Add OPTION_MASK_ISA2_VAES_UNSET.
19459 (def_builtin): Share builtin between AES and VAES.
19460 * config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
19462 * config/i386/i386.md (aes): New isa attribute.
19463 * config/i386/sse.md (aesenc): Add pattern for VAES with xmm.
19464 (aesenclast): Ditto.
19466 (aesdeclast): Ditto.
19467 * config/i386/vaesintrin.h: Remove redundant avx target push.
19468 * config/i386/wmmintrin.h (_mm_aesdec_si128): Change to macro.
19469 (_mm_aesdeclast_si128): Ditto.
19470 (_mm_aesenc_si128): Ditto.
19471 (_mm_aesenclast_si128): Ditto.
19473 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
19475 * config/i386/avx2intrin.h
19476 (_MM_REDUCE_OPERATOR_BASIC_EPI16): New macro.
19477 (_MM_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
19478 (_MM256_REDUCE_OPERATOR_BASIC_EPI16): Ditto.
19479 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP16): Ditto.
19480 (_MM_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
19481 (_MM_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
19482 (_MM256_REDUCE_OPERATOR_BASIC_EPI8): Ditto.
19483 (_MM256_REDUCE_OPERATOR_MAX_MIN_EP8): Ditto.
19484 (_mm_reduce_add_epi16): New instrinsics.
19485 (_mm_reduce_mul_epi16): Ditto.
19486 (_mm_reduce_and_epi16): Ditto.
19487 (_mm_reduce_or_epi16): Ditto.
19488 (_mm_reduce_max_epi16): Ditto.
19489 (_mm_reduce_max_epu16): Ditto.
19490 (_mm_reduce_min_epi16): Ditto.
19491 (_mm_reduce_min_epu16): Ditto.
19492 (_mm256_reduce_add_epi16): Ditto.
19493 (_mm256_reduce_mul_epi16): Ditto.
19494 (_mm256_reduce_and_epi16): Ditto.
19495 (_mm256_reduce_or_epi16): Ditto.
19496 (_mm256_reduce_max_epi16): Ditto.
19497 (_mm256_reduce_max_epu16): Ditto.
19498 (_mm256_reduce_min_epi16): Ditto.
19499 (_mm256_reduce_min_epu16): Ditto.
19500 (_mm_reduce_add_epi8): Ditto.
19501 (_mm_reduce_mul_epi8): Ditto.
19502 (_mm_reduce_and_epi8): Ditto.
19503 (_mm_reduce_or_epi8): Ditto.
19504 (_mm_reduce_max_epi8): Ditto.
19505 (_mm_reduce_max_epu8): Ditto.
19506 (_mm_reduce_min_epi8): Ditto.
19507 (_mm_reduce_min_epu8): Ditto.
19508 (_mm256_reduce_add_epi8): Ditto.
19509 (_mm256_reduce_mul_epi8): Ditto.
19510 (_mm256_reduce_and_epi8): Ditto.
19511 (_mm256_reduce_or_epi8): Ditto.
19512 (_mm256_reduce_max_epi8): Ditto.
19513 (_mm256_reduce_max_epu8): Ditto.
19514 (_mm256_reduce_min_epi8): Ditto.
19515 (_mm256_reduce_min_epu8): Ditto.
19516 * config/i386/avx512vlbwintrin.h:
19517 (_mm_mask_reduce_add_epi16): Ditto.
19518 (_mm_mask_reduce_mul_epi16): Ditto.
19519 (_mm_mask_reduce_and_epi16): Ditto.
19520 (_mm_mask_reduce_or_epi16): Ditto.
19521 (_mm_mask_reduce_max_epi16): Ditto.
19522 (_mm_mask_reduce_max_epu16): Ditto.
19523 (_mm_mask_reduce_min_epi16): Ditto.
19524 (_mm_mask_reduce_min_epu16): Ditto.
19525 (_mm256_mask_reduce_add_epi16): Ditto.
19526 (_mm256_mask_reduce_mul_epi16): Ditto.
19527 (_mm256_mask_reduce_and_epi16): Ditto.
19528 (_mm256_mask_reduce_or_epi16): Ditto.
19529 (_mm256_mask_reduce_max_epi16): Ditto.
19530 (_mm256_mask_reduce_max_epu16): Ditto.
19531 (_mm256_mask_reduce_min_epi16): Ditto.
19532 (_mm256_mask_reduce_min_epu16): Ditto.
19533 (_mm_mask_reduce_add_epi8): Ditto.
19534 (_mm_mask_reduce_mul_epi8): Ditto.
19535 (_mm_mask_reduce_and_epi8): Ditto.
19536 (_mm_mask_reduce_or_epi8): Ditto.
19537 (_mm_mask_reduce_max_epi8): Ditto.
19538 (_mm_mask_reduce_max_epu8): Ditto.
19539 (_mm_mask_reduce_min_epi8): Ditto.
19540 (_mm_mask_reduce_min_epu8): Ditto.
19541 (_mm256_mask_reduce_add_epi8): Ditto.
19542 (_mm256_mask_reduce_mul_epi8): Ditto.
19543 (_mm256_mask_reduce_and_epi8): Ditto.
19544 (_mm256_mask_reduce_or_epi8): Ditto.
19545 (_mm256_mask_reduce_max_epi8): Ditto.
19546 (_mm256_mask_reduce_max_epu8): Ditto.
19547 (_mm256_mask_reduce_min_epi8): Ditto.
19548 (_mm256_mask_reduce_min_epu8): Ditto.
19550 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
19552 * common/config/i386/i386-common.cc
19553 (OPTION_MASK_ISA_VPCLMULQDQ_SET):
19554 Add OPTION_MASK_ISA_PCLMUL_SET and OPTION_MASK_ISA_AVX_SET.
19555 (OPTION_MASK_ISA_AVX_UNSET):
19556 Add OPTION_MASK_ISA_VPCLMULQDQ_UNSET.
19557 (OPTION_MASK_ISA_PCLMUL_UNSET): Ditto.
19558 * config/i386/i386.md (vpclmulqdqvl): New.
19559 * config/i386/sse.md (pclmulqdq): Add evex encoding.
19560 * config/i386/vpclmulqdqintrin.h: Remove redudant avx target
19563 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
19565 * config/i386/avx512vlbwintrin.h
19566 (_mm_mask_blend_epi16): Remove __OPTIMIZE__ wrapper.
19567 (_mm_mask_blend_epi8): Ditto.
19568 (_mm256_mask_blend_epi16): Ditto.
19569 (_mm256_mask_blend_epi8): Ditto.
19570 * config/i386/avx512vlintrin.h
19571 (_mm256_mask_blend_pd): Ditto.
19572 (_mm256_mask_blend_ps): Ditto.
19573 (_mm256_mask_blend_epi64): Ditto.
19574 (_mm256_mask_blend_epi32): Ditto.
19575 (_mm_mask_blend_pd): Ditto.
19576 (_mm_mask_blend_ps): Ditto.
19577 (_mm_mask_blend_epi64): Ditto.
19578 (_mm_mask_blend_epi32): Ditto.
19579 * config/i386/sse.md (VF_AVX512BWHFBF16): Removed.
19580 (VF_AVX512HFBFVL): Move it before the first usage.
19581 (<avx512>_blendm<mode>): Change iterator from VF_AVX512BWHFBF16
19582 to VF_AVX512HFBFVL.
19584 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
19586 * common/config/i386/i386-common.cc
19587 (OPTION_MASK_ISA_AVX512VBMI2_SET): Change OPTION_MASK_ISA_AVX512F_SET
19588 to OPTION_MASK_ISA_AVX512BW_SET.
19589 (OPTION_MASK_ISA_AVX512F_UNSET):
19590 Remove OPTION_MASK_ISA_AVX512VBMI2_UNSET.
19591 (OPTION_MASK_ISA_AVX512BW_UNSET):
19592 Add OPTION_MASK_ISA_AVX512VBMI2_UNSET.
19593 * config/i386/avx512vbmi2intrin.h: Do not push avx512bw.
19594 * config/i386/avx512vbmi2vlintrin.h: Ditto.
19595 * config/i386/i386-builtin.def: Remove OPTION_MASK_ISA_AVX512BW.
19596 * config/i386/sse.md (VI12_AVX512VLBW): Removed.
19597 (VI12_VI48F_AVX512VLBW): Rename to VI12_VI48F_AVX512VL.
19598 (compress<mode>_mask): Change iterator from VI12_AVX512VLBW to
19600 (compressstore<mode>_mask): Ditto.
19601 (expand<mode>_mask): Ditto.
19602 (expand<mode>_maskz): Ditto.
19603 (*expand<mode>_mask): Change iterator from VI12_VI48F_AVX512VLBW to
19604 VI12_VI48F_AVX512VL.
19606 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
19608 * common/config/i386/i386-common.cc
19609 (OPTION_MASK_ISA_AVX512BITALG_SET):
19610 Change OPTION_MASK_ISA_AVX512F_SET
19611 to OPTION_MASK_ISA_AVX512BW_SET.
19612 (OPTION_MASK_ISA_AVX512F_UNSET):
19613 Remove OPTION_MASK_ISA_AVX512BITALG_SET.
19614 (OPTION_MASK_ISA_AVX512BW_UNSET):
19615 Add OPTION_MASK_ISA_AVX512BITALG_SET.
19616 * config/i386/avx512bitalgintrin.h: Do not push avx512bw.
19617 * config/i386/i386-builtin.def:
19618 Remove redundant OPTION_MASK_ISA_AVX512BW.
19619 * config/i386/sse.md (VI1_AVX512VLBW): Removed.
19620 (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>):
19621 Change the iterator from VI1_AVX512VLBW to VI1_AVX512VL.
19623 2023-04-20 Haochen Jiang <haochen.jiang@intel.com>
19625 * config/i386/i386-expand.cc
19626 (ix86_check_builtin_isa_match): Correct wrong comments.
19627 Add a new macro SHARE_BUILTIN and refactor the current if
19630 2023-04-20 Mo, Zewei <zewei.mo@intel.com>
19632 * config/i386/cpuid.h: Open a new section for Extended Features
19633 Leaf (%eax == 7, %ecx == 0) and Extended Features Sub-leaf (%eax == 7,
19636 2023-04-20 Hu, Lin1 <lin1.hu@intel.com>
19638 * config/i386/sse.md: Modify insn vperm{i,f}
19641 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
19643 * config/xtensa/xtensa-opts.h: New header.
19644 * config/xtensa/xtensa.h (STRICT_ALIGNMENT): Redefine as
19645 xtensa_strict_align.
19646 * config/xtensa/xtensa.cc (xtensa_option_override): When
19647 -m[no-]strict-align is not specified in the command line set
19648 xtensa_strict_align to 0 if the hardware supports both unaligned
19649 loads and stores or to 1 otherwise.
19650 * config/xtensa/xtensa.opt (mstrict-align): New option.
19651 * doc/invoke.texi (Xtensa Options): Document -m[no-]strict-align.
19653 2023-04-19 Max Filippov <jcmvbkbc@gmail.com>
19655 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v4): New
19658 2023-04-19 Andrew Pinski <apinski@marvell.com>
19660 * config/i386/i386.md (*movsicc_noc_zext_1): New pattern.
19662 2023-04-19 Juzhe-Zhong <juzhe.zhong@rivai.ai>
19664 * config/riscv/riscv-modes.def (FLOAT_MODE): Add chunk 128 support.
19665 (VECTOR_BOOL_MODE): Ditto.
19666 (ADJUST_NUNITS): Ditto.
19667 (ADJUST_ALIGNMENT): Ditto.
19668 (ADJUST_BYTESIZE): Ditto.
19669 (ADJUST_PRECISION): Ditto.
19670 (RVV_MODES): Ditto.
19671 (VECTOR_MODE_WITH_PREFIX): Ditto.
19672 * config/riscv/riscv-v.cc (ENTRY): Ditto.
19673 (get_vlmul): Ditto.
19674 (get_ratio): Ditto.
19675 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
19676 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Ditto.
19677 (vbool64_t): Ditto.
19678 (vbool32_t): Ditto.
19679 (vbool16_t): Ditto.
19684 (vint8mf8_t): Ditto.
19685 (vuint8mf8_t): Ditto.
19686 (vint8mf4_t): Ditto.
19687 (vuint8mf4_t): Ditto.
19688 (vint8mf2_t): Ditto.
19689 (vuint8mf2_t): Ditto.
19690 (vint8m1_t): Ditto.
19691 (vuint8m1_t): Ditto.
19692 (vint8m2_t): Ditto.
19693 (vuint8m2_t): Ditto.
19694 (vint8m4_t): Ditto.
19695 (vuint8m4_t): Ditto.
19696 (vint8m8_t): Ditto.
19697 (vuint8m8_t): Ditto.
19698 (vint16mf4_t): Ditto.
19699 (vuint16mf4_t): Ditto.
19700 (vint16mf2_t): Ditto.
19701 (vuint16mf2_t): Ditto.
19702 (vint16m1_t): Ditto.
19703 (vuint16m1_t): Ditto.
19704 (vint16m2_t): Ditto.
19705 (vuint16m2_t): Ditto.
19706 (vint16m4_t): Ditto.
19707 (vuint16m4_t): Ditto.
19708 (vint16m8_t): Ditto.
19709 (vuint16m8_t): Ditto.
19710 (vint32mf2_t): Ditto.
19711 (vuint32mf2_t): Ditto.
19712 (vint32m1_t): Ditto.
19713 (vuint32m1_t): Ditto.
19714 (vint32m2_t): Ditto.
19715 (vuint32m2_t): Ditto.
19716 (vint32m4_t): Ditto.
19717 (vuint32m4_t): Ditto.
19718 (vint32m8_t): Ditto.
19719 (vuint32m8_t): Ditto.
19720 (vint64m1_t): Ditto.
19721 (vuint64m1_t): Ditto.
19722 (vint64m2_t): Ditto.
19723 (vuint64m2_t): Ditto.
19724 (vint64m4_t): Ditto.
19725 (vuint64m4_t): Ditto.
19726 (vint64m8_t): Ditto.
19727 (vuint64m8_t): Ditto.
19728 (vfloat32mf2_t): Ditto.
19729 (vfloat32m1_t): Ditto.
19730 (vfloat32m2_t): Ditto.
19731 (vfloat32m4_t): Ditto.
19732 (vfloat32m8_t): Ditto.
19733 (vfloat64m1_t): Ditto.
19734 (vfloat64m2_t): Ditto.
19735 (vfloat64m4_t): Ditto.
19736 (vfloat64m8_t): Ditto.
19737 * config/riscv/riscv-vector-switch.def (ENTRY): Ditto.
19738 * config/riscv/riscv.cc (riscv_legitimize_poly_move): Ditto.
19739 (riscv_convert_vector_bits): Ditto.
19740 * config/riscv/riscv.md:
19741 * config/riscv/vector-iterators.md:
19742 * config/riscv/vector.md
19743 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
19744 (@pred_indexed_<order>store<VNX32_QHS:mode><VNX32_QHSI:mode>): Ditto.
19745 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
19746 (@pred_indexed_<order>store<VNX64_QH:mode><VNX64_QHI:mode>): Ditto.
19747 (@pred_indexed_<order>store<VNX128_Q:mode><VNX128_Q:mode>): Ditto.
19748 (@pred_reduc_<reduc><mode><vlmul1_zve64>): Ditto.
19749 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve64>): Ditto.
19750 (@pred_reduc_plus<order><mode><vlmul1_zve64>): Ditto.
19751 (@pred_widen_reduc_plus<order><mode><vwlmul1_zve64>): Ditto.
19753 2023-04-19 Pan Li <pan2.li@intel.com>
19755 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1):
19756 Align IOR (A | (~A) -> -1) optimization MODE_CLASS condition to AND.
19758 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
19762 * config/i386/i386.md (*cmpqi_ext<mode>_1_mem_rex64): New insn pattern.
19763 (*cmpqi_ext<mode>_1): Use nonimmediate_operand predicate
19764 for operand 0. Use any_extract code iterator.
19765 (*cmpqi_ext<mode>_1 peephole2): New peephole2 pattern.
19766 (*cmpqi_ext<mode>_2): Use any_extract code iterator.
19767 (*cmpqi_ext<mode>_3_mem_rex64): New insn pattern.
19768 (*cmpqi_ext<mode>_1): Use general_operand predicate
19769 for operand 1. Use any_extract code iterator.
19770 (*cmpqi_ext<mode>_3 peephole2): New peephole2 pattern.
19771 (*cmpqi_ext<mode>_4): Use any_extract code iterator.
19773 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19775 * config/aarch64/aarch64-simd.md (aarch64_saddw2<mode>): Delete.
19776 (aarch64_uaddw2<mode>): Delete.
19777 (aarch64_ssubw2<mode>): Delete.
19778 (aarch64_usubw2<mode>): Delete.
19779 (aarch64_<ANY_EXTEND:su><ADDSUB:optab>w2<mode>): New define_expand.
19781 2023-04-19 Richard Biener <rguenther@suse.de>
19783 * tree-ssa-structalias.cc (do_ds_constraint): Use
19784 solve_add_graph_edge.
19786 2023-04-19 Richard Biener <rguenther@suse.de>
19788 * tree-ssa-structalias.cc (solve_add_graph_edge): New function,
19790 (do_sd_constraint): ... here.
19792 2023-04-19 Richard Biener <rguenther@suse.de>
19794 * tree-cfg.cc (gimple_can_merge_blocks_p): Remove condition
19795 rejecting the merge when A contains only a non-local label.
19797 2023-04-19 Uros Bizjak <ubizjak@gmail.com>
19799 * rtl.h (VIRTUAL_REGISTER_P): New predicate.
19800 (VIRTUAL_REGISTER_NUM_P): Ditto.
19801 (REGNO_PTR_FRAME_P): Use VIRTUAL_REGISTER_NUM_P predicate.
19802 * expr.cc (force_operand): Use VIRTUAL_REGISTER_P predicate.
19803 * function.cc (instantiate_decl_rtl): Ditto.
19804 * rtlanal.cc (rtx_addr_can_trap_p_1): Ditto.
19805 (nonzero_address_p): Ditto.
19806 (refers_to_regno_p): Use VIRTUAL_REGISTER_NUM_P predicate.
19808 2023-04-19 Aldy Hernandez <aldyh@redhat.com>
19810 * value-range.h (Value_Range::Value_Range): Avoid pointer sharing.
19812 2023-04-19 Richard Biener <rguenther@suse.de>
19814 * system.h (auto_mpz::operator->()): New.
19815 * realmpfr.h (auto_mpfr::operator->()): New.
19816 * builtins.cc (do_mpfr_lgamma_r): Use auto_mpfr.
19817 * real.cc (real_from_string): Likewise.
19818 (dconst_e_ptr): Likewise.
19819 (dconst_sqrt2_ptr): Likewise.
19820 * tree-ssa-loop-niter.cc (refine_value_range_using_guard):
19822 (bound_difference_of_offsetted_base): Likewise.
19823 (number_of_iterations_ne): Likewise.
19824 (number_of_iterations_lt_to_ne): Likewise.
19825 * ubsan.cc: Include realmpfr.h.
19826 (ubsan_instrument_float_cast): Use auto_mpfr.
19828 2023-04-19 Richard Biener <rguenther@suse.de>
19830 * tree-ssa-structalias.cc (solve_graph): Remove self-copy
19831 edges, remove edges from escaped after special-casing them.
19833 2023-04-19 Richard Biener <rguenther@suse.de>
19835 * tree-ssa-structalias.cc (do_sd_constraint): Fixup escape
19838 2023-04-19 Richard Biener <rguenther@suse.de>
19840 * tree-ssa-structalias.cc (do_sd_constraint): Do not write
19841 to the LHS varinfo solution member.
19843 2023-04-19 Richard Biener <rguenther@suse.de>
19845 * tree-ssa-structalias.cc (topo_visit): Look at the real
19846 destination of edges.
19848 2023-04-19 Richard Biener <rguenther@suse.de>
19850 PR tree-optimization/44794
19851 * tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop):
19852 If an epilogue loop is required set its iteration upper bound.
19854 2023-04-19 Xi Ruoyao <xry111@xry111.site>
19857 * config/loongarch/loongarch-protos.h
19858 (loongarch_expand_block_move): Add a parameter as alignment RTX.
19859 * config/loongarch/loongarch.h:
19860 (LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER): Remove.
19861 (LARCH_MAX_MOVE_BYTES_STRAIGHT): Remove.
19862 (LARCH_MAX_MOVE_OPS_PER_LOOP_ITER): Define.
19863 (LARCH_MAX_MOVE_OPS_STRAIGHT): Define.
19864 (MOVE_RATIO): Use LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
19865 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
19866 * config/loongarch/loongarch.cc (loongarch_expand_block_move):
19867 Take the alignment from the parameter, but set it to
19868 UNITS_PER_WORD if !TARGET_STRICT_ALIGN. Limit the length of
19869 straight-line implementation with LARCH_MAX_MOVE_OPS_STRAIGHT
19870 instead of LARCH_MAX_MOVE_BYTES_STRAIGHT.
19871 (loongarch_block_move_straight): When there are left-over bytes,
19872 half the mode size instead of falling back to byte mode at once.
19873 (loongarch_block_move_loop): Limit the length of loop body with
19874 LARCH_MAX_MOVE_OPS_PER_LOOP_ITER instead of
19875 LARCH_MAX_MOVE_BYTES_PER_LOOP_ITER.
19876 * config/loongarch/loongarch.md (cpymemsi): Pass the alignment
19877 to loongarch_expand_block_move.
19879 2023-04-19 Xi Ruoyao <xry111@xry111.site>
19881 * config/loongarch/loongarch.cc
19882 (loongarch_setup_incoming_varargs): Don't save more GARs than
19883 cfun->va_list_gpr_size / UNITS_PER_WORD.
19885 2023-04-19 Richard Biener <rguenther@suse.de>
19887 * tree-ssa-loop-manip.cc (determine_exit_conditions): Fix
19888 no epilogue condition.
19890 2023-04-19 Richard Biener <rguenther@suse.de>
19892 * gimple.h (gimple_assign_load): Outline...
19893 * gimple.cc (gimple_assign_load): ... here. Avoid
19894 get_base_address and instead just strip the outermost
19895 handled component, treating a remaining handled component
19898 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19900 * config/aarch64/aarch64-simd-builtins.def (neg): Delete builtins
19902 * config/aarch64/arm_fp16.h (vnegh_f16): Reimplement using normal negation.
19904 2023-04-19 Jakub Jelinek <jakub@redhat.com>
19906 PR tree-optimization/109011
19907 * tree-vect-patterns.cc (vect_recog_popcount_pattern): Rename to ...
19908 (vect_recog_popcount_clz_ctz_ffs_pattern): ... this. Handle also
19909 CLZ, CTZ and FFS. Remove vargs variable, use
19910 gimple_build_call_internal rather than gimple_build_call_internal_vec.
19911 (vect_vect_recog_func_ptrs): Adjust popcount entry.
19913 2023-04-19 Jakub Jelinek <jakub@redhat.com>
19916 * dse.cc (replace_read): If read_reg is a SUBREG of a word mode
19917 REG, for WORD_REGISTER_OPERATIONS copy SUBREG_REG of it into
19918 a new REG rather than the SUBREG.
19920 2023-04-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
19922 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set_zero<mode>):
19925 2023-04-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
19928 * config/aarch64/aarch64.cc (aarch64_rtx_costs): Merge ASHIFT and
19929 ROTATE, ROTATERT, LSHIFTRT, ASHIFTRT cases. Handle subregs in op1.
19931 2023-04-19 Richard Biener <rguenther@suse.de>
19933 PR rtl-optimization/109237
19934 * cse.cc (insn_live_p): Remove NEXT_INSN walk, instead check
19935 TREE_VISITED on INSN_VAR_LOCATION_DECL.
19936 (delete_trivially_dead_insns): Maintain TREE_VISITED on
19937 active debug bind INSN_VAR_LOCATION_DECL.
19939 2023-04-19 Richard Biener <rguenther@suse.de>
19941 PR rtl-optimization/109237
19942 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
19944 2023-04-19 Christophe Lyon <christophe.lyon@arm.com>
19946 * doc/install.texi (enable-decimal-float): Add AArch64.
19948 2023-04-19 liuhongt <hongtao.liu@intel.com>
19950 PR rtl-optimization/109351
19951 * ira.cc (setup_class_subset_and_memory_move_costs): Check
19952 hard_regno_mode_ok before setting lowest memory move cost for
19953 the mode with different reg classes.
19955 2023-04-18 Jason Merrill <jason@redhat.com>
19957 * doc/invoke.texi: Remove stray @gol.
19959 2023-04-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
19961 * ifcvt.cc (cond_move_process_if_block): Consider the result of
19962 targetm.noce_conversion_profitable_p() when replacing the original
19963 sequence with the converted one.
19965 2023-04-18 Mark Harmstone <mark@harmstone.com>
19967 * common.opt (gcodeview): Add new option.
19968 * gcc.cc (driver_handle_option); Handle OPT_gcodeview.
19969 * opts.cc (command_handle_option): Similarly.
19970 * doc/invoke.texi: Add documentation for -gcodeview.
19972 2023-04-18 Andrew Pinski <apinski@marvell.com>
19974 * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Remove declaration.
19975 (make_pass_phiopt): Make execute out of line.
19976 (tree_ssa_cs_elim): Move code into ...
19977 (pass_cselim::execute): here.
19979 2023-04-18 Sam James <sam@gentoo.org>
19981 * system.h: Drop unused INCLUDE_PTHREAD_H.
19983 2023-04-18 Kevin Lee <kevinl@rivosinc.com>
19985 * tree-vect-data-refs.cc (vect_grouped_store_supported): Add new
19988 2023-04-18 Sinan Lin <sinan.lin@linux.alibaba.com>
19990 * config/riscv/bitmanip.md (rotr<mode>3 expander): Enable for ZBKB.
19991 (bswapdi2, bswapsi2): Similarly.
19993 2023-04-18 Uros Bizjak <ubizjak@gmail.com>
19996 * config/i386/i386-builtin.def (__builtin_ia32_insertps128):
19997 Use CODE_FOR_sse4_1_insertps_v4sf.
19998 * config/i386/i386-expand.cc (expand_vec_perm_insertps): New.
19999 (expand_vec_perm_1): Call expand_vec_per_insertps.
20000 * config/i386/i386.md ("unspec"): Declare UNSPEC_INSERTPS here.
20001 * config/i386/mmx.md (mmxscalarmode): New mode attribute.
20002 (@sse4_1_insertps_<mode>): New insn pattern.
20003 * config/i386/sse.md (@sse4_1_insertps_<mode>): Macroize insn
20004 pattern from sse4_1_insertps using VI4F_128 mode iterator.
20006 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
20008 * value-range.cc (gt_ggc_mx): New.
20010 * value-range.h (class vrange): Add GTY marker.
20011 (class frange): Same.
20012 (gt_ggc_mx): Remove.
20013 (gt_pch_nx): Remove.
20015 2023-04-18 Victor L. Do Nascimento <victor.donascimento@arm.com>
20017 * lra-constraints.cc (constraint_unique): New.
20018 (process_address_1): Apply constraint_unique test.
20019 * recog.cc (constrain_operands): Allow relaxed memory
20022 2023-04-18 Kito Cheng <kito.cheng@sifive.com>
20024 * doc/extend.texi (Target Builtins): Add RISC-V Vector
20026 (RISC-V Vector Intrinsics): Document GCC implemented which
20027 version of RISC-V vector intrinsics and its reference.
20029 2023-04-18 Richard Biener <rguenther@suse.de>
20031 PR middle-end/108786
20032 * bitmap.h (bitmap_clear_first_set_bit): New.
20033 * bitmap.cc (bitmap_first_set_bit_worker): Rename from
20034 bitmap_first_set_bit and add optional clearing of the bit.
20035 (bitmap_first_set_bit): Wrap bitmap_first_set_bit_worker.
20036 (bitmap_clear_first_set_bit): Likewise.
20037 * df-core.cc (df_worklist_dataflow_doublequeue): Use
20038 bitmap_clear_first_set_bit.
20039 * graphite-scop-detection.cc (scop_detection::merge_sese):
20041 * sanopt.cc (sanitize_asan_mark_unpoison): Likewise.
20042 (sanitize_asan_mark_poison): Likewise.
20043 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Likewise.
20044 * tree-into-ssa.cc (rewrite_blocks): Likewise.
20045 * tree-ssa-dce.cc (simple_dce_from_worklist): Likewise.
20046 * tree-ssa-sccvn.cc (do_rpo_vn_1): Likewise.
20048 2023-04-18 Richard Biener <rguenther@suse.de>
20050 * tree-ssa-structalias.cc (dump_sa_stats): Split out from...
20051 (dump_sa_points_to_info): ... this function.
20052 (compute_points_to_sets): Guard large dumps with TDF_DETAILS,
20053 and call dump_sa_stats guarded with TDF_STATS.
20054 (ipa_pta_execute): Likewise.
20055 (compute_may_aliases): Guard dump_alias_info with
20056 TDF_DETAILS|TDF_ALIAS.
20058 2023-04-18 Andrew Pinski <apinski@marvell.com>
20060 * tree-ssa-phiopt.cc (gimple_simplify_phiopt): Dump
20061 the expression that is being tried when TDF_FOLDING
20063 (phiopt_worker::match_simplify_replacement): Dump
20064 the sequence which was created by gimple_simplify_phiopt
20065 when TDF_FOLDING is true.
20067 2023-04-18 Andrew Pinski <apinski@marvell.com>
20069 * tree-ssa-phiopt.cc (match_simplify_replacement):
20070 Simplify code that does the movement slightly.
20072 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
20074 * config/aarch64/aarch64.md (@aarch64_rev16<mode>): Change to
20076 (rev16<mode>2): Rename to...
20077 (aarch64_rev16<mode>2_alt1): ... This.
20078 (rev16<mode>2_alt): Rename to...
20079 (*aarch64_rev16<mode>2_alt2): ... This.
20081 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
20083 * emit-rtl.cc (init_emit_once): Initialize dconstm0.
20084 * gimple-range-op.cc (class cfn_signbit): Remove dconstm0
20086 * range-op-float.cc (zero_range): Use dconstm0.
20087 (zero_to_inf_range): Same.
20088 * real.h (dconstm0): New.
20089 * value-range.cc (frange::flush_denormals_to_zero): Use dconstm0.
20090 (frange::set_zero): Do not declare dconstm0.
20092 2023-04-18 Richard Biener <rguenther@suse.de>
20094 * system.h (class auto_mpz): New,
20095 * realmpfr.h (class auto_mpfr): Likewise.
20096 * fold-const-call.cc (do_mpfr_arg1): Use auto_mpfr.
20097 (do_mpfr_arg2): Likewise.
20098 * tree-ssa-loop-niter.cc (bound_difference): Use auto_mpz;
20100 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
20102 * config/aarch64/aarch64-builtins.cc (aarch64_init_simd_intrinsics): Take
20103 builtin flags from intrinsic data rather than hardcoded FLAG_AUTO_FP.
20105 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
20107 * value-range.cc (frange::operator==): Adjust for NAN.
20108 (range_tests_nan): Remove some NAN tests.
20110 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
20112 * inchash.cc (hash::add_real_value): New.
20113 * inchash.h (class hash): Add add_real_value.
20114 * value-range.cc (add_vrange): New.
20115 * value-range.h (inchash::add_vrange): New.
20117 2023-04-18 Richard Biener <rguenther@suse.de>
20119 PR tree-optimization/109539
20120 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
20121 Re-implement pointer relatedness for PHIs.
20123 2023-04-18 Andrew Stubbs <ams@codesourcery.com>
20125 * config/gcn/gcn-valu.md (SV_SFDF): New iterator.
20126 (SV_FP): New iterator.
20127 (scalar_mode, SCALAR_MODE): Add identity mappings for scalar modes.
20128 (recip<mode>2): Unify the two patterns using SV_FP.
20129 (div_scale<mode><exec_vcc>): New insn.
20130 (div_fmas<mode><exec>): New insn.
20131 (div_fixup<mode><exec>): New insn.
20132 (div<mode>3): Unify the two expanders and rewrite using hardfp.
20133 * config/gcn/gcn.cc (gcn_md_reorg): Support "vccwait" attribute.
20134 * config/gcn/gcn.md (unspec): Add UNSPEC_DIV_SCALE, UNSPEC_DIV_FMAS,
20135 and UNSPEC_DIV_FIXUP.
20136 (vccwait): New attribute.
20138 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
20140 * config/aarch64/aarch64.cc (aarch64_validate_mcpu): Add hint to use -march
20141 if the argument matches that.
20143 2023-04-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
20145 * config/aarch64/atomics.md
20146 (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
20147 Use SD_HSDI for destination mode iterator.
20149 2023-04-18 Jin Ma <jinma@linux.alibaba.com>
20151 * common/config/riscv/riscv-common.cc (multi_letter_subset_rank): Swap the order
20152 of z-extensions and s-extensions.
20153 (riscv_subset_list::parse): Likewise.
20155 2023-04-18 Jakub Jelinek <jakub@redhat.com>
20157 PR tree-optimization/109240
20158 * match.pd (fneg/fadd): Rewrite such that it handles both plus as
20159 first vec_perm operand and minus as second using fneg/fadd and
20160 minus as first vec_perm operand and plus as second using fneg/fsub.
20162 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
20164 * data-streamer.cc (bp_pack_real_value): New.
20165 (bp_unpack_real_value): New.
20166 * data-streamer.h (bp_pack_real_value): New.
20167 (bp_unpack_real_value): New.
20168 * tree-streamer-in.cc (unpack_ts_real_cst_value_fields): Use
20169 bp_unpack_real_value.
20170 * tree-streamer-out.cc (pack_ts_real_cst_value_fields): Use
20171 bp_pack_real_value.
20173 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
20175 * wide-int.h (WIDE_INT_MAX_HWIS): New.
20176 (class fixed_wide_int_storage): Use it.
20177 (trailing_wide_ints <N>::set_precision): Use it.
20178 (trailing_wide_ints <N>::extra_size): Use it.
20180 2023-04-18 Xi Ruoyao <xry111@xry111.site>
20182 * config/loongarch/loongarch-protos.h
20183 (loongarch_addu16i_imm12_operand_p): New function prototype.
20184 (loongarch_split_plus_constant): Likewise.
20185 * config/loongarch/loongarch.cc
20186 (loongarch_addu16i_imm12_operand_p): New function.
20187 (loongarch_split_plus_constant): Likewise.
20188 * config/loongarch/loongarch.h (ADDU16I_OPERAND): New macro.
20189 (DUAL_IMM12_OPERAND): Likewise.
20190 (DUAL_ADDU16I_OPERAND): Likewise.
20191 * config/loongarch/constraints.md (La, Lb, Lc, Ld, Le): New
20193 * config/loongarch/predicates.md (const_dual_imm12_operand): New
20195 (const_addu16i_operand): Likewise.
20196 (const_addu16i_imm12_di_operand): Likewise.
20197 (const_addu16i_imm12_si_operand): Likewise.
20198 (plus_di_operand): Likewise.
20199 (plus_si_operand): Likewise.
20200 (plus_si_extend_operand): Likewise.
20201 * config/loongarch/loongarch.md (add<mode>3): Convert to
20202 define_insn_and_split. Use plus_<mode>_operand predicate
20203 instead of arith_operand. Add alternatives for La, Lb, Lc, Ld,
20204 and Le constraints.
20205 (*addsi3_extended): Convert to define_insn_and_split. Use
20206 plus_si_extend_operand instead of arith_operand. Add
20207 alternatives for La and Le alternatives.
20209 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
20211 * value-range.h (Value_Range::Value_Range): New.
20212 (Value_Range::contains_p): New.
20214 2023-04-18 Aldy Hernandez <aldyh@redhat.com>
20216 * value-range.h (class vrange): Make m_discriminator const.
20217 (class irange): Make m_max_ranges const. Adjust constructors
20219 (class unsupported_range): Construct vrange appropriately.
20220 (class frange): Same.
20222 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
20224 * config/loongarch/loongarch.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Remove the macro
20227 2023-04-18 Lulu Cheng <chenglulu@loongson.cn>
20229 * doc/extend.texi: Add section for LoongArch Base Built-in functions.
20231 2023-04-18 Fei Gao <gaofei@eswincomputing.com>
20233 * config/riscv/riscv.cc (riscv_first_stack_step): Make codes more
20235 (riscv_expand_epilogue): Likewise.
20237 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
20239 * config/riscv/riscv.cc (riscv_expand_prologue): Consider save-restore in
20241 (riscv_expand_epilogue): Consider save-restore in stack deallocation.
20243 2023-04-17 Andrew Pinski <apinski@marvell.com>
20245 * tree-ssa-phiopt.cc (gate_hoist_loads): Remove
20248 2023-04-17 Aldy Hernandez <aldyh@redhat.com>
20250 * gimple-ssa-warn-alloca.cc (pass_walloca::execute): Do not export
20253 2023-04-17 Fei Gao <gaofei@eswincomputing.com>
20255 * config/riscv/riscv.cc (riscv_first_stack_step): Add a new function
20256 parameter remaining_size.
20257 (riscv_compute_frame_info): Adapt new riscv_first_stack_step interface.
20258 (riscv_expand_prologue): Likewise.
20259 (riscv_expand_epilogue): Likewise.
20261 2023-04-17 Feng Wang <wangfeng@eswincomputing.com>
20263 * config/riscv/bitmanip.md (rotrsi3_sext): Support generating
20264 roriw for constant counts.
20265 * rtl.h (reverse_rotate_by_imm_p): Add function declartion
20266 * simplify-rtx.cc (reverse_rotate_by_imm_p): New function.
20267 (simplify_context::simplify_binary_operation_1): Use it.
20268 * expmed.cc (expand_shift_1): Likewise.
20270 2023-04-17 Martin Jambor <mjambor@suse.cz>
20274 * cgraph.h (symtab_node::find_reference): Add parameter use_type.
20275 * ipa-prop.h (ipa_pass_through_data): New flag refdesc_decremented.
20276 (ipa_zap_jf_refdesc): New function.
20277 (ipa_get_jf_pass_through_refdesc_decremented): Likewise.
20278 (ipa_set_jf_pass_through_refdesc_decremented): Likewise.
20279 * ipa-cp.cc (ipcp_discover_new_direct_edges): Provide a value for
20280 the new parameter of find_reference.
20281 (adjust_references_in_caller): Likewise. Make sure the constant jump
20282 function is not used to decrement a refdec counter again. Only
20283 decrement refdesc counters when the pass_through jump function allows
20284 it. Added a detailed dump when decrementing refdesc counters.
20285 * ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Dump new flag.
20286 (ipa_set_jf_simple_pass_through): Initialize the new flag.
20287 (ipa_set_jf_unary_pass_through): Likewise.
20288 (ipa_set_jf_arith_pass_through): Likewise.
20289 (remove_described_reference): Provide a value for the new parameter of
20291 (update_jump_functions_after_inlining): Zap refdesc of new jfunc if
20292 the previous pass_through had a flag mandating that we do so.
20293 (propagate_controlled_uses): Likewise. Only decrement refdesc
20294 counters when the pass_through jump function allows it.
20295 (ipa_edge_args_sum_t::duplicate): Provide a value for the new
20296 parameter of find_reference.
20297 (ipa_write_jump_function): Assert the new flag does not have to be
20299 * symtab.cc (symtab_node::find_reference): Add parameter use_type, use
20302 2023-04-17 Philipp Tomsich <philipp.tomsich@vrull.eu>
20303 Di Zhao <di.zhao@amperecomputing.com>
20305 * config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION):
20306 Add AARCH64_EXTRA_TUNE_NO_LDP_COMBINE.
20307 * config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp):
20308 Check for the above tuning option when processing loads.
20310 2023-04-17 Richard Biener <rguenther@suse.de>
20312 PR tree-optimization/109524
20313 * tree-vrp.cc (remove_unreachable::m_list): Change to a
20314 vector of pairs of block indices.
20315 (remove_unreachable::maybe_register_block): Adjust.
20316 (remove_unreachable::remove_and_update_globals): Likewise.
20317 Deal with removed blocks.
20319 2023-04-16 Jeff Law <jlaw@ventanamicro>
20322 * config/riscv/riscv.cc (riscv_expand_conditional_move): For
20323 TARGET_SFB_ALU, force the true arm into a register.
20325 2023-04-15 John David Anglin <danglin@gcc.gnu.org>
20328 * config/pa/pa-protos.h (pa_function_arg_size): Update prototype.
20329 * config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument
20331 (pa_arg_partial_bytes): Don't call pa_function_arg_size twice.
20332 (pa_function_arg_size): Change return type to int. Return zero
20333 for arguments larger than 1 GB. Update comments.
20335 2023-04-15 Jakub Jelinek <jakub@redhat.com>
20337 PR tree-optimization/109154
20338 * tree-if-conv.cc (predicate_scalar_phi): For complex PHIs, emit just
20339 args_len - 1 COND_EXPRs rather than args_len. Formatting fix.
20341 2023-04-15 Jason Merrill <jason@redhat.com>
20344 * gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
20345 Overhaul lhs_ref.ref analysis.
20347 2023-04-14 Richard Biener <rguenther@suse.de>
20349 PR tree-optimization/109502
20350 * tree-vect-stmts.cc (vectorizable_assignment): Fix
20351 check for conversion between mask and non-mask types.
20353 2023-04-14 Jeff Law <jlaw@ventanamicro.com>
20354 Jakub Jelinek <jakub@redhat.com>
20358 * combine.cc (simplify_and_const_int_1): Compute nonzero_bits in
20359 word_mode rather than mode if WORD_REGISTER_OPERATIONS and mode is
20360 smaller than word_mode.
20361 * simplify-rtx.cc (simplify_context::simplify_binary_operation_1)
20362 <case AND>: Likewise.
20364 2023-04-14 Jakub Jelinek <jakub@redhat.com>
20366 * loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
20369 2023-04-13 Andrew MacLeod <amacleod@redhat.com>
20371 PR tree-optimization/108139
20372 PR tree-optimization/109462
20373 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Remove
20374 equivalency check for PHI nodes.
20375 * gimple-range-fold.cc (fold_using_range::range_of_phi): Ensure def
20376 does not dominate single-arg equivalency edges.
20378 2023-04-13 Richard Sandiford <richard.sandiford@arm.com>
20381 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
20382 not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
20384 2023-04-13 Richard Biener <rguenther@suse.de>
20386 PR tree-optimization/109491
20387 * tree-ssa-sccvn.cc (expressions_equal_p): Restore the
20388 NULL operands test.
20390 2023-04-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20393 * config/riscv/riscv-vector-builtins-types.def (vint8mf8_t): Fix predicate.
20394 (vint16mf4_t): Ditto.
20395 (vint32mf2_t): Ditto.
20396 (vint64m1_t): Ditto.
20397 (vint64m2_t): Ditto.
20398 (vint64m4_t): Ditto.
20399 (vint64m8_t): Ditto.
20400 (vuint8mf8_t): Ditto.
20401 (vuint16mf4_t): Ditto.
20402 (vuint32mf2_t): Ditto.
20403 (vuint64m1_t): Ditto.
20404 (vuint64m2_t): Ditto.
20405 (vuint64m4_t): Ditto.
20406 (vuint64m8_t): Ditto.
20407 (vfloat32mf2_t): Ditto.
20408 (vbool64_t): Ditto.
20409 * config/riscv/riscv-vector-builtins.cc (register_builtin_type): Add comments.
20410 (register_vector_type): Ditto.
20411 (check_required_extensions): Fix condition.
20412 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ZVE64): Remove it.
20413 (RVV_REQUIRE_ELEN_64): New define.
20414 (RVV_REQUIRE_MIN_VLEN_64): Ditto.
20415 * config/riscv/riscv-vector-switch.def (TARGET_VECTOR_FP32): Remove it.
20416 (TARGET_VECTOR_FP64): Ditto.
20417 (ENTRY): Fix predicate.
20418 * config/riscv/vector-iterators.md: Fix predicate.
20420 2023-04-12 Jakub Jelinek <jakub@redhat.com>
20422 PR tree-optimization/109410
20423 * tree-ssa-reassoc.cc (build_and_add_sum): Split edge from entry
20424 block if first statement of the function is a call to returns_twice
20427 2023-04-12 Jakub Jelinek <jakub@redhat.com>
20430 * config/i386/i386.cc: Include rtl-error.h.
20431 (ix86_print_operand): For z modifier warning, use warning_for_asm
20432 if this_is_asm_operands. For Z modifier errors, use %c and code
20433 instead of hardcoded Z.
20435 2023-04-12 Costas Argyris <costas.argyris@gmail.com>
20437 * config/i386/x-mingw32-utf8: Remove extrataneous $@
20439 2023-04-12 Andrew MacLeod <amacleod@redhat.com>
20441 PR tree-optimization/109462
20442 * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
20443 check for equivalences if NAME is a phi node.
20445 2023-04-12 Richard Biener <rguenther@suse.de>
20447 PR tree-optimization/109473
20448 * tree-vect-loop.cc (vect_create_epilog_for_reduction):
20449 Convert scalar result to the computation type before performing
20450 the reduction adjustment.
20452 2023-04-12 Richard Biener <rguenther@suse.de>
20454 PR tree-optimization/109469
20455 * tree-vect-slp.cc (vect_slp_function): Skip region starts with
20456 a returns-twice call.
20458 2023-04-12 Richard Biener <rguenther@suse.de>
20460 PR tree-optimization/109434
20461 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly
20462 handle possibly throwing calls when processing the LHS
20463 and may-defs are not OK.
20465 2023-04-11 Lin Sinan <mynameisxiaou@gmail.com>
20467 * config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
20468 predicate to avoid splitting arith constants.
20470 2023-04-11 Yanzhang Wang <yanzhang.wang@intel.com>
20471 Pan Li <pan2.li@intel.com>
20472 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20473 Kito Cheng <kito.cheng@sifive.com>
20476 * config/riscv/riscv-protos.h (emit_hard_vlmax_vsetvl): New.
20477 * config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): New.
20478 (emit_vlmax_vsetvl): Use emit_hard_vlmax_vsetvl.
20479 * config/riscv/riscv.cc (vector_zero_call_used_regs): New.
20480 (riscv_zero_call_used_regs): New.
20481 (TARGET_ZERO_CALL_USED_REGS): New.
20483 2023-04-11 Martin Liska <mliska@suse.cz>
20486 * opts.cc (finish_options): Drop also
20487 x_flag_var_tracking_assignments.
20489 2023-04-11 Andre Vieira <andre.simoesdiasvieira@arm.com>
20491 PR tree-optimization/108888
20492 * tree-if-conv.cc (predicate_statements): Fix gimple call check.
20494 2023-04-11 Haochen Gui <guihaoc@gcc.gnu.org>
20497 * config/rs6000/vsx.md (vsx_sign_extend_qi_<mode>): Rename to...
20498 (vsx_sign_extend_v16qi_<mode>): ... this.
20499 (vsx_sign_extend_hi_<mode>): Rename to...
20500 (vsx_sign_extend_v8hi_<mode>): ... this.
20501 (vsx_sign_extend_si_v2di): Rename to...
20502 (vsx_sign_extend_v4si_v2di): ... this.
20503 (vsignextend_qi_<mode>): Remove.
20504 (vsignextend_hi_<mode>): Remove.
20505 (vsignextend_si_v2di): Remove.
20506 (vsignextend_v2di_v1ti): Remove.
20507 (*xxspltib_<mode>_split): Replace gen_vsx_sign_extend_qi_v2di with
20508 gen_vsx_sign_extend_v16qi_v2di and gen_vsx_sign_extend_qi_v4si
20509 with gen_vsx_sign_extend_v16qi_v4si.
20510 * config/rs6000/rs6000.md (split for DI constant generation):
20511 Replace gen_vsx_sign_extend_qi_si with gen_vsx_sign_extend_v16qi_si.
20512 (split for HSDI constant generation): Replace gen_vsx_sign_extend_qi_di
20513 with gen_vsx_sign_extend_v16qi_di and gen_vsx_sign_extend_qi_si
20514 with gen_vsx_sign_extend_v16qi_si.
20515 * config/rs6000/rs6000-builtins.def (__builtin_altivec_vsignextsb2d):
20516 Set bif-pattern to vsx_sign_extend_v16qi_v2di.
20517 (__builtin_altivec_vsignextsb2w): Set bif-pattern to
20518 vsx_sign_extend_v16qi_v4si.
20519 (__builtin_altivec_visgnextsh2d): Set bif-pattern to
20520 vsx_sign_extend_v8hi_v2di.
20521 (__builtin_altivec_vsignextsh2w): Set bif-pattern to
20522 vsx_sign_extend_v8hi_v4si.
20523 (__builtin_altivec_vsignextsw2d): Set bif-pattern to
20524 vsx_sign_extend_si_v2di.
20525 (__builtin_altivec_vsignext): Set bif-pattern to
20526 vsx_sign_extend_v2di_v1ti.
20527 * config/rs6000/rs6000-builtin.cc (lxvrse_expand_builtin): Replace
20528 gen_vsx_sign_extend_qi_v2di with gen_vsx_sign_extend_v16qi_v2di,
20529 gen_vsx_sign_extend_hi_v2di with gen_vsx_sign_extend_v8hi_v2di and
20530 gen_vsx_sign_extend_si_v2di with gen_vsx_sign_extend_v4si_v2di.
20532 2023-04-10 Michael Meissner <meissner@linux.ibm.com>
20535 * config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
20536 (vsx_nfmsv4sf4): Do not generate vnmsubfp.
20538 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
20540 * config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
20542 2023-04-10 Haochen Jiang <haochen.jiang@intel.com>
20544 * common/config/i386/cpuinfo.h (get_available_features):
20545 Detect AMX-COMPLEX.
20546 * common/config/i386/i386-common.cc
20547 (OPTION_MASK_ISA2_AMX_COMPLEX_SET,
20548 OPTION_MASK_ISA2_AMX_COMPLEX_UNSET): New.
20549 (ix86_handle_option): Handle -mamx-complex.
20550 * common/config/i386/i386-cpuinfo.h (enum processor_features):
20551 Add FEATURE_AMX_COMPLEX.
20552 * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
20554 * config.gcc: Add amxcomplexintrin.h.
20555 * config/i386/cpuid.h (bit_AMX_COMPLEX): New.
20556 * config/i386/i386-c.cc (ix86_target_macros_internal): Define
20558 * config/i386/i386-isa.def (AMX_COMPLEX): Add DEF_PTA(AMX_COMPLEX).
20559 * config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
20560 Handle amx-complex.
20561 * config/i386/i386.opt: Add option -mamx-complex.
20562 * config/i386/immintrin.h: Include amxcomplexintrin.h.
20563 * doc/extend.texi: Document amx-complex.
20564 * doc/invoke.texi: Document -mamx-complex.
20565 * doc/sourcebuild.texi: Document target amx-complex.
20566 * config/i386/amxcomplexintrin.h: New file.
20568 2023-04-08 Jakub Jelinek <jakub@redhat.com>
20570 PR tree-optimization/109392
20571 * tree-vect-generic.cc (tree_vec_extract): Handle failure
20572 of maybe_push_res_to_seq better.
20574 2023-04-08 Jakub Jelinek <jakub@redhat.com>
20576 * Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
20578 (SYSTEM_H): Depend on $(HASHTAB_H).
20579 * config/riscv/t-riscv (build/genrvv-type-indexer.o): Remove unused
20580 dependency on $(RTL_BASE_H), remove redundant dependency on
20583 2023-04-06 Richard Earnshaw <rearnsha@arm.com>
20586 * config/arm/arm.cc (arm_effective_regno): New function.
20587 (mve_vector_mem_operand): Use it.
20589 2023-04-06 Andrew MacLeod <amacleod@redhat.com>
20591 PR tree-optimization/109417
20592 * gimple-range-gori.cc (gori_compute::may_recompute_p): Check if
20593 dependency is in SSA_NAME_FREE_LIST.
20595 2023-04-06 Andrew Pinski <apinski@marvell.com>
20597 PR tree-optimization/109427
20598 * params.opt (-param=vect-induction-float=):
20599 Fix option attribute typo for IntegerRange.
20601 2023-04-05 Jeff Law <jlaw@ventanamicro>
20604 * combine.cc (combine_instructions): Force re-recognition when
20605 after restoring the body of an insn to its original form.
20607 2023-04-05 Martin Jambor <mjambor@suse.cz>
20610 * ipa-sra.cc (zap_useless_ipcp_results): New function.
20611 (process_isra_node_results): Call it.
20613 2023-04-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
20615 * config/riscv/vector.md: Fix incorrect operand order.
20617 2023-04-05 Juzhe-Zhong <juzhe.zhong@rivai.ai>
20619 * config/riscv/riscv-vsetvl.cc
20620 (pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
20623 2023-04-05 Li Xu <xuli1@eswincomputing.com>
20625 * config/riscv/riscv-vector-builtins.def: Fix typo.
20626 * config/riscv/riscv.cc (riscv_dwarf_poly_indeterminate_value): Ditto.
20627 * config/riscv/vector-iterators.md: Ditto.
20629 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
20631 * doc/md.texi (Including Patterns): Fix page break.
20633 2023-04-04 Jakub Jelinek <jakub@redhat.com>
20635 PR tree-optimization/109386
20636 * range-op-float.cc (foperator_lt::op1_range, foperator_lt::op2_range,
20637 foperator_le::op1_range, foperator_le::op2_range,
20638 foperator_gt::op1_range, foperator_gt::op2_range,
20639 foperator_ge::op1_range, foperator_ge::op2_range): Make r varying for
20640 BRS_FALSE case even if the other op is maybe_isnan, not just
20642 (foperator_unordered_lt::op1_range, foperator_unordered_lt::op2_range,
20643 foperator_unordered_le::op1_range, foperator_unordered_le::op2_range,
20644 foperator_unordered_gt::op1_range, foperator_unordered_gt::op2_range,
20645 foperator_unordered_ge::op1_range, foperator_unordered_ge::op2_range):
20646 Make r varying for BRS_TRUE case even if the other op is maybe_isnan,
20647 not just known_isnan.
20649 2023-04-04 Marek Polacek <polacek@redhat.com>
20651 PR sanitizer/109107
20652 * fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
20654 * match.pd: Use TYPE_OVERFLOW_SANITIZED.
20656 2023-04-04 Stam Markianos-Wright <stam.markianos-wright@arm.com>
20658 * config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
20659 (mve_vcreateq_f<mode>): Swap operands.
20661 2023-04-04 Andrew Stubbs <ams@codesourcery.com>
20663 * config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
20665 2023-04-04 Jakub Jelinek <jakub@redhat.com>
20668 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
20669 Reword diagnostics about zfinx conflict with f, formatting fixes.
20671 2023-04-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
20673 * config/sol2.h (LIB_SPEC): Don't link with -lpthread.
20675 2023-04-04 Richard Biener <rguenther@suse.de>
20677 PR tree-optimization/109304
20678 * tree-profile.cc (tree_profiling): Use symtab node
20679 availability to decide whether to skip adjusting calls.
20680 Do not adjust calls to internal functions.
20682 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
20685 * config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
20686 function for permutation control vector by considering big endianness.
20688 2023-04-04 Kewen Lin <linkw@linux.ibm.com>
20691 * config/rs6000/altivec.md (*p9v_parity<mode>2): Rename to ...
20692 (rs6000_vprtyb<mode>2): ... this.
20693 * config/rs6000/rs6000-builtins.def (VPRTYBD): Replace parityv2di2 with
20694 rs6000_vprtybv2di2.
20695 (VPRTYBW): Replace parityv4si2 with rs6000_vprtybv4si2.
20696 (VPRTYBQ): Replace parityv1ti2 with rs6000_vprtybv1ti2.
20697 * config/rs6000/vector.md (parity<mode>2 with VEC_IP): Expand with
20698 popcountv16qi2 and the corresponding rs6000_vprtyb<mode>2.
20700 2023-04-04 Hans-Peter Nilsson <hp@axis.com>
20701 Sandra Loosemore <sandra@codesourcery.com>
20703 * doc/md.texi (Insn Splitting): Tweak wording for readability.
20705 2023-04-03 Martin Jambor <mjambor@suse.cz>
20708 * ipa-prop.cc (determine_known_aggregate_parts): Check that the
20709 offset + size will be representable in unsigned int.
20711 2023-04-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
20713 * configure.ac (ZSTD_LIB): Move before zstd.h check.
20714 Unset gcc_cv_header_zstd_h without libzstd.
20715 * configure: Regenerate.
20717 2023-04-03 Martin Liska <mliska@suse.cz>
20719 * doc/invoke.texi: Document new param.
20721 2023-04-03 Cupertino Miranda <cupertino.miranda@oracle.com>
20723 * doc/sourcebuild.texi (const_volatile_readonly_section): Document
20724 new check_effective_target function.
20726 2023-04-03 Li Xu <xuli1@eswincomputing.com>
20728 * config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
20729 (vfloat32m8_t): Likewise
20731 2023-04-03 liuhongt <hongtao.liu@intel.com>
20733 * doc/md.texi: Document signbitm2.
20735 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
20736 kito-cheng <kito.cheng@sifive.com>
20738 * config/riscv/vector.md: Fix RA constraint.
20740 2023-04-02 Juzhe-Zhong <juzhe.zhong@rivai.ai>
20742 * config/riscv/riscv-protos.h (gen_avl_for_scalar_move): New function.
20743 * config/riscv/riscv-v.cc (gen_avl_for_scalar_move): New function.
20744 * config/riscv/vector.md: Fix scalar move bug.
20746 2023-04-01 Jakub Jelinek <jakub@redhat.com>
20748 * range-op-float.cc (foperator_equal::fold_range): If at least
20749 one of the op ranges is not singleton and neither is NaN and all
20750 4 bounds are zero, return [1, 1].
20751 (foperator_not_equal::fold_range): In the same case return [0, 0].
20753 2023-04-01 Jakub Jelinek <jakub@redhat.com>
20755 * range-op-float.cc (foperator_equal::fold_range): Perform the
20756 non-singleton handling regardless of maybe_isnan (op1, op2).
20757 (foperator_not_equal::fold_range): Likewise.
20758 (foperator_lt::fold_range, foperator_le::fold_range,
20759 foperator_gt::fold_range, foperator_ge::fold_range): Perform the
20760 real_* comparison check which results in range_false (type)
20761 even if maybe_isnan (op1, op2). Simplify.
20762 (foperator_ltgt): New class.
20763 (fop_ltgt): New variable.
20764 (floating_op_table::floating_op_table): Handle LTGT_EXPR using
20767 2023-04-01 Jakub Jelinek <jakub@redhat.com>
20770 * builtins.cc (apply_args_size): If targetm.calls.get_raw_arg_mode
20771 returns VOIDmode, handle it like if the register isn't used for
20772 passing arguments at all.
20773 (apply_result_size): If targetm.calls.get_raw_result_mode returns
20774 VOIDmode, handle it like if the register isn't used for returning
20776 * target.def (get_raw_result_mode, get_raw_arg_mode): Document what it
20777 means to return VOIDmode.
20778 * doc/tm.texi: Regenerated.
20779 * config/aarch64/aarch64.cc (aarch64_function_value_regno_p): Return
20780 TARGET_SVE for P0_REGNUM.
20781 (aarch64_function_arg_regno_p): Also return true for p0-p3.
20782 (aarch64_get_reg_raw_mode): Return VOIDmode for PR_REGNUM_P regs.
20784 2023-03-31 Vladimir N. Makarov <vmakarov@redhat.com>
20786 * lra-constraints.cc: (combine_reload_insn): New function.
20788 2023-03-31 Jakub Jelinek <jakub@redhat.com>
20790 PR tree-optimization/91645
20791 * range-op-float.cc (foperator_unordered_lt::fold_range,
20792 foperator_unordered_le::fold_range,
20793 foperator_unordered_gt::fold_range,
20794 foperator_unordered_ge::fold_range,
20795 foperator_unordered_equal::fold_range): Call the ordered
20796 fold_range on ranges with cleared NaNs.
20797 * value-query.cc (range_query::get_tree_range): Handle also
20798 COMPARISON_CLASS_P trees.
20800 2023-03-31 Kito Cheng <kito.cheng@sifive.com>
20801 Andrew Pinski <pinskia@gmail.com>
20804 * config/riscv/t-riscv: Add missing dependencies.
20806 2023-03-31 liuhongt <hongtao.liu@intel.com>
20808 * config/i386/i386.cc (inline_memory_move_cost): Return 100
20809 for MASK_REGS when MODE_SIZE > 8.
20811 2023-03-31 liuhongt <hongtao.liu@intel.com>
20814 * config/i386/i386-builtin.def (BDESC): Adjust icode name from
20815 ufloat/ufix to floatuns/fixuns.
20816 * config/i386/i386-expand.cc
20817 (ix86_expand_vector_convert_uns_vsivsf): Adjust comments.
20818 * config/i386/sse.md
20819 (ufloat<sseintvecmodelower><mode>2<mask_name><round_name>):
20821 (<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
20822 (<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
20824 (<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
20826 (<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
20828 (fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):.. this.
20829 (ufloat<si2dfmodelower><mode>2<mask_name>): Renamed to ..
20830 (floatuns<si2dfmodelower><mode>2<mask_name>): .. this.
20831 (ufloatv2siv2df2<mask_name>): Renamed to ..
20832 (<mask_codefor>floatunsv2siv2df2<mask_name>): .. this.
20833 (ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
20835 (fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
20837 (ufix_notruncv2dfv2si2): Renamed to ..
20838 (fixuns_notruncv2dfv2si2):.. this.
20839 (ufix_notruncv2dfv2si2_mask): Renamed to ..
20840 (fixuns_notruncv2dfv2si2_mask): .. this.
20841 (*ufix_notruncv2dfv2si2_mask_1): Renamed to ..
20842 (*fixuns_notruncv2dfv2si2_mask_1): .. this.
20843 (ufix_truncv2dfv2si2): Renamed to ..
20844 (*fixuns_truncv2dfv2si2): .. this.
20845 (ufix_truncv2dfv2si2_mask): Renamed to ..
20846 (fixuns_truncv2dfv2si2_mask): .. this.
20847 (*ufix_truncv2dfv2si2_mask_1): Renamed to ..
20848 (*fixuns_truncv2dfv2si2_mask_1): .. this.
20849 (ufix_truncv4dfv4si2<mask_name>): Renamed to ..
20850 (fixuns_truncv4dfv4si2<mask_name>): .. this.
20851 (ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
20853 (fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
20855 (ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
20856 (<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
20859 2023-03-30 Andrew MacLeod <amacleod@redhat.com>
20861 PR tree-optimization/109154
20862 * gimple-range-gori.cc (gori_compute::may_recompute_p): Add depth limit.
20863 * gimple-range-gori.h (may_recompute_p): Add depth param.
20864 * params.opt (ranger-recompute-depth): New param.
20866 2023-03-30 Jason Merrill <jason@redhat.com>
20870 * cgraph.h: Move reset() from cgraph_node to symtab_node.
20871 * cgraphunit.cc (symtab_node::reset): Adjust. Also call
20872 remove_from_same_comdat_group.
20874 2023-03-30 Richard Biener <rguenther@suse.de>
20876 PR tree-optimization/107561
20877 * gimple-ssa-warn-access.cc (get_size_range): Add flags
20878 argument and pass it on.
20879 (check_access): When querying for the size range pass
20880 SR_ALLOW_ZERO when the known destination size is zero.
20882 2023-03-30 Richard Biener <rguenther@suse.de>
20884 PR tree-optimization/109342
20885 * tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New
20886 overload for edge. When that edge is a backedge use
20887 dominated_by_p directly.
20889 2023-03-30 liuhongt <hongtao.liu@intel.com>
20891 * config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
20892 vpblendd instead of vpblendw for V4SI under avx2.
20894 2023-03-29 Hans-Peter Nilsson <hp@axis.com>
20896 * config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
20897 for many quick operands, for register-sized modes.
20899 2023-03-29 Jiawei <jiawei@iscas.ac.cn>
20901 * common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
20904 2023-03-29 Martin Liska <mliska@suse.cz>
20906 PR bootstrap/109310
20907 * configure.ac: Emit a warning for deprecated option
20908 --enable-link-mutex.
20909 * configure: Regenerate.
20911 2023-03-29 Richard Biener <rguenther@suse.de>
20913 PR tree-optimization/109331
20914 * tree-ssa-forwprop.cc (pass_forwprop::execute): When we
20915 discover a taken edge make sure to cleanup the CFG.
20917 2023-03-29 Richard Biener <rguenther@suse.de>
20919 PR tree-optimization/109327
20920 * tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
20921 already removed stmts when draining to_remove.
20923 2023-03-29 Richard Biener <rguenther@suse.de>
20926 * dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
20927 so we can re-create the DIE for the type if required.
20929 2023-03-29 Jakub Jelinek <jakub@redhat.com>
20930 Richard Biener <rguenther@suse.de>
20932 PR tree-optimization/109301
20933 * tree-ssa-math-opts.cc (pass_data_cse_sincos): Change
20934 properties_provided from PROP_gimple_opt_math to 0.
20935 (pass_data_expand_powcabs): Change properties_provided from 0 to
20936 PROP_gimple_opt_math.
20938 2023-03-29 Richard Biener <rguenther@suse.de>
20940 PR tree-optimization/109154
20941 * tree-if-conv.cc (gen_phi_arg_condition): Handle single
20942 inverted condition specially by inverting at the caller.
20943 (gen_phi_arg_condition): Swap COND_EXPR arms if requested.
20945 2023-03-28 David Malcolm <dmalcolm@redhat.com>
20948 * diagnostic-show-locus.cc (column_range::column_range): Factor
20949 out assertion conditional into...
20950 (column_range::valid_p): ...this new function.
20951 (line_corrections::add_hint): Don't attempt to consolidate hints
20952 if it would lead to invalid column_range instances.
20954 2023-03-28 Kito Cheng <kito.cheng@sifive.com>
20957 * config/riscv/riscv-c.cc (riscv_ext_version_value): New.
20958 (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
20961 2023-03-28 Alexander Monakov <amonakov@ispras.ru>
20963 PR rtl-optimization/109187
20964 * haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
20965 subtraction in three-way comparison.
20967 2023-03-28 Andrew MacLeod <amacleod@redhat.com>
20969 PR tree-optimization/109265
20970 PR tree-optimization/109274
20971 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
20972 not create a relation record is op1 and op2 are the same symbol.
20973 (gori_compute::compute_operand1_range): Pass op1 == op2 to the
20974 handler for this stmt, but create a new record only if this statement
20975 generates a relation based on the ranges.
20976 (gori_compute::compute_operand2_range): Ditto.
20977 * value-relation.h (value_relation::set_relation): Always create the
20978 record that is requested.
20980 2023-03-28 Richard Biener <rguenther@suse.de>
20982 PR tree-optimization/107087
20983 * tree-ssa-forwprop.cc (pass_forwprop::execute): Track
20984 executable regions to avoid useless work and to better
20985 propagate degenerate PHIs.
20987 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
20989 * config/i386/x-mingw32-utf8: update comments.
20991 2023-03-28 Richard Sandiford <richard.sandiford@arm.com>
20994 * config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
20995 * config/aarch64/aarch64.h (machine_function::vector_load_decls): New
20997 * config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
20999 (aarch64_general_gimple_fold_builtin): Delay folding of vld1 until
21000 after inlining. Record which decls are loaded from. Fix handling
21001 of vops for loads and stores.
21002 * config/aarch64/aarch64.cc (aarch64_vector_load_decl): New function.
21003 (aarch64_accesses_vector_load_decl_p): Likewise.
21004 (aarch64_vector_costs::m_stores_to_vector_load_decl): New member
21006 (aarch64_vector_costs::add_stmt_cost): If the function has a vld1
21007 that loads from a decl, treat vector stores to those decls as
21009 (aarch64_vector_costs::finish_cost): ...and in that case,
21010 if the vector code does nothing more than a store, give the
21011 prologue a zero cost as well.
21013 2023-03-28 Richard Biener <rguenther@suse.de>
21016 PR tree-optimization/108129
21017 * genmatch.cc (lower_for): For (match ...) delay
21018 substituting into the match operator if possible.
21019 (dt_operand::gen_gimple_expr): For user_id look at the
21020 first substitute for determining how to access operands.
21021 (dt_operand::gen_generic_expr): Likewise.
21022 (dt_node::gen_kids): Properly sort user_ids according
21023 to their substitutes.
21024 (dt_node::gen_kids_1): Code-generate user_id matching.
21026 2023-03-28 Jakub Jelinek <jakub@redhat.com>
21027 Jonathan Wakely <jwakely@redhat.com>
21029 * gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
21030 Use subcommand rather than sub-command in function comments.
21032 2023-03-28 Jakub Jelinek <jakub@redhat.com>
21034 PR tree-optimization/109154
21035 * value-range.h (frange::flush_denormals_to_zero): Make it public
21036 rather than private.
21037 * value-range.cc (frange::set): Don't call flush_denormals_to_zero
21039 * range-op-float.cc (range_operator_float::fold_range): Call
21040 flush_denormals_to_zero.
21042 2023-03-28 Jakub Jelinek <jakub@redhat.com>
21044 PR middle-end/106190
21045 * sanopt.cc (pass_sanopt::execute): Return TODO_cleanup_cfg if any
21046 of the IFN_{UB,HWA,A}SAN_* internal fns are lowered.
21048 2023-03-28 Jakub Jelinek <jakub@redhat.com>
21050 * range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state
21051 as 4th argument to set to avoid clear_nan and union_ calls.
21053 2023-03-28 Jakub Jelinek <jakub@redhat.com>
21056 * config/i386/i386.cc (assign_386_stack_local): For DImode
21057 with SLOT_FLOATxFDI_387 and -m32 -mpreferred-stack-boundary=2 pass
21058 align 32 rather than 0 to assign_stack_local.
21060 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
21063 * config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition
21064 on operand #3 to get the final condition code. Use std::swap.
21065 * config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander.
21066 (fucmp<gcond:code>8<P:mode>_vis): Move around.
21067 (fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise.
21068 (vcondu<GCM:mode><GCM:mode>): New VIS 4 expander.
21070 2023-03-28 Eric Botcazou <ebotcazou@adacore.com>
21072 * doc/gm2.texi: Add missing Next, Previous and Top fields to most
21073 top-level sections.
21075 2023-03-28 Costas Argyris <costas.argyris@gmail.com>
21077 * config.host: Pull in i386/x-mingw32-utf8 Makefile
21078 fragment and reference utf8rc-mingw32.o explicitly
21080 * config/i386/sym-mingw32.cc: prevent name mangling of
21082 * config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
21083 depend on manifest file explicitly.
21085 2023-03-28 Richard Biener <rguenther@suse.de>
21088 2023-03-27 Richard Biener <rguenther@suse.de>
21090 PR rtl-optimization/109237
21091 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
21093 2023-03-28 Richard Biener <rguenther@suse.de>
21095 * common.opt (gdwarf): Remove Negative(gdwarf-).
21097 2023-03-28 Richard Biener <rguenther@suse.de>
21099 * common.opt (gdwarf): Add RejectNegative.
21100 (gdwarf-): Likewise.
21104 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
21106 * config/cris/constraints.md ("T"): Correct to
21107 define_memory_constraint.
21109 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
21111 * config/cris/cris.md (BW2): New mode-iterator.
21112 (lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
21115 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
21117 * config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
21118 for possible eliminable compares.
21120 2023-03-28 Hans-Peter Nilsson <hp@axis.com>
21122 * config/cris/constraints.md ("R"): Remove unused constraint.
21124 2023-03-27 Jonathan Wakely <jwakely@redhat.com>
21126 PR gcov-profile/109297
21127 * gcov-tool.cc (merge_usage): Fix "subcomand" typo.
21128 (merge_stream_usage): Likewise.
21129 (overlap_usage): Likewise.
21131 2023-03-27 Christoph Müllner <christoph.muellner@vrull.eu>
21134 * config/riscv/thead.md: Add missing mode specifiers.
21136 2023-03-27 Philipp Tomsich <philipp.tomsich@vrull.eu>
21137 Jiangning Liu <jiangning.liu@amperecomputing.com>
21138 Manolis Tsamis <manolis.tsamis@vrull.eu>
21140 * config/aarch64/aarch64.cc: Update vector costs for ampere1.
21142 2023-03-27 Richard Biener <rguenther@suse.de>
21144 PR rtl-optimization/109237
21145 * cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
21147 2023-03-27 Richard Biener <rguenther@suse.de>
21150 * lto-wrapper.cc (run_gcc): Parse alternate debug options
21151 as well, they always enable debug.
21153 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
21156 * config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
21158 (_mm_slli_si128): ... here. Change to call _mm_bslli_si128 directly.
21160 2023-03-27 Kewen Lin <linkw@linux.ibm.com>
21163 * config/rs6000/emmintrin.h (_mm_bslli_si128): Check __N is not less
21164 than zero when calling vec_sld.
21165 (_mm_bsrli_si128): Return __A if __N is zero, check __N is bigger than
21166 zero when calling vec_sld.
21167 (_mm_slli_si128): Return __A if _imm5 is zero, check _imm5 is bigger
21168 than zero when calling vec_sld.
21170 2023-03-27 Sandra Loosemore <sandra@codesourcery.com>
21172 * doc/generic.texi (OpenMP): Document OMP_SIMD, OMP_DISTRIBUTE,
21173 OMP_TASKLOOP, and OMP_LOOP with OMP_FOR. Document how collapsed
21174 loops are represented and which fields are vectors. Add
21175 documentation for OMP_FOR_PRE_BODY field. Document internal
21176 form of non-rectangular loops and OMP_FOR_NON_RECTANGULAR.
21177 * tree.def (OMP_FOR): Make documentation consistent with the
21178 Texinfo manual, to fill some gaps and correct errors.
21180 2023-03-26 Andreas Schwab <schwab@linux-m68k.org>
21183 * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
21184 * config/m68k/m68k.cc (m68k_final_prescan_insn): Define.
21185 (handle_move_double): Call it before handle_movsi.
21186 * config/m68k/m68k-protos.h: Declare it.
21188 2023-03-26 Jakub Jelinek <jakub@redhat.com>
21190 PR tree-optimization/109230
21191 * match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
21193 2023-03-26 Jakub Jelinek <jakub@redhat.com>
21196 * predict.cc (compute_function_frequency): Don't call
21197 warn_function_cold if function already has cold attribute.
21199 2023-03-26 Gerald Pfeifer <gerald@pfeifer.com>
21201 * doc/install.texi: Remove anachronistic note
21202 related to languages built and separate source tarballs.
21204 2023-03-25 David Malcolm <dmalcolm@redhat.com>
21207 * diagnostic-format-sarif.cc (read_until_eof): Delete.
21208 (maybe_read_file): Delete.
21209 (sarif_builder::maybe_make_artifact_content_object): Use
21210 get_source_file_content rather than maybe_read_file.
21211 Reject it if it's not valid UTF-8.
21212 * input.cc (file_cache_slot::get_full_file_content): New.
21213 (get_source_file_content): New.
21214 (selftest::check_cpp_valid_utf8_p): New.
21215 (selftest::test_cpp_valid_utf8_p): New.
21216 (selftest::input_cc_tests): Call selftest::test_cpp_valid_utf8_p.
21217 * input.h (get_source_file_content): New prototype.
21219 2023-03-24 David Malcolm <dmalcolm@redhat.com>
21221 * doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
21223 (Special Functions for Debugging the Analyzer): Convert to a
21224 table, and rewrite in places.
21225 (Other Debugging Techniques): Add notes on how to compare two
21226 different exploded graphs.
21228 2023-03-24 David Malcolm <dmalcolm@redhat.com>
21231 * json.cc: Update comments to indicate that we now preserve
21232 insertion order of keys within objects.
21233 (object::print): Traverse keys in insertion order.
21234 (object::set): Preserve insertion order of keys.
21235 (selftest::test_writing_objects): Add an additional key to verify
21236 that we preserve insertion order.
21237 * json.h (object::m_keys): New field.
21239 2023-03-24 Andrew MacLeod <amacleod@redhat.com>
21241 PR tree-optimization/109238
21242 * gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
21243 predecessors which this block dominates.
21245 2023-03-24 Richard Biener <rguenther@suse.de>
21247 PR tree-optimization/106912
21248 * tree-profile.cc (tree_profiling): Update stmts only when
21249 profiling or testing coverage. Make sure to update calls
21250 fntype, stripping 'const' there.
21252 2023-03-24 Jakub Jelinek <jakub@redhat.com>
21254 PR middle-end/109258
21255 * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
21256 if target == const0_rtx.
21258 2023-03-24 Alexandre Oliva <oliva@adacore.com>
21260 * doc/sourcebuild.texi (weak_undefined, posix_memalign):
21261 Document options and effective targets.
21263 2023-03-24 Costas Argyris <costas.argyris@gmail.com>
21265 * config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
21268 2023-03-23 Pat Haugen <pthaugen@linux.ibm.com>
21270 * config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
21271 non-earlyclobber alternative.
21273 2023-03-23 Andrew Pinski <apinski@marvell.com>
21276 * fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
21279 2023-03-23 Richard Biener <rguenther@suse.de>
21281 PR tree-optimization/107569
21282 * tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
21283 Do not push SSA names with zero uses as available leader.
21284 (process_bb): Likewise.
21286 2023-03-23 Richard Biener <rguenther@suse.de>
21288 PR tree-optimization/109262
21289 * tree-ssa-forwprop.cc (pass_forwprop::execute): When
21290 combining a piecewise complex load avoid touching loads
21291 that throw internally. Use fun, not cfun throughout.
21293 2023-03-23 Jakub Jelinek <jakub@redhat.com>
21295 * value-range.cc (irange::irange_union, irange::intersect): Fix
21296 comment spelling bugs.
21297 * gimple-range-trace.cc (range_tracer::do_header): Likewise.
21298 * gimple-range-trace.h: Likewise.
21299 * gimple-range-edge.cc: Likewise.
21300 (gimple_outgoing_range_stmt_p,
21301 gimple_outgoing_range::switch_edge_range,
21302 gimple_outgoing_range::edge_range_p): Likewise.
21303 * gimple-range.cc (gimple_ranger::prefill_stmt_dependencies,
21304 gimple_ranger::fold_stmt, gimple_ranger::register_transitive_infer,
21305 assume_query::assume_query, assume_query::calculate_phi): Likewise.
21306 * gimple-range-edge.h: Likewise.
21307 * value-range.h (Value_Range::set, Value_Range::lower_bound,
21308 Value_Range::upper_bound, frange::set_undefined): Likewise.
21309 * gimple-range-gori.h (range_def_chain::depend, gori_map::m_outgoing,
21310 gori_compute): Likewise.
21311 * gimple-range-fold.h (fold_using_range): Likewise.
21312 * gimple-range-path.cc (path_range_query::compute_ranges_in_phis):
21314 * gimple-range-gori.cc (range_def_chain::in_chain_p,
21315 range_def_chain::dump, gori_map::calculate_gori,
21316 gori_compute::compute_operand_range_switch,
21317 gori_compute::logical_combine, gori_compute::refine_using_relation,
21318 gori_compute::compute_operand1_range, gori_compute::may_recompute_p):
21320 * gimple-range.h: Likewise.
21321 (enable_ranger): Likewise.
21322 * range-op.h (empty_range_varying): Likewise.
21323 * value-query.h (value_query): Likewise.
21324 * gimple-range-cache.cc (block_range_cache::set_bb_range,
21325 block_range_cache::dump, ssa_global_cache::clear_global_range,
21326 temporal_cache::temporal_value, temporal_cache::current_p,
21327 ranger_cache::range_of_def, ranger_cache::propagate_updated_value,
21328 ranger_cache::range_from_dom, ranger_cache::register_inferred_value):
21330 * gimple-range-fold.cc (fur_edge::get_phi_operand,
21331 fur_stmt::get_operand, gimple_range_adjustment,
21332 fold_using_range::range_of_phi,
21333 fold_using_range::relation_fold_and_or): Likewise.
21334 * value-range-storage.h (irange_storage_slot::MAX_INTS): Likewise.
21335 * value-query.cc (range_query::value_of_expr,
21336 range_query::value_on_edge, range_query::query_relation): Likewise.
21337 * tree-vrp.cc (remove_unreachable::remove_and_update_globals,
21338 intersect_range_with_nonzero_bits): Likewise.
21339 * gimple-range-infer.cc (gimple_infer_range::check_assume_func,
21340 exit_range): Likewise.
21341 * value-relation.h: Likewise.
21342 (equiv_oracle, relation_trio::relation_trio, value_relation,
21343 value_relation::value_relation, pe_min): Likewise.
21344 * range-op-float.cc (range_operator_float::rv_fold,
21345 frange_arithmetic, foperator_unordered_equal::op1_range,
21346 foperator_div::rv_fold): Likewise.
21347 * gimple-range-op.cc (cfn_clz::fold_range): Likewise.
21348 * value-relation.cc (equiv_oracle::query_relation,
21349 equiv_oracle::register_equiv, equiv_oracle::add_equiv_to_block,
21350 value_relation::apply_transitive, relation_chain_head::find_relation,
21351 dom_oracle::query_relation, dom_oracle::find_relation_block,
21352 dom_oracle::find_relation_dom, path_oracle::register_equiv): Likewise.
21353 * range-op.cc (range_operator::wi_fold_in_parts_equiv,
21354 create_possibly_reversed_range, adjust_op1_for_overflow,
21355 operator_mult::wi_fold, operator_exact_divide::op1_range,
21356 operator_cast::lhs_op1_relation, operator_cast::fold_pair,
21357 operator_cast::fold_range, operator_abs::wi_fold, range_op_cast_tests,
21358 range_op_lshift_tests): Likewise.
21360 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
21362 * config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
21363 (move_callee_saved_registers): Detect the bug condition early.
21365 2023-03-23 Andrew Stubbs <ams@codesourcery.com>
21367 * config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
21368 * config/gcn/gcn-valu.md (V_1REG_ALT): New.
21370 (vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): New.
21371 (vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): New.
21372 (vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Use new patterns.
21373 * config/gcn/gcn.cc (gcn_stepped_zero_int_parallel_p): New.
21374 * config/gcn/predicates.md (ascending_zero_int_parallel): New.
21376 2023-03-23 Jakub Jelinek <jakub@redhat.com>
21378 PR tree-optimization/109176
21379 * tree-vect-generic.cc (expand_vector_condition): If a has
21380 vector boolean type and is a comparison, also check if both
21381 the comparison and VEC_COND_EXPR could be successfully expanded
21384 2023-03-23 Pan Li <pan2.li@intel.com>
21385 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21389 * config/riscv/riscv-modes.def (ADJUST_BYTESIZE): Adjust size
21390 for vector mask modes.
21391 * config/riscv/riscv.cc (riscv_v_adjust_bytesize): New.
21392 * config/riscv/riscv.h (riscv_v_adjust_bytesize): New.
21394 2023-03-23 Songhe Zhu <zhusonghe@eswincomputing.com>
21396 * config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
21398 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21401 * config/riscv/riscv-protos.h (emit_vlmax_vsetvl): Define as global.
21402 (emit_vlmax_op): Ditto.
21403 * config/riscv/riscv-v.cc (get_sew): New function.
21404 (emit_vlmax_vsetvl): Adapt function.
21405 (emit_pred_op): Ditto.
21406 (emit_vlmax_op): Ditto.
21407 (emit_nonvlmax_op): Ditto.
21408 (legitimize_move): Fix LRA ICE.
21409 (gen_no_side_effects_vsetvl_rtx): Adapt function.
21410 * config/riscv/vector.md (@mov<V_FRACT:mode><P:mode>_lra): New pattern.
21411 (@mov<VB:mode><P:mode>_lra): Ditto.
21412 (*mov<V_FRACT:mode><P:mode>_lra): Ditto.
21413 (*mov<VB:mode><P:mode>_lra): Ditto.
21415 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21418 * config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
21419 __riscv_vlenb support.
21421 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
21422 * config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto.
21423 * config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto.
21425 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
21426 * config/riscv/riscv-vector-builtins.cc: Ditto.
21428 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21429 kito-cheng <kito.cheng@sifive.com>
21431 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs.
21432 (pass_vsetvl::compute_local_backward_infos): Fix bugs.
21433 (pass_vsetvl::need_vsetvl): Fix bugs.
21434 (pass_vsetvl::backward_demand_fusion): Fix bugs.
21435 (pass_vsetvl::demand_fusion): Fix bugs.
21436 (eliminate_insn): Fix bugs.
21437 (insert_vsetvl): Ditto.
21438 (pass_vsetvl::emit_local_forward_vsetvls): Ditto.
21439 * config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto.
21440 * config/riscv/vector.md: Ditto.
21442 2023-03-23 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21443 kito-cheng <kito.cheng@sifive.com>
21445 * config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
21446 * config/riscv/vector-iterators.md (nmsac): Ditto.
21452 * config/riscv/vector.md (@pred_mul_<optab><mode>): Ditto.
21453 (@pred_mul_plus<mode>): Ditto.
21454 (*pred_madd<mode>): Ditto.
21455 (*pred_macc<mode>): Ditto.
21456 (*pred_mul_plus<mode>): Ditto.
21457 (@pred_mul_plus<mode>_scalar): Ditto.
21458 (*pred_madd<mode>_scalar): Ditto.
21459 (*pred_macc<mode>_scalar): Ditto.
21460 (*pred_mul_plus<mode>_scalar): Ditto.
21461 (*pred_madd<mode>_extended_scalar): Ditto.
21462 (*pred_macc<mode>_extended_scalar): Ditto.
21463 (*pred_mul_plus<mode>_extended_scalar): Ditto.
21464 (@pred_minus_mul<mode>): Ditto.
21465 (*pred_<madd_nmsub><mode>): Ditto.
21466 (*pred_nmsub<mode>): Ditto.
21467 (*pred_<macc_nmsac><mode>): Ditto.
21468 (*pred_nmsac<mode>): Ditto.
21469 (*pred_mul_<optab><mode>): Ditto.
21470 (*pred_minus_mul<mode>): Ditto.
21471 (@pred_mul_<optab><mode>_scalar): Ditto.
21472 (@pred_minus_mul<mode>_scalar): Ditto.
21473 (*pred_<madd_nmsub><mode>_scalar): Ditto.
21474 (*pred_nmsub<mode>_scalar): Ditto.
21475 (*pred_<macc_nmsac><mode>_scalar): Ditto.
21476 (*pred_nmsac<mode>_scalar): Ditto.
21477 (*pred_mul_<optab><mode>_scalar): Ditto.
21478 (*pred_minus_mul<mode>_scalar): Ditto.
21479 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
21480 (*pred_nmsub<mode>_extended_scalar): Ditto.
21481 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
21482 (*pred_nmsac<mode>_extended_scalar): Ditto.
21483 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
21484 (*pred_minus_mul<mode>_extended_scalar): Ditto.
21485 (*pred_<madd_msub><mode>): Ditto.
21486 (*pred_<macc_msac><mode>): Ditto.
21487 (*pred_<madd_msub><mode>_scalar): Ditto.
21488 (*pred_<macc_msac><mode>_scalar): Ditto.
21489 (@pred_neg_mul_<optab><mode>): Ditto.
21490 (@pred_mul_neg_<optab><mode>): Ditto.
21491 (*pred_<nmadd_msub><mode>): Ditto.
21492 (*pred_<nmsub_nmadd><mode>): Ditto.
21493 (*pred_<nmacc_msac><mode>): Ditto.
21494 (*pred_<nmsac_nmacc><mode>): Ditto.
21495 (*pred_neg_mul_<optab><mode>): Ditto.
21496 (*pred_mul_neg_<optab><mode>): Ditto.
21497 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
21498 (@pred_mul_neg_<optab><mode>_scalar): Ditto.
21499 (*pred_<nmadd_msub><mode>_scalar): Ditto.
21500 (*pred_<nmsub_nmadd><mode>_scalar): Ditto.
21501 (*pred_<nmacc_msac><mode>_scalar): Ditto.
21502 (*pred_<nmsac_nmacc><mode>_scalar): Ditto.
21503 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
21504 (*pred_mul_neg_<optab><mode>_scalar): Ditto.
21505 (@pred_widen_neg_mul_<optab><mode>): Ditto.
21506 (@pred_widen_mul_neg_<optab><mode>): Ditto.
21507 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
21508 (@pred_widen_mul_neg_<optab><mode>_scalar): Ditto.
21510 2023-03-23 liuhongt <hongtao.liu@intel.com>
21512 * builtins.cc (builtin_memset_read_str): Replace
21513 targetm.gen_memset_scratch_rtx with gen_reg_rtx.
21514 (builtin_memset_gen_str): Ditto.
21515 * config/i386/i386-expand.cc
21516 (ix86_convert_const_wide_int_to_broadcast): Replace
21517 ix86_gen_scratch_sse_rtx with gen_reg_rtx.
21518 (ix86_expand_vector_move): Ditto.
21519 * config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx):
21521 * config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed.
21522 (TARGET_GEN_MEMSET_SCRATCH_RTX): Removed.
21523 * doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX.
21524 * doc/tm.texi.in: Ditto.
21525 * target.def: Ditto.
21527 2023-03-22 Vladimir N. Makarov <vmakarov@redhat.com>
21529 * lra.cc (lra): Do not repeat inheritance and live range splitting
21530 when asm error is found.
21532 2023-03-22 Andrew Jenner <andrew@codesourcery.com>
21534 * config/gcn/gcn-protos.h (gcn_expand_dpp_swap_pairs_insn)
21535 (gcn_expand_dpp_distribute_even_insn)
21536 (gcn_expand_dpp_distribute_odd_insn): Declare.
21537 * config/gcn/gcn-valu.md (@dpp_swap_pairs<mode>)
21538 (@dpp_distribute_even<mode>, @dpp_distribute_odd<mode>)
21539 (cmul<conj_op><mode>3, cml<addsub_as><mode>4, vec_addsub<mode>3)
21540 (cadd<rot><mode>3, vec_fmaddsub<mode>4, vec_fmsubadd<mode>4)
21541 (fms<mode>4<exec>, fms<mode>4_negop2<exec>, fms<mode>4)
21542 (fms<mode>4_negop2): New patterns.
21543 * config/gcn/gcn.cc (gcn_expand_dpp_swap_pairs_insn)
21544 (gcn_expand_dpp_distribute_even_insn)
21545 (gcn_expand_dpp_distribute_odd_insn): New functions.
21546 * config/gcn/gcn.md: Add entries to unspec enum.
21548 2023-03-22 Aldy Hernandez <aldyh@redhat.com>
21550 PR tree-optimization/109008
21551 * value-range.cc (frange::set): Add nan_state argument.
21552 * value-range.h (class nan_state): New.
21553 (frange::get_nan_state): New.
21555 2023-03-22 Martin Liska <mliska@suse.cz>
21557 * configure: Regenerate.
21559 2023-03-21 Joseph Myers <joseph@codesourcery.com>
21561 * stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
21564 2023-03-21 Andrew MacLeod <amacleod@redhat.com>
21566 PR tree-optimization/109192
21567 * gimple-range-gori.cc (gori_compute::compute_operand_range):
21568 Terminate gori calculations if a relation is not relevant.
21569 * value-relation.h (value_relation::set_relation): Allow
21570 equality between op1 and op2 if they are the same.
21572 2023-03-21 Richard Biener <rguenther@suse.de>
21574 PR tree-optimization/109219
21575 * tree-vect-loop.cc (vectorizable_reduction): Check
21576 slp_node, not STMT_SLP_TYPE.
21577 * tree-vect-stmts.cc (vectorizable_condition): Likewise.
21578 * tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
21579 Remove assertion on STMT_SLP_TYPE.
21581 2023-03-21 Jakub Jelinek <jakub@redhat.com>
21583 PR tree-optimization/109215
21584 * tree.h (enum special_array_member): Adjust comments for int_0
21586 * tree.cc (component_ref_sam_type): Clear zero_elts if memtype
21587 has zero sized element type and the array has variable number of
21588 elements or constant one or more elements.
21589 (component_ref_size): Adjust comments, formatting fix.
21591 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
21593 * configure.ac: Add check for the Texinfo 6.8
21594 CONTENTS_OUTPUT_LOCATION customization variable and set it if
21596 * configure: Regenerate.
21597 * Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable. Set by
21598 configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
21599 CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
21600 ($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
21602 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
21604 * doc/extend.texi: Associate use_hazard_barrier_return index
21605 entry with its attribute.
21606 * doc/invoke.texi: Associate -fcanon-prefix-map index entry with
21609 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
21611 * doc/implement-c.texi: Remove usage of @gol.
21612 * doc/invoke.texi: Ditto.
21613 * doc/sourcebuild.texi: Ditto.
21614 * doc/include/gcc-common.texi: Remove @gol. In new Makeinfo and
21615 texinfo.tex versions, the bug it was working around appears to
21618 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
21620 * doc/include/texinfo.tex: Update to 2023-01-17.19.
21622 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
21624 * doc/include/gcc-common.texi: Add @defbuiltin{,x} and
21625 @enddefbuiltin for defining built-in functions.
21626 * doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
21627 places where it should be used.
21629 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
21631 * doc/extend.texi (Formatted Output Function Checking): New
21632 subsection for grouping together printf et al.
21633 (Exception handling) Fix missing @ sign before copyright
21634 header, which lead to the copyright line leaking into
21635 '(gcc)Exception handling'.
21636 * doc/gcc.texi: Set document language to en_US.
21637 (@copying): Wrap front cover texts in quotations, move in manual
21640 2023-03-21 Arsen Arsenović <arsen@aarsen.me>
21642 * doc/gcc.texi: Add the Indices appendix, to make texinfo
21643 generate nice indices overview page.
21645 2023-03-21 Richard Biener <rguenther@suse.de>
21647 PR tree-optimization/109170
21648 * gimple-range-op.cc (cfn_pass_through_arg1): New.
21649 (gimple_range_op_handler::maybe_builtin_call): Handle
21650 __builtin_expect via cfn_pass_through_arg1.
21652 2023-03-20 Michael Meissner <meissner@linux.ibm.com>
21655 * config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
21656 (init_float128_ieee): Delete code to switch complex multiply and divide
21658 (complex_multiply_builtin_code): New helper function.
21659 (complex_divide_builtin_code): Likewise.
21660 (rs6000_mangle_decl_assembler_name): Add support for mangling the name
21661 of complex 128-bit multiply and divide built-in functions.
21663 2023-03-20 Peter Bergner <bergner@linux.ibm.com>
21666 * config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
21668 2023-03-19 Jonny Grant <jg@jguk.org>
21670 * doc/extend.texi (Common Function Attributes) <nonnull>:
21673 2023-03-18 Peter Bergner <bergner@linux.ibm.com>
21675 PR rtl-optimization/109179
21676 * lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug
21677 insn or note. Move the tests earlier to guard lra_get_insn_recog_data.
21679 2023-03-17 Jakub Jelinek <jakub@redhat.com>
21682 * function.h (push_struct_function): Add ABSTRACT_P argument defaulted
21684 * function.cc (push_struct_function): Add ABSTRACT_P argument, pass it
21685 to allocate_struct_function instead of false.
21686 * tree-inline.cc (initialize_cfun): Don't copy DECL_ARGUMENTS
21687 nor DECL_RESULT here. Pass true as ABSTRACT_P to
21688 push_struct_function. Call targetm.target_option.relayout_function
21690 (tree_function_versioning): Formatting fix.
21692 2023-03-17 Vladimir N. Makarov <vmakarov@redhat.com>
21694 * lra-constraints.cc: Include hooks.h.
21695 (combine_reload_insn): New function.
21696 (lra_constraints): Call it.
21698 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21699 kito-cheng <kito.cheng@sifive.com>
21701 * config/riscv/riscv-v.cc (legitimize_move): Allow undef value
21702 as legitimate value.
21703 * config/riscv/riscv-vector-builtins.cc
21704 (function_expander::use_ternop_insn): Fix bugs of ternary intrinsic.
21705 (function_expander::use_widen_ternop_insn): Ditto.
21706 * config/riscv/vector.md (@vundefined<mode>): New pattern.
21707 (pred_mul_<optab><mode>_undef_merge): Remove.
21708 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
21709 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
21710 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
21711 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
21713 2023-03-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
21716 * config/riscv/riscv.md: Fix subreg bug.
21718 2023-03-17 Jakub Jelinek <jakub@redhat.com>
21720 PR middle-end/108685
21721 * omp-expand.cc (expand_omp_for_ordered_loops): Add L0_BB argument,
21722 use its loop_father rather than BODY_BB's loop_father.
21723 (expand_omp_for_generic): Adjust expand_omp_for_ordered_loops caller.
21724 If broken_loop with ordered > collapse and at least one of those
21725 extra loops aren't guaranteed to have at least one iteration, change
21726 l0_bb's loop_father to entry_bb's loop_father. Set cont_bb's
21727 loop_father to l0_bb's loop_father rather than l1_bb's.
21729 2023-03-17 Jakub Jelinek <jakub@redhat.com>
21732 * gdbhooks.py (TreePrinter.to_string): Wrap
21733 gdb.parse_and_eval('tree_code_type') in a try block, parse
21734 and eval 'tree_code_type_tmpl<0>::tree_code_type' instead if it
21735 raises exception. Update comments for the recent tree_code_type
21738 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
21740 * doc/extend.texi (BPF Built-in Functions): Fix numerous markup
21741 issues. Add more line breaks to example so it doesn't overflow
21744 2023-03-17 Sandra Loosemore <sandra@codesourcery.com>
21746 * doc/extend.texi (Common Function Attributes) <access>: Fix bad
21747 line breaks in examples.
21748 <malloc>: Fix bad line breaks in running text, also copy-edit
21750 (Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
21751 * doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
21753 (C++ Dialect Options) <-fcontracts>: Add line break in example.
21754 <-Wctad-maybe-unsupported>: Likewise.
21755 <-Winvalid-constexpr>: Likewise.
21756 (Warning Options) <-Wdangling-pointer>: Likewise.
21757 <-Winterference-size>: Likewise.
21758 <-Wvla-parameter>: Likewise.
21759 (Static Analyzer Options): Fix bad line breaks in running text,
21760 plus add some missing markup.
21761 (Optimize Options) <openacc-privatization>: Fix more bad line
21762 breaks in running text.
21764 2023-03-16 Uros Bizjak <ubizjak@gmail.com>
21766 * config/i386/i386-expand.cc (expand_vec_perm_pblendv):
21767 Handle 8-byte modes only with TARGET_MMX_WITH_SSE.
21768 (expand_vec_perm_2perm_pblendv): Ditto.
21770 2023-03-16 Martin Liska <mliska@suse.cz>
21772 PR middle-end/106133
21773 * gcc.cc (driver_handle_option): Use x_main_input_basename
21774 if x_dump_base_name is null.
21775 * opts.cc (common_handle_option): Likewise.
21777 2023-03-16 Richard Biener <rguenther@suse.de>
21779 PR tree-optimization/109123
21780 * gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
21781 Do not emit -Wuse-after-free late.
21782 (pass_waccess::check_call): Always check call pointer uses.
21784 2023-03-16 Richard Biener <rguenther@suse.de>
21786 PR tree-optimization/109141
21787 * tree-dfa.h (renumber_gimple_stmt_uids_in_block): New.
21788 * tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split
21790 (renumber_gimple_stmt_uids): ... here and
21791 (renumber_gimple_stmt_uids_in_blocks): ... here.
21792 * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p):
21793 Use renumber_gimple_stmt_uids_in_block to also assign UIDs
21795 (pass_waccess::check_pointer_uses): Process all PHIs.
21797 2023-03-15 David Malcolm <dmalcolm@redhat.com>
21800 * diagnostic-format-sarif.cc (class sarif_invocation): New.
21801 (class sarif_ice_notification): New.
21802 (sarif_builder::m_invocation_obj): New field.
21803 (sarif_invocation::add_notification_for_ice): New.
21804 (sarif_invocation::prepare_to_flush): New.
21805 (sarif_ice_notification::sarif_ice_notification): New.
21806 (sarif_builder::sarif_builder): Add m_invocation_obj.
21807 (sarif_builder::end_diagnostic): Special-case DK_ICE and
21809 (sarif_builder::flush_to_file): Call prepare_to_flush on
21810 m_invocation_obj. Pass the latter to make_top_level_object.
21811 (sarif_builder::make_result_object): Move creation of "locations"
21813 (sarif_builder::make_locations_arr): ...this new function.
21814 (sarif_builder::make_top_level_object): Add "invocation_obj" param
21815 and pass it to make_run_object.
21816 (sarif_builder::make_run_object): Add "invocation_obj" param and
21818 (sarif_ice_handler): New callback.
21819 (diagnostic_output_format_init_sarif): Wire up sarif_ice_handler.
21820 * diagnostic.cc (diagnostic_initialize): Initialize new field
21822 (diagnostic_action_after_output): If it is set, make one attempt
21823 to call ice_handler_cb.
21824 * diagnostic.h (diagnostic_context::ice_handler_cb): New field.
21826 2023-03-15 Uros Bizjak <ubizjak@gmail.com>
21828 * config/i386/i386-expand.cc (expand_vec_perm_blend):
21829 Handle 8-byte modes only with TARGET_MMX_WITH_SSE. Handle V2SFmode
21830 and fix V2HImode handling.
21831 (expand_vec_perm_1): Try to emit BLEND instruction
21832 before MOVSS/MOVSD.
21833 * config/i386/mmx.md (*mmx_blendps): New insn pattern.
21835 2023-03-15 Tobias Burnus <tobias@codesourcery.com>
21837 * omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
21839 2023-03-15 Richard Biener <rguenther@suse.de>
21841 * gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
21842 Do not diagnose clobbers.
21844 2023-03-15 Richard Biener <rguenther@suse.de>
21846 PR tree-optimization/109139
21847 * tree-ssa-live.cc (remove_unused_locals): Look at the
21848 base address for unused decls on the LHS of .DEFERRED_INIT.
21850 2023-03-15 Xi Ruoyao <xry111@xry111.site>
21853 * builtins.cc (inline_string_cmp): Force the character
21854 difference into "result" pseudo-register, instead of reassign
21855 the pseudo-register.
21857 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
21859 * config.gcc: Add thead.o to RISC-V extra_objs.
21860 * config/riscv/peephole.md: Add mempair peephole passes.
21861 * config/riscv/riscv-protos.h (riscv_split_64bit_move_p): New
21863 (th_mempair_operands_p): Likewise.
21864 (th_mempair_order_operands): Likewise.
21865 (th_mempair_prepare_save_restore_operands): Likewise.
21866 (th_mempair_save_restore_regs): Likewise.
21867 (th_mempair_output_move): Likewise.
21868 * config/riscv/riscv.cc (riscv_save_reg): Move code.
21869 (riscv_restore_reg): Move code.
21870 (riscv_for_each_saved_reg): Add code to emit mempair insns.
21871 * config/riscv/t-riscv: Add thead.cc.
21872 * config/riscv/thead.md (*th_mempair_load_<GPR:mode>2):
21874 (*th_mempair_store_<GPR:mode>2): Likewise.
21875 (*th_mempair_load_extendsidi2): Likewise.
21876 (*th_mempair_load_zero_extendsidi2): Likewise.
21877 * config/riscv/thead.cc: New file.
21879 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
21881 * config/riscv/constraints.md (TARGET_XTHEADFMV ? FP_REGS : NO_REGS)
21882 New constraint "th_f_fmv".
21883 (TARGET_XTHEADFMV ? GR_REGS : NO_REGS): New constraint
21885 * config/riscv/riscv.cc (riscv_split_doubleword_move):
21886 Add split code for XTheadFmv.
21887 (riscv_secondary_memory_needed): XTheadFmv does not need
21889 * config/riscv/riscv.md: Add new UNSPEC_XTHEADFMV and
21890 UNSPEC_XTHEADFMV_HW. Add support for XTheadFmv to
21891 movdf_hardfloat_rv32.
21892 * config/riscv/thead.md (th_fmv_hw_w_x): New INSN.
21893 (th_fmv_x_w): New INSN.
21894 (th_fmv_x_hw): New INSN.
21896 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
21898 * config/riscv/riscv.md (maddhisi4): New expand.
21899 (msubhisi4): New expand.
21900 * config/riscv/thead.md (*th_mula<mode>): New pattern.
21901 (*th_mulawsi): New pattern.
21902 (*th_mulawsi2): New pattern.
21903 (*th_maddhisi4): New pattern.
21904 (*th_sextw_maddhisi4): New pattern.
21905 (*th_muls<mode>): New pattern.
21906 (*th_mulswsi): New pattern.
21907 (*th_mulswsi2): New pattern.
21908 (*th_msubhisi4): New pattern.
21909 (*th_sextw_msubhisi4): New pattern.
21911 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
21913 * config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
21914 * config/riscv/riscv-protos.h (riscv_expand_conditional_move):
21916 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
21918 (riscv_expand_conditional_move): New function.
21919 (riscv_expand_conditional_move_onesided): New function.
21920 * config/riscv/riscv.md: Add support for XTheadCondMov.
21921 * config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add
21922 support for XTheadCondMov.
21923 (*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise.
21925 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
21927 * config/riscv/bitmanip.md (clzdi2): New expand.
21928 (clzsi2): New expand.
21929 (ctz<mode>2): New expand.
21930 (popcount<mode>2): New expand.
21931 (<bitmanip_optab>si2): Rename INSN.
21932 (*<bitmanip_optab>si2): Hide INSN name.
21933 (<bitmanip_optab>di2): Rename INSN.
21934 (*<bitmanip_optab>di2): Hide INSN name.
21935 (rotrsi3): Remove INSN.
21936 (rotr<mode>3): Add expand.
21937 (*rotrsi3): New INSN.
21938 (rotrdi3): Rename INSN.
21939 (*rotrdi3): Hide INSN name.
21940 (rotrsi3_sext): Rename INSN.
21941 (*rotrsi3_sext): Hide INSN name.
21942 (bswap<mode>2): Remove INSN.
21943 (bswapdi2): Add expand.
21944 (bswapsi2): Add expand.
21945 (*bswap<mode>2): Hide INSN name.
21946 * config/riscv/riscv.cc (riscv_rtx_costs): Add costs for sign
21948 * config/riscv/riscv.md (extv<mode>): New expand.
21949 (extzv<mode>): New expand.
21950 * config/riscv/thead.md (*th_srri<mode>3): New INSN.
21951 (*th_ext<mode>): New INSN.
21952 (*th_extu<mode>): New INSN.
21953 (*th_clz<mode>2): New INSN.
21954 (*th_rev<mode>2): New INSN.
21956 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
21958 * config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
21959 * config/riscv/thead.md (*th_tst<mode>3): New INSN.
21961 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
21963 * config/riscv/riscv.md: Include thead.md
21964 * config/riscv/thead.md: New file.
21966 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
21968 * config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
21970 2023-03-15 Christoph Müllner <christoph.muellner@vrull.eu>
21972 * common/config/riscv/riscv-common.cc: Add xthead* extensions.
21973 * config/riscv/riscv-opts.h (MASK_XTHEADBA): New.
21974 (MASK_XTHEADBB): New.
21975 (MASK_XTHEADBS): New.
21976 (MASK_XTHEADCMO): New.
21977 (MASK_XTHEADCONDMOV): New.
21978 (MASK_XTHEADFMEMIDX): New.
21979 (MASK_XTHEADFMV): New.
21980 (MASK_XTHEADINT): New.
21981 (MASK_XTHEADMAC): New.
21982 (MASK_XTHEADMEMIDX): New.
21983 (MASK_XTHEADMEMPAIR): New.
21984 (MASK_XTHEADSYNC): New.
21985 (TARGET_XTHEADBA): New.
21986 (TARGET_XTHEADBB): New.
21987 (TARGET_XTHEADBS): New.
21988 (TARGET_XTHEADCMO): New.
21989 (TARGET_XTHEADCONDMOV): New.
21990 (TARGET_XTHEADFMEMIDX): New.
21991 (TARGET_XTHEADFMV): New.
21992 (TARGET_XTHEADINT): New.
21993 (TARGET_XTHEADMAC): New.
21994 (TARGET_XTHEADMEMIDX): New.
21995 (TARGET_XTHEADMEMPAIR): new.
21996 (TARGET_XTHEADSYNC): New.
21997 * config/riscv/riscv.opt: Add riscv_xthead_subext.
21999 2023-03-15 Hu, Lin1 <lin1.hu@intel.com>
22002 * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
22003 __builtin_ia32_vaesdeclast_v16qi,__builtin_ia32_vaesenc_v16qi,
22004 __builtin_ia32_vaesenclast_v16qi): Require OPTION_MASK_ISA_AVX512VL.
22006 2023-03-14 Jakub Jelinek <jakub@redhat.com>
22009 * config/i386/i386-expand.cc (split_double_concat): Fix splitting
22010 when lo is equal to dhi and hi is a MEM which uses dlo register.
22012 2023-03-14 Martin Jambor <mjambor@suse.cz>
22015 * ipa-cp.cc (update_profiling_info): Drop counts of orig_node to
22016 global0 instead of zeroing when it does not have as many counts as
22019 2023-03-14 Martin Jambor <mjambor@suse.cz>
22022 * ipa-cp.cc (update_specialized_profile): Drop orig_node_count to
22023 ipa count, remove assert, lenient_count_portion_handling, dump
22024 also orig_node_count.
22026 2023-03-14 Uros Bizjak <ubizjak@gmail.com>
22028 * config/i386/i386-expand.cc (expand_vec_perm_movs):
22029 Handle V2SImode for TARGET_MMX_WITH_SSE.
22030 * config/i386/mmx.md (*mmx_movss_<mode>): Rename from *mmx_movss
22031 using V2FI mode iterator to handle both V2SI and V2SF modes.
22033 2023-03-14 Sam James <sam@gentoo.org>
22035 * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
22036 including <sstream> earlier.
22037 * system.h: Add INCLUDE_SSTREAM.
22039 2023-03-14 Richard Biener <rguenther@suse.de>
22041 * tree-ssa-live.cc (remove_unused_locals): Do not treat
22042 the .DEFERRED_INIT of a variable as use, instead remove
22043 that if it is the only use.
22045 2023-03-14 Eric Botcazou <ebotcazou@adacore.com>
22047 PR rtl-optimization/107762
22048 * expr.cc (emit_group_store): Revert latest change.
22050 2023-03-14 Andre Vieira <andre.simoesdiasvieira@arm.com>
22052 PR tree-optimization/109005
22053 * tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
22054 aggregate type check.
22056 2023-03-14 Jakub Jelinek <jakub@redhat.com>
22058 PR tree-optimization/109115
22059 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Don't use
22060 r.upper_bound () on r.undefined_p () range.
22062 2023-03-14 Jan Hubicka <hubicka@ucw.cz>
22064 PR tree-optimization/106896
22065 * profile-count.cc (profile_count::to_sreal_scale): Synchronize
22066 implementatoin with probability_in; avoid some asserts.
22068 2023-03-13 Max Filippov <jcmvbkbc@gmail.com>
22070 * config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
22072 2023-03-13 Sean Bright <sean@seanbright.com>
22074 * doc/invoke.texi (Warning Options): Remove errant 'See'
22077 2023-03-13 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
22079 * config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
22080 REG_OK_FOR_BASE_P): Remove.
22082 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22084 * config/riscv/vector-iterators.md (=vd,vr): Fine tune.
22085 (=vd,vd,vr,vr): Ditto.
22086 * config/riscv/vector.md: Ditto.
22088 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22090 * config/riscv/riscv-vector-builtins.cc
22091 (function_expander::use_compare_insn): Add operand predicate check.
22093 2023-03-13 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22095 * config/riscv/vector.md: Fine tune RA constraints.
22097 2023-03-13 Tobias Burnus <tobias@codesourcery.com>
22099 * config/gcn/mkoffload.cc (main): Pass -save-temps on for the
22100 hsaco assemble/link.
22102 2023-03-13 Richard Biener <rguenther@suse.de>
22104 PR tree-optimization/109046
22105 * tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
22106 piecewise complex loads.
22108 2023-03-12 Jakub Jelinek <jakub@redhat.com>
22110 * config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove.
22111 (aarch64_bf16_ptr_type_node): Adjust comment.
22112 * config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use
22113 bfloat16_type_node rather than aarch64_bf16_type_node.
22114 (aarch64_libgcc_floating_mode_supported_p,
22115 aarch64_scalar_mode_supported_p): Also support BFmode.
22116 (aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove.
22117 (aarch64_invalid_binary_op): Remove BFmode related rejections.
22118 (TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine.
22119 * config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove.
22120 (aarch64_int_or_fp_type): Use bfloat16_type_node rather than
22121 aarch64_bf16_type_node.
22122 (aarch64_init_simd_builtin_types): Likewise.
22123 (aarch64_init_bf16_types): Likewise. Don't create bfloat16_type_node,
22124 which is created in tree.cc already.
22125 * config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise.
22127 2023-03-12 Roger Sayle <roger@nextmovesoftware.com>
22129 PR middle-end/109031
22130 * tree-chrec.cc (chrec_apply): When folding "{a, +, a} (x-1)",
22131 ensure that the type of x is as wide or wider than the type of a.
22133 2023-03-12 Tamar Christina <tamar.christina@arm.com>
22136 * config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): Remove.
22137 (*bitmask_shift_plus<mode>): New.
22138 * config/aarch64/aarch64-sve2.md (*bitmask_shift_plus<mode>): New.
22139 (@aarch64_bitmask_udiv<mode>3): Remove.
22140 * config/aarch64/aarch64.cc
22141 (aarch64_vectorize_can_special_div_by_constant,
22142 TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Removed.
22143 (TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT,
22144 aarch64_vectorize_preferred_div_as_shifts_over_mult): New.
22146 2023-03-12 Tamar Christina <tamar.christina@arm.com>
22149 * target.def (preferred_div_as_shifts_over_mult): New.
22150 * doc/tm.texi.in: Document it.
22151 * doc/tm.texi: Regenerate.
22152 * targhooks.cc (default_preferred_div_as_shifts_over_mult): New.
22153 * targhooks.h (default_preferred_div_as_shifts_over_mult): New.
22154 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Use it.
22156 2023-03-12 Tamar Christina <tamar.christina@arm.com>
22157 Richard Sandiford <richard.sandiford@arm.com>
22160 * tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
22163 2023-03-12 Tamar Christina <tamar.christina@arm.com>
22164 Andrew MacLeod <amacleod@redhat.com>
22167 * gimple-range-op.h (gimple_range_op_handler): Add maybe_non_standard.
22168 * gimple-range-op.cc (gimple_range_op_handler::gimple_range_op_handler):
22170 (gimple_range_op_handler::maybe_non_standard): New.
22171 * range-op.cc (class operator_widen_plus_signed,
22172 operator_widen_plus_signed::wi_fold, class operator_widen_plus_unsigned,
22173 operator_widen_plus_unsigned::wi_fold, class operator_widen_mult_signed,
22174 operator_widen_mult_signed::wi_fold, class operator_widen_mult_unsigned,
22175 operator_widen_mult_unsigned::wi_fold,
22176 ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
22177 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New.
22178 * range-op.h (ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
22179 ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New
22181 2023-03-12 Tamar Christina <tamar.christina@arm.com>
22184 * doc/tm.texi (TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Remove.
22185 * doc/tm.texi.in: Likewise.
22186 * explow.cc (round_push, align_dynamic_address): Revert previous patch.
22187 * expmed.cc (expand_divmod): Likewise.
22188 * expmed.h (expand_divmod): Likewise.
22189 * expr.cc (force_operand, expand_expr_divmod): Likewise.
22190 * optabs.cc (expand_doubleword_mod, expand_doubleword_divmod): Likewise.
22191 * target.def (can_special_div_by_const): Remove.
22192 * target.h: Remove tree-core.h include
22193 * targhooks.cc (default_can_special_div_by_const): Remove.
22194 * targhooks.h (default_can_special_div_by_const): Remove.
22195 * tree-vect-generic.cc (expand_vector_operation): Remove hook.
22196 * tree-vect-patterns.cc (vect_recog_divmod_pattern): Remove hook.
22197 * tree-vect-stmts.cc (vectorizable_operation): Remove hook.
22199 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
22201 * doc/install.texi2html: Fix issue number typo in comment.
22203 2023-03-12 Gaius Mulley <gaiusmod2@gmail.com>
22205 * doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
22208 2023-03-12 Sandra Loosemore <sandra@codesourcery.com>
22210 * doc/invoke.texi (Optimize Options): Add markup to
22211 description of asan-kernel-mem-intrinsic-prefix, and clarify
22214 2023-03-11 Gerald Pfeifer <gerald@pfeifer.com>
22216 * doc/extend.texi (Named Address Spaces): Drop a redundant link
22219 2023-03-11 Jeff Law <jlaw@ventanamicro>
22222 * doc/extend.texi: Clarify Attribute Syntax a bit.
22224 2023-03-11 Sandra Loosemore <sandra@codesourcery.com>
22226 * doc/install.texi (Prerequisites): Suggest using newer versions
22228 (Final install): Clean up and modernize discussion of how to
22229 build or obtain the GCC manuals.
22230 * doc/install.texi2html: Update comment to point to the PR instead
22231 of "makeinfo 4.7 brokenness" (it's not specific to that version).
22233 2023-03-10 Jakub Jelinek <jakub@redhat.com>
22236 * optabs.cc (expand_fix): For conversions from BFmode to integral,
22237 use shifts to convert it to SFmode first and then convert SFmode
22240 2023-03-10 Andrew Pinski <apinski@marvell.com>
22242 * config/aarch64/aarch64.md: Add a new define_split
22245 2023-03-10 Richard Biener <rguenther@suse.de>
22247 * tree-ssa-structalias.cc (solve_graph): Immediately
22248 iterate self-cycles.
22250 2023-03-10 Jakub Jelinek <jakub@redhat.com>
22252 PR tree-optimization/109008
22253 * range-op-float.cc (float_widen_lhs_range): If not
22254 -frounding-math and not IBM double double format, extend lhs
22255 range just by 0.5ulp rather than 1ulp in each direction.
22257 2023-03-10 Jakub Jelinek <jakub@redhat.com>
22260 * config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
22262 * config/i386/t-cygwin-w64: Remove.
22264 2023-03-10 Jakub Jelinek <jakub@redhat.com>
22267 * tree-core.h (tree_code_type, tree_code_length): For C++11 or
22268 C++14, don't declare as extern const arrays.
22269 (tree_code_type_tmpl, tree_code_length_tmpl): New types with
22270 static constexpr member arrays for C++11 or C++14.
22271 * tree.h (TREE_CODE_CLASS): For C++11 or C++14 use
22272 tree_code_type_tmpl <0>::tree_code_type instead of tree_code_type.
22273 (TREE_CODE_LENGTH): For C++11 or C++14 use
22274 tree_code_length_tmpl <0>::tree_code_length instead of
22276 * tree.cc (tree_code_type, tree_code_length): Remove.
22278 2023-03-10 Jakub Jelinek <jakub@redhat.com>
22281 * common.opt (fcanon-prefix-map): New option.
22282 * opts.cc: Include file-prefix-map.h.
22283 (flag_canon_prefix_map): New variable.
22284 (common_handle_option): Handle OPT_fcanon_prefix_map.
22285 (gen_command_line_string): Ignore OPT_fcanon_prefix_map.
22286 * file-prefix-map.h (flag_canon_prefix_map): Declare.
22287 * file-prefix-map.cc (struct file_prefix_map): Add canonicalize
22289 (add_prefix_map): Initialize canonicalize member from
22290 flag_canon_prefix_map, and if true canonicalize it using lrealpath.
22291 (remap_filename): Revert 2022-11-01 and 2022-11-07 changes,
22292 use lrealpath result only for map->canonicalize map entries.
22293 * lto-opts.cc (lto_write_options): Ignore OPT_fcanon_prefix_map.
22294 * opts-global.cc (handle_common_deferred_options): Clear
22295 flag_canon_prefix_map at the start and handle OPT_fcanon_prefix_map.
22296 * doc/invoke.texi (-fcanon-prefix-map): Document.
22297 (-ffile-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map): Add
22298 see also for -fcanon-prefix-map.
22299 * doc/cppopts.texi (-fmacro-prefix-map): Likewise.
22301 2023-03-10 Jakub Jelinek <jakub@redhat.com>
22304 * cgraphunit.cc (check_global_declaration): Don't warn for unused
22305 variables which have OPT_Wunused_variable warning suppressed.
22307 2023-03-10 Jakub Jelinek <jakub@redhat.com>
22309 PR tree-optimization/109008
22310 * range-op-float.cc (float_widen_lhs_range): If lb is
22311 minimum representable finite number or ub is maximum
22312 representable finite number, instead of widening it to
22313 -inf or inf widen it to negative or positive 0x0.8p+(EMAX+1).
22314 Temporarily clear flag_finite_math_only when canonicalizing
22317 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22319 * config/riscv/riscv-builtins.cc (riscv_gimple_fold_builtin): New function.
22320 * config/riscv/riscv-protos.h (riscv_gimple_fold_builtin): Ditto.
22321 (gimple_fold_builtin): Ditto.
22322 * config/riscv/riscv-vector-builtins-bases.cc (class read_vl): New class.
22323 (class vleff): Ditto.
22325 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22326 * config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
22328 * config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
22329 (struct fault_load_def): Ditto.
22331 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
22332 * config/riscv/riscv-vector-builtins.cc
22333 (rvv_arg_type_info::get_tree_type): Add size_ptr.
22334 (gimple_folder::gimple_folder): New class.
22335 (gimple_folder::fold): Ditto.
22336 (gimple_fold_builtin): New function.
22337 (get_read_vl_instance): Ditto.
22338 (get_read_vl_decl): Ditto.
22339 * config/riscv/riscv-vector-builtins.def (size_ptr): Add size_ptr.
22340 * config/riscv/riscv-vector-builtins.h (class gimple_folder): New class.
22341 (get_read_vl_instance): New function.
22342 (get_read_vl_decl): Ditto.
22343 * config/riscv/riscv-vsetvl.cc (fault_first_load_p): Ditto.
22344 (read_vl_insn_p): Ditto.
22345 (available_occurrence_p): Ditto.
22346 (backward_propagate_worthwhile_p): Ditto.
22347 (gen_vsetvl_pat): Adapt for vleff support.
22348 (get_forward_read_vl_insn): New function.
22349 (get_backward_fault_first_load_insn): Ditto.
22350 (source_equal_p): Adapt for vleff support.
22351 (first_ratio_invalid_for_second_sew_p): Remove.
22352 (first_ratio_invalid_for_second_lmul_p): Ditto.
22353 (first_lmul_less_than_second_lmul_p): Ditto.
22354 (first_ratio_less_than_second_ratio_p): Ditto.
22355 (support_relaxed_compatible_p): New function.
22356 (vector_insn_info::operator>): Remove.
22357 (vector_insn_info::operator>=): Refine.
22358 (vector_insn_info::parse_insn): Adapt for vleff support.
22359 (vector_insn_info::compatible_p): Ditto.
22360 (vector_insn_info::update_fault_first_load_avl): New function.
22361 (pass_vsetvl::transfer_after): Adapt for vleff support.
22362 (pass_vsetvl::demand_fusion): Ditto.
22363 (pass_vsetvl::cleanup_insns): Ditto.
22364 * config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Remove
22365 redundant condtions.
22366 * config/riscv/riscv-vsetvl.h (struct demands_cond): New function.
22367 * config/riscv/riscv.cc (TARGET_GIMPLE_FOLD_BUILTIN): New target hook.
22368 * config/riscv/riscv.md: Adapt for vleff support.
22369 * config/riscv/t-riscv: Ditto.
22370 * config/riscv/vector-iterators.md: New iterator.
22371 * config/riscv/vector.md (read_vlsi): New pattern.
22372 (read_vldi_zero_extend): Ditto.
22373 (@pred_fault_load<mode>): Ditto.
22375 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22377 * config/riscv/riscv-vector-builtins.cc
22378 (function_expander::use_ternop_insn): Use maybe_gen_insn instead.
22379 (function_expander::use_widen_ternop_insn): Ditto.
22380 * optabs.cc (maybe_gen_insn): Extend nops handling.
22382 2023-03-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22384 * config/riscv/riscv-vector-builtins-bases.cc: Split indexed load
22385 patterns according to RVV ISA.
22386 * config/riscv/vector-iterators.md: New iterators.
22387 * config/riscv/vector.md
22388 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Remove.
22389 (@pred_indexed_<order>load<mode>_same_eew): New pattern.
22390 (@pred_indexed_<order>load<mode>_x2_greater_eew): Ditto.
22391 (@pred_indexed_<order>load<mode>_x4_greater_eew): Ditto.
22392 (@pred_indexed_<order>load<mode>_x8_greater_eew): Ditto.
22393 (@pred_indexed_<order>load<mode>_x2_smaller_eew): Ditto.
22394 (@pred_indexed_<order>load<mode>_x4_smaller_eew): Ditto.
22395 (@pred_indexed_<order>load<mode>_x8_smaller_eew): Ditto.
22396 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Remove.
22397 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
22398 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
22399 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
22400 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
22401 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
22403 2023-03-10 Michael Collison <collison@rivosinc.com>
22405 * tree-vect-loop-manip.cc (vect_do_peeling): Use
22406 result of constant_lower_bound instead of vf for the lower
22407 bound of the epilog loop trip count.
22409 2023-03-09 Tamar Christina <tamar.christina@arm.com>
22411 * passes.cc (emergency_dump_function): Finish graph generation.
22413 2023-03-09 Tamar Christina <tamar.christina@arm.com>
22415 * config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
22416 and bottom bit only.
22418 2023-03-09 Andrew Pinski <apinski@marvell.com>
22420 PR tree-optimization/108980
22421 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
22422 Reorgnize the call to warning for not strict flexible arrays
22423 to be before the check of warned.
22425 2023-03-09 Jason Merrill <jason@redhat.com>
22427 * doc/extend.texi: Comment out __is_deducible docs.
22429 2023-03-09 Jason Merrill <jason@redhat.com>
22432 * doc/extend.texi (Type Traits):: Document __is_deducible.
22434 2023-03-09 Costas Argyris <costas.argyris@gmail.com>
22437 * config.host: add object for x86_64-*-mingw*.
22438 * config/i386/sym-mingw32.cc: dummy file to attach
22440 * config/i386/utf8-mingw32.rc: windres resource file.
22441 * config/i386/winnt-utf8.manifest: XML manifest to
22443 * config/i386/x-mingw32: reference to x-mingw32-utf8.
22444 * config/i386/x-mingw32-utf8: Makefile fragment to
22445 embed UTF-8 manifest.
22447 2023-03-09 Vladimir N. Makarov <vmakarov@redhat.com>
22449 * lra-constraints.cc (process_alt_operands): Use operand modes for
22450 clobbered regs instead of the biggest access mode.
22452 2023-03-09 Richard Biener <rguenther@suse.de>
22454 PR middle-end/108995
22455 * fold-const.cc (extract_muldiv_1): Avoid folding
22456 (CST * b) / CST2 when sanitizing overflow and we rely on
22457 overflow being undefined.
22459 2023-03-09 Jakub Jelinek <jakub@redhat.com>
22460 Richard Biener <rguenther@suse.de>
22462 PR tree-optimization/109008
22463 * range-op-float.cc (float_widen_lhs_range): New function.
22464 (foperator_plus::op1_range, foperator_minus::op1_range,
22465 foperator_minus::op2_range, foperator_mult::op1_range,
22466 foperator_div::op1_range, foperator_div::op2_range): Use it.
22468 2023-03-07 Jonathan Grant <jg@jguk.org>
22471 * doc/invoke.texi (Instrumentation Options): Clarify
22472 LeakSanitizer behavior.
22474 2023-03-07 Benson Muite <benson_muite@emailplus.org>
22476 * doc/install.texi (Prerequisites): Add link to gmplib.org.
22478 2023-03-07 Pan Li <pan2.li@intel.com>
22479 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22483 * config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
22485 * config/riscv/riscv.cc (riscv_v_adjust_precision): New.
22486 * config/riscv/riscv.h (riscv_v_adjust_precision): New.
22487 * genmodes.cc (adj_precision): New.
22488 (ADJUST_PRECISION): New.
22489 (emit_mode_adjustments): Handle ADJUST_PRECISION.
22491 2023-03-07 Hans-Peter Nilsson <hp@axis.com>
22493 * doc/sourcebuild.texi: Document check_effective_target_tail_call.
22495 2023-03-06 Paul-Antoine Arras <pa@codesourcery.com>
22497 * config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for
22498 {s|u}{max|min} in QI, HI and DI modes.
22499 (<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode.
22500 (cond_<fexpander><mode>): Add pattern for cond_f{max|min}.
22501 (cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}.
22502 * config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be
22505 2023-03-06 Richard Biener <rguenther@suse.de>
22507 PR tree-optimization/109025
22508 * tree-vect-loop.cc (vect_is_simple_reduction): Verify
22509 the inner LC PHI use is the inner loop PHI latch definition
22510 before classifying an outer PHI as double reduction.
22512 2023-03-06 Jan Hubicka <hubicka@ucw.cz>
22515 * config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
22517 (X86_TUNE_USE_SCATTER_4PARTS): Likewise.
22518 (X86_TUNE_USE_SCATTER): Likewise.
22520 2023-03-06 Xi Ruoyao <xry111@xry111.site>
22523 * config/loongarch/loongarch.h (FP_RETURN): Use
22524 TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
22525 (UNITS_PER_FP_ARG): Likewise.
22527 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22529 * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
22530 (pass_vsetvl::backward_demand_fusion): Ditto.
22532 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
22533 SiYu Wu <siyu@isrc.iscas.ac.cn>
22535 * config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
22537 (riscv_sm3p1_<mode>): New.
22538 (riscv_sm4ed_<mode>): New.
22539 (riscv_sm4ks_<mode>): New.
22540 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKSED's and ZKSH's AVAIL.
22541 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): Add ZKSED's and
22542 ZKSH's built-in functions.
22544 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
22545 SiYu Wu <siyu@isrc.iscas.ac.cn>
22547 * config/riscv/crypto.md (riscv_sha256sig0_<mode>): Add ZKNH's instructions.
22548 (riscv_sha256sig1_<mode>): New.
22549 (riscv_sha256sum0_<mode>): New.
22550 (riscv_sha256sum1_<mode>): New.
22551 (riscv_sha512sig0h): New.
22552 (riscv_sha512sig0l): New.
22553 (riscv_sha512sig1h): New.
22554 (riscv_sha512sig1l): New.
22555 (riscv_sha512sum0r): New.
22556 (riscv_sha512sum1r): New.
22557 (riscv_sha512sig0): New.
22558 (riscv_sha512sig1): New.
22559 (riscv_sha512sum0): New.
22560 (riscv_sha512sum1): New.
22561 * config/riscv/riscv-builtins.cc (AVAIL): And ZKNH's AVAIL.
22562 * config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): And ZKNH's
22563 built-in functions.
22564 (DIRECT_BUILTIN): Add new.
22566 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
22567 SiYu Wu <siyu@isrc.iscas.ac.cn>
22569 * config/riscv/constraints.md (D03): Add constants of bs and rnum.
22571 * config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions.
22572 (riscv_aes32dsmi): New.
22573 (riscv_aes64ds): New.
22574 (riscv_aes64dsm): New.
22575 (riscv_aes64im): New.
22576 (riscv_aes64ks1i): New.
22577 (riscv_aes64ks2): New.
22578 (riscv_aes32esi): New.
22579 (riscv_aes32esmi): New.
22580 (riscv_aes64es): New.
22581 (riscv_aes64esm): New.
22582 * config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL.
22583 * config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and
22584 ZKNE's built-in functions.
22586 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
22587 SiYu Wu <siyu@isrc.iscas.ac.cn>
22589 * config/riscv/bitmanip.md: Add ZBKB's instructions.
22590 * config/riscv/riscv-builtins.cc (AVAIL): Add new.
22591 * config/riscv/riscv.md: Add new type for crypto instructions.
22592 * config/riscv/crypto.md: Add Scalar Cryptography extension's machine
22594 * config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
22595 extension's built-in function file.
22597 2023-03-05 Liao Shihua <shihua@iscas.ac.cn>
22598 SiYu Wu <siyu@isrc.iscas.ac.cn>
22600 * config/riscv/riscv-builtins.cc (RISCV_FTYPE_NAME2): New.
22601 (RISCV_FTYPE_NAME3): New.
22602 (RISCV_ATYPE_QI): New.
22603 (RISCV_ATYPE_HI): New.
22604 (RISCV_FTYPE_ATYPES2): New.
22605 (RISCV_FTYPE_ATYPES3): New.
22606 * config/riscv/riscv-ftypes.def (2): New.
22609 2023-03-05 Vineet Gupta <vineetg@rivosinc.com>
22611 * config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
22614 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22615 kito-cheng <kito.cheng@sifive.com>
22617 * config/riscv/predicates.md (vector_any_register_operand): New predicate.
22618 * config/riscv/riscv-c.cc (riscv_check_builtin_call): New function.
22619 (riscv_register_pragmas): Add builtin function check call.
22620 * config/riscv/riscv-protos.h (RVV_VUNDEF): Adapt macro.
22621 (check_builtin_call): New function.
22622 * config/riscv/riscv-vector-builtins-bases.cc (class vundefined): New class.
22623 (class vreinterpret): Ditto.
22624 (class vlmul_ext): Ditto.
22625 (class vlmul_trunc): Ditto.
22626 (class vset): Ditto.
22627 (class vget): Ditto.
22629 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22630 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
22646 (vundefined): Add new intrinsic.
22647 (vreinterpret): Ditto.
22648 (vlmul_ext): Ditto.
22649 (vlmul_trunc): Ditto.
22652 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): New class.
22653 (struct narrow_alu_def): Ditto.
22654 (struct reduc_alu_def): Ditto.
22655 (struct vundefined_def): Ditto.
22656 (struct misc_def): Ditto.
22657 (struct vset_def): Ditto.
22658 (struct vget_def): Ditto.
22660 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
22661 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EEW8_INTERPRET_OPS): New def.
22662 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
22663 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
22664 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
22665 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
22666 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
22667 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
22668 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
22669 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
22670 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
22671 (DEF_RVV_LMUL1_OPS): Ditto.
22672 (DEF_RVV_LMUL2_OPS): Ditto.
22673 (DEF_RVV_LMUL4_OPS): Ditto.
22674 (vint16mf4_t): Ditto.
22675 (vint16mf2_t): Ditto.
22676 (vint16m1_t): Ditto.
22677 (vint16m2_t): Ditto.
22678 (vint16m4_t): Ditto.
22679 (vint16m8_t): Ditto.
22680 (vint32mf2_t): Ditto.
22681 (vint32m1_t): Ditto.
22682 (vint32m2_t): Ditto.
22683 (vint32m4_t): Ditto.
22684 (vint32m8_t): Ditto.
22685 (vint64m1_t): Ditto.
22686 (vint64m2_t): Ditto.
22687 (vint64m4_t): Ditto.
22688 (vint64m8_t): Ditto.
22689 (vuint16mf4_t): Ditto.
22690 (vuint16mf2_t): Ditto.
22691 (vuint16m1_t): Ditto.
22692 (vuint16m2_t): Ditto.
22693 (vuint16m4_t): Ditto.
22694 (vuint16m8_t): Ditto.
22695 (vuint32mf2_t): Ditto.
22696 (vuint32m1_t): Ditto.
22697 (vuint32m2_t): Ditto.
22698 (vuint32m4_t): Ditto.
22699 (vuint32m8_t): Ditto.
22700 (vuint64m1_t): Ditto.
22701 (vuint64m2_t): Ditto.
22702 (vuint64m4_t): Ditto.
22703 (vuint64m8_t): Ditto.
22704 (vint8mf4_t): Ditto.
22705 (vint8mf2_t): Ditto.
22706 (vint8m1_t): Ditto.
22707 (vint8m2_t): Ditto.
22708 (vint8m4_t): Ditto.
22709 (vint8m8_t): Ditto.
22710 (vuint8mf4_t): Ditto.
22711 (vuint8mf2_t): Ditto.
22712 (vuint8m1_t): Ditto.
22713 (vuint8m2_t): Ditto.
22714 (vuint8m4_t): Ditto.
22715 (vuint8m8_t): Ditto.
22716 (vint8mf8_t): Ditto.
22717 (vuint8mf8_t): Ditto.
22718 (vfloat32mf2_t): Ditto.
22719 (vfloat32m1_t): Ditto.
22720 (vfloat32m2_t): Ditto.
22721 (vfloat32m4_t): Ditto.
22722 (vfloat64m1_t): Ditto.
22723 (vfloat64m2_t): Ditto.
22724 (vfloat64m4_t): Ditto.
22725 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
22726 (DEF_RVV_EEW8_INTERPRET_OPS): Ditto.
22727 (DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
22728 (DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
22729 (DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
22730 (DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
22731 (DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
22732 (DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
22733 (DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
22734 (DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
22735 (DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
22736 (DEF_RVV_LMUL1_OPS): Ditto.
22737 (DEF_RVV_LMUL2_OPS): Ditto.
22738 (DEF_RVV_LMUL4_OPS): Ditto.
22739 (DEF_RVV_TYPE_INDEX): Ditto.
22740 (required_extensions_p): Adapt for new intrinsic support/
22741 (get_required_extensions): New function.
22742 (check_required_extensions): Ditto.
22743 (unsigned_base_type_p): Remove.
22744 (rvv_arg_type_info::get_scalar_ptr_type): New function.
22745 (get_mode_for_bitsize): Remove.
22746 (rvv_arg_type_info::get_scalar_const_ptr_type): New function.
22747 (rvv_arg_type_info::get_base_vector_type): Ditto.
22748 (rvv_arg_type_info::get_function_type_index): Ditto.
22749 (DEF_RVV_BASE_TYPE): New def.
22750 (function_builder::apply_predication): New class.
22751 (function_expander::mask_mode): Ditto.
22752 (function_checker::function_checker): Ditto.
22753 (function_checker::report_non_ice): Ditto.
22754 (function_checker::report_out_of_range): Ditto.
22755 (function_checker::require_immediate): Ditto.
22756 (function_checker::require_immediate_range): Ditto.
22757 (function_checker::check): Ditto.
22758 (check_builtin_call): Ditto.
22759 * config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): New def.
22760 (DEF_RVV_BASE_TYPE): Ditto.
22761 (DEF_RVV_TYPE_INDEX): Ditto.
22762 (vbool64_t): Ditto.
22763 (vbool32_t): Ditto.
22764 (vbool16_t): Ditto.
22769 (vuint8mf8_t): Ditto.
22770 (vuint8mf4_t): Ditto.
22771 (vuint8mf2_t): Ditto.
22772 (vuint8m1_t): Ditto.
22773 (vuint8m2_t): Ditto.
22774 (vint8m4_t): Ditto.
22775 (vuint8m4_t): Ditto.
22776 (vint8m8_t): Ditto.
22777 (vuint8m8_t): Ditto.
22778 (vint16mf4_t): Ditto.
22779 (vuint16mf2_t): Ditto.
22780 (vuint16m1_t): Ditto.
22781 (vuint16m2_t): Ditto.
22782 (vuint16m4_t): Ditto.
22783 (vuint16m8_t): Ditto.
22784 (vint32mf2_t): Ditto.
22785 (vuint32m1_t): Ditto.
22786 (vuint32m2_t): Ditto.
22787 (vuint32m4_t): Ditto.
22788 (vuint32m8_t): Ditto.
22789 (vuint64m1_t): Ditto.
22790 (vuint64m2_t): Ditto.
22791 (vuint64m4_t): Ditto.
22792 (vuint64m8_t): Ditto.
22793 (vfloat32mf2_t): Ditto.
22794 (vfloat32m1_t): Ditto.
22795 (vfloat32m2_t): Ditto.
22796 (vfloat32m4_t): Ditto.
22797 (vfloat32m8_t): Ditto.
22798 (vfloat64m1_t): Ditto.
22799 (vfloat64m4_t): Ditto.
22800 (vector): Move it def.
22803 (signed_vector): Ditto.
22804 (unsigned_vector): Ditto.
22805 (unsigned_scalar): Ditto.
22806 (vector_ptr): Ditto.
22807 (scalar_ptr): Ditto.
22808 (scalar_const_ptr): Ditto.
22812 (unsigned_long): Ditto.
22814 (eew8_index): Ditto.
22815 (eew16_index): Ditto.
22816 (eew32_index): Ditto.
22817 (eew64_index): Ditto.
22818 (shift_vector): Ditto.
22819 (double_trunc_vector): Ditto.
22820 (quad_trunc_vector): Ditto.
22821 (oct_trunc_vector): Ditto.
22822 (double_trunc_scalar): Ditto.
22823 (double_trunc_signed_vector): Ditto.
22824 (double_trunc_unsigned_vector): Ditto.
22825 (double_trunc_unsigned_scalar): Ditto.
22826 (double_trunc_float_vector): Ditto.
22827 (float_vector): Ditto.
22828 (lmul1_vector): Ditto.
22829 (widen_lmul1_vector): Ditto.
22830 (eew8_interpret): Ditto.
22831 (eew16_interpret): Ditto.
22832 (eew32_interpret): Ditto.
22833 (eew64_interpret): Ditto.
22834 (vlmul_ext_x2): Ditto.
22835 (vlmul_ext_x4): Ditto.
22836 (vlmul_ext_x8): Ditto.
22837 (vlmul_ext_x16): Ditto.
22838 (vlmul_ext_x32): Ditto.
22839 (vlmul_ext_x64): Ditto.
22840 * config/riscv/riscv-vector-builtins.h (DEF_RVV_BASE_TYPE): New def.
22841 (struct function_type_info): New function.
22842 (struct rvv_arg_type_info): Ditto.
22843 (class function_checker): New class.
22844 (rvv_arg_type_info::get_scalar_type): New function.
22845 (rvv_arg_type_info::get_vector_type): Ditto.
22846 (function_expander::ret_mode): New function.
22847 (function_checker::arg_mode): Ditto.
22848 (function_checker::ret_mode): Ditto.
22849 * config/riscv/t-riscv: Add generator.
22850 * config/riscv/vector-iterators.md: New iterators.
22851 * config/riscv/vector.md (vundefined<mode>): New pattern.
22852 (@vundefined<mode>): Ditto.
22853 (@vreinterpret<mode>): Ditto.
22854 (@vlmul_extx2<mode>): Ditto.
22855 (@vlmul_extx4<mode>): Ditto.
22856 (@vlmul_extx8<mode>): Ditto.
22857 (@vlmul_extx16<mode>): Ditto.
22858 (@vlmul_extx32<mode>): Ditto.
22859 (@vlmul_extx64<mode>): Ditto.
22860 (*vlmul_extx2<mode>): Ditto.
22861 (*vlmul_extx4<mode>): Ditto.
22862 (*vlmul_extx8<mode>): Ditto.
22863 (*vlmul_extx16<mode>): Ditto.
22864 (*vlmul_extx32<mode>): Ditto.
22865 (*vlmul_extx64<mode>): Ditto.
22866 * config/riscv/genrvv-type-indexer.cc: New file.
22868 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22870 * config/riscv/riscv-protos.h (enum vlen_enum): New enum.
22871 (slide1_sew64_helper): New function.
22872 * config/riscv/riscv-v.cc (compute_vlmax): Ditto.
22873 (get_unknown_min_value): Ditto.
22874 (force_vector_length_operand): Ditto.
22875 (gen_no_side_effects_vsetvl_rtx): Ditto.
22876 (get_vl_x2_rtx): Ditto.
22877 (slide1_sew64_helper): Ditto.
22878 * config/riscv/riscv-vector-builtins-bases.cc (class slideop): New class.
22879 (class vrgather): Ditto.
22880 (class vrgatherei16): Ditto.
22881 (class vcompress): Ditto.
22883 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22884 * config/riscv/riscv-vector-builtins-functions.def (vslideup): Ditto.
22885 (vslidedown): Ditto.
22886 (vslide1up): Ditto.
22887 (vslide1down): Ditto.
22888 (vfslide1up): Ditto.
22889 (vfslide1down): Ditto.
22891 (vrgatherei16): Ditto.
22892 (vcompress): Ditto.
22893 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EI16_OPS): New macro.
22894 (vint8mf8_t): Ditto.
22895 (vint8mf4_t): Ditto.
22896 (vint8mf2_t): Ditto.
22897 (vint8m1_t): Ditto.
22898 (vint8m2_t): Ditto.
22899 (vint8m4_t): Ditto.
22900 (vint16mf4_t): Ditto.
22901 (vint16mf2_t): Ditto.
22902 (vint16m1_t): Ditto.
22903 (vint16m2_t): Ditto.
22904 (vint16m4_t): Ditto.
22905 (vint16m8_t): Ditto.
22906 (vint32mf2_t): Ditto.
22907 (vint32m1_t): Ditto.
22908 (vint32m2_t): Ditto.
22909 (vint32m4_t): Ditto.
22910 (vint32m8_t): Ditto.
22911 (vint64m1_t): Ditto.
22912 (vint64m2_t): Ditto.
22913 (vint64m4_t): Ditto.
22914 (vint64m8_t): Ditto.
22915 (vuint8mf8_t): Ditto.
22916 (vuint8mf4_t): Ditto.
22917 (vuint8mf2_t): Ditto.
22918 (vuint8m1_t): Ditto.
22919 (vuint8m2_t): Ditto.
22920 (vuint8m4_t): Ditto.
22921 (vuint16mf4_t): Ditto.
22922 (vuint16mf2_t): Ditto.
22923 (vuint16m1_t): Ditto.
22924 (vuint16m2_t): Ditto.
22925 (vuint16m4_t): Ditto.
22926 (vuint16m8_t): Ditto.
22927 (vuint32mf2_t): Ditto.
22928 (vuint32m1_t): Ditto.
22929 (vuint32m2_t): Ditto.
22930 (vuint32m4_t): Ditto.
22931 (vuint32m8_t): Ditto.
22932 (vuint64m1_t): Ditto.
22933 (vuint64m2_t): Ditto.
22934 (vuint64m4_t): Ditto.
22935 (vuint64m8_t): Ditto.
22936 (vfloat32mf2_t): Ditto.
22937 (vfloat32m1_t): Ditto.
22938 (vfloat32m2_t): Ditto.
22939 (vfloat32m4_t): Ditto.
22940 (vfloat32m8_t): Ditto.
22941 (vfloat64m1_t): Ditto.
22942 (vfloat64m2_t): Ditto.
22943 (vfloat64m4_t): Ditto.
22944 (vfloat64m8_t): Ditto.
22945 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_EI16_OPS): Ditto.
22946 * config/riscv/riscv.md: Adjust RVV instruction types.
22947 * config/riscv/vector-iterators.md (down): New iterator.
22948 (=vd,vr): New attribute.
22949 (UNSPEC_VSLIDE1UP): New unspec.
22950 * config/riscv/vector.md (@pred_slide<ud><mode>): New pattern.
22951 (*pred_slide<ud><mode>): Ditto.
22952 (*pred_slide<ud><mode>_extended): Ditto.
22953 (@pred_gather<mode>): Ditto.
22954 (@pred_gather<mode>_scalar): Ditto.
22955 (@pred_gatherei16<mode>): Ditto.
22956 (@pred_compress<mode>): Ditto.
22958 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22960 * config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
22962 2023-03-05 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
22964 * config/riscv/constraints.md (Wb1): New constraint.
22965 * config/riscv/predicates.md
22966 (vector_least_significant_set_mask_operand): New predicate.
22967 (vector_broadcast_mask_operand): Ditto.
22968 * config/riscv/riscv-protos.h (enum vlmul_type): Adjust.
22969 (gen_scalar_move_mask): New function.
22970 * config/riscv/riscv-v.cc (gen_scalar_move_mask): Ditto.
22971 * config/riscv/riscv-vector-builtins-bases.cc (class vmv): New class.
22972 (class vmv_s): Ditto.
22974 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
22975 * config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
22979 * config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
22981 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
22982 * config/riscv/riscv-vector-builtins.cc (function_expander::mask_mode): Ditto.
22983 (function_expander::use_exact_insn): New function.
22984 (function_expander::use_contiguous_load_insn): New function.
22985 (function_expander::use_contiguous_store_insn): New function.
22986 (function_expander::use_ternop_insn): New function.
22987 (function_expander::use_widen_ternop_insn): New function.
22988 (function_expander::use_scalar_move_insn): New function.
22989 * config/riscv/riscv-vector-builtins.def (s): New operand suffix.
22990 * config/riscv/riscv-vector-builtins.h
22991 (function_expander::add_scalar_move_mask_operand): New class.
22992 * config/riscv/riscv-vsetvl.cc (ignore_vlmul_insn_p): New function.
22993 (scalar_move_insn_p): Ditto.
22994 (has_vsetvl_killed_avl_p): Ditto.
22995 (anticipatable_occurrence_p): Ditto.
22996 (insert_vsetvl): Ditto.
22997 (get_vl_vtype_info): Ditto.
22998 (calculate_sew): Ditto.
22999 (calculate_vlmul): Ditto.
23000 (incompatible_avl_p): Ditto.
23001 (different_sew_p): Ditto.
23002 (different_lmul_p): Ditto.
23003 (different_ratio_p): Ditto.
23004 (different_tail_policy_p): Ditto.
23005 (different_mask_policy_p): Ditto.
23006 (possible_zero_avl_p): Ditto.
23007 (first_ratio_invalid_for_second_sew_p): Ditto.
23008 (first_ratio_invalid_for_second_lmul_p): Ditto.
23009 (second_ratio_invalid_for_first_sew_p): Ditto.
23010 (second_ratio_invalid_for_first_lmul_p): Ditto.
23011 (second_sew_less_than_first_sew_p): Ditto.
23012 (first_sew_less_than_second_sew_p): Ditto.
23013 (compare_lmul): Ditto.
23014 (second_lmul_less_than_first_lmul_p): Ditto.
23015 (first_lmul_less_than_second_lmul_p): Ditto.
23016 (first_ratio_less_than_second_ratio_p): Ditto.
23017 (second_ratio_less_than_first_ratio_p): Ditto.
23018 (DEF_INCOMPATIBLE_COND): Ditto.
23019 (greatest_sew): Ditto.
23020 (first_sew): Ditto.
23021 (second_sew): Ditto.
23022 (first_vlmul): Ditto.
23023 (second_vlmul): Ditto.
23024 (first_ratio): Ditto.
23025 (second_ratio): Ditto.
23026 (vlmul_for_first_sew_second_ratio): Ditto.
23027 (ratio_for_second_sew_first_vlmul): Ditto.
23028 (DEF_SEW_LMUL_FUSE_RULE): Ditto.
23029 (always_unavailable): Ditto.
23030 (avl_unavailable_p): Ditto.
23031 (sew_unavailable_p): Ditto.
23032 (lmul_unavailable_p): Ditto.
23033 (ge_sew_unavailable_p): Ditto.
23034 (ge_sew_lmul_unavailable_p): Ditto.
23035 (ge_sew_ratio_unavailable_p): Ditto.
23036 (DEF_UNAVAILABLE_COND): Ditto.
23037 (same_sew_lmul_demand_p): Ditto.
23038 (propagate_avl_across_demands_p): Ditto.
23039 (reg_available_p): Ditto.
23040 (avl_info::has_non_zero_avl): Ditto.
23041 (vl_vtype_info::has_non_zero_avl): Ditto.
23042 (vector_insn_info::operator>=): Refactor.
23043 (vector_insn_info::parse_insn): Adjust for scalar move.
23044 (vector_insn_info::demand_vl_vtype): Remove.
23045 (vector_insn_info::compatible_p): New function.
23046 (vector_insn_info::compatible_avl_p): Ditto.
23047 (vector_insn_info::compatible_vtype_p): Ditto.
23048 (vector_insn_info::available_p): Ditto.
23049 (vector_insn_info::merge): Ditto.
23050 (vector_insn_info::fuse_avl): Ditto.
23051 (vector_insn_info::fuse_sew_lmul): Ditto.
23052 (vector_insn_info::fuse_tail_policy): Ditto.
23053 (vector_insn_info::fuse_mask_policy): Ditto.
23054 (vector_insn_info::dump): Ditto.
23055 (vector_infos_manager::release): Ditto.
23056 (pass_vsetvl::compute_local_backward_infos): Adjust for scalar move support.
23057 (pass_vsetvl::get_backward_fusion_type): Adjust for scalar move support.
23058 (pass_vsetvl::hard_empty_block_p): Ditto.
23059 (pass_vsetvl::backward_demand_fusion): Ditto.
23060 (pass_vsetvl::forward_demand_fusion): Ditto.
23061 (pass_vsetvl::refine_vsetvls): Ditto.
23062 (pass_vsetvl::cleanup_vsetvls): Ditto.
23063 (pass_vsetvl::commit_vsetvls): Ditto.
23064 (pass_vsetvl::propagate_avl): Ditto.
23065 * config/riscv/riscv-vsetvl.h (enum demand_status): New class.
23066 (struct demands_pair): Ditto.
23067 (struct demands_cond): Ditto.
23068 (struct demands_fuse_rule): Ditto.
23069 * config/riscv/vector-iterators.md: New iterator.
23070 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
23071 (*pred_broadcast<mode>): Ditto.
23072 (*pred_broadcast<mode>_extended_scalar): Ditto.
23073 (@pred_extract_first<mode>): Ditto.
23074 (*pred_extract_first<mode>): Ditto.
23075 (@pred_extract_first_trunc<mode>): Ditto.
23076 * config/riscv/riscv-vsetvl.def: New file.
23078 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
23080 * config/riscv/bitmanip.md: allow 0 constant in max/min
23083 2023-03-05 Lin Sinan <sinan.lin@linux.alibaba.com>
23085 * config/riscv/bitmanip.md: Fix wrong index in the check.
23087 2023-03-04 Jakub Jelinek <jakub@redhat.com>
23089 PR middle-end/109006
23090 * vec.cc (test_auto_alias): Adjust comment for removal of
23092 * read-rtl-function.cc (function_reader::parse_block): Likewise.
23093 * gdbhooks.py: Likewise.
23095 2023-03-04 Jakub Jelinek <jakub@redhat.com>
23097 PR testsuite/108973
23098 * selftest-diagnostic.cc
23099 (test_diagnostic_context::test_diagnostic_context): Set
23100 caret_max_width to 80.
23102 2023-03-03 Alexandre Oliva <oliva@adacore.com>
23104 * gimple-ssa-warn-access.cc
23105 (pass_waccess::check_dangling_stores): Skip non-stores.
23107 2023-03-03 Alexandre Oliva <oliva@adacore.com>
23109 * config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
23110 after vmsr and vmrs, and lower the case of P0.
23112 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
23114 PR middle-end/109006
23115 * gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
23117 2023-03-03 Jonathan Wakely <jwakely@redhat.com>
23119 PR middle-end/109006
23120 * gdbhooks.py (VecPrinter): Adjust for new vec layout.
23122 2023-03-03 Jakub Jelinek <jakub@redhat.com>
23125 * gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
23126 Return immediately if OPT_Wnonnull or OPT_Wstringop_overflow_ is
23127 suppressed on stmt. For [static %E] warning, print access_nelts
23128 rather than access_size. Fix up comment wording.
23130 2023-03-03 Robin Dapp <rdapp@linux.ibm.com>
23132 * config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
23133 arch14 instead of z16.
23135 2023-03-03 Anthony Green <green@moxielogic.com>
23137 * config/moxie/moxie.cc (TARGET_LRA_P): Remove.
23139 2023-03-03 Anthony Green <green@moxielogic.com>
23141 * config/moxie/constraints.md (A, B, W): Change
23142 define_constraint to define_memory_constraint.
23144 2023-03-03 Xi Ruoyao <xry111@xry111.site>
23146 * toplev.cc (process_options): Fix the spelling of
23147 "-fstack-clash-protection".
23149 2023-03-03 Richard Biener <rguenther@suse.de>
23151 PR tree-optimization/109002
23152 * tree-ssa-pre.cc (compute_partial_antic_aux): Properly
23153 PHI-translate ANTIC_IN.
23155 2023-03-03 Jakub Jelinek <jakub@redhat.com>
23157 PR tree-optimization/108988
23158 * gimple-fold.cc (gimple_fold_builtin_fputs): Fold len to
23159 size_type_node before passing it as argument to fwrite. Formatting
23162 2023-03-03 Richard Biener <rguenther@suse.de>
23165 * config/i386/i386.opt (--param x86-stv-max-visits): New param.
23166 * doc/invoke.texi (--param x86-stv-max-visits): Document it.
23167 * config/i386/i386-features.h (scalar_chain::max_visits): New.
23168 (scalar_chain::build): Add bitmap parameter, return boolean.
23169 (scalar_chain::add_insn): Likewise.
23170 (scalar_chain::analyze_register_chain): Likewise.
23171 * config/i386/i386-features.cc (scalar_chain::scalar_chain):
23172 Initialize max_visits.
23173 (scalar_chain::analyze_register_chain): When we exhaust
23174 max_visits, abort. Also abort when running into any
23176 (scalar_chain::add_insn): Propagate abort.
23177 (scalar_chain::build): Likewise. When aborting amend
23178 the set of disallowed insn with the insns set.
23179 (convert_scalars_to_vector): Adjust. Do not convert aborted
23182 2023-03-03 Richard Biener <rguenther@suse.de>
23185 * dwarf2out.cc (dwarf2out_late_global_decl): Do not
23186 generate a DIE for a function scope static.
23188 2023-03-03 Alexandre Oliva <oliva@adacore.com>
23190 * config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
23192 2023-03-02 Jakub Jelinek <jakub@redhat.com>
23195 * target.h (emit_support_tinfos_callback): New typedef.
23196 * targhooks.h (default_emit_support_tinfos): Declare.
23197 * targhooks.cc (default_emit_support_tinfos): New function.
23198 * target.def (emit_support_tinfos): New target hook.
23199 * doc/tm.texi.in (emit_support_tinfos): Document it.
23200 * doc/tm.texi: Regenerated.
23201 * config/i386/i386.cc (ix86_emit_support_tinfos): New function.
23202 (TARGET_EMIT_SUPPORT_TINFOS): Redefine.
23204 2023-03-02 Vladimir N. Makarov <vmakarov@redhat.com>
23206 * ira-costs.cc: Include print-rtl.h.
23207 (record_reg_classes, scan_one_insn): Add code to print debug info.
23208 (record_operand_costs): Find and use smaller cost for hard reg
23211 2023-03-02 Kwok Cheung Yeung <kcy@codesourcery.com>
23212 Paul-Antoine Arras <pa@codesourcery.com>
23214 * builtins.cc (mathfn_built_in_explicit): New.
23215 * config/gcn/gcn.cc: Include case-cfn-macros.h.
23216 (mathfn_built_in_explicit): Add prototype.
23217 (gcn_vectorize_builtin_vectorized_function): New.
23218 (gcn_libc_has_function): New.
23219 (TARGET_LIBC_HAS_FUNCTION): Define.
23220 (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
23222 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
23224 PR tree-optimization/108979
23225 * tree-vect-stmts.cc (vectorizable_operation): Don't mask
23226 operations on invariants.
23228 2023-03-02 Robin Dapp <rdapp@linux.ibm.com>
23230 * config/s390/predicates.md (vll_bias_operand): Add -1 bias.
23231 * config/s390/s390.cc (s390_option_override_internal): Make
23232 partial vector usage the default from z13 on.
23233 * config/s390/vector.md (len_load_v16qi): Add.
23234 (len_store_v16qi): Add.
23236 2023-03-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
23238 * simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
23239 of constant 0 offset.
23241 2023-03-02 Robert Suchanek <robert.suchanek@imgtec.com>
23243 * config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
23245 * config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
23247 2023-03-02 Junxian Zhu <zhujunxian@oss.cipunited.com>
23249 * config.gcc: add -with-{no-}msa build option.
23250 * config/mips/mips.h: Likewise.
23251 * doc/install.texi: Likewise.
23253 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
23255 PR tree-optimization/108603
23256 * explow.cc (convert_memory_address_addr_space_1): Only wrap
23257 the result of a recursive call in a CONST if no instructions
23260 2023-03-02 Richard Sandiford <richard.sandiford@arm.com>
23262 PR tree-optimization/108430
23263 * tree-vect-stmts.cc (vectorizable_condition): Fix handling
23264 of inverted condition.
23266 2023-03-02 Jakub Jelinek <jakub@redhat.com>
23269 * fold-const.cc (native_interpret_expr) <case REAL_CST>: Before memcmp
23270 comparison copy the bytes from ptr to a temporary buffer and clearing
23271 padding bits in there.
23273 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
23275 PR middle-end/108545
23276 * gimplify.cc (struct tree_operand_hash_no_se): New.
23277 (omp_index_mapping_groups_1, omp_index_mapping_groups,
23278 omp_reindex_mapping_groups, omp_mapped_by_containing_struct,
23279 omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
23280 oacc_resolve_clause_dependencies, omp_build_struct_sibling_lists,
23281 gimplify_scan_omp_clauses): Use tree_operand_hash_no_se instead
23282 of tree_operand_hash.
23284 2023-03-01 LIU Hao <lh_mouse@126.com>
23287 * config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
23288 Remove the size limit `pch_VA_max_size`
23290 2023-03-01 Tobias Burnus <tobias@codesourcery.com>
23292 PR middle-end/108546
23293 * omp-low.cc (lower_omp_target): Remove optional handling
23294 on the receiver side, i.e. inside target (data), for
23297 2023-03-01 Jakub Jelinek <jakub@redhat.com>
23300 * cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
23301 and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
23303 2023-03-01 Richard Biener <rguenther@suse.de>
23305 PR tree-optimization/108970
23306 * tree-vect-loop-manip.cc (slpeel_can_duplicate_loop_p):
23307 Check we can copy the BBs.
23308 (slpeel_tree_duplicate_loop_to_edge_cfg): Avoid redundant
23310 (vect_do_peeling): Streamline error handling.
23312 2023-03-01 Richard Biener <rguenther@suse.de>
23314 PR tree-optimization/108950
23315 * tree-vect-patterns.cc (vect_recog_widen_sum_pattern):
23316 Check oprnd0 is defined in the loop.
23317 * tree-vect-loop.cc (vectorizable_reduction): Record all
23318 operands vector types, compute that of invariants and
23319 properly update their SLP nodes.
23321 2023-03-01 Kewen Lin <linkw@linux.ibm.com>
23324 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
23325 implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
23327 2023-02-28 Qing Zhao <qing.zhao@oracle.com>
23329 PR middle-end/107411
23330 PR middle-end/107411
23331 * gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
23333 * tree-ssa-uninit.cc (warn_uninit): Handle the case when the
23334 LHS varaible of a .DEFERRED_INIT call doesn't have a DECL_NAME.
23336 2023-02-28 Jakub Jelinek <jakub@redhat.com>
23338 PR sanitizer/108894
23339 * ubsan.cc (ubsan_expand_bounds_ifn): Emit index >= bound
23340 comparison rather than index > bound.
23341 * gimple-fold.cc (gimple_fold_call): Use tree_int_cst_lt
23342 rather than tree_int_cst_le for IFN_UBSAN_BOUND comparison.
23343 * doc/invoke.texi (-fsanitize=bounds): Document that whether
23344 flexible array member-like arrays are instrumented or not depends
23345 on -fstrict-flex-arrays* options of strict_flex_array attributes.
23346 (-fsanitize=bounds-strict): Document that flexible array members
23347 are not instrumented.
23349 2023-02-27 Uroš Bizjak <ubizjak@gmail.com>
23353 * config/i386/i386.md (fmodxf3): Enable for flag_finite_math_only only.
23354 (fmod<mode>3): Ditto.
23355 (fpremxf4_i387): Ditto.
23356 (reminderxf3): Ditto.
23357 (reminder<mode>3): Ditto.
23358 (fprem1xf4_i387): Ditto.
23360 2023-02-27 Roger Sayle <roger@nextmovesoftware.com>
23362 * simplify-rtx.cc (simplify_unary_operation_1) <case FFS>: Avoid
23363 generating FFS with mismatched operand and result modes, by using
23364 an explicit SIGN_EXTEND/ZERO_EXTEND.
23365 <case POPCOUNT>: Likewise, for POPCOUNT of ZERO_EXTEND.
23366 <case PARITY>: Likewise, for PARITY of {ZERO,SIGN}_EXTEND.
23368 2023-02-27 Patrick Palka <ppalka@redhat.com>
23370 * hash-table.h (gt_pch_nx(hash_table<D>)): Remove static.
23371 * lra-int.h (lra_change_class): Likewise.
23372 * recog.h (which_op_alt): Likewise.
23373 * sel-sched-ir.h (sel_bb_empty_or_nop_p): Declare inline
23376 2023-02-27 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
23378 * config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
23380 * config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
23382 * config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
23383 * config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
23385 2023-02-27 Max Filippov <jcmvbkbc@gmail.com>
23387 * config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
23388 (xtensa_get_config_v3): New functions.
23390 2023-02-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23392 * config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
23394 2023-02-27 Lulu Cheng <chenglulu@loongson.cn>
23396 * config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
23397 the macro to 0x1000000000.
23399 2023-02-25 Gaius Mulley <gaiusmod2@gmail.com>
23402 * doc/gm2.texi (-fm2-pathname): New option documented.
23403 (-fm2-pathnameI): New option documented.
23404 (-fm2-prefix=): New option documented.
23405 (-fruntime-modules=): Update default module list.
23407 2023-02-25 Max Filippov <jcmvbkbc@gmail.com>
23410 * config/xtensa/xtensa-protos.h
23411 (xtensa_prepare_expand_call): Rename to xtensa_expand_call.
23412 * config/xtensa/xtensa.cc (xtensa_prepare_expand_call): Rename
23413 to xtensa_expand_call.
23414 (xtensa_expand_call): Emit the call and add a clobber expression
23415 for the static chain to it in case of windowed ABI.
23416 * config/xtensa/xtensa.md (call, call_value, sibcall)
23417 (sibcall_value): Call xtensa_expand_call and complete expansion
23418 right after that call.
23420 2023-02-24 Richard Biener <rguenther@suse.de>
23422 * vec.h (vec<T, A, vl_embed>::m_vecdata): Remove.
23423 (vec<T, A, vl_embed>::m_vecpfx): Align as T to avoid
23424 changing alignment of vec<T, A, vl_embed> and simplifying
23426 (vec<T, A, vl_embed>::address): Compute as this + 1.
23427 (vec<T, A, vl_embed>::embedded_size): Use sizeof the
23428 vector instead of the offset of the m_vecdata member.
23429 (auto_vec<T, N>::m_data): Turn storage into
23430 uninitialized unsigned char.
23431 (auto_vec<T, N>::auto_vec): Allow allocation of one
23432 stack member. Initialize m_vec in a special way to
23433 avoid later stringop overflow diagnostics.
23434 * vec.cc (test_auto_alias): New.
23435 (vec_cc_tests): Call it.
23437 2023-02-24 Richard Biener <rguenther@suse.de>
23439 * vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
23440 take a const reference to the object, use address to
23442 (vec<T, A, vl_embed>::contains): Use address to access data.
23443 (vec<T, A, vl_embed>::operator[]): Use address instead of
23444 m_vecdata to access data.
23445 (vec<T, A, vl_embed>::iterate): Likewise.
23446 (vec<T, A, vl_embed>::copy): Likewise.
23447 (vec<T, A, vl_embed>::quick_push): Likewise.
23448 (vec<T, A, vl_embed>::pop): Likewise.
23449 (vec<T, A, vl_embed>::quick_insert): Likewise.
23450 (vec<T, A, vl_embed>::ordered_remove): Likewise.
23451 (vec<T, A, vl_embed>::unordered_remove): Likewise.
23452 (vec<T, A, vl_embed>::block_remove): Likewise.
23453 (vec<T, A, vl_heap>::address): Likewise.
23455 2023-02-24 Martin Liska <mliska@suse.cz>
23457 PR sanitizer/108834
23458 * asan.cc (asan_add_global): Use proper TU name for normal
23459 global variables (and aux_base_name for the artificial one).
23461 2023-02-24 Jakub Jelinek <jakub@redhat.com>
23463 * config/i386/i386-builtin.def: Update description of BDESC
23464 and BDESC_FIRST in file comment to include mask2.
23466 2023-02-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
23468 * config/aarch64/aarch64-cores.def (FLAGS): Update comment.
23470 2023-02-24 Jakub Jelinek <jakub@redhat.com>
23472 PR middle-end/108854
23473 * cgraphclones.cc (duplicate_thunk_for_node): If no parameter
23474 changes are needed, copy at least DECL_ARGUMENTS PARM_DECL
23475 nodes and adjust their DECL_CONTEXT.
23477 2023-02-24 Jakub Jelinek <jakub@redhat.com>
23480 * config/i386/i386-builtin.def (__builtin_ia32_cvtne2ps2bf16_v16bf,
23481 __builtin_ia32_cvtne2ps2bf16_v16bf_mask,
23482 __builtin_ia32_cvtne2ps2bf16_v16bf_maskz,
23483 __builtin_ia32_cvtne2ps2bf16_v8bf,
23484 __builtin_ia32_cvtne2ps2bf16_v8bf_mask,
23485 __builtin_ia32_cvtne2ps2bf16_v8bf_maskz,
23486 __builtin_ia32_cvtneps2bf16_v8sf_mask,
23487 __builtin_ia32_cvtneps2bf16_v8sf_maskz,
23488 __builtin_ia32_cvtneps2bf16_v4sf_mask,
23489 __builtin_ia32_cvtneps2bf16_v4sf_maskz,
23490 __builtin_ia32_dpbf16ps_v8sf, __builtin_ia32_dpbf16ps_v8sf_mask,
23491 __builtin_ia32_dpbf16ps_v8sf_maskz, __builtin_ia32_dpbf16ps_v4sf,
23492 __builtin_ia32_dpbf16ps_v4sf_mask,
23493 __builtin_ia32_dpbf16ps_v4sf_maskz): Require also
23494 OPTION_MASK_ISA_AVX512VL.
23496 2023-02-24 Sebastian Huber <sebastian.huber@embedded-brains.de>
23498 * config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
23499 Add non-compact 32-bit multilibs.
23501 2023-02-24 Junxian Zhu <zhujunxian@oss.cipunited.com>
23503 * config/mips/mips.md (*clo<mode>2): New pattern.
23505 2023-02-24 Prachi Godbole <prachi.godbole@imgtec.com>
23507 * config/mips/mips.h (machine_function): New variable
23508 use_hazard_barrier_return_p.
23509 * config/mips/mips.md (UNSPEC_JRHB): New unspec.
23510 (mips_hb_return_internal): New insn pattern.
23511 * config/mips/mips.cc (mips_attribute_table): Add attribute
23512 use_hazard_barrier_return.
23513 (mips_use_hazard_barrier_return_p): New static function.
23514 (mips_function_attr_inlinable_p): Likewise.
23515 (mips_compute_frame_info): Set use_hazard_barrier_return_p.
23516 Emit error for unsupported architecture choice.
23517 (mips_function_ok_for_sibcall, mips_can_use_return_insn):
23518 Return false for use_hazard_barrier_return.
23519 (mips_expand_epilogue): Emit hazard barrier return.
23520 * doc/extend.texi: Document use_hazard_barrier_return.
23522 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
23524 * config/xtensa/xtensa-dynconfig.cc (config.h, system.h)
23525 (coretypes.h, diagnostic.h, intl.h): Use "..." instead of <...>
23526 for the gcc-internal headers.
23528 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
23530 * config/xtensa/t-xtensa (xtensa-dynconfig.o): Use $(COMPILE)
23531 and $(POSTCOMPILE) instead of manual dependency listing.
23532 * config/xtensa/xtensa-dynconfig.c: Rename to ...
23533 * config/xtensa/xtensa-dynconfig.cc: ... this.
23535 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
23537 * doc/cfg.texi: Reorder index entries around @items.
23538 * doc/cpp.texi: Ditto.
23539 * doc/cppenv.texi: Ditto.
23540 * doc/cppopts.texi: Ditto.
23541 * doc/generic.texi: Ditto.
23542 * doc/install.texi: Ditto.
23543 * doc/extend.texi: Ditto.
23544 * doc/invoke.texi: Ditto.
23545 * doc/md.texi: Ditto.
23546 * doc/rtl.texi: Ditto.
23547 * doc/tm.texi.in: Ditto.
23548 * doc/trouble.texi: Ditto.
23549 * doc/tm.texi: Regenerate.
23551 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
23553 * config/xtensa/xtensa.md: New peephole2 pattern that eliminates
23554 the occurrence of general-purpose register used only once and for
23555 transferring intermediate value.
23557 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
23559 * config/xtensa/xtensa.cc (machine_function): Add new member
23560 'eliminated_callee_saved_bmp'.
23561 (xtensa_can_eliminate_callee_saved_reg_p): New function to
23562 determine whether the register can be eliminated or not.
23563 (xtensa_expand_prologue): Add invoking the above function and
23564 elimination the use of callee-saved register by using its stack
23565 slot through the stack pointer (or the frame pointer if needed)
23567 (xtensa_expand_prologue): Modify to not emit register restoration
23568 insn from its stack slot if the register is already eliminated.
23570 2023-02-23 Jakub Jelinek <jakub@redhat.com>
23572 PR translation/108890
23573 * config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
23574 around fatal_error format strings.
23576 2023-02-23 Richard Biener <rguenther@suse.de>
23578 * tree-ssa-structalias.cc (handle_lhs_call): Do not
23579 re-create rhsc, only truncate it.
23581 2023-02-23 Jakub Jelinek <jakub@redhat.com>
23583 PR middle-end/106258
23584 * ipa-prop.cc (try_make_edge_direct_virtual_call): Handle
23585 BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
23587 2023-02-23 Richard Biener <rguenther@suse.de>
23589 * tree-if-conv.cc (tree_if_conversion): Properly manage
23590 memory of refs and the contained data references.
23592 2023-02-23 Richard Biener <rguenther@suse.de>
23594 PR tree-optimization/108888
23595 * tree-if-conv.cc (if_convertible_stmt_p): Set PLF_2 on
23596 calls to predicate.
23597 (predicate_statements): Only predicate calls with PLF_2.
23599 2023-02-23 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
23601 * config/xtensa/xtensa.md
23602 (zero_cost_loop_start, zero_cost_loop_end, loop_end):
23603 Add missing "SI:" to PLUS RTXes.
23605 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
23608 * config/xtensa/xtensa.cc (xtensa_expand_epilogue):
23609 Emit (use (reg:SI A0_REG)) at the end in the sibling call
23610 (i.e. the same place as (return) in the normal call).
23612 2023-02-23 Max Filippov <jcmvbkbc@gmail.com>
23615 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
23618 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
23620 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
23621 (sibcall_value, sibcall_value_internal): Add 'use' expression
23624 2023-02-23 Arsen Arsenović <arsen@aarsen.me>
23626 * doc/cppdiropts.texi: Reorder @opindex commands to precede
23627 @items they relate to.
23628 * doc/cppopts.texi: Ditto.
23629 * doc/cppwarnopts.texi: Ditto.
23630 * doc/invoke.texi: Ditto.
23631 * doc/lto.texi: Ditto.
23633 2023-02-22 Andrew Stubbs <ams@codesourcery.com>
23635 * internal-fn.cc (expand_MASK_CALL): New.
23636 * internal-fn.def (MASK_CALL): New.
23637 * internal-fn.h (expand_MASK_CALL): New prototype.
23638 * omp-simd-clone.cc (simd_clone_adjust_argument_types): Set vector_type
23639 for mask arguments also.
23640 * tree-if-conv.cc: Include cgraph.h.
23641 (if_convertible_stmt_p): Do if conversions for calls to SIMD calls.
23642 (predicate_statements): Convert functions to IFN_MASK_CALL.
23643 * tree-vect-loop.cc (vect_get_datarefs_in_loop): Recognise
23644 IFN_MASK_CALL as a SIMD function call.
23645 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
23646 IFN_MASK_CALL as an inbranch SIMD function call.
23647 Generate the mask vector arguments.
23649 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23651 * config/riscv/riscv-vector-builtins-bases.cc (class reducop): New class.
23652 (class widen_reducop): Ditto.
23653 (class freducop): Ditto.
23654 (class widen_freducop): Ditto.
23656 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
23657 * config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
23666 (vwredsumu): Ditto.
23667 (vfredusum): Ditto.
23668 (vfredosum): Ditto.
23671 (vfwredosum): Ditto.
23672 (vfwredusum): Ditto.
23673 * config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
23675 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
23676 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WI_OPS): New macro.
23677 (DEF_RVV_WU_OPS): Ditto.
23678 (DEF_RVV_WF_OPS): Ditto.
23679 (vint8mf8_t): Ditto.
23680 (vint8mf4_t): Ditto.
23681 (vint8mf2_t): Ditto.
23682 (vint8m1_t): Ditto.
23683 (vint8m2_t): Ditto.
23684 (vint8m4_t): Ditto.
23685 (vint8m8_t): Ditto.
23686 (vint16mf4_t): Ditto.
23687 (vint16mf2_t): Ditto.
23688 (vint16m1_t): Ditto.
23689 (vint16m2_t): Ditto.
23690 (vint16m4_t): Ditto.
23691 (vint16m8_t): Ditto.
23692 (vint32mf2_t): Ditto.
23693 (vint32m1_t): Ditto.
23694 (vint32m2_t): Ditto.
23695 (vint32m4_t): Ditto.
23696 (vint32m8_t): Ditto.
23697 (vuint8mf8_t): Ditto.
23698 (vuint8mf4_t): Ditto.
23699 (vuint8mf2_t): Ditto.
23700 (vuint8m1_t): Ditto.
23701 (vuint8m2_t): Ditto.
23702 (vuint8m4_t): Ditto.
23703 (vuint8m8_t): Ditto.
23704 (vuint16mf4_t): Ditto.
23705 (vuint16mf2_t): Ditto.
23706 (vuint16m1_t): Ditto.
23707 (vuint16m2_t): Ditto.
23708 (vuint16m4_t): Ditto.
23709 (vuint16m8_t): Ditto.
23710 (vuint32mf2_t): Ditto.
23711 (vuint32m1_t): Ditto.
23712 (vuint32m2_t): Ditto.
23713 (vuint32m4_t): Ditto.
23714 (vuint32m8_t): Ditto.
23715 (vfloat32mf2_t): Ditto.
23716 (vfloat32m1_t): Ditto.
23717 (vfloat32m2_t): Ditto.
23718 (vfloat32m4_t): Ditto.
23719 (vfloat32m8_t): Ditto.
23720 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WI_OPS): Ditto.
23721 (DEF_RVV_WU_OPS): Ditto.
23722 (DEF_RVV_WF_OPS): Ditto.
23723 (required_extensions_p): Add reduction support.
23724 (rvv_arg_type_info::get_base_vector_type): Ditto.
23725 (rvv_arg_type_info::get_tree_type): Ditto.
23726 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
23727 * config/riscv/riscv.md: Ditto.
23728 * config/riscv/vector-iterators.md (minu): Ditto.
23729 * config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): New patern.
23730 (@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
23731 (@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Ditto.
23732 (@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>):Ditto.
23733 (@pred_reduc_plus<order><mode><vlmul1>): Ditto.
23734 (@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
23735 (@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
23737 2023-02-22 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
23739 * config/riscv/iterators.md: New iterator.
23740 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class.
23741 (enum ternop_type): New enum.
23742 (class vmacc): New class.
23743 (class imac): Ditto.
23744 (class vnmsac): Ditto.
23745 (enum widen_ternop_type): New enum.
23746 (class vmadd): Ditto.
23747 (class vnmsub): Ditto.
23748 (class iwmac): Ditto.
23749 (class vwmacc): Ditto.
23750 (class vwmaccu): Ditto.
23751 (class vwmaccsu): Ditto.
23752 (class vwmaccus): Ditto.
23753 (class reverse_binop): Ditto.
23754 (class vfmacc): Ditto.
23755 (class vfnmsac): Ditto.
23756 (class vfmadd): Ditto.
23757 (class vfnmsub): Ditto.
23758 (class vfnmacc): Ditto.
23759 (class vfmsac): Ditto.
23760 (class vfnmadd): Ditto.
23761 (class vfmsub): Ditto.
23762 (class vfwmacc): Ditto.
23763 (class vfwnmacc): Ditto.
23764 (class vfwmsac): Ditto.
23765 (class vfwnmsac): Ditto.
23766 (class float_misc): Ditto.
23767 (class fcmp): Ditto.
23768 (class vfclass): Ditto.
23769 (class vfcvt_x): Ditto.
23770 (class vfcvt_rtz_x): Ditto.
23771 (class vfcvt_f): Ditto.
23772 (class vfwcvt_x): Ditto.
23773 (class vfwcvt_rtz_x): Ditto.
23774 (class vfwcvt_f): Ditto.
23775 (class vfncvt_x): Ditto.
23776 (class vfncvt_rtz_x): Ditto.
23777 (class vfncvt_f): Ditto.
23778 (class vfncvt_rod_f): Ditto.
23780 * config/riscv/riscv-vector-builtins-bases.h:
23781 * config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
23825 (vfcvt_rtz_x): Ditto.
23826 (vfcvt_rtz_xu): Ditto.
23829 (vfwcvt_xu): Ditto.
23830 (vfwcvt_rtz_x): Ditto.
23831 (vfwcvt_rtz_xu): Ditto.
23834 (vfncvt_xu): Ditto.
23835 (vfncvt_rtz_x): Ditto.
23836 (vfncvt_rtz_xu): Ditto.
23838 (vfncvt_rod_f): Ditto.
23839 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
23840 (struct move_def): Ditto.
23841 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTF_OPS): New macro.
23842 (DEF_RVV_CONVERT_I_OPS): Ditto.
23843 (DEF_RVV_CONVERT_U_OPS): Ditto.
23844 (DEF_RVV_WCONVERT_I_OPS): Ditto.
23845 (DEF_RVV_WCONVERT_U_OPS): Ditto.
23846 (DEF_RVV_WCONVERT_F_OPS): Ditto.
23847 (vfloat64m1_t): Ditto.
23848 (vfloat64m2_t): Ditto.
23849 (vfloat64m4_t): Ditto.
23850 (vfloat64m8_t): Ditto.
23851 (vint32mf2_t): Ditto.
23852 (vint32m1_t): Ditto.
23853 (vint32m2_t): Ditto.
23854 (vint32m4_t): Ditto.
23855 (vint32m8_t): Ditto.
23856 (vint64m1_t): Ditto.
23857 (vint64m2_t): Ditto.
23858 (vint64m4_t): Ditto.
23859 (vint64m8_t): Ditto.
23860 (vuint32mf2_t): Ditto.
23861 (vuint32m1_t): Ditto.
23862 (vuint32m2_t): Ditto.
23863 (vuint32m4_t): Ditto.
23864 (vuint32m8_t): Ditto.
23865 (vuint64m1_t): Ditto.
23866 (vuint64m2_t): Ditto.
23867 (vuint64m4_t): Ditto.
23868 (vuint64m8_t): Ditto.
23869 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_CONVERT_I_OPS): Ditto.
23870 (DEF_RVV_CONVERT_U_OPS): Ditto.
23871 (DEF_RVV_WCONVERT_I_OPS): Ditto.
23872 (DEF_RVV_WCONVERT_U_OPS): Ditto.
23873 (DEF_RVV_WCONVERT_F_OPS): Ditto.
23874 (DEF_RVV_F_OPS): Ditto.
23875 (DEF_RVV_WEXTF_OPS): Ditto.
23876 (required_extensions_p): Adjust for floating-point support.
23877 (check_required_extensions): Ditto.
23878 (unsigned_base_type_p): Ditto.
23879 (get_mode_for_bitsize): Ditto.
23880 (rvv_arg_type_info::get_base_vector_type): Ditto.
23881 (rvv_arg_type_info::get_tree_type): Ditto.
23882 * config/riscv/riscv-vector-builtins.def (v_f): New define.
23885 (xu_v): New define.
23887 (xu_w): New define.
23888 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): New enum.
23889 (function_expander::arg_mode): New function.
23890 * config/riscv/vector-iterators.md (sof): New iterator.
23896 (fixuns_trunc): Ditto.
23898 * config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
23899 (@pred_<optab><mode>): Ditto.
23900 (@pred_<optab><mode>_scalar): Ditto.
23901 (@pred_<optab><mode>_reverse_scalar): Ditto.
23902 (@pred_<copysign><mode>): Ditto.
23903 (@pred_<copysign><mode>_scalar): Ditto.
23904 (@pred_mul_<optab><mode>): Ditto.
23905 (pred_mul_<optab><mode>_undef_merge): Ditto.
23906 (*pred_<madd_nmsub><mode>): Ditto.
23907 (*pred_<macc_nmsac><mode>): Ditto.
23908 (*pred_mul_<optab><mode>): Ditto.
23909 (@pred_mul_<optab><mode>_scalar): Ditto.
23910 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
23911 (*pred_<madd_nmsub><mode>_scalar): Ditto.
23912 (*pred_<macc_nmsac><mode>_scalar): Ditto.
23913 (*pred_mul_<optab><mode>_scalar): Ditto.
23914 (@pred_neg_mul_<optab><mode>): Ditto.
23915 (pred_neg_mul_<optab><mode>_undef_merge): Ditto.
23916 (*pred_<nmadd_msub><mode>): Ditto.
23917 (*pred_<nmacc_msac><mode>): Ditto.
23918 (*pred_neg_mul_<optab><mode>): Ditto.
23919 (@pred_neg_mul_<optab><mode>_scalar): Ditto.
23920 (*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
23921 (*pred_<nmadd_msub><mode>_scalar): Ditto.
23922 (*pred_<nmacc_msac><mode>_scalar): Ditto.
23923 (*pred_neg_mul_<optab><mode>_scalar): Ditto.
23924 (@pred_<misc_op><mode>): Ditto.
23925 (@pred_class<mode>): Ditto.
23926 (@pred_dual_widen_<optab><mode>): Ditto.
23927 (@pred_dual_widen_<optab><mode>_scalar): Ditto.
23928 (@pred_single_widen_<plus_minus:optab><mode>): Ditto.
23929 (@pred_single_widen_<plus_minus:optab><mode>_scalar): Ditto.
23930 (@pred_widen_mul_<optab><mode>): Ditto.
23931 (@pred_widen_mul_<optab><mode>_scalar): Ditto.
23932 (@pred_widen_neg_mul_<optab><mode>): Ditto.
23933 (@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
23934 (@pred_cmp<mode>): Ditto.
23935 (*pred_cmp<mode>): Ditto.
23936 (*pred_cmp<mode>_narrow): Ditto.
23937 (@pred_cmp<mode>_scalar): Ditto.
23938 (*pred_cmp<mode>_scalar): Ditto.
23939 (*pred_cmp<mode>_scalar_narrow): Ditto.
23940 (@pred_eqne<mode>_scalar): Ditto.
23941 (*pred_eqne<mode>_scalar): Ditto.
23942 (*pred_eqne<mode>_scalar_narrow): Ditto.
23943 (@pred_merge<mode>_scalar): Ditto.
23944 (@pred_fcvt_x<v_su>_f<mode>): Ditto.
23945 (@pred_<fix_cvt><mode>): Ditto.
23946 (@pred_<float_cvt><mode>): Ditto.
23947 (@pred_widen_fcvt_x<v_su>_f<mode>): Ditto.
23948 (@pred_widen_<fix_cvt><mode>): Ditto.
23949 (@pred_widen_<float_cvt><mode>): Ditto.
23950 (@pred_extend<mode>): Ditto.
23951 (@pred_narrow_fcvt_x<v_su>_f<mode>): Ditto.
23952 (@pred_narrow_<fix_cvt><mode>): Ditto.
23953 (@pred_narrow_<float_cvt><mode>): Ditto.
23954 (@pred_trunc<mode>): Ditto.
23955 (@pred_rod_trunc<mode>): Ditto.
23957 2023-02-22 Jakub Jelinek <jakub@redhat.com>
23959 PR middle-end/106258
23960 * cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
23961 cgraph_update_edges_for_call_stmt_node, cgraph_node::verify_node):
23962 Handle BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
23963 * cgraphclones.cc (cgraph_node::create_clone): Likewise.
23965 2023-02-22 Thomas Schwinge <thomas@codesourcery.com>
23967 * common.opt (-Wcomplain-wrong-lang): New.
23968 * doc/invoke.texi (-Wno-complain-wrong-lang): Document it.
23969 * opts-common.cc (prune_options): Handle it.
23970 * opts-global.cc (complain_wrong_lang): Use it.
23972 2023-02-21 David Malcolm <dmalcolm@redhat.com>
23975 * doc/invoke.texi: Document -fno-analyzer-suppress-followups.
23977 2023-02-21 Max Filippov <jcmvbkbc@gmail.com>
23980 * config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
23982 * config/xtensa/xtensa.md (sibcall, sibcall_internal)
23983 (sibcall_value, sibcall_value_internal): Add 'use' expression
23986 2023-02-21 Richard Biener <rguenther@suse.de>
23988 PR tree-optimization/108691
23989 * tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove
23990 assert about calls_setjmp not becoming true when it was false.
23992 2023-02-21 Richard Biener <rguenther@suse.de>
23994 PR tree-optimization/108793
23995 * tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
23996 Use convert operands to niter_type when computing num.
23998 2023-02-21 Richard Biener <rguenther@suse.de>
24001 2023-02-13 Richard Biener <rguenther@suse.de>
24003 PR tree-optimization/108691
24004 * tree-cfg.cc (notice_special_calls): When the CFG is built
24005 honor gimple_call_ctrl_altering_p.
24006 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
24007 temporarily if the call is not control-altering.
24008 * calls.cc (emit_call_1): Do not add REG_SETJMP if
24009 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
24011 2023-02-21 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
24013 * config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
24014 true if register A0 (return address register) when -Og is specified.
24016 2023-02-20 Uroš Bizjak <ubizjak@gmail.com>
24018 * config/i386/predicates.md
24019 (general_x64constmem_operand): New predicate.
24020 * config/i386/i386.md (*cmpqi_ext<mode>_1):
24021 Use nonimm_x64constmem_operand.
24022 (*cmpqi_ext<mode>_3): Use general_x64constmem_operand.
24023 (*addqi_ext<mode>_1): Ditto.
24024 (*testqi_ext<mode>_1): Ditto.
24025 (*andqi_ext<mode>_1): Ditto.
24026 (*andqi_ext<mode>_1_cc): Ditto.
24027 (*<any_or:code>qi_ext<mode>_1): Ditto.
24028 (*xorqi_ext<mode>_1_cc): Ditto.
24030 2023-02-20 Jakub Jelinek <jakub2redhat.com>
24033 * config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
24034 gen_umadddi4_highpart{,_le}.
24036 2023-02-20 Kito Cheng <kito.cheng@sifive.com>
24038 * config/riscv/riscv.md (prefetch): Use r instead of p for the
24040 (riscv_prefetchi_<mode>): Ditto.
24042 2023-02-20 Richard Biener <rguenther@suse.de>
24044 PR tree-optimization/108816
24045 * tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
24046 versioning condition split prerequesite, assert required
24049 2023-02-20 Richard Biener <rguenther@suse.de>
24051 PR tree-optimization/108825
24052 * tree-ssa-loop-manip.cc (verify_loop_closed_ssa): For
24053 loop-local verfication only verify there's no pending SSA
24056 2023-02-20 Richard Biener <rguenther@suse.de>
24058 PR tree-optimization/108819
24059 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): Check
24060 we have an SSA name as iv_2 as expected.
24062 2023-02-18 Jakub Jelinek <jakub@redhat.com>
24064 PR tree-optimization/108819
24065 * tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
24067 2023-02-18 Jakub Jelinek <jakub@redhat.com>
24070 * config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
24071 * config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
24073 * config/i386/i386.md: Replace replace_rtx calls in all peephole2s
24074 with ix86_replace_reg_with_reg.
24076 2023-02-18 Gerald Pfeifer <gerald@pfeifer.com>
24078 * doc/invoke.texi (AVR Options): Update link to AVR-LibC.
24080 2023-02-18 Xi Ruoyao <xry111@xry111.site>
24082 * config.gcc (triplet_abi): Set its value based on $with_abi,
24083 instead of $target.
24084 (la_canonical_triplet): Set it after $triplet_abi is set
24086 * config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
24087 multiarch tuple for lp64d "loongarch64-linux-gnu" (without
24090 2023-02-18 Andrew Pinski <apinski@marvell.com>
24092 * match.pd: Remove #if GIMPLE around the
24095 2023-02-18 Andrew Pinski <apinski@marvell.com>
24097 * value-query.h (get_range_query): Return the global ranges
24098 for a nullptr func.
24100 2023-02-17 Siddhesh Poyarekar <siddhesh@gotplt.org>
24102 * doc/invoke.texi (@item -Wall): Fix typo in
24105 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
24108 * config/i386/predicates.md
24109 (nonimm_x64constmem_operand): New predicate.
24110 * config/i386/i386.md (*addqi_ext<mode>_0): New insn pattern.
24111 (*subqi_ext<mode>_0): Ditto.
24112 (*andqi_ext<mode>_0): Ditto.
24113 (*<any_or:code>qi_ext<mode>_0): Ditto.
24115 2023-02-17 Uroš Bizjak <ubizjak@gmail.com>
24118 * simplify-rtx.cc (simplify_context::simplify_subreg): Use
24119 int_outermode instead of GET_MODE (tem) to prevent
24120 VOIDmode from entering simplify_gen_subreg.
24122 2023-02-17 Richard Biener <rguenther@suse.de>
24124 PR tree-optimization/108821
24125 * tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
24126 move volatile accesses.
24128 2023-02-17 Richard Biener <rguenther@suse.de>
24130 * tree-ssa.cc (ssa_undefined_value_p): Assert we are not
24131 called on virtual operands.
24132 * tree-ssa-sccvn.cc (vn_phi_lookup): Guard
24133 ssa_undefined_value_p calls.
24134 (vn_phi_insert): Likewise.
24135 (set_ssa_val_to): Likewise.
24136 (visit_phi): Avoid extra work with equivalences for
24137 virtual operand PHIs.
24139 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24141 * config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
24143 (class mask_nlogic): Ditto.
24144 (class mask_notlogic): Ditto.
24145 (class vmmv): Ditto.
24146 (class vmclr): Ditto.
24147 (class vmset): Ditto.
24148 (class vmnot): Ditto.
24149 (class vcpop): Ditto.
24150 (class vfirst): Ditto.
24151 (class mask_misc): Ditto.
24152 (class viota): Ditto.
24153 (class vid): Ditto.
24155 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24156 * config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
24175 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
24176 (struct mask_alu_def): Ditto.
24178 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
24179 * config/riscv/riscv-vector-builtins.cc: Ditto.
24180 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug
24181 for dest it scalar RVV intrinsics.
24182 * config/riscv/vector-iterators.md (sof): New iterator.
24183 * config/riscv/vector.md (@pred_<optab>n<mode>): New pattern.
24184 (@pred_<optab>not<mode>): New pattern.
24185 (@pred_popcount<VB:mode><P:mode>): New pattern.
24186 (@pred_ffs<VB:mode><P:mode>): New pattern.
24187 (@pred_<misc_op><mode>): New pattern.
24188 (@pred_iota<mode>): New pattern.
24189 (@pred_series<mode>): New pattern.
24191 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24193 * config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
24197 * config/riscv/riscv-vector-builtins.cc: Ditto.
24199 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24200 kito-cheng <kito.cheng@sifive.com>
24202 * config/riscv/riscv-protos.h (sew64_scalar_helper): New function.
24203 * config/riscv/riscv-v.cc (has_vi_variant_p): Adjust.
24204 (sew64_scalar_helper): New function.
24205 * config/riscv/vector.md: Normalization.
24207 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24209 * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
24271 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24273 * config/riscv/vector.md (@pred_<optab><mode>): Rearrange.
24274 (@pred_<optab><mode>_scalar): Ditto.
24275 (*pred_<optab><mode>_scalar): Ditto.
24276 (*pred_<optab><mode>_extended_scalar): Ditto.
24278 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24280 * config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'.
24281 (init_builtins): Ditto.
24282 (mangle_builtin_type): Ditto.
24283 (verify_type_context): Ditto.
24284 (handle_pragma_vector): Ditto.
24285 (builtin_decl): Ditto.
24286 (expand_builtin): Ditto.
24287 (const_vec_all_same_in_range_p): Ditto.
24288 (legitimize_move): Ditto.
24289 (emit_vlmax_op): Ditto.
24290 (emit_nonvlmax_op): Ditto.
24291 (get_vlmul): Ditto.
24292 (get_ratio): Ditto.
24295 (get_avl_type): Ditto.
24296 (calculate_ratio): Ditto.
24297 (enum vlmul_type): Ditto.
24299 (neg_simm5_p): Ditto.
24300 (has_vi_variant_p): Ditto.
24302 2023-02-17 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24304 * config/riscv/riscv-protos.h (simm32_p): Remove.
24305 * config/riscv/riscv-v.cc (simm32_p): Ditto.
24306 * config/riscv/vector.md: Use immediate_operand
24307 instead of riscv_vector::simm32_p.
24309 2023-02-16 Gerald Pfeifer <gerald@pfeifer.com>
24311 * doc/invoke.texi (Optimize Options): Reword the explanation
24312 getting minimal, maximal and default values of a parameter.
24314 2023-02-16 Patrick Palka <ppalka@redhat.com>
24316 * addresses.h: Mechanically drop 'static' from 'static inline'
24317 functions via s/^static inline/inline/g.
24318 * asan.h: Likewise.
24319 * attribs.h: Likewise.
24320 * basic-block.h: Likewise.
24321 * bitmap.h: Likewise.
24322 * cfghooks.h: Likewise.
24323 * cfgloop.h: Likewise.
24324 * cgraph.h: Likewise.
24325 * cselib.h: Likewise.
24326 * data-streamer.h: Likewise.
24327 * debug.h: Likewise.
24329 * diagnostic.h: Likewise.
24330 * dominance.h: Likewise.
24331 * dumpfile.h: Likewise.
24332 * emit-rtl.h: Likewise.
24333 * except.h: Likewise.
24334 * expmed.h: Likewise.
24335 * expr.h: Likewise.
24336 * fixed-value.h: Likewise.
24337 * gengtype.h: Likewise.
24338 * gimple-expr.h: Likewise.
24339 * gimple-iterator.h: Likewise.
24340 * gimple-predict.h: Likewise.
24341 * gimple-range-fold.h: Likewise.
24342 * gimple-ssa.h: Likewise.
24343 * gimple.h: Likewise.
24344 * graphite.h: Likewise.
24345 * hard-reg-set.h: Likewise.
24346 * hash-map.h: Likewise.
24347 * hash-set.h: Likewise.
24348 * hash-table.h: Likewise.
24349 * hwint.h: Likewise.
24350 * input.h: Likewise.
24351 * insn-addr.h: Likewise.
24352 * internal-fn.h: Likewise.
24353 * ipa-fnsummary.h: Likewise.
24354 * ipa-icf-gimple.h: Likewise.
24355 * ipa-inline.h: Likewise.
24356 * ipa-modref.h: Likewise.
24357 * ipa-prop.h: Likewise.
24358 * ira-int.h: Likewise.
24360 * lra-int.h: Likewise.
24362 * lto-streamer.h: Likewise.
24363 * memmodel.h: Likewise.
24364 * omp-general.h: Likewise.
24365 * optabs-query.h: Likewise.
24366 * optabs.h: Likewise.
24367 * plugin.h: Likewise.
24368 * pretty-print.h: Likewise.
24369 * range.h: Likewise.
24370 * read-md.h: Likewise.
24371 * recog.h: Likewise.
24372 * regs.h: Likewise.
24373 * rtl-iter.h: Likewise.
24375 * sbitmap.h: Likewise.
24376 * sched-int.h: Likewise.
24377 * sel-sched-ir.h: Likewise.
24378 * sese.h: Likewise.
24379 * sparseset.h: Likewise.
24380 * ssa-iterators.h: Likewise.
24381 * system.h: Likewise.
24382 * target-globals.h: Likewise.
24383 * target.h: Likewise.
24384 * timevar.h: Likewise.
24385 * tree-chrec.h: Likewise.
24386 * tree-data-ref.h: Likewise.
24387 * tree-iterator.h: Likewise.
24388 * tree-outof-ssa.h: Likewise.
24389 * tree-phinodes.h: Likewise.
24390 * tree-scalar-evolution.h: Likewise.
24391 * tree-sra.h: Likewise.
24392 * tree-ssa-alias.h: Likewise.
24393 * tree-ssa-live.h: Likewise.
24394 * tree-ssa-loop-manip.h: Likewise.
24395 * tree-ssa-loop.h: Likewise.
24396 * tree-ssa-operands.h: Likewise.
24397 * tree-ssa-propagate.h: Likewise.
24398 * tree-ssa-sccvn.h: Likewise.
24399 * tree-ssa.h: Likewise.
24400 * tree-ssanames.h: Likewise.
24401 * tree-streamer.h: Likewise.
24402 * tree-switch-conversion.h: Likewise.
24403 * tree-vectorizer.h: Likewise.
24404 * tree.h: Likewise.
24405 * wide-int.h: Likewise.
24407 2023-02-16 Jakub Jelinek <jakub@redhat.com>
24409 PR tree-optimization/108657
24410 * tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt
24411 exists and is not a SSA_NAME, call ao_ref_init even if the stmt
24412 is a call to internal or builtin function.
24414 2023-02-16 Jonathan Wakely <jwakely@redhat.com>
24416 * doc/invoke.texi (C++ Dialect Options): Suggest adding a
24417 using-declaration to unhide functions.
24419 2023-02-16 Jakub Jelinek <jakub@redhat.com>
24421 PR tree-optimization/108783
24422 * tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode
24423 is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set
24424 t to curr->op. Otherwise, punt if either newop1 or newop2 are
24425 SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs.
24427 2023-02-16 Richard Biener <rguenther@suse.de>
24429 PR tree-optimization/108791
24430 * tree-ssa-forwprop.cc (optimize_vector_load): Build
24431 the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful
24434 2023-02-15 Eric Botcazou <ebotcazou@adacore.com>
24437 * config/i386/i386.cc (ix86_compute_frame_layout): Disable the
24438 effects of -fstack-clash-protection for TARGET_STACK_PROBE.
24439 (ix86_expand_prologue): Likewise.
24441 2023-02-15 Jan-Benedict Glaw <jbglaw@lug-owl.de>
24443 * config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
24445 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
24447 * config/i386/i386.md (*cmpqi_ext<mode>_1): Use
24448 int248_register_operand predicate in zero_extract sub-RTX.
24449 (*cmpqi_ext<mode>_2): Ditto.
24450 (*cmpqi_ext<mode>_3): Ditto.
24451 (*cmpqi_ext<mode>_4): Ditto.
24452 (*extzvqi_mem_rex64): Ditto.
24454 (*insvqi_1_mem_rex64): Ditto.
24455 (@insv<mode>_1): Ditto.
24456 (*insvqi_1): Ditto.
24457 (*insvqi_2): Ditto.
24458 (*insvqi_3): Ditto.
24459 (*extendqi<SWI24:mode>_ext_1): Ditto.
24460 (*addqi_ext<mode>_1): Ditto.
24461 (*addqi_ext<mode>_2): Ditto.
24462 (*subqi_ext<mode>_2): Ditto.
24463 (*testqi_ext<mode>_1): Ditto.
24464 (*testqi_ext<mode>_2): Ditto.
24465 (*andqi_ext<mode>_1): Ditto.
24466 (*andqi_ext<mode>_1_cc): Ditto.
24467 (*andqi_ext<mode>_2): Ditto.
24468 (*<any_or:code>qi_ext<mode>_1): Ditto.
24469 (*<any_or:code>qi_ext<mode>_2): Ditto.
24470 (*xorqi_ext<mode>_1_cc): Ditto.
24471 (*negqi_ext<mode>_2): Ditto.
24472 (*ashlqi_ext<mode>_2): Ditto.
24473 (*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
24475 2023-02-15 Uroš Bizjak <ubizjak@gmail.com>
24477 * config/i386/predicates.md (int248_register_operand):
24478 Rename from extr_register_operand.
24479 * config/i386/i386.md (*extv<mode>): Update for renamed predicate.
24480 (*extzx<mode>): Ditto.
24481 (*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate.
24482 (*ashl<mode>3_mask): Ditto.
24483 (*<any_shiftrt:insn><mode>3_mask): Ditto.
24484 (*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto.
24485 (*<any_rotate:insn><mode>3_mask): Ditto.
24486 (*<btsc><mode>_mask): Ditto.
24487 (*btr<mode>_mask): Ditto.
24488 (*jcc_bt<mode>_mask_1): Ditto.
24490 2023-02-15 Richard Biener <rguenther@suse.de>
24492 PR middle-end/26854
24493 * df-core.cc (df_worklist_propagate_forward): Put later
24494 blocks on worklist and only earlier blocks on pending.
24495 (df_worklist_propagate_backward): Likewise.
24496 (df_worklist_dataflow_doublequeue): Change the iteration
24497 to process new blocks in the same iteration if that
24498 maintains the iteration order.
24500 2023-02-15 Marek Polacek <polacek@redhat.com>
24502 PR middle-end/106080
24503 * gimple-ssa-warn-access.cc (is_auto_decl): Remove. Use auto_var_p
24506 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24508 * config/riscv/predicates.md: Refine codes.
24509 * config/riscv/riscv-protos.h (RVV_VUNDEF): New macro.
24510 * config/riscv/riscv-v.cc: Refine codes.
24511 * config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New
24513 (class imac): New class.
24514 (enum widen_ternop_type): New enum.
24515 (class iwmac): New class.
24517 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24518 * config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
24526 * config/riscv/riscv-vector-builtins.cc
24527 (function_builder::apply_predication): Adjust for multiply-add support.
24528 (function_expander::add_vundef_operand): Refine codes.
24529 (function_expander::use_ternop_insn): New function.
24530 (function_expander::use_widen_ternop_insn): Ditto.
24531 * config/riscv/riscv-vector-builtins.h: New function.
24532 * config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern.
24533 (pred_mul_<optab><mode>_undef_merge): Ditto.
24534 (*pred_<madd_nmsub><mode>): Ditto.
24535 (*pred_<macc_nmsac><mode>): Ditto.
24536 (*pred_mul_<optab><mode>): Ditto.
24537 (@pred_mul_<optab><mode>_scalar): Ditto.
24538 (*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
24539 (*pred_<madd_nmsub><mode>_scalar): Ditto.
24540 (*pred_<macc_nmsac><mode>_scalar): Ditto.
24541 (*pred_mul_<optab><mode>_scalar): Ditto.
24542 (*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
24543 (*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
24544 (*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
24545 (*pred_mul_<optab><mode>_extended_scalar): Ditto.
24546 (@pred_widen_mul_plus<su><mode>): Ditto.
24547 (@pred_widen_mul_plus<su><mode>_scalar): Ditto.
24548 (@pred_widen_mul_plussu<mode>): Ditto.
24549 (@pred_widen_mul_plussu<mode>_scalar): Ditto.
24550 (@pred_widen_mul_plusus<mode>_scalar): Ditto.
24552 2023-02-15 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24554 * config/riscv/predicates.md (vector_mask_operand): Refine the codes.
24555 (vector_all_trues_mask_operand): New predicate.
24556 (vector_undef_operand): New predicate.
24557 (ltge_operator): New predicate.
24558 (comparison_except_ltge_operator): New predicate.
24559 (comparison_except_eqge_operator): New predicate.
24560 (ge_operator): New predicate.
24561 * config/riscv/riscv-v.cc (has_vi_variant_p): Add compare support.
24562 * config/riscv/riscv-vector-builtins-bases.cc (class icmp): New class.
24564 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24565 * config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
24575 * config/riscv/riscv-vector-builtins-shapes.cc
24576 (struct return_mask_def): Adjust for compare support.
24577 * config/riscv/riscv-vector-builtins.cc
24578 (function_expander::use_compare_insn): New function.
24579 * config/riscv/riscv-vector-builtins.h
24580 (function_expander::add_integer_operand): Ditto.
24581 * config/riscv/riscv.cc (riscv_print_operand): Add compare support.
24582 * config/riscv/riscv.md: Add vector min/max attributes.
24583 * config/riscv/vector-iterators.md (xnor): New iterator.
24584 * config/riscv/vector.md (@pred_cmp<mode>): New pattern.
24585 (*pred_cmp<mode>): Ditto.
24586 (*pred_cmp<mode>_narrow): Ditto.
24587 (@pred_ltge<mode>): Ditto.
24588 (*pred_ltge<mode>): Ditto.
24589 (*pred_ltge<mode>_narrow): Ditto.
24590 (@pred_cmp<mode>_scalar): Ditto.
24591 (*pred_cmp<mode>_scalar): Ditto.
24592 (*pred_cmp<mode>_scalar_narrow): Ditto.
24593 (@pred_eqne<mode>_scalar): Ditto.
24594 (*pred_eqne<mode>_scalar): Ditto.
24595 (*pred_eqne<mode>_scalar_narrow): Ditto.
24596 (*pred_cmp<mode>_extended_scalar): Ditto.
24597 (*pred_cmp<mode>_extended_scalar_narrow): Ditto.
24598 (*pred_eqne<mode>_extended_scalar): Ditto.
24599 (*pred_eqne<mode>_extended_scalar_narrow): Ditto.
24600 (@pred_ge<mode>_scalar): Ditto.
24601 (@pred_<optab><mode>): Ditto.
24602 (@pred_n<optab><mode>): Ditto.
24603 (@pred_<optab>n<mode>): Ditto.
24604 (@pred_not<mode>): Ditto.
24606 2023-02-15 Martin Jambor <mjambor@suse.cz>
24609 * ipa-sra.cc (push_param_adjustments_for_index): Do not omit
24610 creation of non-scalar replacements even if IPA-CP knows their
24613 2023-02-15 Jakub Jelinek <jakub@redhat.com>
24617 * config/rs6000/rs6000.md (<u>maddditi4): Change into umaddditi4 only
24618 expander, change operand 3 to be TImode, emit maddlddi4 and
24619 umadddi4_highpart{,_le} with its low half and finally add the high
24620 half to the result.
24622 2023-02-15 Martin Liska <mliska@suse.cz>
24624 * doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
24626 2023-02-15 Richard Biener <rguenther@suse.de>
24628 * sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
24629 for with_poison and alias worklist to it.
24630 (sanitize_asan_mark_poison): Likewise.
24632 2023-02-15 Richard Biener <rguenther@suse.de>
24635 * config/i386/i386-features.cc (scalar_chain::add_to_queue):
24636 Combine bitmap test and set.
24637 (scalar_chain::add_insn): Likewise.
24638 (scalar_chain::analyze_register_chain): Remove redundant
24639 attempt to add to queue and instead strengthen assert.
24640 Sink common attempts to mark the def dual-mode.
24641 (scalar_chain::add_to_queue): Remove redundant insn bitmap
24644 2023-02-15 Richard Biener <rguenther@suse.de>
24647 * config/i386/i386-features.cc (convert_scalars_to_vector):
24648 Switch candidates bitmaps to tree view before building the chains.
24650 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
24652 * reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
24653 "failure trying to reload" call.
24655 2023-02-15 Hans-Peter Nilsson <hp@axis.com>
24657 * gdbinit.in (phrs): New command.
24658 * sel-sched-dump.cc (debug_hard_reg_set): Remove debug-function.
24659 * ira-color.cc (debug_hard_reg_set): New, calling print_hard_reg_set.
24661 2023-02-14 David Faust <david.faust@oracle.com>
24664 * config/bpf/constraints.md (q): New memory constraint.
24665 * config/bpf/bpf.md (zero_extendhidi2): Use it here.
24666 (zero_extendqidi2): Likewise.
24667 (zero_extendsidi2): Likewise.
24668 (*mov<MM:mode>): Likewise.
24670 2023-02-14 Andrew Pinski <apinski@marvell.com>
24672 PR tree-optimization/108355
24673 PR tree-optimization/96921
24674 * match.pd: Add pattern for "1 - bool_val".
24676 2023-02-14 Richard Biener <rguenther@suse.de>
24678 * tree-ssa-sccvn.cc (vn_phi_compute_hash): Key skipping
24679 basic block index hashing on the availability of ->cclhs.
24680 (vn_phi_eq): Avoid re-doing sanity checks for CSE but
24681 rely on ->cclhs availability.
24682 (vn_phi_lookup): Set ->cclhs only when we are eventually
24683 going to CSE the PHI.
24684 (vn_phi_insert): Likewise.
24686 2023-02-14 Eric Botcazou <ebotcazou@adacore.com>
24688 * gimplify.cc (gimplify_save_expr): Add missing guard.
24690 2023-02-14 Richard Biener <rguenther@suse.de>
24692 PR tree-optimization/108782
24693 * tree-vect-loop.cc (vect_phi_first_order_recurrence_p):
24694 Make sure we're not vectorizing an inner loop.
24696 2023-02-14 Jakub Jelinek <jakub@redhat.com>
24698 PR sanitizer/108777
24699 * params.opt (-param=asan-kernel-mem-intrinsic-prefix=): New param.
24700 * asan.h (asan_memfn_rtl): Declare.
24701 * asan.cc (asan_memfn_rtls): New variable.
24702 (asan_memfn_rtl): New function.
24703 * builtins.cc (expand_builtin): If
24704 param_asan_kernel_mem_intrinsic_prefix and function is
24705 kernel-{,hw}address sanitized, emit calls to
24706 __{,hw}asan_{memcpy,memmove,memset} rather than
24707 {memcpy,memmove,memset}. Use sanitize_flags_p (SANITIZE_ADDRESS)
24708 instead of flag_sanitize & SANITIZE_ADDRESS to check if
24709 asan_intercepted_p functions shouldn't be expanded inline.
24711 2023-02-14 Richard Sandiford <richard.sandiford@arm.com>
24713 PR tree-optimization/96373
24714 * tree-vect-stmts.cc (vectorizable_operation): Predicate trapping
24715 operations on the loop mask. Reject partial vectors if this isn't
24718 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
24720 PR rtl-optimization/108681
24721 * lra-spills.cc (lra_final_code_change): Extend subreg replacement
24722 code to handle bare uses and clobbers.
24724 2023-02-13 Vladimir N. Makarov <vmakarov@redhat.com>
24726 * ira.cc (ira_update_equiv_info_by_shuffle_insn): Clear equiv
24727 caller_save_p flag when clearing defined_p flag.
24728 (setup_reg_equiv): Ditto.
24729 * lra-constraints.cc (lra_constraints): Ditto.
24731 2023-02-13 Uroš Bizjak <ubizjak@gmail.com>
24734 * config/i386/predicates.md (extr_register_operand):
24735 New special predicate.
24736 * config/i386/i386.md (*extv<mode>): Use extr_register_operand
24737 as operand 1 predicate.
24738 (*exzv<mode>): Ditto.
24739 (*extendqi<SWI24:mode>_ext_1): New insn pattern.
24741 2023-02-13 Richard Biener <rguenther@suse.de>
24743 PR tree-optimization/28614
24744 * tree-ssa-sccvn.cc (can_track_predicate_on_edge): Avoid
24745 walking all edges in most cases.
24746 (vn_nary_op_insert_pieces_predicated): Avoid repeated
24747 calls to can_track_predicate_on_edge unless checking is
24749 (process_bb): Instead call it once here for each edge
24750 we register possibly multiple predicates on.
24752 2023-02-13 Richard Biener <rguenther@suse.de>
24754 PR tree-optimization/108691
24755 * tree-cfg.cc (notice_special_calls): When the CFG is built
24756 honor gimple_call_ctrl_altering_p.
24757 * cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
24758 temporarily if the call is not control-altering.
24759 * calls.cc (emit_call_1): Do not add REG_SETJMP if
24760 cfun->calls_setjmp is not set. Do not alter cfun->calls_setjmp.
24762 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
24765 * config/s390/s390.cc (s390_bb_fallthru_entry_likely): Remove.
24766 (struct s390_sched_state): Initialise to zero.
24767 (s390_sched_variable_issue): For better debuggability also emit
24769 (s390_sched_init): Unconditionally reset scheduler state.
24771 2023-02-13 Richard Sandiford <richard.sandiford@arm.com>
24773 * ifcvt.h (noce_if_info::cond_inverted): New field.
24774 * ifcvt.cc (cond_move_convert_if_block): Swap the then and else
24775 values when cond_inverted is true.
24776 (noce_find_if_block): Allow the condition to be inverted when
24777 handling conditional moves.
24779 2023-02-13 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
24781 * config/s390/predicates.md (execute_operation): Use
24782 constrain_operands instead of extract_constrain_insn in order to
24783 determine wheter there exists a valid alternative.
24785 2023-02-13 Claudiu Zissulescu <claziss@gmail.com>
24787 * common/config/arc/arc-common.cc (arc_option_optimization_table):
24788 Remove millicode from list.
24790 2023-02-13 Martin Liska <mliska@suse.cz>
24792 * doc/invoke.texi: Document ira-simple-lra-insn-threshold.
24794 2023-02-13 Richard Biener <rguenther@suse.de>
24796 PR tree-optimization/106722
24797 * tree-ssa-dce.cc (mark_last_stmt_necessary): Return
24798 whether we marked a stmt.
24799 (mark_control_dependent_edges_necessary): When
24800 mark_last_stmt_necessary didn't mark any stmt make sure
24801 to mark its control dependent edges.
24802 (propagate_necessity): Likewise.
24804 2023-02-13 Kito Cheng <kito.cheng@sifive.com>
24806 * config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
24807 (DWARF_FRAME_REGISTERS): New.
24808 (DWARF_REG_TO_UNWIND_COLUMN): New.
24810 2023-02-12 Gerald Pfeifer <gerald@pfeifer.com>
24812 * doc/sourcebuild.texi: Remove (broken) direct reference to
24813 "The GNU configure and build system".
24815 2023-02-12 Jin Ma <jinma@linux.alibaba.com>
24817 * config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Change
24818 gen_add3_insn to gen_rtx_SET.
24819 (riscv_adjust_libcall_cfi_epilogue): Likewise.
24821 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24823 * config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
24824 (class vnclip): Ditto.
24826 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24827 * config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
24836 * config/riscv/vector-iterators.md (su): Add instruction.
24839 * config/riscv/vector.md (@pred_<sat_op><mode>): New pattern.
24840 (@pred_<sat_op><mode>_scalar): Ditto.
24841 (*pred_<sat_op><mode>_scalar): Ditto.
24842 (*pred_<sat_op><mode>_extended_scalar): Ditto.
24843 (@pred_narrow_clip<v_su><mode>): Ditto.
24844 (@pred_narrow_clip<v_su><mode>_scalar): Ditto.
24846 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24848 * config/riscv/constraints.md (Wbr): Remove unused constraint.
24849 * config/riscv/predicates.md: Fix move operand predicate.
24850 * config/riscv/riscv-vector-builtins-bases.cc (class vnshift): New class.
24851 (class vncvt_x): Ditto.
24852 (class vmerge): Ditto.
24853 (class vmv_v): Ditto.
24855 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24856 * config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
24863 * config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
24864 (struct move_def): Ditto.
24866 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
24867 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): New variable.
24868 (DEF_RVV_WEXTU_OPS): Ditto
24869 * config/riscv/riscv-vector-builtins.def (x_x_w): Fix type for suffix.
24874 * config/riscv/riscv.cc (riscv_print_operand): Refine ASM printting rule.
24875 * config/riscv/vector-iterators.md (nmsac):New iterator.
24876 (nmsub): New iterator.
24877 * config/riscv/vector.md (@pred_merge<mode>): New pattern.
24878 (@pred_merge<mode>_scalar): New pattern.
24879 (*pred_merge<mode>_scalar): New pattern.
24880 (*pred_merge<mode>_extended_scalar): New pattern.
24881 (@pred_narrow_<optab><mode>): New pattern.
24882 (@pred_narrow_<optab><mode>_scalar): New pattern.
24883 (@pred_trunc<mode>): New pattern.
24885 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24887 * config/riscv/riscv-vector-builtins-bases.cc (class vmadc): New class.
24888 (class vmsbc): Ditto.
24889 (BASE): Define new class.
24890 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24891 * config/riscv/riscv-vector-builtins-functions.def (vmadc): New define.
24893 * config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
24896 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
24897 * config/riscv/riscv-vector-builtins.cc
24898 (function_expander::use_exact_insn): Adjust for new support
24899 * config/riscv/riscv-vector-builtins.h
24900 (function_base::has_merge_operand_p): New function.
24901 * config/riscv/vector-iterators.md: New iterator.
24902 * config/riscv/vector.md (@pred_madc<mode>): New pattern.
24903 (@pred_msbc<mode>): Ditto.
24904 (@pred_madc<mode>_scalar): Ditto.
24905 (@pred_msbc<mode>_scalar): Ditto.
24906 (*pred_madc<mode>_scalar): Ditto.
24907 (*pred_madc<mode>_extended_scalar): Ditto.
24908 (*pred_msbc<mode>_scalar): Ditto.
24909 (*pred_msbc<mode>_extended_scalar): Ditto.
24910 (@pred_madc<mode>_overflow): Ditto.
24911 (@pred_msbc<mode>_overflow): Ditto.
24912 (@pred_madc<mode>_overflow_scalar): Ditto.
24913 (@pred_msbc<mode>_overflow_scalar): Ditto.
24914 (*pred_madc<mode>_overflow_scalar): Ditto.
24915 (*pred_madc<mode>_overflow_extended_scalar): Ditto.
24916 (*pred_msbc<mode>_overflow_scalar): Ditto.
24917 (*pred_msbc<mode>_overflow_extended_scalar): Ditto.
24919 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24921 * config/riscv/riscv-protos.h (simm5_p): Add vadc/vsbc support.
24922 * config/riscv/riscv-v.cc (simm32_p): Ditto.
24923 * config/riscv/riscv-vector-builtins-bases.cc (class vadc): New class.
24924 (class vsbc): Ditto.
24926 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
24927 * config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
24929 * config/riscv/riscv-vector-builtins-shapes.cc
24930 (struct no_mask_policy_def): Ditto.
24932 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
24933 * config/riscv/riscv-vector-builtins.cc
24934 (rvv_arg_type_info::get_base_vector_type): Add vadc/vsbc support.
24935 (rvv_arg_type_info::get_tree_type): Ditto.
24936 (function_expander::use_exact_insn): Ditto.
24937 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
24938 (function_base::use_mask_predication_p): New function.
24939 * config/riscv/vector-iterators.md: New iterator.
24940 * config/riscv/vector.md (@pred_adc<mode>): New pattern.
24941 (@pred_sbc<mode>): Ditto.
24942 (@pred_adc<mode>_scalar): Ditto.
24943 (@pred_sbc<mode>_scalar): Ditto.
24944 (*pred_adc<mode>_scalar): Ditto.
24945 (*pred_adc<mode>_extended_scalar): Ditto.
24946 (*pred_sbc<mode>_scalar): Ditto.
24947 (*pred_sbc<mode>_extended_scalar): Ditto.
24949 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24951 * config/riscv/vector.md: use "zero" reg.
24953 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24955 * config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
24957 (class vwmulsu): Ditto.
24958 (class vwcvt): Ditto.
24959 (BASE): Add integer widening support.
24960 * config/riscv/riscv-vector-builtins-bases.h: Ditto
24961 * config/riscv/riscv-vector-builtins-functions.def (vwadd): New class.
24962 (vwsub): New class.
24963 (vwmul): New class.
24964 (vwmulu): New class.
24965 (vwmulsu): New class.
24966 (vwaddu): New class.
24967 (vwsubu): New class.
24968 (vwcvt_x): New class.
24969 (vwcvtu_x): New class.
24970 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): New
24972 (struct widen_alu_def): New class.
24973 (SHAPE): New class.
24974 * config/riscv/riscv-vector-builtins-shapes.h: New class.
24975 * config/riscv/riscv-vector-builtins.cc
24976 (rvv_arg_type_info::get_base_vector_type): Add integer widening support.
24977 (rvv_arg_type_info::get_tree_type): Ditto.
24978 * config/riscv/riscv-vector-builtins.def (x_x_v): Change into "x_v"
24980 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
24982 * config/riscv/riscv-vsetvl.cc (change_insn): Fix reg_equal use bug.
24983 * config/riscv/riscv.h (X0_REGNUM): New constant.
24984 * config/riscv/vector-iterators.md: New iterators.
24985 * config/riscv/vector.md
24986 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>): New
24988 (@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
24990 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
24991 (@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
24993 (@pred_widen_mulsu<mode>): Ditto.
24994 (@pred_widen_mulsu<mode>_scalar): Ditto.
24995 (@pred_<optab><mode>): Ditto.
24997 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
24998 kito-cheng <kito.cheng@sifive.com>
25000 * common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
25001 * config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
25003 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25004 * config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
25008 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
25010 (DEF_RVV_FULL_V_U_OPS): Ditto.
25011 (vint8mf8_t): Ditto.
25012 (vint8mf4_t): Ditto.
25013 (vint8mf2_t): Ditto.
25014 (vint8m1_t): Ditto.
25015 (vint8m2_t): Ditto.
25016 (vint8m4_t): Ditto.
25017 (vint8m8_t): Ditto.
25018 (vint16mf4_t): Ditto.
25019 (vint16mf2_t): Ditto.
25020 (vint16m1_t): Ditto.
25021 (vint16m2_t): Ditto.
25022 (vint16m4_t): Ditto.
25023 (vint16m8_t): Ditto.
25024 (vint32mf2_t): Ditto.
25025 (vint32m1_t): Ditto.
25026 (vint32m2_t): Ditto.
25027 (vint32m4_t): Ditto.
25028 (vint32m8_t): Ditto.
25029 (vint64m1_t): Ditto.
25030 (vint64m2_t): Ditto.
25031 (vint64m4_t): Ditto.
25032 (vint64m8_t): Ditto.
25033 (vuint8mf8_t): Ditto.
25034 (vuint8mf4_t): Ditto.
25035 (vuint8mf2_t): Ditto.
25036 (vuint8m1_t): Ditto.
25037 (vuint8m2_t): Ditto.
25038 (vuint8m4_t): Ditto.
25039 (vuint8m8_t): Ditto.
25040 (vuint16mf4_t): Ditto.
25041 (vuint16mf2_t): Ditto.
25042 (vuint16m1_t): Ditto.
25043 (vuint16m2_t): Ditto.
25044 (vuint16m4_t): Ditto.
25045 (vuint16m8_t): Ditto.
25046 (vuint32mf2_t): Ditto.
25047 (vuint32m1_t): Ditto.
25048 (vuint32m2_t): Ditto.
25049 (vuint32m4_t): Ditto.
25050 (vuint32m8_t): Ditto.
25051 (vuint64m1_t): Ditto.
25052 (vuint64m2_t): Ditto.
25053 (vuint64m4_t): Ditto.
25054 (vuint64m8_t): Ditto.
25055 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FULL_V_I_OPS): Ditto.
25056 (DEF_RVV_FULL_V_U_OPS): Ditto.
25057 (check_required_extensions): Add vmulh support.
25058 (rvv_arg_type_info::get_tree_type): Ditto.
25059 * config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_FULL_V): Ditto.
25060 (enum rvv_base_type): Ditto.
25061 * config/riscv/riscv.opt: Add 'V' extension flag.
25062 * config/riscv/vector-iterators.md (su): New iterator.
25063 * config/riscv/vector.md (@pred_mulh<v_su><mode>): New pattern.
25064 (@pred_mulh<v_su><mode>_scalar): Ditto.
25065 (*pred_mulh<v_su><mode>_scalar): Ditto.
25066 (*pred_mulh<v_su><mode>_extended_scalar): Ditto.
25068 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25070 * config/riscv/iterators.md: Add sign_extend/zero_extend.
25071 * config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
25073 * config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
25074 * config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
25077 * config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Adjust
25078 for vsext/vzext support.
25079 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTI_OPS): New
25081 (DEF_RVV_QEXTI_OPS): Ditto.
25082 (DEF_RVV_OEXTI_OPS): Ditto.
25083 (DEF_RVV_WEXTU_OPS): Ditto.
25084 (DEF_RVV_QEXTU_OPS): Ditto.
25085 (DEF_RVV_OEXTU_OPS): Ditto.
25086 (vint16mf4_t): Ditto.
25087 (vint16mf2_t): Ditto.
25088 (vint16m1_t): Ditto.
25089 (vint16m2_t): Ditto.
25090 (vint16m4_t): Ditto.
25091 (vint16m8_t): Ditto.
25092 (vint32mf2_t): Ditto.
25093 (vint32m1_t): Ditto.
25094 (vint32m2_t): Ditto.
25095 (vint32m4_t): Ditto.
25096 (vint32m8_t): Ditto.
25097 (vint64m1_t): Ditto.
25098 (vint64m2_t): Ditto.
25099 (vint64m4_t): Ditto.
25100 (vint64m8_t): Ditto.
25101 (vuint16mf4_t): Ditto.
25102 (vuint16mf2_t): Ditto.
25103 (vuint16m1_t): Ditto.
25104 (vuint16m2_t): Ditto.
25105 (vuint16m4_t): Ditto.
25106 (vuint16m8_t): Ditto.
25107 (vuint32mf2_t): Ditto.
25108 (vuint32m1_t): Ditto.
25109 (vuint32m2_t): Ditto.
25110 (vuint32m4_t): Ditto.
25111 (vuint32m8_t): Ditto.
25112 (vuint64m1_t): Ditto.
25113 (vuint64m2_t): Ditto.
25114 (vuint64m4_t): Ditto.
25115 (vuint64m8_t): Ditto.
25116 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): Ditto.
25117 (DEF_RVV_QEXTI_OPS): Ditto.
25118 (DEF_RVV_OEXTI_OPS): Ditto.
25119 (DEF_RVV_WEXTU_OPS): Ditto.
25120 (DEF_RVV_QEXTU_OPS): Ditto.
25121 (DEF_RVV_OEXTU_OPS): Ditto.
25122 (rvv_arg_type_info::get_base_vector_type): Add sign_exted/zero_extend
25124 (rvv_arg_type_info::get_tree_type): Ditto.
25125 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
25126 * config/riscv/vector-iterators.md (z): New attribute.
25127 * config/riscv/vector.md (@pred_<optab><mode>_vf2): New pattern.
25128 (@pred_<optab><mode>_vf4): Ditto.
25129 (@pred_<optab><mode>_vf8): Ditto.
25131 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25133 * config/riscv/iterators.md: Add saturating Addition && Subtraction.
25134 * config/riscv/riscv-v.cc (has_vi_variant_p): Ditto.
25135 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto.
25136 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25137 * config/riscv/riscv-vector-builtins-functions.def (vsadd): New def.
25141 * config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
25146 * config/riscv/vector.md (@pred_<optab><mode>): New pattern.
25147 (@pred_<optab><mode>_scalar): New pattern.
25148 (*pred_<optab><mode>_scalar): New pattern.
25149 (*pred_<optab><mode>_extended_scalar): New pattern.
25151 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25153 * config/riscv/iterators.md: Add neg and not.
25154 * config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
25156 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25157 * config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
25178 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
25179 (struct alu_def): Ditto.
25181 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
25182 * config/riscv/riscv-vector-builtins.cc: Support unary C/C/++.
25183 * config/riscv/vector-iterators.md: New iterator.
25184 * config/riscv/vector.md (@pred_<optab><mode>): New pattern
25186 2023-02-12 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25188 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
25190 2023-02-11 Jakub Jelinek <jakub@redhat.com>
25193 * ipa-cp.cc (ipa_agg_value_from_jfunc): Return NULL_TREE also if
25194 item->offset bit position is too large to be representable as
25195 unsigned int byte position.
25197 2023-02-11 Gerald Pfeifer <gerald@pfeifer.com>
25199 * doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
25201 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
25203 * ira.cc (update_equiv_regs): Set up ira_reg_equiv for
25204 valid_combine only when ira_use_lra_p is true.
25206 2023-02-10 Vladimir N. Makarov <vmakarov@redhat.com>
25208 * params.opt (ira-simple-lra-insn-threshold): Add new param.
25209 * ira.cc (ira): Use the param to switch on simple LRA.
25211 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
25213 PR tree-optimization/108687
25214 * gimple-range-cache.cc (ranger_cache::range_on_edge): Revert
25215 back to RFD_NONE mode for calculations.
25216 (ranger_cache::propagate_cache): Call the internal edge range API
25217 with RFD_READ_ONLY instead of changing the external routine.
25219 2023-02-10 Andrew MacLeod <amacleod@redhat.com>
25221 PR tree-optimization/108520
25222 * gimple-range-infer.cc (check_assume_func): Invoke
25223 gimple_range_global directly instead using global_range_query.
25224 * value-query.cc (get_range_global): Add function context and
25225 avoid calling nonnull_arg_p if not cfun.
25226 (gimple_range_global): Add function context pointer.
25227 * value-query.h (imple_range_global): Add function context.
25229 2023-02-10 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25231 * config/riscv/constraints.md (Wdm): Adjust constraint.
25232 (Wbr): New constraint.
25233 * config/riscv/predicates.md (reg_or_int_operand): New predicate.
25234 * config/riscv/riscv-protos.h (emit_pred_op): Remove function.
25235 (emit_vlmax_op): New function.
25236 (emit_nonvlmax_op): Ditto.
25238 (neg_simm5_p): Ditto.
25239 (has_vi_variant_p): Ditto.
25240 * config/riscv/riscv-v.cc (emit_pred_op): Adjust function.
25241 (emit_vlmax_op): New function.
25242 (emit_nonvlmax_op): Ditto.
25243 (expand_const_vector): Adjust function.
25244 (legitimize_move): Ditto.
25245 (simm32_p): New function.
25247 (neg_simm5_p): Ditto.
25248 (has_vi_variant_p): Ditto.
25249 * config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
25251 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
25252 * config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
25255 (vminu): Remove signed cases.
25257 (vdiv): Remove unsigned cases.
25259 (vdivu): Remove signed cases.
25263 (vrsub): New class.
25268 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_U_OPS): New macro.
25269 * config/riscv/riscv.h: change VL/VTYPE as fixed reg.
25270 * config/riscv/vector-iterators.md: New iterators.
25271 * config/riscv/vector.md (@pred_broadcast<mode>): Adjust pattern for vx
25273 (@pred_<optab><mode>_scalar): New pattern.
25274 (@pred_sub<mode>_reverse_scalar): Ditto.
25275 (*pred_<optab><mode>_scalar): Ditto.
25276 (*pred_<optab><mode>_extended_scalar): Ditto.
25277 (*pred_sub<mode>_reverse_scalar): Ditto.
25278 (*pred_sub<mode>_extended_reverse_scalar): Ditto.
25280 2023-02-10 Richard Biener <rguenther@suse.de>
25282 PR tree-optimization/108724
25283 * tree-vect-stmts.cc (vectorizable_operation): Avoid
25284 using word_mode vectors when vector lowering will
25285 decompose them to elementwise operations.
25287 2023-02-10 Jakub Jelinek <jakub@redhat.com>
25290 2023-02-09 Martin Liska <mliska@suse.cz>
25293 * doc/extend.texi: Document that the function
25294 does not work correctly for old VIA processors.
25296 2023-02-10 Andrew Pinski <apinski@marvell.com>
25297 Andrew Macleod <amacleod@redhat.com>
25299 PR tree-optimization/108684
25300 * tree-ssa-dce.cc (simple_dce_from_worklist):
25301 Check all ssa names and not just non-vdef ones
25302 before accepting the inline-asm.
25303 Call unlink_stmt_vdef on the statement before
25306 2023-02-09 Vladimir N. Makarov <vmakarov@redhat.com>
25308 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
25309 * ira.cc (validate_equiv_mem): Check memref address variance.
25310 (no_equiv): Clear caller_save_p flag.
25311 (update_equiv_regs): Define caller save equivalence for
25313 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
25314 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
25315 call_save_p. Use caller save equivalence depending on the arg.
25316 (split_reg): Adjust the call.
25318 2023-02-09 Jakub Jelinek <jakub@redhat.com>
25321 * common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Formatting fixes.
25322 (cpu_indicator_init): Call get_available_features for all CPUs with
25323 max_level >= 1, rather than just Intel, AMD or Zhaoxin. Formatting
25326 2023-02-09 Jakub Jelinek <jakub@redhat.com>
25328 PR tree-optimization/108688
25329 * match.pd (bit_field_ref [bit_insert]): Simplify BIT_FIELD_REF
25330 of BIT_INSERT_EXPR extracting exactly all inserted bits even
25331 when without mode precision. Formatting fixes.
25333 2023-02-09 Andrew Pinski <apinski@marvell.com>
25335 PR tree-optimization/108688
25336 * match.pd (bit_field_ref [bit_insert]): Avoid generating
25337 BIT_FIELD_REFs of non-mode-precision integral operands.
25339 2023-02-09 Martin Liska <mliska@suse.cz>
25342 * doc/extend.texi: Document that the function
25343 does not work correctly for old VIA processors.
25345 2023-02-09 Andreas Schwab <schwab@suse.de>
25347 * lto-wrapper.cc (merge_and_complain): Handle
25348 -funwind-tables and -fasynchronous-unwind-tables.
25349 (append_compiler_options): Likewise.
25351 2023-02-09 Richard Biener <rguenther@suse.de>
25353 PR tree-optimization/26854
25354 * tree-into-ssa.cc (update_ssa): Turn blocks_to_update to tree
25355 view around insert_updated_phi_nodes_for.
25356 * tree-ssa-alias.cc (maybe_skip_until): Allocate visited bitmap
25358 (walk_aliased_vdefs_1): Likewise.
25360 2023-02-08 Gerald Pfeifer <gerald@pfeifer.com>
25362 * doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
25364 2023-02-08 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
25367 * config.gcc (tm_mlib_file): Define new variable.
25369 2023-02-08 Jakub Jelinek <jakub@redhat.com>
25371 PR tree-optimization/108692
25372 * tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is
25373 widened_code which is different from code, don't call
25374 vect_look_through_possible_promotion but instead just check op is
25375 SSA_NAME with integral type for which vect_is_simple_use is true
25376 and call set_op on this_unprom.
25378 2023-02-08 Andrea Corallo <andrea.corallo@arm.com>
25380 * config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
25382 * config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
25384 * config/aarch64/aarch64.opt (aarch64_ra_sign_key): Rename
25385 to 'aarch_ra_sign_key'.
25386 * config/arm/aarch-common.cc (aarch_ra_sign_key): Remove
25388 * config/arm/arm-protos.h (aarch_ra_sign_key): Likewise.
25389 * config/arm/arm.cc (enum aarch_key_type): Remove definition.
25390 * config/arm/arm.opt: Define.
25392 2023-02-08 Richard Sandiford <richard.sandiford@arm.com>
25394 PR tree-optimization/108316
25395 * tree-vect-stmts.cc (get_load_store_type): When using
25396 internal functions for gather/scatter, make sure that the type
25397 of the offset argument is consistent with the offset vector type.
25399 2023-02-08 Vladimir N. Makarov <vmakarov@redhat.com>
25402 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
25404 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
25405 * ira.cc (validate_equiv_mem): Check memref address variance.
25406 (update_equiv_regs): Define caller save equivalence for
25408 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
25409 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
25410 call_save_p. Use caller save equivalence depending on the arg.
25411 (split_reg): Adjust the call.
25413 2023-02-08 Jakub Jelinek <jakub@redhat.com>
25415 * tree.def (SAD_EXPR): Remove outdated comment about missing
25418 2023-02-07 Marek Polacek <polacek@redhat.com>
25420 * doc/invoke.texi: Update -fchar8_t documentation.
25422 2023-02-07 Vladimir N. Makarov <vmakarov@redhat.com>
25424 * ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
25425 * ira.cc (validate_equiv_mem): Check memref address variance.
25426 (update_equiv_regs): Define caller save equivalence for
25428 (setup_reg_equiv): Clear defined_p flag for caller save equivalence.
25429 * lra-constraints.cc (lra_copy_reg_equiv): Add new arg
25430 call_save_p. Use caller save equivalence depending on the arg.
25431 (split_reg): Adjust the call.
25433 2023-02-07 Richard Biener <rguenther@suse.de>
25435 PR tree-optimization/26854
25436 * gimple-fold.cc (has_use_on_stmt): Look at stmt operands
25437 instead of immediate uses.
25439 2023-02-07 Jakub Jelinek <jakub@redhat.com>
25441 PR tree-optimization/106923
25442 * ipa-split.cc (execute_split_functions): Don't split returns_twice
25445 2023-02-07 Jakub Jelinek <jakub@redhat.com>
25447 PR tree-optimization/106433
25448 * cgraph.cc (set_const_flag_1): Recurse on simd clones too.
25449 (cgraph_node::set_pure_flag): Call set_pure_flag_1 on simd clones too.
25451 2023-02-07 Jan Hubicka <jh@suse.cz>
25453 * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
25456 2023-02-06 Andrew Stubbs <ams@codesourcery.com>
25458 * config/gcn/mkoffload.cc (gcn_stack_size): New global variable.
25459 (process_asm): Create a constructor for GCN_STACK_SIZE.
25460 (main): Parse the -mstack-size option.
25462 2023-02-06 Alex Coplan <alex.coplan@arm.com>
25465 * config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
25466 Use correct constraint for operand 3.
25468 2023-02-06 Martin Jambor <mjambor@suse.cz>
25470 * ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
25472 2023-02-06 Xi Ruoyao <xry111@xry111.site>
25474 * config/loongarch/loongarch.md (bytepick_w_ashift_amount):
25475 New define_int_iterator.
25476 (bytepick_d_ashift_amount): Likewise.
25477 (bytepick_imm): New define_int_attr.
25478 (bytepick_w_lshiftrt_amount): Likewise.
25479 (bytepick_d_lshiftrt_amount): Likewise.
25480 (bytepick_w_<bytepick_imm>): New define_insn template.
25481 (bytepick_w_<bytepick_imm>_extend): Likewise.
25482 (bytepick_d_<bytepick_imm>): Likewise.
25483 (bytepick_w): Remove unused define_insn.
25484 (bytepick_d): Likewise.
25485 (UNSPEC_BYTEPICK_W): Remove unused unspec.
25486 (UNSPEC_BYTEPICK_D): Likewise.
25487 * config/loongarch/predicates.md (const_0_to_3_operand):
25488 Remove unused define_predicate.
25489 (const_0_to_7_operand): Likewise.
25491 2023-02-06 Jakub Jelinek <jakub@redhat.com>
25493 PR tree-optimization/108655
25494 * ubsan.cc (sanitize_unreachable_fn): For -funreachable-traps
25495 or -fsanitize=unreachable -fsanitize-trap=unreachable return
25496 BUILT_IN_UNREACHABLE_TRAP decl rather than BUILT_IN_TRAP.
25498 2023-02-05 Gerald Pfeifer <gerald@pfeifer.com>
25500 * doc/install.texi (Specific): Remove PW32.
25502 2023-02-03 Jakub Jelinek <jakub@redhat.com>
25504 PR tree-optimization/108647
25505 * range-op.cc (operator_equal::op1_range,
25506 operator_not_equal::op1_range): Don't test op2 bound
25507 equality if op2.undefined_p (), instead set_varying.
25508 (operator_lt::op1_range, operator_le::op1_range,
25509 operator_gt::op1_range, operator_ge::op1_range): Return false if
25510 op2.undefined_p ().
25511 (operator_lt::op2_range, operator_le::op2_range,
25512 operator_gt::op2_range, operator_ge::op2_range): Return false if
25513 op1.undefined_p ().
25515 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
25517 PR tree-optimization/108639
25518 * value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
25520 (irange::operator==): Same.
25522 2023-02-03 Aldy Hernandez <aldyh@redhat.com>
25524 PR tree-optimization/108647
25525 * range-op-float.cc (foperator_lt::op1_range): Handle undefined ranges.
25526 (foperator_lt::op2_range): Same.
25527 (foperator_le::op1_range): Same.
25528 (foperator_le::op2_range): Same.
25529 (foperator_gt::op1_range): Same.
25530 (foperator_gt::op2_range): Same.
25531 (foperator_ge::op1_range): Same.
25532 (foperator_ge::op2_range): Same.
25533 (foperator_unordered_lt::op1_range): Same.
25534 (foperator_unordered_lt::op2_range): Same.
25535 (foperator_unordered_le::op1_range): Same.
25536 (foperator_unordered_le::op2_range): Same.
25537 (foperator_unordered_gt::op1_range): Same.
25538 (foperator_unordered_gt::op2_range): Same.
25539 (foperator_unordered_ge::op1_range): Same.
25540 (foperator_unordered_ge::op2_range): Same.
25542 2023-02-03 Andrew MacLeod <amacleod@redhat.com>
25544 PR tree-optimization/107570
25545 * tree-vrp.cc (remove_and_update_globals): Reset SCEV.
25547 2023-02-03 Gaius Mulley <gaiusmod2@gmail.com>
25549 * doc/gm2.texi (Internals): Remove from menu.
25550 (Using): Comment out ifnohtml conditional.
25551 (Documentation): Use gcc url.
25552 (License): Node simplified.
25553 (Copying): New node. Include gpl_v3_without_node.
25554 (Contributing): Node simplified.
25555 (Internals): Commented out.
25556 (Libraries): Node simplified.
25559 (Functions): Ditto.
25561 2023-02-03 Christophe Lyon <christophe.lyon@arm.com>
25563 * config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
25565 (mve_vqshluq_m_n_s<mode>): Likewise.
25566 (mve_vshlq_m_<supf><mode>): Likewise.
25567 (mve_vsriq_m_n_<supf><mode>): Likewise.
25568 (mve_vsubq_m_<supf><mode>): Likewise.
25570 2023-02-03 Martin Jambor <mjambor@suse.cz>
25573 * ipa-sra.cc (push_param_adjustments_for_index): Remove a size check
25574 when comparing to an IPA-CP value.
25575 (dump_list_of_param_indices): New function.
25576 (adjust_parameter_descriptions): Check for mismatching IPA-CP values.
25577 Dump removed candidates using dump_list_of_param_indices.
25578 * ipa-param-manipulation.cc
25579 (ipa_param_body_adjustments::modify_expression): Add assert checking
25580 sizes of a VIEW_CONVERT_EXPR will match.
25581 (ipa_param_body_adjustments::modify_assignment): Likewise.
25583 2023-02-03 Monk Chiang <monk.chiang@sifive.com>
25585 * config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
25586 * config/riscv/riscv.cc: Ditto.
25588 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25590 * config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
25594 * config/riscv/vector.md: Ditto.
25596 2023-02-03 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25598 * config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate.
25599 * config/riscv/riscv-vector-builtins-bases.cc: New class.
25600 * config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto.
25603 * config/riscv/riscv-vector-builtins.cc: Ditto.
25604 * config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
25606 2023-02-02 Iain Sandoe <iain@sandoe.co.uk>
25608 * toplev.cc (toplev::main): Only print the version information header
25609 from toplevel main().
25611 2023-02-02 Paul-Antoine Arras <pa@codesourcery.com>
25613 * config/gcn/gcn-valu.md (cond_<expander><mode>): Add
25614 cond_{ashl|ashr|lshr}
25616 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
25618 PR rtl-optimization/108086
25619 * rtl-ssa/insns.h (insn_info): Make m_num_defs a full unsigned int.
25620 Adjust size-related commentary accordingly.
25622 2023-02-02 Richard Sandiford <richard.sandiford@arm.com>
25624 PR rtl-optimization/108508
25625 * rtl-ssa/accesses.cc (function_info::split_clobber_group): When
25626 the splay tree search gives the first clobber in the second group,
25627 make sure that the root of the first clobber group is updated
25628 correctly. Enter the new clobber group into the definition splay
25631 2023-02-02 Jin Ma <jinma@linux.alibaba.com>
25633 * common/config/riscv/riscv-common.cc (riscv_compute_multilib):
25634 Fix finding best match score.
25636 2023-02-02 Jakub Jelinek <jakub@redhat.com>
25639 PR rtl-optimization/108463
25641 * cselib.cc (cselib_current_insn): Move declaration earlier.
25642 (cselib_hasher::equal): For debug only locs, temporarily override
25643 cselib_current_insn to their l->setting_insn for the
25644 rtx_equal_for_cselib_1 call, so that unsuccessful comparisons don't
25645 promote some debug locs.
25646 * sched-deps.cc (sched_analyze_2) <case MEM>: For MEMs in DEBUG_INSNs
25647 when using cselib call cselib_lookup_from_insn on the address but
25648 don't substitute it.
25650 2023-02-02 Richard Biener <rguenther@suse.de>
25652 PR middle-end/108625
25653 * genmatch.cc (expr::gen_transform): Also disallow resimplification
25654 from pushing to lseq with force_leaf.
25655 (dt_simplify::gen_1): Likewise.
25657 2023-02-02 Andrew Stubbs <ams@codesourcery.com>
25659 * config/gcn/gcn-run.cc: Include libgomp-gcn.h.
25660 (struct kernargs): Replace the common content with kernargs_abi.
25661 (struct heap): Delete.
25662 (main): Read GCN_STACK_SIZE envvar.
25663 Allocate space for the device stacks.
25664 Write the new kernargs fields.
25665 * config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt.
25666 (default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and
25667 PRIVATE_SEGMENT_WAVE_OFFSET_ARG.
25668 (gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content.
25669 (gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top.
25670 Set up the stacks from the values in the kernargs, not private.
25671 (gcn_expand_builtin_1): Match the stack configuration in the prologue.
25672 (gcn_hsa_declare_function_name): Turn off the private segment.
25673 (gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed.
25674 * config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register.
25675 * config/gcn/gcn.opt (mstack-size): Change the description.
25677 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
25680 * config/arm/arm.h (VALID_MVE_PRED_MODE): Add V2QI.
25681 * config/arm/arm.cc (thumb2_legitimate_address_p): Use HImode for
25682 addressing MVE predicate modes.
25683 (mve_bool_vec_to_const): Change to represent correct MVE predicate
25685 (arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
25687 (arm_vector_mode_supported_p): Likewise.
25688 (arm_mode_to_pred_mode): Add V2QI.
25689 * config/arm/arm-builtins.cc (UNOP_PRED_UNONE_QUALIFIERS): New
25691 (UNOP_PRED_PRED_QUALIFIERS): New qualifier
25692 (BINOP_PRED_UNONE_PRED_QUALIFIERS): New qualifier.
25693 (v2qi_UP): New macro.
25694 (v4bi_UP): New macro.
25695 (v8bi_UP): New macro.
25696 (v16bi_UP): New macro.
25697 (arm_expand_builtin_args): Make it able to expand the new predicate
25699 * config/arm/arm-modes.def (V2QI): New mode.
25700 * config/arm/arm-simd-builtin-types.def (Pred1x16_t, Pred2x8_t
25701 Pred4x4_t): Remove unused predicate builtin types.
25702 * config/arm/arm_mve.h (__arm_vctp16q, __arm_vctp32q, __arm_vctp64q,
25703 __arm_vctp8q, __arm_vpnot, __arm_vctp8q_m, __arm_vctp64q_m,
25704 __arm_vctp32q_m, __arm_vctp16q_m): Use predicate modes.
25705 * config/arm/arm_mve_builtins.def (vctp16q, vctp32q, vctp64q, vctp8q,
25706 vpnot, vctp8q_m, vctp16q_m, vctp32q_m, vctp64q_m): Likewise.
25707 * config/arm/constraints.md (DB): Check for VALID_MVE_PRED_MODE instead
25708 of MODE_VECTOR_BOOL.
25709 * config/arm/iterators.md (MVE_7, MVE_7_HI): Add V2QI
25710 (MVE_VPRED): Likewise.
25711 (MVE_vpred): Add V2QI and map upper case predicate modes to lower case.
25712 (MVE_vctp): New mode attribute.
25716 * config/arm/mve.md (mve_vctp<mode1>qhi): Rename this...
25717 (mve_vctp<MVE_vctp>q<MVE_vpred>): ... to this. And use new mode
25719 (mve_vpnothi): Rename this...
25720 (mve_vpnotv16bi): ... to this.
25721 (mve_vctp<mode1>q_mhi): Rename this...
25722 (mve_vctp<MVE_vctp>q_m<MVE_vpred>):... to this.
25723 (mve_vldrdq_gather_base_z_<supf>v2di,
25724 mve_vldrdq_gather_offset_z_<supf>v2di,
25725 mve_vldrdq_gather_shifted_offset_z_<supf>v2di,
25726 mve_vstrdq_scatter_base_p_<supf>v2di,
25727 mve_vstrdq_scatter_offset_p_<supf>v2di,
25728 mve_vstrdq_scatter_offset_p_<supf>v2di_insn,
25729 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di,
25730 mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn,
25731 mve_vstrdq_scatter_base_wb_p_<supf>v2di,
25732 mve_vldrdq_gather_base_wb_z_<supf>v2di,
25733 mve_vldrdq_gather_base_nowb_z_<supf>v2di,
25734 mve_vldrdq_gather_base_wb_z_<supf>v2di_insn): Use V2QI insead of HI for
25736 * config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
25738 (VCTP): ... with this.
25739 (VCTP8Q_M, VCTP16Q_M, VCTP32Q_M, VCTP64Q_M): Replace these...
25740 (VCTP_M): ... with this.
25741 * config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Use
25742 VALID_MVE_PRED_MODE instead of checking for MODE_VECTOR_BOOL class.
25744 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
25747 * config/arm/arm.cc (arm_hard_regno_mode_ok): Use new MACRO.
25748 (arm_modes_tieable_p): Make MVE predicate modes tieable.
25749 * config/arm/arm.h (VALID_MVE_PRED_MODE): New define.
25750 * simplify-rtx.cc (simplify_context::simplify_subreg): Teach
25751 simplify_subreg to simplify subregs where the outermode is not scalar.
25753 2023-02-02 Andre Vieira <andre.simoesdiasvieira@arm.com>
25756 * config/arm/arm-builtins.cc (arm_simd_builtin_type): Rewrite to use
25757 new qualifiers parameter and use unsigned short type for MVE predicate.
25758 (arm_init_builtin): Call arm_simd_builtin_type with qualifiers
25760 (arm_init_crypto_builtins): Likewise.
25762 2023-02-02 Jakub Jelinek <jakub@redhat.com>
25765 * builtins.def (BUILT_IN_UNREACHABLE_TRAP): New builtin.
25766 * internal-fn.def (TRAP): Remove.
25767 * internal-fn.cc (expand_TRAP): Remove.
25768 * tree.cc (build_common_builtin_nodes): Define
25769 BUILT_IN_UNREACHABLE_TRAP if not yet defined.
25770 (builtin_decl_unreachable): Use BUILT_IN_UNREACHABLE_TRAP
25771 instead of BUILT_IN_TRAP.
25772 * gimple.cc (gimple_build_builtin_unreachable): Remove
25773 emitting internal function for BUILT_IN_TRAP.
25774 * asan.cc (maybe_instrument_call): Handle BUILT_IN_UNREACHABLE_TRAP.
25775 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Handle
25776 BUILT_IN_UNREACHABLE_TRAP instead of BUILT_IN_TRAP.
25777 * ipa-devirt.cc (possible_polymorphic_call_target_p): Handle
25778 BUILT_IN_UNREACHABLE_TRAP.
25779 * builtins.cc (expand_builtin, is_inexpensive_builtin): Likewise.
25780 * tree-cfg.cc (verify_gimple_call,
25781 pass_warn_function_return::execute): Likewise.
25782 * attribs.cc (decl_attributes): Don't report exclusions on
25783 BUILT_IN_UNREACHABLE_TRAP either.
25785 2023-02-02 liuhongt <hongtao.liu@intel.com>
25787 PR tree-optimization/108601
25788 * tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Removed.
25789 * tree-vect-loop.cc
25790 (vectorizable_nonlinear_induction): Remove
25791 vect_can_peel_nonlinear_iv_p.
25792 (vect_can_peel_nonlinear_iv_p): Don't peel
25793 nonlinear iv(mult or shift) for epilog when vf is not
25794 constant and moved the defination to ..
25795 * tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p):
25798 2023-02-02 Jakub Jelinek <jakub@redhat.com>
25800 PR middle-end/108435
25801 * tree-nested.cc (convert_nonlocal_omp_clauses)
25802 <case OMP_CLAUSE_LASTPRIVATE>: If info->new_local_var_chain and *seq
25803 is not a GIMPLE_BIND, wrap the sequence into a new GIMPLE_BIND
25804 before calling declare_vars.
25805 (convert_nonlocal_omp_clauses) <case OMP_CLAUSE_LINEAR>: Merge
25806 with the OMP_CLAUSE_LASTPRIVATE handling except for whether
25807 seq is initialized to &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)
25808 or &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause).
25810 2023-02-01 Tamar Christina <tamar.christina@arm.com>
25812 * common/config/aarch64/aarch64-common.cc
25813 (struct aarch64_option_extension): Add native_detect and document struct
25815 (all_extensions): Set new field native_detect.
25816 * config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
25819 2023-02-01 Martin Liska <mliska@suse.cz>
25821 * ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
25824 2023-02-01 Andrew MacLeod <amacleod@redhat.com>
25826 PR tree-optimization/108356
25827 * gimple-range-cache.cc (ranger_cache::range_on_edge): Always
25828 do a search of the DOM tree for a range.
25830 2023-02-01 Martin Liska <mliska@suse.cz>
25833 * cgraphunit.cc (walk_polymorphic_call_targets): Insert
25834 ony non-null values.
25835 * ipa.cc (walk_polymorphic_call_targets): Likewise.
25837 2023-02-01 Martin Liska <mliska@suse.cz>
25840 * gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
25843 2023-02-01 Jakub Jelinek <jakub@redhat.com>
25846 * ree.cc (combine_reaching_defs): Don't return false for paradoxical
25847 subregs in DEBUG_INSNs.
25849 2023-02-01 Richard Sandiford <richard.sandiford@arm.com>
25851 * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
25853 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
25855 * config/s390/s390.cc (s390_restore_gpr_p): New function.
25856 (s390_preserve_gpr_arg_in_range_p): New function.
25857 (s390_preserve_gpr_arg_p): New function.
25858 (s390_preserve_fpr_arg_p): New function.
25859 (s390_register_info_stdarg_fpr): Rename to ...
25860 (s390_register_info_arg_fpr): ... this. Add -mpreserve-args handling.
25861 (s390_register_info_stdarg_gpr): Rename to ...
25862 (s390_register_info_arg_gpr): ... this. Add -mpreserve-args handling.
25863 (s390_register_info): Use the renamed functions above.
25864 (s390_optimize_register_info): Likewise.
25865 (save_fpr): Generate CFI for -mpreserve-args.
25866 (save_gprs): Generate CFI for -mpreserve-args. Drop return value.
25867 (s390_emit_prologue): Adjust to changed calling convention of save_gprs.
25868 (s390_optimize_prologue): Likewise.
25869 * config/s390/s390.opt: New option -mpreserve-args
25871 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
25873 * config/s390/s390.cc (save_gprs): Use gen_frame_mem.
25874 (restore_gprs): Likewise.
25875 (s390_emit_stack_tie): Make the stack_tie to be dependent on the
25876 frame pointer if a frame-pointer is used.
25877 (s390_emit_prologue): Emit stack_tie when frame-pointer is needed.
25878 * config/s390/s390.md (stack_tie): Add a register operand and
25880 (@stack_tie<mode>): ... this.
25882 2023-02-01 Andreas Krebbel <krebbel@linux.ibm.com>
25884 * dwarf2cfi.cc (dwarf2out_frame_debug_cfa_restore): Add
25885 EMIT_CFI parameter.
25886 (dwarf2out_frame_debug): Add case for REG_CFA_NORESTORE.
25887 * reg-notes.def (REG_CFA_NOTE): New reg note definition.
25889 2023-02-01 Richard Biener <rguenther@suse.de>
25891 PR middle-end/108500
25892 * dominance.cc (assign_dfs_numbers): Replace recursive DFS
25893 with tree traversal algorithm.
25895 2023-02-01 Jason Merrill <jason@redhat.com>
25897 * doc/invoke.texi: Document -Wno-changes-meaning.
25899 2023-02-01 David Malcolm <dmalcolm@redhat.com>
25901 * doc/invoke.texi (Static Analyzer Options): Add notes about
25902 limitations of -fanalyzer.
25904 2023-01-31 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
25906 * config/riscv/constraints.md (vj): New.
25908 * config/riscv/iterators.md: Add more opcode.
25909 * config/riscv/predicates.md (vector_arith_operand): New.
25910 (vector_neg_arith_operand): New.
25911 (vector_shift_operand): New.
25912 * config/riscv/riscv-vector-builtins-bases.cc (class binop): New.
25913 * config/riscv/riscv-vector-builtins-bases.h: (vadd): New.
25930 * config/riscv/riscv-vector-builtins-functions.def (vadd): New.
25947 * config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): New.
25948 * config/riscv/riscv-vector-builtins-shapes.h (binop): New.
25949 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New.
25950 (DEF_RVV_U_OPS): New.
25951 (rvv_arg_type_info::get_base_vector_type): Handle
25952 RVV_BASE_shift_vector.
25953 (rvv_arg_type_info::get_tree_type): Ditto.
25954 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add
25955 RVV_BASE_shift_vector.
25956 * config/riscv/riscv.cc (riscv_print_operand): Handle 'V'.
25957 * config/riscv/vector-iterators.md: Handle more opcode.
25958 * config/riscv/vector.md (@pred_<optab><mode>): New.
25960 2023-01-31 Philipp Tomsich <philipp.tomsich@vrull.eu>
25963 * config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
25966 2023-01-31 Richard Sandiford <richard.sandiford@arm.com>
25968 PR tree-optimization/108608
25969 * tree-vect-loop.cc (vect_transform_reduction): Handle single
25970 def-use cycles that involve function calls rather than tree codes.
25972 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
25974 PR tree-optimization/108385
25975 * gimple-range-gori.cc (gori_compute::compute_operand_range):
25976 Allow VARYING computations to continue if there is a relation.
25977 * range-op.cc (pointer_plus_operator::op2_range): New.
25979 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
25981 PR tree-optimization/108359
25982 * range-op.cc (range_operator::wi_fold_in_parts_equiv): New.
25983 (range_operator::fold_range): If op1 is equivalent to op2 then
25984 invoke new fold_in_parts_equiv to operate on sub-components.
25985 * range-op.h (wi_fold_in_parts_equiv): New prototype.
25987 2023-01-31 Andrew MacLeod <amacleod@redhat.com>
25989 * gimple-range-gori.cc (gori_compute::compute_operand_range): Do
25990 not abort calculations if there is a valid relation available.
25991 (gori_compute::refine_using_relation): Pass correct relation trio.
25992 (gori_compute::compute_operand1_range): Create trio and use it.
25993 (gori_compute::compute_operand2_range): Ditto.
25994 * range-op.cc (operator_plus::op1_range): Use correct trio member.
25995 (operator_minus::op1_range): Use correct trio member.
25996 * value-relation.cc (value_relation::create_trio): New.
25997 * value-relation.h (value_relation::create_trio): New prototype.
25999 2023-01-31 Jakub Jelinek <jakub@redhat.com>
26002 * config/i386/i386-expand.cc
26003 (ix86_convert_const_wide_int_to_broadcast): Return nullptr if
26004 CONST_WIDE_INT_NUNITS (op) times HOST_BITS_PER_WIDE_INT isn't
26005 equal to bitsize of mode.
26007 2023-01-31 Jakub Jelinek <jakub@redhat.com>
26009 PR rtl-optimization/108596
26010 * bb-reorder.cc (fix_up_fall_thru_edges): Handle the case where cur_bb
26011 ends with asm goto and has a crossing fallthrough edge to the same bb
26012 that contains at least one of its labels by restoring EDGE_CROSSING
26013 flag even on possible edge from cur_bb to new_bb successor.
26015 2023-01-31 Jakub Jelinek <jakub@redhat.com>
26018 * config/i386/avx512erintrin.h (_mm512_exp2a23_round_pd,
26019 _mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps,
26020 _mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps): Use
26021 _mm512_undefined_pd () or _mm512_undefined_ps () instead of using
26022 uninitialized automatic variable __W.
26024 2023-01-31 Gerald Pfeifer <gerald@pfeifer.com>
26026 * doc/include/fdl.texi: Change fsf.org to www.fsf.org.
26028 2023-01-30 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26030 * config/riscv/riscv-protos.h (get_vector_mode): New function.
26031 * config/riscv/riscv-v.cc (get_vector_mode): Ditto.
26032 * config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum.
26033 (class loadstore): Adjust for indexed loads/stores support.
26035 * config/riscv/riscv-vector-builtins-bases.h: New function declare.
26036 * config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
26052 * config/riscv/riscv-vector-builtins-shapes.cc
26053 (struct indexed_loadstore_def): New class.
26055 * config/riscv/riscv-vector-builtins-shapes.h: Ditto.
26056 * config/riscv/riscv-vector-builtins.cc (required_extensions_p): Adjust
26057 for indexed loads/stores support.
26058 (check_required_extensions): Ditto.
26059 (rvv_arg_type_info::get_base_vector_type): New function.
26060 (rvv_arg_type_info::get_tree_type): Ditto.
26061 (function_builder::add_unique_function): Adjust for indexed loads/stores
26063 (function_expander::use_exact_insn): New function.
26064 * config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Adjust for
26065 indexed loads/stores support.
26066 (struct rvv_arg_type_info): Ditto.
26067 (function_expander::index_mode): New function.
26068 (function_base::apply_tail_policy_p): Ditto.
26069 (function_base::apply_mask_policy_p): Ditto.
26070 * config/riscv/vector-iterators.md (unspec): New unspec.
26071 * config/riscv/vector.md (unspec): Ditto.
26072 (@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New
26074 (@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
26075 (@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
26076 (@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
26077 (@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
26078 (@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
26079 (@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
26080 (@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
26081 (@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
26082 (@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
26083 (@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
26084 (@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
26085 (@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
26086 (@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
26088 2023-01-30 Flavio Cruz <flaviocruz@gmail.com>
26090 * config.gcc: Recognize x86_64-*-gnu* targets and include
26092 * config/i386/gnu64.h: Define configuration for new target
26093 including ld.so location.
26095 2023-01-30 Philipp Tomsich <philipp.tomsich@vrull.eu>
26097 * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
26098 ampere1a to include SM4.
26100 2023-01-30 Andrew Pinski <apinski@marvell.com>
26102 PR tree-optimization/108582
26103 * tree-ssa-phiopt.cc (match_simplify_replacement): Add check
26104 for middlebb to have no phi nodes.
26106 2023-01-30 Richard Biener <rguenther@suse.de>
26108 PR tree-optimization/108574
26109 * tree-ssa-sccvn.cc (visit_phi): Instead of swapping
26110 sameval and def, ignore the equivalence if there's the
26111 danger of oscillating between two values.
26113 2023-01-30 Andreas Schwab <schwab@suse.de>
26115 * common/config/riscv/riscv-common.cc
26116 (riscv_option_optimization_table)
26117 [TARGET_DEFAULT_ASYNC_UNWIND_TABLES]: Enable
26118 -fasynchronous-unwind-tables and -funwind-tables.
26119 * config.gcc (riscv*-*-linux*): Define
26120 TARGET_DEFAULT_ASYNC_UNWIND_TABLES.
26122 2023-01-30 YunQiang Su <yunqiang.su@cipunited.com>
26124 * Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
26125 value of includedir.
26127 2023-01-30 Richard Biener <rguenther@suse.de>
26130 * cgraph.cc (possibly_call_in_translation_unit_p): Relax
26133 2023-01-30 liuhongt <hongtao.liu@intel.com>
26135 * config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
26136 * doc/invoke.texi: Ditto.
26138 2023-01-29 Jan Hubicka <hubicka@ucw.cz>
26140 * ipa-utils.cc: Include calls.h, cfgloop.h and cfganal.h
26141 (stmt_may_terminate_function_p): If assuming return or EH
26142 volatile asm is safe.
26143 (find_always_executed_bbs): Fix handling of terminating BBS and
26144 infinite loops; add debug output.
26145 * tree-ssa-alias.cc (stmt_kills_ref_p): Fix debug output
26147 2023-01-28 Philipp Tomsich <philipp.tomsich@vrull.eu>
26149 * config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
26150 off-by-one in checking the permissible shift-amount.
26152 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
26154 * doc/extend.texi (Named Address Spaces): Update link to the
26157 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
26159 * doc/standards.texi (Standards): Fix markup.
26161 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
26163 * doc/standards.texi (Standards): Update link to Objective-C book.
26165 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
26167 * doc/invoke.texi (Instrumentation Options): Update reference to
26170 2023-01-28 Gerald Pfeifer <gerald@pfeifer.com>
26172 * doc/standards.texi: Update Go1 link.
26174 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26176 * config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
26177 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
26180 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
26181 * config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
26183 * config/riscv/riscv-vector-builtins.cc
26184 (function_expander::use_contiguous_load_insn): Support vlse/vsse.
26185 * config/riscv/vector.md (@pred_strided_load<mode>): New md pattern.
26186 (@pred_strided_store<mode>): Ditto.
26188 2023-01-28 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26190 * config/riscv/vector.md (tail_policy_op_idx): Remove.
26191 (mask_policy_op_idx): Remove.
26192 (avl_type_op_idx): Remove.
26194 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
26196 PR tree-optimization/96373
26197 * tree.h (sign_mask_for): Declare.
26198 * tree.cc (sign_mask_for): New function.
26199 (signed_or_unsigned_type_for): For vector types, try to use the
26200 related_int_vector_mode.
26201 * genmatch.cc (commutative_op): Handle conditional internal functions.
26202 * match.pd: Fold an IFN_COND_MUL+copysign into an IFN_COND_XOR+and.
26204 2023-01-27 Richard Sandiford <richard.sandiford@arm.com>
26206 * tree-vectorizer.cc (vector_costs::compare_inside_loop_cost):
26207 Use the likely minimum VF when bounding the denominators to
26208 the estimated number of iterations.
26210 2023-01-27 Richard Biener <rguenther@suse.de>
26213 * doc/invoke.texi (-shared): Clarify effect on -ffast-math
26214 and -Ofast FP environment side-effects.
26216 2023-01-27 Richard Biener <rguenther@suse.de>
26219 * config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
26220 Don't add crtfastmath.o for -shared.
26222 2023-01-27 Richard Biener <rguenther@suse.de>
26225 * config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
26228 2023-01-27 Richard Biener <rguenther@suse.de>
26231 * config/alpha/linux.h (ENDFILE_SPEC): Don't add
26232 crtfastmath.o for -shared.
26234 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
26236 PR tree-optimization/108306
26237 * range-op.cc (operator_lshift::fold_range): Return [0, 0] not
26238 varying for shifts that are always out of void range.
26239 (operator_rshift::fold_range): Return [0, 0] not
26240 varying for shifts that are always out of void range.
26242 2023-01-27 Andrew MacLeod <amacleod@redhat.com>
26244 PR tree-optimization/108447
26245 * gimple-range-fold.cc (old_using_range::relation_fold_and_or):
26246 Do not attempt to fold HONOR_NAN types.
26248 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26250 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
26251 Remove _m suffix for "vop_m" C++ overloaded API name.
26253 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26255 * config/riscv/riscv-vector-builtins-bases.cc (BASE): Add vlm/vsm support.
26256 * config/riscv/riscv-vector-builtins-bases.h: Ditto.
26257 * config/riscv/riscv-vector-builtins-functions.def (vlm): New define.
26259 * config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): Add vlm/vsm support.
26260 * config/riscv/riscv-vector-builtins-types.def (DEF_RVV_B_OPS): Ditto.
26261 (vbool64_t): Ditto.
26262 (vbool32_t): Ditto.
26263 (vbool16_t): Ditto.
26268 * config/riscv/riscv-vector-builtins.cc (DEF_RVV_B_OPS): Ditto.
26269 (rvv_arg_type_info::get_tree_type): Ditto.
26270 (function_expander::use_contiguous_load_insn): Ditto.
26271 * config/riscv/vector.md (@pred_store<mode>): Ditto.
26273 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26275 * config/riscv/riscv-vsetvl.cc (vsetvl_insn_p): Add condition to avoid ICE.
26276 (vsetvl_discard_result_insn_p): New function.
26277 (reg_killed_by_bb_p): rename to find_reg_killed_by.
26278 (find_reg_killed_by): New name.
26279 (get_vl): allow it to be called by more functions.
26280 (has_vsetvl_killed_avl_p): Add condition.
26281 (get_avl): allow it to be called by more functions.
26282 (insn_should_be_added_p): New function.
26283 (get_all_nonphi_defs): Refine function.
26284 (get_all_sets): Ditto.
26285 (get_same_bb_set): New function.
26286 (any_insn_in_bb_p): Ditto.
26287 (any_set_in_bb_p): Ditto.
26288 (get_vl_vtype_info): Add VLMAX forward optimization.
26289 (source_equal_p): Fix issues.
26290 (extract_single_source): Refine.
26291 (avl_info::multiple_source_equal_p): New function.
26292 (avl_info::operator==): Adjust for final version.
26293 (vl_vtype_info::operator==): Ditto.
26294 (vl_vtype_info::same_avl_p): Ditto.
26295 (vector_insn_info::parse_insn): Ditto.
26296 (vector_insn_info::available_p): New function.
26297 (vector_insn_info::merge): Adjust for final version.
26298 (vector_insn_info::dump): Add hard_empty.
26299 (pass_vsetvl::hard_empty_block_p): New function.
26300 (pass_vsetvl::backward_demand_fusion): Adjust for final version.
26301 (pass_vsetvl::forward_demand_fusion): Ditto.
26302 (pass_vsetvl::demand_fusion): Ditto.
26303 (pass_vsetvl::cleanup_illegal_dirty_blocks): New function.
26304 (pass_vsetvl::compute_local_properties): Adjust for final version.
26305 (pass_vsetvl::can_refine_vsetvl_p): Ditto.
26306 (pass_vsetvl::refine_vsetvls): Ditto.
26307 (pass_vsetvl::commit_vsetvls): Ditto.
26308 (pass_vsetvl::propagate_avl): New function.
26309 (pass_vsetvl::lazy_vsetvl): Adjust for new version.
26310 * config/riscv/riscv-vsetvl.h (enum def_type): New enum.
26312 2023-01-27 Jakub Jelinek <jakub@redhat.com>
26315 * doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
26316 from size_t to int.
26318 2023-01-27 Jakub Jelinek <jakub@redhat.com>
26321 * cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Allow
26322 redirection of calls to __builtin_trap in addition to redirection
26323 to __builtin_unreachable.
26325 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26327 * config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
26329 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26331 * config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
26332 (emit_vsetvl_insn): Ditto.
26334 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26336 * config/riscv/vector.md: Fix constraints.
26338 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26340 * config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
26342 2023-01-27 Patrick Palka <ppalka@redhat.com>
26343 Jakub Jelinek <jakub@redhat.com>
26345 * tree-core.h (tree_code_type, tree_code_length): For
26346 C++17 and later, add inline keyword, otherwise don't define
26347 the arrays, but declare extern arrays.
26348 * tree.cc (tree_code_type, tree_code_length): Define these
26349 arrays for C++14 and older.
26351 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26353 * config/riscv/riscv-vsetvl.h: Change it into public.
26355 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26357 * config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
26360 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26362 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
26364 2023-01-27 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26366 * config/riscv/vector.md: Fix incorrect attributes.
26368 2023-01-27 Richard Biener <rguenther@suse.de>
26371 * config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
26372 Don't add crtfastmath.o for -shared.
26374 2023-01-27 Alexandre Oliva <oliva@gnu.org>
26376 * doc/options.texi (option, RejectNegative): Mention that
26377 -g-started options are also implicitly negatable.
26379 2023-01-26 Kito Cheng <kito.cheng@sifive.com>
26381 * config/riscv/riscv-vector-builtins.cc (register_builtin_types):
26382 Use get_typenode_from_name to get fixed-width integer type
26384 * config/riscv/riscv-vector-builtins.def: Update define with
26385 fixed-width integer type nodes.
26387 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26389 * config/riscv/riscv-vsetvl.cc (same_bb_and_before_p): Remove it.
26390 (real_insn_and_same_bb_p): New function.
26391 (same_bb_and_after_or_equal_p): Remove it.
26392 (before_p): New function.
26393 (reg_killed_by_bb_p): Ditto.
26394 (has_vsetvl_killed_avl_p): Ditto.
26395 (get_vl): Move location so that we can call it.
26396 (anticipatable_occurrence_p): Fix issue of AVL=REG support.
26397 (available_occurrence_p): Ditto.
26398 (dominate_probability_p): Remove it.
26399 (can_backward_propagate_p): Remove it.
26400 (get_all_nonphi_defs): New function.
26401 (get_all_predecessors): Ditto.
26402 (any_insn_in_bb_p): Ditto.
26403 (insert_vsetvl): Adjust AVL REG.
26404 (source_equal_p): New function.
26405 (extract_single_source): Ditto.
26406 (avl_info::single_source_equal_p): Ditto.
26407 (avl_info::operator==): Adjust for AVL=REG.
26408 (vl_vtype_info::same_avl_p): Ditto.
26409 (vector_insn_info::set_demand_info): Remove it.
26410 (vector_insn_info::compatible_p): Adjust for AVL=REG.
26411 (vector_insn_info::compatible_avl_p): New function.
26412 (vector_insn_info::merge): Adjust AVL=REG.
26413 (vector_insn_info::dump): Ditto.
26414 (pass_vsetvl::merge_successors): Remove it.
26415 (enum fusion_type): New enum.
26416 (pass_vsetvl::get_backward_fusion_type): New function.
26417 (pass_vsetvl::backward_demand_fusion): Adjust for AVL=REG.
26418 (pass_vsetvl::forward_demand_fusion): Ditto.
26419 (pass_vsetvl::demand_fusion): Ditto.
26420 (pass_vsetvl::prune_expressions): Ditto.
26421 (pass_vsetvl::compute_local_properties): Ditto.
26422 (pass_vsetvl::cleanup_vsetvls): Ditto.
26423 (pass_vsetvl::commit_vsetvls): Ditto.
26424 (pass_vsetvl::init): Ditto.
26425 * config/riscv/riscv-vsetvl.h (enum fusion_type): New enum.
26426 (enum merge_type): New enum.
26428 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26430 * config/riscv/riscv-vsetvl.cc
26431 (vector_infos_manager::vector_infos_manager): Add probability.
26432 (vector_infos_manager::dump): Ditto.
26433 (pass_vsetvl::compute_probabilities): Ditto.
26434 * config/riscv/riscv-vsetvl.h (struct vector_block_info): Ditto.
26436 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26438 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Remove dirty_pat.
26439 (vector_insn_info::merge): Ditto.
26440 (vector_insn_info::dump): Ditto.
26441 (pass_vsetvl::merge_successors): Ditto.
26442 (pass_vsetvl::backward_demand_fusion): Ditto.
26443 (pass_vsetvl::forward_demand_fusion): Ditto.
26444 (pass_vsetvl::commit_vsetvls): Ditto.
26445 * config/riscv/riscv-vsetvl.h: Ditto.
26447 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26449 * config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
26452 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26454 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
26456 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26458 * config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
26459 Add pre-check for redundant flow.
26461 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26463 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::create_bitmap_vectors): New function.
26464 (vector_infos_manager::free_bitmap_vectors): Ditto.
26465 (pass_vsetvl::pre_vsetvl): Adjust codes.
26466 * config/riscv/riscv-vsetvl.h: New function declaration.
26468 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26470 * config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb.
26471 (vector_insn_info::set_demand_info): New function.
26472 (pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3.
26473 (pass_vsetvl::merge_successors): Ditto.
26474 (pass_vsetvl::compute_global_backward_infos): Ditto.
26475 (pass_vsetvl::backward_demand_fusion): Ditto.
26476 (pass_vsetvl::forward_demand_fusion): Ditto.
26477 (pass_vsetvl::demand_fusion): New function.
26478 (pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3.
26479 * config/riscv/riscv-vsetvl.h: New function declaration.
26481 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26483 * config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
26485 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26487 * config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
26488 (pass_vsetvl::compute_global_backward_infos): Simplify codes.
26490 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26492 * config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
26493 (backward_propagate_worthwhile_p): Fix non-worthwhile.
26495 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26497 * config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
26499 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26501 * config/riscv/riscv-vsetvl.cc (vector_infos_manager::all_same_avl_p): New function.
26502 (pass_vsetvl::can_refine_vsetvl_p): Add AVL check.
26503 (pass_vsetvl::commit_vsetvls): Ditto.
26504 * config/riscv/riscv-vsetvl.h: New function declaration.
26506 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26508 * config/riscv/vector.md:
26510 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26512 * config/riscv/riscv-vector-builtins-bases.cc (class loadstore): use
26513 pred_store for vse.
26514 * config/riscv/riscv-vector-builtins.cc
26515 (function_expander::add_mem_operand): Refine function.
26516 (function_expander::use_contiguous_load_insn): Adjust new
26518 (function_expander::use_contiguous_store_insn): Ditto.
26519 * config/riscv/riscv-vector-builtins.h: Refine function.
26520 * config/riscv/vector.md (@pred_store<mode>): New pattern.
26522 2023-01-26 Ju-Zhe Zhong <juzhe.zhong@rivai.ai>
26524 * config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
26526 2023-01-26 Marek Polacek <polacek@redhat.com>
26528 PR middle-end/108543
26529 * opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
26530 if it was previously set.
26532 2023-01-26 Jakub Jelinek <jakub@redhat.com>
26534 PR tree-optimization/108540
26535 * range-op-float.cc (foperator_equal::fold_range): If both op1 and op2
26536 are singletons, use range_true even if op1 != op2
26537 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
26538 even if intersection of the ranges is empty and one has
26539 zero low bound and another zero high bound, use range_true_and_false
26540 rather than range_false.
26541 (foperator_not_equal::fold_range): If both op1 and op2
26542 are singletons, use range_false even if op1 != op2
26543 when one range is [-0.0, -0.0] and another [0.0, 0.0]. Similarly,
26544 even if intersection of the ranges is empty and one has
26545 zero low bound and another zero high bound, use range_true_and_false
26546 rather than range_true.
26548 2023-01-26 Jakub Jelinek <jakub@redhat.com>
26550 * value-relation.cc (kind_string): Add const.
26551 (rr_negate_table, rr_swap_table, rr_intersect_table,
26552 rr_union_table, rr_transitive_table): Add static const, change
26553 element type from relation_kind to unsigned char.
26554 (relation_negate, relation_swap, relation_intersect, relation_union,
26555 relation_transitive): Cast rr_*_table element to relation_kind.
26556 (relation_to_code): Add static const.
26557 (relation_tests): Assert VREL_LAST is smaller than UCHAR_MAX.
26559 2023-01-26 Richard Biener <rguenther@suse.de>
26561 PR tree-optimization/108547
26562 * gimple-predicate-analysis.cc (value_sat_pred_p):
26565 2023-01-26 Siddhesh Poyarekar <siddhesh@gotplt.org>
26567 PR tree-optimization/108522
26568 * tree-object-size.cc (compute_object_offset): Make EXPR
26569 argument non-const. Call component_ref_field_offset.
26571 2023-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
26573 * config/aarch64/aarch64-option-extensions.def (cssc): Specify
26574 FEATURE_STRING field.
26576 2023-01-26 Gerald Pfeifer <gerald@pfeifer.com>
26578 * doc/sourcebuild.texi: Refer to projects as GCC and GDB.
26580 2023-01-25 Iain Sandoe <iain@sandoe.co.uk>
26584 * gcc.cc: Provide default specs for Modula-2 so that when the
26585 language is not built-in better diagnostics are emitted for
26586 attempts to use .mod or .m2i file extensions.
26588 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
26590 * config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
26592 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
26594 * config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
26596 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
26598 * config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
26601 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
26603 * config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
26605 2023-01-25 Andrea Corallo <andrea.corallo@arm.com>
26607 * config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
26609 2023-01-25 Richard Biener <rguenther@suse.de>
26611 PR tree-optimization/108523
26612 * tree-ssa-sccvn.cc (visit_phi): Avoid using the exclusive
26613 backedge value for the result when using predication to
26616 2023-01-25 Richard Biener <rguenther@suse.de>
26618 * doc/lto.texi (Command line options): Reword and update reference
26619 to removed lto_read_all_file_options.
26621 2023-01-25 Richard Sandiford <richard.sandiford@arm.com>
26623 * config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
26626 2023-01-25 Gerald Pfeifer <gerald@pfeifer.com>
26628 * doc/contrib.texi: Add Jose E. Marchesi.
26630 2023-01-25 Jakub Jelinek <jakub@redhat.com>
26632 PR tree-optimization/108498
26633 * gimple-ssa-store-merging.cc (class store_operand_info):
26634 End coment with full stop rather than comma.
26635 (split_group): Likewise.
26636 (merged_store_group::apply_stores): Clear string_concatenation if
26637 start or end aren't on a byte boundary.
26639 2023-01-25 Siddhesh Poyarekar <siddhesh@gotplt.org>
26640 Jakub Jelinek <jakub@redhat.com>
26642 PR tree-optimization/108522
26643 * tree-object-size.cc (compute_object_offset): Use
26644 TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
26646 2023-01-24 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
26648 * config/xtensa/xtensa.md:
26649 Fix exit from loops detecting references before overwriting in the
26652 2023-01-24 Vladimir N. Makarov <vmakarov@redhat.com>
26654 * lra-constraints.cc (get_hard_regno): Remove final_p arg. Always
26655 do elimination but only for hard register.
26656 (operands_match_p, uses_hard_regs_p, process_alt_operands): Adjust
26657 calls of get_hard_regno.
26659 2023-01-24 Stefan Schulze Frielinghaus <stefansf@linux.ibm.com>
26661 * config/s390/s390-d.cc (s390_d_target_versions): Fix detection
26664 2023-01-24 Andre Vieira <andre.simoesdiasvieira@arm.com>
26667 * config/arm/mve.md (mve_vstrbq_p_<supf><mode>, mve_vstrhq_p_fv8hf,
26668 mve_vstrhq_p_<supf><mode>, mve_vstrwq_p_<supf>v4si): Add memory operand
26671 2023-01-24 Xianmiao Qu <cooper.qu@linux.alibaba.com>
26673 * config.gcc(csky-*-linux*): Define CSKY_ENABLE_MULTILIB
26674 and only include 'csky/t-csky-linux' when enable multilib.
26675 * config/csky/csky-linux-elf.h(SYSROOT_SUFFIX_SPEC): Don't
26676 define it when disable multilib.
26678 2023-01-24 Richard Biener <rguenther@suse.de>
26680 PR tree-optimization/108500
26681 * dominance.h (calculate_dominance_info): Add parameter
26682 to indicate fast-query compute, defaulted to true.
26683 * dominance.cc (calculate_dominance_info): Honor
26684 fast-query compute parameter.
26685 * tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Do
26686 not compute the dominator fast-query DFS numbers.
26688 2023-01-24 Eric Biggers <ebiggers@google.com>
26691 * optc-save-gen.awk: Fix copy-and-paste error.
26693 2023-01-24 Jakub Jelinek <jakub@redhat.com>
26696 * cgraphbuild.cc: Include gimplify.h.
26697 (record_reference): Replace VAR_DECLs with DECL_HAS_VALUE_EXPR_P with
26698 their corresponding DECL_VALUE_EXPR expressions after unsharing.
26700 2023-01-24 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
26703 * config.gcc (tm_file): Move the variable out of loop.
26705 2023-01-24 Lulu Cheng <chenglulu@loongson.cn>
26706 Yang Yujie <yangyujie@loongson.cn>
26709 * config/loongarch/loongarch.cc (loongarch_classify_address):
26710 Add precessint for CONST_INT.
26711 (loongarch_print_operand_reloc): Operand modifier 'c' is supported.
26712 (loongarch_print_operand): Increase the processing of '%c'.
26713 * doc/extend.texi: Adds documents for LoongArch operand modifiers.
26714 And port the public operand modifiers information to this document.
26716 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
26718 * doc/invoke.texi (-mbranch-protection): Update documentation.
26720 2023-01-23 Richard Biener <rguenther@suse.de>
26723 * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
26725 * config/sparc/linux.h (ENDFILE_SPEC): Likewise.
26726 * config/sparc/linux64.h (ENDFILE_SPEC): Likewise.
26727 * config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise.
26728 * config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise.
26730 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
26732 * config/arm/aout.h (ra_auth_code): Add entry in enum.
26733 * config/arm/arm.cc (emit_multi_reg_push): Add RA_AUTH_CODE register
26734 to dwarf frame expression.
26735 (arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register.
26736 (arm_expand_prologue): Update frame related information and reg notes
26737 for pac/pacbit insn.
26738 (arm_regno_class): Check for pac pseudo reigster.
26739 (arm_dbx_register_number): Assign ra_auth_code register number in dwarf.
26740 (arm_init_machine_status): Set pacspval_needed to zero.
26741 (arm_debugger_regno): Check for PAC register.
26742 (arm_unwind_emit_sequence): Print .save directive with ra_auth_code
26744 (arm_unwind_emit_set): Add entry for IP_REGNUM in switch case.
26745 (arm_unwind_emit): Update REG_CFA_REGISTER case._
26746 * config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify.
26747 (DWARF_PAC_REGNUM): Define.
26748 (IS_PAC_REGNUM): Likewise.
26749 (enum reg_class): Add PAC_REG entry.
26750 (machine_function): Add pacbti_needed state to structure.
26751 * config/arm/arm.md (RA_AUTH_CODE): Define.
26753 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
26755 * config.gcc ($tm_file): Update variable.
26756 * config/arm/arm-mlib.h: Create new header file.
26757 * config/arm/t-rmprofile (MULTI_ARCH_DIRS_RM): Rename mbranch-protection
26758 multilib arch directory.
26759 (MULTILIB_REUSE): Add multilib reuse rules.
26760 (MULTILIB_MATCHES): Add multilib match rules.
26762 2023-01-23 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
26764 * config/arm/arm-cpus.in (cortex-m85): Define new CPU.
26765 * config/arm/arm-tables.opt: Regenerate.
26766 * config/arm/arm-tune.md: Likewise.
26767 * doc/invoke.texi (Arm Options): Document -mcpu=cortex-m85.
26768 * (-mfix-cmse-cve-2021-35465): Likewise.
26770 2023-01-23 Richard Biener <rguenther@suse.de>
26772 PR tree-optimization/108482
26773 * tree-vect-generic.cc (expand_vector_operations): Fold remaining
26774 .LOOP_DIST_ALIAS calls.
26776 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
26778 * config.gcc (arm*-*-*): Add 'aarch-bti-insert.o' object.
26779 * config/arm/arm-protos.h: Update.
26780 * config/arm/aarch-common-protos.h: Declare
26781 'aarch_bti_arch_check'.
26782 * config/arm/arm.cc (aarch_bti_enabled) Update.
26783 (aarch_bti_j_insn_p, aarch_pac_insn_p, aarch_gen_bti_c)
26784 (aarch_gen_bti_j, aarch_bti_arch_check): New functions.
26785 * config/arm/arm.md (bti_nop): New insn.
26786 * config/arm/t-arm (PASSES_EXTRA): Add 'arm-passes.def'.
26787 (aarch-bti-insert.o): New target.
26788 * config/arm/unspecs.md (VUNSPEC_BTI_NOP): New unspec.
26789 * config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Verify arch
26791 (gate): Make use of 'aarch_bti_arch_check'.
26792 * config/arm/arm-passes.def: New file.
26793 * config/aarch64/aarch64.cc (aarch_bti_arch_check): New function.
26795 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
26797 * config.gcc (aarch64*-*-*): Rename 'aarch64-bti-insert.o' into
26798 'aarch-bti-insert.o'.
26799 * config/aarch64/aarch64-protos.h: Remove 'aarch64_bti_enabled'
26801 * config/aarch64/aarch64.cc (aarch_bti_enabled): Rename.
26802 (aarch_bti_j_insn_p, aarch_pac_insn_p): New functions.
26803 (aarch64_output_mi_thunk)
26804 (aarch64_print_patchable_function_entry)
26805 (aarch64_file_end_indicate_exec_stack): Update renamed function
26806 calls to renamed functions.
26807 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise.
26808 * config/aarch64/t-aarch64 (aarch-bti-insert.o): Update
26810 * config/aarch64/aarch64-bti-insert.cc: Delete.
26811 * config/arm/aarch-bti-insert.cc: New file including and
26812 generalizing code from aarch64-bti-insert.cc.
26813 * config/arm/aarch-common-protos.h: Update.
26815 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
26817 * config/arm/arm.h (arm_arch8m_main): Declare it.
26818 * config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
26820 * config/arm/arm.cc (arm_arch8m_main): Define it.
26821 (arm_option_reconfigure_globals): Set arm_arch8m_main.
26822 (arm_compute_frame_layout, arm_expand_prologue)
26823 (thumb2_expand_return, arm_expand_epilogue)
26824 (arm_conditional_register_usage): Update for pac codegen.
26825 (arm_current_function_pac_enabled_p): New function.
26826 (aarch_bti_enabled) New function.
26827 (use_return_insn): Return zero when pac is enabled.
26828 * config/arm/arm.md (pac_ip_lr_sp, pacbti_ip_lr_sp, aut_ip_lr_sp):
26830 * config/arm/unspecs.md (UNSPEC_PAC_NOP)
26831 (VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
26833 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
26835 * config/arm/t-rmprofile: Add multilib rules for march +pacbti and
26836 mbranch-protection.
26838 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
26839 Tejas Belagod <tbelagod@arm.com>
26841 * config/arm/arm.cc (arm_file_start): Emit EABI attributes for
26842 Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use.
26844 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
26845 Tejas Belagod <tbelagod@arm.com>
26846 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
26848 * ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
26849 new pseudo register class _UVRSC_PAC.
26851 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
26852 Tejas Belagod <tbelagod@arm.com>
26854 * config/arm/arm-c.cc (arm_cpu_builtins): Define
26855 __ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT,
26856 __ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI.
26858 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
26859 Tejas Belagod <tbelagod@arm.com>
26861 * doc/sourcebuild.texi: Document arm_pacbti_hw.
26863 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
26864 Tejas Belagod <tbelagod@arm.com>
26865 Richard Earnshaw <Richard.Earnshaw@arm.com>
26867 * config/arm/arm.cc (arm_configure_build_target): Parse and validate
26868 -mbranch-protection option and initialize appropriate data structures.
26869 * config/arm/arm.opt (-mbranch-protection): New option.
26870 * doc/invoke.texi (Arm Options): Document it.
26872 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
26873 Tejas Belagod <tbelagod@arm.com>
26875 * config/arm/arm.h (TARGET_HAVE_PACBTI): New macro.
26876 * config/arm/arm-cpus.in (pacbti): New feature.
26877 * doc/invoke.texi (Arm Options): Document it.
26879 2023-01-23 Andrea Corallo <andrea.corallo@arm.com>
26880 Tejas Belagod <tbelagod@arm.com>
26882 * common/config/aarch64/aarch64-common.cc: Include aarch-common.h.
26883 (all_architectures): Fix comment.
26884 (aarch64_parse_extension): Rename return type, enum value names.
26885 * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Rename
26886 factored out aarch_ra_sign_scope and aarch_ra_sign_key variables.
26887 Also rename corresponding enum values.
26888 * config/aarch64/aarch64-opts.h (aarch64_function_type): Factor
26889 out aarch64_function_type and move it to common code as
26890 aarch_function_type in aarch-common.h.
26891 * config/aarch64/aarch64-protos.h: Include common types header,
26892 move out types aarch64_parse_opt_result and aarch64_key_type to
26894 * config/aarch64/aarch64.cc: Move mbranch-protection parsing types
26895 and functions out into aarch-common.h and aarch-common.cc. Fix up
26896 all the name changes resulting from the move.
26897 * config/aarch64/aarch64.md: Fix up aarch64_ra_sign_key type name change
26899 * config/aarch64/aarch64.opt: Include aarch-common.h to import
26900 type move. Fix up name changes from factoring out common code and
26902 * config/arm/aarch-common-protos.h: Export factored out routines to both
26904 * config/arm/aarch-common.cc: Include newly factored out types.
26905 Move all mbranch-protection code and data structures from
26907 * config/arm/aarch-common.h: New header that declares types shared
26908 between aarch32 and aarch64 backends.
26909 * config/arm/arm-protos.h: Declare types and variables that are
26910 made common to aarch64 and aarch32 backends - aarch_ra_sign_key,
26911 aarch_ra_sign_scope and aarch_enable_bti.
26912 * config/arm/arm.opt (config/arm/aarch-common.h): Include header.
26913 (aarch_ra_sign_scope, aarch_enable_bti): Declare variable.
26914 * config/arm/arm.cc: Add missing includes.
26916 2023-01-23 Tobias Burnus <tobias@codesourcery.com>
26918 * doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
26920 2023-01-23 Richard Biener <rguenther@suse.de>
26922 PR tree-optimization/108449
26923 * cgraphunit.cc (check_global_declaration): Do not turn
26924 undefined statics into externs.
26926 2023-01-22 Dimitar Dimitrov <dimitar@dinux.eu>
26928 * config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix value for QI
26929 and HI input modes.
26930 * config/pru/pru.md (clz): Fix generated code for QI and HI
26933 2023-01-22 Cupertino Miranda <cupertino.miranda@oracle.com>
26935 * config/v850/v850.cc (v850_select_section): Put const volatile
26936 objects into read-only sections.
26938 2023-01-20 Tejas Belagod <tejas.belagod@arm.com>
26940 * config/aarch64/arm_neon.h (vmull_p64, vmull_high_p64, vaeseq_u8,
26941 vaesdq_u8, vaesmcq_u8, vaesimcq_u8): Gate under "nothing+aes".
26942 (vsha1*_u32, vsha256*_u32): Gate under "nothing+sha2".
26944 2023-01-20 Jakub Jelinek <jakub@redhat.com>
26946 PR tree-optimization/108457
26947 * tree-ssa-loop-niter.cc (build_cltz_expr): Use
26948 SCALAR_INT_TYPE_MODE (utype) directly as C[LT]Z_DEFINED_VALUE_AT_ZERO
26949 argument instead of a temporary. Formatting fixes.
26951 2023-01-19 Jakub Jelinek <jakub@redhat.com>
26953 PR tree-optimization/108447
26954 * value-relation.cc (rr_union_table): Fix VREL_UNDEFINED row order.
26955 (relation_tests): Add self-tests for relation_{intersect,union}
26957 * selftest.h (relation_tests): Declare.
26958 * function-tests.cc (test_ranges): Call it.
26960 2023-01-19 H.J. Lu <hjl.tools@gmail.com>
26963 * config/i386/i386-expand.cc (ix86_expand_builtin): Check
26964 invalid third argument to __builtin_ia32_prefetch.
26966 2023-01-19 Jakub Jelinek <jakub@redhat.com>
26968 PR middle-end/108459
26969 * omp-expand.cc (expand_omp_for_init_counts): Use fold_build1 rather
26970 than fold_unary for NEGATE_EXPR.
26972 2023-01-19 Christophe Lyon <christophe.lyon@arm.com>
26975 * config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
26976 comment. Move assert about alignment a bit later.
26978 2023-01-19 Jakub Jelinek <jakub@redhat.com>
26980 PR tree-optimization/108440
26981 * tree-ssa-forwprop.cc: Include gimple-range.h.
26982 (simplify_rotate): For the forms with T2 wider than T and shift counts of
26983 Y and B - Y add & (B - 1) masking for the rotate count if Y could be equal
26984 to B. For the forms with T2 wider than T and shift counts of
26985 Y and (-Y) & (B - 1), don't punt if range could be [B, B2], but only if
26986 range doesn't guarantee Y < B or Y = N * B. If range doesn't guarantee
26987 Y < B, also add & (B - 1) masking for the rotate count. Use lazily created
26988 pass specific ranger instead of get_global_range_query.
26989 (pass_forwprop::execute): Disable that ranger at the end of pass if it has
26992 2023-01-19 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
26994 * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
26995 exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
26997 (aarch64_simd_vec_copy_lane<mode>): Likewise.
26998 (aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
27000 2023-01-19 Alexandre Oliva <oliva@adacore.com>
27003 * sched-deps.cc (sched_analyze_2): Skip cselib address lookup
27004 within debug insns.
27006 2023-01-18 Martin Jambor <mjambor@suse.cz>
27009 * cgraph.cc (cgraph_node::remove): Check whether nodes up the
27010 lcone_of chain also do not need the body.
27012 2023-01-18 Richard Biener <rguenther@suse.de>
27015 2022-12-16 Richard Biener <rguenther@suse.de>
27017 PR middle-end/108086
27018 * tree-inline.cc (remap_ssa_name): Do not unshare the
27019 result from the decl_map.
27021 2023-01-18 Murray Steele <murray.steele@arm.com>
27024 * config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
27026 (__arm_vst1q_p_s8): Likewise.
27027 (__arm_vld1q_z_u8): Likewise.
27028 (__arm_vld1q_z_s8): Likewise.
27029 (__arm_vst1q_p_u16): Likewise.
27030 (__arm_vst1q_p_s16): Likewise.
27031 (__arm_vld1q_z_u16): Likewise.
27032 (__arm_vld1q_z_s16): Likewise.
27033 (__arm_vst1q_p_u32): Likewise.
27034 (__arm_vst1q_p_s32): Likewise.
27035 (__arm_vld1q_z_u32): Likewise.
27036 (__arm_vld1q_z_s32): Likewise.
27037 (__arm_vld1q_z_f16): Likewise.
27038 (__arm_vst1q_p_f16): Likewise.
27039 (__arm_vld1q_z_f32): Likewise.
27040 (__arm_vst1q_p_f32): Likewise.
27042 2023-01-18 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
27044 * config/xtensa/xtensa.md (xorsi3_internal):
27045 Rename from the original of "xorsi3".
27046 (xorsi3): New expansion pattern that emits addition rather than
27047 bitwise-XOR when the second source is a constant of -2147483648
27050 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
27051 Andrew Pinski <apinski@marvell.com>
27054 * config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
27055 vec_vsubcuqP with vec_vsubcuq.
27057 2023-01-18 Kewen Lin <linkw@linux.ibm.com>
27060 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
27061 support for invalid uses of MMA opaque type in function arguments.
27063 2023-01-18 liuhongt <hongtao.liu@intel.com>
27066 * config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o
27067 whenever -mdaz-ftz is specified. Don't link crtfastmath.o when
27068 -share or -mno-daz-ftz is specified.
27069 * config/i386/darwin.h (ENDFILE_SPEC): Ditto.
27070 * config/i386/mingw32.h (ENDFILE_SPEC): Ditto.
27072 2023-01-17 Jose E. Marchesi <jose.marchesi@oracle.com>
27074 * config/bpf/bpf.cc (bpf_option_override): Disable
27077 2023-01-17 Jakub Jelinek <jakub@redhat.com>
27079 PR tree-optimization/106523
27080 * tree-ssa-forwprop.cc (simplify_rotate): For the
27081 patterns with (-Y) & (B - 1) in one operand's shift
27082 count and Y in another, if T2 has wider precision than T,
27083 punt if Y could have a value in [B, B2 - 1] range.
27085 2023-01-16 H.J. Lu <hjl.tools@gmail.com>
27088 * config/i386/i386.cc (x86_output_mi_thunk): Disable
27089 -mforce-indirect-call for PIC in 32-bit mode.
27091 2023-01-16 Jan Hubicka <hubicka@ucw.cz>
27094 * ipa-modref.cc (modref_access_analysis::analyze): Use
27095 find_always_executed_bbs.
27096 * ipa-sra.cc (process_scan_results): Likewise.
27097 * ipa-utils.cc (stmt_may_terminate_function_p): New function.
27098 (find_always_executed_bbs): New function.
27099 * ipa-utils.h (stmt_may_terminate_function_p): Declare.
27100 (find_always_executed_bbs): Declare.
27102 2023-01-16 Jan Hubicka <jh@suse.cz>
27104 * config/i386/i386.cc (ix86_vectorize_builtin_scatter): Guard scatter
27105 by TARGET_USE_SCATTER.
27106 * config/i386/i386.h (TARGET_USE_SCATTER_2PARTS,
27107 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New macros.
27108 * config/i386/x86-tune.def (TARGET_USE_SCATTER_2PARTS,
27109 TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New tunes.
27110 (X86_TUNE_AVOID_256FMA_CHAINS, X86_TUNE_AVOID_512FMA_CHAINS): Disable
27111 for znver4. (X86_TUNE_USE_GATHER): Disable for zen4.
27113 2023-01-16 Richard Biener <rguenther@suse.de>
27116 * config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
27118 2023-01-16 Stam Markianos-Wright <stam.markianos-wright@arm.com>
27122 * config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
27123 (__ARM_mve_coerce3): Likewise.
27125 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
27127 * tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
27129 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
27131 * tree-ssa-loop-niter.cc (number_of_iterations_cltz): New.
27132 (number_of_iterations_bitcount): Add call to the above.
27133 (number_of_iterations_exit_assumptions): Add EQ_EXPR case for
27134 c[lt]z idiom recognition.
27136 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
27138 * doc/sourcebuild.texi: Add missing target attributes.
27140 2023-01-16 Andrew Carlotti <andrew.carlotti@arm.com>
27142 PR tree-optimization/94793
27143 * tree-scalar-evolution.cc (expression_expensive_p): Add checks
27145 * tree-ssa-loop-niter.cc (build_cltz_expr): New.
27146 (number_of_iterations_cltz_complement): New.
27147 (number_of_iterations_bitcount): Add call to the above.
27149 2023-01-16 Jonathan Wakely <jwakely@redhat.com>
27151 * doc/extend.texi (Common Function Attributes): Fix grammar.
27153 2023-01-16 Jakub Jelinek <jakub@redhat.com>
27156 * config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
27157 * config/riscv/riscv-vsetvl.cc: Likewise.
27159 2023-01-16 Jakub Jelinek <jakub@redhat.com>
27162 * config/i386/xmmintrin.h (_mm_undefined_ps): Temporarily
27163 disable -Winit-self using pragma GCC diagnostic ignored.
27164 * config/i386/emmintrin.h (_mm_undefined_pd, _mm_undefined_si128):
27166 * config/i386/avxintrin.h (_mm256_undefined_pd, _mm256_undefined_ps,
27167 _mm256_undefined_si256): Likewise.
27168 * config/i386/avx512fintrin.h (_mm512_undefined_pd,
27169 _mm512_undefined_ps, _mm512_undefined_epi32): Likewise.
27170 * config/i386/avx512fp16intrin.h (_mm_undefined_ph,
27171 _mm256_undefined_ph, _mm512_undefined_ph): Likewise.
27173 2023-01-16 Kewen Lin <linkw@linux.ibm.com>
27176 * config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
27177 support for invalid uses in inline asm, factor out the checking and
27178 erroring to lambda function check_and_error_invalid_use.
27180 2023-01-15 Aldy Hernandez <aldyh@redhat.com>
27182 PR tree-optimization/107608
27183 * range-op-float.cc (range_operator_float::fold_range): Avoid
27184 folding into INF when flag_trapping_math.
27185 * value-range.h (frange::known_isinf): Return false for possible NANs.
27187 2023-01-15 Xianmiao Qu <cooper.qu@linux.alibaba.com>
27189 * config.gcc (csky-*-*): Support --with-float=softfp.
27191 2023-01-14 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
27193 * config/xtensa/xtensa-protos.h (order_regs_for_local_alloc):
27194 Rename to xtensa_adjust_reg_alloc_order.
27195 * config/xtensa/xtensa.cc (xtensa_adjust_reg_alloc_order):
27196 Ditto. And also remove code to reorder register numbers for
27197 leaf functions, rename the tables, and adjust the allocation
27198 order for the call0 ABI to use register A0 more.
27199 (xtensa_leaf_regs): Remove.
27200 * config/xtensa/xtensa.h (REG_ALLOC_ORDER): Cosmetics.
27201 (order_regs_for_local_alloc): Rename as the above.
27202 (LEAF_REGISTERS, LEAF_REG_REMAP, leaf_function): Remove.
27204 2023-01-14 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
27206 * config/aarch64/aarch64-sve.md (aarch64_vec_duplicate_vq<mode>_le):
27207 Change to define_insn_and_split to fold ldr+dup to ld1rq.
27208 * config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): New.
27210 2023-01-14 Alexandre Oliva <oliva@adacore.com>
27212 * hash-table.h (is_deleted): Precheck !is_empty.
27213 (mark_deleted): Postcheck !is_empty.
27214 (copy constructor): Test is_empty before is_deleted.
27216 2023-01-14 Alexandre Oliva <oliva@adacore.com>
27219 * config/arm/arm.md (movmisaligndi): Prefer aligned SImode
27222 2023-01-13 Eric Botcazou <ebotcazou@adacore.com>
27224 PR rtl-optimization/108274
27225 * function.cc (thread_prologue_and_epilogue_insns): Also update the
27226 DF information for calls in a few more cases.
27228 2023-01-13 John David Anglin <danglin@gcc.gnu.org>
27230 * config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
27231 * config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
27233 * config/pa/pa.h (TARGET_SYNC_LIBCALLS): Use flag_sync_libcalls.
27234 (MAX_SYNC_LIBFUNC_SIZE): Define.
27235 (TARGET_CPU_CPP_BUILTINS): Define __SOFTFP__ when soft float is
27237 * config/pa/pa.md (atomic_storeqi): Emit __atomic_exchange_1
27238 libcall when sync libcalls are disabled.
27239 (atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
27240 (atomic_loaddi): Emit __atomic_load_8 libcall when sync libcalls
27241 are disabled on 32-bit target.
27242 * config/pa/pa.opt (matomic-libcalls): New option.
27243 * doc/invoke.texi (HPPA Options): Update.
27245 2023-01-13 Alexander Monakov <amonakov@ispras.ru>
27247 PR rtl-optimization/108117
27248 PR rtl-optimization/108132
27249 * sched-deps.cc (deps_analyze_insn): Do not schedule across
27250 calls before reload.
27252 2023-01-13 Srinath Parvathaneni <srinath.parvathaneni@arm.com>
27254 * common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
27255 options for -mlibarch.
27256 * config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
27257 * doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
27259 2023-01-13 Qing Zhao <qing.zhao@oracle.com>
27261 * attribs.cc (strict_flex_array_level_of): Move this function to ...
27262 * attribs.h (strict_flex_array_level_of): Remove the declaration.
27263 * gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
27264 replace the referece to strict_flex_array_level_of with
27265 DECL_NOT_FLEXARRAY.
27266 * tree.cc (component_ref_size): Likewise.
27268 2023-01-13 Richard Biener <rguenther@suse.de>
27271 * config/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
27272 crtfastmath.o for -shared.
27273 * config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.
27275 2023-01-13 Richard Biener <rguenther@suse.de>
27278 * config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
27279 crtfastmath.o for -shared.
27280 * config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
27282 * config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
27285 2023-01-13 Richard Sandiford <richard.sandiford@arm.com>
27287 * config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
27289 (TARGET_DWARF_FRAME_REG_MODE): Define.
27291 2023-01-13 Richard Biener <rguenther@suse.de>
27294 * config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
27295 update EH info on the fly.
27297 2023-01-13 Richard Biener <rguenther@suse.de>
27299 PR tree-optimization/108387
27300 * tree-ssa-sccvn.cc (visit_nary_op): Check for SSA_NAME
27301 value before inserting expression into the tables.
27303 2023-01-12 Andrew Pinski <apinski@marvell.com>
27304 Roger Sayle <roger@nextmovesoftware.com>
27306 PR tree-optimization/92342
27307 * match.pd ((m1 CMP m2) * d -> (m1 CMP m2) ? d : 0):
27308 Use tcc_comparison and :c for the multiply.
27309 (b & -(a CMP c) -> (a CMP c)?b:0): New pattern.
27311 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
27312 Richard Sandiford <richard.sandiford@arm.com>
27315 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment):
27316 Check DECL_PACKED for bitfield.
27317 (aarch64_layout_arg): Warn when parameter passing ABI changes.
27318 (aarch64_function_arg_boundary): Do not warn here.
27319 (aarch64_gimplify_va_arg_expr): Warn when parameter passing ABI
27322 2023-01-12 Christophe Lyon <christophe.lyon@arm.com>
27323 Richard Sandiford <richard.sandiford@arm.com>
27325 * config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
27327 (aarch64_layout_arg): Factorize warning conditions.
27328 (aarch64_function_arg_boundary): Fix typo.
27329 * function.cc (currently_expanding_function_start): New variable.
27330 (expand_function_start): Handle
27331 currently_expanding_function_start.
27332 * function.h (currently_expanding_function_start): Declare.
27334 2023-01-12 Richard Biener <rguenther@suse.de>
27336 PR tree-optimization/99412
27337 * tree-ssa-reassoc.cc (is_phi_for_stmt): Remove.
27338 (swap_ops_for_binary_stmt): Remove reduction handling.
27339 (rewrite_expr_tree_parallel): Adjust.
27340 (reassociate_bb): Likewise.
27341 * tree-parloops.cc (build_new_reduction): Handle MINUS_EXPR.
27343 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
27345 * config/xtensa/xtensa.md (ctzsi2, ffssi2):
27346 Rearrange the emitting codes.
27348 2023-01-12 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
27350 * config/xtensa/xtensa.md (*btrue):
27351 Correct value of the attribute "length" that depends on
27352 TARGET_DENSITY and operands, and add '?' character to the register
27353 constraint of the compared operand.
27355 2023-01-12 Alexandre Oliva <oliva@adacore.com>
27357 * hash-table.h (expand): Check elements and deleted counts.
27358 (verify): Likewise.
27360 2023-01-11 Roger Sayle <roger@nextmovesoftware.com>
27362 PR tree-optimization/71343
27363 * tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make
27364 the value number of the expression X << C the same as the value
27365 number for the multiplication X * (1<<C).
27367 2023-01-11 David Faust <david.faust@oracle.com>
27370 * config/bpf/bpf.cc (bpf_print_operand): Correct handling for
27371 floating point modes.
27373 2023-01-11 Eric Botcazou <ebotcazou@adacore.com>
27375 PR tree-optimization/108199
27376 * tree-sra.cc (sra_modify_expr): Deal with reverse storage order
27377 for bit-field references.
27379 2023-01-11 Kewen Lin <linkw@linux.ibm.com>
27381 * config/rs6000/rs6000.cc (rs6000_option_override_internal): Make
27382 OPTION_MASK_P10_FUSION implicit setting honour Power10 tuning setting.
27383 * config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER): Remove
27384 OPTION_MASK_P10_FUSION.
27386 2023-01-11 Richard Biener <rguenther@suse.de>
27388 PR tree-optimization/107767
27389 * tree-cfgcleanup.cc (phi_alternatives_equal): Export.
27390 * tree-cfgcleanup.h (phi_alternatives_equal): Declare.
27391 * tree-switch-conversion.cc (switch_conversion::collect):
27392 Count unique non-default targets accounting for later
27393 merging opportunities.
27395 2023-01-11 Martin Liska <mliska@suse.cz>
27397 PR middle-end/107976
27398 * params.opt: Limit JT params.
27399 * stmt.cc (emit_case_dispatch_table): Use auto_vec.
27401 2023-01-11 Richard Biener <rguenther@suse.de>
27403 PR tree-optimization/108352
27404 * tree-ssa-threadbackward.cc
27405 (back_threader_profitability::profitable_path_p): Adjust
27406 heuristic that allows non-multi-way branch threads creating
27408 * doc/invoke.texi (--param fsm-scale-path-blocks): Remove.
27409 (--param fsm-scale-path-stmts): Adjust.
27410 * params.opt (--param=fsm-scale-path-blocks=): Remove.
27411 (-param=fsm-scale-path-stmts=): Adjust description.
27413 2023-01-11 Richard Biener <rguenther@suse.de>
27415 PR tree-optimization/108353
27416 * tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
27418 (add_ssa_edge): Simplify.
27419 (add_control_edge): Likewise.
27420 (ssa_prop_init): Likewise.
27421 (ssa_prop_fini): Likewise.
27422 (ssa_propagation_engine::ssa_propagate): Likewise.
27424 2023-01-11 Andreas Krebbel <krebbel@linux.ibm.com>
27426 * config/s390/s390.md (*not<mode>): New pattern.
27428 2023-01-11 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
27430 * config/xtensa/xtensa.cc (xtensa_insn_cost):
27431 Let insn cost for size be obtained by applying COSTS_N_INSNS()
27432 to instruction length and then dividing by 3.
27434 2023-01-10 Richard Biener <rguenther@suse.de>
27436 PR tree-optimization/106293
27437 * tree-ssa-dse.cc (dse_classify_store): Use a worklist to
27438 process degenerate PHI defs.
27440 2023-01-10 Roger Sayle <roger@nextmovesoftware.com>
27442 PR rtl-optimization/106421
27443 * cprop.cc (bypass_block): Check that DEST is local to this
27444 function (non-NULL) before calling find_edge.
27446 2023-01-10 Martin Jambor <mjambor@suse.cz>
27449 * ipa-param-manipulation.h (ipa_param_body_adjustments): New members
27450 sort_replacements, lookup_first_base_replacement and
27451 m_sorted_replacements_p.
27452 * ipa-param-manipulation.cc: Define INCLUDE_ALGORITHM.
27453 (ipa_param_body_adjustments::register_replacement): Set
27454 m_sorted_replacements_p to false.
27455 (compare_param_body_replacement): New function.
27456 (ipa_param_body_adjustments::sort_replacements): Likewise.
27457 (ipa_param_body_adjustments::common_initialization): Call
27459 (ipa_param_body_adjustments::ipa_param_body_adjustments): Initialize
27460 m_sorted_replacements_p.
27461 (ipa_param_body_adjustments::lookup_replacement_1): Rework to use
27463 (ipa_param_body_adjustments::lookup_first_base_replacement): New
27465 (ipa_param_body_adjustments::modify_call_stmt): Use
27466 lookup_first_base_replacement.
27467 * omp-simd-clone.cc (ipa_simd_modify_function_body): Call
27468 adjustments->sort_replacements.
27470 2023-01-10 Richard Biener <rguenther@suse.de>
27472 PR tree-optimization/108314
27473 * tree-vect-stmts.cc (vectorizable_condition): Do not
27474 perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
27476 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
27478 * config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
27480 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
27482 * config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
27484 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
27486 * config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
27487 defines for soft float abi.
27489 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
27491 * config/csky/csky.md (smart_bseti): Change condition to CSKY_ISA_FEATURE (E1).
27492 (smart_bclri): Likewise.
27493 (fast_bseti): Change condition to CSKY_ISA_FEATURE (E2).
27494 (fast_bclri): Likewise.
27495 (fast_cmpnesi_i): Likewise.
27496 (*fast_cmpltsi_i): Likewise.
27497 (*fast_cmpgeusi_i): Likewise.
27499 2023-01-10 Xianmiao Qu <cooper.qu@linux.alibaba.com>
27501 * config/csky/csky_insn_fpuv3.md (l<frm_pattern><fixsuop><mode>si2): Test
27502 flag_fp_int_builtin_inexact || !flag_trapping_math.
27503 (<frm_pattern><mode>2): Likewise.
27505 2023-01-10 Andreas Krebbel <krebbel@linux.ibm.com>
27507 * config/s390/s390.cc (s390_register_info): Check call_used_regs
27508 instead of hard-coding the register numbers for call saved
27510 (s390_optimize_register_info): Likewise.
27512 2023-01-09 Eric Botcazou <ebotcazou@adacore.com>
27514 * doc/gm2.texi (Overview): Fix @node markers.
27515 (Using): Likewise. Remove subsections that were moved to Overview
27516 from the menu and move others around.
27518 2023-01-09 Richard Biener <rguenther@suse.de>
27520 PR middle-end/108209
27521 * genmatch.cc (commutative_op): Fix return value for
27522 user-id with non-commutative first replacement.
27524 2023-01-09 Jakub Jelinek <jakub@redhat.com>
27527 * calls.cc (expand_call): For calls with
27528 TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
27531 2023-01-09 Richard Biener <rguenther@suse.de>
27533 PR middle-end/69482
27534 * cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
27535 qualified accesses also force objects to memory.
27537 2023-01-09 Martin Liska <mliska@suse.cz>
27540 * lto-cgraph.cc (compute_ltrans_boundary): Do not insert
27541 NULL (deleleted value) to a hash_set.
27543 2023-01-08 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
27545 * config/xtensa/xtensa.md (*splice_bits):
27546 New insn_and_split pattern.
27548 2023-01-07 Takayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
27550 * config/xtensa/xtensa.cc
27551 (xtensa_split_imm_two_addends, xtensa_emit_add_imm):
27552 New helper functions.
27553 (xtensa_set_return_address, xtensa_output_mi_thunk):
27554 Change to use the helper function.
27555 (xtensa_emit_adjust_stack_ptr): Ditto.
27556 And also change to try reusing the content of scratch register
27557 A9 if the register is not modified in the function body.
27559 2023-01-07 LIU Hao <lh_mouse@126.com>
27561 PR middle-end/108300
27562 * config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
27563 before <windows.h>.
27564 * diagnostic-color.cc: Likewise.
27565 * plugin.cc: Likewise.
27566 * prefix.cc: Likewise.
27568 2023-01-06 Joseph Myers <joseph@codesourcery.com>
27570 * doc/extend.texi (__builtin_tgmath): Do not restate standard rule
27571 for handling real integer types.
27573 2023-01-06 Tamar Christina <tamar.christina@arm.com>
27576 2022-12-12 Tamar Christina <tamar.christina@arm.com>
27578 * config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
27579 (mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
27580 aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
27581 @aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
27582 reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
27583 aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
27584 vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
27585 (aarch64_simd_dupv2hf): New.
27586 * config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
27588 * config/aarch64/iterators.md (VHSDF_P): New.
27589 (V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
27590 Vel, q, vp): Add V2HF.
27591 * config/arm/types.md (neon_fp_reduc_add_h): New.
27593 2023-01-06 Martin Liska <mliska@suse.cz>
27595 PR middle-end/107966
27596 * doc/options.texi: Fix Var documentation in internal manual.
27598 2023-01-05 Roger Sayle <roger@nextmovesoftware.com>
27601 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
27603 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
27604 RTL expansion to allow condition (mask) to be shared/reused,
27605 by avoiding overwriting pseudos and adding REG_EQUAL notes.
27607 2023-01-05 Iain Sandoe <iain@sandoe.co.uk>
27609 * common.opt: Add -static-libgm2.
27610 * config/darwin.h (LINK_SPEC): Handle static-libgm2.
27611 * doc/gm2.texi: Document static-libgm2.
27612 * gcc.cc (driver_handle_option): Allow static-libgm2.
27614 2023-01-05 Tejas Joshi <TejasSanjay.Joshi@amd.com>
27616 * common/config/i386/i386-common.cc (processor_alias_table):
27617 Use CPU_ZNVER4 for znver4.
27618 * config/i386/i386.md: Add znver4.md.
27619 * config/i386/znver4.md: New.
27621 2023-01-04 Jakub Jelinek <jakub@redhat.com>
27623 PR tree-optimization/108253
27624 * tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
27627 2023-01-04 Jakub Jelinek <jakub@redhat.com>
27629 PR middle-end/108237
27630 * generic-match-head.cc: Include tree-pass.h.
27631 (canonicalize_math_p, optimize_vectors_before_lowering_p): Define
27632 to false if cfun and cfun->curr_properties has PROP_gimple_opt_math
27633 resp. PROP_gimple_lvec property set.
27635 2023-01-04 Jakub Jelinek <jakub@redhat.com>
27637 PR sanitizer/108256
27638 * convert.cc (do_narrow): Punt for MULT_EXPR if original
27639 type doesn't wrap around and -fsanitize=signed-integer-overflow
27641 * fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
27643 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
27645 * common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
27646 * common/config/i386/i386-common.cc: Add Emeraldrapids.
27648 2023-01-04 Hu, Lin1 <lin1.hu@intel.com>
27650 * common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
27653 2023-01-03 Sandra Loosemore <sandra@codesourcery.com>
27655 * cgraph.h (struct cgraph_node): Add gc_candidate bit, modify
27656 default constructor to initialize it.
27657 * cgraphunit.cc (expand_all_functions): Save gc_candidate functions
27658 for last and iterate to handle recursive calls. Delete leftover
27659 candidates at the end.
27660 * omp-simd-clone.cc (simd_clone_create): Set gc_candidate bit
27662 * tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
27663 gc_candidate bit when a clone is used.
27665 2023-01-03 Florian Weimer <fweimer@redhat.com>
27668 2023-01-02 Florian Weimer <fweimer@redhat.com>
27670 * dwarf2cfi.cc (init_return_column_size): Remove.
27671 (init_one_dwarf_reg_size): Adjust.
27672 (generate_dwarf_reg_sizes): New function. Extracted
27673 from expand_builtin_init_dwarf_reg_sizes.
27674 (expand_builtin_init_dwarf_reg_sizes): Call
27675 generate_dwarf_reg_sizes.
27676 * target.def (init_dwarf_reg_sizes_extra): Adjust
27678 * config/msp430/msp430.cc
27679 (msp430_init_dwarf_reg_sizes_extra): Adjust.
27680 * config/rs6000/rs6000.cc
27681 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
27682 * doc/tm.texi: Update.
27684 2023-01-03 Florian Weimer <fweimer@redhat.com>
27687 2023-01-02 Florian Weimer <fweimer@redhat.com>
27689 * debug.h (dwarf_reg_sizes_constant): Declare.
27690 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
27692 2023-01-03 Siddhesh Poyarekar <siddhesh@gotplt.org>
27694 PR tree-optimization/105043
27695 * doc/extend.texi (Object Size Checking): Split out into two
27696 subsections and mention _FORTIFY_SOURCE.
27698 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
27700 * config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
27701 RTL expansion to allow condition (mask) to be shared/reused,
27702 by avoiding overwriting pseudos and adding REG_EQUAL notes.
27704 2023-01-03 Roger Sayle <roger@nextmovesoftware.com>
27707 * config/i386/i386-features.cc
27708 (general_scalar_chain::compute_convert_gain) <case PLUS>: Consider
27709 the gain/cost of converting a MEM operand.
27711 2023-01-03 Jakub Jelinek <jakub@redhat.com>
27713 PR middle-end/108264
27714 * expr.cc (store_expr): For stores into SUBREG_PROMOTED_* targets
27715 from source which doesn't have scalar integral mode first convert
27718 2023-01-03 Jakub Jelinek <jakub@redhat.com>
27720 PR rtl-optimization/108263
27721 * cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
27724 2023-01-02 Alexander Monakov <amonakov@ispras.ru>
27727 * config/i386/lujiazui.md (lujiazui_div): New automaton.
27728 (lua_div): New unit.
27729 (lua_idiv_qi): Correct unit in the reservation.
27730 (lua_idiv_qi_load): Ditto.
27731 (lua_idiv_hi): Ditto.
27732 (lua_idiv_hi_load): Ditto.
27733 (lua_idiv_si): Ditto.
27734 (lua_idiv_si_load): Ditto.
27735 (lua_idiv_di): Ditto.
27736 (lua_idiv_di_load): Ditto.
27737 (lua_fdiv_SF): Ditto.
27738 (lua_fdiv_SF_load): Ditto.
27739 (lua_fdiv_DF): Ditto.
27740 (lua_fdiv_DF_load): Ditto.
27741 (lua_fdiv_XF): Ditto.
27742 (lua_fdiv_XF_load): Ditto.
27743 (lua_ssediv_SF): Ditto.
27744 (lua_ssediv_load_SF): Ditto.
27745 (lua_ssediv_V4SF): Ditto.
27746 (lua_ssediv_load_V4SF): Ditto.
27747 (lua_ssediv_V8SF): Ditto.
27748 (lua_ssediv_load_V8SF): Ditto.
27749 (lua_ssediv_SD): Ditto.
27750 (lua_ssediv_load_SD): Ditto.
27751 (lua_ssediv_V2DF): Ditto.
27752 (lua_ssediv_load_V2DF): Ditto.
27753 (lua_ssediv_V4DF): Ditto.
27754 (lua_ssediv_load_V4DF): Ditto.
27756 2023-01-02 Florian Weimer <fweimer@redhat.com>
27758 * debug.h (dwarf_reg_sizes_constant): Declare.
27759 * dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
27761 2023-01-02 Florian Weimer <fweimer@redhat.com>
27763 * dwarf2cfi.cc (init_return_column_size): Remove.
27764 (init_one_dwarf_reg_size): Adjust.
27765 (generate_dwarf_reg_sizes): New function. Extracted
27766 from expand_builtin_init_dwarf_reg_sizes.
27767 (expand_builtin_init_dwarf_reg_sizes): Call
27768 generate_dwarf_reg_sizes.
27769 * target.def (init_dwarf_reg_sizes_extra): Adjust
27771 * config/msp430/msp430.cc
27772 (msp430_init_dwarf_reg_sizes_extra): Adjust.
27773 * config/rs6000/rs6000.cc
27774 (rs6000_init_dwarf_reg_sizes_extra): Likewise.
27775 * doc/tm.texi: Update.
27777 2023-01-02 Jakub Jelinek <jakub@redhat.com>
27779 * gcc.cc (process_command): Update copyright notice dates.
27780 * gcov-dump.cc (print_version): Ditto.
27781 * gcov.cc (print_version): Ditto.
27782 * gcov-tool.cc (print_version): Ditto.
27783 * gengtype.cc (create_file): Ditto.
27784 * doc/cpp.texi: Bump @copying's copyright year.
27785 * doc/cppinternals.texi: Ditto.
27786 * doc/gcc.texi: Ditto.
27787 * doc/gccint.texi: Ditto.
27788 * doc/gcov.texi: Ditto.
27789 * doc/install.texi: Ditto.
27790 * doc/invoke.texi: Ditto.
27792 2023-01-01 Roger Sayle <roger@nextmovesoftware.com>
27793 Uroš Bizjak <ubizjak@gmail.com>
27795 * config/i386/i386.md (extendditi2): New define_insn.
27796 (define_split): Use DWIH mode iterator to treat new extendditi2
27797 identically to existing extendsidi2_1.
27798 (define_peephole2): Likewise.
27799 (define_peephole2): Likewise.
27800 (define_Split): Likewise.
27803 Copyright (C) 2023 Free Software Foundation, Inc.
27805 Copying and distribution of this file, with or without modification,
27806 are permitted in any medium without royalty provided the copyright
27807 notice and this notice are preserved.